diff options
author | Tristan Gingold <tgingold@free.fr> | 2014-01-04 01:53:37 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2014-01-04 01:53:37 +0100 |
commit | 82c9bea16076114ff474defcc606db041ff0c5b0 (patch) | |
tree | 544c69f60d700b761cfdd9524629da1c75a12693 /sem_types.adb | |
parent | 7fd6fa6d4109a177a823c6c6f5ac3137977b075f (diff) | |
download | ghdl-82c9bea16076114ff474defcc606db041ff0c5b0.tar.gz ghdl-82c9bea16076114ff474defcc606db041ff0c5b0.tar.bz2 ghdl-82c9bea16076114ff474defcc606db041ff0c5b0.zip |
sem_discrete_range_expression: be sure the range is discrete.
Allow attribute specifications on statements in entities.
(and a couples of minor crashes).
Diffstat (limited to 'sem_types.adb')
-rw-r--r-- | sem_types.adb | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sem_types.adb b/sem_types.adb index d7cd35190..2bf032b78 100644 --- a/sem_types.adb +++ b/sem_types.adb @@ -492,7 +492,7 @@ package body Sem_Types is -- body. Open_Declarative_Region; - Sem_Decls.Sem_Declaration_Chain (Decl, False); + Sem_Decls.Sem_Declaration_Chain (Decl); El := Get_Declaration_Chain (Decl); while El /= Null_Iir loop case Get_Kind (El) is @@ -613,7 +613,7 @@ package body Sem_Types is Add_Protected_Type_Declarations (Decl); end if; - Sem_Decls.Sem_Declaration_Chain (Bod, False); + Sem_Decls.Sem_Declaration_Chain (Bod); El := Get_Declaration_Chain (Bod); while El /= Null_Iir loop @@ -1093,6 +1093,9 @@ package body Sem_Types is when Iir_Kind_Integer_Type_Definition | Iir_Kind_Integer_Subtype_Definition => Sub_Type := Create_Iir (Iir_Kind_Integer_Subtype_Definition); + when Iir_Kind_Floating_Type_Definition + | Iir_Kind_Floating_Subtype_Definition => + Sub_Type := Create_Iir (Iir_Kind_Floating_Subtype_Definition); when others => raise Internal_Error; end case; @@ -1559,7 +1562,7 @@ package body Sem_Types is begin Res := Create_Iir (Iir_Kind_Record_Subtype_Definition); Location_Copy (Res, Def); - Set_Base_Type (Res, Type_Mark); + Set_Base_Type (Res, Get_Base_Type (Type_Mark)); Set_Type_Staticness (Res, Get_Type_Staticness (Type_Mark)); Set_Type_Mark (Res, Type_Mark); if Get_Kind (Type_Mark) = Iir_Kind_Record_Subtype_Definition then @@ -1785,8 +1788,7 @@ package body Sem_Types is if A_Range = Null_Iir then A_Range := Get_Range_Constraint (Type_Mark); else - A_Range := Sem_Discrete_Range_Expression - (A_Range, Type_Mark, True); + A_Range := Sem_Range_Expression (A_Range, Type_Mark, True); if A_Range = Null_Iir then -- Avoid error propagation. A_Range := Get_Range_Constraint (Type_Mark); |