diff options
author | Eric Christopher <echristo@apple.com> | 2011-09-19 23:22:41 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2011-09-19 23:22:41 +0000 |
commit | f11750633d31a474b8092d7103f50ca5af275d8d (patch) | |
tree | 6c635335e5c14c8f5556b91bff582b856a3b0d47 /tools/llvmc/examples | |
parent | 9546de68aac116cdf6f0af5a2972101acc476e0c (diff) | |
download | external_llvm-f11750633d31a474b8092d7103f50ca5af275d8d.zip external_llvm-f11750633d31a474b8092d7103f50ca5af275d8d.tar.gz external_llvm-f11750633d31a474b8092d7103f50ca5af275d8d.tar.bz2 |
Remove llvmc and assorted build machinery for it.
The problems that llvmc solved have largely been subsumed with the
tasks that the clang driver can accomplish, but llvmc lacks flexibility
and depends too heavily on the EOL'd llvm-gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140093 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvmc/examples')
21 files changed, 0 insertions, 708 deletions
diff --git a/tools/llvmc/examples/CMakeLists.txt b/tools/llvmc/examples/CMakeLists.txt deleted file mode 100644 index 2ad8aa4..0000000 --- a/tools/llvmc/examples/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_subdirectory(Hello) -add_subdirectory(Simple) -add_subdirectory(mcc16) -add_subdirectory(Skeleton) diff --git a/tools/llvmc/examples/Hello/CMakeLists.txt b/tools/llvmc/examples/Hello/CMakeLists.txt deleted file mode 100644 index 5679924..0000000 --- a/tools/llvmc/examples/Hello/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -set(LLVM_USED_LIBS CompilerDriver) -set(LLVM_LINK_COMPONENTS support) - -add_llvm_example(Hello Hello.cpp) diff --git a/tools/llvmc/examples/Hello/Hello.cpp b/tools/llvmc/examples/Hello/Hello.cpp deleted file mode 100644 index 71f04fd..0000000 --- a/tools/llvmc/examples/Hello/Hello.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===- Hello.cpp - Example code from "Writing an LLVMC Plugin" ------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Shows how to write llvmc-based drivers without using TableGen. -// -//===----------------------------------------------------------------------===// - -#include "llvm/CompilerDriver/AutoGenerated.h" -#include "llvm/CompilerDriver/Main.inc" - -#include "llvm/Support/raw_ostream.h" - -namespace llvmc { -namespace autogenerated { - -int PreprocessOptions () { return 0; } - -int PopulateLanguageMap (LanguageMap&) { llvm::outs() << "Hello!\n"; return 0; } - -int PopulateCompilationGraph (CompilationGraph&) { return 0; } - -} -} diff --git a/tools/llvmc/examples/Hello/Makefile b/tools/llvmc/examples/Hello/Makefile deleted file mode 100644 index c281be6..0000000 --- a/tools/llvmc/examples/Hello/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -##===- tools/llvmc/examples/Hello/Makefile -----------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LEVEL = ../../../.. - -LLVMC_BASED_DRIVER = Hello - -include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/examples/Makefile b/tools/llvmc/examples/Makefile deleted file mode 100644 index 8468e93..0000000 --- a/tools/llvmc/examples/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -##===- tools/llvmc/examples/Makefile -----------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LEVEL=../../.. - -PARALLEL_DIRS := Hello Simple mcc16 Skeleton - -include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/examples/Simple/CMakeLists.txt b/tools/llvmc/examples/Simple/CMakeLists.txt deleted file mode 100644 index 8a401ea..0000000 --- a/tools/llvmc/examples/Simple/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -set(LLVM_TARGET_DEFINITIONS Simple.td) - -tablegen(Simple.inc -gen-llvmc) - -set(LLVM_USED_LIBS CompilerDriver) -set(LLVM_LINK_COMPONENTS support) - -add_llvm_example(Simple - Simple.cpp - ) diff --git a/tools/llvmc/examples/Simple/Makefile b/tools/llvmc/examples/Simple/Makefile deleted file mode 100644 index c10387c..0000000 --- a/tools/llvmc/examples/Simple/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -##===- llvmc/examples/Simple/Makefile ----------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LEVEL = ../../../.. - -LLVMC_BASED_DRIVER = Simple -BUILT_SOURCES = Simple.inc - -include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/examples/Simple/Simple.cpp b/tools/llvmc/examples/Simple/Simple.cpp deleted file mode 100644 index 8ac7313..0000000 --- a/tools/llvmc/examples/Simple/Simple.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "llvm/CompilerDriver/Main.inc" -#include "Simple.inc" diff --git a/tools/llvmc/examples/Simple/Simple.td b/tools/llvmc/examples/Simple/Simple.td deleted file mode 100644 index b47483b..0000000 --- a/tools/llvmc/examples/Simple/Simple.td +++ /dev/null @@ -1,41 +0,0 @@ -//===- Simple.td - A simple LLVMC-based driver ----------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// A simple LLVMC-based gcc wrapper. -// -// To compile, use this command: -// -// $ cd $LLVM_OBJ_DIR/tools/llvmc -// $ make BUILD_EXAMPLES=1 -// -// Run as: -// -// $ $LLVM_OBJ_DIR/$(BuildMode)/bin/Simple -// -// For instructions on how to build your own LLVMC-based driver, see -// the 'examples/Skeleton' directory. -//===----------------------------------------------------------------------===// - -include "llvm/CompilerDriver/Common.td" - -def gcc : Tool< -[(in_language "c"), - (out_language "executable"), - (output_suffix "out"), - (command "gcc"), - (sink), - - // -o is what is used by default, out_file_option here is included for - // instructive purposes. - (out_file_option "-o") -]>; - -def LanguageMap : LanguageMap<[(lang_to_suffixes "c", "c")]>; - -def CompilationGraph : CompilationGraph<[(edge "root", "gcc")]>; diff --git a/tools/llvmc/examples/Skeleton/AutoGenerated.td b/tools/llvmc/examples/Skeleton/AutoGenerated.td deleted file mode 100644 index 97483ce..0000000 --- a/tools/llvmc/examples/Skeleton/AutoGenerated.td +++ /dev/null @@ -1,7 +0,0 @@ -//===- AutoGenerated.td ------------------------------------*- tablegen -*-===// -// -// Write the TableGen description of your llvmc-based driver here. -// -//===----------------------------------------------------------------------===// - -include "llvm/CompilerDriver/Common.td" diff --git a/tools/llvmc/examples/Skeleton/CMakeLists.txt b/tools/llvmc/examples/Skeleton/CMakeLists.txt deleted file mode 100644 index e1296ca..0000000 --- a/tools/llvmc/examples/Skeleton/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -set(LLVM_TARGET_DEFINITIONS AutoGenerated.td) - -tablegen(AutoGenerated.inc -gen-llvmc) - -set(LLVM_USED_LIBS CompilerDriver) -set(LLVM_LINK_COMPONENTS support) - -add_llvm_example(llvmc-skeleton - Hooks.cpp - Main.cpp - ) diff --git a/tools/llvmc/examples/Skeleton/Hooks.cpp b/tools/llvmc/examples/Skeleton/Hooks.cpp deleted file mode 100644 index ddd38f6..0000000 --- a/tools/llvmc/examples/Skeleton/Hooks.cpp +++ /dev/null @@ -1,12 +0,0 @@ -//===--- Hooks.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open -// Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Hook definitions should go here. -// -//===----------------------------------------------------------------------===// diff --git a/tools/llvmc/examples/Skeleton/Main.cpp b/tools/llvmc/examples/Skeleton/Main.cpp deleted file mode 100644 index 24c7768..0000000 --- a/tools/llvmc/examples/Skeleton/Main.cpp +++ /dev/null @@ -1,15 +0,0 @@ -//===--- Main.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open -// Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Just include CompilerDriver/Main.inc and AutoGenerated.inc. -// -//===----------------------------------------------------------------------===// - -#include "llvm/CompilerDriver/Main.inc" -#include "AutoGenerated.inc" diff --git a/tools/llvmc/examples/Skeleton/Makefile b/tools/llvmc/examples/Skeleton/Makefile deleted file mode 100644 index 41ca823..0000000 --- a/tools/llvmc/examples/Skeleton/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -##===- llvmc/examples/Skeleton/Makefile --------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open -# Source License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -# Change this so that $(LEVEL)/Makefile.common refers to -# $LLVM_OBJ_DIR/Makefile.common or $YOUR_LLVM_BASED_PROJECT/Makefile.common. -export LEVEL = ../../../.. - -# Change this to the name of your LLVMC-based driver. -LLVMC_BASED_DRIVER = llvmc-skeleton - -# Change this to the name of .inc file built from your .td file. -BUILT_SOURCES = AutoGenerated.inc - -include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/examples/Skeleton/README b/tools/llvmc/examples/Skeleton/README deleted file mode 100644 index 282ee15..0000000 --- a/tools/llvmc/examples/Skeleton/README +++ /dev/null @@ -1,6 +0,0 @@ - -This is a template that can be used to create your own LLVMC-based drivers. Just -copy the `Skeleton` directory to the location of your preference and edit -`Skeleton/Makefile` and `Skeleton/AutoGenerated.td`. - -The build system assumes that your project is based on LLVM. diff --git a/tools/llvmc/examples/mcc16/CMakeLists.txt b/tools/llvmc/examples/mcc16/CMakeLists.txt deleted file mode 100644 index f9eeb03..0000000 --- a/tools/llvmc/examples/mcc16/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -set(LLVM_TARGET_DEFINITIONS PIC16.td) - -tablegen(PIC16.inc -gen-llvmc) - -set(LLVM_USED_LIBS CompilerDriver) -set(LLVM_LINK_COMPONENTS support) - -add_llvm_example(mcc16 - Hooks.cpp - Main.cpp - ) diff --git a/tools/llvmc/examples/mcc16/Hooks.cpp b/tools/llvmc/examples/mcc16/Hooks.cpp deleted file mode 100644 index bbb8438..0000000 --- a/tools/llvmc/examples/mcc16/Hooks.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include "llvm/Support/Path.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/raw_ostream.h" - -#include <string> -#include <locale> - -namespace llvmc { - extern const char *ProgramName; - - namespace autogenerated { - extern llvm::cl::opt<std::string> Parameter_p; - } -} - -using namespace llvm; -using namespace llvmc; - -// Returns the platform specific directory separator via #ifdefs. -// FIXME: This currently work on linux and windows only. It does not -// work on other unices. -static std::string GetDirSeparator() { -#if __linux__ || __APPLE__ - return "/"; -#else - return "\\"; -#endif -} - -namespace hooks { -// Get preprocessor define for the part. -// It is __partname format in lower case. -std::string -GetLowerCasePartDefine(void) { - std::locale loc; - std::string Partname; - if (autogenerated::Parameter_p.empty()) { - Partname = "16f1xxx"; - } else { - Partname = autogenerated::Parameter_p; - } - - std::string LowerCase; - for (unsigned i = 0; i < Partname.size(); i++) { - LowerCase.push_back(std::tolower(Partname[i], loc)); - } - - return "__" + LowerCase; -} - -std::string -GetUpperCasePartDefine(void) { - std::locale loc; - std::string Partname; - if (autogenerated::Parameter_p.empty()) { - Partname = "16f1xxx"; - } else { - Partname = autogenerated::Parameter_p; - } - - std::string UpperCase; - for (unsigned i = 0; i < Partname.size(); i++) { - UpperCase.push_back(std::toupper(Partname[i], loc)); - } - - return "__" + UpperCase; -} - -// Get the dir where c16 executables reside. -std::string GetBinDir() { - // Construct a Path object from the program name. - void *P = (void*) (intptr_t) GetBinDir; - sys::Path ProgramFullPath - = sys::Path::GetMainExecutable(llvmc::ProgramName, P); - - // Get the dir name for the program. It's last component should be 'bin'. - std::string BinDir = ProgramFullPath.getDirname(); - - // llvm::errs() << "BinDir: " << BinDir << '\n'; - return BinDir + GetDirSeparator(); -} - -// Get the Top-level Installation dir for c16. -std::string GetInstallDir() { - sys::Path BinDirPath = sys::Path(GetBinDir()); - - // Go one more level up to get the install dir. - std::string InstallDir = BinDirPath.getDirname(); - - return InstallDir + GetDirSeparator(); -} - -// Get the dir where the c16 header files reside. -std::string GetStdHeadersDir() { - return GetInstallDir() + "include"; -} - -// Get the dir where the assembler header files reside. -std::string GetStdAsmHeadersDir() { - return GetInstallDir() + "inc"; -} - -// Get the dir where the linker scripts reside. -std::string GetStdLinkerScriptsDir() { - return GetInstallDir() + "lkr"; -} - -// Get the dir where startup code, intrinsics and lib reside. -std::string GetStdLibsDir() { - return GetInstallDir() + "lib"; -} -} diff --git a/tools/llvmc/examples/mcc16/Main.cpp b/tools/llvmc/examples/mcc16/Main.cpp deleted file mode 100644 index 5d4992d..0000000 --- a/tools/llvmc/examples/mcc16/Main.cpp +++ /dev/null @@ -1,57 +0,0 @@ -//===--- Main.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open -// Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Usually this file just includes CompilerDriver/Main.inc, but here we apply -// some trickery to make the built-in '-save-temps' option hidden and enable -// '--temp-dir' by default. -// -//===----------------------------------------------------------------------===// - -#include "llvm/CompilerDriver/BuiltinOptions.h" -#include "llvm/CompilerDriver/Main.h" - -#include "llvm/Support/Path.h" -#include "llvm/Config/config.h" - -#include <iostream> - -#include "PIC16.inc" - -namespace { - -// Modify the PACKAGE_VERSION to use build number in top level configure file. -void PIC16VersionPrinter(void) { - std::cout << "MPLAB C16 1.0 " << PACKAGE_VERSION << "\n"; -} - -} - -int main(int argc, char** argv) { - - // HACK - SaveTemps.setHiddenFlag(llvm::cl::Hidden); - TempDirname.setHiddenFlag(llvm::cl::Hidden); - Languages.setHiddenFlag(llvm::cl::Hidden); - DryRun.setHiddenFlag(llvm::cl::Hidden); - - llvm::cl::SetVersionPrinter(PIC16VersionPrinter); - - // Ask for a standard temp dir, but just cache its basename., and delete it. - llvm::sys::Path tempDir; - tempDir = llvm::sys::Path::GetTemporaryDirectory(); - TempDirname = tempDir.getBasename(); - tempDir.eraseFromDisk(true); - - // We are creating a temp dir in current dir, with the cached name. - // But before that remove if one already exists with that name.. - tempDir = TempDirname; - tempDir.eraseFromDisk(true); - - return llvmc::Main(argc, argv); -} diff --git a/tools/llvmc/examples/mcc16/Makefile b/tools/llvmc/examples/mcc16/Makefile deleted file mode 100644 index 4409cff..0000000 --- a/tools/llvmc/examples/mcc16/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -##===- llvmc/examples/mcc16/Makefile -----------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LEVEL = ../../../.. - -LLVMC_BASED_DRIVER = mcc16 -BUILT_SOURCES = PIC16.inc - -include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/examples/mcc16/PIC16.td b/tools/llvmc/examples/mcc16/PIC16.td deleted file mode 100644 index 6f04196..0000000 --- a/tools/llvmc/examples/mcc16/PIC16.td +++ /dev/null @@ -1,234 +0,0 @@ -//===- PIC16.td - PIC16 toolchain driver -------------------*- tablegen -*-===// -// -// A basic driver for the PIC16 toolchain. -// -//===----------------------------------------------------------------------===// - -include "llvm/CompilerDriver/Common.td" - -// Options - -def OptionList : OptionList<[ - (switch_option "g", - (help "Enable Debugging")), - (switch_option "E", - (help "Stop after preprocessing, do not compile")), - (switch_option "S", - (help "Stop after compilation, do not assemble")), - (switch_option "bc", - (help "Stop after b-code generation, do not compile")), - (switch_option "c", - (help "Stop after assemble, do not link")), - (prefix_option "p", - (help "Specify part name")), - (prefix_list_option "I", - (help "Add a directory to include path")), - (prefix_list_option "L", - (help "Add a directory to library path")), - (prefix_list_option "K", - (help "Add a directory to linker script search path")), - (parameter_option "l", - (help "Specify a library to link")), - (parameter_option "k", - (help "Specify a linker script")), - (parameter_option "m", - (help "Generate linker map file with the given name")), - (prefix_list_option "D", - (help "Define a macro")), - (switch_option "X", - (help "Do not invoke mp2hex to create an output hex file.")), - (switch_option "O0", - (help "Do not optimize")), - (switch_option "O1", - (help "Optimization Level 1.")), - (switch_option "O2", - (help "Optimization Level 2.")), - (switch_option "O3", - (help "Optimization Level 3.")), - (switch_option "Od", - (help "Perform Debug-safe Optimizations only.")), - (switch_option "w", - (help "Disable all warnings.")), -// (switch_option "O1", -// (help "Optimization level 1")), -// (switch_option "O2", -// (help "Optimization level 2. (Default)")), -// (parameter_option "pre-RA-sched", -// (help "Example of an option that is passed to llc")), - (parameter_option "regalloc", - (help "Register allocator to use (possible values: simple, linearscan, pbqp, local; default=linearscan)")), - (prefix_list_option "Wa,", (comma_separated), - (help "Pass options to assembler (Run 'gpasm -help' for assembler options)")), - (prefix_list_option "Wl,", (comma_separated), - (help "Pass options to linker (Run 'mplink -help' for linker options)")) -// (prefix_list_option "Wllc,", -// (help "Pass options to llc")), -// (prefix_list_option "Wo,", -// (help "Pass options to llvm-ld")) -]>; - -// Tools -class clang_based<string language, string cmd, string ext_E> : Tool< -[(in_language language), - (out_language "llvm-bitcode"), - (output_suffix "bc"), - (command cmd), - (actions (case - (and (multiple_input_files), - (or (switch_on "S"), (switch_on "c"))), - (error "cannot specify -o with -c or -S with multiple files"), - (switch_on "E"), [(forward "E"), - (stop_compilation), (output_suffix ext_E)], - (and (switch_on "E"), (empty "o")), (no_out_file), - (switch_on "bc"),[(stop_compilation), (output_suffix "bc")], - (switch_on "g"), (append_cmd "-g"), - (switch_on "w"), (append_cmd "-w"), - (switch_on "O1"), (append_cmd ""), - (switch_on "O2"), (append_cmd ""), - (switch_on "O3"), (append_cmd ""), - (switch_on "Od"), (append_cmd ""), - (not_empty "D"), (forward "D"), - (not_empty "I"), (forward "I"), - (switch_on "O0"), (append_cmd "-O0"), - (default), (append_cmd "-O1"))) -// (sink) -]>; - -def clang_cc : clang_based<"c", "$CALL(GetBinDir)clang -cc1 -I $CALL(GetStdHeadersDir) -D $CALL(GetLowerCasePartDefine) -D $CALL(GetUpperCasePartDefine) -triple=pic16- -emit-llvm-bc ", "i">; - -//def clang_cc : Tool<[ -// (in_language "c"), -// (out_language "llvm-bitcode"), -// (output_suffix "bc"), -// (cmd_line "$CALL(GetBinDir)clang-cc -I $CALL(GetStdHeadersDir) -triple=pic16- -emit-llvm-bc "), -// (cmd_line kkkkk -// (actions (case -// (switch_on "g"), (append_cmd "g"), -// (not_empty "I"), (forward "I"))), -// (sink) -//]>; - - -// pre-link-and-lto step. -def llvm_ld : Tool<[ - (in_language "llvm-bitcode"), - (out_language "llvm-bitcode"), - (output_suffix "bc"), - (command "$CALL(GetBinDir)llvm-ld -L $CALL(GetStdLibsDir) -disable-licm-promotion -l std"), - (out_file_option "-b"), - (actions (case - (switch_on "O0"), (append_cmd "-disable-opt"), - (switch_on "O1"), (append_cmd "-disable-opt"), -// Whenever O3 is not specified on the command line, default i.e. disable-inlining will always be added. - (switch_on "O2"), (append_cmd ""), - (switch_on "O3"), (append_cmd ""), - (default), (append_cmd "-disable-inlining"))), - (join) -]>; - -// optimize single file -def llvm_ld_optimizer : Tool<[ - (in_language "llvm-bitcode"), - (out_language "llvm-bitcode"), - (output_suffix "bc"), -// FIXME: we are still not disabling licm-promotion. -// -disable-licm-promotion and building stdn library causes c16-71 to fail. - (command "$CALL(GetBinDir)llvm-ld "), - (out_file_option "-b"), - (actions (case - (switch_on "O0"), (append_cmd "-disable-opt"), - (switch_on "O1"), (append_cmd "-disable-opt"), -// Whenever O3 is not specified on the command line, default i.e. disable-inlining will always be added. - (switch_on "O2"), (append_cmd ""), - (switch_on "O3"), (append_cmd ""), - (default), (append_cmd "-disable-inlining"))) -]>; - -// optimizer step. -def pic16passes : Tool<[ - (in_language "llvm-bitcode"), - (out_language "llvm-bitcode"), - (output_suffix "obc"), - (command "$CALL(GetBinDir)opt -pic16cloner -pic16overlay -f"), - (actions (case - (switch_on "O0"), (append_cmd "-disable-opt"))) -]>; - -def llc : Tool<[ - (in_language "llvm-bitcode"), - (out_language "assembler"), - (output_suffix "s"), - (command "$CALL(GetBinDir)llc -march=pic16 -disable-jump-tables -pre-RA-sched=list-burr -f"), - (actions (case - (switch_on "S"), (stop_compilation), -// (not_empty "Wllc,"), (unpack_values "Wllc,"), -// (not_empty "pre-RA-sched"), (forward "pre-RA-sched"))) - (not_empty "regalloc"), (forward "regalloc"), - (empty "regalloc"), (append_cmd "-regalloc=linearscan"))) -]>; - -def gpasm : Tool<[ - (in_language "assembler"), - (out_language "object-code"), - (output_suffix "o"), - (command "$CALL(GetBinDir)gpasm -z -r decimal -I $CALL(GetStdAsmHeadersDir) -C -c -w 2"), - (actions (case - (switch_on "c"), (stop_compilation), - (switch_on "g"), (append_cmd "-g"), - (not_empty "p"), (forward "p"), - (empty "p"), (append_cmd "-p 16f1xxx"), - (not_empty "Wa,"), (forward_value "Wa,"))) -]>; - -def mplink : Tool<[ - (in_language "object-code"), - (out_language "executable"), - (output_suffix "cof"), - (command "$CALL(GetBinDir)mplink -e -k $CALL(GetStdLinkerScriptsDir) -l $CALL(GetStdLibsDir) intrinsics.lib stdn.lib"), - (actions (case - (not_empty "Wl,"), (forward_value "Wl,"), - (switch_on "X"), (append_cmd "-x"), - (not_empty "L"), (forward_as "L", "-l"), - (not_empty "K"), (forward_as "K", "-k"), - (not_empty "m"), (forward "m"), - (not_empty "p"), [(forward "p"), (append_cmd "-c")], - (empty "p"), (append_cmd "-p 16f1xxx -c"), -// (not_empty "l"), [(unpack_values "l"),(append_cmd ".lib")])), - (not_empty "k"), (forward "k"), - (not_empty "l"), (forward "l"))), - (join) -]>; - -// Language map - -def LanguageMap : LanguageMap<[ - (lang_to_suffixes "c", "c"), - (lang_to_suffixes "c-cpp-output", "i"), - (lang_to_suffixes "assembler", "s"), - (lang_to_suffixes "assembler-with-cpp", "S"), - (lang_to_suffixes "llvm-assembler", "ll"), - (lang_to_suffixes "llvm-bitcode", "bc"), - (lang_to_suffixes "object-code", "o"), - (lang_to_suffixes "executable", "cof") -]>; - -// Compilation graph - -def CompilationGraph : CompilationGraph<[ - (edge "root", "clang_cc"), - (edge "root", "llvm_ld"), - (optional_edge "root", "llvm_ld_optimizer", - (case (switch_on "S"), (inc_weight), - (switch_on "c"), (inc_weight))), - (edge "root", "gpasm"), - (edge "root", "mplink"), - (edge "clang_cc", "llvm_ld"), - (optional_edge "clang_cc", "llvm_ld_optimizer", - (case (switch_on "S"), (inc_weight), - (switch_on "c"), (inc_weight))), - (edge "llvm_ld", "pic16passes"), - (edge "llvm_ld_optimizer", "pic16passes"), - (edge "pic16passes", "llc"), - (edge "llc", "gpasm"), - (edge "gpasm", "mplink") -]>; diff --git a/tools/llvmc/examples/mcc16/README b/tools/llvmc/examples/mcc16/README deleted file mode 100644 index 6d2b73d..0000000 --- a/tools/llvmc/examples/mcc16/README +++ /dev/null @@ -1,75 +0,0 @@ -This is a basic compiler driver for the PIC16 toolchain that shows how to create -your own llvmc-based drivers. It is based on the examples/Skeleton template. - -The PIC16 toolchain looks like this: - -clang-cc (FE) -> llvm-ld (optimizer) -> llc (codegen) -> native-as -> native-ld - -Following features were requested by Sanjiv: - -From: Sanjiv Gupta <sanjiv.gupta <at> microchip.com> -Subject: Re: llvmc for PIC16 -Newsgroups: gmane.comp.compilers.llvm.devel -Date: 2009-06-05 06:51:14 GMT - -The salient features that we want to have in the driver are: -1. llvm-ld will be used as "The Optimizer". -2. If the user has specified to generate the final executable, then -llvm-ld should run on all the .bc files generated by clang and create a -single optimized .bc file for further tools. -3. -Wo <options> - pass optimizations to the llvm-ld -4. mcc16 -Wl <options> - pass options to native linker. -5. mcc16 -Wa <options> - pass options to native assembler. - -Here are some example command lines and sample command invocations as to -what should be done. - -$ mcc16 -S foo.c -// [clang-cc foo.c] -> foo.bc -// [llvm-ld foo.bc] -> foo.opt.bc -// [llc foo.opt.bc] -> foo.s - -$ mcc16 -S foo.c bar.c -// [clang-cc foo.c] -> foo.bc -// [llvm-ld foo.bc] -> foo.opt.bc -// [llc foo.opt.bc] -> foo.s -// [clang-cc bar.c] -> bar.bc -// [llvm-ld bar.bc] -> bar.opt.bc -// [llc bar.opt.bc] -> bar.s - -** Use of -g causes llvm-ld to run with -disable-opt -$ mcc16 -S -g foo.c -// [clang-cc foo.c] -> foo.bc -// [llvm-ld -disable-opt foo.bc] -> foo.opt.bc -// [llc foo.opt.bc] -> foo.s - -** -I is passed to clang-cc, -pre-RA-sched=list-burr to llc. -$ mcc16 -S -g -I ../include -pre-RA-sched=list-burr foo.c -// [clang-cc -I ../include foo.c] -> foo.bc -// [llvm-ld -disable-opt foo.bc] -> foo.opt.bc -// [llc -pre-RA-sched=list-burr foo.opt.bc] -> foo.s - -** -Wo passes options to llvm-ld -$ mcc16 -Wo=opt1,opt2 -S -I ../include -pre-RA-sched=list-burr foo.c -// [clang-cc -I ../include foo.c] -> foo.bc -// [llvm-ld -opt1 -opt2 foo.bc] -> foo.opt.bc -// [llc -pre-RA-sched=list-burr foo.opt.bc] -> foo.s - -** -Wa passes options to native as. -$ mcc16 -c foo.c -Wa=opt1 -// [clang-cc foo.c] -> foo.bc -// [llvm-ld foo.bc] -> foo.opt.bc -// [llc foo.opt.bc] -> foo.s -// [native-as -opt1 foo.s] -> foo.o - -$ mcc16 -Wo=opt1 -Wl=opt2 -Wa=opt3 foo.c bar.c -// [clang-cc foo.c] -> foo.bc -// [clang-cc bar.c] -> bar.bc -// [llvm-ld -opt1 foo.bc bar.bc] -> a.out.bc -// [llc a.out.bc] -> a.out.s -// [native-as -opt3 a.out.s] -> a.out.o -// [native-ld -opt2 a.out.o] -> a.out - -Is this achievable by a tablegen based driver ? - -- Sanjiv |