If the data requires a relocation then don't attempt to

add it to the constant pool for fast-isel. We already
don't add it for the normal case.

llvm-svn: 92934
This commit is contained in:
Eric Christopher 2010-01-07 19:45:14 +00:00
parent 36ef435eca
commit 9f569bdf38
1 changed files with 7 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#include "X86RegisterInfo.h"
#include "X86Subtarget.h"
#include "X86TargetMachine.h"
#include "llvm/Constant.h"
#include "llvm/CallingConv.h"
#include "llvm/DerivedTypes.h"
#include "llvm/GlobalVariable.h"
@ -1652,6 +1653,12 @@ unsigned X86FastISel::TargetMaterializeConstant(Constant *C) {
PICBase = X86::RIP;
}
// If we've gotten here we need to make sure we don't have a constant
// that needs a relocation, because then we shouldn't put it into the
// constant pool.
if (C->getRelocationInfo() != Constant::NoRelocation)
return 0;
// Create the load from the constant pool.
unsigned MCPOffset = MCP.getConstantPoolIndex(C, Align);
unsigned ResultReg = createResultReg(RC);