aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2012-01-15constexpr: casts to void* are allowed in constant expressions, don't set theRichard Smith
designator invalid. (Since we can't read the value of such a pointer, this only affects the quality of diagnostics.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148208 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-15Change linkage computation so it doesn't depend on FunctionDecl::isExternC ↵Eli Friedman
or VarDecl::isExternC, and instead queries what it actually cares about: whether the given declaration is inside an extern "C" context. Fundamentally, figuring out whether a function/variable uses C linkage requires knowing the linkage, and the logic in FunctionDecl::isExternC and VarDecl::isExternC was getting it wrong. Given that, fix FunctionDecl::isExternC and VarDecl::isExternC to use much simpler implementations that depend on the fixed linkage computation. Fixes a regression to test/SemaCXX/linkage.cpp caused by a new warning exposing the fact that the internal state was wrong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148207 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Use a smaller vector than SmallVector.Benjamin Kramer
Shrinks OverloadCandidate from 208 to 168 bytes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148204 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Clear ImplicitConversionSequence the obvious way which turns out to be less ↵Benjamin Kramer
fragile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148200 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Give OverloadCandidateSet the responsibility for destroying the implicit ↵Benjamin Kramer
conversion sequences so we don't get double frees when the vector reallocates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148198 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14objc: disallow __block attribute on method params.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148197 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14De-virtualize getPreviousDecl() and getMostRecentDecl() when we knowDouglas Gregor
we have a redeclarable type, and only use the new virtual versions (getPreviousDeclImpl() and getMostRecentDeclImpl()) when we don't have that type information. This keeps us from penalizing users with strict type information (and is the moral equivalent of a "final" method). Plus, settle on the names getPreviousDecl() and getMostRecentDecl() throughout. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148187 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Pool allocate ImplicitConversionSequences.Benjamin Kramer
To avoid malloc thrashing give OverloadCandidateSet an inline capacity for conversion sequences. We use the fact that OverloadCandidates never outlive the OverloadCandidateSet and have a fixed amount of conversion sequences. This eliminates the oversized SmallVector from OverloadCandidate shrinking it from 752 to 208 bytes. On the test case from the "Why is CLANG++ so freaking slow" thread on llvmdev this avoids one gig of vector reallocation (including memcpy) which translates into 5-10% speedup on Lion/x86_64. Overload candidate computation is still the biggest malloc contributor when compiling templated c++ code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148186 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14OverloadCandidateSet: Stop exposing SmallVector internalsBenjamin Kramer
Replace push_back with addCandidate which will let us make use of the fixed size of the conversion sequence vector soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148185 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Introduce Decl::getPreviousDecl() and Decl::getMostRecentDecl(),Douglas Gregor
virtual functions that provide previous/most recent redeclaration information for any declaration. Use this to eliminate the redundant, less efficient getPreviousDecl() functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148184 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Revert accidental commitDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148183 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Add a FIXME for mutation of the common pointer of a ↵Douglas Gregor
RedeclarableTemplateDecl. It is not clear that it's worth delaying the allocation of said pointer git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148182 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Reimplement RedeclarableTemplateDecl in terms ofDouglas Gregor
Redeclarable<RedeclarableTemplateDecl>, eliminating a bunch of redeclaration-chain logic both in RedeclarableTemplateDecl and especially in its (de-)serialization. As part of this, eliminate the RedeclarableTemplate<> class template, which was an abstraction that didn't actually save anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148181 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Remove a redundant word.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148179 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14constexpr irgen: Add irgen support for APValue::Struct, APValue::Union,Richard Smith
APValue::Array and APValue::MemberPointer. All APValue values can now be emitted as constants. Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other entrypoints dealing with constant member pointers are no longer necessary and will be removed in a later change. Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to VarDecl::evaluateValue. This performs caching and deals with the nasty cases in C++11 where a non-const object's initializer can refer indirectly to previously-initialized fields within the same object. Building the intermediate APValue object incurs a measurable performance hit on pathological testcases with huge initializer lists, so we continue to build IR directly from the Expr nodes for array and record types outside of C++11. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148178 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14[analyzer] Taint: add system and popen as undesirable sinks for taintAnna Zaks
data. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148176 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Remember if a type has its visibility set explicitly or implicitly.Rafael Espindola
With that, centralize the way we merge visibility, always preferring explicit over implicit and then picking the most restrictive one. Fixes pr10113 and pr11690. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148163 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-14Fix 80-column violation.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148162 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13(Implicit) parameters deserialized as part of a function type must notDouglas Gregor
get added to the identifier chains as part of deserialization, because they should not be visible to name lookup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148159 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Progress towards making isUsed() reflect whether a declaration is odr-used; ↵Eli Friedman
don't set isUsed for local variables which are referenced in unevaluated contexts. Make other code use isReferenced() (which basically indicates that a declaration isn't dead) where appropriate. I was forced to change test/SemaCXX/linkage.cpp because we aren't actually modeling extern "C" in the AST the way that testcase expects; we were not printing a warning only because we skipped the relevant check. Someone who actually understands the semantics here should fix that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148158 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Fix a silly mistake in ComplexExprEvaluator::ZeroInitialization. ↵Eli Friedman
<rdar://problem/10691092>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148157 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Convert SemaTemplate*.cpp to pass a callback object to CorrectTypo.Kaelyn Uhrain
The change to SemaTemplateVariadic.cpp improves the typo correction results in certain situations, while the change to SemaTemplate.cpp does not change existing behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148155 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Make sure to consider non-DeclContext scopes properly when findingDouglas Gregor
multiple name lookup results in C/Objective-C. Fixes a regression a caused in r147533, found by Enea Zaffanella! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148154 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13When inferring a module for a framework, first determine whether thatDouglas Gregor
framework is actually a subframework within a top-level framework. If so, only infer a module for the top-level framework and then dig out the appropriate submodule. This helps us cope with an amusing subframeworks anti-pattern, where one uses -F <framework>/Frameworks to get direct include access to the subframeworks of a framework (which otherwise would not be permitted). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148148 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Move identification of memory setting and copying functions (memset,Anna Zaks
memcmp, strncmp,..) out of Sema and into FunctionDecl so that the logic could be reused in the analyzer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148142 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Revert r148138; it's causing test failures.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148141 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Convert SemaExprMember.cpp to pass a callback object to CorrectTypo,Kaelyn Uhrain
improving the typo correction results in certain situations. This is also the first typo correction callback conversion to affect an existing unit test. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148140 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13remove assertions in the Hexagon backend specific clang driverSebastian Pop
Patch from Jyotsna Verma: I have made the changes to remove assertions in the Hexagon backend specific clang driver. Instead of asserting on invalid arch name, it has been modified to use the default value. I have changed the implementation of the CPU flag validation for the Hexagon backend. Earlier, the clang driver performed the check and asserted on invalid inputs. In the new implementation, the driver passes the last CPU flag (or sets to "v4" if not specified) to the compiler (and also to the assembler and linker which perform their own check) instead of asserting on incorrect values. This patch changes the setCPU function for the Hexagon backend in clang/lib/Basic/Targets.cpp which causes the compiler to error out on incorrect CPU flag values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148139 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13rename -ccc-host-triple into -targetSebastian Pop
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148138 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13rename DefaultHostTriple into DefaultTargetTripleSebastian Pop
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148137 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Refactor for clarity.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148135 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Don't infer a submodule for a framework's private header, at least for now.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148117 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Remove --hash-style from link command on Android.Evgeniy Stepanov
Gnu hash is not supported by the Android loader. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148113 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13PR11754: Reject non-static constexpr member functions in classes with virtualRichard Smith
base classes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148094 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13A base subobject type doesn't make sense for unions; don't try to compute ↵Eli Friedman
it. Based on patch by Yin Ma. Fixes PR11751. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148093 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13constexpr is allowed on static member functions of non-literal classes. Per ↵Eli Friedman
report on cfe-dev. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148090 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13A few minor improvements to error recovery trying to access member of a ↵Eli Friedman
function. In particular, this restores the cool error recovery for the example from http://blog.llvm.org/2010/04/amazing-feats-of-clang-error-recovery.html , which regressed a few months back. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148089 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Don't crash while trying to diagnose a function declared at block scope with anRichard Smith
incomplete return type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148088 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Fix up the calls to CorrectTypo in Sema*ObjC.cpp to use callbackKaelyn Uhrain
objects, and add a basic CorrectionCandidateCallback template class to simplify the fixups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148085 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13Revert previous commit. Something has gone wonky with my local configurationDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148084 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13When inferring a module map for a framework, add the 'private'Douglas Gregor
requirement to headers under PrivateHeaders. We don't want to build them as part of the module (yet). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148082 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13[analyzer] Unwrap the pointers when ignoring the const cast.Anna Zaks
radar://10686991 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148081 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13[analyzer] Taint: when looking up a binding, provide the type.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148080 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13[analyzer] RegionStoreManager::getBinding() should not crash whenAnna Zaks
looking up value at a CodeTextRegion even when the type is not provided. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148079 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13[analyzer] Fix a typo in a warning message.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148078 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13objc parsing. Fixes a crash when parsing array initializationFariborz Jahanian
inside a class implementation with parse errors. // rdar://10633434 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148074 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12Improve 0-argument -Wvexing-parse diagnostic by adding notes with fix-its:Richard Smith
- If the declarator is at the start of a line, and the previous line contained another declarator and ended with a comma, then that comma was probably a typo for a semicolon: int n = 0, m = 1, l = 2, // k = 5; myImportantFunctionCall(); // oops! - If removing the parentheses would correctly initialize the object, then produce a note suggesting that fix. - Otherwise, if there is a simple initializer we can suggest which performs value-initialization, then provide a note suggesting a correction to that initializer. Sema::Declarator now tracks the location of the comma prior to the declarator in the declaration, if there is one, to facilitate providing the note. The code to determine an appropriate initializer from the -Wuninitialized warning has been factored out to allow use in both that and -Wvexing-parse. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148072 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12Recommit r148056 with fixes to deal with weirdness with bitfields in unions.Eli Friedman
Original message: Make sure adding a field to a struct never reduces its size. PR11745. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148070 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12Revert r148056 while I investigate failures.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148068 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12Make sure adding a field to a struct never reduces its size. PR11745.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148056 91177308-0d34-0410-b5e6-96231b3b80d8