1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 14:33:02 +02:00
llvm-mirror/test
Reid Kleckner d912b5cc99 [codeview] Defer emission of all referenced complete records
This is the motivating example:
  struct B { int b; };
  struct A { B *b; };
  int f(A *p) { return p->b->b; }

Clang emits complete types for both A and B because they are required to
be complete, but our CodeView emission would only emit forward
declarations of A and B. This was a consequence of the fact that the A*
type must reference the forward declaration of A, which doesn't
reference B at all.

We can't eagerly emit complete definitions of A and B when we request
the forward declaration's type index because of recursive types like
linked lists. If we did that, our stack usage could get out of hand, and
it would be possible to lower a type while attempting to lower a type,
and we would need to double check if our type is already present in the
TypeIndexMap after all recursive getTypeIndex calls.

Instead, defer complete type emission until after all type lowering has
completed. This ensures that all referenced complete types are emitted,
and that type lowering is not re-entrant.

llvm-svn: 273443
2016-06-22 17:15:28 +00:00
..
Analysis [X86] Make arithmetic operations cost model test saner. NFC. 2016-06-21 20:41:40 +00:00
Assembler IR: Allow metadata attachments on declarations, and fix lazy loaded metadata issue with globals. 2016-06-21 23:42:48 +00:00
Bindings [OCaml] Add functions for accessing metadata nodes. 2016-06-22 03:30:24 +00:00
Bitcode IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
BugPoint
CodeGen [SystemZ] Recognize RISBG opportunities involving a truncate 2016-06-22 16:16:27 +00:00
DebugInfo [codeview] Defer emission of all referenced complete records 2016-06-22 17:15:28 +00:00
Examples
ExecutionEngine Change the default of -relax-relocations. 2016-06-17 17:04:56 +00:00
Feature IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
FileCheck Make check lines not match themselves. 2016-06-16 19:38:48 +00:00
Instrumentation [asan] Do not instrument pointers with address space attributes 2016-06-22 00:15:52 +00:00
Integer
JitListener
LibDriver
Linker ValueMapper: fix assertion when null-mapping a constant for linking metadata 2016-05-28 17:26:03 +00:00
LTO IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
MC AMDGPU: Emit R_AMDGPU_ABS32_{HI,LO} for scratch buffer relocations 2016-06-20 16:59:44 +00:00
Object Forgot to svn add one of my test files for the change in r273207. 2016-06-20 22:27:49 +00:00
ObjectYAML [yaml2obj] Sort MachO LinkEdit write operations based on offset 2016-06-03 16:58:05 +00:00
Other Statistic: Add machine parseable json output 2016-06-15 20:19:16 +00:00
SymbolRewriter
TableGen [Target] Introduce a generic opcode for bitwise OR: G_OR. 2016-06-08 16:12:19 +00:00
ThinLTO/X86 [ThinLTO] Resolve LinkOnceAny 2016-05-26 14:16:52 +00:00
tools [llvm-readobj] - Teach llvm-readobj to print dependencies of SHT_GNU_verdef and refactor dumping method. 2016-06-22 13:43:38 +00:00
Transforms Upgrade old memset/memcpy signatures (without isVolatile argument) in tests 2016-06-22 15:16:06 +00:00
Unit
Verifier Upgrade old memset/memcpy signatures (without isVolatile argument) in tests 2016-06-22 15:16:06 +00:00
YAMLParser
.clang-format
CMakeLists.txt [cmake] Fix builds with LLVM_ENABLE_PIC=0 2016-06-02 16:29:07 +00:00
lit.cfg test: Be consistent with clang's sanitizer lit config 2016-05-23 23:02:11 +00:00
lit.site.cfg.in Add the printing the Mach-O (__LLVM,__bundle) xar archive file section "verbosely" 2016-05-23 21:34:12 +00:00
TestRunner.sh