|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 135300 | 
| | 
| 
| 
| | llvm-svn: 135294 | 
| | 
| 
| 
| 
| 
| | attributes. Fixes <rdar://problem/9561076>.
llvm-svn: 135273 | 
| | 
| 
| 
| 
| 
| 
| 
| | which is required given the current setup for template
argument deduction substitution validation, and add a test
case to make sure we don't break it in the future.
llvm-svn: 135262 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | types.  Fore xample, we used to lower:
struct bar { int a; };
struct foo {
 void (*FP)(struct bar);
} G;
to:
%struct.foo = type { {}* }
since the function pointer would cause recursive translation of bar and
we didn't know if that would get us into trouble.  We are now smart enough
to know that it is fine, so we get this type instead:
%struct.foo = type { void (i32)* }
Codegen still needs to be prepared for uncooperative types at any place,
which is why I let the maximally uncooperative code sit around for awhile to
help shake out the bugs.
llvm-svn: 135244 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | instantiations.  Upon instantiation of template, value-dependent parameters are replaced by equivalent literals, so code like:
template<unsigned int A, unsigned int B> struct S {
  int foo() {
    int x = A && B;
  }
}
will not warn on A && B on every instantiation.  This will still warn on other cases inside templates, which will be caught on checking the template definition.
llvm-svn: 135222 | 
| | 
| 
| 
| 
| 
| | -Wuninitialized to avoid cascading warnings.  Patch by Kaelyn Uhrain.
llvm-svn: 135217 | 
| | 
| 
| 
| 
| 
| | errors. rdar://9402555.
llvm-svn: 135213 | 
| | 
| 
| 
| 
| 
| 
| 
| | Revert "For C++11, do more checking of initializer lists up-front, enabling some subset of the final functionality. C just leaves the function early. C++98 runs through the same code path, but has no changed functionality either."
This reverts commit ac420c5053d6aa41d59f782caad9e46e5baaf2c2.
llvm-svn: 135210 | 
| | 
| 
| 
| 
| 
| 
| 
| | used.
Keep the error if the result is unused. rdar://9552694.
llvm-svn: 135209 | 
| | 
| 
| 
| | llvm-svn: 135208 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | also contain declarators. Previously we would accept code like this:
  template<typename T> struct S { } f() { return 0; }
