------- Comment #15 from dave at hiauly1 dot hia dot nrc dot ca 2010-09-18
Subject: Re: [4.6 Regression] FAIL:
gcc.dg/torture/builtin-cproj-1.c -O1 (test for excess errors)
On Sat, 18 Sep 2010, rguenth at gcc dot gnu dot org wrote:
> ------- Comment #14 from rguenth at gcc dot gnu dot org 2010-09-18 18:25
> You have way more non-SSA variables - possibly due to callee-copy of args
> I suppose some optimizations end up being disabled for some reason by that,
> but likely nobody will be interested to fixup missed optimizations for
> this target :/
> So - if you are interested (heh ...) I'd start comparing dumps to i?86 dumps
> and see where they start to diverge badly. Also try and see why you end up
I already did compare dumps with i?86. cplxlower is where major differences
started to appear, although there are some differences before that.
> complex double cd.1;
> complex long double cld.0;
> not in SSA form:
> REALPART_EXPR <cld.0> = cld$real_19;
> IMAGPART_EXPR <cld.0> = cld$imag_20;
> REALPART_EXPR <cd.1> = cd$real_10;
> IMAGPART_EXPR <cd.1> = cd$imag_11;
> REALPART_EXPR <cd.1> = Inf;
The problem has something to do with precision. The problem doesn't occur
for complex float. For example, this code doesn't appear for float:
CR.11_40 = REALPART_EXPR <D.1935_9>;
CI.12_41 = IMAGPART_EXPR <D.1935_9>;
D.1966_42 = CR.11_40 > 1.79769313486231570814527423731704356798070567526e+308;
D.1967_43 = !D.1966_42;
D.1968_44 = CI.12_41 != 0.0;
D.1969_45 = D.1967_43 || D.1968_44;
if (D.1969_45 == 1)
goto <bb 6>;
goto <bb 5>;
> on i?86 I never even start having partial definitions of these on the lhs ...
> (but I also do not have the callee-copy, so you might check if SRA makes
> those partial defs from them by trying with -fno-tree-sra).
Thanks for the suggestion. I'll give it a try.
> If you're not interested I suggest to XFAIL the testcase for the failing
It's really a question of time. I only have some evenings and weekends
to investigate GCC bugs.