rpms/ghdl/devel ghdl-svn71.patch,1.1,1.2
Thomas M. Sailer (sailer)
fedora-extras-commits at redhat.com
Thu Oct 5 09:56:34 UTC 2006
Author: sailer
Update of /cvs/extras/rpms/ghdl/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21737
Modified Files:
ghdl-svn71.patch
Log Message:
add forgotten new file to the svn71 patch
ghdl-svn71.patch:
Index: ghdl-svn71.patch
===================================================================
RCS file: /cvs/extras/rpms/ghdl/devel/ghdl-svn71.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ghdl-svn71.patch 5 Oct 2006 09:41:47 -0000 1.1
+++ ghdl-svn71.patch 5 Oct 2006 09:56:34 -0000 1.2
@@ -2368,7 +2368,7 @@
Use synthetizer rules for default bindings
diff -urN ghdl-0.25/vhdl/Makefile.in ghdl-0.26dev/vhdl/Makefile.in
--- ghdl-0.25/vhdl/Makefile.in 2006-08-11 05:16:14.000000000 +0200
-+++ ghdl-0.26dev/vhdl/Makefile.in 2006-10-05 11:38:11.000000000 +0200
++++ ghdl-0.26dev/vhdl/Makefile.in 2006-10-05 11:55:15.000000000 +0200
@@ -520,6 +520,9 @@
i386.o: $(GRTSRCDIR)/config/i386.S
$(CC) -c $(GRT_FLAGS) -o $@ $<
@@ -2727,6 +2727,190 @@
- Add_Element (Driver_List, Get_Longuest_Static_Prefix (Sig));
end Sem_Add_Driver;
end Sem_Stmts;
+diff -urN ghdl-0.25/vhdl/trans_analyzes.adb ghdl-0.26dev/vhdl/trans_analyzes.adb
+--- ghdl-0.25/vhdl/trans_analyzes.adb 1970-01-01 01:00:00.000000000 +0100
++++ ghdl-0.26dev/vhdl/trans_analyzes.adb 2006-10-05 11:35:23.000000000 +0200
+@@ -0,0 +1,163 @@
++with Iirs_Utils; use Iirs_Utils;
++with Iirs_Walk; use Iirs_Walk;
++with Disp_Vhdl;
++with Ada.Text_IO;
++with Errorout;
++
++package body Trans_Analyzes is
++ Driver_List : Iir_List;
++
++ Has_After : Boolean;
++ function Extract_Driver_Target (Target : Iir) return Walk_Status
++ is
++ Base : Iir;
++ Prefix : Iir;
++ begin
++ Base := Get_Object_Prefix (Target);
++ -- Assigment to subprogram interface does not create a driver.
++ if Get_Kind (Base) = Iir_Kind_Signal_Interface_Declaration
++ and then
++ Get_Kind (Get_Parent (Base)) = Iir_Kind_Procedure_Declaration
++ then
++ return Walk_Continue;
++ end if;
++
++ Prefix := Get_Longuest_Static_Prefix (Target);
++ Add_Element (Driver_List, Prefix);
++ if Has_After then
++ Set_After_Drivers_Flag (Base, True);
++ end if;
++ return Walk_Continue;
++ end Extract_Driver_Target;
++
++ function Extract_Driver_Stmt (Stmt : Iir) return Walk_Status
++ is
++ Status : Walk_Status;
++ We : Iir;
++ begin
++ case Get_Kind (Stmt) is
++ when Iir_Kind_Signal_Assignment_Statement =>
++ We := Get_Waveform_Chain (Stmt);
++ if We /= Null_Iir
++ and then Get_Chain (We) = Null_Iir
++ and then Get_Time (We) = Null_Iir
++ and then Get_Kind (Get_We_Value (We)) /= Iir_Kind_Null_Literal
++ then
++ Has_After := False;
++ else
++ Has_After := True;
++ end if;
++ Status := Walk_Assignment_Target
++ (Get_Target (Stmt), Extract_Driver_Target'Access);
++ when Iir_Kind_Procedure_Call_Statement =>
++ declare
++ Call : Iir;
++ Assoc : Iir;
++ Formal : Iir;
++ Inter : Iir;
++ begin
++ -- Very pessimist.
++ Has_After := True;
++
++ Call := Get_Procedure_Call (Stmt);
++ Assoc := Get_Parameter_Association_Chain (Call);
++ Inter := Get_Interface_Declaration_Chain
++ (Get_Implementation (Call));
++ while Assoc /= Null_Iir loop
++ Formal := Get_Formal (Assoc);
++ if Formal = Null_Iir then
++ Formal := Inter;
++ Inter := Get_Chain (Inter);
++ else
++ Formal := Get_Base_Name (Formal);
++ end if;
++ if Get_Kind (Assoc)
++ = Iir_Kind_Association_Element_By_Expression
++ and then
++ Get_Kind (Formal) = Iir_Kind_Signal_Interface_Declaration
++ and then Get_Mode (Formal) /= Iir_In_Mode
++ then
++ Status := Extract_Driver_Target (Get_Actual (Assoc));
++ end if;
++ Assoc := Get_Chain (Assoc);
++ end loop;
++ end;
++ when others =>
++ null;
++ end case;
++ return Walk_Continue;
++ end Extract_Driver_Stmt;
++
++ procedure Extract_Drivers_Sequential_Stmt_Chain (Chain : Iir)
++ is
++ Status : Walk_Status;
++ begin
++ Status := Walk_Sequential_Stmt_Chain (Chain, Extract_Driver_Stmt'Access);
++ end Extract_Drivers_Sequential_Stmt_Chain;
++
++ procedure Extract_Drivers_Declaration_Chain (Chain : Iir)
++ is
++ Decl : Iir := Chain;
++ begin
++ while Decl /= Null_Iir loop
++
++ -- Only procedures and impure functions may contain assignment.
++ if Get_Kind (Decl) = Iir_Kind_Procedure_Body
++ or else (Get_Kind (Decl) = Iir_Kind_Function_Body
++ and then
++ Get_Pure_Flag (Get_Subprogram_Specification (Decl)))
++ then
++ Extract_Drivers_Declaration_Chain (Get_Declaration_Chain (Decl));
++ Extract_Drivers_Sequential_Stmt_Chain
++ (Get_Sequential_Statement_Chain (Decl));
++ end if;
++
++ Decl := Get_Chain (Decl);
++ end loop;
++ end Extract_Drivers_Declaration_Chain;
++
++ function Extract_Drivers (Proc : Iir) return Iir_List
++ is
++ begin
++ Driver_List := Create_Iir_List;
++ Extract_Drivers_Declaration_Chain (Get_Declaration_Chain (Proc));
++ Extract_Drivers_Sequential_Stmt_Chain
++ (Get_Sequential_Statement_Chain (Proc));
++
++ return Driver_List;
++ end Extract_Drivers;
++
++ procedure Free_Drivers_List (List : in out Iir_List)
++ is
++ El : Iir;
++ begin
++ for I in Natural loop
++ El := Get_Nth_Element (List, I);
++ exit when El = Null_Iir;
++ Set_After_Drivers_Flag (Get_Base_Name (El), False);
++ end loop;
++ Destroy_Iir_List (List);
++ end Free_Drivers_List;
++
++ procedure Dump_Drivers (Proc : Iir; List : Iir_List)
++ is
++ use Ada.Text_IO;
++ use Errorout;
++ El : Iir;
++ begin
++ Put_Line ("List of drivers for " & Disp_Node (Proc) & ":");
++ Put_Line (" (declared at " & Disp_Location (Proc) & ")");
++ for I in Natural loop
++ El := Get_Nth_Element (List, I);
++ exit when El = Null_Iir;
++ if Get_After_Drivers_Flag (Get_Base_Name (El)) then
++ Put ("* ");
++ else
++ Put (" ");
++ end if;
++ Disp_Vhdl.Disp_Vhdl (El);
++ New_Line;
++ end loop;
++ end Dump_Drivers;
++
++end Trans_Analyzes;
+diff -urN ghdl-0.25/vhdl/trans_analyzes.ads ghdl-0.26dev/vhdl/trans_analyzes.ads
+--- ghdl-0.25/vhdl/trans_analyzes.ads 1970-01-01 01:00:00.000000000 +0100
++++ ghdl-0.26dev/vhdl/trans_analyzes.ads 2006-10-05 11:35:23.000000000 +0200
+@@ -0,0 +1,13 @@
++with Iirs; use Iirs;
++
++package Trans_Analyzes is
++ -- Extract a list of drivers from PROC.
++ function Extract_Drivers (Proc : Iir) return Iir_List;
++
++ -- Free the list.
++ procedure Free_Drivers_List (List : in out Iir_List);
++
++ -- Dump list of drivers (LIST) for process PROC.
++ procedure Dump_Drivers (Proc : Iir; List : Iir_List);
++
++end Trans_Analyzes;
diff -urN ghdl-0.25/vhdl/trans_be.adb ghdl-0.26dev/vhdl/trans_be.adb
--- ghdl-0.25/vhdl/trans_be.adb 2006-08-02 05:57:46.000000000 +0200
+++ ghdl-0.26dev/vhdl/trans_be.adb 2006-10-05 11:35:23.000000000 +0200
More information about the scm-commits
mailing list