[Bug lto/67709] ICE: in estimate_function_body_sizes, at ipa-inline-analysis.c:2489 on x86_64-apple-darwin*

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Feb 6 10:50:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67709

--- Comment #5 from vries at gcc dot gnu.org ---
The scenario is the following:

During pass_omp_simd_clone, we call simd_clone_create for foo, and execute the 
!old_node->definition part:
...
      tree old_decl = old_node->decl;
      tree new_decl = copy_node (old_node->decl);
      DECL_NAME (new_decl) = clone_function_name (old_decl, "simdclone");
      SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
      SET_DECL_RTL (new_decl, NULL);
      DECL_STATIC_CONSTRUCTOR (new_decl) = 0;
      DECL_STATIC_DESTRUCTOR (new_decl) = 0;
      new_node = old_node->create_version_clone (new_decl, vNULL, NULL);
      if (old_node->in_other_partition)
        new_node->in_other_partition = 1;
      symtab->call_cgraph_insertion_hooks (new_node);
...

The 'symtab->call_cgraph_insertion_hooks (new_node)' calls
'inline_summary_t::insert', a hook inserted during pass_ipa_inline.

During execution of the hook we stumble over the fact that the new node has no
'struct function' in estimate_function_body_sizes:
...
  struct function *my_function = DECL_STRUCT_FUNCTION (node->decl);
  ...
  gcc_assert (my_function && my_function->cfg);
...


More information about the Gcc-bugs mailing list