- Jun 18, 2011
-
-
Benjamin Kramer authored
llvm-svn: 133346
-
Benjamin Kramer authored
llvm-svn: 133345
-
Chandler Carruth authored
deducing template parameter types. Recently Clang began enforcing the more strict checking that the argument type and the deduced function parameter type (after substitution) match, but that only consideres qualification conversions. One problem with this patch is that we check noreturn conversions and qualification conversions independently. If a valid conversion would require *both*, perhaps interleaved with each other, it will be rejected. If this actually occurs (I'm not yet sure it does) and is in fact a problem (I'm not yet sure it is), there is a FIXME to implement more intelligent conversion checking. However, this step at least allows Clang to resume accepting valid code we're seeing in the wild. llvm-svn: 133327
-
Argyrios Kyrtzidis authored
[arcmt] Fix the ARC migrator. -arcmt-modify requires running before the initialization of SourceManager because it is going to modify the input file. llvm-svn: 133323
-
Argyrios Kyrtzidis authored
llvm-svn: 133322
-
Argyrios Kyrtzidis authored
llvm-svn: 133315
-
-
Douglas Gregor authored
silently dropped ownership qualifiers that were being applied to ownership-qualified, substituted type that was *not* a substituted template type parameter. We now provide a diagnostic in such cases, and recover by dropping the added qualifiers. Document this behavior in the ARC specification. llvm-svn: 133309
-
Douglas Gregor authored
qualifiers, so that an __unsafe_unretained-qualified type T in ARC code will have the same mangling as T in non-ARC code, improving ABI interoperability. This works now because we infer or require a lifetime qualifier everywhere one can appear in an external interface. Another part of <rdar://problem/9595486>. llvm-svn: 133306
-
Douglas Gregor authored
ownership-unqualified retainable object type as __strong. This allows us to write, e.g., std::vector<id> and we'll infer that the vector's element types have __strong ownership semantics, which is far nicer than requiring: std::vector<__strong id> Note that we allow one to override the ownership qualifier of a substituted template type parameter, e.g., given template<typename T> struct X { typedef __weak T type; }; X<id> is treated the same as X<__strong id>. At instantiation type, the __weak in "__weak T" overrides the (inferred or specified) __strong on the template argument type, so that we can still provide metaprogramming transformations. This is part of <rdar://problem/9595486>. llvm-svn: 133303
-
- Jun 17, 2011
-
-
John McCall authored
llvm-svn: 133300
-
John McCall authored
__bridge_retain as a synonym for __bridge_retained. llvm-svn: 133295
-
Eli Friedman authored
Add a minor hack to avoid using isNullPointerConstant on a hot path. Fixes -O0 compile-time regressions from r133196. rdar://9629775 . llvm-svn: 133290
-
-
Douglas Gregor authored
separate aggregate temporary and then memcpy it over to the destination. This fixes a regression I introduced with r133235, where the compound literal on the RHS of an assignment makes use of the structure on the LHS of the assignment. I'm deeply suspicious of AggExprEmitter::VisitBinAssign()'s optimization where it emits the RHS of an aggregate assignment directly into the LHS lvalue without checking whether there is any aliasing between the LHS/RHS. However, I'm not in a position to revisit this now. Big thanks to Eli for finding the regression! llvm-svn: 133261
-
Douglas Gregor authored
llvm-svn: 133257
-
John McCall authored
static initializer check, as required by the Itanium ABI. llvm-svn: 133250
-
John McCall authored
llvm-svn: 133246
-
John McCall authored
they should still be officially __strong for the purposes of errors, block capture, etc. Make a new bit on variables, isARCPseudoStrong(), and set this for 'self' and these enumeration-loop variables. Change the code that was looking for the old patterns to look for this bit, and change IR generation to find this bit and treat the resulting variable as __unsafe_unretained for the purposes of init/destroy in the two places it can come up. llvm-svn: 133243
-
Douglas Gregor authored
[temp.deduct.call]p4 to the deduction performed for 'auto', finishing the fix for PR9233. llvm-svn: 133239
-
Douglas Gregor authored
argument type for C++ [temp.deduct.call]p4 out of Sema::FinishTemplateArgumentDeduction(). No functionality change. llvm-svn: 133237
-
Douglas Gregor authored
storage specifier is different from the storage specifier on the template. If that storage specifier is the same, then we only warn. Thanks to John for the prodding. llvm-svn: 133236
-
Douglas Gregor authored
C++, which means: - binding the temporary as needed in Sema, so that we generate the appropriate call to the destructor, and - emitting the compound literal into the appropriate location for the aggregate, rather than trying to emit it as a temporary and memcpy() it. Fixes PR10138 / <rdar://problem/9615901>. llvm-svn: 133235
-
Douglas Gregor authored
specifier on an explicit specialization to a warning, since neither EDG nor GCC diagnose this code as ill-formed. llvm-svn: 133232
-
Eric Christopher authored
register constraint. Note that we're not checking if the register itself is valid for the constraint. Fixes rdar://9382985 llvm-svn: 133226
-
Eric Christopher authored
Part of rdar://9197685 llvm-svn: 133225
-
Eric Christopher authored
constraints. rdar://9618597 llvm-svn: 133222
-
John McCall authored
operators, don't make an initializer or sub-operation for zero-width bitfields. llvm-svn: 133221
-
Douglas Gregor authored
through an ellipsis. Fixes <rdar://problem/9623945>. llvm-svn: 133219
-
-
John McCall authored
llvm-svn: 133215
-
Francois Pichet authored
llvm-svn: 133214
-
Chris Lattner authored
because the Angled directories and the System directories were not being uniqued together, breaking #include_next. I'll see about a testcase, but it will be insane. llvm-svn: 133212
-
Chris Lattner authored
llvm-svn: 133211
-
Fariborz Jahanian authored
(even though it is incomplete type) because gcc says so. // rdar://9622422 llvm-svn: 133208
-
- Jun 16, 2011
-
-
Richard Trieu authored
Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on cases such as: int x = 1 + NULL; llvm-svn: 133196
-
Fariborz Jahanian authored
getLVForNamespaceScopeDecl(). // rdar://9609649 llvm-svn: 133182
-
Evan Cheng authored
llvm-svn: 133181
-
Douglas Gregor authored
constants. Fixes PR10145. llvm-svn: 133179
-
Douglas Gregor authored
__builtin_ versions of these functions as well as the normal function versions, so that it works on platforms where memset/memcpy/memmove are macros that map down to the builtins (e.g., Darwin). Fixes <rdar://problem/9372688>. llvm-svn: 133173
-