aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenth@gcc.gnu.org>2012-05-07 12:59:05 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-05-07 12:59:05 +0000
commitfb7c3cc87eba34a30be959f8c202b174064686a1 (patch)
tree5e462c295d8eed0f315faa926d6272ff53f3c01d /gcc
parent75647adecab60e14e0d5473245c338ed2c3a846e (diff)
downloadgcc-fb7c3cc87eba34a30be959f8c202b174064686a1.zip
gcc-fb7c3cc87eba34a30be959f8c202b174064686a1.tar.gz
gcc-fb7c3cc87eba34a30be959f8c202b174064686a1.tar.bz2
re PR lto/53195 (ICE seg fault in lto (in set_is_used (tp=Unhandled dwarf expression opcode 0xf3 ) at ../.././gcc/tree-flow-inline.h:567))
2012-05-07 Richard Guenther <rguenther@suse.de> PR tree-optimization/53195 * tree-inline.c (setup_one_parameter): Properly add referenced vars from the parameters new known value. From-SVN: r187235
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/tree-inline.c11
2 files changed, 19 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a73b9e3..dd7073b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-07 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53195
+ * tree-inline.c (setup_one_parameter): Properly add referenced
+ vars from the parameters new known value.
+
2012-05-07 Steven Bosscher <steven@gcc.gnu.org>
* config/m68k/m68k.c (m68k_sched_branch_type): Remove.
@@ -5,8 +11,8 @@
(m68k_sched_md_init_global): Don't allocate it.
(m68k_sched_md_finish_global): Don't free it.
* config/m68k/m68k.h (m68k_sched_branch_type): Remove prototype.
- * config/m68k/m68k.md: Set the type of insns using m68k_sched_branch_type
- to bcc directly.
+ * config/m68k/m68k.md: Set the type of insns using
+ m68k_sched_branch_type to bcc directly.
2012-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index ef03465..057087e 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -2608,6 +2608,17 @@ setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
/* Make gimplifier happy about this variable. */
DECL_SEEN_IN_BIND_EXPR_P (var) = 1;
+ /* We are eventually using the value - make sure all variables
+ referenced therein are properly recorded. */
+ if (value
+ && gimple_in_ssa_p (cfun)
+ && TREE_CODE (value) == ADDR_EXPR)
+ {
+ tree base = get_base_address (TREE_OPERAND (value, 0));
+ if (base && TREE_CODE (base) == VAR_DECL)
+ add_referenced_var (base);
+ }
+
/* If the parameter is never assigned to, has no SSA_NAMEs created,
we would not need to create a new variable here at all, if it
weren't for debug info. Still, we can just use the argument