aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2008-08-05 15:24:27 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-08-05 15:24:27 +0200
commit4ae23b62c661788be5046ff466c7b2be2dfaeef6 (patch)
tree54b515868213283267ede81895a61a874247a3bb /gcc
parente5fe425118de09588879e2103f6cfb821c5919a5 (diff)
downloadgcc-4ae23b62c661788be5046ff466c7b2be2dfaeef6.zip
gcc-4ae23b62c661788be5046ff466c7b2be2dfaeef6.tar.gz
gcc-4ae23b62c661788be5046ff466c7b2be2dfaeef6.tar.bz2
opt.ads (Warn_On_Biased_Representation): New flag
2008-08-05 Robert Dewar <dewar@adacore.com> * opt.ads (Warn_On_Biased_Representation): New flag * sem_ch13.adb: (Analyze_Attribute_Definition_Clause): Issue warning when biased representation is required. (Minimum_Size): Don't allow biasing if enum rep clause case * sem_warn.adb: (Set_Dot_Warning_Switch): Add handling of -gnatw.b/B switches (Set_Warning_Switch): Include -gnatw.b in -gnatwa, -gnatw.B in gnatws * usage.adb: Add lines for -gnatw.b/B switches From-SVN: r138704
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog25
-rw-r--r--gcc/ada/opt.ads6
-rw-r--r--gcc/ada/sem_ch13.adb29
-rw-r--r--gcc/ada/sem_warn.adb10
-rw-r--r--gcc/ada/usage.adb16
5 files changed, 76 insertions, 10 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2628ace..c78970e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,30 @@
2008-08-05 Robert Dewar <dewar@adacore.com>
+ * opt.ads (Warn_On_Biased_Representation): New flag
+
+ * sem_ch13.adb:
+ (Analyze_Attribute_Definition_Clause): Issue warning when biased
+ representation is required.
+ (Minimum_Size): Don't allow biasing if enum rep clause case
+
+ * sem_warn.adb:
+ (Set_Dot_Warning_Switch): Add handling of -gnatw.b/B switches
+ (Set_Warning_Switch): Include -gnatw.b in -gnatwa, -gnatw.B in gnatws
+
+ * usage.adb: Add lines for -gnatw.b/B switches
+
+2008-08-05 Pascal Obry <obry@adacore.com>
+
+ * a-coinve.adb: Reorder the code to avoid uninitialized warning.
+
+ * adaint.c: In UNIX cases do not call __gnat_stat but stat directly.
+
+2008-08-05 Thomas Quinot <quinot@adacore.com>
+
+ * socket.c: Minor reformatting.
+
+2008-08-05 Robert Dewar <dewar@adacore.com>
+
* sem_ch3.adb: Minor reformatting
* prj-nmsc.adb: Minor reformatting
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 68bf246..b0bde56 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -1240,6 +1240,12 @@ package Opt is
-- Set to True to generate warnings for static fixed-point expression
-- values that are not an exact multiple of the small value of the type.
+ Warn_On_Biased_Representation : Boolean := True;
+ -- GNAT
+ -- Set to True to generate warnings for size clauses, component clauses
+ -- and component_size clauses that force biased representation. Set False
+ -- by -gnatw.B.
+
Warn_On_Constant : Boolean := False;
-- GNAT
-- Set to True to generate warnings for variables that could be declared
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index f72ffff..fe5305f 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -1131,6 +1131,12 @@ package body Sem_Ch13 is
Set_Associated_Node_For_Itype (New_Ctyp, U_Ent);
Set_Component_Type (Btype, New_Ctyp);
+
+ if Warn_On_Biased_Representation then
+ Error_Msg_N
+ ("?component size clause forces biased "
+ & "representation", N);
+ end if;
end if;
Set_Component_Size (Btype, Csize);
@@ -1330,7 +1336,12 @@ package body Sem_Ch13 is
or else Has_Small_Clause (U_Ent)
then
Check_Size (Expr, Etyp, Size, Biased);
- Set_Has_Biased_Representation (U_Ent, Biased);
+ Set_Has_Biased_Representation (U_Ent, Biased);
+
+ if Biased and Warn_On_Biased_Representation then
+ Error_Msg_N
+ ("?size clause forces biased representation", N);
+ end if;
end if;
-- For types set RM_Size and Esize if possible
@@ -1708,6 +1719,11 @@ package body Sem_Ch13 is
if Is_Elementary_Type (U_Ent) then
Check_Size (Expr, U_Ent, Size, Biased);
Set_Has_Biased_Representation (U_Ent, Biased);
+
+ if Biased and Warn_On_Biased_Representation then
+ Error_Msg_N
+ ("?value size clause forces biased representation", N);
+ end if;
end if;
Set_RM_Size (U_Ent, Size);
@@ -2491,6 +2507,12 @@ package body Sem_Ch13 is
Set_Has_Biased_Representation (Comp, Biased);
+ if Biased and Warn_On_Biased_Representation then
+ Error_Msg_F
+ ("?component clause forces biased "
+ & "representation", CC);
+ end if;
+
if Present (Ocomp) then
Set_Component_Clause (Ocomp, CC);
Set_Component_Bit_Offset (Ocomp, Fbit);
@@ -3570,7 +3592,10 @@ package body Sem_Ch13 is
-- Fall through with Hi and Lo set. Deal with biased case
- if (Biased and then not Is_Fixed_Point_Type (T))
+ if (Biased
+ and then not Is_Fixed_Point_Type (T)
+ and then not (Is_Enumeration_Type (T)
+ and then Has_Non_Standard_Rep (T)))
or else Has_Biased_Representation (T)
then
Hi := Hi - Lo;
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 5fe9743..c22d0ce 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -2817,6 +2817,12 @@ package body Sem_Warn is
when 'A' =>
Warn_On_Assertion_Failure := False;
+ when 'b' =>
+ Warn_On_Biased_Representation := True;
+
+ when 'B' =>
+ Warn_On_Biased_Representation := False;
+
when 'c' =>
Warn_On_Unrepped_Components := True;
@@ -2837,12 +2843,12 @@ package body Sem_Warn is
Warn_On_Assertion_Failure := True;
Warn_On_Assumed_Low_Bound := True;
Warn_On_Bad_Fixed_Value := True;
+ Warn_On_Biased_Representation := True;
Warn_On_Constant := True;
Warn_On_Deleted_Code := True;
Warn_On_Dereference := True;
Warn_On_Export_Import := True;
Warn_On_Hiding := True;
- Ineffective_Inline_Warnings := True;
Warn_On_Modified_Unread := True;
Warn_On_No_Value_Assigned := True;
Warn_On_Non_Local_Exception := True;
@@ -2910,6 +2916,7 @@ package body Sem_Warn is
Warn_On_Assertion_Failure := True;
Warn_On_Assumed_Low_Bound := True;
Warn_On_Bad_Fixed_Value := True;
+ Warn_On_Biased_Representation := True;
Warn_On_Constant := True;
Warn_On_Export_Import := True;
Warn_On_Modified_Unread := True;
@@ -2936,6 +2943,7 @@ package body Sem_Warn is
Warn_On_Assertion_Failure := False;
Warn_On_Assumed_Low_Bound := False;
Warn_On_Bad_Fixed_Value := False;
+ Warn_On_Biased_Representation := False;
Warn_On_Constant := False;
Warn_On_Deleted_Code := False;
Warn_On_Dereference := False;
diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb
index e4a9446..7478010 100644
--- a/gcc/ada/usage.adb
+++ b/gcc/ada/usage.adb
@@ -378,12 +378,14 @@ begin
Write_Line (" a turn on all optional warnings " &
"(except dhl.ot.w)");
Write_Line (" A turn off all optional warnings");
- Write_Line (" .a* turn on warnings for failing assertions");
- Write_Line (" .A turn off warnings for failing assertions");
+ Write_Line (" .a* turn on warnings for failing assertion");
+ Write_Line (" .A turn off warnings for failing assertion");
Write_Line (" b turn on warnings for bad fixed value " &
"(not multiple of small)");
Write_Line (" B* turn off warnings for bad fixed value " &
"(not multiple of small)");
+ Write_Line (" .b* turn on warnings for biased representation");
+ Write_Line (" .B turn off warnings for biased representation");
Write_Line (" c turn on warnings for constant conditional");
Write_Line (" C* turn off warnings for constant conditional");
Write_Line (" .c turn on warnings for unrepped components");
@@ -396,7 +398,7 @@ begin
Write_Line (" F* turn off warnings for unreferenced formal");
Write_Line (" g* turn on warnings for unrecognized pragma");
Write_Line (" G turn off warnings for unrecognized pragma");
- Write_Line (" h turn on warnings for hiding variable ");
+ Write_Line (" h turn on warnings for hiding variable");
Write_Line (" H* turn off warnings for hiding variable");
Write_Line (" i* turn on warnings for implementation unit");
Write_Line (" I turn off warnings for implementation unit");
@@ -430,9 +432,9 @@ begin
Write_Line (" .P* turn off warnings for suspicious parameter " &
"order");
Write_Line (" q* turn on warnings for questionable " &
- "missing parentheses");
+ "missing parenthesis");
Write_Line (" Q turn off warnings for questionable " &
- "missing parentheses");
+ "missing parenthesis");
Write_Line (" r turn on warnings for redundant construct");
Write_Line (" R* turn off warnings for redundant construct");
Write_Line (" .r turn on warnings for object renaming function");
@@ -451,8 +453,8 @@ begin
Write_Line (" .w* turn off warnings on pragma Warnings Off");
Write_Line (" x* turn on warnings for export/import");
Write_Line (" X turn off warnings for export/import");
- Write_Line (" .x turn on warnings for non-local exceptions");
- Write_Line (" .X* turn off warnings for non-local exceptions");
+ Write_Line (" .x turn on warnings for non-local exception");
+ Write_Line (" .X* turn off warnings for non-local exception");
Write_Line (" y* turn on warnings for Ada 2005 incompatibility");
Write_Line (" Y turn off warnings for Ada 2005 incompatibility");
Write_Line (" z* turn on warnings for convention/size/align " &