[Bug target/68273] [5/6/7 Regression] Wrong code on mips/mipsel due to (invalid?) peeking at alignments in function_arg.
matthew.fortune at imgtec dot com
gcc-bugzilla@gcc.gnu.org
Fri Aug 5 11:10:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68273
--- Comment #37 from Matthew Fortune <matthew.fortune at imgtec dot com> ---
(In reply to rguenther@suse.de from comment #36)
> On Fri, 3 Jun 2016, matthew.fortune at imgtec dot com wrote:
>
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68273
> >
> > --- Comment #35 from Matthew Fortune <matthew.fortune at imgtec dot com> ---
> > (In reply to Aurelien Jarno from comment #33)
> > > (In reply to Hector Oron from comment #32)
> > > > (In reply to Richard Biener from comment #31)
> > > > > eipa_sra introduces the remaining SSA name with non-default alignment via
> > > >
> > > > [PATCH]
> > > >
> > >
> > > For the record, Debian now have the patch from comment #32 in its version of
> > > GCC 5 and 6. This fixes a few more issues than reported here, in addition to
> > > graphviz, it also fixes subversion and jq.
> >
> > Richard: Is the updated patch from comment #32 in-keeping with your original
> > changes in comment #20? If so then I'll post it on gcc-patches.
> >
> > I do accept that there are MIPS fixes to be made in this area but I'd like to
> > get the existing code to 'work' again first if possible.
>
> Note that the tree-ssa.c changes from comment#32 do not work as-is
> (on the branch you don't notice that because checking is disabled).
> Even the relaxed variant that we don't have over-aligned types in the IL
> breaks AFAIR.
>
> Given the analysis in comment #31 I'd rather patch up either
> turn_representatives_into_adjustments or ipa_modify_formal_parameters
> (which already seems to have code to avoid under-aligned types).
>
> That is, does
>
> Index: gcc/ipa-prop.c
> ===================================================================
> --- gcc/ipa-prop.c (revision 237053)
> +++ gcc/ipa-prop.c (working copy)
> @@ -3910,7 +3909,7 @@ ipa_modify_formal_parameters (tree fndec
> if (is_gimple_reg_type (ptype))
> {
> unsigned malign = GET_MODE_ALIGNMENT (TYPE_MODE
> (ptype));
> - if (TYPE_ALIGN (ptype) < malign)
> + if (TYPE_ALIGN (ptype) != malign)
> ptype = build_aligned_type (ptype, malign);
> }
> }
>
> fix the issue as well?
Sorry for the very slow reply, got busy with libjava bugs.
This does fix jq as well so it looks good. I haven't done a GCC testsuite run
with the change in place yet though.
More information about the Gcc-bugs
mailing list