[Bug c++/58372] internal compiler error: ix86_compute_frame_layout
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Oct 29 22:40:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58372
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|mingw32-sjlj |x86 sjlj
CC| |hjl.tools at gmail dot com
--- Comment #18 from Uroš Bizjak <ubizjak at gmail dot com> ---
Digging a bit deeper: the testcase from Comment #14:
__attribute__((__target__("rdrnd")))
void f(unsigned int * b) noexcept {
__builtin_ia32_rdrand32_step(b);
}
also fails for all x86 targets when the compiler is configured with
--enable-sjlj-exceptions, so the failure is not mingw specific.
Following is x86_64-linux-gnu target:
cc1plus -O2 -mpreferred-stack-boundary=4 -quiet -fpreprocessed pr58372.C
during RTL pass: ira
pr58372.C: In function ‘void f(unsigned int*)’:
pr58372.C:4:5: internal compiler error: in ix86_compute_frame_layout, at
config/i386/i386.c:11159
4 | }
| ^
0x1821b24 ix86_compute_frame_layout
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:11159
0x128b447 set_initial_elim_offsets
...
-mpreferred-stack-boundary=3 (instead of 4) again "fixes" the ICE.
It looks that stack realignment doesn't work with SjLj exceptions. As shown in
Comment #15, building the call to _Unwind_SjLj_Register sets
crtl->preferred_stack_boundary to 128, but nothing updates
crtl->stack_alignment_needed. This leads to the shown assert failure.
HJ, do you have an idea what is going wrong with realignment here?
More information about the Gcc-bugs
mailing list