[multiple changes]

2009-04-20  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Fix typos.

2009-04-20  Robert Dewar  <dewar@adacore.com>

	* debug.adb, gnat1drv.adb, sem_ch13.adb: Add circuitry to
	Validate_Unchecked_Warnings to suppress warnings about size or
	alignment or extra bits if either type involved has pragma Warnings
	(Off) set for the type entity.

From-SVN: r146366
This commit is contained in:
Arnaud Charlet 2009-04-20 10:09:46 +02:00
parent 76974327ad
commit 9fcf2a0bdc
5 changed files with 54 additions and 14 deletions

View File

@ -1,3 +1,14 @@
2009-04-20 Arnaud Charlet <charlet@adacore.com>
* gnat_ugn.texi: Fix typos.
2009-04-20 Robert Dewar <dewar@adacore.com>
* debug.adb, gnat1drv.adb, sem_ch13.adb: Add circuitry to
Validate_Unchecked_Warnings to suppress warnings about size or
alignment or extra bits if either type involved has pragma Warnings
(Off) set for the type entity.
2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (gigi): Make the special IA-64 descriptor type

View File

@ -91,7 +91,7 @@ package body Debug is
-- dY Enable configurable run-time mode
-- dZ Generate listing showing the contents of the dispatch tables
-- d.a
-- d.a Force Target_Strict_Alignment mode to True
-- d.b
-- d.c Generate inline concatenation, do not call procedure
-- d.d
@ -498,6 +498,10 @@ package body Debug is
-- - In case of abstract subprograms the text "is abstract" is
-- added at the end of the line.
-- d.a Force Target_Strict_Alignment to True, even on targets where it
-- would normally be false. Can be used for testing strict alignment
-- circuitry in the compiler.
-- d.c Generate inline concatenation, instead of calling one of the
-- System.Concat_n.Str_Concat_n routines in cases where the latter
-- routines would normally be called.

View File

@ -339,6 +339,12 @@ begin
List_Representation_Info_Mechanisms := True;
end if;
-- Force Target_Strict_Alignment true if debug flag -gnatd.a is set
if Debug_Flag_Dot_A then
Ttypes.Target_Strict_Alignment := True;
end if;
-- Disable static allocation of dispatch tables if -gnatd.t or if layout
-- is enabled. The front end's layout phase currently treats types that
-- have discriminant-dependent arrays as not being static even when a

View File

@ -22263,8 +22263,8 @@ headers which is intended to do 95% of the tedious work of generating
Ada specs from C or C++ header files. Note that this still is a work in
progress, not designed to generate 100% correct Ada specs.
Note that the code generated is using the Ada 2005 syntax, which makes it
easier to inteface with other languages than previous versions of Ada.
The code generated is using the Ada 2005 syntax, which makes it
easier to interface with other languages than previous versions of Ada.
@menu
* Running the binding generator::
@ -22286,8 +22286,8 @@ $ g++ -c -fdump-ada-spec -C /usr/include/time.h
$ gcc -c -gnat05 *.ads
@end smallexample
will generate, under GNU/Linux, the following files: @file{bits_time_h.ads},
@code{bits_types_h.ads}, @code{stddef_h.ads}, @code{time_h.ads} which
will generate, under GNU/Linux, the following files: @file{time_h.ads},
@file{bits_time_h.ads}, @file{stddef_h.ads}, @file{bits_types_h.ads} which
correspond to the files @file{/usr/include/time.h},
@file{/usr/include/bits/time.h}, etc@dots{}, and will then compile in Ada 2005
mode these Ada specs.
@ -22333,7 +22333,7 @@ procedure foo (variable : int);
@end smallexample
In some cases, the generated bindings will be more complete or more meaningful
when defining some macros, which you can do via the @option{-D} switch. this
when defining some macros, which you can do via the @option{-D} switch. This
is for example the case with @file{Xlib.h} under GNU/Linux:
@smallexample
@ -22347,7 +22347,7 @@ In other cases, it is not possible to parse a header file in a stand alone
manner, because other include files need to be included first. In this
case, the solution is to create a small header file including the needed
@code{#include} and possible @code{#define} directives. For example, to
generate Ada bindings for @file{readline/readlin.h}, you need to first
generate Ada bindings for @file{readline/readline.h}, you need to first
include @file{stdio.h}, so you can create a file with the following two
lines in e.g. @file{readline1.h}:
@ -22390,7 +22390,7 @@ Generate Ada spec files for the header files specified on the command line
only.
@item -C
@item @option{-C} (@command{gcc})
@cindex @option{-C} (@command{gcc})
Extract comments from headers and generate Ada comments in the Ada spec files.
@end table

View File

@ -4476,6 +4476,14 @@ package body Sem_Ch13 is
if Serious_Errors_Detected = 0
and then Known_Static_RM_Size (Source)
and then Known_Static_RM_Size (Target)
-- Don't do the check if warnings off for either type, note the
-- deliberate use of OR here instead of OR ELSE to get the flag
-- Warnings_Off_Used set for both types if appropriate.
and then not (Has_Warnings_Off (Source)
or
Has_Warnings_Off (Target))
then
Source_Siz := RM_Size (Source);
Target_Siz := RM_Size (Target);
@ -4568,6 +4576,20 @@ package body Sem_Ch13 is
begin
if Source_Align < Target_Align
and then not Is_Tagged_Type (D_Source)
-- Suppress warning if warnings suppressed on either
-- type or either designated type. Note the use of
-- OR here instead of OR ELSE. That is intentional,
-- we would like to set flag Warnings_Off_Used in
-- all types for which warnings are suppressed.
and then not (Has_Warnings_Off (D_Source)
or
Has_Warnings_Off (D_Target)
or
Has_Warnings_Off (Source)
or
Has_Warnings_Off (Target))
then
Error_Msg_Uint_1 := Target_Align;
Error_Msg_Uint_2 := Source_Align;
@ -4576,12 +4598,9 @@ package body Sem_Ch13 is
Error_Msg
("?alignment of & (^) is stricter than " &
"alignment of & (^)!", Eloc);
if All_Errors_Mode then
Error_Msg
("\?resulting access value may have invalid " &
"alignment!", Eloc);
end if;
Error_Msg
("\?resulting access value may have invalid " &
"alignment!", Eloc);
end if;
end;
end if;