[PATCH] D78932: [DSE,MSSA] Relax post-dom restriction for objs visible after return.
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 28 14:04:10 PDT 2020
fhahn added a comment.
In D78932#2006268 <https://reviews.llvm.org/D78932#2006268>, @efriedma wrote:
> The PostDominatorTree doesn't include implicit unwind edges. I'm not completely sure whether your change handles that correctly... but either way, please make sure we have testcases.
To double check, as I am not too familiar with the exception handling stuff, are you referring to an example like the one below, where ehcleanup exits to the caller through unwinding? IIUC the problematic scenario would be when we have a store before an invoke, which gets overwritten on the path to the regular exit, but not on the exception path. Calls to throwing function currently block DSE, and I think that would also prevent eliminating in cases mentioned before (even if it is overwritten on the unwind edges too).
define void @test1(i32* %p, i1 %c) personality i32 (...)* @__CxxFrameHandler3 {
entry:
store i32 2, i32* %p
br i1 %c, label %exit, label %invoke.cont
invoke.cont:
invoke void @throw()
to label %exit unwind label %catch.dispatch
catch.dispatch: ; preds = %invoke.cont
%cs = catchswitch within none [label %invoke.cont1] unwind label %ehcleanup
invoke.cont1: ; preds = %catch.dispatch
%catch = catchpad within %cs [i8* null, i32 64, i8* null]
invoke void @throw() [ "funclet"(token %catch) ]
to label %exit unwind label %ehcleanup
ehcleanup: ; preds = %invoke.cont1, %catch.dispatch
%cleanup = cleanuppad within none []
call void @release(i64 0) [ "funclet"(token %cleanup) ]
cleanupret from %cleanup unwind to caller
exit: ; preds = %invoke.cont1, %invoke.cont
store i32 1, i32* %p
ret void
}
declare i32 @__CxxFrameHandler3(...)
declare void @throw()
declare void @release(i64)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78932/new/
https://reviews.llvm.org/D78932
More information about the llvm-commits
mailing list