diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-05-31 01:48:07 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-05-31 01:48:07 +0000 |
commit | d2f705ddf942467911b2038d64bc04c7fddfdcdd (patch) | |
tree | 8c95f986123b640124472491c3fc06c54cbf34a1 /llvm/lib/Transforms/InstCombine/InstructionCombining.cpp | |
parent | 8df24c3cfd12b25415169ea8ae69ba8d64a2254f (diff) | |
download | bcm5719-llvm-d2f705ddf942467911b2038d64bc04c7fddfdcdd.tar.gz bcm5719-llvm-d2f705ddf942467911b2038d64bc04c7fddfdcdd.zip |
X86: permit using SjLj EH on x86 targets as an option
This adds support to the backed to actually support SjLj EH as an exception
model. This is *NOT* the default model, and requires explicitly opting into it
from the frontend. GCC supports this model and for MinGW can still be enabled
via the `--using-sjlj-exceptions` options.
Addresses PR27749!
llvm-svn: 271244
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstructionCombining.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstructionCombining.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp index 7a5964519a7..9e97d7b2cc0 100644 --- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -2388,6 +2388,7 @@ Instruction *InstCombiner::visitExtractValueInst(ExtractValueInst &EV) { static bool isCatchAll(EHPersonality Personality, Constant *TypeInfo) { switch (Personality) { case EHPersonality::GNU_C: + case EHPersonality::GNU_C_SjLj: case EHPersonality::Rust: // The GCC C EH and Rust personality only exists to support cleanups, so // it's not clear what the semantics of catch clauses are. @@ -2399,6 +2400,7 @@ static bool isCatchAll(EHPersonality Personality, Constant *TypeInfo) { // match foreign exceptions (or didn't, before gcc-4.7). return false; case EHPersonality::GNU_CXX: + case EHPersonality::GNU_CXX_SjLj: case EHPersonality::GNU_ObjC: case EHPersonality::MSVC_X86SEH: case EHPersonality::MSVC_Win64SEH: |