2833 Commits

Author SHA1 Message Date
David Blaikie
7d26b99189 Correct assert text from r220923
Noticed in post-commit review by Adrian Prantl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220967 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-31 16:45:36 +00:00
David Blaikie
5f5c65058b PR21408: Workaround the appearance of duplicate variables due to problems when inlining two calls to the same function from the same call site.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220923 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-30 20:20:11 +00:00
David Blaikie
f9219079ac Minimize the scope of some variables, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220759 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-28 02:57:26 +00:00
David Blaikie
bcc5753df8 Remove some unnecessary casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220658 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-26 23:37:04 +00:00
Frederic Riss
ab08da75d7 Sink DwarfUnit::constructImportedEntityDIE into DwarfCompileUnit.
So that it has access to getOrCreateGlobalVariableDIE. If we ever support
decsribing using directive in C++ classes (thus requiring support in type
units), it will certainly use another mechanism anyway.

Differential Revision: http://reviews.llvm.org/D5975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220594 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-24 21:31:09 +00:00
David Blaikie
7f6ba1758b DebugInfo: Sink DwarfDebug::ScopeVariables down into DwarfFile
(part of refactoring to allow subprogram emission in both the skeleton
and main units to enable -gmlt-like data to be included in the skeleton
for live inlined backtracing purposes)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220578 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-24 17:57:34 +00:00
David Blaikie
3ad7d41947 Remove DwarfDebug::FirstCU as it has no use
It was only being used as a flag to identify the lack of debug info from
within endModule - use the section labels for that instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220575 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-24 17:53:38 +00:00
Timur Iskhodzhanov
92e132a36f Fix PR21189 -- Emit symbol subsection required to debug LLVM-built binaries with VS2012+
Reviewed at http://reviews.llvm.org/D5772

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220544 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-24 01:27:45 +00:00
David Blaikie
8a5eafb58d DebugInfo: Remove DwarfDebug::addScopeVariable now that it's just a trivial wrapper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220542 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-24 00:43:47 +00:00
David Blaikie
991327143f DebugInfo: Remove DwarfDebug::CurrentFnArguments since we have to handle argument ordering of other arguments (abstract arguments) in the same way and already have code for that too.
While refactoring this code I was confused by both the name I had
introduced (addNonArgumentVariable... but it has all this logic to
handle argument numbering and keep things in order?) and by the
redundancy. Seems when I fixed the misordered inlined argument handling,
I didn't realize it was mostly redundant with the argument ordering code
(which I may've also written, I'm not sure). So let's just rely on the
more general case.

The only oddity in output this produces is that it means when we emit
all the variables for the current function, we don't track when we've
finished the argument variables and are about to start the local
variables and insert DW_AT_unspecified_parameters (for varargs
functions) there. Instead it ends up after the local variables, scopes,
etc. But this isn't invalid and doesn't cause DWARF consumers problems
that I know of... so we'll just go with that because it makes the code
nice & simple.

(though, let's see what the buildbots have to say about this - *crosses
fingers*)

There will be some cleanup commits to follow to remove the now trivial
wrappers, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220527 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 22:27:50 +00:00
David Blaikie
48ba51a8cd DebugInfo: Sink DwarfDebug::addNonArgumentScopeVariable into DwarfFile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220520 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 22:04:30 +00:00
David Blaikie
78f043e90a DebugInfo: Remove DwarfDebug::addCurrentFnArgument declaration now that it's moved to DwarfFile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220515 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 21:53:17 +00:00
David Blaikie
129ab6c6c5 DebugInfo: Simplify/tidy/correct global variable decl/def emission handling.
This fixes a bug (introduced by fixing the IR emitted from Clang where
the definition of a static member would be scoped within the class,
rather than within its lexical decl context) where the definition of a
static variable would be placed inside a class.

It also improves source fidelity by scoping static class member
definitions inside the lexical decl context in which tehy are written
(eg: namespace n { class foo { static int i; } int foo::i; } - the
definition of 'i' will be within the namespace 'n' in the DWARF output
now).

Lastly, and the original goal, this reduces debug info size slightly
(and makes debug info easier to read, etc) by placing the definitions of
non-member global variables within their namespace, rather than using a
separate namespace-scoped declaration along with a definition at global
scope.

