------- Comment #15 from dave at hiauly1 dot hia dot nrc dot ca 2010-09-18 18:59 ------- 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 > (again). > > 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 > with 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>; else 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 > platforms. It's really a question of time. I only have some evenings and weekends to investigate GCC bugs. Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43959