aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2008-02-19 18:11:12 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2008-02-19 17:11:12 +0000
commit9d5cee3d87ec186ad3a2725e0318d37a4b7a3d68 (patch)
tree01ef727bb86f0fcacb740c4500838460d0957f3e
parent8723e2fedf070eeea2d16e68f4baf2295d9a94e8 (diff)
downloadgcc-9d5cee3d87ec186ad3a2725e0318d37a4b7a3d68.zip
gcc-9d5cee3d87ec186ad3a2725e0318d37a4b7a3d68.tar.gz
gcc-9d5cee3d87ec186ad3a2725e0318d37a4b7a3d68.tar.bz2
re PR rtl-optimization/34408 (Invalid RTL sharing with -fsee and inline functions)
PR rtl-optimization/34408 * see.c (see_def_extension_not_merged): Copy subreg so we don't have invalid sharing. From-SVN: r132440
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/see.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1589844..4f53e48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2008-02-19 Jan Hubicka <jh@suse.cz>
+ PR rtl-optimization/34408
+ * see.c (see_def_extension_not_merged): Copy subreg so we don't have invalid sharing.
+
+2008-02-19 Jan Hubicka <jh@suse.cz>
+
PR middle-end/28779
* tree-inline.c (estimate_num_insns_1): Fix counting of cost of call_expr.
diff --git a/gcc/see.c b/gcc/see.c
index 8191b2d..d932f51 100644
--- a/gcc/see.c
+++ b/gcc/see.c
@@ -2508,7 +2508,7 @@ see_def_extension_not_merged (struct see_ref_s *curr_ref_s, rtx def_se)
d.to = new_pseudo_reg;
note_uses (&PATTERN (ref_copy), see_replace_src, &d);
/* Step b: Replace every instance of dest_reg with the subreg. */
- ref_copy = replace_rtx (ref_copy, dest_reg, subreg);
+ ref_copy = replace_rtx (ref_copy, dest_reg, copy_rtx (subreg));
/* Step c: Replace every use of the new pseudo register back to
dest_real_reg. */