This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/39246] FAIL: gcc.dg/uninit-13.c
- From: "krebbel at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 1 Mar 2011 18:08:36 +0000
- Subject: [Bug middle-end/39246] FAIL: gcc.dg/uninit-13.c
- Auto-submitted: auto-generated
- References: <bug-39246-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39246
--- Comment #6 from Andreas Krebbel <krebbel at gcc dot gnu.org> 2011-03-01 18:08:11 UTC ---
The first difference between x86_64 and s390x appears in 004t.gimple since
s390x returns complex numbers in memory:
x86_64:
foo ()
{
float D.2684;
C D.2685;
C f;
D.2684 = REALPART_EXPR <f>;
f = COMPLEX_EXPR <D.2684, 0.0>;
D.2685 = f;
return D.2685;
}
s390x:
foo ()
{
float D.2702;
C f;
D.2702 = REALPART_EXPR <f>;
f = COMPLEX_EXPR <D.2702, 0.0>;
<retval> = f;
return <retval>;
}
The assignment to the imaginary part is introduced by cplxlower:
foo ()
{
float f$real;
C f;
float D.2702;
<bb 2>:
f$real_2 = f$real_6(D);
f_3 = COMPLEX_EXPR <f$real_2, 0.0>;
REALPART_EXPR <<retval>> = f$real_2;
IMAGPART_EXPR <<retval>> = 0.0;
return <retval>;
}
expand_complex_operations_1 is invoked for gimple stmt:
# .MEM_5 = VDEF <.MEM_4(D)>
<retval> = f_3;
the code falls through to the default label and invokes emit_complex_move in
tree-complex.c:1459
Since <retval> is no SSA_NAME emit_complex_move falls through to the code in
tree-complex.c:826 which splits the complex move to:
REALPART_EXPR <<retval>> = f$real_2;
IMAGPART_EXPR <<retval>> = 0.0;