mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
729fe8041c
I've taken the following steps to add unwinding support from inline assembly: 1) Add a new `unwind` "attribute" (like `sideeffect`) to the asm syntax: ``` invoke void asm sideeffect unwind "call thrower", "~{dirflag},~{fpsr},~{flags}"() to label %exit unwind label %uexit ``` 2.) Add Bitcode writing/reading support + LLVM-IR parsing. 3.) Emit EHLabels around inline assembly lowering (SelectionDAGBuilder + GlobalISel) when `InlineAsm::canThrow` is enabled. 4.) Tweak InstCombineCalls/InlineFunction pass to not mark inline assembly "calls" as nounwind. 5.) Add clang support by introducing a new clobber: "unwind", which lower to the `canThrow` being enabled. 6.) Don't allow unwinding callbr. Reviewed By: Amanieu Differential Revision: https://reviews.llvm.org/D95745 |
||
---|---|---|
.. | ||
analysis.go | ||
bitreader.go | ||
bitwriter.go | ||
dibuilder.go | ||
executionengine_test.go | ||
executionengine.go | ||
InstrumentationBindings.cpp | ||
InstrumentationBindings.h | ||
ir_test.go | ||
ir.go | ||
IRBindings.cpp | ||
IRBindings.h | ||
linker.go | ||
llvm_config.go.in | ||
llvm_dep.go | ||
string_test.go | ||
string.go | ||
support.go | ||
SupportBindings.cpp | ||
SupportBindings.h | ||
target.go | ||
transforms_coroutines.go | ||
transforms_instrumentation.go | ||
transforms_ipo.go | ||
transforms_pmbuilder.go | ||
transforms_scalar.go | ||
version.go |