diff options
| author | Michael Liao <michael.liao@intel.com> | 2012-08-30 00:30:16 +0000 |
|---|---|---|
| committer | Michael Liao <michael.liao@intel.com> | 2012-08-30 00:30:16 +0000 |
| commit | 3c8980646bfdccceb9ea3cd1fe6b3570c876bd96 (patch) | |
| tree | 15d3ef54481d64cad94133702e900c9b908d8a80 /llvm/lib | |
| parent | 2aa89dd03e5a953dc478e54a3e44d76f66f4bc40 (diff) | |
| download | bcm5719-llvm-3c8980646bfdccceb9ea3cd1fe6b3570c876bd96.tar.gz bcm5719-llvm-3c8980646bfdccceb9ea3cd1fe6b3570c876bd96.zip | |
Fix PR13727
- The root cause is that target constant materialization in X86 fast-isel
creates a PC-rel addressing which may overflow 32-bit range in non-Small code
model if .rodata section is allocated too far away from code segment in
MCJIT, which uses Large code model so far.
- Follow the similar logic to fix non-Small code model in fast-isel by skipping
non-Small code model.
llvm-svn: 162881
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86FastISel.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp index e5952aae16d..54704d84a9c 100644 --- a/llvm/lib/Target/X86/X86FastISel.cpp +++ b/llvm/lib/Target/X86/X86FastISel.cpp @@ -2014,13 +2014,17 @@ X86FastISel::TargetSelectInstruction(const Instruction *I) { unsigned X86FastISel::TargetMaterializeConstant(const Constant *C) { MVT VT; if (!isTypeLegal(C->getType(), VT)) - return false; + return 0; + + // Can't handle alternate code models yet. + if (TM.getCodeModel() != CodeModel::Small) + return 0; // Get opcode and regclass of the output for the given load instruction. unsigned Opc = 0; const TargetRegisterClass *RC = NULL; switch (VT.SimpleTy) { - default: return false; + default: return 0; case MVT::i8: Opc = X86::MOV8rm; RC = &X86::GR8RegClass; @@ -2058,7 +2062,7 @@ unsigned X86FastISel::TargetMaterializeConstant(const Constant *C) { break; case MVT::f80: // No f80 support yet. - return false; + return 0; } // Materialize addresses with LEA instructions. |

