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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92934 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2010-01-07 19:45:14 +00:00
parent a07b750405
commit e6c74c9c2a

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);