This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/22442] New: scev cprop causes wrong code
- From: "belyshev at depni dot sinp dot msu dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jul 2005 14:20:59 -0000
- Subject: [Bug tree-optimization/22442] New: scev cprop causes wrong code
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
// fork from bug 22230
// fails with -O1
// doesn't fail with -O1 -fno-tree-ccp -fno-tree-dominator-opts
// introduced between 2005-05-17 2005-05-18
void abort (void);
int main (void)
{
int a, i;
for (i = 0; i < 5; i++)
a = i * i;
if (a != 16)
abort ();
return 0;
}
/*
--- 2005-05-17/bug22230-5.c.t28.phiopt1 2005-07-12 17:40:19.000000000 +0400
+++ 2005-05-18/bug22230-5.c.t28.phiopt1 2005-07-12 17:40:32.000000000 +0400
@@ -1,6 +1,8 @@
;; Function main (main)
+Merging blocks 0 and 6
+Merging blocks 1 and 2
main ()
{
int i;
@@ -8,20 +10,15 @@
int D.1571;
<bb 0>:
- goto <bb 6> (<L6>);
- # i_9 = PHI <i_1(2), i_3(6)>;
+ # i_9 = PHI <i_8(1), 0(0)>;
<L0>:;
a_7 = i_9 * i_9;
i_8 = i_9 + 1;
-
- # a_2 = PHI <a_7(1)>;
- # i_1 = PHI <i_8(1)>;
-<L1>:;
- if (i_1 <= 4) goto <L0>; else goto <L2>;
+ if (i_8 <= 4) goto <L0>; else goto <L2>;
<L2>:;
- if (a_2 != 16) goto <L3>; else goto <L4>;
+ if (a_7 != 16) goto <L3>; else goto <L4>;
<L3>:;
abort ();
@@ -29,11 +26,6 @@
<L4>:;
return 0;
- # a_5 = PHI <a_4(0)>;
- # i_3 = PHI <0(0)>;
-<L6>:;
- goto <bb 1> (<L0>);
-
}
Caused by this patch:
2005-05-17 Zdenek Dvorak <dvorakz@suse.cz>
* timevar.def (TV_SCEV_CONST): New timevar.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_scev_cprop.
* tree-pass.h (pass_scev_cprop): Declare.
* tree-scalar-evolution.c (scev_const_prop): New function.
* tree-scalar-evolution.h (scev_const_prop): Declare.
* tree-ssa-loop.c (gate_scev_const_prop, pass_scev_cprop):
New.
* tree-cfg.c (replace_uses_by): Export.
* tree-flow.h (replace_uses_by): Declare.
*/
--
Summary: scev cprop causes wrong code
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: critical
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: belyshev at depni dot sinp dot msu dot ru
CC: gcc-bugs at gcc dot gnu dot org,rakdver at gcc dot gnu
dot org
GCC target triplet: x86_64-*-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22442