diff options
author | Hal Finkel <hfinkel@anl.gov> | 2012-10-24 21:22:30 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2012-10-24 21:22:30 +0000 |
commit | aacb68806f4cb05b0b8102a188726e5b13f2a759 (patch) | |
tree | 1b7fb8a23523602b647ae6442a0d7f6e64783cf9 /test | |
parent | 4332bdcb5f03787b7805ba70434138d6a50cc103 (diff) | |
download | llvm-aacb68806f4cb05b0b8102a188726e5b13f2a759.tar.gz llvm-aacb68806f4cb05b0b8102a188726e5b13f2a759.tar.bz2 llvm-aacb68806f4cb05b0b8102a188726e5b13f2a759.tar.xz |
Update GVN to support vectors of pointers.
GVN will now generate ptrtoint instructions for vectors of pointers.
Fixes PR14166.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166624 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Transforms/GVN/pr14166.ll | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Transforms/GVN/pr14166.ll b/test/Transforms/GVN/pr14166.ll new file mode 100644 index 0000000000..9f47e46426 --- /dev/null +++ b/test/Transforms/GVN/pr14166.ll @@ -0,0 +1,27 @@ +; RUN: opt -gvn -S < %s | FileCheck %s +target datalayout = "e-p:32:32:32" +target triple = "i386-pc-linux-gnu" +define <2 x i32> @test1() { + %v1 = alloca <2 x i32> + call void @anything(<2 x i32>* %v1) + %v2 = load <2 x i32>* %v1 + %v3 = inttoptr <2 x i32> %v2 to <2 x i8*> + %v4 = bitcast <2 x i32>* %v1 to <2 x i8*>* + store <2 x i8*> %v3, <2 x i8*>* %v4 + %v5 = load <2 x i32>* %v1 + ret <2 x i32> %v5 +; CHECK: @test1 +; CHECK: %v1 = alloca <2 x i32> +; CHECK: call void @anything(<2 x i32>* %v1) +; CHECK: %v2 = load <2 x i32>* %v1 +; CHECK: %v3 = inttoptr <2 x i32> %v2 to <2 x i8*> +; CHECK: %v4 = bitcast <2 x i32>* %v1 to <2 x i8*>* +; CHECK: store <2 x i8*> %v3, <2 x i8*>* %v4 +; CHECK: %1 = ptrtoint <2 x i8*> %v3 to <2 x i32> +; CHECK: %2 = bitcast <2 x i32> %1 to i64 +; CHECK: %3 = bitcast i64 %2 to <2 x i32> +; CHECK: ret <2 x i32> %3 +} + +declare void @anything(<2 x i32>*) + |