This is the mail archive of the gcc@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]
Other format: [Raw text]

Re: What do do with the exceptional case of expand_case for SJLJ exceptions


On Sat, May 12, 2012 at 3:49 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> On Wed, Apr 18, 2012 at 2:44 PM, Richard Henderson <rth@redhat.com> wrote:
>> > On 04/18/2012 05:39 AM, Jan Hubicka wrote:
>> >> Well, if SJLJ lowering happens as gimple pass somewhere near the end of gimple
>> >> queue, this should not be problem at all. (and implementation would be cleaner)
>> >
>> > If you can find a clean way of separating sjlj expansion from dw2 expansion,
>> > please do. ?But there's a lot of code shared between the two. ?I see nothing
>> > wrong with always expanding via tablejump.
>>
>> In that case, would something like the following patch be acceptable?
>> I have verified that all targets that always set
>> TARGET_EXCEPT_UNWIND_INFO define casesi and/or tablejump.
>>
>>
>> ? ? ? ? * toplev.c (process_options): Fail for sjlj exceptions if the
>> target machine
>> ? ? ? ? has no casesi insn and no tablejump insn.
>
> Isn't SJLJ used by default for Ada on all targets?

Would that make a difference for whether this patch is OK or not?

I also have no problems leaving the switch expanding code in stmt.c,
and just adding new code for switch lowering as a GIMPLE pass. That
way (of least resistance) SJLJ exception dispatches can continue to be
expanded as decision trees. Just tell me what you want.

Ciao!
Steven


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