From 2217bdbf688d9982842b756babed608e1f3bbe1f Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Mon, 2 Feb 2004 19:06:12 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11075 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llc/llc.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index eae891bf1f1..2ce1e542765 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -37,12 +37,13 @@ OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename")); static cl::opt Force("f", cl::desc("Overwrite output files")); -enum ArchName { noarch, x86, Sparc }; +enum ArchName { noarch, x86, Sparc, PowerPC }; static cl::opt 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 @@ int main(int argc, char **argv) { 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 @@ int main(int argc, char **argv) { 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 @@ int main(int argc, char **argv) { 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";