| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
the order they appeared in the translation unit. If they get emitted, put them
in their proper order. Fixes rdar://problem/7458115
llvm-svn: 108477
|
|
|
|
|
|
| |
codegenerator preserve info in case the symbol is deleted.
llvm-svn: 108471
|
|
|
|
|
|
| |
with always_inline attribute. Thanks to Howard for the tip.
llvm-svn: 108469
|
|
|
|
|
|
| |
Tested by namespace.exp and virtfunc.exp from gdb testsuite.
llvm-svn: 108468
|
|
|
|
|
|
| |
for string literals.
llvm-svn: 108464
|
|
|
|
|
|
|
|
|
| |
with the proper spelling of "non-class prvalue". Silly me, I think
class rvalues were xvalues rather than prvalues!
Hah hah hah.
llvm-svn: 108443
|
|
|
|
|
|
| |
broke nightlytest.
llvm-svn: 108439
|
|
|
|
|
|
| |
This is not required (I am not 100% sure why) but method.exp from gdb testsuite flagged regression due to this patch.
llvm-svn: 108434
|
|
|
|
| |
llvm-svn: 108433
|
|
|
|
|
|
|
|
| |
that involve binding a reference to a pure rvalue temporary (e.g., not
a class temporary), by creating a new temporary and copying the result
there. Fixes PR6024.
llvm-svn: 108431
|
|
|
|
| |
llvm-svn: 108428
|
|
|
|
| |
llvm-svn: 108423
|
|
|
|
|
|
|
|
| |
whether to use objc_msgSend_fpret; the choice is target dependent, not Obj-C ABI
dependent.
- <rdar://problem/8139758> arm objc _objc_msgSend_fpret bug
llvm-svn: 108379
|
|
|
|
| |
llvm-svn: 108363
|
|
|
|
|
|
|
|
| |
follow <name>; instead they follow <type>, which has <name> as a subset.
Fixes PR7446.
llvm-svn: 108326
|
|
|
|
|
|
|
|
| |
- TSTs whose template is a template template parameter already work
- we don't provide an imaginary type, so we can't mangle one
- we don't need a generic FIXME for vendor type qualifiers
llvm-svn: 108317
|
|
|
|
|
|
|
| |
the current proposals from David Vandervoorde for new, delete, throw, typeid,
imaginary literals, string literals, and null literals.
llvm-svn: 108315
|
|
|
|
|
|
| |
harmless way.
llvm-svn: 108295
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reinterpret_casts (possibly indirectly via C-style/functional casts)
on values, e.g.,
int i;
reinterpret_cast<short&>(i);
The IR generated for this is essentially the same as for
*reinterpret_cast<short*>(&i).
Fixes PR6437, PR7593, and PR7344.
llvm-svn: 108294
|
|
|
|
| |
llvm-svn: 108288
|
|
|
|
|
|
|
| |
or a catch of a record type by value or reference. Also convert this to a
lazy cleanup.
llvm-svn: 108287
|
|
|
|
| |
llvm-svn: 108276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mostly in avoiding unnecessary work at compile time but also in producing more
sensible block orderings.
Move the destructor cleanups for local variables over to use lazy cleanups.
Eventually all cleanups will do this; for now we have some awkward code
duplication.
Tell IR generation just to never produce landing pads in -fno-exceptions.
This is a much more comprehensive solution to a problem which previously was
half-solved by checks in most cleanup-generation spots.
llvm-svn: 108270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(e.g., a call, cast, etc.), immediately adjust the expression's type
to strip cv-qualifiers off of all non-class types (in C++) or all
types (in C). This effectively extends my previous fix for PR7463,
which was restricted to calls, to other kinds of expressions within
similar characteristics. I've audited every use of
getNonReferenceType() in the code base, switching to the newly-renamed
getNonLValueExprType() where necessary.
Big thanks to Eli for pointing out just how incomplete my original fix
for PR7463 actually was. We've been handling cv-qualifiers on rvalues
wrong for a very, very long time. Fixes PR7463.
llvm-svn: 108253
|
|
|
|
| |
llvm-svn: 108245
|
|
|
|
|
|
|
|
| |
at -O0. The only change from the previous patch is that we don't try
to generate virtual method thunks for an available_externally
function.
llvm-svn: 108230
|
|
|
|
| |
llvm-svn: 108220
|
|
|
|
|
|
|
|
| |
methods. Debug info for method definition will be generated while generating code for method body.
Tested by classes.exp in gdb testsuite.
llvm-svn: 108205
|
|
|
|
| |
llvm-svn: 108194
|
|
|
|
|
|
|
|
|
|
| |
-O0, since we won't be using the definitions for anything anyway. For
lib/System/Path.o when built in Debug+Asserts mode, this leads to a 4%
improvement in compile time (and suppresses 440 function bodies).
<rdar://problem/7987644>
llvm-svn: 108156
|
|
|
|
|
|
|
| |
Patch by Alexander Kabaev.
PR 7595.
llvm-svn: 107900
|
|
|
|
|
|
| |
as well.
llvm-svn: 107858
|
|
|
|
|
|
| |
suppressing copies of objects with trivial copy constructors.
llvm-svn: 107857
|
|
|
|
|
|
|
|
|
|
|
| |
was not producing a memcpy with the right address
spaces because of two places in it doing casts of
the arguments to i8, one of which that didn't
preserve the address space.
There is also an optimizer bug here.
llvm-svn: 107842
|
|
|
|
|
|
| |
breaking bootstrap on Linux.
llvm-svn: 107837
|
|
|
|
|
|
| |
newly-narrowed scope. No functionality change.
llvm-svn: 107828
|
|
|
|
|
|
|
|
|
| |
CXXConstructExpr/CXXTemporaryObjectExpr/CXXNewExpr as
appropriate. Fixes PR7556, and provides a slide codegen improvement
when copy-initializing a POD class type from a value-initialized
temporary. Previously, we weren't eliding the copy.
llvm-svn: 107827
|
|
|
|
|
|
| |
from PR7583
llvm-svn: 107788
|
|
|
|
| |
llvm-svn: 107773
|
|
|
|
|
|
|
|
| |
of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH.
Makes de-serialization of the function body even more "lazier".
llvm-svn: 107768
|
|
|
|
|
|
| |
rethrow. Fixes rdar://problem/7696603
llvm-svn: 107757
|
|
|
|
|
|
|
|
|
|
|
|
| |
emit metadata associating allocas and global values with a Decl*. This feature
is controlled by an option that (intentionally) cannot be enabled on the command
line.
To use this feature, simply set
CodeGenOptions.EmitDeclMetadata = true;
and then interpret the completely underspecified metadata. :)
llvm-svn: 107739
|
|
|
|
|
|
| |
into IRBuilder.
llvm-svn: 107687
|
|
|
|
|
|
|
|
| |
block before deleting it. Fixes PR7575.
This really just a short-term fix before implementing lazy cleanups.
llvm-svn: 107676
|
|
|
|
|
|
| |
as nounwind in -fno-exceptions. Fixes rdar://problem/8090834.
llvm-svn: 107639
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
self-host. Hopefully these results hold up on different platforms.
I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
Reimplement how clang generates IR for exceptions. Instead of creating new
invoke destinations which sequentially chain to the previous destination,
push a more semantic representation of *why* we need the cleanup/catch/filter
behavior, then collect that information into a single landing pad upon request.
Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
control flow) are generated, since it's actually fairly closely tied in with
the former. Remove the need to track which cleanup scope a block is associated
with.
Document a lot of previously poorly-understood (by me, at least) behavior.
The new framework implements the Horrible Hack (tm), which requires every
landing pad to have a catch-all so that inlining will work. Clang no longer
requires the Horrible Hack just to make exceptions flow correctly within
a function, however. The HH is an unfortunate requirement of LLVM's EH IR.
llvm-svn: 107631
|
|
|
|
|
|
|
| |
coerce cases (e.g. {double,int}) which avoids fastisel
bailing out at -O0.
llvm-svn: 107628
|
|
|
|
|
|
|
|
|
| |
alloca for an argument. Make sure the argument gets the proper
decl alignment, which may be different than the type alignment.
This fixes PR7567
llvm-svn: 107627
|
|
|
|
|
|
| |
wasn't handling array padding elements right.
llvm-svn: 107621
|
|
|
|
|
|
| |
Everyone knows that no bugs are ever possible with bitfields.
llvm-svn: 107620
|