[MustExecute] Add backward exploration for must-be-executed-context
authorHideto Ueno <uenoku.tokotoko@gmail.com>
Thu, 20 Feb 2020 04:00:43 +0000 (13:00 +0900)
committerHideto Ueno <uenoku.tokotoko@gmail.com>
Thu, 20 Feb 2020 05:49:30 +0000 (14:49 +0900)
commite253cdda35eb24f29170aaaf102caed94a85201c
tree931aba4f806dc6cf5135fb89f9b92d08d3244204
parent8e76fec0ae89d724a8d20d48f34c6c596404b916
[MustExecute] Add backward exploration for must-be-executed-context

Summary:
As mentioned in D71974, it is useful for must-be-executed-context to explore CFG backwardly.
This patch is ported from parts of D64975. We use a dominator tree to find the previous context if
a dominator tree is available.

Reviewers: jdoerfert, hfinkel, baziotis, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74817
llvm/include/llvm/Analysis/MustExecute.h
llvm/include/llvm/Transforms/IPO/Attributor.h
llvm/lib/Analysis/MustExecute.cpp
llvm/test/Analysis/MustExecute/must_be_executed_context.ll
llvm/test/Transforms/Attributor/dereferenceable-1.ll
llvm/test/Transforms/Attributor/heap_to_stack.ll
llvm/test/Transforms/Attributor/misc.ll
llvm/test/Transforms/Attributor/nonnull.ll