Commit Graph

7433 Commits

Author SHA1 Message Date
Douglas Gregor cda2270217 Allow calling an overloaded function set by taking the address of the
functions, e.g., (&f)(0). Fixes <rdar://problem/9803316>.

llvm-svn: 141877
2011-10-13 18:10:35 +00:00
Erik Verbruggen ca98f2a63f Allow for annotate attributes after access specifiers. When such
attributes are found, propagate them to subsequent declarations.

llvm-svn: 141861
2011-10-13 09:41:32 +00:00
Douglas Gregor ebcfbb5d22 When we determine that a function template specialization produced as
part of template argument deduction is ill-formed, we mark it as
invalid and treat it as a deduction failure. If we happen to find that
specialization again, treat it as a deduction failure rather than
silently building a call to the declaration.

Fixes PR11117, a marvelous bug where deduction failed after creating
an invalid specialization, causing overload resolution to pick a
different candidate. Then we performed a similar overload resolution
later, and happily picked the invalid specialization to
call... resulting in a silent link failure.

llvm-svn: 141809
2011-10-12 20:35:48 +00:00
Rafael Espindola 2d21ab024e Add returns_twice to functions that are known to return twice. This implements
the same behavior of gcc by keeping the attribute out of the function type.

llvm-svn: 141803
2011-10-12 19:51:18 +00:00
Ted Kremenek 6effcb5082 Fix typo in name of diagnostic.
llvm-svn: 141793
2011-10-12 18:03:37 +00:00
Douglas Gregor 6a0e23ff8b Teach __has_nothrow_assign not to complain about access (GCC and EDG
ignore access entirely for it) and not to crash on assignment operator
templates. Fixes PR11110.

llvm-svn: 141777
2011-10-12 15:40:49 +00:00
Richard Smith fd53aaf7e7 constexpr: don't consider class types with mutable members to be literal types.
The standard doesn't allow this, but mutable constexpr variables break the
semantics so badly that we can't reasonably accept them.

llvm-svn: 141768
2011-10-12 05:08:15 +00:00
Fariborz Jahanian fa643c8f3b objc: note location of the previously declared
property in the diagnostic.

llvm-svn: 141745
2011-10-12 00:00:57 +00:00
John McCall 50a2c2c19d Catch placeholder types in DefaultLvalueConversion
and DefaultFunctionArrayLvalueConversion.  To prevent
significant regression for should-this-be-a-call fixits,
and to repair some such regression from the introduction of
bound member placeholders, make those placeholder checks
try to build calls appropriately.  Harden the build-a-call
logic while we're at it.

llvm-svn: 141738
2011-10-11 23:14:30 +00:00
John McCall 3cec19f925 Rename SemaCXXCast.cpp to SemaCast.cpp.
llvm-svn: 141686
2011-10-11 17:38:55 +00:00
Alexis Hunt 77c1f9f888 Get rid of ShouldDeleteMoveConstructor.
llvm-svn: 141650
2011-10-11 06:43:29 +00:00
Alexis Hunt 1bc6f71ebc Consolidate copy constructor deletion into ShouldDeleteSpecialMember.
llvm-svn: 141645
2011-10-11 04:55:36 +00:00
Eli Friedman df14b3a837 Initial implementation of __atomic_* (everything except __atomic_is_lock_free).
llvm-svn: 141632
2011-10-11 02:20:01 +00:00
Francois Pichet 9a57fb5734 [Microsoft] If -fms-compatibility, then downgrade missing typename error to warning at function prototype scope.
llvm-svn: 141630
2011-10-11 01:50:09 +00:00
Kaelyn Uhrain 85308c6ecd Add typo correction for type names.
The main motivation was to do typo correction in C++ "new" statements,
though picking it up in other places where type names are expected was
pretty much a freebie.

llvm-svn: 141621
2011-10-11 01:02:41 +00:00
Kaelyn Uhrain 8af2c9f5c6 Clean up DiagnoseInvalidRedeclaration a bit
llvm-svn: 141612
2011-10-11 00:28:52 +00:00
Kaelyn Uhrain e1a9ff7934 Move a couple chunks of ActOnFunctionDeclarator to separate functions
llvm-svn: 141611
2011-10-11 00:28:49 +00:00
Kaelyn Uhrain 4dc695daea Move some bool flags out of function parameter lists.
llvm-svn: 141610
2011-10-11 00:28:45 +00:00
Kaelyn Uhrain 0a32fcaf65 Only accept a typo correction if it doesn't trigger additional errors
llvm-svn: 141609
2011-10-11 00:28:39 +00:00
Douglas Gregor 2259d85a43 Don't crash in Sema::IsSimplyAccessible if the declaration is not a C++ class member. Fixes PR11108.
llvm-svn: 141600
2011-10-10 23:44:35 +00:00
Douglas Gregor c7a3107baf When performing a user-defined conversion via a constructor, be sure
to check whether the constructor is accessible. Fixes
<rdar://problem/10202900>.

llvm-svn: 141588
2011-10-10 22:41:00 +00:00
Ted Kremenek bed648e0b0 Rework construction of CXXForRangeStmt not to recycle the same DeclRefExpr in multiple subexpressions. This breaks the tree structure
of the AST and completely breaks the CFG invariants.

Patch by Jim Goodnow II and reviewed by Richard Smith!

llvm-svn: 141586
2011-10-10 22:36:28 +00:00
Fariborz Jahanian 55b4e5c208 objc: err on a property designated both atomic and
nonatomic. // rdar://10260017

llvm-svn: 141580
2011-10-10 21:53:24 +00:00
Douglas Gregor ab96bcf6ea When substituting into a sizeof parameter pack expression in a context
where we can't expand (i.e., multi-level substitution), be sure to
substitute the pack with its level-reduced pack. Fixes PR10230.

llvm-svn: 141568
2011-10-10 18:59:29 +00:00
Richard Smith caf3390d44 Constant expression evaluation refactoring:
- Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
   and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
   behaviour.
 - Factor out evaluation of bitfield bit widths.
 - Fix a few places which would evaluate an expression twice: once to determine
   whether it is a constant expression, then again to get the value.

llvm-svn: 141561
2011-10-10 18:28:20 +00:00
Douglas Gregor 0de5720737 Don't suggest 'noreturn' for function template instantiations, because
it might be wrong for other instantiations of the same function
template. Fixes PR10801.

