aboutsummaryrefslogtreecommitdiffstats
path: root/sem_types.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2014-01-04 01:53:37 +0100
committerTristan Gingold <tgingold@free.fr>2014-01-04 01:53:37 +0100
commit82c9bea16076114ff474defcc606db041ff0c5b0 (patch)
tree544c69f60d700b761cfdd9524629da1c75a12693 /sem_types.adb
parent7fd6fa6d4109a177a823c6c6f5ac3137977b075f (diff)
downloadghdl-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.adb12
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);