[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 19 Feb 2014 15:04:08 +0000 (16:04 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 19 Feb 2014 15:04:08 +0000 (16:04 +0100)
2014-02-19  Ed Schonberg  <schonberg@adacore.com>

* sem_ch5.adb: Inhibit iterator rewriting in ASIS mode.

2014-02-19  Arnaud Charlet  <charlet@adacore.com>

* sem_ch13.adb (Analyze_Aspect_Specifications): Do not generate
an error on out of range priorities if Relaxed_RM_Semantics.
* sem_prag.adb (Analyze_Pragma): Ditto.

2014-02-19  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Resolve_Attribute): Detect the case of F'Access
where F denotes the renaming of an enumeration literal, and
issue a specialized error message.

From-SVN: r207906

gcc/ada/ChangeLog
gcc/ada/sem_attr.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch5.adb
gcc/ada/sem_prag.adb

index 09ad3eaf4f64cfebb1ca3ac61fb4ee24d82a2db8..1fb722dd3549c02413c9c411048beac2ad77625e 100644 (file)
@@ -1,3 +1,19 @@
+2014-02-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch5.adb: Inhibit iterator rewriting in ASIS mode.
+
+2014-02-19  Arnaud Charlet  <charlet@adacore.com>
+
+       * sem_ch13.adb (Analyze_Aspect_Specifications): Do not generate
+       an error on out of range priorities if Relaxed_RM_Semantics.
+       * sem_prag.adb (Analyze_Pragma): Ditto.
+
+2014-02-19  Bob Duff  <duff@adacore.com>
+
+       * sem_attr.adb (Resolve_Attribute): Detect the case of F'Access
+       where F denotes the renaming of an enumeration literal, and
+       issue a specialized error message.
+
 2014-02-19  Matthew Heaney  <heaney@adacore.com>
 
        * a-chtgop.ads (Checked_Index): New operation.
index 3e39d3a073aa36c0ef1f6b3d8720a4732c1daaf1..7e1a15eb0581cc4e7b9803d5f3ae76dfbd4569ad 100644 (file)
@@ -9692,16 +9692,27 @@ package body Sem_Attr is
                   Error_Msg_F ("prefix of % attribute cannot be abstract", P);
                   Set_Etype (N, Any_Type);
 
-               elsif Convention (Entity (P)) = Convention_Intrinsic then
-                  if Ekind (Entity (P)) = E_Enumeration_Literal then
-                     Error_Msg_F
-                       ("prefix of % attribute cannot be enumeration literal",
-                        P);
-                  else
-                     Error_Msg_F
-                       ("prefix of % attribute cannot be intrinsic", P);
-                  end if;
+               elsif Ekind (Entity (P)) = E_Enumeration_Literal then
+                  Error_Msg_F
+                    ("prefix of % attribute cannot be enumeration literal",
+                     P);
+                  Set_Etype (N, Any_Type);
 
+               --  An attempt to take 'Access of a function that renames an
+               --  enumeration literal. Issue a specialized error message.
+
+               elsif Ekind (Entity (P)) = E_Function
+                 and then Present (Alias (Entity (P)))
+                 and then Ekind (Alias (Entity (P))) = E_Enumeration_Literal
+               then
+                  Error_Msg_F
+                    ("prefix of % attribute cannot be function renaming " &
+                       "an enumeration literal", P);
+                  Set_Etype (N, Any_Type);
+
+               elsif Convention (Entity (P)) = Convention_Intrinsic then
+                  Error_Msg_F
+                    ("prefix of % attribute cannot be intrinsic", P);
                   Set_Etype (N, Any_Type);
                end if;
 
index 7e2600f6a6c3f587ec73b43a462c80fe56685eeb..31f33962d9e7c8c0ac262726a0d73de9865bc973 100644 (file)
@@ -1897,7 +1897,10 @@ package body Sem_Ch13 is
                            Set_Main_Priority
                              (Main_Unit, UI_To_Int (Expr_Value (Expr)));
 
-                        else
+                        --  Ignore pragma if Relaxed_RM_Semantics to support
+                        --  other targets/non GNAT compilers.
+
+                        elsif not Relaxed_RM_Semantics then
                            Error_Msg_N
                              ("main subprogram priority is out of range",
                               Expr);
index c66b41603bfab389e8cdf1bd0d1ac27a6b628d32..bba4477bb445c85d5781f3adb21f443728fc301a 100644 (file)
@@ -1727,8 +1727,11 @@ package body Sem_Ch5 is
 
         --  Do not perform this expansion in SPARK mode, since the formal
         --  verification directly deals with the source form of the iterator.
+        --  Ditto for ASIS, where the temporary amy hide the transformation
+        --  of a selected component into a prefixed function call.
 
         and then not GNATprove_Mode
+        and then not ASIS_Mode
       then
          declare
             Id   : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
index 42cb142a84ab75344c11659787dec5994c5ee2fb..8e86d6144f9b6d33a65c6e8b1aec769d9e4ce212 100644 (file)
@@ -17871,26 +17871,28 @@ package body Sem_Prag is
                elsif Raises_Constraint_Error (Arg) then
                   null;
 
-               --  Otherwise check in range
+               --  Otherwise check in range except if Relaxed_RM_Semantics
+               --  where we ignore the value if out of range.
 
                else
                   declare
                      Val : constant Uint := Expr_Value (Arg);
-
                   begin
-                     if Val < 0
-                       or else Val > Expr_Value (Expression
-                                       (Parent (RTE (RE_Max_Priority))))
+                     if not Relaxed_RM_Semantics
+                       and then
+                         (Val < 0
+                          or else Val > Expr_Value (Expression
+                                          (Parent (RTE (RE_Max_Priority)))))
                      then
                         Error_Pragma_Arg
                           ("main subprogram priority is out of range", Arg1);
+                     else
+                        Set_Main_Priority
+                          (Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
                      end if;
                   end;
                end if;
 
-               Set_Main_Priority
-                    (Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
-
                --  Load an arbitrary entity from System.Tasking.Stages or
                --  System.Tasking.Restricted.Stages (depending on the
                --  supported profile) to make sure that one of these packages