This is the mail archive of the gcc-patches@gcc.gnu.org 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]

Re: [Graham <grahams@rcp.co.uk>] Re: RTL type checking


>> As you reported bootstrap fails in gcc/except.c when compiling
>> the C++ support routines in libgcc2.c. The failure occurs
>> in expand_fixup_region_end on the following statement.
>> 
>>     dont_issue = ((INSN_UID (node->entry->outer_context) == 0) 
>>                    && (ehstack.top->entry != node->entry));
>> 
>> This is because outer_context is a SYMBOL_REF and not a CODE_LABEL.
>> 
>> I think the code needs to be aware of the flag_new_exceptions flag
>> because when this is enabled then outer_context is always a 
>> "SYMBOL_REF" and when disabled is always is a "CODE_LABEL".
>> 
>> I think the most obvious fix would the following and also handles
>> the other suspect use of INSN_UID() in this routine. It looks very
>> much like this block of code got missed when the flag_new_exceptions
>> were added.
>> 
>>   if (flag_new_exceptions)
>>     dont_issue = 0;
>>   else
>>     dont_issue = ((INSN_UID (node->entry->outer_context) == 0) 
>>                    && (ehstack.top->entry != node->entry));
>> 

This looks correct to me, must have been sleepy and missed it :-)

Andrew


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