aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2017-09-23 08:39:50 +0200
committerTristan Gingold <tgingold@free.fr>2017-09-25 18:32:45 +0200
commit8f43c1a9ce8c7660bf1bca6634c752e0a9ba3b3e (patch)
treeb0b558c93464430497cdc11c85898083577dfcb9 /src
parentaefc9a8fdfffab2fb32194263e7f4811422b4a56 (diff)
downloadghdl-8f43c1a9ce8c7660bf1bca6634c752e0a9ba3b3e.tar.gz
ghdl-8f43c1a9ce8c7660bf1bca6634c752e0a9ba3b3e.tar.bz2
ghdl-8f43c1a9ce8c7660bf1bca6634c752e0a9ba3b3e.zip
Make interfaces of implicitly defined subprograms visible.
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/sem_decls.adb12
-rw-r--r--src/vhdl/std_package.adb3
2 files changed, 15 insertions, 0 deletions
diff --git a/src/vhdl/sem_decls.adb b/src/vhdl/sem_decls.adb
index 8b22bf25d..a83059109 100644
--- a/src/vhdl/sem_decls.adb
+++ b/src/vhdl/sem_decls.adb
@@ -626,6 +626,7 @@ package body Sem_Decls is
Set_Type (Inter,
Std_Package.File_Open_Status_Type_Definition);
Set_Mode (Inter, Iir_Out_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
end case;
-- File F : FT
@@ -634,6 +635,7 @@ package body Sem_Decls is
Set_Identifier (Inter, Std_Names.Name_F);
Set_Type (Inter, Type_Definition);
Set_Mode (Inter, Iir_Inout_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
-- External_Name : in STRING
Inter := Create_Iir (Iir_Kind_Interface_Constant_Declaration);
@@ -641,6 +643,7 @@ package body Sem_Decls is
Set_Identifier (Inter, Std_Names.Name_External_Name);
Set_Type (Inter, Std_Package.String_Type_Definition);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
-- Open_Kind : in File_Open_Kind := Read_Mode.
Inter := Create_Iir (Iir_Kind_Interface_Constant_Declaration);
@@ -651,6 +654,7 @@ package body Sem_Decls is
Set_Default_Value
(Inter,
Build_Simple_Name (Std_Package.File_Open_Kind_Read_Mode, Loc));
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Compute_Subprogram_Hash (Proc);
-- Add it to the list.
@@ -671,6 +675,7 @@ package body Sem_Decls is
Set_Location (Inter, Loc);
Set_Type (Inter, Type_Definition);
Set_Mode (Inter, Iir_Inout_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Compute_Subprogram_Hash (Proc);
-- Add it to the list.
@@ -696,6 +701,7 @@ package body Sem_Decls is
Set_Location (Inter, Loc);
Set_Type (Inter, Type_Definition);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Inter := Create_Iir (Iir_Kind_Interface_Variable_Declaration);
Set_Identifier (Inter, Std_Names.Name_Value);
@@ -703,6 +709,7 @@ package body Sem_Decls is
Set_Subtype_Indication (Inter, Build_Simple_Name (Decl, Loc));
Set_Type (Inter, Type_Mark_Type);
Set_Mode (Inter, Iir_Out_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
if Get_Kind (Type_Mark_Type) in Iir_Kinds_Array_Type_Definition
and then Get_Constraint_State (Type_Mark_Type) /= Fully_Constrained
@@ -712,6 +719,7 @@ package body Sem_Decls is
Set_Location (Inter, Loc);
Set_Type (Inter, Std_Package.Natural_Subtype_Definition);
Set_Mode (Inter, Iir_Out_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Set_Implicit_Definition (Proc, Iir_Predefined_Read_Length);
else
@@ -736,6 +744,7 @@ package body Sem_Decls is
Set_Mode (Inter, Iir_Out_Mode);
Set_Name_Staticness (Inter, Locally);
Set_Expr_Staticness (Inter, None);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Inter := Create_Iir (Iir_Kind_Interface_Constant_Declaration);
Set_Identifier (Inter, Std_Names.Name_Value);
@@ -743,6 +752,7 @@ package body Sem_Decls is
Set_Subtype_Indication (Inter, Build_Simple_Name (Decl, Loc));
Set_Type (Inter, Type_Mark_Type);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Set_Implicit_Definition (Proc, Iir_Predefined_Write);
Compute_Subprogram_Hash (Proc);
@@ -764,6 +774,7 @@ package body Sem_Decls is
Set_Type (Inter, Type_Definition);
Set_Name_Staticness (Inter, Locally);
Set_Expr_Staticness (Inter, None);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Proc, Inter);
Set_Implicit_Definition (Proc, Iir_Predefined_Flush);
Compute_Subprogram_Hash (Proc);
@@ -782,6 +793,7 @@ package body Sem_Decls is
Set_Location (Inter, Loc);
Set_Type (Inter, Type_Definition);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Append (Last_Interface, Func, Inter);
Set_Return_Type (Func, Std_Package.Boolean_Type_Definition);
Set_Implicit_Definition (Func, Iir_Predefined_Endfile);
diff --git a/src/vhdl/std_package.adb b/src/vhdl/std_package.adb
index 0a6a847bf..63fb46286 100644
--- a/src/vhdl/std_package.adb
+++ b/src/vhdl/std_package.adb
@@ -339,6 +339,7 @@ package body Std_Package is
Set_Identifier (Inter, Std_Names.Name_Value);
Set_Type (Inter, Inter_Type);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Set_Interface_Declaration_Chain (Decl, Inter);
if Inter2_Id /= Null_Identifier then
@@ -346,6 +347,7 @@ package body Std_Package is
Set_Identifier (Inter2, Inter2_Id);
Set_Type (Inter2, Inter2_Type);
Set_Mode (Inter2, Iir_In_Mode);
+ Set_Visible_Flag (Inter2, True);
Set_Chain (Inter, Inter2);
end if;
@@ -371,6 +373,7 @@ package body Std_Package is
Set_Identifier (Inter, Std_Names.Name_S);
Set_Type (Inter, Inter_Type);
Set_Mode (Inter, Iir_In_Mode);
+ Set_Visible_Flag (Inter, True);
Set_Interface_Declaration_Chain (Decl, Inter);
Sem.Compute_Subprogram_Hash (Decl);