diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-15 18:27:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-15 18:27:02 +0000 |
commit | dffb6e5aee9607d78732824f00bf0f4a8a6fba9b (patch) | |
tree | 734419de268bdd87ed7f52b699b33d6f3b6ca3ca /test/CodeGen/X86 | |
parent | 371b8fc41ca0d45bbb00683b3edca49f34e7e63f (diff) | |
download | external_llvm-dffb6e5aee9607d78732824f00bf0f4a8a6fba9b.zip external_llvm-dffb6e5aee9607d78732824f00bf0f4a8a6fba9b.tar.gz external_llvm-dffb6e5aee9607d78732824f00bf0f4a8a6fba9b.tar.bz2 |
fix PR4984 by ensuring that fastisel adds properly sign extended GEP displacement
values to machineinstrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81886 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/fast-isel-gep.ll | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/test/CodeGen/X86/fast-isel-gep.ll b/test/CodeGen/X86/fast-isel-gep.ll index fb24f19..5b8acec 100644 --- a/test/CodeGen/X86/fast-isel-gep.ll +++ b/test/CodeGen/X86/fast-isel-gep.ll @@ -1,10 +1,9 @@ ; RUN: llc < %s -march=x86-64 -O0 | FileCheck %s --check-prefix=X64 ; RUN: llc < %s -march=x86 -O0 | FileCheck %s --check-prefix=X32 -; PR3181 ; GEP indices are interpreted as signed integers, so they ; should be sign-extended to 64 bits on 64-bit targets. - +; PR3181 define i32 @test1(i32 %t3, i32* %t1) nounwind { %t9 = getelementptr i32* %t1, i32 %t3 ; <i32*> [#uses=1] %t15 = load i32* %t9 ; <i32> [#uses=1] @@ -31,3 +30,24 @@ define i32 @test2(i64 %t3, i32* %t1) nounwind { ; X64: movl (%rsi,%rdi,4), %eax ; X64: ret } + + + +; PR4984 +define i8 @test3(i8* %start) nounwind { +entry: + %A = getelementptr i8* %start, i64 -2 ; <i8*> [#uses=1] + %B = load i8* %A, align 1 ; <i8> [#uses=1] + ret i8 %B + + +; X32: test3: +; X32: movl 4(%esp), %eax +; X32: movb -2(%eax), %al +; X32: ret + +; X64: test3: +; X64: movb -2(%rdi), %al +; X64: ret + +} |