- Feb 01, 2011
-
-
Douglas Gregor authored
from Alex Miller! llvm-svn: 124663
-
John McCall authored
extremely rambunctious, both on parsing and on template instantiation. Calm it down, fixing an internal consistency assert on anonymous enum instantiation manglings. llvm-svn: 124653
-
Argyrios Kyrtzidis authored
compatible, not having the same type. Fix rdar://8183908 in which compatible vector types weren't initialized properly leading to a crash. llvm-svn: 124637
-
John McCall authored
CheckPointerTypesForAssignment. llvm-svn: 124632
-
Argyrios Kyrtzidis authored
llvm-svn: 124620
-
John McCall authored
working on canonical types already. llvm-svn: 124618
-
- Jan 31, 2011
-
-
John McCall authored
logic. llvm-svn: 124615
-
Argyrios Kyrtzidis authored
Add -Wcustom-atomic-properties which warns if an atomic-by-default property has custom getter or setter. The rationale is that it is highly likely that the user's getter/setter isn't atomically implemented. Off by default. Addresses rdar://8782645. -Wcustom-atomic-properties and -Wimplicit-atomic-properties are under the -Watomic-properties group. llvm-svn: 124609
-
Douglas Gregor authored
conversions (<rdar://problem/8592139>) for overload resolution. The conversion ranking mirrors C++'s conversion ranking fairly closely, except that we use a same pseudo-subtyping relationship employed by Objective-C pointer assignment rather than simple checking derived-to-base conversions. This change covers: - Conversions to pointers to a specific object type are better than conversions to 'id', 'Class', qualified 'id', or qualified 'Class' (note: GCC doesn't perform this ranking, but it matches C++'s rules for ranking conversions to void*). - Conversions to qualified 'id' or qualified 'Class' are better than conversions to 'id' or 'Class', respectively. - When two conversion sequences convert to the same type, rank the conversions based on the relationship between the types we're converting from. - When two conversion sequences convert from the same non-id, non-Class type, rank the conversions based on the relationship of the types we're converting to. (note: GCC allows this ranking even when converting from 'id', which is extremeley dangerous). llvm-svn: 124591
-
Argyrios Kyrtzidis authored
llvm-svn: 124585
-
Douglas Gregor authored
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
-
-
-
Argyrios Kyrtzidis authored
Fix the diagnostic when we are shadowing an external variable and there exists a locally scoped extern with the same name. llvm-svn: 124580
-
Argyrios Kyrtzidis authored
llvm-svn: 124579
-
-
Argyrios Kyrtzidis authored
Fixes rdar://8736362. llvm-svn: 124577
-
Argyrios Kyrtzidis authored
Error for use of field from anonymous struct or union should say "invalid use of nonstatic data member" not "call to non-static member function without an object argument". llvm-svn: 124576
-
Argyrios Kyrtzidis authored
Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://8818236. llvm-svn: 124575
-
- Jan 30, 2011
-
-
Anders Carlsson authored
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
-
- Jan 28, 2011
-
-
John McCall authored
llvm-svn: 124505
-
Douglas Gregor authored
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
-
Douglas Gregor authored
llvm-svn: 124455
-
- Jan 27, 2011
-
-
Douglas Gregor authored
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
-
Douglas Gregor authored
llvm-svn: 124441
-
Douglas Gregor authored
Document some serious badness in our evaluation of the type traits: we need to be sure we have complete types in many cases llvm-svn: 124428
-
Douglas Gregor authored
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
-
Abramo Bagnara authored
llvm-svn: 124408
-
Jeffrey Yasskin authored
catch: lock_guard(my_mutex); declares a variable instead of creating a temporary. llvm-svn: 124398
-
-
John McCall authored
deallocation function has a two-argument form. Store the result of this check in new[] and delete[] nodes. Fixes rdar://problem/8913519 llvm-svn: 124373
-
NAKAMURA Takumi authored
llvm-svn: 124364
-
NAKAMURA Takumi authored
llvm-svn: 124363
-
Ted Kremenek authored
Tweak -Wuninitialized fixit for '_Bool' types to be initialized to 0, and C++ 'bool' types to false. llvm-svn: 124356
-
Ted Kremenek authored
llvm-svn: 124352
-
Douglas Gregor authored
argument but doesn't (because previous template parameters had default arguments), clear out all of the default arguments so that we maintain the invariant that a template parameter has a default argument only if subsequence template parameters also have default arguments. Fixes a crash-on-invalid <rdar://problem/8913649>. llvm-svn: 124345
-
Douglas Gregor authored
diagnostic about ref-qualifiers where they do not belong. llvm-svn: 124344
-
Douglas Gregor authored
derived-to-base cast that also casts away constness (one of the cases for static_cast followed by const_cast) would be treated as a bit-cast rather than a derived-to-base class, causing miscompiles and heartburn. Fixes <rdar://problem/8913298>. llvm-svn: 124340
-
- Jan 26, 2011
-
-
Douglas Gregor authored
overload a function without a ref-qualifier (C++0x [over.load]p2). This, apparently, completes the implementation of rvalue references for *this. llvm-svn: 124321
-
Douglas Gregor authored
llvm-svn: 124319
-