| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 248070
|
|
|
|
|
|
|
|
| |
of ASTSourceDescriptor. It was effectively a static function.
NFC.
llvm-svn: 248069
|
|
|
|
|
|
|
|
|
| |
We don't want a skeleton CU when generating debug info for the module
itself.
NFC.
llvm-svn: 248062
|
|
|
|
|
|
|
|
|
|
|
| |
The signature may not have been computed at the time the module reference
is generated (e.g.: in the future while emitting debug info for a clang
module). Using the full module name is safe because each clang module may
only have a single definition.
NFC.
llvm-svn: 248037
|
|
|
|
|
|
|
|
| |
Patch by Pedro Ferreira.
Reviewers: pekka.jaaskelainen
Differential Revision: http://reviews.llvm.org/D12855
llvm-svn: 247676
|
|
|
|
| |
llvm-svn: 247448
|
|
|
|
| |
llvm-svn: 247447
|
|
|
|
|
|
| |
in CGDebugInfo.cpp: MDString::get() copies its arguments.
llvm-svn: 247445
|
|
|
|
|
|
|
|
|
| |
clang modules, if -dwarf-ext-refs (DebugTypesExtRefs) is specified.
This reimplements r247369 in about a third of the amount of code.
Thanks to David Blaikie pointing this out in post-commit review!
llvm-svn: 247432
|
|
|
|
|
|
|
|
| |
defined in"
This reverts commit r247369 to facilitate reviewing of the following patch.
llvm-svn: 247431
|
|
|
|
|
|
| |
clang modules, if -dwarf-ext-refs (DebugTypesExtRefs) is specified.
llvm-svn: 247369
|
|
|
|
| |
llvm-svn: 247368
|
|
|
|
|
|
|
| |
The type of a member pointer is incomplete if it has no inheritance
model. This lets us reuse more general logic already embedded in clang.
llvm-svn: 247346
|
|
|
|
| |
llvm-svn: 247319
|
|
|
|
| |
llvm-svn: 247081
|
|
|
|
|
|
|
|
|
|
| |
When -fmodule-format is set to "obj", emit debug info for all types
declared in a module or referenced by a declaration into the module's
object file container.
This patch adds support for Objective-C types and methods.
llvm-svn: 247068
|
|
|
|
|
|
| |
them more than once. (NFC)
llvm-svn: 246231
|
|
|
|
|
|
|
|
|
|
|
| |
Usually debug info is created on the fly while during codegen.
With this API it becomes possible to create standalone debug info
for types that are not referenced by any code, such as emitting debug info
for a clang module or for implementing something like -gfull.
Because on-the-fly debug info generation may still insert retained types
on top of them, all RetainedTypes are uniqued in CGDebugInfo::finalize().
llvm-svn: 246210
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to enable the use of external type references in the debug info
(a.k.a. module debugging).
The driver expands -gmodules to "-g -fmodule-format=obj -dwarf-ext-refs"
and passes that to cc1. All this does at the moment is set a flag
codegenopts.
http://reviews.llvm.org/D11958
llvm-svn: 246192
|
|
|
|
|
|
|
|
| |
I stared at `false /*declaration*/` for quite some time before giving up
and checking the actual function to see what it meant. Replacing with
`/* isDefinition = */ false` to save myself effort later.
llvm-svn: 246095
|
|
|
|
|
|
|
|
|
|
| |
After r244870 flush() will only compare two null pointers and return,
doing nothing but wasting run time. The call is not required any more
as the stream and its SmallString are always in sync.
Thanks to David Blaikie for reviewing.
llvm-svn: 244928
|
|
|
|
|
|
| |
copied (rather than RVO'd) that would be broken, make it movable instead
llvm-svn: 244838
|
|
|
|
|
|
|
|
| |
Adjust to LLVM DIBuilder API changes in r243764, using
`createAutoVariable()` and `createParameterVariable()` in place of
`createLocalVariable()`. No real functionality change here.
llvm-svn: 243765
|
|
|
|
|
|
|
|
|
| |
Change `getOrCreateLimitedType()` to return a `DICompositeType` and
remove the casts from its callers. Inside, I've strengthened a `cast`
from `DICompositeTypeBase`, but the casts in the callers already prove
that this is safe. There should be no functionality change here.
llvm-svn: 243155
|
|
|
|
|
|
|
| |
Change `StaticDataMemberCache` to store references to `DIDerivedType`
directly, and remove now-unnecessary casts from the accessors.
llvm-svn: 243129
|
|
|
|
|
|
|
| |
standards. Remove several hilariously out-of-date and redundant comments
and move the non-redundant ones into the header file.
llvm-svn: 241733
|
|
|
|
|
|
|
|
|
|
| |
different function signatures. (Previously clang would emit all block
pointer types with the type of the first block pointer in the compile
unit.)
rdar://problem/21602473
llvm-svn: 241534
|
|
|
|
|
|
|
|
|
|
|
| |
(__block_literal_generic).
The arbitrary nature of the location confuses lldb and prevents type
uniquing.
rdar://problem/21602473
llvm-svn: 241511
|
|
|
|
|
|
|
|
|
|
| |
typedefs, and records"
Caused PR24008.
This reverts commit r241154.
llvm-svn: 241177
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
typedefs, and records
Function static variables, typedefs and records (class, struct or union) declared inside
a lexical scope were associated with the function as their parent scope, rather than the
lexical scope they are defined or declared in.
This fixes PR19238
Patch by: amjad.aboud@intel.com
Differential Revision: http://reviews.llvm.org/D9760
llvm-svn: 241154
|
|
|
|
| |
llvm-svn: 241088
|
|
|
|
|
|
|
|
|
| |
This allows a module-aware debugger such as LLDB to import the currently
visible modules before dropping into the expression evaluator.
rdar://problem/20965932
llvm-svn: 241084
|
|
|
|
| |
llvm-svn: 240664
|
|
|
|
| |
llvm-svn: 240382
|
|
|
|
|
|
| |
rdar://problem/20571359
llvm-svn: 239781
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The representation of a pointer-to-member in the MS ABI is governed by
the layout of the relevant class or if a model has been explicitly
specified. If no model is specified, then an appropriate
"worst-case-scenario" model is implicitly chosen if, and only, if the
pointer-to-member type's representation was needed.
Debug info cannot force a pointer-to-member type to have a
representation so do not try to query the size of such a type unless we
know it is safe to do so.
llvm-svn: 238259
|
|
|
|
| |
llvm-svn: 237948
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and as artificial local variables in the debug info.
This is a follow-up to r236059. We can't get rid of the local variables
entirely because the gdb buildbot depends on them, but we can mark them
as artificial while still emitting the correct debug info. As I learned
from review comments other compilers also follow this model.
A paired commit in LLVM temporarily relaxes the debug info verifier to
not check the integrity of DW_OP_bit_pieces of artificial variables.
rdar://problem/20730771
llvm-svn: 236125
|
|
|
|
|
|
|
|
|
|
| |
LLVM r236120 renamed debug info IR constructs to use a `DI` prefix, now
that the `DIDescriptor` hierarchy has been gone for about a week. This
commit was generated using the rename-md-di-nodes.sh upgrade script
attached to PR23080, followed by running clang-format-diff.py on the
`lib/` portion of the patch.
llvm-svn: 236121
|
|
|
|
|
|
| |
This reverts commit r236059 as it breaks the gdb buildbot.
llvm-svn: 236110
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the debug info. This patch deletes a hack that emits the members
of local anonymous unions as local variables.
Besides being morally wrong, the existing representation using local
variables breaks internal assumptions about the local variables' storage
size.
Compiling
```
void fn1() {
union {
int i;
char c;
};
i = c;
}
```
with -g -O3 -verify will cause the verifier to fail after SROA splits
the 32-bit storage for the "local variable" c into two pieces because the
second piece is clearly outside the 8-bit range that is expected for a
variable of type char. Given the choice I'd rather fix the debug
representation than weaken the verifier.
Debuggers generally already know how to deal with anonymous unions when
they are members of C++ record types, but they may have problems finding
the local anonymous struct members in the expression evaluator.
rdar://problem/20730771
llvm-svn: 236059
|
|
|
|
| |
llvm-svn: 235682
|
|
|
|
|
|
|
|
| |
An upcoming LLVM commit will remove the `DIArray` and `DITypeArray`
typedefs that shadow `DebugNodeArray` and `MDTypeRefArray`,
respectively. Use those types directly.
llvm-svn: 235412
|
|
|
|
|
|
|
| |
An upcoming LLVM commit will delete all the remaining subclasses of (the
already deleted) `DIDescriptor`. Stop using them.
llvm-svn: 235403
|
|
|
|
|
|
|
|
| |
Prepare for the deletion in LLVM of the subclasses of (the already
deleted) `DIScope` by using the raw pointers they were wrapping
directly.
llvm-svn: 235355
|
|
|
|
|
|
|
|
|
|
|
| |
Subclasses of (the already deleted) `DIType` will be deleted by an
upcoming LLVM commit. Remove references.
While `DICompositeType` wraps `MDCompositeTypeBase` and `DIDerivedType`
wraps `MDDerivedTypeBase`, most uses of each really meant the more
specific `MDCompositeType` and `MDDerivedType`. I updated accordingly.
llvm-svn: 235350
|
|
|
|
|
|
|
| |
`DIType` is going to be deleted by an upcoming LLVM commit, so replace
uses with `MDType*`.
llvm-svn: 235330
|
|
|
|
|
|
|
| |
An upcoming LLVM commit will delete `DIScope`, so update users to
`MDScope*`.
llvm-svn: 235326
|
|
|
|
|
|
| |
Prepare for upcoming LLVM change to delete `DIDescriptor`.
llvm-svn: 235245
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LLVM r235111 changed the `DIBuilder` API to stop using `DIDescriptor`
and its subclasses. Rolled into this was some tightening up of types:
- Scopes: `DIDescriptor` => `MDScope*`.
- Generic debug nodes: `DIDescriptor` => `DebugNode*`.
- Subroutine types: `DICompositeType` => `MDSubroutineType*`.
- Composite types: `DICompositeType` => `MDCompositeType*`.
Note that `DIDescriptor` wraps `MDNode`, and `DICompositeType` wraps
`MDCompositeTypeBase`.
It's this new type strictness that requires changes here.
llvm-svn: 235112
|