aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2020-03-13 21:07:56 +0100
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 13:12:06 -0300
commit047a918d5fbd636aaae21da466da04f1d7df236a (patch)
tree4d5394b2bed5d0e46cbf1b3810866913583038ae /gcc
parent32dfb125ddfb3defa60836e6af1211dfd4df8924 (diff)
downloadgcc-047a918d5fbd636aaae21da466da04f1d7df236a.zip
gcc-047a918d5fbd636aaae21da466da04f1d7df236a.tar.gz
gcc-047a918d5fbd636aaae21da466da04f1d7df236a.tar.bz2
[Ada] Skip unnecessary iterations over constraint expressions
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch3.adb (Build_Constrained_Array_Type, Build_Constrained_Discriminated_Type): Skip unnecessary loop iterations.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_ch3.adb5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 026bcef..ccb0ea9 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -13093,7 +13093,7 @@ package body Sem_Ch3 is
Scop : Entity_Id;
begin
- -- if the original access type was not embedded in the enclosing
+ -- If the original access type was not embedded in the enclosing
-- type definition, there is no need to produce a new access
-- subtype. In fact every access type with an explicit constraint
-- generates an itype whose scope is the enclosing record.
@@ -13192,6 +13192,7 @@ package body Sem_Ch3 is
Is_Discriminant (Hi_Expr)
then
Need_To_Create_Itype := True;
+ exit;
end if;
Next_Index (Old_Index);
@@ -13248,6 +13249,7 @@ package body Sem_Ch3 is
if Is_Discriminant (Expr) then
Need_To_Create_Itype := True;
+ exit;
-- After expansion of discriminated task types, the value
-- of the discriminant may be converted to a run-time type
@@ -13259,6 +13261,7 @@ package body Sem_Ch3 is
and then Is_Discriminant (Expression (Expr))
then
Need_To_Create_Itype := True;
+ exit;
end if;
Next_Elmt (Old_Constraint);