[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A possible code generation issue



On Sat, 2015-07-04 at 16:58 +0100, Dibyendu Majumdar wrote:
> On 4 July 2015 at 14:20, Dibyendu Majumdar <mobile@majumdar.org.uk> wrote:
> > On 4 July 2015 at 13:11, Dibyendu Majumdar <mobile@majumdar.org.uk> wrote:
> >> Looks like in the failure case the code is being incorrectly
> >> optimized. I wonder if this is a manifestation of the get_address bug,
> >> perhaps the real fix will be better than the patch I am using. I will
> >> use the latest gcc 5 branch and see if that helps.
> >>
> >
> > Hi Dave,
> >
> > I am now using the latest gcc-5-branch from gcc github mirror.
> > Unfortunately the issue still persists.
> >
> > If set optimization level to 0 or 1, then it works ok, but at levels 2
> > or 3 the break occurs.
> >
> 
> Adding the -fno-strict-aliasing appears to resolve the issue with -O2
> and -O3 but with this enabled the benchmarks are degraded.

If "-fno-strict-aliasing" resolved this, then that suggests that there
are various casts in the code that if this were C would take us into
"undefined behavior" territory, and the optimizer is trying a little too
hard.   This isn't C, but similar rules apply.  If that's what this is,
then this is at least a documentation issue with libgccjit; we need to
document what the rules are.

If this is the case it's normally possible to work around it in C by
rewriting casts using unions.

Of course, it could well be a bug at my end.

In any case, I'm not going to be able to have a proper look at this
until Monday (it's the July 4th holiday weekend here in the US); sorry.

Sorry about this
Dave