This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR56982, handle setjmp like non-local labels
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: Richard Biener <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org, Jakub Jelinek <jakub at redhat dot com>
- Date: Sat, 20 Apr 2013 14:14:14 +0200
- Subject: Re: [PATCH] Fix PR56982, handle setjmp like non-local labels
- References: <alpine dot LNX dot 2 dot 00 dot 1304171351250 dot 21094 at zhemvz dot fhfr dot qr>
Richard Biener <rguenther@suse.de> writes:
> PR tree-optimization/56982
> * builtins.def (BUILT_IN_LONGJMP): longjmp is not a leaf
> function.
> * gimplify.c (gimplify_call_expr): Notice special calls.
> (gimplify_modify_expr): Likewise.
> * tree-cfg.c (make_abnormal_goto_edges): Handle setjmp-like
> abnormal control flow receivers.
> (call_can_make_abnormal_goto): Handle cfun->calls_setjmp
> in the same way as cfun->has_nonlocal_labels.
> (gimple_purge_dead_abnormal_call_edges): Likewise.
> (stmt_starts_bb_p): Make setjmp-like abnormal control flow
> receivers start a basic-block.
This breaks libgo.
../../../gcc/libgo/runtime/proc.c: In function âruntime_mcall.constprop.7â:
../../../gcc/libgo/runtime/proc.c:419:13: error: â({anonymous})â may be used uninitialized in this function [-Werror=maybe-uninitialized]
getcontext(&gp->context);
^
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."