diff options
author | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-07 12:59:05 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-07 12:59:05 +0000 |
commit | fb7c3cc87eba34a30be959f8c202b174064686a1 (patch) | |
tree | 5e462c295d8eed0f315faa926d6272ff53f3c01d /gcc/tree-inline.c | |
parent | 75647adecab60e14e0d5473245c338ed2c3a846e (diff) | |
download | gcc-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/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 11 |
1 files changed, 11 insertions, 0 deletions
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 |