summaryrefslogtreecommitdiff
path: root/translate/trans_be.adb
diff options
context:
space:
mode:
Diffstat (limited to 'translate/trans_be.adb')
-rw-r--r--translate/trans_be.adb182
1 files changed, 0 insertions, 182 deletions
diff --git a/translate/trans_be.adb b/translate/trans_be.adb
deleted file mode 100644
index dd1b6c3..0000000
--- a/translate/trans_be.adb
+++ /dev/null
@@ -1,182 +0,0 @@
--- Back-end for translation.
--- Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
---
--- GHDL is free software; you can redistribute it and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation; either version 2, or (at your option) any later
--- version.
---
--- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
--- WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with GCC; see the file COPYING. If not, write to the Free
--- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--- 02111-1307, USA.
-with Iirs; use Iirs;
-with Disp_Tree;
-with Disp_Vhdl;
-with Sem;
-with Canon;
-with Translation;
-with Errorout; use Errorout;
-with Post_Sems;
-with Flags;
-with Ada.Text_IO;
-with Back_End;
-
-package body Trans_Be is
- procedure Finish_Compilation
- (Unit : Iir_Design_Unit; Main : Boolean := False)
- is
- use Ada.Text_IO;
- Lib : Iir;
- begin
- -- No need to semantize during elaboration.
- --if Flags.Will_Elaborate then
- -- return;
- --end if;
-
- Lib := Get_Library_Unit (Unit);
-
- if (Main or Flags.Dump_All) and then Flags.Dump_Parse then
- Disp_Tree.Disp_Tree (Unit);
- end if;
-
- -- Semantic analysis.
- if Flags.Verbose then
- Put_Line ("semantize " & Disp_Node (Lib));
- end if;
- Sem.Semantic (Unit);
-
- if (Main or Flags.Dump_All) and then Flags.Dump_Sem then
- Disp_Tree.Disp_Tree (Unit);
- end if;
-
- if Errorout.Nbr_Errors > 0 then
- raise Compilation_Error;
- end if;
-
- if (Main or Flags.List_All) and then Flags.List_Sem then
- Disp_Vhdl.Disp_Vhdl (Unit);
- end if;
-
- -- Post checks
- ----------------
-
- Post_Sems.Post_Sem_Checks (Unit);
-
- if Errorout.Nbr_Errors > 0 then
- raise Compilation_Error;
- end if;
-
- -- Canonalisation.
- ------------------
- if Flags.Verbose then
- Put_Line ("canonicalize " & Disp_Node (Lib));
- end if;
-
- Canon.Canonicalize (Unit);
-
- if (Main or Flags.Dump_All) and then Flags.Dump_Canon then
- Disp_Tree.Disp_Tree (Unit);
- end if;
-
- if Errorout.Nbr_Errors > 0 then
- raise Compilation_Error;
- end if;
-
- if (Main or Flags.List_All) and then Flags.List_Canon then
- Disp_Vhdl.Disp_Vhdl (Unit);
- end if;
-
- if Flags.Flag_Elaborate then
- if Get_Kind (Lib) = Iir_Kind_Architecture_Body then
- declare
- Config : Iir_Design_Unit;
- begin
- Config := Canon.Create_Default_Configuration_Declaration (Lib);
- Set_Default_Configuration_Declaration (Lib, Config);
- if (Main or Flags.Dump_All) and then Flags.Dump_Canon then
- Disp_Tree.Disp_Tree (Config);
- end if;
- if (Main or Flags.List_All) and then Flags.List_Canon then
- Disp_Vhdl.Disp_Vhdl (Config);
- end if;
- end;
- end if;
-
- -- Do not translate during elaboration.
- -- This is done directly in Translation.Chap12.
- return;
- end if;
-
- -- Translation
- ---------------
- if not Main then
- -- Main units (those from the analyzed design file) are translated
- -- directly by ortho_front.
-
- Translation.Translate (Unit, Main);
-
- if Errorout.Nbr_Errors > 0 then
- raise Compilation_Error;
- end if;
- end if;
-
- end Finish_Compilation;
-
- procedure Sem_Foreign (Decl : Iir)
- is
- use Translation;
- Fi : Foreign_Info_Type;
- pragma Unreferenced (Fi);
- begin
- case Get_Kind (Decl) is
- when Iir_Kind_Architecture_Body =>
- Error_Msg_Sem ("FOREIGN architectures are not yet handled", Decl);
- when Iir_Kind_Procedure_Declaration
- | Iir_Kind_Function_Declaration =>
- null;
- when others =>
- Error_Kind ("sem_foreign", Decl);
- end case;
- -- Let is generate error messages.
- Fi := Translate_Foreign_Id (Decl);
- end Sem_Foreign;
-
- function Parse_Option (Opt : String) return Boolean is
- begin
- if Opt = "--dump-drivers" then
- Translation.Flag_Dump_Drivers := True;
- elsif Opt = "--no-direct-drivers" then
- Translation.Flag_Direct_Drivers := False;
- elsif Opt = "--no-range-checks" then
- Translation.Flag_Range_Checks := False;
- elsif Opt = "--no-index-checks" then
- Translation.Flag_Index_Checks := False;
- elsif Opt = "--no-identifiers" then
- Translation.Flag_Discard_Identifiers := True;
- else
- return False;
- end if;
- return True;
- end Parse_Option;
-
- procedure Disp_Option
- is
- procedure P (Str : String) renames Ada.Text_IO.Put_Line;
- begin
- P (" --dump-drivers dump processes drivers");
- end Disp_Option;
-
- procedure Register_Translation_Back_End is
- begin
- Back_End.Finish_Compilation := Finish_Compilation'Access;
- Back_End.Sem_Foreign := Sem_Foreign'Access;
- Back_End.Parse_Option := Parse_Option'Access;
- Back_End.Disp_Option := Disp_Option'Access;
- end Register_Translation_Back_End;
-end Trans_Be;