This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/33341] unnecessary stores for array constructor
- From: "tkoenig at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Sep 2007 11:32:29 -0000
- Subject: [Bug fortran/33341] unnecessary stores for array constructor
- References: <bug-33341-10391@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from tkoenig at gcc dot gnu dot org 2007-09-08 11:32 -------
An equivalent C testcase eliminates the array stores:
int foo(int *a,int *b,int *c,int *d)
{
int val[3];
val[0] = *a;
val[1] = *b;
val[2] = *c;
return (val[0] != *d) && (val[1] != *d) && (val[2] != *d);
}
$ gcc -O3 -fdump-tree-optimized -S compare.c
$ cat compare.c.116t.optimized
;; Function foo (foo)
Analyzing Edge Insertions.
Opportunities in BB 5 for stmt/block reduction:
Splitting BB 5 for Common stmt list. Original block is now BB6.
D.1138 = 0;
Edge (2->5) lands here.
Edge (3->5) lands here.
foo (a, b, c, d)
{
int D.1143;
int D.1138;
int D.1137;
int D.1136;
<bb 2>:
D.1136 = *b;
D.1137 = *c;
D.1143 = *d;
if (*a == D.1143)
goto <bb 5>;
else
goto <bb 3>;
<bb 3>:
if (D.1136 == D.1143)
goto <bb 5>;
else
goto <bb 4>;
<bb 4>:
(void) 0;
D.1138 = (int) !(D.1137 == D.1143);
goto <bb 6>;
<bb 5>:
D.1138 = 0;
<bb 6>:
return D.1138;
}
$ gcc -O3 -fdump-tree-optimized -S compare.c
$ cat compare.c.116t.optimized
;; Function foo (foo)
Analyzing Edge Insertions.
Opportunities in BB 5 for stmt/block reduction:
Splitting BB 5 for Common stmt list. Original block is now BB6.
D.1138 = 0;
Edge (2->5) lands here.
Edge (3->5) lands here.
foo (a, b, c, d)
{
int D.1143;
int D.1138;
int D.1137;
int D.1136;
<bb 2>:
D.1136 = *b;
D.1137 = *c;
D.1143 = *d;
if (*a == D.1143)
goto <bb 5>;
else
goto <bb 3>;
<bb 3>:
if (D.1136 == D.1143)
goto <bb 5>;
else
goto <bb 4>;
<bb 4>:
(void) 0;
D.1138 = (int) !(D.1137 == D.1143);
goto <bb 6>;
<bb 5>:
D.1138 = 0;
<bb 6>:
return D.1138;
}
--
tkoenig at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33341