On Sat, May 12, 2012 at 3:49 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >> On Wed, Apr 18, 2012 at 2:44 PM, Richard Henderson <r...@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