------- Comment #11 from malitzke at metronets dot com 2006-03-21 18:26 -------
While I have your attention I would propose this more comprehensive patch:
--- tree-ssa-pre.org.c 2006-03-21 12:55:12.000000000 -0500
+++ tree-ssa-pre.c 2006-03-21 13:11:36.000000000 -0500
@@ -2192,11 +2192,10 @@
tree found = bitmap_find_leader (AVAIL_OUT (block), expr);
if (found)
return found;
+ else
+ genop = VALUE_HANDLE_EXPR_SET (expr)->head->expr;
}
- if (TREE_CODE (genop) == VALUE_HANDLE)
- genop = VALUE_HANDLE_EXPR_SET (expr)->head->expr;
-
switch TREE_CODE (genop)
{
case ARRAY_REF:
@@ -2219,6 +2218,7 @@
op2, op3);
return folded;
}
+ break;
case COMPONENT_REF:
{
tree op0;
@@ -2246,6 +2246,7 @@
case PARM_DECL:
case RESULT_DECL:
case SSA_NAME:
+ case STRING_CST:
return genop;
default:
gcc_unreachable ();
It contains Andy's plus one simplifying patch and a break for consistency. The
consistency one could be invalidated via side effects from bitmap_find_leader.
I am am presently rebootstrapping (cc, c++, fortran, objc, java) to verify to
the best of my ability.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26781