[PATCH] D83783: [DSE,MSSA] Recognise init_trampoline in getLocForWriteEx
John Brawn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 15 04:19:29 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG20854d85e14c: [DSE,MSSA] Recognise init_trampoline in getLocForWriteEx (authored by john.brawn).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D83783/new/
https://reviews.llvm.org/D83783
Files:
llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
llvm/test/Transforms/DeadStoreElimination/MSSA/simple-todo.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll
Index: llvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll
===================================================================
--- llvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll
+++ llvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll
@@ -181,6 +181,18 @@
ret double %tmp.0
}
+; DSE should delete the dead trampoline.
+declare void @test11f()
+define void @test11() {
+; CHECK-LABEL: @test11(
+; CHECK-NEXT: ret void
+;
+ %storage = alloca [10 x i8], align 16 ; <[10 x i8]*> [#uses=1]
+ %cast = getelementptr [10 x i8], [10 x i8]* %storage, i32 0, i32 0 ; <i8*> [#uses=1]
+ call void @llvm.init.trampoline( i8* %cast, i8* bitcast (void ()* @test11f to i8*), i8* null ) ; <i8*> [#uses=1]
+ ret void
+}
+
; %P doesn't escape, the DEAD instructions should be removed.
declare void @test13f()
define i32* @test13() {
Index: llvm/test/Transforms/DeadStoreElimination/MSSA/simple-todo.ll
===================================================================
--- llvm/test/Transforms/DeadStoreElimination/MSSA/simple-todo.ll
+++ llvm/test/Transforms/DeadStoreElimination/MSSA/simple-todo.ll
@@ -4,29 +4,6 @@
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
-declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
-declare void @llvm.memset.element.unordered.atomic.p0i8.i64(i8* nocapture, i8, i64, i32) nounwind
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i1) nounwind
-declare void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
-declare void @llvm.init.trampoline(i8*, i8*, i8*)
-
-; DSE should delete the dead trampoline.
-declare void @test11f()
-define void @test11() {
-; CHECK-LABEL: @test11(
-; CHECK-NEXT: ret void
-;
- %storage = alloca [10 x i8], align 16 ; <[10 x i8]*> [#uses=1]
- %cast = getelementptr [10 x i8], [10 x i8]* %storage, i32 0, i32 0 ; <i8*> [#uses=1]
- call void @llvm.init.trampoline( i8* %cast, i8* bitcast (void ()* @test11f to i8*), i8* null ) ; <i8*> [#uses=1]
- ret void
-}
-
-
-declare noalias i8* @malloc(i32)
-
-declare void @unknown_func()
-
; Remove redundant store if loaded value is in another block inside a loop.
define i32 @test31(i1 %c, i32* %p, i32 %i) {
; CHECK-LABEL: @test31(
Index: llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
===================================================================
--- llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+++ llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
@@ -1593,6 +1593,12 @@
break;
}
}
+ switch (CB->getIntrinsicID()) {
+ case Intrinsic::init_trampoline:
+ return {MemoryLocation(CB->getArgOperand(0))};
+ default:
+ break;
+ }
return None;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D83783.278135.patch
Type: text/x-patch
Size: 2949 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200715/f47216e4/attachment.bin>
More information about the llvm-commits
mailing list