llvm-svn: 141559
2011-10-10 18:15:57 +00:00
Kaelyn Uhrain 1a6eb99d45 Give nicer note when a member redeclaration has or lacks 'const'
llvm-svn: 141555
2011-10-10 18:01:37 +00:00
Fariborz Jahanian 9a81f848c8 objc: Some refactoring of overriding method decl. code
for future work.

llvm-svn: 141553
2011-10-10 17:53:29 +00:00
Douglas Gregor 6e8da6a291 Don't analyze comparisons in type- or value-dependent
subexpressions. Fixes PR10291.

llvm-svn: 141552
2011-10-10 17:38:18 +00:00
Douglas Gregor 556e5860f9 Per C++ [class.bit]p2, unnamed bit-fields are not members. Fixes PR10289.
llvm-svn: 141549
2011-10-10 17:22:13 +00:00
Richard Smith f368fb40df constexpr: Disable checking of constructor member initializer lists for
constexpr constructor templates. Such checking is optional, and currently hard
to get right since clang doesn't generate implicit member initializers until
instantiation (even for non-dependent members).

This is needed for clang to accept libstdc++ from g++4.6 in c++0x mode.

llvm-svn: 141547
2011-10-10 16:38:04 +00:00
Douglas Gregor bcc9539323 Don't complain about qualified property or ivar access when the
qualifier itself is invalid. Crasher noticed by Fariborz.

llvm-svn: 141544
2011-10-10 16:09:49 +00:00
Douglas Gregor b06fa540e8 When adding a direct initializer to a declaration, allow the
initializer to update the type of the declaration. For example, this
allows us to determine the size of an incomplete array from its
initializer. Fixes PR10288.

llvm-svn: 141543
2011-10-10 16:05:18 +00:00
Douglas Gregor 728d00b8e7 Parse the initializer for a class member after handling its
declarator, so that the declarator is in scope for the
initializer. Fixes PR9989.

llvm-svn: 141539
2011-10-10 14:49:18 +00:00
Douglas Gregor 877d4ebba4 Always add the built-in overload candidates for operators &&, ||, and
!. Fixes PR9865.

llvm-svn: 141537
2011-10-10 14:05:31 +00:00
Alexis Hunt d6da876bac Begin work consolidating ShouldDelete* functions.
Begin with just default constructors. One note is that as a side effect
of this, a conformance test was removed on the basis that this is almost
certainly a defect as with most of union initialization. As it is, clang
does not implement union initialization close to the standard as it's
quite broken as written. I hope to write a paper addressing the issues
eventually.

llvm-svn: 141528
2011-10-10 06:18:57 +00:00
Douglas Gregor 16e65616d6 Implement the restrictions in C++ [class.friend]p6, which disallow
defining a friend function with a qualified name or in a local
class. Fixes PR9853. 

llvm-svn: 141524
2011-10-10 01:11:59 +00:00
Douglas Gregor 12340e5b18 Diagnose attempts to qualify the name of an instance variable or
property in an Objective-C++ member access expression. Fixes PR9759.

llvm-svn: 141522
2011-10-09 23:22:49 +00:00
Douglas Gregor f7b98957ac Push "out-of-line" declarations into scope when their lexical/semantic
redeclaration contexts are the same, as occurs within linkage
specifications. Fixes PR9162.

llvm-svn: 141521
2011-10-09 22:57:49 +00:00
Douglas Gregor 56636589ff The effective context of a friend function is its lexical
context. Fixes PR9103.

llvm-svn: 141520
2011-10-09 22:38:36 +00:00
Douglas Gregor f892c7fe60 For the various CF and NS attributes, don't complain if the parameter
or return types are dependent. Fixes PR9049.

llvm-svn: 141518
2011-10-09 22:26:49 +00:00
Douglas Gregor 0c83c8128b Per the note in C++0x [temp.deduct.call]p4, don't attempt template
argument deduction against a function parameter that has no deducible
template parameters in it. Fixes PR8598.

llvm-svn: 141517
2011-10-09 22:06:46 +00:00
Douglas Gregor e9d075e434 A friend template specialization is also dependent if any of its
template arguments are dependent. Fixes PR10913.

llvm-svn: 141515
2011-10-09 20:59:17 +00:00
Douglas Gregor 668d362503 Only allow taking the address of an expression of type 'overloaded
function type' when that expression is actually an overloaded function
reference (and not the address of an overloaded function
reference). Fixes PR11066. 

llvm-svn: 141514
2011-10-09 19:10:41 +00:00
Douglas Gregor bb64afcc39 Diagnose attempts to declare a non-static data member with a
non-identifier name. Fixes PR10839.

llvm-svn: 141513
2011-10-09 18:55:59 +00:00
Douglas Gregor c4475e8cd6 When building source location information for an _Atomic type, be sure
to fill in the source locations for the underlying value type. Fixes
an intermittent crasher (due to uninitialized data) in the PCH test
for _Atomic types.

llvm-svn: 141512
2011-10-09 18:45:17 +00:00
Douglas Gregor 4d328b6e16 After instantiating a 'noexcept' expression, be sure to convert it to
a boolean value and check that it is a constant expression. Fixes
PR11084.

llvm-svn: 141511
2011-10-09 18:31:23 +00:00
Benjamin Kramer ec44099cf8 Initialize the HadMultipleCandidates flag.
Found by valgrind.

llvm-svn: 141510
2011-10-09 17:58:25 +00:00
Fariborz Jahanian 9059124b41 objc: Do not warn about mismatch on Super's readonly property attribute,
related to a readwrite property, and
Sub's readwrite property. // rdar://9396329

llvm-svn: 141497
2011-10-08 17:45:33 +00:00
Benjamin Kramer ec173a5c92 Silence a warning about casting away constness.
llvm-svn: 141496
2011-10-08 16:15:07 +00:00
NAKAMURA Takumi 82a351197f Whitespace
llvm-svn: 141486
2011-10-08 11:31:46 +00:00
Fariborz Jahanian 13d3f86577 objc++: some minor cleanup and a test case
for atomic setters which requires assignment operator.

llvm-svn: 141415
2011-10-07 21:08:14 +00:00
Chandler Carruth 08d0491006 Hack in a workaround for PR11082 until we have a proper fix. This
un-breaks every glib-dependent compile with Clang.

I'm not sure this is even the best workaround, so suggestions welcome.

