mirror of
https://github.com/jeremysrand/llvm-65816.git
synced 2024-06-01 11:42:09 +00:00
Disable the fake direct page registers which are wider than 16-bits for now to workaround a problem. LLVM seems to promote everything to 32-bit if you say the machine has 32-bit or better registers even if I have indicated that the native bit width is 16. Disabling these gets me one step closer to my first successful compile.
This commit is contained in:
parent
74cb03d2f6
commit
4fb15c1a07
|
@ -811,10 +811,16 @@ WDC65816TargetLowering::WDC65816TargetLowering(TargetMachine &TM)
|
||||||
: TargetLowering(TM, new TargetLoweringObjectFileELF()) {
|
: TargetLowering(TM, new TargetLoweringObjectFileELF()) {
|
||||||
|
|
||||||
addRegisterClass(MVT::i16, &WDC::Int16RegsRegClass);
|
addRegisterClass(MVT::i16, &WDC::Int16RegsRegClass);
|
||||||
|
#if 0 // WDC_TODO - turn these off for now...
|
||||||
|
// The problem here is that if LLVM thinks we have 32bit and 64bit registers
|
||||||
|
// then it insists on promoting ints to 32-bit even though we have said we are
|
||||||
|
// natively a 16-bit machine. Also, I haven't bothered to tell LLVM yet how to
|
||||||
|
// load values into these registers which I think confuses it. So, off for now.
|
||||||
addRegisterClass(MVT::i32, &WDC::Int32RegsRegClass);
|
addRegisterClass(MVT::i32, &WDC::Int32RegsRegClass);
|
||||||
addRegisterClass(MVT::i64, &WDC::Int64RegsRegClass);
|
addRegisterClass(MVT::i64, &WDC::Int64RegsRegClass);
|
||||||
addRegisterClass(MVT::f32, &WDC::Float32RegsRegClass);
|
addRegisterClass(MVT::f32, &WDC::Float32RegsRegClass);
|
||||||
addRegisterClass(MVT::f64, &WDC::Float64RegsRegClass);
|
addRegisterClass(MVT::f64, &WDC::Float64RegsRegClass);
|
||||||
|
#endif
|
||||||
|
|
||||||
computeRegisterProperties();
|
computeRegisterProperties();
|
||||||
#if 0 // WDC_TODO - For sure we need something here...
|
#if 0 // WDC_TODO - For sure we need something here...
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace llvm {
|
||||||
|
|
||||||
bool is64Bit() const { return false; }
|
bool is64Bit() const { return false; }
|
||||||
std::string getDataLayout() const {
|
std::string getDataLayout() const {
|
||||||
return std::string("e-p:32:8:8-i16:8:8-f32:8:8-f68:8:8-n16");
|
return std::string("e-p:32:8:8-i8:8:8-i16:8:8-i32:8:8-f32:8:8-f64:8:8-n16:8");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 // WDC_TODO - do I need any of this?
|
#if 0 // WDC_TODO - do I need any of this?
|
||||||
|
|
Loading…
Reference in New Issue
Block a user