OSDN Git Service

2009-07-23 Arnaud Charlet <charlet@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 12:41:17 +0000 (12:41 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 12:41:17 +0000 (12:41 +0000)
* freeze.adb (Set_Small_Size): Remove extra space for consistency with
other similar messages.
* sem_prag.adb (Freeze_Record_Type, Freeze_Entity): Disable error
messages/implicit packing in CodePeer mode.
(Analyze_Pragma [case pragma Pack]): Ignore pragma in CodePeer mode.
* errout.adb (Special_Msg_Delete): Suppress 'size too small' message in
CodePeer mode.

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

gcc/ada/errout.adb
gcc/ada/freeze.adb
gcc/ada/sem_prag.adb

index f05a4dd..12b491f 100644 (file)
@@ -2768,18 +2768,21 @@ package body Errout is
       --  message, since it is likely that this size error is a cascaded
       --  result of other errors. The reason we eliminate unfrozen types
       --  is that messages issued before the freeze type are for sure OK.
+      --  Also suppress "size too small" errors in CodePeer mode, since pragma
+      --  Pack is also ignored in this configuration.
 
       elsif Msg = "size for& too small, minimum allowed is ^"
-        and then Is_Frozen (E)
-        and then Serious_Errors_Detected > 0
-        and then Nkind (N) /= N_Component_Clause
-        and then Nkind (Parent (N)) /= N_Component_Clause
-        and then
-          No (Get_Attribute_Definition_Clause (E, Attribute_Size))
-        and then
-          No (Get_Attribute_Definition_Clause (E, Attribute_Object_Size))
-        and then
-          No (Get_Attribute_Definition_Clause (E, Attribute_Value_Size))
+        and then (CodePeer_Mode
+          or else (Is_Frozen (E)
+            and then Serious_Errors_Detected > 0
+            and then Nkind (N) /= N_Component_Clause
+            and then Nkind (Parent (N)) /= N_Component_Clause
+            and then
+              No (Get_Attribute_Definition_Clause (E, Attribute_Size))
+            and then
+              No (Get_Attribute_Definition_Clause (E, Attribute_Object_Size))
+            and then
+              No (Get_Attribute_Definition_Clause (E, Attribute_Value_Size))))
       then
          return True;
 
index b4cc4ed..9cd8758 100644 (file)
@@ -593,7 +593,7 @@ package body Freeze is
             if RM_Size (T) < S then
                Error_Msg_Uint_1 := S;
                Error_Msg_NE
-                 ("size for & too small, minimum allowed is ^",
+                 ("size for& too small, minimum allowed is ^",
                   Size_Clause (T), T);
 
             elsif Unknown_Esize (T) then
@@ -2289,6 +2289,7 @@ package body Freeze is
            and then not Has_Discriminants (Rec)
            and then Esize (Rec) < Scalar_Component_Total_Esize
            and then Esize (Rec) >= Scalar_Component_Total_RM_Size
+           and then not CodePeer_Mode
          then
             --  If implicit packing enabled, do it
 
@@ -3007,6 +3008,7 @@ package body Freeze is
                     and then not Is_Limited_Composite (E)
                     and then not Is_Packed (Root_Type (E))
                     and then not Has_Component_Size_Clause (Root_Type (E))
+                    and then not CodePeer_Mode
                   then
                      Get_Index_Bounds (First_Index (E), Lo, Hi);
 
index fa07a24..4b4da5f 100644 (file)
@@ -9508,7 +9508,12 @@ package body Sem_Prag is
 
                else
                   if not Rep_Item_Too_Late (Typ, N) then
-                     if VM_Target = No_VM then
+                     if CodePeer_Mode then
+                        --  Ignore pragma Pack and disable corresponding
+                        --  complex expansions in CodePeer mode
+                        null;
+
+                     elsif VM_Target = No_VM then
                         Set_Is_Packed            (Base_Type (Typ));
                         Set_Has_Pragma_Pack      (Base_Type (Typ));
                         Set_Has_Non_Standard_Rep (Base_Type (Typ));
@@ -9524,7 +9529,12 @@ package body Sem_Prag is
 
             else pragma Assert (Is_Record_Type (Typ));
                if not Rep_Item_Too_Late (Typ, N) then
-                  if VM_Target = No_VM then
+                  if CodePeer_Mode then
+                     --  Ignore pragma Pack and disable corresponding
+                     --  complex expansions in CodePeer mode
+                     null;
+
+                  elsif VM_Target = No_VM then
                      Set_Is_Packed            (Base_Type (Typ));
                      Set_Has_Pragma_Pack      (Base_Type (Typ));
                      Set_Has_Non_Standard_Rep (Base_Type (Typ));