| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
This reverts commit r205655.
Breaks the compiler-rt build with an assertion failure in LLVM...
reverting while I investigate.
llvm-svn: 205664
|
|
|
|
|
|
|
| |
We also don't need to duplicate the name in the LinkageName field. Just
leave it empty.
llvm-svn: 205655
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See the comment for CodeGenFunction::tryEmitAsConstant that describes
how in some contexts (lambdas) we must not emit references to the
variable, but instead use the constant directly - because of this we end
up emitting a constant for the variable, as well as emitting the
variable itself.
Should we just skip putting the variable on the stack at all and omit
the debug info for the constant? It's not clear to me - what if the
address of the local is taken?
llvm-svn: 205651
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was committed 4 years ago in 108916 with insufficient testing to
explain why the "getTypeAsWritten" case was appropriate. Experience says
that it isn't - the presence or absence of an explicit instantiation
declaration was causing this code to generate either i<int> or i<int,
int>.
That didn't seem to be a useful distinction, and omitting the template
arguments was destructive to debuggers being able to associate the two
types across translation units or across compilers (GCC, reasonably,
never omitted the arguments).
llvm-svn: 205447
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't want to encourage the code to emit a lexical block for
a function that needs one in order for the line table to change,
we need to grab the line information from the body of the pattern
that we were instantiated from, this code should do that.
Modify the test case to ensure that we're still looking in the
right place for all of the scopes and also that we haven't
created a lexical block where we didn't need one.
llvm-svn: 205368
|
|
|
|
|
|
|
| |
previously not handled at all.
rdar://problem/16348575
llvm-svn: 205331
|
|
|
|
|
|
|
| |
The Decl field in a DIImportedEntity is now a DIRef.
Paired commit with LLVM.
llvm-svn: 205278
|
|
|
|
|
|
| |
for a subprogram DIE.
llvm-svn: 204949
|
|
|
|
|
|
|
|
| |
while I investigate as it seems to be causing issues with the gdb bot.
This reverts commit r204874.
llvm-svn: 204896
|
|
|
|
|
|
|
|
| |
instead of rolling an inefficient version of the function. This
changes some order of emission of metadata nodes, fix up those
testcases and make them more flexible to some changes.
llvm-svn: 204874
|
|
|
|
|
|
|
|
| |
location that the next call emitLocation() would default to. Otherwise
setLocation() may wrongly believe that the current source file didn't
change, when in fact it did.
llvm-svn: 204517
|
|
|
|
|
|
| |
iterator_range captures(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203958
|
|
|
|
|
|
| |
with iterator_range specializations(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203938
|
|
|
|
|
|
| |
for clarity.
llvm-svn: 203835
|
|
|
|
|
|
| |
with iterator_range props(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203830
|
|
|
|
|
|
| |
iterator_range bases(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203803
|
|
|
|
|
|
| |
iterator_range fields(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203355
|
|
|
|
|
|
| |
with iterator_range enumerators(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203353
|
|
|
|
|
|
| |
iterator_range decls(). The same is true for the noload versions of these APIs. Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203278
|
|
|
|
|
|
| |
with iterator_range params(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203255
|
|
|
|
|
|
| |
iterator_range redecls(). Updating all of the usages of the iterators with range-based for loops, which allows the begin/end forms to be removed entirely.
llvm-svn: 203179
|
|
|
|
|
|
| |
types aren't needlessly built during -gmlt
llvm-svn: 202900
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fails an "isa<> used with null pointer" assert during a clang-cl
self-host on Windows. This was caused by r202769, and I'm currently
reducing a test case.
Reviewers: dblaikie
Differential Revision: http://llvm-reviews.chandlerc.com/D2944
llvm-svn: 202888
|
|
|
|
|
|
|
|
|
| |
explicit template instantiation declarations
* detect out of line definitions correctly
* detect member function explicit specializations correctly
llvm-svn: 202779
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
explicit instantiation declaration (& always emit such a type when there's an explicit instantiation definition)
We should only have this optimization fire when the explicit
instantiation definition would cause at least one member function to be
emitted, thus ensuring that even a compiler not performing this
optimization would still emit the full type information elsewhere.
But we should also pessimize output still by always emitting the
definition when the explicit instantiation definition appears so that at
some point in the future we can depend on that information even when no
code had to be emitted in that TU. (this shouldn't happen very often,
since people mostly use explicit spec decl/defs to reduce code size -
but perhaps one day they could use it to explicitly reduce debug info
size too)
This was worth about 2% for Clang and LLVM - so not a huge win, but a
win. It looks really great for simple STL programs (include <string> and
just declare a string - 14k -> 1.4k of .dwo)
llvm-svn: 202769
|
|
|
|
|
|
| |
Create lexical blocks with discriminator value 0 by default.
llvm-svn: 202737
|
|
|
|
| |
llvm-svn: 202639
|
|
|
|
|
|
|
| |
generation purposes.
Paired with a commit to llvm.
llvm-svn: 202334
|
|
|
|
| |
llvm-svn: 202219
|
|
|
|
| |
llvm-svn: 202208
|
|
|
|
|
|
|
|
| |
Paired commit with LLVM.
rdar://problem/13690847
llvm-svn: 202185
|
|
|
|
|
|
|
|
| |
is already built.
No functional change intended.
llvm-svn: 201602
|
|
|
|
|
|
|
|
| |
not-yet-completed templated types. getTypeSize() needs a complete type.
rdar://problem/15931354
llvm-svn: 200797
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A return type is the declared or deduced part of the function type specified in
the declaration.
A result type is the (potentially adjusted) type of the value of an expression
that calls the function.
Rule of thumb:
* Declarations have return types and parameters.
* Expressions have result types and arguments.
llvm-svn: 200082
|
|
|
|
|
|
|
|
|
| |
of the current compilation unit.
As a side effect this enables many more LTO uniquing opportunities.
This reapplies r199757 with a better testcase.
llvm-svn: 199760
|
|
|
|
| |
llvm-svn: 199758
|
|
|
|
|
|
|
|
|
| |
of the current compilation unit.
As a side effect this enables many more LTO uniquing opportunities.
rdar://problem/15851206
llvm-svn: 199757
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a perennial source of confusion in the clang type system: Declarations and
function prototypes have parameters to which arguments are supplied, so calling
these 'arguments' was a stretch even in C mode, let alone C++ where default
arguments, templates and overloading make the distinction important to get
right.
Readability win across the board, especially in the casting, ADL and
overloading implementations which make a lot more sense at a glance now.
Will keep an eye on the builders and update dependent projects shortly.
No functional change.
llvm-svn: 199686
|
|
|
|
|
|
|
|
|
| |
class and use it pervasively to restore debug locations.
Fixes an interaction between cleanup and EH that caused the location
to not be restored properly after emitting a landing pad.
rdar://problem/15208190
llvm-svn: 199444
|
|
|
|
|
|
|
|
| |
within"
This reverts commit r198461.
llvm-svn: 198714
|
|
|
|
|
|
| |
This reverts commit 198699 so we can get a cleaner patch.
llvm-svn: 198713
|
|
|
|
|
|
|
|
|
| |
C and C++ don't emit an extra lexical scope for the compound statement
that is the body of an Objective-C method.
rdar://problem/15010825
llvm-svn: 198699
|
|
|
|
| |
llvm-svn: 198670
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It controls everything that -flimit-debug-info used to, plus the
vtable type optimization. The old -fno-limit-debug-info option is now an
alias to -fstandalone-debug and vice versa.
Standalone is the default on Darwin until dtrace is updated to work with
non-standalone debug info (rdar://problem/15758808).
Note: I kept the LimitedDebugInfo name in CodeGenOptions::DebugInfoKind
because NoStandaloneDebugInfo sounded even more confusing.
llvm-svn: 198655
|
|
|
|
|
|
|
|
|
| |
the lexical block formed by the compound statement that is the function
body.
rdar://problem/15010825
llvm-svn: 198461
|
|
|
|
| |
llvm-svn: 197916
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
template instantiations, etc) in the list of members of a structure.
These members will still be lazily added to the relevant DWARF DIEs in
LLVM but when enumerating the members they will not appear. This allows
DWARF type units to be more consistent - the type unit will never
contain these special members (so all instances of the type should have
the same DIEs without some having some special members and others having
others) and the special members will be added to the skeletal
declaration that appears in the relevant compile_unit.
llvm-svn: 197844
|
|
|
|
|
|
| |
rdar://problem/15678916.
llvm-svn: 197641
|
|
|
|
|
|
|
|
| |
member functions. Paired commit with LLVM.
rdar://problem/15356637
llvm-svn: 197612
|
|
|
|
|
|
|
| |
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
|