Based on patches and discussion with Frédéric.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220497 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 19:12:43 +00:00
David Blaikie
3d71678283 Remove explicit (void) use of DwarfFile::DD that was accidentally left in r220452.
Caught in post-commit review by Frédéric.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220487 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 16:12:58 +00:00
David Blaikie
87e9d8c051 [DebugInfo] Sink DwarfDebug::addCurrentFnArgument down into DwarfFile.
Variable handling will be sunk into DwarfFile so that abstract variables
and the like can be shared across multiple CUs (to handle cross-CU
inlining, for example).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220453 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 00:16:05 +00:00
David Blaikie
22a01da9de [DebugInfo] Add DwarfDebug& to DwarfFile.
Use the DwarfDebug in one function that previously took it as a
parameter, and lay the foundation for use this for other operations
coming soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220452 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 00:16:03 +00:00
David Blaikie
ee129ed18d [DebugInfo] Remove LexicalScopes::isCurrentFunctionScope and CSE a use of LexicalScopes::getCurrentFunctionScope
Now that we're sure the only root (non-abstract) scope is the current
function scope, there's no need for isCurrentFunctionScope, the property
can be tested directly instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220451 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-23 00:06:27 +00:00
Rafael Espindola
45968c54e9 Fix a bit of confusion about .set and produce more readable assembly.
Every target we support has support for assembly that looks like

a = b - c
.long a

What is special about MachO is that the above combination suppresses the
production of a relocation.

