mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
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
This commit is contained in:
parent
7ca255b76c
commit
2217bdbf68
@ -37,12 +37,13 @@ OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"));
|
|||||||
|
|
||||||
static cl::opt<bool> Force("f", cl::desc("Overwrite output files"));
|
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>
|
static cl::opt<ArchName>
|
||||||
Arch("march", cl::desc("Architecture to generate assembly for:"), cl::Prefix,
|
Arch("march", cl::desc("Architecture to generate assembly for:"), cl::Prefix,
|
||||||
cl::values(clEnumVal(x86, " IA-32 (Pentium and above)"),
|
cl::values(clEnumVal(x86, " IA-32 (Pentium and above)"),
|
||||||
clEnumValN(Sparc, "sparc", " SPARC V9"),
|
clEnumValN(Sparc, "sparc", " SPARC V9"),
|
||||||
|
clEnumValN(PowerPC, "powerpc", " PowerPC"),
|
||||||
0),
|
0),
|
||||||
cl::init(noarch));
|
cl::init(noarch));
|
||||||
|
|
||||||
@ -87,6 +88,9 @@ int main(int argc, char **argv) {
|
|||||||
case Sparc:
|
case Sparc:
|
||||||
TargetMachineAllocator = allocateSparcTargetMachine;
|
TargetMachineAllocator = allocateSparcTargetMachine;
|
||||||
break;
|
break;
|
||||||
|
case PowerPC:
|
||||||
|
TargetMachineAllocator = allocatePowerPCTargetMachine;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
// Decide what the default target machine should be, by looking at
|
// Decide what the default target machine should be, by looking at
|
||||||
// the module. This heuristic (ILP32, LE -> IA32; LP64, BE ->
|
// the module. This heuristic (ILP32, LE -> IA32; LP64, BE ->
|
||||||
@ -95,6 +99,9 @@ int main(int argc, char **argv) {
|
|||||||
if (mod.getEndianness() == Module::LittleEndian &&
|
if (mod.getEndianness() == Module::LittleEndian &&
|
||||||
mod.getPointerSize() == Module::Pointer32) {
|
mod.getPointerSize() == Module::Pointer32) {
|
||||||
TargetMachineAllocator = allocateX86TargetMachine;
|
TargetMachineAllocator = allocateX86TargetMachine;
|
||||||
|
} else if (mod.getEndianness() == Module::BigEndian &&
|
||||||
|
mod.getPointerSize() == Module::Pointer32) {
|
||||||
|
TargetMachineAllocator = allocatePowerPCTargetMachine;
|
||||||
} else if (mod.getEndianness() == Module::BigEndian &&
|
} else if (mod.getEndianness() == Module::BigEndian &&
|
||||||
mod.getPointerSize() == Module::Pointer64) {
|
mod.getPointerSize() == Module::Pointer64) {
|
||||||
TargetMachineAllocator = allocateSparcTargetMachine;
|
TargetMachineAllocator = allocateSparcTargetMachine;
|
||||||
@ -105,6 +112,8 @@ int main(int argc, char **argv) {
|
|||||||
TargetMachineAllocator = allocateX86TargetMachine;
|
TargetMachineAllocator = allocateX86TargetMachine;
|
||||||
#elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
#elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
|
||||||
TargetMachineAllocator = allocateSparcTargetMachine;
|
TargetMachineAllocator = allocateSparcTargetMachine;
|
||||||
|
#elif defined(__POWERPC__) || defined(__ppc__) || defined(__APPLE__)
|
||||||
|
TargetMachineAllocator = allocatePowerPCTargetMachine;
|
||||||
#else
|
#else
|
||||||
std::cerr << argv[0] << ": module does not specify a target to use. "
|
std::cerr << argv[0] << ": module does not specify a target to use. "
|
||||||
<< "You must use the -march option.\n";
|
<< "You must use the -march option.\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user