From c9932f6f60827e31395d5254fda73f03257963ae Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 1 Oct 2010 23:24:42 +0000 Subject: [PATCH] Stub out constant GV handling, fixes C++ eh tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115375 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMFastISel.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/Target/ARM/ARMFastISel.cpp b/lib/Target/ARM/ARMFastISel.cpp index 2d38aff416e..3a716d321c1 100644 --- a/lib/Target/ARM/ARMFastISel.cpp +++ b/lib/Target/ARM/ARMFastISel.cpp @@ -19,6 +19,7 @@ #include "ARMRegisterInfo.h" #include "ARMTargetMachine.h" #include "ARMSubtarget.h" +#include "ARMConstantPoolValue.h" #include "llvm/CallingConv.h" #include "llvm/DerivedTypes.h" #include "llvm/GlobalVariable.h" @@ -59,7 +60,7 @@ class ARMFastISel : public FastISel { const TargetMachine &TM; const TargetInstrInfo &TII; const TargetLowering &TLI; - const ARMFunctionInfo *AFI; + ARMFunctionInfo *AFI; // Convenience variables to avoid some queries. bool isThumb; @@ -139,6 +140,7 @@ class ARMFastISel : public FastISel { bool ARMComputeRegOffset(const Value *Obj, unsigned &Reg, int &Offset); unsigned ARMMaterializeFP(const ConstantFP *CFP, EVT VT); unsigned ARMMaterializeInt(const Constant *C, EVT VT); + unsigned ARMMaterializeGV(const GlobalValue *GV, EVT VT); unsigned ARMMoveToFPReg(EVT VT, unsigned SrcReg); unsigned ARMMoveToIntReg(EVT VT, unsigned SrcReg); @@ -446,6 +448,11 @@ unsigned ARMFastISel::ARMMaterializeInt(const Constant *C, EVT VT) { return DestReg; } +unsigned ARMFastISel::ARMMaterializeGV(const GlobalValue *GV, EVT VT) { + // Disable currently... + return 0; +} + unsigned ARMFastISel::TargetMaterializeConstant(const Constant *C) { EVT VT = TLI.getValueType(C->getType(), true); @@ -454,7 +461,12 @@ unsigned ARMFastISel::TargetMaterializeConstant(const Constant *C) { if (const ConstantFP *CFP = dyn_cast(C)) return ARMMaterializeFP(CFP, VT); - return ARMMaterializeInt(C, VT); + else if (const GlobalValue *GV = dyn_cast(C)) + return ARMMaterializeGV(GV, VT); + else if (isa(C)) + return ARMMaterializeInt(C, VT); + + return 0; } unsigned ARMFastISel::TargetMaterializeAlloca(const AllocaInst *AI) {