aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-02-09 17:15:27 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-12 12:38:37 +0000
commitc97014ce88150584689a2ae9a95d8a40115e0423 (patch)
tree9cc707ab4055e6aeddca6949ea370ce16bdd258d
parent9da379f1c220740c236ccfe223af5b435fe72284 (diff)
downloadgcc-c97014ce88150584689a2ae9a95d8a40115e0423.zip
gcc-c97014ce88150584689a2ae9a95d8a40115e0423.tar.gz
gcc-c97014ce88150584689a2ae9a95d8a40115e0423.tar.bz2
[Ada] Accept raise expressions as operands of boolean operators
This patch restores the previous behaviour of a recently rewritten routine Sem_Ch4.Find_Boolean_Types for boolean operators where one of the operands is a raise-expression, e.g.: (raise Program_Error or else (X /= Y)) This change is required for the Entity field of the "or else" operator to be set. For GNAT it doesn't matter, but GNATprove requires this field to be set. The affected call sequence starts at Find_Boolean_Types, goes via Check_Right_Argument and Check_Boolean_Pair to Valid_Boolean_Arg, which ultimately guards a call to Add_One_Interp. gcc/ada/ * sem_type.adb (Valid_Boolean_Arg): Operands of Raise_Type are valid boolean arguments.
-rw-r--r--gcc/ada/sem_type.adb1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb
index 4476ea9..e947296 100644
--- a/gcc/ada/sem_type.adb
+++ b/gcc/ada/sem_type.adb
@@ -3507,6 +3507,7 @@ package body Sem_Type is
or else Is_Modular_Integer_Type (T)
or else T = Universal_Integer
or else T = Any_Composite
+ or else T = Raise_Type
then
return True;