With this change we avoid producing the intermediary labels when they don't
add any value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220256 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-21 01:17:30 +00:00
Rafael Espindola
33966cf988 Make AsmPrinter::EmitLabelOffsetDifference a static helper and simplify.
It had exactly one caller in a position where we know hasSetDirective is true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220250 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-21 00:25:49 +00:00
Rafael Espindola
90ce9f70e2 Simplify handling of --noexecstack by using getNonexecutableStackSection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219799 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-15 16:12:52 +00:00
David Blaikie
2b0657e28f Revert some parts of r196288 that were confusing and untested.
If we figure out why they should be here, let's add some testing of some
kind so we can better demonstrate why it's needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219694 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-14 17:12:02 +00:00
Adrian Prantl
2273ca1302 Add an assertion about the integrity of the iterator.
Broken parent scope pointers in inlined DIVariables can cause
ensureAbstractVariableIsCreated to insert new abstract scopes, thus
invalidating the iterator in this loop and leading to hard-to-debug
crashes. Useful when manually reducing IR for testcases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219628 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-13 20:44:58 +00:00
David Blaikie
68084538cb Simplify a few uses of DwarfDebug::SPMap
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219510 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 16:59:52 +00:00
Timur Iskhodzhanov
17dbd06faf Reorder functions in WinCodeViewLineTables.cpp [NFC]
This helps read the comments and understand the code in a natural order

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219508 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 16:05:32 +00:00
Timur Iskhodzhanov
a560067ac9 Fix a small typo, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219492 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 12:52:58 +00:00
David Blaikie
0c3d37644a Sink the per-CU part of DwarfDebug::finishSubprogramDefinitions into DwarfCompileUnit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219477 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 06:39:29 +00:00
David Blaikie
43ed8aefd3 Sink most of DwarfDebug::constructAbstractSubprogramScopeDIE down into DwarfCompileUnit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219476 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 06:39:26 +00:00
David Blaikie
df89f0dbaa Avoid unnecessary map lookup/insertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219466 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 03:09:38 +00:00
David Blaikie
127cb8e873 Remove unused parameter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219440 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 20:36:27 +00:00
David Blaikie
db0ec65e79 Sink DwarfDebug::createAndAddScopeChildren down into DwarfCompileUnit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219437 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 20:26:15 +00:00
David Blaikie
7cb5e0f56d Sink DwarfDebug::constructSubprogramScopeDIE down into DwarfCompileUnit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219436 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 20:21:36 +00:00
David Blaikie
5465cc6741 Sink DwarfDebug::createScopeChildrenDIE down into DwarfCompileUnit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219422 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 18:24:28 +00:00
David Blaikie
81a95a816b Sink DwarfDebug.cpp::constructVariableDIE into DwarfCompileUnit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219419 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 17:56:39 +00:00
David Blaikie
4710301da5 Move DwarfUnit::constructVariableDIE down to DwarfCompileUnit, since it's only needed there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219418 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 17:56:36 +00:00
David Blaikie
12a37fc6e0 Sink DwarfDebug::constructLexicalScopeDIE into DwarfCompileUnit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219414 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 17:08:42 +00:00
David Blaikie
44524f4e77 Missing reformatting
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219413 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 17:08:38 +00:00
David Blaikie
3fcb9f3ea5 Sink DwarfDebug::constructInlinedScopeDIE into DwarfCompileUnit
This introduces access to the AbstractSPDies map from DwarfDebug so
DwarfCompileUnit can access it. Eventually this'll sink down to
DwarfFile, but it'll still be generically accessible - not much
encapsulation to provide it. (constructInlinedScopeDIE could stay
further up, in DwarfFile to avoid exposing this - but I don't think
that's particularly better)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219411 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 16:50:53 +00:00
David Blaikie
7ed0e6d0c6 Push DwarfDebug::attachRangesOrLowHighPC down into DwarfCompileUnit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219372 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 00:21:42 +00:00
David Blaikie
cbb705d900 Sink DwarfDebug::addScopeRangeList down into DwarfCompileUnit
(& add a few accessors/make a couple of things public for this - it's a
bit of a toss-up, but I think I prefer it this way, keeping some more of
the meaty code down in DwarfCompileUnit - if only to make for smaller
implementation files, etc)

I think we could simplify range handling a bit if we removed the range
lists from each unit and just put a single range list on DwarfDebug,
similar to address pooling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219370 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-09 00:11:39 +00:00
David Blaikie
e988932602 Sink DwarfUnit::addSectionDelta into DwarfCompileUnit, the only place it's needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219364 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 23:30:05 +00:00
David Blaikie
f616a4ba06 Reformat some stuff I missed in recent previous commits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219356 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 23:09:42 +00:00
David Blaikie
46e29705c6 Sink and coalesce DwarfDebug.cpp::addSectionLabel and DwarfUnit::addSectionLabel down into DwarfCompileUnit::addSectionLabel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219351 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 22:46:27 +00:00
David Blaikie
3e9c8c557b DebugInfo: The rest of pushing DwarfDebug::constructScopeDIE down into DwarfCompileUnit
Funnily enough, I copied it, but didn't actually remove the original in
r219345. Let's do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219346 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 22:23:10 +00:00
David Blaikie
3f2f9695c5 Push DwarfDebug::constructScopeDIE down into DwarfCompileUnit
One of many steps to generalize subprogram emission to both the DWO and
non-DWO sections (to emit -gmlt-like data under fission). Once the
functions are pushed down into DwarfCompileUnit some of the data
structures will be pushed at least into DwarfFile so that they can be
unique per-file, allowing emission to both files independently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219345 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 22:20:02 +00:00
Timur Iskhodzhanov
0a5843e3b1 Fix COFF section index relocation should be 16 bits, not 32
Original patch by Andrey Guskov!
http://reviews.llvm.org/D5651



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219327 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 18:01:49 +00:00
Benjamin Kramer
8ea5b7120f DbgValueHistoryCalculator: Store modified registers in a BitVector instead of std::set.
And iterate over the smaller map instead of the larger set first.  Reduces the time spent in
calculateDbgValueHistory by 30-40%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219123 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-06 15:31:04 +00:00
David Blaikie
d53f7f4b22 DebugInfo: Sink constructImportedEntityDIE down into DwarfUnit from DwarfDebug.
It was just calling a bunch of DwarfUnit functions anyway, as can be
seen by the simplification of removing "TheCU" from all the function
calls in the implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219103 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-06 05:37:24 +00:00
David Blaikie
446817b4ef Remove unused map
This became unnecessary/unused in r208636

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219085 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-05 16:31:13 +00:00
Benjamin Kramer
dbc6d9b9d7 Remove unnecessary copying or replace it with moves in a bunch of places.
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219061 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-04 16:55:56 +00:00
David Blaikie
53b95f3fb1 Sink DwarfDebug::updateSubprogramScopeDIE into DwarfCompileUnit
This requires exposing some of the current function state from
DwarfDebug. I hope there's not too much of that to expose as I go
through all the functions, but it still seems nicer to expose singular
data down to multiple consumers, than have consumers expose raw mapping
data structures up to DwarfDebug for building subprograms.

Part of a series of refactoring to allow subprograms in both the
skeleton and dwo CUs under Fission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219060 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-04 16:24:00 +00:00