This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/13718] Miscompilation of comparison of complex values
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Jan 2004 14:33:21 -0000
- Subject: [Bug optimization/13718] Miscompilation of comparison of complex values
- References: <20040117140859.13718.pbrook@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From steven at gcc dot gnu dot org 2004-01-17 14:33 -------
Yup.
Dump "t.c.t22.complex":
;; Function foo (foo)
foo (a, b)
{
complex float T.2;
complex float T.1;
<bb 0>:
T.1 = *a_1;
T.2 = *b_4;
if (T.1 != T.2) goto <L0>; else goto <L1>;
<L0>:;
abort ();
<L1>:;
return;
}
Dump "t.c.t23.sra":
Scalar replacements for foo:
__real__ T.1 -> SR.4
__imag__ T.1 -> SR.5
__real__ T.2 -> SR.6
__imag__ T.2 -> SR.7
;; Function foo (foo)
foo (a, b)
{
float SR.7;
float SR.6;
float SR.5;
float SR.4;
complex float T.2;
complex float T.1;
<bb 0>:
SR.4_6 = REALPART_EXPR <*a_1>;
SR.5_3 = IMAGPART_EXPR <*a_1>;
SR.6_8 = REALPART_EXPR <*b_4>;
SR.7_9 = IMAGPART_EXPR <*b_4>;
if (T.1 != T.2) goto <L0>; else goto <L1>;
<L0>:;
abort ();
<L1>:;
return;
}
Dump "t.c.t25.dce3":
;; Function foo (foo)
foo (a, b)
{
float SR.7;
float SR.6;
float SR.5;
float SR.4;
complex float T.2;
complex float T.1;
<bb 0>:
if (T.1 != T.2) goto <L0>; else goto <L1>;
<L0>:;
abort ();
<L1>:;
return;
}
Now where did the assignments go?
BTW why isn't T.1 != T.2 folded to compare the real and imag parts?
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-01-17 14:33:20
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13718