aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-09-20 14:16:34 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-09-20 14:16:34 -0400
commitd8090d46bcdcd2eb490ecffeef24f5956de32310 (patch)
treeaf942a7e2f0aecec336e4eb7dd484b364ff000d3
parent29d356fb7f96a0669fbf45a68d8c577e8c53c4ba (diff)
downloadgcc-d8090d46bcdcd2eb490ecffeef24f5956de32310.zip
gcc-d8090d46bcdcd2eb490ecffeef24f5956de32310.tar.gz
gcc-d8090d46bcdcd2eb490ecffeef24f5956de32310.tar.bz2
(expand_inline_function): Do copy something setting the result register if...
(expand_inline_function): Do copy something setting the result register if it is setting it to itself and has a REG_NOTE. From-SVN: r10383
-rw-r--r--gcc/integrate.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index d00c632..f04f8b4 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1699,6 +1699,11 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add
SET_DEST (new_set)
= gen_reg_rtx (GET_MODE (SET_DEST (new_set)));
}
+ /* If the source and destination are the same and it
+ has a note on it, keep the insn. */
+ else if (rtx_equal_p (SET_DEST (set), SET_SRC (set))
+ && REG_NOTES (insn) != 0)
+ copy = emit_insn (copy_rtx_and_substitute (pattern, map));
else
break;
}