On 17 January 2016 at 14:56, Prathamesh Kulkarni
<prathamesh.kulka...@linaro.org> wrote:
> Hi,
> 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
> x86_64-unknown-linux-gnu.
> 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.
Kugan pointed out to me the test-case doesn't ICE by passing -fno-ipa-icf.

Thanks,
Prathamesh
>
> Thank you,
> Prathamesh

Reply via email to