aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-05-28 22:51:47 +0000
committerRichard Stallman <rms@gnu.org>1993-05-28 22:51:47 +0000
commitdb25e492164350aed1e016186e2c5937fa16f938 (patch)
treefb6aac7ddbb853d16326adedaa3caeb9b5927fdc /gcc
parent239db5fcdd60ff2687160335fd8a4c62d973c2cb (diff)
downloadgcc-db25e492164350aed1e016186e2c5937fa16f938.zip
gcc-db25e492164350aed1e016186e2c5937fa16f938.tar.gz
gcc-db25e492164350aed1e016186e2c5937fa16f938.tar.bz2
(expand_inline_function): When copy REG_NOTES, must
also call subst_constants. From-SVN: r4587
Diffstat (limited to 'gcc')
-rw-r--r--gcc/integrate.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index ad26413..8bb32da 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1711,9 +1711,16 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add
/* Now copy the REG_NOTES. */
for (insn = insns; insn; insn = NEXT_INSN (insn))
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i'
- && map->insn_map[INSN_UID (insn)])
- REG_NOTES (map->insn_map[INSN_UID (insn)])
- = copy_rtx_and_substitute (REG_NOTES (insn), map);
+ && map->insn_map[INSN_UID (insn)]
+ && REG_NOTES (insn))
+ {
+ rtx tem = copy_rtx_and_substitute (REG_NOTES (insn), map);
+ /* We must also do subst_constants, in case one of our parameters
+ has const type and constant value. */
+ subst_constants (&tem, NULL_RTX, map);
+ apply_change_group ();
+ REG_NOTES (map->insn_map[INSN_UID (insn)]) = tem;
+ }
if (local_return_label)
emit_label (local_return_label);