From: nickc Date: Fri, 19 Sep 2014 07:45:22 +0000 (+0000) Subject: * config/rl78/rl78.c (rl78_expand_epilogue): Generate a USE of the X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85b515c9d34d8478fe6526f794767eb9fc7e998b;p=thirdparty%2Fgcc.git * config/rl78/rl78.c (rl78_expand_epilogue): Generate a USE of the pop'ed registers so that DCE does not eliminate them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215375 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0330a13997ca..82dd61397647 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-09-19 Nick Clifton + + * config/rl78/rl78.c (rl78_expand_epilogue): Generate a USE of the + pop'ed registers so that DCE does not eliminate them. + 2014-09-18 Jan Hubicka PR lto/63298 diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c index 5fe1f6fc6c9d..5c2a9c6ddc5c 100644 --- a/gcc/config/rl78/rl78.c +++ b/gcc/config/rl78/rl78.c @@ -1136,10 +1136,19 @@ rl78_expand_epilogue (void) for (i = 15; i >= 0; i--) if (cfun->machine->need_to_push [i]) { + rtx dest = gen_rtx_REG (HImode, i * 2); + if (TARGET_G10) { - emit_insn (gen_pop (gen_rtx_REG (HImode, 0))); - emit_move_insn (gen_rtx_REG (HImode, i*2), gen_rtx_REG (HImode, 0)); + rtx ax = gen_rtx_REG (HImode, 0); + + emit_insn (gen_pop (ax)); + if (i != 0) + { + emit_move_insn (dest, ax); + /* Generate a USE of the pop'd register so that DCE will not eliminate the move. */ + emit_insn (gen_use (dest)); + } } else { @@ -1150,7 +1159,7 @@ rl78_expand_epilogue (void) emit_insn (gen_sel_rb (GEN_INT (need_bank))); rb = need_bank; } - emit_insn (gen_pop (gen_rtx_REG (HImode, i * 2))); + emit_insn (gen_pop (dest)); } }