1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test
Adrian Prantl 3eb19e0717 Don't emit CFI instructions at the end of a function
When functions are terminated by unreachable instructions, the last
instruction might trigger a CFI instruction to be generated. However,
emitting it would be be illegal since the function (and thus the FDE
the CFI is in) has already ended with the previous instruction.

Darwin's dwarfdump --verify --eh-frame complains about this and the
specification supports this.
Relevant bits from the DWARF 5 standard (6.4 Call Frame Information):

"[The] address_range [field in an FDE]: The number of bytes of
 program instructions described by this entry."

"Row creation instructions: [...]
 The new location value is always greater than the current one."
The first quotation implies that a CFI cannot describe a target
address outside of the enclosing FDE's range.

rdar://problem/26244988

Differential Revision: https://reviews.llvm.org/D32246

llvm-svn: 301219
2017-04-24 18:45:59 +00:00
..
Analysis [SCEV] Fix exponential time complexity by caching 2017-04-24 00:09:46 +00:00
Assembler
Bindings
Bitcode
BugPoint
CodeGen Don't emit CFI instructions at the end of a function 2017-04-24 18:45:59 +00:00
DebugInfo Add a testcase for DIExpression(DW_OP_stack_value) 2017-04-24 18:11:38 +00:00
Examples
ExecutionEngine
Feature
FileCheck
Instrumentation
Integer
JitListener
LibDriver
Linker
LTO
MC [Arch64AsmParser] better diagnostic for isb 2017-04-24 08:22:20 +00:00
Object
ObjectYAML
Other
SymbolRewriter
TableGen [globalisel][tablegen] Add support for RegisterOperand. 2017-04-22 15:53:21 +00:00
ThinLTO/X86
tools [llvm-pdbdump] Merge functionality of graphical and text dumpers. 2017-04-24 17:47:52 +00:00
Transforms Revert "Compute safety information in a much finer granularity." 2017-04-24 18:25:07 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt Add a dependency from llvm/test to llvm-cvtres. 2017-04-21 20:45:11 +00:00
lit.cfg
lit.site.cfg.in
TestRunner.sh