2011-07-30 Tom de Vries <tom@codesourcery.com>
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Jul 2011 12:37:47 +0000 (12:37 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Jul 2011 12:37:47 +0000 (12:37 +0000)
PR middle-end/43513
* tree-ssa-dce.c (ref_may_be_aliased): Add assert.
(propagate_necessity): Handle WITH_SIZE_EXPR call arg.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176959 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-dce.c

index 6c707bb..99968b3 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-30  Tom de Vries  <tom@codesourcery.com>
+
+       PR middle-end/43513
+       * tree-ssa-dce.c (ref_may_be_aliased): Add assert.
+       (propagate_necessity): Handle WITH_SIZE_EXPR call arg.
+
 2011-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * config/mips/driver-native.c [__sgi__]: Include <invent.h>,
index 9597b57..bf69bbf 100644 (file)
@@ -490,6 +490,7 @@ find_obviously_necessary_stmts (struct edge_list *el)
 static bool
 ref_may_be_aliased (tree ref)
 {
+  gcc_assert (TREE_CODE (ref) != WITH_SIZE_EXPR);
   while (handled_component_p (ref))
     ref = TREE_OPERAND (ref, 0);
   if (TREE_CODE (ref) == MEM_REF
@@ -850,6 +851,8 @@ propagate_necessity (struct edge_list *el)
                  if (TREE_CODE (arg) == SSA_NAME
                      || is_gimple_min_invariant (arg))
                    continue;
+                 if (TREE_CODE (arg) == WITH_SIZE_EXPR)
+                   arg = TREE_OPERAND (arg, 0);
                  if (!ref_may_be_aliased (arg))
                    mark_aliased_reaching_defs_necessary (stmt, arg);
                }