This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: sjlj-exceptions ICE. simplified test case
- To: Robert Lipe <robertl at sco dot com>
- Subject: Re: sjlj-exceptions ICE. simplified test case
- From: Richard Henderson <rth at cygnus dot com>
- Date: Tue, 25 Apr 2000 03:15:15 -0700
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- References: <20000423223401.A5548@rjlhome.sco.com>
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.