aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-01-25Add -add-plugin flag, which runs plugins in addition to codegen.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124227 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Add an attribute to forbid temporary instances of a type. This allows classJeffrey Yasskin
authors to write class __attribute__((forbid_temporaries)) Name { ... }; when they want to force users to name all variables of the type. This protects people from doing things like creating a scoped_lock that only lives for a single statement instead of an entire scope. The warning produced by this attribute can be disabled by -Wno-forbid-temporaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124217 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Fix the ranking of reference bindings during overload resolutionDouglas Gregor
(C++0x [over.ics.rank]p3) when one binding is an lvalue reference and the other is an rvalue reference that binds to an rvalue. In particular, we were using the predict "is an rvalue reference" rather than "is an rvalue reference that binds to an rvalue", which was incorrect in the one case where an rvalue reference can bind to an lvalue: function references. This particular issue cropped up with std::forward, where Clang was picking an std::forward overload while forwarding an (lvalue) reference to a function. However (and unfortunately!), the right answer for this code is that the call to std::forward is ambiguous. Clang now gets that right, but we need to revisit the std::forward implementation in libc++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124216 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Recycle memory for GRStates that are never referencedTed Kremenek
by ExplodedNodes. This leads to about a 4-8% reduction in memory footprint when analyzing functions in sqlite3. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124214 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Teach -Wuninitialized-experimental to also warnTed Kremenek
about uninitialized variables captured by blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124213 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Tweak wording of static analyzer diagnosticTed Kremenek
for a block capturing the value of an uninitialized variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124212 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Teach TemplateSpecializationTypeLoc::initializeArgLocs() to actuallyDouglas Gregor
generate meaningful [*] template argument location information. [*] Well, as meaningful as possible, given that this entire code path is a hack for when we've lost type-source information. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124211 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Move unnamed_addr after the function arguments on Sabre's request.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124210 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Add test for PR8629Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124204 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Don't insert class templates into the DynamicClasses vector.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124201 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Be a bit more defensive about setting the temporary base locationDouglas Gregor
during template instantiation. This code needs to eventually die, but this little tweak fixes PR8629, where bad location information slipped through to the location of a class template instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124199 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Implement the rvalue-reference deduction transformation (from T&& ->Douglas Gregor
T) when taking the address of an overloaded function or matching a specialization to a template (C++0x [temp.deduct.type]p10). Fixes PR9044. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124197 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25When performing a glvalue-to-xvalue static_cast that involves aDouglas Gregor
derived-to-base conversion, set the cast kind and base path appropriately. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124189 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Document the ns_returns_retained, ns_consumed, etc. attributes.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124176 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Change the wording of the bad-decl-for-attribute warning and errorJohn McCall
to make it clear that we're talking about the declarations and not the types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124175 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleasedJohn McCall
attributes for the benefit of the static analyzer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124174 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Downgrade the error about rvalue references to an extension warningDouglas Gregor
and turn on __has_feature(cxx_rvalue_references). The core rvalue references proposal seems to be fully implemented now, pending lots more testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124169 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25[analyzer] Handle the dot syntax for properties in the ExprEngine.Argyrios Kyrtzidis
We translate property accesses to obj-c messages by simulating "loads" or "stores" to properties using a pseudo-location SVal kind (ObjCPropRef). Checkers can now reason about obj-c messages for both explicit message expressions and implicit messages due to property accesses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124161 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25[analyzer] Introduce ExprEngine::VisitObjCMessage for handling general ↵Argyrios Kyrtzidis
ObjCMessages (both message expressions and property access) and use it in ExprEngine::VisitObjCMessageExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124160 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25[analyzer] Introduce ObjCMessage which represents both explicit ObjC message ↵Argyrios Kyrtzidis
expressions and implicit messages that are sent for handling properties in dot syntax. Replace all direct uses of ObjCMessageExpr in the checkers and checker interface with ObjCMessage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124159 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25In a ObjCMessageExpr with the super class as receiver, 'super' is actually a ↵Argyrios Kyrtzidis
ObjCInterfaceType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124158 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25[analyzer] Simplify GetReceiverType function in ↵Argyrios Kyrtzidis
BasicObjCFoundationChecks.cpp; no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124157 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Revert r124146 for now. It appears to be failing on a few platforms.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124153 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24pre/post increase/decrease for AltiVec vectorsAnton Yartsev
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124146 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Enhance the diagnostic for referring to a typedef with an elaborated name to beNick Lewycky
as useful in a templated context as it is without templates. Fixes PR8755! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124136 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Disallow function template partial specializations, from HansDouglas Gregor
Wennborg! Fixes PR8295. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124135 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Eliminate the use of getTypeForDecl from clang_getCursorType() andDouglas Gregor
clang_getDeclObjCTypeEncoding(); use ASTContext's methods instead, which will (lazily) create the type as needed. Otherwise, we can end up with null QualTypes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124133 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Note the need for --param=build_config=whatever in the Hacking Clang ↵Douglas Gregor
document, from Yuri Gribov git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124130 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Improve the printing of C++ construction expressions, from Yuri Gribov!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124123 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Use attributes for all the override control specifiers.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124122 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Re-instate r123977/r123978, my updates of the reference-bindingDouglas Gregor
implementation used by overload resolution to support rvalue references. The original commits caused PR9026 and some hard-to-reproduce self-host breakage. The only (crucial!) difference between this commit and the previous commits is that we now properly check the SuppressUserConversions flag before attempting to perform a second user-defined conversion in reference binding, breaking the infinite recursion chain of user-defined conversions. Rvalue references should be working a bit better now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124121 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Check whether DependentScopeDeclRefExpr's NestedNameSpecifier exists before ↵Axel Naumann
accessing it, both for consistency (see StmtPrinter::VisitDeclRefExpr()) and for other use cases of dependent types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124119 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Eliminate the last reference to concepts, from Jean-Daniel DupasDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124118 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Fix the __has_attribute example; we don't have an override attribute anymore.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124106 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24fix some typos, patch by Jonathan Wakely!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124105 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24fix a broken example, PR9005, patch by Jonathan Wakely!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124104 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24remove some crazy leftover thing.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124098 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24When building a type info struct for EH, we always want it to have ↵Anders Carlsson
linkonce_odr linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124096 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Change CodeGenModule::getVTableLinkage to be a non-static member function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124095 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24"Name" a bool parameter.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124094 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Use CharUnits for the offset amount of RegionRawOffset.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124093 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Remove private toCharUnits() helper method, replacing with calls toKen Dyck
ASTContext::toCharUnitsFromBits(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124092 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-24Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the ↵Anders Carlsson
exception of explicit template instantiations, which have to be weak_odr. This fixes PR6996. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124089 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Get rid of [[hiding]], [[override]] and [[base_check]].Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124087 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Get rid of the [[final]] C++0x attribute.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124083 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Add support for the --noexecstack option. Fixes PR8762.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124078 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Teach -Wuninitialized-experimental about sizeof().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124076 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Tweak diagnostic:Ted Kremenek
error: no super class declared in @interface for 'XXX' to be: error: 'X' cannot use 'super' because it is a root class The latter explains what the user actually did wrong. Fixes: <rdar://problem/8904409> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124074 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-23Null initialize a few variables flagged byTed Kremenek
clang's -Wuninitialized-experimental warning. While these don't look like real bugs, clang's -Wuninitialized-experimental analysis is stricter than GCC's, and these fixes have the benefit of being general nice cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124072 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-22Accept the C++0x override control keywords as an extension in C++98. This is ↵Anders Carlsson
OK since the new syntax is unambiguous and can't be confused with C++98 syntax. If anyone disagrees, please shout! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124048 91177308-0d34-0410-b5e6-96231b3b80d8