| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
allow ref-qualifiers on function types used as template type
arguments. GNU actually allows cv-qualifiers on function types in many
places where it shouldn't, so we currently categorize this as a GNU
extension.
llvm-svn: 124584
|
| |
|
|
|
|
| |
rdar://8756445.
llvm-svn: 124582
|
| |
|
|
|
|
| |
Fixes rdar://8900456.
llvm-svn: 124581
|
| |
|
|
|
|
| |
exists a locally scoped extern with the same name.
llvm-svn: 124580
|
| |
|
|
| |
llvm-svn: 124579
|
| |
|
|
|
|
| |
rdar://8883302.
llvm-svn: 124578
|
| |
|
|
|
|
| |
Fixes rdar://8736362.
llvm-svn: 124577
|
| |
|
|
|
|
|
|
| |
use of nonstatic data member"
not "call to non-static member function without an object argument".
llvm-svn: 124576
|
| |
|
|
|
|
| |
Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://8818236.
llvm-svn: 124575
|
| |
|
|
|
|
| |
This fixes a few compile errors when parsing <regex> from MSVC 2008 with clang.
llvm-svn: 124573
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
current translation unit as available_externally.
This helps devirtualize the second example in PR3100, comment 18:
struct S { S() {}; virtual void xyzzy(); };
inline void foo(S *s) { s->xyzzy(); }
void bar() { S s; foo(&s); }
This involved four major changes:
1. In DefineUsedVTables, always mark virtual member functions as referenced for
non-template classes and class template specializations.
2. In CodeGenVTables::ShouldEmitVTableInThisTU return true if optimizations are
enabled, even if the key function is not implemented in this translation
unit. We don't ever do this for code compiled with -fapple-kext, because we
don't ever want to devirtualize virtual member function calls in that case.
3. Give the correct linkage for vtables where the key function is not defined.
4. Update the linkage for RTTI structures when necessary.
llvm-svn: 124565
|
| |
|
|
|
|
|
|
| |
invocation.
This mimics what gcc does and fixes libtool check for libraries.
llvm-svn: 124558
|
| |
|
|
| |
llvm-svn: 124554
|
| |
|
|
|
|
| |
data based on the explicit visibility of the type.
llvm-svn: 124553
|
| |
|
|
| |
llvm-svn: 124551
|
| |
|
|
| |
llvm-svn: 124550
|
| |
|
|
|
|
|
|
| |
CreateOrReplaceCXXRuntimeVariable.
Set the visibility for typeinfo names.
llvm-svn: 124548
|
| |
|
|
|
|
| |
instead of an "IsForRTTI" flag.
llvm-svn: 124546
|
| |
|
|
| |
llvm-svn: 124542
|
| |
|
|
| |
llvm-svn: 124541
|
| |
|
|
| |
llvm-svn: 124540
|
| |
|
|
|
|
| |
first get the address of the VTT, and then pass it to EmitVTTDefinition.
llvm-svn: 124539
|
| |
|
|
| |
llvm-svn: 124538
|
| |
|
|
|
|
| |
has their own copy of this code).
llvm-svn: 124537
|
| |
|
|
| |
llvm-svn: 124536
|
| |
|
|
| |
llvm-svn: 124529
|
| |
|
|
|
|
| |
all casts. We can only ignore derived-to-base and no-op casts. Fixes selfhost.
llvm-svn: 124528
|
| |
|
|
|
|
| |
class is marked 'final', we can devirtualize the call.
llvm-svn: 124524
|
| |
|
|
|
|
| |
get the vbase offset from the vtable if the derived class is marked final.
llvm-svn: 124523
|
| |
|
|
|
|
|
| |
indirect vf calls and addition of extra entry
at bottom of vtbls.
llvm-svn: 124507
|
| |
|
|
| |
llvm-svn: 124505
|
| |
|
|
| |
llvm-svn: 124503
|
| |
|
|
|
|
| |
Pure motion.
llvm-svn: 124484
|
| |
|
|
|
|
| |
for CodeGen's RValue type.
llvm-svn: 124483
|
| |
|
|
|
|
|
|
|
| |
fixing a crash which probably nobody was ever going to see. In doing so,
fix a horrendous number of problems with the conditional-cleanups code.
Also, make conditional cleanups re-use the cleanup's activation variable,
which avoids some unfortunate repetitiveness.
llvm-svn: 124481
|
| |
|
|
| |
llvm-svn: 124477
|
| |
|
|
|
|
|
|
| |
might be queried in places where we absolutely require a valid
location (e.g., for template instantiation). Fixes some major
brokenness in the use of __is_convertible_to.
llvm-svn: 124465
|
| |
|
|
| |
llvm-svn: 124455
|
| |
|
|
|
|
|
|
|
| |
non-class prvalues actually require the realization of a
temporary. For everything else, we already have an lvalue (or class
prvalue) in the subexpression.
Note: we're missing some move elision in this case. I'll tackle that next.
llvm-svn: 124453
|
| |
|
|
|
|
|
| |
variable declaration of a struct declared type.
// rdar://8918702
llvm-svn: 124451
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
access control errors into SFINAE errors, so that the trait provides
enough support to implement the C++0x std::is_convertible type trait.
To get there, the SFINAETrap now knows how to set up a SFINAE context
independent of any template instantiations or template argument
deduction steps, and (separately) can set a Sema flag to translate
access control errors into SFINAE errors. The latter can also be
useful if we decide that access control errors during template argument
deduction should cause substitution failure (rather than a hard error)
as has been proposed for C++0x.
llvm-svn: 124446
|
| |
|
|
|
|
| |
have SFINAE behavior.
llvm-svn: 124441
|
| |
|
|
|
|
| |
to be sure we have complete types in many cases
llvm-svn: 124428
|
| |
|
|
|
|
|
|
|
|
| |
semantics after the C++0x is_convertible type trait. This
implementation is not 100% complete, because it allows access errors
to be hard errors (rather than just evaluating false).
Original patch by Steven Watanabe!
llvm-svn: 124425
|
| |
|
|
| |
llvm-svn: 124408
|
| |
|
|
|
|
|
|
|
|
| |
catch:
lock_guard(my_mutex);
declares a variable instead of creating a temporary.
llvm-svn: 124398
|
| |
|
|
| |
llvm-svn: 124394
|
| |
|
|
|
|
| |
ObjC retain/release checker.
llvm-svn: 124386
|
| |
|
|
|
|
| |
rdar://8793832.
llvm-svn: 124383
|
| |
|
|
|
|
|
| |
TargetInfo::CreateTargetInfo() mangles the target options in a way
that is not idempotent. Fixes <rdar://problem/8807535>.
llvm-svn: 124382
|