[BOLT] Restrict ICP for functions with unknown control flow
authorAmir Ayupov <aaupov@fb.com>
Thu, 8 Sep 2022 22:50:25 +0000 (15:50 -0700)
committerAmir Ayupov <aaupov@fb.com>
Thu, 8 Sep 2022 22:50:40 +0000 (15:50 -0700)
commit31abde43d624aebaee90ac65ed7ca8cecf438e22
tree7e53ececbde767db05d95b3601d17be7a3158b73
parent873942e1783f09b407f8081264036458f7c17db3
[BOLT] Restrict ICP for functions with unknown control flow

ICP has two modes: jump table promotion and indirect call promotion.
The selection is based on whether an instruction has a jump table or not.
An instruction with unknown control flow doesn't have a jump table and will
fall under indirect call promotion policy which might be incorrect/unsafe
(if an instruction is not a tail call, i.e. has local jump targets).

Prevent ICP for functions containing instructions with unknown control flow.

Follow-up to https://reviews.llvm.org/D128870.

Reviewed By: maksfb

Differential Revision: https://reviews.llvm.org/D132882
bolt/include/bolt/Passes/IndirectCallPromotion.h
bolt/lib/Passes/IndirectCallPromotion.cpp