summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/sem_names.adb15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/vhdl/sem_names.adb b/src/vhdl/sem_names.adb
index 897abef..66bd048 100644
--- a/src/vhdl/sem_names.adb
+++ b/src/vhdl/sem_names.adb
@@ -885,6 +885,7 @@ package body Sem_Names is
Index_Type : Iir;
Prefix : Iir;
Prefix_Name : Iir;
+ Staticness : Iir_Staticness;
begin
-- LRM93 14.1
-- Parameter: A locally static expression of type universal_integer, the
@@ -985,7 +986,19 @@ package body Sem_Names is
-- A globally static array subtype is a constrained array subtype
-- formed by imposing on an unconstrained array type a globally static
-- index constraint.
- Set_Expr_Staticness (Attr, Get_Type_Staticness (Prefix_Type));
+
+ Staticness := Get_Type_Staticness (Prefix_Type);
+
+ -- In relaxed mode, also consider that globally static expressions have
+ -- a globally static subtype.
+ if Is_Type_Name (Prefix_Name) = Null_Iir
+ and then Staticness = None
+ and then (Flag_Relaxed_Rules or Vhdl_Std = Vhdl_93c)
+ then
+ Staticness := Iir_Staticness'Max (Globally,
+ Get_Expr_Staticness (Prefix));
+ end if;
+ Set_Expr_Staticness (Attr, Staticness);
end Finish_Sem_Array_Attribute;
procedure Finish_Sem_Scalar_Type_Attribute