[llvm-commits] CVS: llvm/tools/llc/llc.cpp

Brian Gaeke gaeke at cs.uiuc.edu
Mon Feb 2 13:07:03 PST 2004


Changes in directory llvm/tools/llc:

llc.cpp updated: 1.88 -> 1.89

---
Log message:

Add a -march=powerpc option. Automatically select it if this looks like a
big-endian, 32-bit module, or if __ppc__, __POWERPC__, or __APPLE__ are
defined.


---
Diffs of the changes:  (+10 -1)

Index: llvm/tools/llc/llc.cpp
diff -u llvm/tools/llc/llc.cpp:1.88 llvm/tools/llc/llc.cpp:1.89
--- llvm/tools/llc/llc.cpp:1.88	Sun Dec 28 03:51:04 2003
+++ llvm/tools/llc/llc.cpp	Mon Feb  2 13:06:12 2004
@@ -37,12 +37,13 @@
 
 static cl::opt<bool> Force("f", cl::desc("Overwrite output files"));
 
-enum ArchName { noarch, x86, Sparc };
+enum ArchName { noarch, x86, Sparc, PowerPC };
 
 static cl::opt<ArchName>
 Arch("march", cl::desc("Architecture to generate assembly for:"), cl::Prefix,
      cl::values(clEnumVal(x86, "  IA-32 (Pentium and above)"),
                 clEnumValN(Sparc, "sparc", "  SPARC V9"),
+                clEnumValN(PowerPC, "powerpc", "  PowerPC"),
 		0),
      cl::init(noarch));
 
@@ -87,6 +88,9 @@
   case Sparc:
     TargetMachineAllocator = allocateSparcTargetMachine;
     break;
+  case PowerPC:
+    TargetMachineAllocator = allocatePowerPCTargetMachine;
+    break;
   default:
     // Decide what the default target machine should be, by looking at
     // the module. This heuristic (ILP32, LE -> IA32; LP64, BE ->
@@ -95,6 +99,9 @@
     if (mod.getEndianness()  == Module::LittleEndian &&
         mod.getPointerSize() == Module::Pointer32) { 
       TargetMachineAllocator = allocateX86TargetMachine;
+    } else if (mod.getEndianness() == Module::BigEndian &&
+        mod.getPointerSize() == Module::Pointer32) { 
+      TargetMachineAllocator = allocatePowerPCTargetMachine;
     } else if (mod.getEndianness()  == Module::BigEndian &&
                mod.getPointerSize() == Module::Pointer64) { 
       TargetMachineAllocator = allocateSparcTargetMachine;
@@ -105,6 +112,8 @@
       TargetMachineAllocator = allocateX86TargetMachine;
 #elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
       TargetMachineAllocator = allocateSparcTargetMachine;
+#elif defined(__POWERPC__) || defined(__ppc__) || defined(__APPLE__)
+      TargetMachineAllocator = allocatePowerPCTargetMachine;
 #else
       std::cerr << argv[0] << ": module does not specify a target to use.  "
                 << "You must use the -march option.\n";





More information about the llvm-commits mailing list