From: Matt Arsenault Date: Sat, 18 May 2019 14:36:06 +0000 (+0000) Subject: GVN: Handle addrspacecast X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1b8894c87a61e472a28a16a4979724e1e1119ce9;p=llvm GVN: Handle addrspacecast git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361103 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index f19bb33ae89..a93a17f02e1 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -523,6 +523,7 @@ uint32_t GVN::ValueTable::lookupOrAdd(Value *V) { case Instruction::FPExt: case Instruction::PtrToInt: case Instruction::IntToPtr: + case Instruction::AddrSpaceCast: case Instruction::BitCast: case Instruction::Select: case Instruction::ExtractElement: diff --git a/test/Transforms/GVN/addrspacecast.ll b/test/Transforms/GVN/addrspacecast.ll new file mode 100644 index 00000000000..aa65013a608 --- /dev/null +++ b/test/Transforms/GVN/addrspacecast.ll @@ -0,0 +1,20 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -gvn -S | FileCheck %s +; RUN: opt < %s -passes=gvn -S | FileCheck %s + +define i32 addrspace(1)* @addrspacecast(i32* %ptr) { +; CHECK-LABEL: @addrspacecast( +; CHECK-NEXT: block1: +; CHECK-NEXT: [[Z1:%.*]] = addrspacecast i32* [[PTR:%.*]] to i32 addrspace(1)* +; CHECK-NEXT: store i32 addrspace(1)* [[Z1]], i32 addrspace(1)** undef +; CHECK-NEXT: ret i32 addrspace(1)* [[Z1]] +; +block1: + %z1 = addrspacecast i32* %ptr to i32 addrspace(1)* + store i32 addrspace(1)* %z1, i32 addrspace(1)** undef + br label %block2 + +block2: + %z2 = addrspacecast i32* %ptr to i32 addrspace(1)* + ret i32 addrspace(1)* %z2 +}