OSDN Git Service

2009-04-29 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Apr 2009 10:37:14 +0000 (10:37 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Apr 2009 10:37:14 +0000 (10:37 +0000)
* tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
parameter.  Allow invariants as base if !require_lvalue.
(verify_gimple_assign_single): Adjust.

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

gcc/ChangeLog
gcc/tree-cfg.c

index be525c3..a6e64b9 100644 (file)
@@ -1,3 +1,9 @@
+2009-04-29  Richard Guenther  <rguenther@suse.de>
+
+       * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
+       parameter.  Allow invariants as base if !require_lvalue.
+       (verify_gimple_assign_single): Adjust.
+
 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
index 78f82a2..0ef2fb9 100644 (file)
@@ -3135,11 +3135,12 @@ verify_types_in_gimple_min_lval (tree expr)
   return false;
 }
 
-/* Verify if EXPR is a valid GIMPLE reference expression.  Returns true
+/* Verify if EXPR is a valid GIMPLE reference expression.  If
+   REQUIRE_LVALUE is true verifies it is an lvalue.  Returns true
    if there is an error, otherwise false.  */
 
 static bool
-verify_types_in_gimple_reference (tree expr)
+verify_types_in_gimple_reference (tree expr, bool require_lvalue)
 {
   while (handled_component_p (expr))
     {
@@ -3211,7 +3212,8 @@ verify_types_in_gimple_reference (tree expr)
       expr = op;
     }
 
-  return verify_types_in_gimple_min_lval (expr);
+  return ((require_lvalue || !is_gimple_min_invariant (expr))
+         && verify_types_in_gimple_min_lval (expr));
 }
 
 /* Returns true if there is one pointer type in TYPE_POINTER_TO (SRC_OBJ)
@@ -3747,7 +3749,7 @@ verify_gimple_assign_single (gimple stmt)
     }
 
   if (handled_component_p (lhs))
-    res |= verify_types_in_gimple_reference (lhs);
+    res |= verify_types_in_gimple_reference (lhs, true);
 
   /* Special codes we cannot handle via their class.  */
   switch (rhs_code)
@@ -3770,7 +3772,7 @@ verify_gimple_assign_single (gimple stmt)
            return true;
          }
 
-       return verify_types_in_gimple_reference (op);
+       return verify_types_in_gimple_reference (op, true);
       }
 
     /* tcc_reference  */
@@ -3793,7 +3795,7 @@ verify_gimple_assign_single (gimple stmt)
          debug_generic_stmt (rhs1);
          return true;
        }
-      return res || verify_types_in_gimple_reference (rhs1);
+      return res || verify_types_in_gimple_reference (rhs1, false);
 
     /* tcc_constant  */
     case SSA_NAME: