Handle a displacement location in 64-bit as an RIP-relative displacement. It
authorBill Wendling <isanbard@gmail.com>
Wed, 21 Apr 2010 00:34:04 +0000 (00:34 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 21 Apr 2010 00:34:04 +0000 (00:34 +0000)
commita040fffefbc7f653d68154b16b8d3c2ee2a6a639
treecccbd9cf92b2a6dbce9ddc815bd058de4ae94abf
parent311569861162c12b78b6c445793d4074aa4e4512
Handle a displacement location in 64-bit as an RIP-relative displacement. It
fixes a bug (<rdar://problem/7880900>) in the JIT. This code wouldn't work:

target triple = "x86_64-apple-darwin"

define double @func(double %a) {
  %tmp1 = fmul double %a, 5.000000e-01            ; <double> [#uses=1]
  ret double %tmp1
}

define i32 @main() nounwind {
  %1 = call double @func(double 4.770000e-04) ; <i64> [#uses=0]
  ret i32 0
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101965 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86CodeEmitter.cpp