diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2024-04-03 13:25:04 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-06-10 11:04:00 +0200 |
commit | d97f81d35583b0a7e16e91355d01b860c1d4fbaf (patch) | |
tree | e9f62d9e16548bd1c6745b705329aaa800ab2f20 /gcc | |
parent | 8a27ded7923a7a6d1cd310b93358481803c3f4ba (diff) | |
download | gcc-d97f81d35583b0a7e16e91355d01b860c1d4fbaf.zip gcc-d97f81d35583b0a7e16e91355d01b860c1d4fbaf.tar.gz gcc-d97f81d35583b0a7e16e91355d01b860c1d4fbaf.tar.bz2 |
ada: Tune code related to potentially unevaluated expressions
Code cleanup; semantics is unaffected.
gcc/ada/
* sem_util.adb
(Immediate_Context_Implies_Is_Potentially_Unevaluated): Use
collective subtypes in membership tests.
(Is_Known_On_Entry): Require all alternatives in a case statement
to return; this change could prevent a recently fixed glitch,
where one of the alternatives relied on the return statement
afterwards (also, the new code is shorter).
* sem_util.ads (Is_Potentially_Unevaluated): Clarify that this
routine applies to Ada 2012.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sem_util.adb | 8 | ||||
-rw-r--r-- | gcc/ada/sem_util.ads | 2 |
2 files changed, 4 insertions, 6 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 241be3d..5bea088 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -19485,10 +19485,10 @@ package body Sem_Util is elsif Nkind (Par) = N_Case_Expression then return Expr /= Expression (Par); - elsif Nkind (Par) in N_And_Then | N_Or_Else then + elsif Nkind (Par) in N_Short_Circuit then return Expr = Right_Opnd (Par); - elsif Nkind (Par) in N_In | N_Not_In then + elsif Nkind (Par) in N_Membership_Test then -- If the membership includes several alternatives, only the first -- is definitely evaluated. @@ -30880,10 +30880,8 @@ package body Sem_Util is return True; when others => - null; + return False; end case; - - return False; end Is_Known_On_Entry; end Conditional_Evaluation; diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index 4fef896..f282d1f 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -2219,7 +2219,7 @@ package Sem_Util is -- type be partially initialized. function Is_Potentially_Unevaluated (N : Node_Id) return Boolean; - -- Predicate to implement definition given in RM 6.1.1 (20/3) + -- Predicate to implement definition given in RM 2012 6.1.1 (20/3) function Is_Potentially_Persistent_Type (T : Entity_Id) return Boolean; -- Determines if type T is a potentially persistent type. A potentially |