This patch fixes two bugs that were discovered during development.
The first fix avoids hoisting of 2nd if-region (which contains an early
return) above the intervening code 'loop' to be if-merged with the 1st
if-region.
The second fix corrects a wrong usage of loop index.
if (a) {
...
}
loop; // no dependency on both if-regions.
...
if (a) {
if (b)
return;
}
-Mei
Index: be/opt/opt_proactive.cxx
===================================================================
--- be/opt/opt_proactive.cxx (revision 1419)
+++ be/opt/opt_proactive.cxx (working copy)
@@ -3357,6 +3357,9 @@
return FALSE;
else if (_action == DO_IFFLIP)
return FALSE;
+ // Make sure sc1 and sc2 are control equivalent if they are not adjacent
to each other.
+ else if ((count > 0) && !sc1->Is_ctrl_equiv(sc2))
+ return FALSE;
else
return TRUE;
}
Index: be/com/cxx_template.h
===================================================================
--- be/com/cxx_template.h (revision 1418)
+++ be/com/cxx_template.h (working copy)
@@ -227,7 +227,7 @@
{
if (idx < _lastidx) {
for (int iter = idx; iter < _lastidx; iter++) {
- _array[idx] = _array[idx+1];
+ _array[iter] = _array[iter+1];
}
_array[_lastidx] = NULL;
Decidx();
------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model
configuration take the hassle out of deploying and managing Subversion and
the tools developers use with it. Learn more about uberSVN and get a free
download at: http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel