This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Tested on i686-linux, committed on HEAD
This update modifies pragma Assertion_Policy so that it affects only
pragma Assert and not pragma Debug, which seems closer to the intent
of the new Ada 2005 pragma. It also introduces a new analogous pragma
Debug_Policy to control activation of pragma Debug,
The following set of five programs tests this feature:
with text_io; use text_io;
procedure p is
function atest return boolean is
begin
put_line ("assert active");
return true;
end;
begin
put_line ("start");
pragma debug (put_line ("debug active"));
pragma assert (atest);
put_line ("end");
end;
pragma assertion_policy (ignore);
with text_io; use text_io;
procedure paoff is
function atest return boolean is
begin
put_line ("assert active");
return true;
end;
begin
put_line ("start");
pragma debug (put_line ("debug active"));
pragma assert (atest);
put_line ("end");
end;
pragma assertion_policy (check);
with text_io; use text_io;
procedure paon is
function atest return boolean is
begin
put_line ("assert active");
return true;
end;
begin
put_line ("start");
pragma debug (put_line ("debug active"));
pragma assert (atest);
put_line ("end");
end;
pragma debug_policy (ignore);
with text_io; use text_io;
procedure pdoff is
function atest return boolean is
begin
put_line ("assert active");
return true;
end;
begin
put_line ("start");
pragma debug (put_line ("debug active"));
pragma assert (atest);
put_line ("end");
end;
pragma debug_policy (check);
with text_io; use text_io;
procedure pdon is
function atest return boolean is
begin
put_line ("assert active");
return true;
end;
begin
put_line ("start");
pragma debug (put_line ("debug active"));
pragma assert (atest);
put_line ("end");
end;
with the test script:
gnatmake -f -q p.adb
p
gnatmake -f -q p.adb -gnata
p
gnatmake -f -q paon.adb
paon
gnatmake -f -q paon.adb -gnata
paon
gnatmake -f -q paoff.adb
paoff
gnatmake -f -q paoff.adb -gnata
paoff
gnatmake -f -q pdon.adb
pdon
gnatmake -f -q pdon.adb -gnata
pdon
gnatmake -f -q pdoff.adb
pdoff
gnatmake -f -q pdoff.adb -gnata
pdoff
should generate the following output:
start
end
start
debug active
assert active
end
start
assert active
end
start
debug active
assert active
end
start
end
start
debug active
end
start
debug active
end
start
debug active
assert active
end
start
end
start
assert active
end
Also modify -gnatg mode to set Ada 2005 mode explicitely.
We don't want to rely on the implicit setting here, since for example,
we want Preelaborate_05 treated as Preelaborate.
2005-09-01 Robert Dewar <dewar@adacore.com>
* opt.ads, opt.adb: Add new switches Debug_Pragmas_Enabled[_Config]
* par-prag.adb: Implement new pragma Debug_Policy
* sem_prag.adb Implement new pragma Debug_Policy
(Analyze_Pragma, case Pack): do not let pragma Pack override an explicit
Component_Size attribute specification. Give warning for ignored pragma
Pack.
* snames.h, snames.ads, snames.adb: Introduce entries in
Preset_Names for Name_Disp_Asynchronous_Select,
Name_Disp_Conditional_Select, Name_Disp_Get_Prim_Op_Kind,
Name_Disp_Timed_Select.
New pragma Debug_Policy
* switch-c.adb (Scan_Front_End_Switches): Set Ada 2005 mode
explicitly.
Switch -gnata also sets Debug_Pragmas_Enabled
* sem.adb, par.adb (Set_Opt_Config_Switch): Add parameter Main_Unit to
handle an explicit -gnata when compiling predefined files.
Attachment:
difs.27
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |