--- Comment #2 from ubizjak at gmail dot com 2010-05-11 06:32 ---
Confirmed with 4.6.0 mainline:
Program received signal SIGSEGV, Segmentation fault.
0x0056d5b8 in cfg_layout_finalize ()
at ../../gcc-svn/trunk/gcc/cfglayout.c:477
477 if (loc == prologue_locator || loc
--- Comment #3 from ubizjak at gmail dot com 2010-05-11 06:45 ---
Oops, wrong cut-n-paste. This is correct:
Program received signal SIGSEGV, Segmentation fault.
0x000120192df8 in fixup_reorder_chain ()
at ../../gcc-svn/trunk/gcc/cfglayout.c:889
889 if (bb-aux ==
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
Target Milestone|4.5.1 |---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44071
--- Comment #4 from ubizjak at gmail dot com 2010-05-11 08:56 ---
I don't know why locations are all mixed up here, but this is correct place of
failure:
0x0056598a in fixup_reorder_chain ()
at ../../gcc-svn/trunk/gcc/cfglayout.c:866
866 || e_fall-dest
--- Comment #5 from jakub at gcc dot gnu dot org 2010-05-11 09:00 ---
I'd say the testcase is invalid, of course GCC must not ICE on it though,
but you can't expect it to do what you want.
I don't think we guarantee anywhere that the jump is exactly to the user
label provided, so you
--- Comment #6 from jakub at gcc dot gnu dot org 2010-05-11 10:01 ---
Created an attachment (id=20625)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20625action=view)
partial fix of the ICE
The ICE is when going out of cfglayout mode.
When going into the cfglayout mode
--- Comment #9 from hpa at zytor dot com 2010-05-11 16:15 ---
Thanks everyone for jumping (groan) on this.
From the looks of it, changing the asm goto statement itself to:
asm goto (# Either %l[f_yes] or %l[f_no]\n\t
jmp %l[f_yes]
: : : : f_yes, f_no);
...
--- Comment #1 from hpa at zytor dot com 2010-05-11 05:39 ---
Created an attachment (id=20624)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20624action=view)
Test case
Compiled with:
gcc -O2 -fomit-frame-pointer -S -o jumptest.s jumptest.c
--