sjlj-exceptions ICE. simplified test case
Richard Henderson
rth@cygnus.com
Tue Apr 25 03:15:00 GMT 2000
On Sun, Apr 23, 2000 at 10:34:01PM -0500, Robert Lipe wrote:
> This test case, derived from tinfo.cc during bootstrap, shows more
> concisely the ICE I reported earlier in the week. I've verified that
> it also fails on i686-pc-linux. To reproduce, invoke cc1plus with '-O2
> -sjlj-exceptions'.
This fixes the test case. What's the easiest way to test
this out for real? RUNTESTFLAGS='--tool_opts -fsjlj-exceptions' ?
I don't expect problems, but...
r~
* toplev.c (rest_of_compilation): Delay sibcall optimization
until after emit_eh_context.
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/toplev.c,v
retrieving revision 1.321
diff -c -p -d -r1.321 toplev.c
*** toplev.c 2000/04/20 12:06:57 1.321
--- toplev.c 2000/04/25 10:11:58
*************** rest_of_compilation (decl)
*** 2897,2912 ****
init_EXPR_INSN_LIST_cache ();
- /* We may have potential sibling or tail recursion sites. Select one
- (of possibly multiple) methods of performing the call. */
- open_dump_file (DFI_sibling, decl);
- TIMEVAR (jump_time,
- {
- if (flag_optimize_sibling_calls)
- optimize_sibling_and_tail_recursive_calls ();
- });
- close_dump_file (DFI_sibling, print_rtl, get_insns ());
-
if (ggc_p)
ggc_collect ();
--- 2897,2902 ----
*************** rest_of_compilation (decl)
*** 2928,2933 ****
--- 2918,2934 ----
/* Emit code to get eh context, if needed. */
emit_eh_context ();
+ /* We may have potential sibling or tail recursion sites. Select one
+ (of possibly multiple) methods of performing the call. */
+ if (flag_optimize_sibling_calls)
+ {
+ open_dump_file (DFI_sibling, decl);
+
+ TIMEVAR (jump_time, optimize_sibling_and_tail_recursive_calls ());
+
+ close_dump_file (DFI_sibling, print_rtl, get_insns ());
+ }
+
#ifdef FINALIZE_PIC
/* If we are doing position-independent code generation, now
is the time to output special prologues and epilogues.
More information about the Gcc-patches
mailing list