From aacb68806f4cb05b0b8102a188726e5b13f2a759 Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Wed, 24 Oct 2012 21:22:30 +0000 Subject: 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 --- test/Transforms/GVN/pr14166.ll | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/Transforms/GVN/pr14166.ll (limited to 'test') 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>*) + -- cgit v1.2.3