From 994cb1d7a6bc09e5adf3667b00e78aeca8f06f3a Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sat, 8 Dec 2018 07:17:47 +0100 Subject: update_record_constraint: minor refactoring. --- src/vhdl/sem_expr.adb | 3 +-- src/vhdl/sem_types.adb | 18 ++++++++---------- src/vhdl/sem_types.ads | 4 ++-- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/vhdl/sem_expr.adb b/src/vhdl/sem_expr.adb index 7009411c6..60c2408d3 100644 --- a/src/vhdl/sem_expr.adb +++ b/src/vhdl/sem_expr.adb @@ -3190,8 +3190,7 @@ package body Sem_Expr is end if; Staticness := Min (Staticness, Get_Type_Staticness (Rec_El_Type)); - Constraint := Sem_Types.Update_Record_Constraint (Constraint, - Rec_El_Type); + Sem_Types.Update_Record_Constraint (Constraint, Rec_El_Type); end loop; Set_Type_Staticness (Rec_Type, Staticness); Set_Constraint_State (Rec_Type, Constraint); diff --git a/src/vhdl/sem_types.adb b/src/vhdl/sem_types.adb index 74c111ed0..ec802b31c 100644 --- a/src/vhdl/sem_types.adb +++ b/src/vhdl/sem_types.adb @@ -739,23 +739,21 @@ package body Sem_Types is -- - [...] -- - It is a record subtype and each element subtype either is not a -- composite subtype or is a fully constrained composite subtype. - function Update_Record_Constraint - (Constraint : Iir_Constraint; El_Type : Iir) return Iir_Constraint is + procedure Update_Record_Constraint + (Constraint : in out Iir_Constraint; El_Type : Iir) is begin if Get_Kind (El_Type) not in Iir_Kinds_Composite_Type_Definition then - return Constraint; + return; end if; case Constraint is when Fully_Constrained | Unconstrained => - if Get_Constraint_State (El_Type) = Constraint then - return Constraint; - else - return Partially_Constrained; + if Get_Constraint_State (El_Type) /= Constraint then + Constraint := Partially_Constrained; end if; when Partially_Constrained => - return Partially_Constrained; + Constraint := Partially_Constrained; end case; end Update_Record_Constraint; @@ -896,7 +894,7 @@ package body Sem_Types is Resolved_Flag and Get_Resolved_Flag (El_Type); Type_Staticness := Min (Type_Staticness, Get_Type_Staticness (El_Type)); - Constraint := Update_Record_Constraint (Constraint, El_Type); + Update_Record_Constraint (Constraint, El_Type); else Type_Staticness := None; end if; @@ -2084,7 +2082,7 @@ package body Sem_Types is Set_Element_Position (El, Get_Element_Position (Tm_El)); end if; Set_Nth_Element (El_List, I, El); - Constraint := Update_Record_Constraint (Constraint, El_Type); + Update_Record_Constraint (Constraint, El_Type); Staticness := Min (Staticness, Get_Type_Staticness (El_Type)); end loop; Set_Constraint_State (Res, Constraint); diff --git a/src/vhdl/sem_types.ads b/src/vhdl/sem_types.ads index 715a1199b..4fe6020af 100644 --- a/src/vhdl/sem_types.ads +++ b/src/vhdl/sem_types.ads @@ -58,8 +58,8 @@ package Sem_Types is -- Return the constraint state from CONST (the initial state) and EL_TYPE, -- as if ATYPE was a new element of a record. - function Update_Record_Constraint - (Constraint : Iir_Constraint; El_Type : Iir) return Iir_Constraint; + procedure Update_Record_Constraint + (Constraint : in out Iir_Constraint; El_Type : Iir); -- Although a nature is not a type, it is patterned like a type. function Sem_Subnature_Indication (Def: Iir) return Iir; -- cgit v1.2.3