[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 29 Oct 2012 09:55:29 +0000 (10:55 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 29 Oct 2012 09:55:29 +0000 (10:55 +0100)
2012-10-29  Yannick Moy  <moy@adacore.com>

* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
Add special case for case expression alternative.
(Is_Signed_Integer_Arithmetic_Op): Remove special case for case
expression alternative.
* exp_ch4.adb Minor reformatting.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

* sem_elab.adb: Minor reformatting.

2012-10-29  Bob Duff  <duff@adacore.com>

* sem_res.adb: Minor: Remove redundant test.

From-SVN: r192914

gcc/ada/ChangeLog
gcc/ada/checks.adb
gcc/ada/exp_ch4.adb
gcc/ada/sem_elab.adb
gcc/ada/sem_res.adb

index 2fb275398b4e5e67c2b7a1d9003f0cd97a50208e..0b7f5412c0650eb51b855114db4412e9a5ab6469 100644 (file)
@@ -1,3 +1,19 @@
+2012-10-29  Yannick Moy  <moy@adacore.com>
+
+       * checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
+       Add special case for case expression alternative.
+       (Is_Signed_Integer_Arithmetic_Op): Remove special case for case
+       expression alternative.
+       * exp_ch4.adb Minor reformatting.
+
+2012-10-29  Thomas Quinot  <quinot@adacore.com>
+
+       * sem_elab.adb: Minor reformatting.
+
+2012-10-29  Bob Duff  <duff@adacore.com>
+
+       * sem_res.adb: Minor: Remove redundant test.
+
 2012-10-29  Arnaud Charlet  <charlet@adacore.com>
 
        * pprint.ads, pprint.adb, adabkend.ads, adabkend.adb,
index 061f9796f2a9717f96223860557fae30118ebfd7..406d292f09e3fce72f334a0301515bb568c5759e 100644 (file)
@@ -1108,7 +1108,11 @@ package body Checks is
         or else Nkind (P) in N_Membership_Test
         or else Nkind (P) in N_Op_Compare
 
-        --  We may also be a range operand in a membership test
+        --  This is also true for an alternative in a case expression
+
+        or else Nkind (P) = N_Case_Expression_Alternative
+
+        --  This is also true for a range operand in a membership test
 
         or else (Nkind (P) = N_Range
                   and then Nkind (Parent (P)) in N_Membership_Test)
@@ -6268,9 +6272,6 @@ package body Checks is
          when N_If_Expression | N_Case_Expression =>
             return Is_Signed_Integer_Type (Etype (N));
 
-         when N_Case_Expression_Alternative =>
-            return Is_Signed_Integer_Type (Etype (Parent (N)));
-
          when others =>
             return False;
       end case;
index ee9ce0c50f20a40fab841f18b5d7287f27883991..ebdbcdeb316b0227cfb3472df39ad098a2235bb2 100644 (file)
@@ -3877,8 +3877,8 @@ package body Exp_Ch4 is
          end if;
 
       --  Right operand is a subtype name and the subtype has a predicate. We
-      --  have to make sure predicate is checked, and for that we need to use
-      --  the standard N_In circuitry with appropriate types.
+      --  have to make sure the predicate is checked, and for that we need to
+      --  use the standard N_In circuitry with appropriate types.
 
       else
          pragma Assert (Present (Predicate_Function (Etype (Rop))));
@@ -3921,7 +3921,7 @@ package body Exp_Ch4 is
             --       Bnn
             --   end
 
-            --  A bit gruesome, but here goes.
+            --  A bit gruesome, but there doesn't seem to be a simpler way
 
             declare
                Blk : constant Node_Id   := Make_Bignum_Block (Loc);
@@ -3937,10 +3937,8 @@ package body Exp_Ch4 is
 
                Nin :=
                  Make_In (Loc,
-                   Left_Opnd =>
-                     Convert_To (Base_Type (Etype (Rop)),
-                       New_Occurrence_Of (Lnn, Loc)),
-                   Right_Opnd => New_Occurrence_Of (Etype (Rop), Loc));
+                   Left_Opnd  => Convert_To (TB, New_Occurrence_Of (Lnn, Loc)),
+                   Right_Opnd => New_Occurrence_Of (T, Loc));
                Set_No_Minimize_Eliminate (Nin);
 
                --  Now decorate the block
index be3d7c5f98d5ba811b02d016a7f70e805cd2d0d0..4065eb386ccaf1dc66e9ce4961d5b18388122133 100644 (file)
@@ -1137,15 +1137,13 @@ package body Sem_Elab is
 
       --  Here we definitely have a bad instantiation
 
-      Error_Msg_NE
-        ("?cannot instantiate& before body seen", N, Ent);
+      Error_Msg_NE ("?cannot instantiate& before body seen", N, Ent);
 
       if Present (Instance_Spec (N)) then
          Supply_Bodies (Instance_Spec (N));
       end if;
 
-      Error_Msg_N
-        ("\?Program_Error will be raised at run time", N);
+      Error_Msg_N ("\?Program_Error will be raised at run time", N);
       Insert_Elab_Check (N);
       Set_ABE_Is_Certain (N);
    end Check_Bad_Instantiation;
@@ -1997,7 +1995,7 @@ package body Sem_Elab is
          then
             return Abandon;
 
-            --  If we have a function call, check it
+         --  If we have a function call, check it
 
          elsif Nkind (N) = N_Function_Call then
             Check_Elab_Call (N, Outer_Scope);
@@ -2078,8 +2076,7 @@ package body Sem_Elab is
 
       Elab_Visited.Append (E);
 
-      --  If the call is to a function that renames a literal, no check
-      --  is needed.
+      --  If the call is to a function that renames a literal, no check needed
 
       if Ekind (E) = E_Enumeration_Literal then
          return;
@@ -2188,12 +2185,10 @@ package body Sem_Elab is
             Error_Msg_NE
               ("?cannot instantiate& before body seen", N, Orig_Ent);
          else
-            Error_Msg_NE
-              ("?cannot call& before body seen", N, Orig_Ent);
+            Error_Msg_NE ("?cannot call& before body seen", N, Orig_Ent);
          end if;
 
-         Error_Msg_N
-           ("\?Program_Error will be raised at run time", N);
+         Error_Msg_N ("\?Program_Error will be raised at run time", N);
          Insert_Elab_Check (N);
 
       --  Call is not at outer level
index 4383754fa3165a384644539d9a9b25340c06a110..72c5725f44e0a4a2c36cdad9369ca09c910b6897 100644 (file)
@@ -6115,9 +6115,7 @@ package body Sem_Res is
 
       --  Check comparison on unordered enumeration
 
-      if Comes_From_Source (N)
-        and then Bad_Unordered_Enumeration_Reference (N, Etype (L))
-      then
+      if Bad_Unordered_Enumeration_Reference (N, Etype (L)) then
          Error_Msg_N ("comparison on unordered enumeration type?", N);
       end if;