Patch for function cloning to inline all blocks whose address is taken
authorGerolf Hoflehner <ghoflehner@apple.com>
Wed, 30 Apr 2014 22:05:02 +0000 (22:05 +0000)
committerGerolf Hoflehner <ghoflehner@apple.com>
Wed, 30 Apr 2014 22:05:02 +0000 (22:05 +0000)
commitfff0879df07ce0f449b00a9ed4b3d7732735bc4e
tree091448abf76e63f84052b71303770cb6d0c1b74c
parent593cb79eb5517d821248ba0698f35e0a6e65b6e4
Patch for function cloning to inline all blocks whose address is taken

Not all address taken blocks get inlined. The reason is
that a blocks new address is known only when it is cloned. But e.g.
a branch instruction in a different block could need that address earlier
while it gets cloned. The solution is to collect the set of all
blocks that can potentially get inlined and compute a new block address
up front. Then clone and cleanup.

rdar://16427209

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207713 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/CloneFunction.cpp