This case now produces a missing ';' diagnostic, since that seems like a much more likely error than an attempt to declare a function or variable in addition to the class template.
Treat this 
llvm-svn: 135195 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | An unused autorelease is badness. If we remove it the receiver
will likely die immediately while previously it was kept alive
by the autorelease pool. This is bad practice in general, so leave it
and emit an error to force the user to restructure his code.
rdar://9599884
llvm-svn: 135193 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | subset of the final functionality. C just leaves the function early. C++98 runs through the same code path, but has no changed functionality either.
This is a first baby step towards supporting generalized initializer lists. This also removes an aggregate
test case that was just plain wrong, assuming that non-aggregates couldn't be initialized with initializer lists
in C++11 mode.
llvm-svn: 135177 | 
| | 
| 
| 
| | llvm-svn: 135176 | 
| | 
| 
| 
| 
| 
| | thing to do.
llvm-svn: 135152 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | MacroInstantiation -> MacroExpansion rename. Internally, everything is
switched.
Introduce a new cursor kind enum with the new name, but retain the old
name as an alias so that we don't break backwards compatibility.
Also update the debug printing routine to use 'macro expansions' as its
explicitly not guaranteed to be stable, and mechanically switch the test
cases over to that.
llvm-svn: 135140 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | and 'expansions' rather than 'instantiated' and 'contexts'.
This is the first of several patches migrating Clang's terminology
surrounding macros from 'instantiation' to 'expansion'.
llvm-svn: 135135 | 
| | 
| 
| 
| 
| 
| | cases to be more portable with an explicit target triple.
llvm-svn: 135134 | 
| | 
| 
| 
| 
| 
| 
| 
| | on 32-bit, so we shouldn't warn about using"
It fails on freebsd, mingw and msvc10.
llvm-svn: 135129 | 
| | 
| 
| 
| 
| 
| 
| | is still terrible here because typo correction is not behaving well in
the presence of overloaded functions.
llvm-svn: 135128 | 
| | 
| 
| 
| 
| 
| | command-line flags. rdar://9567824
llvm-svn: 135115 | 
| | 
| 
| 
| 
| 
| | require A to be a complete type.
llvm-svn: 135101 | 
| | 
| 
| 
| 
| 
| | failures.
llvm-svn: 135091 | 
| | 
| 
| 
| 
| 
| | Uhrain! Fixes PR10318.
llvm-svn: 135086 | 
| | 
| 
| 
| | llvm-svn: 135083 | 
| | 
| 
| 
| 
| 
| 
| 
| | shouldn't warn about using
an "int" format specifier with a "long" type in 32-bit.
llvm-svn: 135075 | 
| | 
| 
| 
| 
| 
| 
| | it as used.  Otherwise, we can fail to instantiate or validate the destructor,
which can lead to crashes in IR gen like PR10351.
llvm-svn: 135073 | 
| | 
| 
| 
| 
| 
| | @synthesizing it.
llvm-svn: 135067 | 
| | 
| 
| 
| 
| 
| 
| 
| | 'retain' -> 'strong', and add
'weak or unsafe_unretained' when 'assign' is missing. rdar://9496219&9602589.
llvm-svn: 135065 | 
| | 
| 
| 
| 
| 
| 
| | used in @selector expression because, well, their implementation 
is optional. // rdar://9545564
llvm-svn: 135057 | 
| | 
| 
| 
| | llvm-svn: 135054 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | __unknown_anytype, and rewrite such message sends correctly.
I had to bite the bullet and actually add a debugger support mode for this
one, which is a bit unfortunate, but there really isn't anything else
I could imagine doing;  this is clearly just debugger-specific behavior.
llvm-svn: 135051 | 
| | 
| 
| 
| 
| 
| 
| | Make it also available in ObjC++ propeties. Use common code for
objc and objc++ so they don't diverge. // rdar://9740328
llvm-svn: 135050 | 
| | 
| 
| 
| 
| 
| | conversion specifiers.  My recent change was a mistake.
llvm-svn: 135048 | 
| | 
| 
| 
| 
| 
| | specifiers for character types.
llvm-svn: 135046 | 
| | 
| 
| 
| 
| 
| | them, too.
llvm-svn: 135038 | 
| | 
| 
| 
| | llvm-svn: 135036 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | and (while I'm at it) teach it to grok the results of simple
assignments.
The first is PR10336.
llvm-svn: 135034 | 
| | 
| 
| 
| 
| 
| | partial destruction.
llvm-svn: 135033 | 
| | 
| 
| 
| 
| 
| | like arguments.  Thanks PR10337! :)
llvm-svn: 135030 | 
| | 
| 
| 
| 
| 
| 
| | unrestricted unions, which ended up attempting to initialize objects
in a union (which CodeGen isn't prepared for). Fixes PR9683.
llvm-svn: 135027 | 
| | 
| 
| 
| 
| 
| | As it turns out, this is my fault for not noticing this was an issue when I was looking at this a long time ago. :(
llvm-svn: 135026 | 
| | 
| 
| 
| 
| 
| | which implicitly makes it EH-safe as well.
llvm-svn: 135025 | 
| | 
| 
| 
| 
| 
| 
| 
| | the complete destructor and then invoke the global delete
operator. Previously, we would invoke the deleting destructor, which
calls the wrong delete operator. Fixes PR10341.
llvm-svn: 135021 | 
| | 
| 
| 
| | llvm-svn: 135010 | 
| | 
| 
| 
| | llvm-svn: 135004 | 
| | 
| 
| 
| | llvm-svn: 135003 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | with objc_arc_weak_reference_unavailable
or is in a list of classes not supporting 'weak'.
rdar://9489367.
llvm-svn: 135002 | 
| | 
| 
| 
| 
| 
| | Make it also available in ObjC++ propeties. // rdar://9740328
llvm-svn: 135001 |