checks.adb (Ensure_Valid): Capture valid status if possible (eliminate checks)
authorRobert Dewar <dewar@adacore.com>
Wed, 26 Mar 2008 07:37:00 +0000 (08:37 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 26 Mar 2008 07:37:00 +0000 (08:37 +0100)
2008-03-26  Robert Dewar  <dewar@adacore.com>

* checks.adb (Ensure_Valid): Capture valid status if possible
(eliminate checks)

From-SVN: r133553

gcc/ada/checks.adb

index 0af10a6b1d6ab9bf05308630ac4f9cabdd6514d3..d815a534a2101585dbeae3126fef8b47c95bf5c7 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -619,7 +619,7 @@ package body Checks is
             if Obj_Size /= No_Uint
               and then Exp_Size /= No_Uint
               and then Obj_Size > Exp_Size
-              and then not Warnings_Off (E)
+              and then not Has_Warnings_Off (E)
             then
                if Address_Clause_Overlay_Warnings then
                   Error_Msg_FE
@@ -3890,6 +3890,12 @@ package body Checks is
       --  If we fall through, a validity check is required
 
       Insert_Valid_Check (Expr);
+
+      if Is_Entity_Name (Expr)
+        and then Safe_To_Capture_Value (Expr, Entity (Expr))
+      then
+         Set_Is_Known_Valid (Entity (Expr));
+      end if;
    end Ensure_Valid;
 
    ----------------------