This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][0/n] Merge from match-and-simplify
- From: Sebastian Pop <sebpop at gmail dot com>
- To: Richard Biener <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 17 Oct 2014 18:28:11 +0000
- Subject: Re: [PATCH][0/n] Merge from match-and-simplify
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LSU dot 2 dot 11 dot 1410151450430 dot 20733 at zhemvz dot fhfr dot qr> <20141016203852 dot GB29134 at f1 dot c dot bardezibar dot internal> <alpine dot LSU dot 2 dot 11 dot 1410170951450 dot 9891 at zhemvz dot fhfr dot qr> <20141017163558 dot GD29134 at f1 dot c dot bardezibar dot internal>
Sebastian Pop wrote:
> Richard Biener wrote:
> > looks like
> > RTL issues and/or IVOPTs issues?
>
> I should have posted the first diff between the compilers with -fdump-tree-all:
> that would expose the problem at its root.
Looks like this is caused by the fwprop pass:
diff -u -r ./foo.i.087t.forwprop3 ../mas/foo.i.087t.forwprop3
--- ./foo.i.087t.forwprop3 2014-10-17 13:17:29.985327000 -0500
+++ ../mas/foo.i.087t.forwprop3 2014-10-17 13:17:29.308814000 -0500
@@ -5,6 +5,8 @@
Pass statistics:
----------------
+Applying pattern match-comparison.pd:43, gimple-match.c:11747
+gimple_simplified to if (i_20 != 99)
Pass statistics:
----------------
@@ -60,7 +62,7 @@
i_17 = i_20 + 1;
# DEBUG iD.2450 => i_17
# DEBUG iD.2450 => i_17
- if (i_17 != 100)
+ if (i_20 != 99)
goto <bb 3>;
else
goto <bb 4>;
[...]
diff -u -r ./foo.i.089t.ccp3 ../mas/foo.i.089t.ccp3
--- ./foo.i.089t.ccp3 2014-10-17 13:17:29.991734000 -0500
+++ ../mas/foo.i.089t.ccp3 2014-10-17 13:17:29.316140000 -0500
@@ -53,13 +53,13 @@
# VUSE <.MEM_16>
return;
-i_17 : -->2 uses.
+i_17 : --> single use.
i_20 = PHI <i_17(3), 0(2)>
# DEBUG i => i_17
-if (i_17 != 100)
# DEBUG i => i_17
-i_20 : -->2 uses.
+i_20 : -->3 uses.
+if (i_20 != 99)
i_17 = i_20 + 1;
_4 = (long unsigned int) i_20;
# DEBUG i => i_20