aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_util.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 17:35:25 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 17:35:25 +0200
commit316a0661918aacd3cc0acca417b5390ad1e3d535 (patch)
tree48433199b635c0174dbcc09d37dc391d03fde3a5 /gcc/ada/sem_util.adb
parent1e88210d7fff339ded2a3562b49498d835c8ecf8 (diff)
downloadgcc-316a0661918aacd3cc0acca417b5390ad1e3d535.zip
gcc-316a0661918aacd3cc0acca417b5390ad1e3d535.tar.gz
gcc-316a0661918aacd3cc0acca417b5390ad1e3d535.tar.bz2
[multiple changes]
2011-08-02 Yannick Moy <moy@adacore.com> * sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_prag.adb, sem.ads, sem_util.adb, sem_util.ads, sem_res.adb, sem_ch2.adb, sem_ch4.adb, sem_ch6.adb, sem_ch11.adb: Add semantic flag In_Pre_Post_Expression to indicate that we are in a precondition or postcondition. This is used in Mark_Non_ALFA_Subprogram (renaming of Mark_Non_ALFA_Subprogram_Body) to decide whether to flag the spec or body of the current subprogram as not in ALFA. 2011-08-02 Fabien Chouteau <chouteau@adacore.com> * impunit.adb: Add Ada.Execution_Time.Interrupts in the Ada2012 package list. * a-extiin.ads: New file. 2011-08-02 Bob Duff <duff@adacore.com> * a-direct.adb (Rename): Implement AI05-0231-1. In particular, Rename now raises Name_Error instead of Use_Error in certain cases. The other parts of this AI were already implemented properly. From-SVN: r177187
Diffstat (limited to 'gcc/ada/sem_util.adb')
-rw-r--r--gcc/ada/sem_util.adb36
1 files changed, 22 insertions, 14 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 3977846..a9a9100 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -141,7 +141,7 @@ package body Sem_Util is
-- T is a derived tagged type. Check whether the type extension is null.
-- If the parent type is fully initialized, T can be treated as such.
- procedure Mark_Non_ALFA_Subprogram_Body_Unconditional;
+ procedure Mark_Non_ALFA_Subprogram_Unconditional;
-- Perform the action for Mark_Non_ALFA_Subprogram_Body, which allows the
-- latter to be small and inlined.
@@ -2315,34 +2315,42 @@ package body Sem_Util is
end if;
end Current_Subprogram;
- -----------------------------------
- -- Mark_Non_ALFA_Subprogram_Body --
- -----------------------------------
+ ------------------------------
+ -- Mark_Non_ALFA_Subprogram --
+ ------------------------------
- procedure Mark_Non_ALFA_Subprogram_Body is
+ procedure Mark_Non_ALFA_Subprogram is
begin
-- Isolate marking of the current subprogram body so that the body of
- -- Mark_Non_ALFA_Subprogram_Body is small and inlined.
+ -- Mark_Non_ALFA_Subprogram is small and inlined.
if ALFA_Mode then
- Mark_Non_ALFA_Subprogram_Body_Unconditional;
+ Mark_Non_ALFA_Subprogram_Unconditional;
end if;
- end Mark_Non_ALFA_Subprogram_Body;
+ end Mark_Non_ALFA_Subprogram;
- -------------------------------------------------
- -- Mark_Non_ALFA_Subprogram_Body_Unconditional --
- -------------------------------------------------
+ --------------------------------------------
+ -- Mark_Non_ALFA_Subprogram_Unconditional --
+ --------------------------------------------
- procedure Mark_Non_ALFA_Subprogram_Body_Unconditional is
+ procedure Mark_Non_ALFA_Subprogram_Unconditional is
Cur_Subp : constant Entity_Id := Current_Subprogram;
begin
if Present (Cur_Subp)
and then (Is_Subprogram (Cur_Subp)
or else Is_Generic_Subprogram (Cur_Subp))
then
- Set_Body_Is_In_ALFA (Cur_Subp, False);
+ -- If the non-ALFA construct is in a precondition or postcondition,
+ -- then mark the subprogram as not in ALFA. Otherwise, mark the
+ -- subprogram body as not in ALFA.
+
+ if In_Pre_Post_Expression then
+ Set_Is_In_ALFA (Cur_Subp, False);
+ else
+ Set_Body_Is_In_ALFA (Cur_Subp, False);
+ end if;
end if;
- end Mark_Non_ALFA_Subprogram_Body_Unconditional;
+ end Mark_Non_ALFA_Subprogram_Unconditional;
---------------------
-- Defining_Entity --