[llvm-commits] [llvm] r95530 - in /llvm/trunk/tools/llvmc/example/mcc16: driver/Main.cpp plugins/PIC16Base/PIC16Base.td plugins/PIC16Base/PluginMain.cpp

Sanjiv Gupta sanjiv.gupta at microchip.com
Sun Feb 7 21:56:37 PST 2010


Author: sgupta
Date: Sun Feb  7 23:56:37 2010
New Revision: 95530

URL: http://llvm.org/viewvc/llvm-project?rev=95530&view=rev
Log:
Add uppercase and lowercase part defines in driver.
Use a temp dir with a unique name in the current dir itself.
Use forward_value instead of unpack_values.


Modified:
    llvm/trunk/tools/llvmc/example/mcc16/driver/Main.cpp
    llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td
    llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp

Modified: llvm/trunk/tools/llvmc/example/mcc16/driver/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc/example/mcc16/driver/Main.cpp?rev=95530&r1=95529&r2=95530&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc/example/mcc16/driver/Main.cpp (original)
+++ llvm/trunk/tools/llvmc/example/mcc16/driver/Main.cpp Sun Feb  7 23:56:37 2010
@@ -37,10 +37,16 @@
   DryRun.setHiddenFlag(llvm::cl::Hidden);
 
   llvm::cl::SetVersionPrinter(PIC16VersionPrinter); 
-  
-  TempDirname = "tmp-objs";
 
-  // Remove the temp dir if already exists.
+  // 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..
+
   llvm::sys::Path tempDir;
   tempDir = TempDirname;
   tempDir.eraseFromDisk(true);

Modified: llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td?rev=95530&r1=95529&r2=95530&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td (original)
+++ llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td Sun Feb  7 23:56:37 2010
@@ -47,15 +47,24 @@
     (help "Optimization Level 3.")),
  (switch_option "Od",
     (help "Perform Debug-safe Optimizations only.")),
