diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e47aa1754f..810d8fd64e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-08-24 Jan Hubicka + + * tree-inline.c (tree_function_versioning): Look harder + for referenced vars. + 2008-08-24 Razya Ladelsky PR tree-optimization/37185 diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 7be46cfe7c1..7ef58c3f40c 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -4223,9 +4223,16 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, = (struct ipa_replace_map *) VARRAY_GENERIC_PTR (tree_map, i); if (replace_info->replace_p) { - if (TREE_CODE (replace_info->new_tree) == ADDR_EXPR) + tree op = replace_info->new_tree; + + STRIP_NOPS (op); + + if (TREE_CODE (op) == VIEW_CONVERT_EXPR) + op = TREE_OPERAND (op, 0); + + if (TREE_CODE (op) == ADDR_EXPR) { - tree op = TREE_OPERAND (replace_info->new_tree, 0); + op = TREE_OPERAND (op, 0); while (handled_component_p (op)) op = TREE_OPERAND (op, 0); if (TREE_CODE (op) == VAR_DECL)