From 6d809ee2e64d5033b62db219f86707e30babe381 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Fri, 22 May 2015 21:15:40 +0200 Subject: Restore relaxed semantic for array attribute staticness. --- src/vhdl/sem_names.adb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src') 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 -- cgit