[Bug c++/58372] internal compiler error: ix86_compute_frame_layout
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Nov 1 09:02:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58372
--- Comment #35 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Terry Guo from comment #31)
> (In reply to Uroš Bizjak from comment #30)
> > (In reply to Jakub Jelinek from comment #29)
> > > > Let's ask Jakub about asan, if it is possible to move generation of the call
> > > > after the function is already expanded to RTL.
> > >
> > > I'm afraid no.
> >
> > Hm...
> >
> > ... maybe we could go with following patch:
> >
> > + if (SUPPORTS_STACK_ALIGNMENT)
> > + {
> > + if (preferred_stack_boundary > crtl->stack_alignment_estimated)
> > + crtl->stack_alignment_estimated = preferred_stack_boundary;
> > + if (preferred_stack_boundary > crtl->stack_alignment_needed)
> > + crtl->stack_alignment_needed = preferred_stack_boundary;
> > + }
> >
> > This means that for functions, emitted through emit_library_call, stack
> > won't be realigned. This would cure the assert (and would follow a bit more
> > expand_stack_alignment from cfgrtl.c).
>
> I have same thought. I will test this one.
Actually, we can use crtl->stack_realign_processed to delay DRAP generation.
The condition in the patch should be changed to:
crtl->stack_realign_needed
= INCOMING_STACK_BOUNDARY < crtl->stack_alignment_estimated;
crtl->stack_realign_tried = crtl->stack_realign_needed;
---> if (crtl->stack_realign_processed && crtl->drap_reg == NULL_RTX)
{
rtx drap_rtx = targetm.calls.get_drap_rtx ();
Can you please test this change? The testcase from Comment #23 does not fail
for me.
More information about the Gcc-bugs
mailing list