[Graham <grahams@rcp.co.uk>] Re: RTL type checking
Andrew Macleod
amacleod@cygnus.com
Wed Sep 1 13:29:00 GMT 1999
>> 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
More information about the Gcc-patches
mailing list