llvm-svn: 141381
2011-10-07 18:40:27 +00:00
John McCall f937c023bf Rename TagDecl::isDefinition -> isCompleteDefinition
for better self-documenting code, since the semantics
are subtly different from getDefinition().

llvm-svn: 141355
2011-10-07 06:10:15 +00:00
Fariborz Jahanian 9cd57a7061 objc: Improve on diagnostic when atomic proeprty is synthesized
on one accessor and user-provide with another.

llvm-svn: 141343
2011-10-06 23:47:58 +00:00
John McCall 9776e438cf Move type-checking for C-style casts in C into the now-misnamed
SemaCXXCast.cpp.  Should have no functionality change.

llvm-svn: 141336
2011-10-06 23:25:11 +00:00
Argyrios Kyrtzidis c281c96675 Implicitly assume that a ObjC category to an unavailable interface is also unavailable;
only give an 'unavailable' error on the @implementation of the category. rdar://10234078

llvm-svn: 141335
2011-10-06 23:23:27 +00:00
Argyrios Kyrtzidis 9321ad3f97 When using an unavailable/deprecated interface Foo inside Foo's interface/implementation
don't emit unavailable errors.

llvm-svn: 141334
2011-10-06 23:23:20 +00:00
Eli Friedman 0dfb889575 Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic.
Thanks to Jeffrey Yasskin for the thorough review!

llvm-svn: 141330
2011-10-06 23:00:33 +00:00
Fariborz Jahanian 565ed7a4c1 objc++: For atomic properties of c++ class objec typet, appropriate
operator= is called. Issue a warning for non-trivial case until
runtime support is provided. // rdar://6137845

llvm-svn: 141302
2011-10-06 18:38:18 +00:00
Richard Smith 43a87fe86a PR11067: A definition of a constexpr static variable doesn't need an initializer if the in-class declaration had one. Such a declaration must be initialized by a constant expression.
llvm-svn: 141279
2011-10-06 09:21:12 +00:00
Erik Verbruggen 2e657ffd8e Added CXAvailability_NotAccessible to indicate that a declaration is available, but not accessible from the current code completion context.
llvm-svn: 141278
2011-10-06 07:27:49 +00:00
Peter Collingbourne 485b80fecc OpenCL: add a non-standard extension, cl_clang_storage_class_specifiers,
which enables support for C99 storage-class specifiers.

This extension is intended to be used by implementations to implement
OpenCL C built-in functions.

llvm-svn: 141271
2011-10-06 03:01:00 +00:00
Argyrios Kyrtzidis 78181b4b45 Fix the rewriter, rdar://10234024.
llvm-svn: 141201
2011-10-05 19:37:56 +00:00
Abramo Bagnara 635ed24e1d Added a flag to identify resolved overloaded function references.
llvm-svn: 141171
2011-10-05 07:56:41 +00:00
John McCall b50451a188 Refactor the analysis of C++ cast expressions so that even
C-style and functional casts are built in SemaCXXCast.cpp.
Introduce a helper class to encapsulate most of the random
state being passed around, at least one level down.

llvm-svn: 141170
2011-10-05 07:41:44 +00:00
Fariborz Jahanian 48c69106e4 c: assignment/init of a function pointer whose function(s)
return to one which does not return (has noreturn attribute) 
should warn as it is an unsafe assignment. // rdar://10095762
c++ already handles this. This is the c version.

llvm-svn: 141141
2011-10-05 00:05:34 +00:00
Douglas Gregor b0e6c8a350 Don't allow an rvalue reference to bind to the result of a calling a
conversion function whose result type is an lvalue reference. The
initialization code already handled this properly, but overload
resolution was allowing the binding. Fixes PR11003 /
<rdar://problem/10233078>.

