diff options
| -rw-r--r-- | evaluation.adb | 15 | ||||
| -rw-r--r-- | iirs.adb | 7 | ||||
| -rw-r--r-- | iirs.ads | 6 | ||||
| -rw-r--r-- | sem_expr.adb | 61 | ||||
| -rw-r--r-- | sem_names.adb | 4 | ||||
| -rw-r--r-- | simulate/execution.adb | 1 | ||||
| -rw-r--r-- | translate/translation.adb | 1 | 
7 files changed, 24 insertions, 71 deletions
| diff --git a/evaluation.adb b/evaluation.adb index 1815c2b7c..d6ce74555 100644 --- a/evaluation.adb +++ b/evaluation.adb @@ -1717,15 +1717,11 @@ package body Evaluation is        Val : Iir;     begin        case Get_Kind (Expr) is -         when Iir_Kind_Integer_Literal => -            return Expr; -         when Iir_Kind_Enumeration_Literal => -            return Expr; -         when Iir_Kind_Floating_Point_Literal => -            return Expr; -         when Iir_Kind_String_Literal => -            return Expr; -         when Iir_Kind_Bit_String_Literal => +         when Iir_Kind_Integer_Literal +           | Iir_Kind_Enumeration_Literal +           | Iir_Kind_Floating_Point_Literal +           | Iir_Kind_String_Literal +           | Iir_Kind_Bit_String_Literal =>              return Expr;           when Iir_Kind_Physical_Int_Literal =>              if Get_Unit_Name (Expr) @@ -2049,6 +2045,7 @@ package body Evaluation is              end;           when Iir_Kind_Simple_Name +           | Iir_Kind_Character_Literal             | Iir_Kind_Selected_Name =>              declare                 Res : Iir; @@ -2548,7 +2548,8 @@ package body Iirs is     procedure Check_Kind_For_Base_Name (Target : Iir) is     begin        case Get_Kind (Target) is -         when Iir_Kind_Attribute_Value +         when Iir_Kind_Character_Literal +           | Iir_Kind_Attribute_Value             | Iir_Kind_Operator_Symbol             | Iir_Kind_Free_Quantity_Declaration             | Iir_Kind_Across_Quantity_Declaration @@ -5794,7 +5795,8 @@ package body Iirs is     procedure Check_Kind_For_Named_Entity (Target : Iir) is     begin        case Get_Kind (Target) is -         when Iir_Kind_Operator_Symbol +         when Iir_Kind_Character_Literal +           | Iir_Kind_Operator_Symbol             | Iir_Kind_Simple_Name             | Iir_Kind_Selected_Name             | Iir_Kind_Selected_By_All_Name @@ -5822,6 +5824,7 @@ package body Iirs is     begin        case Get_Kind (Target) is           when Iir_Kind_Error +           | Iir_Kind_Character_Literal             | Iir_Kind_Integer_Literal             | Iir_Kind_Floating_Point_Literal             | Iir_Kind_Null_Literal @@ -203,6 +203,12 @@ package Iirs is     --   Get/Set_Identifier (Field3)     --     --   Get/Set_Type (Field1) +   -- +   --   Get/Set_Named_Entity (Field4) +   -- +   --   Get/Set_Base_Name (Field5) +   -- +   --   Get/Set_Expr_Staticness (State1)     -- Iir_Kind_String_Literal (Short)     -- Iir_Kind_Bit_String_Literal (Medium) diff --git a/sem_expr.adb b/sem_expr.adb index 2bf2fd51e..ce8d7f2f6 100644 --- a/sem_expr.adb +++ b/sem_expr.adb @@ -31,12 +31,6 @@ with Sem_Assocs; use Sem_Assocs;  with Xrefs; use Xrefs;  package body Sem_Expr is -   procedure Undeclared (Expr: Iir) is -   begin -      Error_Msg_Sem ("identifier '" & Iirs_Utils.Image_Identifier (Expr) -                     & "' not declared", Expr); -   end Undeclared; -     procedure Not_Match (Expr: Iir; A_Type: Iir)     is        pragma Inline (Not_Match); @@ -3564,6 +3558,7 @@ package body Sem_Expr is                | Iir_Kind_Physical_Fp_Literal                | Iir_Kind_String_Literal                | Iir_Kind_Bit_String_Literal +              | Iir_Kind_Character_Literal                | Iir_Kind_Integer_Literal                | Iir_Kind_Floating_Point_Literal                | Iir_Kind_Null_Literal @@ -3689,61 +3684,9 @@ package body Sem_Expr is        end if;        case Get_Kind (Expr) is -         when Iir_Kind_Character_Literal => -            declare -               Interpretation: Name_Interpretation_Type; -               Decl: Iir; -               List: Iir_List; -            begin -               Interpretation := Get_Interpretation (Get_Identifier (Expr)); - -               -- Check the identifier was declared. -               if not Valid_Interpretation (Interpretation) then -                  Undeclared (Expr); -                  return Null_Iir; -               end if; - -               if not Valid_Interpretation -                 (Get_Next_Interpretation (Interpretation)) -               then -                  Decl := Get_Non_Alias_Declaration (Interpretation); -                  if A_Type /= Null_Iir and then A_Type = Get_Type (Decl) then -                     --  Free overload list of expr (if any), and expr. -                     Replace_Type (Expr, Null_Iir); -                     Iirs_Utils.Free_Name (Expr); -                     return Decl; -                  end if; -               end if; - -               -- Character literal can only be an enumeration literal. -               if A_Type /= Null_Iir then -                  while Valid_Interpretation (Interpretation) loop -                     Decl := Get_Non_Alias_Declaration (Interpretation); -                     if Get_Type (Decl) = A_Type then -                        Replace_Type (Expr, Null_Iir); -                        Iirs_Utils.Free_Name (Expr); -                        return Decl; -                     end if; -                     Interpretation := -                       Get_Next_Interpretation (Interpretation); -                  end loop; -                  Not_Match (Expr, A_Type); -                  return Null_Iir; -               end if; - -               -- Store overloaded interpretation. -               List := Create_Iir_List; -               while Valid_Interpretation (Interpretation) loop -                  Decl := Get_Non_Alias_Declaration (Interpretation); -                  Append_Element (List, Get_Type (Decl)); -                  Interpretation := Get_Next_Interpretation (Interpretation); -               end loop; -               Set_Type (Expr, Create_Overload_List (List)); -               return Expr; -            end; -           when Iir_Kind_Selected_Name             | Iir_Kind_Simple_Name +           | Iir_Kind_Character_Literal             | Iir_Kind_Parenthesis_Name             | Iir_Kind_Selected_By_All_Name             | Iir_Kind_Attribute_Name => diff --git a/sem_names.adb b/sem_names.adb index ac62bef14..960868f4f 100644 --- a/sem_names.adb +++ b/sem_names.adb @@ -1328,7 +1328,7 @@ package body Sem_Names is     --  The evaluation of a simple name has no other effect than to determine     --  the named entity denoted by the name.     -- -   --  NAME may be a string literal too. +   --  NAME may be a simple name, a strig literal or a character literal.     --  GHDL: set interpretation of NAME (possibly an overload list) or     --  error_mark for unknown names.     --  If SOFT is TRUE, then no error message is reported in case of failure. @@ -3067,6 +3067,7 @@ package body Sem_Names is        case Get_Kind (Name) is           when Iir_Kind_Simple_Name +           | Iir_Kind_Character_Literal             | Iir_Kind_Operator_Symbol =>              --  String_Literal may be a symbol_operator.              Sem_Simple_Name (Name, Keep_Alias, False); @@ -3367,6 +3368,7 @@ package body Sem_Names is        Xref_Name (Name);        case Get_Kind (Name) is           when Iir_Kind_Simple_Name +           | Iir_Kind_Character_Literal             | Iir_Kind_Selected_Name =>              --Set_Base_Name (Name, Get_Base_Name (Expr));              Set_Type (Name, Get_Type (Expr)); diff --git a/simulate/execution.adb b/simulate/execution.adb index a3a29d485..18407ed2a 100644 --- a/simulate/execution.adb +++ b/simulate/execution.adb @@ -2854,6 +2854,7 @@ package body Execution is              return Execute_Name (Block, Expr);           when Iir_Kind_Simple_Name +           | Iir_Kind_Character_Literal             | Iir_Kind_Selected_Name =>              return Execute_Expression (Block, Get_Named_Entity (Expr)); diff --git a/translate/translation.adb b/translate/translation.adb index 8836281f6..a949692ca 100644 --- a/translate/translation.adb +++ b/translate/translation.adb @@ -16884,6 +16884,7 @@ package body Translation is                 Res := Chap14.Translate_Path_Instance_Name_Attribute (Expr);              when Iir_Kind_Simple_Name +              | Iir_Kind_Character_Literal                | Iir_Kind_Selected_Name =>                 return Translate_Expression (Get_Named_Entity (Expr), Rtype); | 