- (switch_option "r",
-    (help "Use resource file for part info"),
-    (really_hidden)),
+ (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 = pbqp)")),
- (prefix_list_option "Wa,",
+    (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,",
+ (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
@@ -75,6 +84,7 @@
                 (switch_on "E"), [(stop_compilation), (output_suffix ext_E)],
                 (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 ""),
@@ -83,9 +93,22 @@
                 (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) -triple=pic16-                                       -emit-llvm-bc ", "i">;
+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.
@@ -93,12 +116,12 @@
  (in_language "llvm-bitcode"),
  (out_language "llvm-bitcode"),
  (output_suffix "bc"),
- (cmd_line "$CALL(GetBinDir)llvm-ld -L $CALL(GetStdLibsDir) -instcombine -disable-licm-promotion $INFILE -b $OUTFILE -l std"),
+ (cmd_line "$CALL(GetBinDir)llvm-ld -L $CALL(GetStdLibsDir) -disable-gvn -disable-licm-promotion -disable-mem2reg $INFILE -b $OUTFILE -l std"),
  (actions (case
           (switch_on "O0"), (append_cmd "-disable-opt"),
           (switch_on "O1"), (append_cmd "-disable-opt"),
-          (switch_on "O2"), (append_cmd ""), 
 // 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)
@@ -109,9 +132,16 @@
  (in_language "llvm-bitcode"),
  (out_language "llvm-bitcode"),
  (output_suffix "bc"),
- (cmd_line "$CALL(GetBinDir)llvm-ld -instcombine -disable-inlining                   $INFILE -b $OUTFILE"),
+// FIXME: we are still not disabling licm-promotion.
+// -disable-licm-promotion and building stdn library causes c16-71 to fail.
+ (cmd_line "$CALL(GetBinDir)llvm-ld -disable-gvn -disable-mem2reg                              $INFILE -b $OUTFILE"),
  (actions (case
-          (switch_on "O0"), (append_cmd "-disable-opt")))
+          (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.
@@ -119,7 +149,7 @@
  (in_language "llvm-bitcode"),
  (out_language "llvm-bitcode"),
  (output_suffix "obc"),
- (cmd_line "$CALL(GetBinDir)opt -pic16overlay $INFILE -f -o $OUTFILE"),
+ (cmd_line "$CALL(GetBinDir)opt -pic16cg -pic16overlay $INFILE -f -o $OUTFILE"),
  (actions (case
           (switch_on "O0"), (append_cmd "-disable-opt")))
 ]>;
@@ -131,19 +161,20 @@
  (cmd_line "$CALL(GetBinDir)llc -march=pic16 -disable-jump-tables -pre-RA-sched=list-burr -f $INFILE -o $OUTFILE"),
  (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=pbqp")))
+         (empty "regalloc"), (append_cmd "-regalloc=linearscan")))
 ]>;
 
 def gpasm : Tool<[
  (in_language "assembler"),
  (out_language "object-code"),
  (output_suffix "o"),
- (cmd_line "$CALL(GetBinDir)gpasm -r decimal -I $CALL(GetStdAsmHeadersDir) -C -c -w 2 $INFILE -o $OUTFILE"),
+ (cmd_line "$CALL(GetBinDir)gpasm -z -r decimal -I $CALL(GetStdAsmHeadersDir) -C -c -w 2 $INFILE -o $OUTFILE"),
  (actions (case
           (switch_on "c"), (stop_compilation),
           (switch_on "g"), (append_cmd "-g"),
-          (switch_on "r"), (append_cmd "-z"),
           (not_empty "p"), (forward "p"),
           (empty "p"), (append_cmd "-p 16f1xxx"),
           (not_empty "Wa,"), (forward_value "Wa,")))
@@ -153,18 +184,18 @@
  (in_language "object-code"),
  (out_language "executable"),
  (output_suffix "cof"),
- (cmd_line "$CALL(GetBinDir)mplink -k $CALL(GetStdLinkerScriptsDir) -l $CALL(GetStdLibsDir) intrinsics.lib stdn.lib $INFILE -o $OUTFILE"),
+ (cmd_line "$CALL(GetBinDir)mplink -e -k $CALL(GetStdLinkerScriptsDir) -l $CALL(GetStdLibsDir) intrinsics.lib stdn.lib $INFILE -o $OUTFILE"),
  (actions (case
           (not_empty "Wl,"), (forward_value "Wl,"),
-          (switch_on "r"), (append_cmd "-e"),
           (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 "k"), (forward_value "k"),
-          (not_empty "l"), (forward_value "l"))),
+//          (not_empty "l"), [(unpack_values "l"),(append_cmd ".lib")])),
+          (not_empty "k"), (forward "k"),
+          (not_empty "l"), (forward "l"))),
  (join)
 ]>;
 

Modified: llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp?rev=95530&r1=95529&r2=95530&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp (original)
+++ llvm/trunk/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp Sun Feb  7 23:56:37 2010
@@ -9,6 +9,8 @@
   extern char *ProgramName;
 }
 
+  
+
 // Returns the platform specific directory separator via #ifdefs.
 // FIXME: This currently work on linux and windows only. It does not 
 // work on other unices. 
@@ -21,6 +23,43 @@
 }
 
 namespace hooks {
+// Get preprocessor define for the part.
+// It is __partname format in lower case.
+std::string
+GetLowerCasePartDefine(void) {
+  std::string Partname;
+  if (AutoGeneratedParameter_p.empty()) {
+    Partname = "16f1xxx";
+  } else {
+    Partname = AutoGeneratedParameter_p;
+  }
+
+  std::string LowerCase;
+  for (unsigned i = 0; i <= Partname.size(); i++) {
+    LowerCase.push_back(std::tolower(Partname[i]));
+  }
+
+  return "__" + LowerCase;
+}
+
+std::string
+GetUpperCasePartDefine(void) {
+  std::string Partname;
+  if (AutoGeneratedParameter_p.empty()) {
+    Partname = "16f1xxx";
+  } else {
+    Partname = AutoGeneratedParameter_p;
+  }
+
+  std::string UpperCase;
+  for (unsigned i = 0; i <= Partname.size(); i++) {
+    UpperCase.push_back(std::toupper(Partname[i]));
+  }
+
+  return "__" +  UpperCase;
+}
+
+
 // Get the dir where c16 executables reside.
 std::string GetBinDir() {
   // Construct a Path object from the program name.  





More information about the llvm-commits mailing list