[PATCH] Avoid bugs like PR68273 to trigger

Richard Biener rguenther@suse.de
Fri Feb 19 08:36:00 GMT 2016

On Fri, 19 Feb 2016, Eric Botcazou wrote:

> > So you simply assume that exp_type is naturally aligned here.  I think
> > you should test align < TYPE_ALIGN (TYPE_MAIN_VARIANT (exp_type)) here,
> > no?
> No strong opinion, but the patch is only intended to mitigate the effects of 
> the PR65310 one-liner, including on the 5 branch, so it's minimal.
> > And if you get enough supporters to apply this kind of workaround
> > I'd prefer it to be in build_aligned_type itself, basically
> > refusing to build over-aligned types.
> I pondered that but rejected it for the 5 branch.
> > And I'd rather make this controlled by an internal flag that backends should
> > consciously set (aka a target hook).
> I disagree, the onus is on the middle-end to fix its mess and the default 
> should not be to generate wrong code in any case.
> > The above is simply a bit too ugly IMHO
> > and looks incomplete(?), cannot even the cummulative args machinery
> > end up with type-align specifics or are you sure those can only
> > be triggered from function_arg_boundary?
> I think that testing function_arg_boundary is a conservative criterion, but I 
> admittedly didn't check every architecture.
> > Note the real issue is overaligned register types.
> Agreed, and IMO the middle-end should not create them out of nowhere.

Yup, so we should make sure we don't (even not "out of nowhere").  See
my attempts on adding some SSA verification for this (needs to be
restricted to overaligned, then it doesn't trigger that often...).
One issue is that we've often got DECLs that are overaligned but at
some point re-write them into SSA - and the SSA verifier expects the
SSA name types to agree with their decls type.  I didn't yet try to
fixup DECL alignment to be natural as we re-write it into SSA but
I believe that may be necessary in the end to make such SSA verification
not trigger.

> > At least it seems you have a testcase that reproduces the error
> > so you should be able to point to a specific pass doing the wreckage
> > and provide preprocessed source and a cross-compiler setup to
> > investigate.
> I'm just using Jeff's reduced testcase for MIPS.

See the bug where I fixed up some more places in SRA after debugging
a cross to MIPS with the reduced testcase (fixing verification fails
with added SSA alignment checking).


More information about the Gcc-patches mailing list