summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/with_overflow.ll
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-02-24 19:33:37 +0000
committerCraig Topper <craig.topper@intel.com>2019-02-24 19:33:37 +0000
commit3fe4bd464cc647da36a5c4f4c0015fb653f0e3b1 (patch)
tree6e1fdbd54f0503bd917d590e5c7fef6c95841447 /llvm/test/Transforms/InstCombine/with_overflow.ll
parent5532a9873765e1f068a1fd85f2bba803dc23c378 (diff)
downloadbcm5719-llvm-3fe4bd464cc647da36a5c4f4c0015fb653f0e3b1.tar.gz
bcm5719-llvm-3fe4bd464cc647da36a5c4f4c0015fb653f0e3b1.zip
[X86] Fix tls variable lowering issue with large code model
Summary: The problem here is the lowering for tls variable. Below is the DAG for the code. SelectionDAG has 11 nodes: t0: ch = EntryToken t8: i64,ch = load<(load 8 from `i8 addrspace(257)* null`, addrspace 257)> t0, Constant:i64<0>, undef:i64 t10: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i32* @x> 0 [TF=10] t11: i64,ch = load<(load 8 from got)> t0, t10, undef:i64 t12: i64 = add t8, t11 t4: i32,ch = load<(dereferenceable load 4 from @x)> t0, t12, undef:i64 t6: ch = CopyToReg t0, Register:i32 %0, t4 And when mcmodel is large, below instruction can NOT be folded. t10: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i32* @x> 0 [TF=10] t11: i64,ch = load<(load 8 from got)> t0, t10, undef:i64 So "t11: i64,ch = load<(load 8 from got)> t0, t10, undef:i64" is lowered to " Morphed node: t11: i64,ch = MOV64rm<Mem:(load 8 from got)> t10, TargetConstant:i8<1>, Register:i64 $noreg, TargetConstant:i32<0>, Register:i32 $noreg, t0" When llvm start to lower "t10: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i32* @x> 0 [TF=10]", it fails. The patch is to fold the load and X86ISD::WrapperRIP. Fixes PR26906 Patch by LuoYuanke Reviewers: craig.topper, rnk, annita.zhang, wxiao3 Reviewed By: rnk Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58336 llvm-svn: 354756
Diffstat (limited to 'llvm/test/Transforms/InstCombine/with_overflow.ll')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud