#
e1e7372e |
| 06-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Unions are always sealed
It is impossible to inherit from a union. We are missing a way to represent this in IR for classes/structs...
llvm-svn: 274675
|
#
820ca540 |
| 06-Jul-2016 |
Adrian McCarthy <amccarth@google.com> |
Retry: "Emit CodeView type records for nested classes."
Now with a corrected test to account for a recently supported properties bit in the debug info of a struct.
Original review: http://reviews.l
Retry: "Emit CodeView type records for nested classes."
Now with a corrected test to account for a recently supported properties bit in the debug info of a struct.
Original review: http://reviews.llvm.org/D21939
This reverts commit 970c3fd497a28d25dd69526eb52594a696c37968.
llvm-svn: 274661
show more ...
|
#
7649d838 |
| 06-Jul-2016 |
Adrian McCarthy <amccarth@google.com> |
Revert "Emit CodeView type records for nested classes."
This reverts commit 256b29322c827a2d94da56468c936596f5509032.
llvm-svn: 274632
|
#
024a7b63 |
| 06-Jul-2016 |
Adrian McCarthy <amccarth@google.com> |
Emit CodeView type records for nested classes.
Differential Revision: http://reviews.llvm.org/D21939
llvm-svn: 274629
|
#
e092dad7 |
| 02-Jul-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Set the Nested and Scoped ClassOptions based on the scope chain
These are set on both the declaration record and the definition record.
llvm-svn: 274410
|
#
08bd744c |
| 01-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Include the offset of nested members
Given something like: struct S { int a; struct { int b; }; };
We would fail to give 'b' offset 4. Instead, we would give it the offset i
[CodeView] Include the offset of nested members
Given something like: struct S { int a; struct { int b; }; };
We would fail to give 'b' offset 4. Instead, we would give it the offset it has inside of it's struct.
llvm-svn: 274400
show more ...
|
#
6bdc24e7 |
| 01-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Pretty print anonymous scopes
A namespace without a name should be written out as `anonymous namespace' while a tag type without a name should be written out as <unnamed-tag>.
llvm-svn:
[CodeView] Pretty print anonymous scopes
A namespace without a name should be written out as `anonymous namespace' while a tag type without a name should be written out as <unnamed-tag>.
llvm-svn: 274399
show more ...
|
#
ad56ea31 |
| 01-Jul-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Don't record UDTs for anonymous structs
MSVC makes up names for these anonymous structs, but we don't (yet). Eventually Clang should use getTypedefNameForAnonDecl() to put some name in th
[codeview] Don't record UDTs for anonymous structs
MSVC makes up names for these anonymous structs, but we don't (yet). Eventually Clang should use getTypedefNameForAnonDecl() to put some name in the debug info, and we can update the test case when that happens.
llvm-svn: 274391
show more ...
|
#
c92e9469 |
| 01-Jul-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Assert that our CV type records are valid
We were asserting that our type records were valid when emitting assembly, but not when emitting an object file.
I've been seeing lots of LNK128
[codeview] Assert that our CV type records are valid
We were asserting that our type records were valid when emitting assembly, but not when emitting an object file.
I've been seeing lots of LNK1285 errors (corrupt PDB) during incremental debug self-host builds with the MSVC linker, and hopefully this will catch some of them earlier.
llvm-svn: 274373
show more ...
|
#
b5af11df |
| 01-Jul-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Add DISubprogram::ThisAdjustment
Summary: This represents the adjustment applied to the implicit 'this' parameter in the prologue of a virtual method in the MS C++ ABI. The adjustment is
[codeview] Add DISubprogram::ThisAdjustment
Summary: This represents the adjustment applied to the implicit 'this' parameter in the prologue of a virtual method in the MS C++ ABI. The adjustment is always zero unless multiple inheritance is involved.
This increases the size of DISubprogram by 8 bytes, unfortunately. The adjustment really is a signed 32-bit integer. If this size increase is too much, we could probably win it back by splitting out a subclass with info specific to virtual methods (virtuality, vindex, thisadjustment, containingType).
Reviewers: aprantl, dexonsmith
Subscribers: aaboud, amccarth, llvm-commits
Differential Revision: http://reviews.llvm.org/D21614
llvm-svn: 274325
show more ...
|
#
9319cbc0 |
| 30-Jun-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Implement support for bitfields in LLVM
CodeView need to know the offset of the storage allocation for a bitfield. Encode this via the "extraData" field in DIDerivedType and introduced a
[CodeView] Implement support for bitfields in LLVM
CodeView need to know the offset of the storage allocation for a bitfield. Encode this via the "extraData" field in DIDerivedType and introduced a new flag, DIFlagBitField, to indicate whether or not a member is a bitfield.
This fixes PR28162.
Differential Revision: http://reviews.llvm.org/D21782
llvm-svn: 274200
show more ...
|
#
d8db1e17 |
| 26-Jun-2016 |
Nico Weber <nicolasweber@gmx.de> |
Revert r273807 (and r273809, r273810), it caused PR28311
llvm-svn: 273815
|
#
9fc3d0df |
| 26-Jun-2016 |
Amjad Aboud <amjad.aboud@intel.com> |
Fixed build failure (due to unused variable error) in r273807.
llvm-svn: 273810
|
#
ac97be64 |
| 26-Jun-2016 |
Amjad Aboud <amjad.aboud@intel.com> |
Fixed build failure (due to unused variable error) in r273807.
llvm-svn: 273809
|
#
ff976c99 |
| 26-Jun-2016 |
Amjad Aboud <amjad.aboud@intel.com> |
[codeview] Improved array type support.
Added support for: 1. Multi dimension array. 2. Array of structure type, which previously was declared incompletely. 3. Dynamic size array.
Differential Revi
[codeview] Improved array type support.
Added support for: 1. Multi dimension array. 2. Array of structure type, which previously was declared incompletely. 3. Dynamic size array.
Differential Revision: http://reviews.llvm.org/D21526
llvm-svn: 273807
show more ...
|
#
10dd55c5 |
| 24-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Emit parameter variables in the right order
Clang emits them in reverse order to conform to the ABI, which requires left-to-right destruction. As a result, the order doesn't fall out natu
[codeview] Emit parameter variables in the right order
Clang emits them in reverse order to conform to the ABI, which requires left-to-right destruction. As a result, the order doesn't fall out naturally, and we have to sort things out in the backend.
Fixes PR28213
llvm-svn: 273696
show more ...
|
#
9f7f3e1e |
| 24-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Emit base class information from DW_TAG_inheritance nodes
There are two remaining issues here: 1. No vbptr information 2. Need to mention indirect virtual bases
Getting indirect virtual
[codeview] Emit base class information from DW_TAG_inheritance nodes
There are two remaining issues here: 1. No vbptr information 2. Need to mention indirect virtual bases
Getting indirect virtual bases is just a matter of adding an "indirect" flag, emitting them in the frontend, and ignoring them when appropriate for DWARF.
All virtual bases use the same artificial vbptr field, so I think the vbptr offset will be best represented by an implicit __vbptr$ClassName member similar to our existing __vptr$ member.
llvm-svn: 273688
show more ...
|
#
4b63a98d |
| 23-Jun-2016 |
Hans Wennborg <hans@hanshq.net> |
[codeview] Add classes and unions to the Local/Global UDTs lists
Differential Revision: http://reviews.llvm.org/D21655
llvm-svn: 273626
|
#
b510b458 |
| 23-Jun-2016 |
Hans Wennborg <hans@hanshq.net> |
[codeview] Emit retained types
Differential Revision: http://reviews.llvm.org/D21630
llvm-svn: 273579
|
#
9a519a09 |
| 22-Jun-2016 |
Hans Wennborg <hans@hanshq.net> |
[codeview] Write LF_UDT_SRC_LINE records (PR28251)
Differential Revision: http://reviews.llvm.org/D21621
llvm-svn: 273495
|
#
156a7239 |
| 22-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Add IntroducingVirtual debug info flag
CodeView needs to know if a virtual method was introduced in the current class, and base classes may not have complete type information, so we need
[codeview] Add IntroducingVirtual debug info flag
CodeView needs to know if a virtual method was introduced in the current class, and base classes may not have complete type information, so we need to thread this bit through from the frontend.
llvm-svn: 273453
show more ...
|
#
643dd836 |
| 22-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[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 type
[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
show more ...
|
#
1ab7eac8 |
| 22-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Remove ClassInfoMap
From a design perspective, complete record type emission should not depend on information from other complete record types.
Currently this map is unused, and needless
[codeview] Remove ClassInfoMap
From a design perspective, complete record type emission should not depend on information from other complete record types.
Currently this map is unused, and needlessly accumulates data throughout compilation.
llvm-svn: 273431
show more ...
|
#
0c5d874b |
| 22-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Improve names of types in scopes and member function ids
We now include namespace scope info in LF_FUNC_ID records and we emit LF_MFUNC_ID records for member functions as we should.
Clas
[codeview] Improve names of types in scopes and member function ids
We now include namespace scope info in LF_FUNC_ID records and we emit LF_MFUNC_ID records for member functions as we should.
Class names are now fully qualified, which is what MSVC does.
Add a little bit of scaffolding to handle ThisAdjustment when it arrives in DISubprogram.
llvm-svn: 273358
show more ...
|
#
9ff936cf |
| 21-Jun-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Fix DenseMap pointer invalidation bug
When you have a map holding a unique_ptr, hold a reference to the raw pointer instead of the unique pointer. The unique_ptr will be moved on rehash.
[codeview] Fix DenseMap pointer invalidation bug
When you have a map holding a unique_ptr, hold a reference to the raw pointer instead of the unique pointer. The unique_ptr will be moved on rehash.
llvm-svn: 273268
show more ...
|