This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

help with PR69133

I was having a look at PR69133.
It appears that with -flto-partition=none,
cgraph_node::get_untransformed_body ()
is called twice for node with asm_name _ZThn4_N11xercesc_3_11C5m_fn6ERKi.
c++filt says it is: non-virtual thunk to xercesc_3_1::C::m_fn6(int const&)

get_untransformed_body() calls
lto_free_function_in_decl_state_for_node() which sets
node->lto_file_data to NULL.
Now 2nd time get_untransformed_body is called for the same node,
node->lto_file_data is NULL and lto_get_decl_name_mapping() dereferences
lto_file_data which results in segfault.

I was wondering if gating on lto_file_data could be a reasonable solution ?
if (!lto_file_data)
  return false;
I am not sure what value to return for this case (I chose false
because of early exit).
It prevents the ICE, and the patch passes bootstrap+test on
With partitoning enabled, for the above test-case,
get_untransformed_body () is called only once per node. However I
don't understand why it gets called twice with -flto-partition=none.

Thank you,

Attachment: patch-1.diff
Description: Text document

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]