llvm-project/llvm/test
Rafael Espindola d09b416943 Use assembler expressions to lay out the EH LSDA.
Rely on the assembler to finalize the layout of the DWARF/Itanium
exception-handling LSDA. Rather than calculate the exact size of each
thing in the LSDA, use assembler directives:

    To emit the offset to the TTBase label:

.uleb128 .Lttbase0-.Lttbaseref0
.Lttbaseref0:

    To emit the size of the call site table:

.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
... call site table entries ...
.Lcst_end0:

    To align the type info table:

... action table ...
.balign 4
.long _ZTIi
.long _ZTIl
.Lttbase0:

Using assembler directives simplifies the compiler and allows switching
the encoding of offsets in the call site table from udata4 to uleb128 for
a large code size savings. (This commit does not change the encoding.)

The combination of the uleb128 followed by a balign creates an unfortunate
dependency cycle that the assembler must sometimes resolve either by
padding an LEB or by inserting zero padding before the type table. See
PR35809 or GNU as bug 4029.

Patch by Ryan Prichard!

llvm-svn: 324749
2018-02-09 17:00:25 +00:00
..
Analysis [AMDGPU] Switch to the new addr space mapping by default 2018-02-02 16:07:16 +00:00
Assembler Revert "[DebugInfo] Improvements to representation of enumeration types (PR36168)" 2018-02-07 20:28:47 +00:00
Bindings [LLVM-C] Add Accessors For A Module's Source File Name 2018-01-30 21:34:29 +00:00
Bitcode [ThinLTO] Serialize WithGlobalValueDeadStripping index flag for distributed backends 2018-02-07 04:05:59 +00:00
BugPoint [bugpoint] Report non-existent opt binary 2018-02-09 06:09:15 +00:00
CodeGen Use assembler expressions to lay out the EH LSDA. 2018-02-09 17:00:25 +00:00
DebugInfo Pre-emptively fix test case for windows path separators 2018-02-09 15:39:04 +00:00
Examples
ExecutionEngine Don't try to run MCJIT/OrcJIT EH tests when C++ library is statically linked 2018-01-08 02:48:41 +00:00
Feature Mark two tests REQUIRES: x86-registered-backend 2018-01-31 07:32:03 +00:00
FileCheck [FileCheck] - Fix possible buffer out of bounds access when parsing --check-prefix. 2018-01-16 08:09:24 +00:00
Instrumentation [hwasan] Fix kernel instrumentation of stack. 2018-02-09 00:59:10 +00:00
Integer
JitListener
LTO LTO: Include live bit in ThinLTO cache key. 2018-02-09 05:58:55 +00:00
Linker [DWARF] Regularize dumping strings from line tables. 2018-02-05 20:43:15 +00:00
MC [Hexagon] Express calling conventions via .td file instead of hand-coding 2018-02-09 15:30:02 +00:00
Object Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
ObjectYAML [WebAssembly] Remove debug names from symbol table 2018-01-17 19:28:43 +00:00
Other Re-commit : [PowerPC] Add handling for ColdCC calling convention and a pass to mark 2018-01-30 16:17:22 +00:00
SafepointIRVerifier
SymbolRewriter
TableGen [TableGen] Make sure !if is evaluated throughout class inheritance. 2018-01-30 19:29:21 +00:00
ThinLTO/X86 [ThinLTO] Remove dead and dropped symbol declarations when possible 2018-02-06 00:43:39 +00:00
Transforms [InstCombine] Add constant vector support for X udiv C, where C >= signbit 2018-02-09 10:43:59 +00:00
Unit
Verifier [GISel]: Verify COPIES involving generic registers. 2018-02-09 01:27:23 +00:00
YAMLParser
tools Change "UNSUPPORTED: windows" to be "UNSUPPORTED: system-windows" so that test is actually skipped on Windows. 2018-02-08 18:45:16 +00:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg.py Don't try to run MCJIT/OrcJIT EH tests when C++ library is statically linked 2018-01-08 02:48:41 +00:00
lit.site.cfg.py.in