]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2010-09-09 Ed Schonberg <schonberg@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:44:04 +0000 (13:44 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:44:04 +0000 (13:44 +0000)
* sem_eval.adb (Is_Same_Value): Two occurrences of the same
discriminant cannot be assumed to be the same value because they may
refer to bounds of a component of two different instances of a
discriminated type.

2010-09-09  Gary Dismukes  <dismukes@adacore.com>

* checks.adb (Apply_Arithmetic_Overflow_Check): When converting the
operands of an operator to the type of an enclosing conversion, rewrite
the operator so the conversion can't be flagged as redundant.
Remove useless assignments to Typ and Rtyp.

2010-09-09  Eric Botcazou  <ebotcazou@adacore.com>

* gnat_ugn.texi: Fix another long line.

2010-09-09  Bob Duff  <duff@adacore.com>

* sem_warn.adb (Output_Reference_Error): Don't warn for renames read
but never assigned.

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

gcc/ada/ChangeLog
gcc/ada/checks.adb
gcc/ada/gnat_ugn.texi
gcc/ada/sem_eval.adb
gcc/ada/sem_warn.adb

index d1ea67277c47bdd7b66b915dbf0e4595aca16370..941603e9b3d5103101e28f365c3d7e90a851cc3d 100644 (file)
@@ -1,3 +1,26 @@
+2010-09-09  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_eval.adb (Is_Same_Value): Two occurrences of the same
+       discriminant cannot be assumed to be the same value because they may
+       refer to bounds of a component of two different instances of a
+       discriminated type.
+
+2010-09-09  Gary Dismukes  <dismukes@adacore.com>
+
+       * checks.adb (Apply_Arithmetic_Overflow_Check): When converting the
+       operands of an operator to the type of an enclosing conversion, rewrite
+       the operator so the conversion can't be flagged as redundant.
+       Remove useless assignments to Typ and Rtyp.
+
+2010-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat_ugn.texi: Fix another long line.
+
+2010-09-09  Bob Duff  <duff@adacore.com>
+
+       * sem_warn.adb (Output_Reference_Error): Don't warn for renames read
+       but never assigned.
+
 2010-09-09  Matthew Heaney  <heaney@adacore.com>
 
        * a-convec.adb, a-coinve.adb (Clear, Delete, Delete_Last, Finalize,
index 59270e875a92fd539a5b476864c646102d314608..793526ec8a2bacaea1410b533cb13cc7a1f10ed4 100644 (file)
@@ -722,8 +722,8 @@ package body Checks is
 
    procedure Apply_Arithmetic_Overflow_Check (N : Node_Id) is
       Loc   : constant Source_Ptr := Sloc (N);
-      Typ   : Entity_Id           := Etype (N);
-      Rtyp  : Entity_Id           := Root_Type (Typ);
+      Typ   : constant Entity_Id  := Etype (N);
+      Rtyp  : constant Entity_Id  := Root_Type (Typ);
 
    begin
       --  An interesting special case. If the arithmetic operation appears as
@@ -815,9 +815,14 @@ package body Checks is
                         Subtype_Mark => New_Occurrence_Of (Target_Type, Loc),
                         Expression   => Relocate_Node (Right_Opnd (N))));
 
+                     --  Rewrite the conversion operand so that the original
+                     --  node is retained, in order to avoid the warning for
+                     --  redundant conversions in Resolve_Type_Conversion.
+
+                     Rewrite (N, Relocate_Node (N));
+
                      Set_Etype (N, Target_Type);
-                     Typ := Target_Type;
-                     Rtyp := Root_Type (Typ);
+
                      Analyze_And_Resolve (Left_Opnd  (N), Target_Type);
                      Analyze_And_Resolve (Right_Opnd (N), Target_Type);
 
index 5221482908548a242eec0253688664899872bf0c..6a49f046f5f21be707efd98a3895093389572eec 100644 (file)
@@ -10109,7 +10109,8 @@ the slowest compilation time.
 
 @item ^-O3^/OPTIMIZE=INLINING^
 Full optimization as in @option{-O2};
-also uses more aggressive automatic inlining of subprograms within a unit (@pxref{Inlining of Subprograms}) and attemps to vectorize loops.
+also uses more aggressive automatic inlining of subprograms within a unit
+(@pxref{Inlining of Subprograms}) and attemps to vectorize loops.
 
 @item ^-Os^/OPTIMIZE=SPACE^
 Optimize space usage (code and data) of resulting program.
index 467fafadb3827fc8a0647b53ca0313a65bed5ee8..68c9ce8bd497493704b00ba9b24db2d95c369c9e 100644 (file)
@@ -642,9 +642,15 @@ package body Sem_Eval is
          --  types, since we may have two NaN values and they should never
          --  compare equal.
 
+         --  If the entity is a discriminant, the two expressions may be
+         --  bounds of components of objects of the same discriminated
+         --  type. The values of the discriminants are not static, and
+         --  therefore the result is unknown.
+
          if Nkind_In (Lf, N_Identifier, N_Expanded_Name)
            and then Nkind_In (Rf, N_Identifier, N_Expanded_Name)
            and then Entity (Lf) = Entity (Rf)
+           and then Ekind (Entity (Lf)) /= E_Discriminant
            and then Present (Entity (Lf))
            and then not Is_Floating_Point_Type (Etype (L))
            and then not Is_Volatile_Reference (L)
index fc7e3440b60bea4c1c2ea5c4fee981c283ebd092..953229c5be92e1b5400d1b73f9119b531ebe7cfa 100644 (file)
@@ -858,9 +858,11 @@ package body Sem_Warn is
 
       procedure Output_Reference_Error (M : String) is
       begin
-         --  Never issue messages for internal names
+         --  Never issue messages for internal names, nor for renamings
 
-         if Is_Internal_Name (Chars (E1)) then
+         if Is_Internal_Name (Chars (E1))
+           or else Nkind (Parent (E1)) = N_Object_Renaming_Declaration
+         then
             return;
          end if;