llvm-svn: 141137
2011-10-04 23:59:32 +00:00
Eli Friedman 606c103644 Remove a nonsensical bit of code from InitListChecker::getStructuredSubobjectInit which was increasing the reserved size for an init list past its maximum possible size. Fixes PR11056, a case where we were reserving a bunch of memory for arrays that was never actually used.
(No testcase because I don't think we have any way to actually write a testcase for this; the chosen value of NumElements has no effects on anything other than performance and memory usage.)

llvm-svn: 141106
2011-10-04 20:31:48 +00:00
Fariborz Jahanian f2a7b0eade objc: Turn diagnostic on property type mismatch in
continuation class into warning. // rdar://10231514

llvm-svn: 141100
2011-10-04 18:44:26 +00:00
Argyrios Kyrtzidis 52f53fb303 Improve location fidelity of objc decls.
-Add the location of the class name to all objc container decls, not just ObjCInterfaceDecl.
-Make objc decls consistent with the rest of the NamedDecls and have getLocation() point to the
 class name, not the location of '@'.

llvm-svn: 141061
2011-10-04 04:48:02 +00:00
Fariborz Jahanian ed1933b02b objc arc: Suppress certain arc diagnostics on unavailable
functions. // rdar://10186536

llvm-svn: 141037
2011-10-03 22:11:57 +00:00
Abramo Bagnara fd3a455ac7 Fixed source range for template implicit instantiations.
llvm-svn: 141018
2011-10-03 20:34:03 +00:00
Fariborz Jahanian 082a6a14a5 objc++: Accessing explicit property of reference type need
not bind to a temporary. Fixes //rdar://10188258

llvm-svn: 141009
2011-10-03 17:58:21 +00:00
Rafael Espindola 70107f989c Propagate __attribute__((returns_twice)) from C to IL.
llvm-svn: 141002
2011-10-03 14:59:42 +00:00
Argyrios Kyrtzidis b8c3aaf479 Allow getting all source locations of selector identifiers in a ObjCMethodDecl.
Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

  -Immediately before the arguments: -(id)first:(int)x second:(int)y;
  -With a space between the arguments: -(id)first: (int)x second: (int)y;
  -For nullary selectors, immediately before ';': -(void)release;

In such cases we infer the locations instead of storing them.

llvm-svn: 140989
2011-10-03 06:37:04 +00:00
Argyrios Kyrtzidis a6011e25a1 Allow getting all source locations of selector identifiers in a ObjCMessageExpr.
Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

  -Immediately before the arguments: [foo first:1 second:2]
  -With a space between the arguments: [foo first: 1 second: 2]
  -For nullary selectors, immediately before ']': [foo release]

In such cases we infer the locations instead of storing them.

llvm-svn: 140987
2011-10-03 06:36:51 +00:00
Argyrios Kyrtzidis 59ad1e3f57 ArrayRef'ize ObjCMessageExpr
llvm-svn: 140986
2011-10-03 06:36:45 +00:00
Argyrios Kyrtzidis dfd6570643 Pass from the parser the locations of selector identifiers when creating
objc method decls.

They are not stored in the AST yet.

llvm-svn: 140984
2011-10-03 06:36:36 +00:00
Argyrios Kyrtzidis 3849394b81 Don't keep NumSelectorArgs in the ObjCMethodDecl, the number can be derived from the selector.
llvm-svn: 140983
2011-10-03 06:36:29 +00:00
Argyrios Kyrtzidis f934ec8b7b Pass all the locations of the selector identifiers for a message expression from the parser.
They are not kept in the AST yet.

llvm-svn: 140982
2011-10-03 06:36:17 +00:00
Peter Collingbourne 7277fe8aed CUDA: diagnose invalid calls across targets
llvm-svn: 140978
2011-10-02 23:49:40 +00:00
Peter Collingbourne 619a8c7df3 CUDA: add separate diagnostics for too few/many exec config args
llvm-svn: 140977
2011-10-02 23:49:29 +00:00
Peter Collingbourne 740afe276f Add ConvertArgumentsForCall diagnostics for at least/at most n args
llvm-svn: 140976
2011-10-02 23:49:20 +00:00
Peter Collingbourne 34a20b081e CUDA: diagnose unconfigured calls to global functions
llvm-svn: 140975
2011-10-02 23:49:15 +00:00
John McCall a55902bf98 Parse attributes written in an ObjC method parameter type as
attributes on the parameter declaration.

llvm-svn: 140944
2011-10-01 09:56:14 +00:00
John McCall 42856de542 Hey, maybe we shouldn't silently ignore decl attributes
on declarators written as types.

llvm-svn: 140931
2011-10-01 05:17:03 +00:00
Richard Smith eb3c10c248 constexpr: semantic checking for constexpr functions and constructors. Based in
part on patches by Peter Collingbourne.

We diverge from the C++11 standard in a few areas, mostly related to checking
constexpr function declarations, and not just definitions. See WG21 paper
N3308=11-0078 for details.

Function invocation substitution is not available in this patch; constexpr
functions cannot yet be used from within constant expressions.

llvm-svn: 140926
2011-10-01 02:31:28 +00:00
John McCall e4fe245716 Allow the results of cf_returns_not_retained function
calls, or calls to audited functions without an explicit
return attribute, to be casted without a bridge cast.
Tie this mechanism in with the existing exceptions to
the cast restrictions.  State those restrictions more
correctly and generalize.

llvm-svn: 140912
2011-10-01 01:01:08 +00:00
Argyrios Kyrtzidis 201d377109 Mark a TagDecl when it is free standing (e.g. "struct foo;")
llvm-svn: 140894
2011-09-30 22:11:31 +00:00
Fariborz Jahanian 044a5be6fb objc arc: allow objc_returns_inner_pointer on methods that return
a reference type, since inner reference is much like an inner pointer.
// rdar://10139365

llvm-svn: 140880
2011-09-30 20:50:23 +00:00
Benjamin Kramer 7827da0e75 Fix compiler warning about && in ||.
This time the warning found an actual bug, we don't want to handle
force_align_arg_pointer differently than __force_align_arg_pointer__.

llvm-svn: 140877
2011-09-30 20:32:22 +00:00
Eli Friedman 271002fc99 Support dllimport and dllexport on x86-64 Windows. PR10978. Patch by Ruben Van Boxem.
llvm-svn: 140871
2011-09-30 18:53:25 +00:00
Argyrios Kyrtzidis 12afd70370 [libclang] Introduce CXCursor_CXXAccessSpecifier for C++'s public:/private:/protected: specifiers.
Patch by Paolo Capriotti!

llvm-svn: 140864
2011-09-30 17:58:23 +00:00
John McCall 32f5fe1467 Add explicit attributes to mark functions as having had their
CoreFoundation object-transfer properties audited, and add a #pragma
to cause them to be automatically applied to functions in a particular
span of code.  This has to be implemented largely in the preprocessor
because of the requirement that the region be entirely contained in
a single file;  that's hard to impose from the parser without registering
for a ton of callbacks.

llvm-svn: 140846
2011-09-30 05:12:12 +00:00
Richard Smith 7cd25b2836 constexpr functions are implicitly const. More tests to follow.
llvm-svn: 140831
2011-09-30 00:45:47 +00:00
Richard Smith 7b729cdbff Suggest adding 'constexpr' if the GNU extension for in-class initializers for static const float members is used in C++11 mode.
llvm-svn: 140828
2011-09-30 00:33:19 +00:00
Richard Smith 256336d9ab Mark the ExtWarn for in-class initialization of static const float members as a GNU extension. Don't extend the scope of this extension to all literal types in C++0x mode.
llvm-svn: 140820
2011-09-29 23:18:34 +00:00
Fariborz Jahanian 6b854c5d37 Minor refactoring. Enumerators may inherit the deprecated/unavailable
attributes from the enumeration type.
// rdar://10201690

llvm-svn: 140818
2011-09-29 22:45:21 +00:00
Richard Smith ee6311df69 In C++0x, static const volatile data members cannot be initialized in-class.
llvm-svn: 140809
2011-09-29 21:28:14 +00:00
Richard Smith 2316cd8b79 constexpr: semantic checking for constexpr variables.
We had an extension which allowed const static class members of floating-point type to have in-class initializers, 'as a C++0x extension'. However, C++0x does not allow this. The extension has been kept, and extended to all literal types in C++0x mode (with a fixit to add the 'constexpr' specifier).

llvm-svn: 140801
2011-09-29 19:11:37 +00:00
Fariborz Jahanian d71061298c c - Enumerators may inherit the deprecated/unavailable
attributes from the enumeration type.
// rdar://10201690

llvm-svn: 140800
2011-09-29 18:40:01 +00:00
John McCall f1e8b34f6c Add an ns_bridged attribute, used to specify that a
pointer to the annotated struct type can be used as an 
Objective-C object pointer.  If an argument is given, the
type is actually "toll-free bridged" to the specific type 
named there, rather than just to 'id'.

For now, we cannot rely on all types being so annotated,
and we'll always have to have exceptions for things like
CFTypeRef (aka const void*), but this is clearly a good
foundation for improving toolage in this area.

llvm-svn: 140779
2011-09-29 07:17:38 +00:00
Ted Kremenek 7fd1723619 Like IBOutletCollection, it only makes sense to apply the IBOutlet annotation to Objective-C object types. Fixes <rdar://problem/10142685>.
llvm-svn: 140778
2011-09-29 07:02:25 +00:00
Ted Kremenek 6e302b2e6e Do not warn about empty format strings when there are no data arguments. Fixes <rdar://problem/9473155>.
llvm-svn: 140777
2011-09-29 05:52:16 +00:00
David Blaikie 7833b7db1f Unnecessary else
llvm-svn: 140775
2011-09-29 04:06:47 +00:00
Fariborz Jahanian 97676979a7 objc arc: Diagnose block pointer type mismatch when
some arguments types are ns_consumed and some otherwise
matching types are not. This is objc side of
// rdar://10187884

llvm-svn: 140729
2011-09-28 21:52:05 +00:00
Fariborz Jahanian 600ba208ab objc++ arc: Diagnose block pointer type mismatch when
some arguments types are ns_consumed and some otherwise
matching types are not. This fixes the objc++ side only *auch*.
// rdar://10187884

llvm-svn: 140717
2011-09-28 20:22:05 +00:00
Ted Kremenek 3f443a71dc Tweak -Wobjc-missing-super-calls to not warning about missing [super dealloc] when in GC-only mode, and to not warning about missing [super finalize] when not using GC.
llvm-svn: 140713
2011-09-28 19:32:29 +00:00
Argyrios Kyrtzidis 83c337d600 For __weak/__strong/etc. ownership attributes, don't macro expand them in diagnostics.
llvm-svn: 140711
2011-09-28 18:35:06 +00:00
Eli Friedman 9ab36372db PR11002: Make sure we emit sentinel warnings with a valid source location. (Ideally, we want to use the location returned by getLocForEndOfToken, but that is not always successful.)
llvm-svn: 140658
2011-09-27 23:46:37 +00:00
Ted Kremenek ab2dcc8de6 Include prefix with default synthesized ivars.
llvm-svn: 140657
2011-09-27 23:39:40 +00:00
Douglas Gregor 75acd925d0 Only print _Bool as 'bool' when 'bool' is defined as an object-like
macro whose only replacement token is '_Bool'.

llvm-svn: 140656
2011-09-27 23:30:47 +00:00
Douglas Gregor c0b07286cf When 'bool' is not a built-in type but is defined as a macro, print
'bool' rather than '_Bool' within types, to make things a bit more
readable. Fixes <rdar://problem/10063263>.

llvm-svn: 140650
2011-09-27 22:38:19 +00:00
Fariborz Jahanian ac8dbf0fc7 objcetive-c-arc: When overriding a method, its ns_consumed patameter
attribute must match its overriden method. Same also for
ns_returns_retained/not_retained on the result type.
This is one half of // rdar://10187884

llvm-svn: 140649
2011-09-27 22:35:36 +00:00
Eli Friedman be4b363060 Get rid of useless helper Sema::CastCategory.
llvm-svn: 140642
2011-09-27 21:58:52 +00:00
Douglas Gregor 486b74e596 Revert r139989 and r140031, which implemented the Objective-C type
system change in <rdar://problem/10109725> that allows conversion from
'self' in class methods to the root of the class's hierarchy. This
conversion rule is a hack that has non-trivial repurcussions
(particularly with overload resolution).

llvm-svn: 140605
2011-09-27 16:10:05 +00:00
Bill Wendling d9dcf18cb0 Revert r140589. It was causing failures during llvm compilation:
llvm[1]: Compiling CommandLine.cpp for Debug+Asserts build
if  /Users/void/llvm/llvm-opt.obj/Release+Asserts/bin/clang++ -I/Users/void/llvm/llvm.obj/include -I/Users/void/llvm/llvm.obj/lib/Support -I/Users/void/llvm/llvm.src/include -I/Users/void/llvm/llvm.src/lib/Support  -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -g -fno-exceptions -fno-common -Woverloaded-virtual -Wcast-qual   -m64 -Wall -W -Wno-unused-parameter -Wwrite-strings -c -MMD -MP -MF "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp" -MT "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.o" -MT "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d" /Users/void/llvm/llvm.src/lib/Support/CommandLine.cpp -o /Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.o ; \
            then /bin/mv -f "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp" "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d"; else /bin/rm "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp"; exit 1; fi
In file included from /Users/void/llvm/llvm.src/lib/Support/CommandLine.cpp:25:
/Users/void/llvm/llvm.src/include/llvm/Support/system_error.h:690:14: error: unknown type name 'make_error_condition'; did you mean 'error_condition'?
    {*this = make_error_condition(_e);}
             ^~~~~~~~~~~~~~~~~~~~
             error_condition
...

llvm-svn: 140599
2011-09-27 10:09:33 +00:00
Eli Friedman f272d40d7c PR11009: Fix a FIXME which was leading to an assertion failure with rvalue references.
llvm-svn: 140594
2011-09-27 01:11:35 +00:00
Kaelyn Uhrain d889d2461f Add typo correction for the type name in C++ "new" statements
llvm-svn: 140589
2011-09-27 00:33:13 +00:00
Fariborz Jahanian 698bd3113e objc - don't complain about unimplemented property when conforming
protocol declares the property, as well as one of its superclasses.
Property will be implemented in the super class. // rdar://10120691

llvm-svn: 140586
2011-09-27 00:23:52 +00:00
Ted Kremenek d41f346875 Fix regression of -Warray-bounds involving varargs functions [PR 11007].
llvm-svn: 140584
2011-09-26 23:36:13 +00:00
Fariborz Jahanian 0ee58d6b4b objc - compare setter/property types using
hasSameUnqualifiedType in //rdar://10156674

llvm-svn: 140576
2011-09-26 22:59:09 +00:00
Fariborz Jahanian 23ef165920 objc - in matching setter argument type to its property type,
ingore the type qualifiers. // rdar://10156674

llvm-svn: 140571
2011-09-26 22:12:27 +00:00
Fariborz Jahanian 6d5d6a277a objc-arc: mark functions which return types which can't be dealt with
in arc mode and are in system headers as unavailable. 
// rdar://10186625

llvm-svn: 140565
2011-09-26 21:23:35 +00:00
Eli Friedman d8d7a37437 CheckStringInit has side effects; make sure we don't run it in VerifyOnly mode, at least for the moment. <rdar://problem/10185490>.
Sebastian, please take a look at this; I'm not entirely sure it is the right thing to do.

llvm-svn: 140552
2011-09-26 19:09:09 +00:00
Eli Friedman ed0f9168de Fix a typo in the new VerifyOnly handling in SemaInit. No visible difference at the moment, as far as I can tell.
llvm-svn: 140546
2011-09-26 18:53:43 +00:00
David Blaikie b5784324b3 Rename DiagnosticInfo to Diagnostic as per issue 5397
llvm-svn: 140493
2011-09-26 01:18:08 +00:00
David Blaikie 9c902b5502 Rename Diagnostic to DiagnosticsEngine as per issue 5397
llvm-svn: 140478
2011-09-25 23:23:43 +00:00
Benjamin Kramer afe718f373 Add a missing increment to avoid infinite looping in the regression test.
Also make sure we set the error flag when correcting a typo.

llvm-svn: 140466
2011-09-25 02:41:26 +00:00
Benjamin Kramer c9d78d7444 Update CMake build.
llvm-svn: 140462
2011-09-24 18:21:37 +00:00
Sebastian Redl a72462cdf4 Add a special note for overload resolution when an initializer list argument
cannot be converted.
This is in preparation for overload resolution of initializer lists.
Currently, you will always get this message when you try to pass an init
list to an overloaded function.

llvm-svn: 140461
2011-09-24 17:48:32 +00:00
Sebastian Redl a74948d347 Correctly parse braced member initializers (even in delayed parsing) and correctly pass
the information on to Sema. There's still an incorrectness in the way template instantiation
works now, but that is due to a far larger underlying representational problem.
Also add a test case for various list initialization cases of scalars, which test this
commit as well as the previous one.

llvm-svn: 140460
2011-09-24 17:48:25 +00:00
Sebastian Redl 12757ab4cb Treat list-initialization of scalars as a first-class citizen in C++11.
Allow empty initializer lists for scalars, which mean value-initialization.
Constant evaluation for single-element and empty initializer lists for scalars.
Codegen for empty initializer lists for scalars.
Test case comes in next commit.

llvm-svn: 140459
2011-09-24 17:48:14 +00:00
Sebastian Redl b49c46c25c Give InitListChecker a verification-only mode, where it neither emits diagnostics nor
builds a semantic (structured) initializer list, just reports on whether it can match
the given list to the target type.
Use this mode for doing init list checking in the initial step of initialization, which
will eventually allow us to do overload resolution based on the outcome.

llvm-svn: 140457
2011-09-24 17:48:00 +00:00
Sebastian Redl 7de1fb410c In Initialization, add step kind SK_ListConstructorCall (list-initialization
resolves to a constructor call in C++11) and failure kind
FK_ListInitializationFailed (early InitListChecker run failed).

llvm-svn: 140456
2011-09-24 17:47:52 +00:00
Sebastian Redl a846cac01b Inline Sema::CheckInitList into its only user.
llvm-svn: 140455
2011-09-24 17:47:46 +00:00
Sebastian Redl 26bcc942d0 Fix typos and non-doxygen-ness in a few comments.
llvm-svn: 140454
2011-09-24 17:47:39 +00:00
Francois Pichet d8e4e41301 [microsoft] In Microsoft mode, if we are inside a template class member function and we can't resolve an identifier then assume the identifier is type dependent. The goal is to postpone name lookup to instantiation time to be able to search into type dependent base classes.
This fixes a few errors when parsing MFC code with clang.
BTW clang trunk is now about 5 patches away to be able the parse the default wizard-generated MFC project.

llvm-svn: 140452
2011-09-24 10:38:05 +00:00
Fariborz Jahanian 11ee283e2a objc - redeclaration of property in extension class
must match property type declaration in its
primary class. // rdar://10142679

llvm-svn: 140438
2011-09-24 00:56:59 +00:00
Fariborz Jahanian 44653709fd objc - fixes a crash when undefined typed property
followed by it implementation crashes when attempt
is made to access the synthesized ivar. 
// rdar://10177744

llvm-svn: 140432
2011-09-23 23:11:38 +00:00
David Blaikie aa347f9392 Removing a bunch of dead returns/breaks after llvm_unreachables.
llvm-svn: 140407
2011-09-23 20:26:49 +00:00
Douglas Gregor b1fa148837 Don't propagate the 'availability' attribute through declaration
merging for overrides. One might want to make a method's availability
in a superclass different from that of its subclass. Fixes
<rdar://problem/10166223>.

llvm-svn: 140406
2011-09-23 20:23:42 +00:00
Richard Trieu 021baa373f Add a new warning to -Wliteral-conversion to catch cases where a string literal
is cast to a boolean.  An exception has been made for string literals in
logical expressions to allow the common case of use in assert statements.

bool x;
x = "hi";  // Warn here
void foo(bool x);
foo("hi");  // Warn here
assert(0 && "error");
assert("error);  // Warn here

llvm-svn: 140405
2011-09-23 20:10:00 +00:00
Douglas Gregor 34bc6e5ee4 When checking for weak vtables, check whether the actual definition of
the key function is inline, rather than the original
declaration. Perhaps FunctionDecl::isInlined() is poorly named. Fixes
<rdar://problem/9979458>. 

llvm-svn: 140400
2011-09-23 19:04:03 +00:00
David Blaikie 83d382b1ca Switch assert(0/false) llvm_unreachable.
llvm-svn: 140367
2011-09-23 05:06:16 +00:00
Douglas Gregor 5223529b27 Don't finalize checking of base and member initializers for a
constructor template. Fixes PR10457.

llvm-svn: 140350
2011-09-22 23:04:35 +00:00
Douglas Gregor eb4089ad01 Only trigger the initialize-an-array-via-elementwise-copy/move code
generation when we're dealing with an implicitly-defined copy or move
constructor. And, actually set the implicitly-defined bit for
implicitly-defined constructors and destructors. Should fix self-host.

llvm-svn: 140334
2011-09-22 20:32:43 +00:00
Argyrios Kyrtzidis e9a24435c6 Don't use TemplateArgumentListInfo inside AST nodes because it may leak.
Use ASTTemplateArgumentListInfo instead.

llvm-svn: 140331
2011-09-22 20:07:09 +00:00
Douglas Gregor 4ea5dec0e5 Don't allow template argument deduction to deduce a placeholder type,
ever. Fixes PR10939.

llvm-svn: 140304
2011-09-22 15:57:07 +00:00
Tobias Grosser 766bcc27dc In OpenCL, conversions between different vector types are disallowed
OpenCL 6.2.1 says: "Implicit conversions between built-in vector data types are
disallowed."  OpenCL 6.2.2 says: "Explicit casts between vector types are not
legal."  For example:

uint4 u = (uint4)(1);
int4 i = u; // invalid implicit conversion
int4 e = (int4)u; // invalid explicit conversion

Fixes PR10967. Submitted by: Anton Lokhmotov <Anton.lokhmotov@gmail.com>

llvm-svn: 140300
2011-09-22 13:03:14 +00:00
David Blaikie 751c558d8e ArrayRef-ifying the fields passed to Sema::ActOnFields
llvm-svn: 140293
2011-09-22 02:58:26 +00:00
David Blaikie b9c168a265 ArrayRef-ifying the UnexpandedParameterPacks passed to Sema::CheckParameterPacksForExpansion
llvm-svn: 140290
2011-09-22 02:34:54 +00:00
Tobias Grosser 0a3a22fe66 In the OpenCL mode, the AltiVec mode must be off and checks must be strict
OpenCL is different from AltiVec in the way it supports vector literals.  OpenCL
is strict with regards to semantic checks.  For example, implicit conversions
and explicit casts between vectors of different types are disallowed.

Fixes PR10975. Submitted by: Anton Lokhmotov <Anton.lokhmotov@gmail.com>

llvm-svn: 140270
2011-09-21 18:28:29 +00:00
David Blaikie 9c70e04bec ArrayRef-ifying Function/BlockDecl's setParams
llvm-svn: 140268
2011-09-21 18:16:56 +00:00
Douglas Gregor 7c26c04ba9 Diagnose attempts to write a templated data member, from Stepan
Dyatkovskiy! Fixes PR10896.

llvm-svn: 140250
2011-09-21 14:40:46 +00:00
John McCall 30909031a7 Enforce access control for conversion operators used in contextual
conversions (rather than just call-arguments).

llvm-svn: 140244
2011-09-21 08:36:56 +00:00
Francois Pichet 3b4de99158 [microsoft] Move missing typename warning from -fms-extensions to -fms-compatibility. Also allow the missing typename warning at function scope.
llvm-svn: 140240
2011-09-21 07:59:49 +00:00
Richard Trieu cf24656ea4 Change:
assert(!"error message");

To:

  assert(0 && "error message");

which is more consistant across the code base.

llvm-svn: 140232
2011-09-21 02:50:14 +00:00
Argyrios Kyrtzidis 712512bb36 [ARC] Allow forming 'id*' in an unevaluated context. Fixes rdar://10148540.
llvm-svn: 140212
2011-09-20 23:49:22 +00:00
Francois Pichet b3642c2c7a Move Microsoft access specifier bug emulation from -fms-extensions to -fm-compatibility.
llvm-svn: 140189
2011-09-20 22:08:26 +00:00
Douglas Gregor 75644d5729 Introduce an egregious hack for modules to cope with headers that come
from unfriendly (== not at all modularized) directories. This is
temporary, and it only affects module construction until I'll figured
out how to deal with system headers.

llvm-svn: 140159
2011-09-20 18:13:03 +00:00
Peter Collingbourne 9a8f1534d9 Remove redundant break statements, and replace asserts with llvm_unreachable
Per John's review comments for r140068.

llvm-svn: 140142
2011-09-20 12:40:26 +00:00
Chandler Carruth 9a797578dc Fix a pretty nasty bug in noreturn destructors that cascaded into lots
of false positive warnings that depend on noreturn destructors pruning
the CFGs, but only in C++0x mode!

This was really surprising as the debugger quickly reveals that the
attributes are parsed correctly (and using the same code) in both modes.
The warning fires in the same way in both modes. But between parsing and
building the destructor declaration with the noreturn attribute and the
warning, it magically disappears. The key? The 'noexcept' appears!

When we were rebuilding the destructor type with the computed implicit
noexcept we completely dropped the old type on the floor. This almost
makes sense (as the arguments and return type to a destructor aren't
exactly unpredictable), but lost any function type attributes as well.
The fix is simple, we build the new type off of the old one rather than
starting fresh.

Testing this is a bit awkward. I've done it by running the
noreturn-sensitive tests in both modes, which previous failed and now
passes, but if anyone has ideas about how to more specifically and
thoroughly test that the extended info on a destructor is preserved when
adding noexcept, I'm all ears.

llvm-svn: 140138
2011-09-20 04:55:26 +00:00
Eli Friedman 6b9c41ea68 Add list initialization for complex numbers in C. Essentially, this allows "_Complex float x = {1.0f, 2.0f};". See changes to docs/LanguageExtensions.html for a longer description.
<rdar://problem/9397672>.

llvm-svn: 140090
2011-09-19 23:17:44 +00:00
Peter Collingbourne 2dbb708b8a OpenCL: introduce support for function scope __local variables
llvm-svn: 140068
2011-09-19 21:14:35 +00:00
Argyrios Kyrtzidis e6e67deeed Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.
It already works (and is useful with) macro locs as well.

llvm-svn: 140057
2011-09-19 20:40:19 +00:00
Fariborz Jahanian e20c0a5a66 objc - some refactoring of my last 'self' patch.
llvm-svn: 140031
2011-09-19 18:06:07 +00:00
Fariborz Jahanian a195a5182c CurContext cannot be null ever.
llvm-svn: 140022
2011-09-19 16:32:32 +00:00
Erik Verbruggen 631dfc6229 Removed an unused field and its accessors methods.
llvm-svn: 140017
2011-09-19 15:10:40 +00:00
Richard Smith c94ec84a3d In constructors, don't generate implicit initializers for members of anonymous structs contained within anonymous unions.
llvm-svn: 140015
2011-09-19 13:34:43 +00:00
Richard Smith b83e3eb37d Remove function which is unused as of r139996. Thanks to David Blaikie for bringing this to my attention.
llvm-svn: 140013
2011-09-19 11:19:27 +00:00
Francois Pichet 39cba5343d Move the "jump bypasses variable initialization" error -> warning downgrade from -fms-extensions to -fms-compatibility.
llvm-svn: 140008
2011-09-18 21:48:27 +00:00
Francois Pichet 08d2fa0a78 In Microsoft mode(-fms-compatibility), prefer an integral conversion to a floating-to-integral conversion if the integral conversion is between types of the same size.
For example:
 void f(float);
 void f(int);
 int main {
    long a;
    f(a);
 }
Here, MSVC will call f(int) instead of generating a compile error as clang will do in standard mode.
This fixes a few errors when parsing MFC code with clang.

llvm-svn: 140007
2011-09-18 21:37:37 +00:00
Richard Smith 20104048be PR10304: Do not call destructors for data members from union destructors. Prior to C++11, this
has no effect since any such destructors must be trivial, and in C++11 such destructors must not
be called.

llvm-svn: 139997
2011-09-18 12:11:43 +00:00
Richard Smith 12d5ed8850 PR10954: variant members should not be implicitly initialized in constructors if no
mem-initializer is specified for them, unless an in-class initializer is specified.

llvm-svn: 139996
2011-09-18 11:14:50 +00:00
Richard Smith 4037235429 Fix PR10531. Attach an initializer to anonymous unions, since the default constructor might not be trivial (if there is an in-class initializer for some member) and might be deleted.
llvm-svn: 139991
2011-09-18 00:06:34 +00:00
Nico Weber 7c29980d20 Let -Warray-bounds handle casted array types without false positives.
Fixes PR10771.

llvm-svn: 139990
2011-09-17 22:59:41 +00:00
Fariborz Jahanian db8015c449 objc - Treat type of 'self' in class methods as root of
class of this method. // rdar://10109725

llvm-svn: 139989
2011-09-17 19:23:40 +00:00
Fariborz Jahanian 8b148bb5b7 objc: Don't crash with decl context for property impl.
is missing. // rdar//10127639

llvm-svn: 139988
2011-09-17 18:48:50 +00:00
Francois Pichet 0706d203cf Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag.
Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag.

llvm-svn: 139987
2011-09-17 17:15:52 +00:00
Francois Pichet 2f55019bf0 In Microsoft mode, warn if an indirect goto jump over a variable initialization.
Also add a test case for the non Microsoft case because such test didn't exist.

llvm-svn: 139971
2011-09-16 23:15:32 +00:00
Richard Trieu f8916e118a Moves calls of checkArithmeticNull() from CreateBuiltinBinOp() into the individual Check*Operands() functions.
llvm-svn: 139895
2011-09-16 00:53:10 +00:00
Caitlin Sadowski 086fb95da5 Thread safety: Adding FIXMEs and a couple cleanups
llvm-svn: 139894
2011-09-16 00:35:54 +00:00
Richard Trieu 7a5c27276e Remove no longer needed LHSType and RHSType from checkArithmeticNull()
llvm-svn: 139879
2011-09-15 23:57:21 +00:00
Richard Trieu a25995dbb4 Change checkArithmeticNull() to use a NonNullType, instead of checking both the
LHSType and RHSType for everything.

llvm-svn: 139878
2011-09-15 23:51:29 +00:00
Richard Trieu 82402a06f1 Finish the lex->LHS and rex->RHS cleanup in Sema.
llvm-svn: 139856
2011-09-15 21:56:47 +00:00
Fariborz Jahanian d923eb0d1e reverse patch in r139818 to focus on 'self'
instead of 'Class'.

llvm-svn: 139834
2011-09-15 20:40:18 +00:00
Fariborz Jahanian b7d278ba77 Objective-c: Conversion from type Class to any root class type is allowed
in class methods with no warning. //rdar://10109725

llvm-svn: 139818
2011-09-15 18:30:22 +00:00
Caitlin Sadowski bf06c72aa9 Thread safety: cleaning up FIXME for trylocks
llvm-svn: 139805
2011-09-15 17:50:19 +00:00
Caitlin Sadowski af9b7c5f8b Thread safety: refactoring various out of scope warnings to use the same inteface. This eliminates a lot of unnecessary duplicated code.
llvm-svn: 139801
2011-09-15 17:25:19 +00:00
Caitlin Sadowski e50d8c3415 Thread safety: reverting to use separate warning for requirement to hold any lock
llvm-svn: 139723
2011-09-14 20:09:09 +00:00
Kaelyn Uhrain 7fbe2f78d7 Plug an abstraction leak and fix a crasher in DiagnoseInvalidRedeclaration
llvm-svn: 139718
2011-09-14 19:37:32 +00:00
Eli Friedman 8eac6c2187 PR10864: make sure we correctly delay type-checking for inline asm tied operands with dependent type. Patch by Likai Liu.
llvm-svn: 139716
2011-09-14 19:20:00 +00:00
Fariborz Jahanian 1723e17b78 objc-arc: warn when a 'retain' block property is
declared which does not force a 'copy' of the block literal
object. // rdar://9829425

llvm-svn: 139706
2011-09-14 18:03:46 +00:00
Argyrios Kyrtzidis 8db67df663 Add the location of the interface reference to IBOutletCollectionAttr.
Depends on a llvm tablegen commit.

llvm-svn: 139618
2011-09-13 18:41:59 +00:00
John McCall 4319286337 Refactoring, mostly to give ObjCPropertyDecls stronger invariants for
their semantic attributes and then to take advantage of that.

llvm-svn: 139615
2011-09-13 18:31:23 +00:00
Caitlin Sadowski 427f42e04a Thread safety: Initializing var before exhaustive switch statement to deal with extraneous warning produced by gcc but not clang
llvm-svn: 139611
2011-09-13 18:01:58 +00:00
Douglas Gregor 79a91418bd Switch LangOptions over to a .def file that describes header of the
language options. Use that .def file to declare the LangOptions class
and initialize all of its members, eliminating a source of annoying
initialization bugs.

AST serialization changes are next up.

llvm-svn: 139605
2011-09-13 17:21:33 +00:00
Argyrios Kyrtzidis 309b4c49e4 Keep the source range of attributes. Depends on a llvm tablegen commit.
llvm-svn: 139600
2011-09-13 16:05:58 +00:00