[Bug target/68273] [5/6/7 Regression] Wrong code on mips/mipsel due to (invalid?) peeking at alignments in function_arg.
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Fri Jun 3 11:17:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68273
--- Comment #36 from rguenther at suse dot de <rguenther at suse dot de> ---
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?
More information about the Gcc-bugs
mailing list