aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-10-26 15:00:05 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-10-26 15:00:05 +0200
commit880dabb586a7da7a9198319daef82bf87df7422c (patch)
treea00f59d391906e9e2674b5607e6baf48f833deec /gcc
parent392314047357798f0dffb3e5582f890489a3204f (diff)
downloadgcc-880dabb586a7da7a9198319daef82bf87df7422c.zip
gcc-880dabb586a7da7a9198319daef82bf87df7422c.tar.gz
gcc-880dabb586a7da7a9198319daef82bf87df7422c.tar.bz2
[multiple changes]
2010-10-26 Robert Dewar <dewar@adacore.com> * opt.ads: Comment fix. * sem_cat.adb: Treat categorization errors as warnings in GNAT Mode. * switch-c.adb: GNAT Mode does not set Treat_Categorization_Errors_As_Warnings. 2010-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Analyze_Subprogram_Renaming): Improve warning when an operator renames another one with a different name. 2010-10-26 Thomas Quinot <quinot@adacore.com> * exp_ch4.adb, exp_pakd.adb: Minor reformatting. From-SVN: r165956
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog16
-rw-r--r--gcc/ada/exp_ch4.adb4
-rw-r--r--gcc/ada/exp_pakd.adb186
-rw-r--r--gcc/ada/opt.ads2
-rw-r--r--gcc/ada/sem_cat.adb13
-rw-r--r--gcc/ada/sem_ch8.adb9
-rw-r--r--gcc/ada/switch-c.adb10
7 files changed, 125 insertions, 115 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index cae1529..896a17ca 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,19 @@
+2010-10-26 Robert Dewar <dewar@adacore.com>
+
+ * opt.ads: Comment fix.
+ * sem_cat.adb: Treat categorization errors as warnings in GNAT Mode.
+ * switch-c.adb: GNAT Mode does not set
+ Treat_Categorization_Errors_As_Warnings.
+
+2010-10-26 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Improve warning when an
+ operator renames another one with a different name.
+
+2010-10-26 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch4.adb, exp_pakd.adb: Minor reformatting.
+
2010-10-26 Bob Duff <duff@adacore.com>
* namet.adb: Improve hash function.
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index cbd8a2e..5f4cb6a 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -6987,8 +6987,8 @@ package body Exp_Ch4 is
return;
end if;
- -- For the VMS "not" on signed integer types, use conversion to and
- -- from a predefined modular type.
+ -- For the VMS "not" on signed integer types, use conversion to and from
+ -- a predefined modular type.
if Is_VMS_Operator (Entity (N)) then
declare
diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb
index 3b1a4cf..4d3ea068 100644
--- a/gcc/ada/exp_pakd.adb
+++ b/gcc/ada/exp_pakd.adb
@@ -67,23 +67,22 @@ package body Exp_Pakd is
-- For big-endian machines, element zero is at the left hand end
-- (high order end) of a bit field.
- -- The shifts that are used to right justify a field therefore differ
- -- in the two cases. For the little-endian case, we can simply use the
- -- bit number (i.e. the element number * element size) as the count for
- -- a right shift. For the big-endian case, we have to subtract the shift
- -- count from an appropriate constant to use in the right shift. We use
- -- rotates instead of shifts (which is necessary in the store case to
- -- preserve other fields), and we expect that the backend will be able
- -- to change the right rotate into a left rotate, avoiding the subtract,
- -- if the architecture provides such an instruction.
+ -- The shifts that are used to right justify a field therefore differ in
+ -- the two cases. For the little-endian case, we can simply use the bit
+ -- number (i.e. the element number * element size) as the count for a right
+ -- shift. For the big-endian case, we have to subtract the shift count from
+ -- an appropriate constant to use in the right shift. We use rotates
+ -- instead of shifts (which is necessary in the store case to preserve
+ -- other fields), and we expect that the backend will be able to change the
+ -- right rotate into a left rotate, avoiding the subtract, if the machine
+ -- architecture provides such an instruction.
----------------------------------------------
-- Entity Tables for Packed Access Routines --
----------------------------------------------
- -- For the cases of component size = 3,5-7,9-15,17-31,33-63 we call
- -- library routines. This table is used to obtain the entity for the
- -- proper routine.
+ -- For the cases of component size = 3,5-7,9-15,17-31,33-63 we call library
+ -- routines. This table provides the entity for the proper routine.
type E_Array is array (Int range 01 .. 63) of RE_Id;
@@ -157,10 +156,10 @@ package body Exp_Pakd is
62 => RE_Bits_62,
63 => RE_Bits_63);
- -- Array of Get routine entities. These are used to obtain an element
- -- from a packed array. The N'th entry is used to obtain elements from
- -- a packed array whose component size is N. RE_Null is used as a null
- -- entry, for the cases where a library routine is not used.
+ -- Array of Get routine entities. These are used to obtain an element from
+ -- a packed array. The N'th entry is used to obtain elements from a packed
+ -- array whose component size is N. RE_Null is used as a null entry, for
+ -- the cases where a library routine is not used.
Get_Id : constant E_Array :=
(01 => RE_Null,
@@ -228,9 +227,9 @@ package body Exp_Pakd is
63 => RE_Get_63);
-- Array of Get routine entities to be used in the case where the packed
- -- array is itself a component of a packed structure, and therefore may
- -- not be fully aligned. This only affects the even sizes, since for the
- -- odd sizes, we do not get any fixed alignment in any case.
+ -- array is itself a component of a packed structure, and therefore may not
+ -- be fully aligned. This only affects the even sizes, since for the odd
+ -- sizes, we do not get any fixed alignment in any case.
GetU_Id : constant E_Array :=
(01 => RE_Null,
@@ -297,10 +296,10 @@ package body Exp_Pakd is
62 => RE_GetU_62,
63 => RE_Get_63);
- -- Array of Set routine entities. These are used to assign an element
- -- of a packed array. The N'th entry is used to assign elements for
- -- a packed array whose component size is N. RE_Null is used as a null
- -- entry, for the cases where a library routine is not used.
+ -- Array of Set routine entities. These are used to assign an element of a
+ -- packed array. The N'th entry is used to assign elements for a packed
+ -- array whose component size is N. RE_Null is used as a null entry, for
+ -- the cases where a library routine is not used.
Set_Id : constant E_Array :=
(01 => RE_Null,
@@ -368,9 +367,9 @@ package body Exp_Pakd is
63 => RE_Set_63);
-- Array of Set routine entities to be used in the case where the packed
- -- array is itself a component of a packed structure, and therefore may
- -- not be fully aligned. This only affects the even sizes, since for the
- -- odd sizes, we do not get any fixed alignment in any case.
+ -- array is itself a component of a packed structure, and therefore may not
+ -- be fully aligned. This only affects the even sizes, since for the odd
+ -- sizes, we do not get any fixed alignment in any case.
SetU_Id : constant E_Array :=
(01 => RE_Null,
@@ -445,10 +444,10 @@ package body Exp_Pakd is
(Atyp : Entity_Id;
N : Node_Id;
Subscr : out Node_Id);
- -- Given a constrained array type Atyp, and an indexed component node
- -- N referencing an array object of this type, build an expression of
- -- type Standard.Integer representing the zero-based linear subscript
- -- value. This expression includes any required range checks.
+ -- Given a constrained array type Atyp, and an indexed component node N
+ -- referencing an array object of this type, build an expression of type
+ -- Standard.Integer representing the zero-based linear subscript value.
+ -- This expression includes any required range checks.
procedure Convert_To_PAT_Type (Aexp : Node_Id);
-- Given an expression of a packed array type, builds a corresponding
@@ -1412,9 +1411,9 @@ package body Exp_Pakd is
-- The statement to be generated is:
- -- Obj := atyp!((Obj and Mask1) or (shift_left (rhs, shift)))
+ -- Obj := atyp!((Obj and Mask1) or (shift_left (rhs, Shift)))
- -- where mask1 is obtained by shifting Cmask left Shift bits
+ -- where Mask1 is obtained by shifting Cmask left Shift bits
-- and then complementing the result.
-- the "and Mask1" is omitted if rhs is constant and all 1 bits
@@ -1447,21 +1446,21 @@ package body Exp_Pakd is
Rhs_Val_Known := False;
end if;
- -- Some special checks for the case where the right hand value
- -- is known at compile time. Basically we have to take care of
- -- the implicit conversion to the subtype of the component object.
+ -- Some special checks for the case where the right hand value is
+ -- known at compile time. Basically we have to take care of the
+ -- implicit conversion to the subtype of the component object.
if Rhs_Val_Known then
- -- If we have a biased component type then we must manually do
- -- the biasing, since we are taking responsibility in this case
- -- for constructing the exact bit pattern to be used.
+ -- If we have a biased component type then we must manually do the
+ -- biasing, since we are taking responsibility in this case for
+ -- constructing the exact bit pattern to be used.
if Has_Biased_Representation (Ctyp) then
Rhs_Val := Rhs_Val - Expr_Rep_Value (Type_Low_Bound (Ctyp));
end if;
- -- For a negative value, we manually convert the twos complement
+ -- For a negative value, we manually convert the two's complement
-- value to a corresponding unsigned value, so that the proper
-- field width is maintained. If we did not do this, we would
-- get too many leading sign bits later on.
@@ -1544,8 +1543,8 @@ package body Exp_Pakd is
Rhs := Unchecked_Convert_To (RTE (Bits_Id (Csiz)), Rhs);
end if;
- -- Set Etype, since it can be referenced before the
- -- node is completely analyzed.
+ -- Set Etype, since it can be referenced before the node is
+ -- completely analyzed.
Set_Etype (Rhs, Etyp);
@@ -1999,8 +1998,7 @@ package body Exp_Pakd is
Set_Parent (Arg, Parent (N));
Analyze_And_Resolve (Arg);
- Rewrite (N,
- RJ_Unchecked_Convert_To (Ctyp, Arg));
+ Rewrite (N, RJ_Unchecked_Convert_To (Ctyp, Arg));
-- All other component sizes for non-modular case
@@ -2177,14 +2175,14 @@ package body Exp_Pakd is
Convert_To_PAT_Type (Opnd);
PAT := Etype (Opnd);
- -- For the case where the packed array type is a modular type,
- -- not A expands simply into:
+ -- For the case where the packed array type is a modular type, "not A"
+ -- expands simply into:
- -- rtyp!(PAT!(A) xor mask)
+ -- Rtyp!(PAT!(A) xor Mask)
- -- where PAT is the packed array type, and mask is a mask of all
- -- one bits of length equal to the size of this packed type and
- -- rtyp is the actual subtype of the operand
+ -- where PAT is the packed array type, Mask is a mask of all 1 bits of
+ -- length equal to the size of this packed type, and Rtyp is the actual
+ -- actual subtype of the operand.
Lit := Make_Integer_Literal (Loc, 2 ** RM_Size (PAT) - 1);
Set_Print_In_Hex (Lit);
@@ -2202,12 +2200,12 @@ package body Exp_Pakd is
-- System.Bit_Ops.Bit_Not
-- (Opnd'Address,
- -- Typ'Length * Typ'Component_Size;
+ -- Typ'Length * Typ'Component_Size,
-- Result'Address);
- -- where Opnd is the Packed_Bytes{1,2,4} operand and the second
- -- argument is the length of the operand in bits. Then we replace
- -- the expression by a reference to Result.
+ -- where Opnd is the Packed_Bytes{1,2,4} operand and the second argument
+ -- is the length of the operand in bits. We then replace the expression
+ -- with a reference to Result.
else
declare
@@ -2215,15 +2213,13 @@ package body Exp_Pakd is
begin
Insert_Actions (N, New_List (
-
Make_Object_Declaration (Loc,
Defining_Identifier => Result_Ent,
- Object_Definition => New_Occurrence_Of (Rtyp, Loc)),
+ Object_Definition => New_Occurrence_Of (Rtyp, Loc)),
Make_Procedure_Call_Statement (Loc,
Name => New_Occurrence_Of (RTE (RE_Bit_Not), Loc),
Parameter_Associations => New_List (
-
Make_Byte_Aligned_Attribute_Reference (Loc,
Prefix => Opnd,
Attribute_Name => Name_Address),
@@ -2240,16 +2236,14 @@ package body Exp_Pakd is
Make_Integer_Literal (Loc, Component_Size (Rtyp))),
Make_Byte_Aligned_Attribute_Reference (Loc,
- Prefix => New_Occurrence_Of (Result_Ent, Loc),
+ Prefix => New_Occurrence_Of (Result_Ent, Loc),
Attribute_Name => Name_Address)))));
- Rewrite (N,
- New_Occurrence_Of (Result_Ent, Loc));
+ Rewrite (N, New_Occurrence_Of (Result_Ent, Loc));
end;
end if;
Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
-
end Expand_Packed_Not;
-----------------------------
@@ -2519,27 +2513,27 @@ package body Exp_Pakd is
Source_Siz := UI_To_Int (RM_Size (Source_Typ));
Target_Siz := UI_To_Int (RM_Size (Target_Typ));
- -- First step, if the source type is not a discrete type, then we
- -- first convert to a modular type of the source length, since
- -- otherwise, on a big-endian machine, we get left-justification.
- -- We do it for little-endian machines as well, because there might
- -- be junk bits that are not cleared if the type is not numeric.
+ -- First step, if the source type is not a discrete type, then we first
+ -- convert to a modular type of the source length, since otherwise, on
+ -- a big-endian machine, we get left-justification. We do it for little-
+ -- endian machines as well, because there might be junk bits that are
+ -- not cleared if the type is not numeric.
if Source_Siz /= Target_Siz
- and then not Is_Discrete_Type (Source_Typ)
+ and then not Is_Discrete_Type (Source_Typ)
then
Src := Unchecked_Convert_To (RTE (Bits_Id (Source_Siz)), Src);
end if;
- -- In the big endian case, if the lengths of the two types differ,
- -- then we must worry about possible left justification in the
- -- conversion, and avoiding that is what this is all about.
+ -- In the big endian case, if the lengths of the two types differ, then
+ -- we must worry about possible left justification in the conversion,
+ -- and avoiding that is what this is all about.
if Bytes_Big_Endian and then Source_Siz /= Target_Siz then
-- Next step. If the target is not a discrete type, then we first
- -- convert to a modular type of the target length, since
- -- otherwise, on a big-endian machine, we get left-justification.
+ -- convert to a modular type of the target length, since otherwise,
+ -- on a big-endian machine, we get left-justification.
if not Is_Discrete_Type (Target_Typ) then
Src := Unchecked_Convert_To (RTE (Bits_Id (Target_Siz)), Src);
@@ -2555,16 +2549,16 @@ package body Exp_Pakd is
-- Setup_Enumeration_Packed_Array_Reference --
----------------------------------------------
- -- All we have to do here is to find the subscripts that correspond
- -- to the index positions that have non-standard enumeration types
- -- and insert a Pos attribute to get the proper subscript value.
+ -- All we have to do here is to find the subscripts that correspond to the
+ -- index positions that have non-standard enumeration types and insert a
+ -- Pos attribute to get the proper subscript value.
- -- Finally the prefix must be uncheck converted to the corresponding
- -- packed array type.
+ -- Finally the prefix must be uncheck-converted to the corresponding packed
+ -- array type.
- -- Note that the component type is unchanged, so we do not need to
- -- fiddle with the types (Gigi always automatically takes the packed
- -- array type if it is set, as it will be in this case).
+ -- Note that the component type is unchanged, so we do not need to fiddle
+ -- with the types (Gigi always automatically takes the packed array type if
+ -- it is set, as it will be in this case).
procedure Setup_Enumeration_Packed_Array_Reference (N : Node_Id) is
Pfx : constant Node_Id := Prefix (N);
@@ -2573,9 +2567,9 @@ package body Exp_Pakd is
Expr : Node_Id;
begin
- -- If the array is unconstrained, then we replace the array
- -- reference with its actual subtype. This actual subtype will
- -- have a packed array type with appropriate bounds.
+ -- If the array is unconstrained, then we replace the array reference
+ -- with its actual subtype. This actual subtype will have a packed array
+ -- type with appropriate bounds.
if not Is_Constrained (Packed_Array_Type (Etype (Pfx))) then
Convert_To_Actual_Subtype (Pfx);
@@ -2610,7 +2604,6 @@ package body Exp_Pakd is
Expressions => Exprs));
Analyze_And_Resolve (N, Typ);
-
end Setup_Enumeration_Packed_Array_Reference;
-----------------------------------------
@@ -2657,8 +2650,8 @@ package body Exp_Pakd is
Compute_Linear_Subscript (Atyp, N, Shift);
- -- If the component size is not 1, then the subscript must be
- -- multiplied by the component size to get the shift count.
+ -- If the component size is not 1, then the subscript must be multiplied
+ -- by the component size to get the shift count.
if Csiz /= 1 then
Shift :=
@@ -2667,8 +2660,8 @@ package body Exp_Pakd is
Right_Opnd => Shift);
end if;
- -- If we have the array case, then this shift count must be broken
- -- down into a byte subscript, and a shift within the byte.
+ -- If we have the array case, then this shift count must be broken down
+ -- into a byte subscript, and a shift within the byte.
if Is_Array_Type (PAT) then
@@ -2704,9 +2697,9 @@ package body Exp_Pakd is
Shift := New_Shift;
end;
- -- For the modular integer case, the object to be manipulated is
- -- the entire array, so Obj is unchanged. Note that we will reset
- -- its type to PAT before returning to the caller.
+ -- For the modular integer case, the object to be manipulated is the
+ -- entire array, so Obj is unchanged. Note that we will reset its type
+ -- to PAT before returning to the caller.
else
null;
@@ -2722,14 +2715,13 @@ package body Exp_Pakd is
-- Here we have the case of 2-bit fields
- -- For the little-endian case, we already have the proper shift
- -- count set, e.g. for element 2, the shift count is 2*2 = 4.
+ -- For the little-endian case, we already have the proper shift count
+ -- set, e.g. for element 2, the shift count is 2*2 = 4.
- -- For the big endian case, we have to adjust the shift count,
- -- computing it as (N - F) - shift, where N is the number of bits
- -- in an element of the array used to implement the packed array,
- -- F is the number of bits in a source level array element, and
- -- shift is the count so far computed.
+ -- For the big endian case, we have to adjust the shift count, computing
+ -- it as (N - F) - Shift, where N is the number of bits in an element of
+ -- the array used to implement the packed array, F is the number of bits
+ -- in a source array element, and Shift is the count so far computed.
if Bytes_Big_Endian then
Shift :=
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 45e44fb..b31a66e 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -1233,7 +1233,7 @@ package Opt is
Treat_Categorization_Errors_As_Warnings : Boolean := False;
-- Normally categorization errors are true illegalities. If this switch
-- is set, then such errors result in warning messages rather than error
- -- messages. Set True by -gnatg or -gnateP (P for Pure/Preelaborate).
+ -- messages. Set True by -gnateP (P for Pure/Preelaborate).
Treat_Restrictions_As_Warnings : Boolean := False;
-- GNAT
diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb
index a4edd3e..9311beb 100644
--- a/gcc/ada/sem_cat.adb
+++ b/gcc/ada/sem_cat.adb
@@ -226,10 +226,19 @@ package body Sem_Cat is
if Err then
- -- These messages are warnings in GNAT mode or if the -gnateC switch
+ -- These messages are warnings in GNAT mode or if the -gnateP switch
-- was set. Otherwise these are real errors for real illegalities.
- Error_Msg_Warn := Treat_Categorization_Errors_As_Warnings;
+ -- The reason we suppress these errors in GNAT mode is that the run-
+ -- time has several instances of violations of the categorization
+ -- errors (e.g. Pure units withing Preelaborate units. All these
+ -- violations are harmless in the cases where we intend them, and
+ -- we suppress the warnings with Warnings (Off). In cases where we
+ -- do not intend the violation, warnings are errors in GNAT mode
+ -- anyway, so we will still get an error.
+
+ Error_Msg_Warn :=
+ Treat_Categorization_Errors_As_Warnings or GNAT_Mode;
-- Don't give error if main unit is not an internal unit, and the
-- unit generating the message is an internal unit. This is the
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 2abee09..2a23afa 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -2480,16 +2480,19 @@ package body Sem_Ch8 is
-- A useful warning, suggested by Ada Bug Finder (Ada-Europe 2005)
-- is to warn if an operator is being renamed as a different operator.
+ -- If the operator is predefined, examine the kind of the entity, not
+ -- the abbreviated declaration in Standard.
if Comes_From_Source (N)
and then Present (Old_S)
- and then Nkind (Old_S) = N_Defining_Operator_Symbol
+ and then
+ (Nkind (Old_S) = N_Defining_Operator_Symbol
+ or else Ekind (Old_S) = E_Operator)
and then Nkind (New_S) = N_Defining_Operator_Symbol
and then Chars (Old_S) /= Chars (New_S)
then
Error_Msg_NE
- ("?& is being renamed as a different operator",
- New_S, Old_S);
+ ("?& is being renamed as a different operator", N, Old_S);
end if;
-- Check for renaming of obsolescent subprogram
diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb
index a1919e9..a4423dc 100644
--- a/gcc/ada/switch-c.adb
+++ b/gcc/ada/switch-c.adb
@@ -567,16 +567,6 @@ package body Switch.C is
Set_GNAT_Mode_Warnings;
Set_GNAT_Style_Check_Options;
- -- Suppress categorization errors. The run-time has several
- -- instances of violations of the categorization errors (e.g.
- -- Pure units withing Preelaborate units. These violations are
- -- harmless in the cases where we intend them, and we suppress
- -- the warnings with Warnings (Off). In cases where we do not
- -- intend the violation, warnings are errors in -gnatg mode
- -- anyway, so we will still get an error.
-
- Treat_Categorization_Errors_As_Warnings := True;
-
-- Processing for G switch
when 'G' =>