Hi,
ipa-inline-analysis use is_gimple_min_invariant that in turn require 
current_function_decl
to be set to the corresponding function or all addresses of automatic vars are 
considered
non-invariant.

Bootstrapped/regtested x86_64-linux, will commit it shortly.

        * ipa-inline-analsis.c (compute_inline_parameters): Set
        cfun and current_function_decl.

Index: ipa-inline-analysis.c
===================================================================
--- ipa-inline-analysis.c       (revision 179046)
+++ ipa-inline-analysis.c       (working copy)
@@ -1694,6 +1724,7 @@ compute_inline_parameters (struct cgraph
   HOST_WIDE_INT self_stack_size;
   struct cgraph_edge *e;
   struct inline_summary *info;
+  tree old_decl = current_function_decl;
 
   gcc_assert (!node->global.inlined_to);
 
@@ -1718,6 +1749,10 @@ compute_inline_parameters (struct cgraph
       return;
     }
 
+  /* Even is_gimple_min_invariant rely on current_function_decl.  */
+  current_function_decl = node->decl;
+  push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+
   /* Estimate the stack size for the function if we're optimizing.  */
   self_stack_size = optimize ? estimated_stack_frame_size (node) : 0;
   info->estimated_self_stack_size = self_stack_size;
@@ -1757,6 +1792,8 @@ compute_inline_parameters (struct cgraph
   info->size = info->self_size;
   info->stack_frame_offset = 0;
   info->estimated_stack_size = info->estimated_self_stack_size;
+  current_function_decl = old_decl;
+  pop_cfun ();
 }
 
 

Reply via email to