llvm-project/llvm/test
Reid Kleckner 5ff5ddd0ad [Win64] Insert int3 into trailing empty BBs
Otherwise, the Win64 unwinder considers direct branches to such empty
trailing BBs to be a branch out of the function. It treats such a branch
as a tail call, which can only be part of an epilogue. If the unwinder
misclassifies such a branch as part of the epilogue, it will fail to
unwind the stack further. This can lead to bad stack traces, or failure
to handle exceptions properly. This is described in
https://llvm.org/PR45064#c4, and by the comment at the top of the
X86AvoidTrailingCallPass.cpp file.

It should be safe to insert int3 for such blocks. An empty trailing BB
that reaches this pass is pretty much guaranteed to be unreachable.  If
a program executed such a block, it would fall off the end of the
function.

Most of the complexity in this patch comes from threading through the
"EHFuncletEntry" boolean on the MIRParser and registering the pass so we
can stop and start codegen around it. I used an MIR test because we
should teach LLVM to optimize away these branches as a follow-up.

Reviewed By: hans

Differential Revision: https://reviews.llvm.org/D76531
2020-03-23 08:50:37 -07:00
..
Analysis [X86] More accurately model the cost of horizontal reductions. 2020-03-22 14:20:15 -07:00
Assembler Add support for SHA256 source file checksums in debug info 2020-03-12 16:32:05 -07:00
Bindings
Bitcode Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode 2020-03-11 13:26:06 -07:00
BugPoint
CodeGen [Win64] Insert int3 into trailing empty BBs 2020-03-23 08:50:37 -07:00
DebugInfo PR45181: Fix another invalid DIExpression combination 2020-03-20 11:18:05 -07:00
Demangle
Examples
ExecutionEngine [AsmPrinter] Simplify AsmPrinter::emitXXStructorList after D61547 2020-03-21 23:18:23 -07:00
Feature Remove no un-necessary require for load_extension.ll 2020-02-26 08:29:09 +01:00
FileCheck
IR [AssumeBundles] filter usefull attriutes to preserve 2020-03-13 17:35:47 +01:00
Instrumentation Reland: [Coverage] Revise format to reduce binary size 2020-02-28 18:12:04 -08:00
Integer
JitListener
LTO ThinLTOBitcodeWriter: drop dso_local when a GlobalVariable is converted to a declaration 2020-03-05 18:09:33 -08:00
Linker Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode 2020-03-11 13:26:06 -07:00
MC [mips] Implement .cpadd directive 2020-03-22 23:34:32 +03:00
MachineVerifier
Object [obj2yaml] - SHT_DYNAMIC and SHT_REL* sections: stop dumping sh_entsize field when it has the default value. 2020-03-19 17:25:53 +03:00
ObjectYAML [test] llvm/test/: change llvm-objdump single-dash long options to double-dash options 2020-03-15 17:46:23 -07:00
Other [SLP] Support vectorizing functions provided by vector libs. 2020-03-10 13:10:50 +00:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
ThinLTO/X86 [Object] Change ELFObjectFile<ELFT>::getFileFormatName() to use BFD names 2020-03-16 07:42:04 -07:00
Transforms [Attributor] Handle calls in AAValueConstantRange properly 2020-03-23 10:45:24 -05:00
Unit
Verifier Verifier: Check bswap is supported size 2020-03-22 12:15:25 -04:00
YAMLParser
tools [llvm-readobj] Derive dynamic symtab size from DT_HASH 2020-03-23 12:21:20 +00:00
.clang-format
CMakeLists.txt Revert abb00753 "build: reduce CMake handling for zlib" (PR44780) 2020-03-03 11:03:09 +01:00
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in Revert abb00753 "build: reduce CMake handling for zlib" (PR44780) 2020-03-03 11:03:09 +01:00