[WinEH] Use operand bundles to describe call sites
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 15 Dec 2015 21:27:27 +0000 (21:27 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 15 Dec 2015 21:27:27 +0000 (21:27 +0000)
commitb46bb541f5f78520b08c1b50463c3517041d26de
tree7077970a130a6bddebc6d69ac52c208d020dac95
parent0c7a64a0370b8f6adb4b35ad0a9a3ff3da8f6e97
[WinEH] Use operand bundles to describe call sites

SimplifyCFG allows tail merging with code which terminates in
unreachable which, in turn, makes it possible for an invoke to end up in
a funclet which it was not originally part of.

Using operand bundles on invokes allows us to determine whether or not
an invoke was part of a funclet in the source program.

Furthermore, it allows us to unambiguously answer questions about the
legality of inlining into call sites which the personality may have
trouble with.

Differential Revision: http://reviews.llvm.org/D15517

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255674 91177308-0d34-0410-b5e6-96231b3b80d8
36 files changed:
docs/LangRef.rst
include/llvm/IR/InstrTypes.h
include/llvm/IR/LLVMContext.h
include/llvm/Transforms/Utils/Local.h
lib/CodeGen/WinEHPrepare.cpp
lib/IR/LLVMContext.cpp
lib/IR/Verifier.cpp
lib/Transforms/Utils/InlineFunction.cpp
lib/Transforms/Utils/Local.cpp
test/CodeGen/WinEH/wineh-cloning.ll
test/CodeGen/WinEH/wineh-demotion.ll
test/CodeGen/WinEH/wineh-no-demotion.ll
test/CodeGen/X86/catchpad-weight.ll
test/CodeGen/X86/cleanuppad-inalloca.ll
test/CodeGen/X86/cleanuppad-large-codemodel.ll
test/CodeGen/X86/cleanuppad-realign.ll
test/CodeGen/X86/funclet-layout.ll
test/CodeGen/X86/seh-catch-all-win32.ll
test/CodeGen/X86/seh-catch-all.ll
test/CodeGen/X86/seh-catchpad.ll
test/CodeGen/X86/seh-except-finally.ll
test/CodeGen/X86/seh-finally.ll
test/CodeGen/X86/seh-safe-div-win32.ll
test/CodeGen/X86/seh-safe-div.ll
test/CodeGen/X86/seh-stack-realign.ll
test/CodeGen/X86/win-catchpad-csrs.ll
test/CodeGen/X86/win-catchpad-nested-cxx.ll
test/CodeGen/X86/win-catchpad-nested.ll
test/CodeGen/X86/win-catchpad.ll
test/CodeGen/X86/win-cleanuppad.ll
test/CodeGen/X86/win-funclet-cfi.ll
test/CodeGen/X86/win32-eh-states.ll
test/CodeGen/X86/win32-seh-catchpad.ll
test/CodeGen/X86/win32-seh-nested-finally.ll
test/CodeGen/X86/wineh-coreclr.ll
test/CodeGen/X86/wineh-exceptionpointer.ll