aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-11-16This really seems like a boring set of fixes to our tests to make them moreChandler Carruth
independent of the underlying system. Let me know if any of these are too aggressive. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119345 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Simplify some complex emission and implement correct semantics forJohn McCall
assignment to volatiles in C. This in effect reverts some of mjs's work in and around r72572. Basically, the C++ standard is quite clear, except that it lies about volatile behavior approximating C's, whereas the C standard is almost actively misleading. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119344 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Futher reduce the includes of our builtin headers, and teach limits.h to avoidChandler Carruth
include_next when not hosted or unavailable. This follows the pattern in stdint.h and allows these headers to work even in a freestanding configuration without a standard library. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119343 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Reverting r119341: doesn't compile, no obvious fix.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119342 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Refactored GRExprEngine::getCXXThisRegion to use CXXMethodDecl::getThisType ↵Marcin Swiderski
instead of calculating it by hand. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119341 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Fix PR8625 and correctly interpret member-calls to static members whenChandler Carruth
producing warnings. This feels really fragile, and I've not audited all other argument index-based warnings. I suspect we'll grow this bug on another warning eventually. It might be nice to adjust the argument indices when building up the attribute AST node, as we already have to remember about the 'this' argument within that code to produce correct errors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119340 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Re-work the handling of implicit 'this' arguments and silly GCC-style attributeChandler Carruth
argument indexes. This handles the offsets in a consistent manner for all of the attributes which I saw working with these concepts. I've also added tests for the attribute that motivated this: nonnull. I consolidated the tests for format attributes into one file, and fleshed them out a bit to trigger more of the warning cases. Also improved the quality of some of the diagnostics that occur with invalid argument indices. The only really questionable change here is supporting the implicit this argument for the ownership attribute. I'm not sure it's really a sensible concept there, but implemented the logic for consistency. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119339 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Rework USR generation from CXCursors to use CXStringBufsTed Kremenek
for the backing of generated USRs. This optmizes for the case when a client generates a sequence of USRs in sequence, disposing of them soon after generating them. By using a string buffer, we recycle malloc'ed memory instead of constantly malloc'ing and copying strings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119338 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Change CXTranslationUnit to not directly cast to an ASTUnit*,Ted Kremenek
but to wrap both an ASTUnit and a "string pool" that will be used for fast USR generation. This requires a bunch of mechanical changes, as there was a ton of code that assumed that CXTranslationUnit and ASTUnit* were the same. Along with this change, introduce CXStringBuf, which provides an llvm::SmallVector<char> backing for repeatedly generating CXStrings without a huge amount of malloc() traffic. This requires making some changes to the representation of CXString by renaming a few fields (but keeping the size of the object the same). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119337 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Improve diagnostic for calling non-const method on const object. Fixes ↵Argyrios Kyrtzidis
rdar://7743000 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119336 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Handle member initializer in C++ ctor. Zhongxing Xu
- Add a new Kind of ProgramPoint: PostInitializer. - Still use GRStmtNodeBuilder. But special handling PostInitializer in GRStmtNodeBuilder::GenerateAutoTransition(). - Someday we should clean up the interface of GRStmtNodeBuilder. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119335 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Have CXXDeleteExpr::getDestroyedType return the actual destroyed typeCraig Silverstein
in more situations. In particular, for code like template<class T> void Fn() { T* x; delete x; } getDestroyedType() will now return T rather than T*, as it would before this change. On the other hand, for code like this: template<class T> void Fn() { T x; delete x; } getDestroyedType() will return an empty QualType(), since it doesn't know what the actual destroyed type would be. Previously, it would return T. OKed by rjmccall git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119334 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Basic support for C++ in BasicStore:Marcin Swiderski
- CXXThisRegion treated like VarRegion and ObjCIVarRegion in various places, - Reference treated like pointer in BindDeclInternal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119333 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Now that we have reliable cast kinds, simplify scalar cast IR gen.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119332 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Kill CK_Unknown and flesh out the documentation for the existing CastKinds.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119331 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Teach complex compound assignment IR-generation that the RHS ofJohn McCall
a compound assignment is always already in the computation type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119330 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Kill off the remaining places which generate CK_Unknown casts.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119326 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add CXString.cpp and CXString.hTed Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119322 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Move CXString creation/management routines intoTed Kremenek
their own .cpp file and make the interpretation of its flags private. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119319 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Update checker build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119318 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add an ExternalASTSource hook to complete a type on demand.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119316 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add a test for Neon vector manglingBob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119304 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add tests for new Neon vector type attributes.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119303 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Update TypePrinter::PrintVector to handle new Neon vector types.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119302 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add support for "neon_vector_type" and "neon_polyvector_type" attributesBob Wilson
to create the special Neon vector types. These are intended to be used in Clang's version of <arm_neon.h> to define special Neon vector types that will be mangled according to ARM's ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119301 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16ASTContext::getVectorType should preserve the vector kind for canonical types.Bob Wilson
This is needed for Neon types when it is most natural to define them in terms of a typedef. For example, Neon poly8_t is a typedef for "signed char", and we want to define polynomial vectors as vectors of that typedef. Without this change, the result will be a generic GCC-style vector. I think this is safe for other vector types as well, but I would appreciate a review of this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119300 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Change CXXNameMangler::mangleNeonVectorType to require the vector type to beBob Wilson
one of the special Neon types. We'll check for invalid Neon vectors when they are created, so there's no point in handling them when mangling. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119299 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Fix a comment typo.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119298 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Use getTypeSize() method.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119297 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16Add another case to the whitelist of cast kinds that can convert to bool.John McCall
Fixes PR8608. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119293 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15CursorVisitor: cache worklists created for data-recursion to reduce malloc() ↵Ted Kremenek
traffic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119290 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Add a new expression kind, OpaqueValueExpr, which is useful forJohn McCall
certain internal type-checking procedures as well as for representing certain implicitly-generated operations. Uses to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119289 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Adds a README for the Clang static analyzer to document its design and work ↵Zhanyong Wan
flow. The contents are taken from email notes by kremenek and xuzhongxing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119288 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Use LLVM_ATTRIBUTE_NOINLINE instead of attribute((noinline)).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119287 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Tweak libclang's heuristics for building precompiled preambles andDouglas Gregor
caching global code-completion results. In particular, don't perform either operation the first time we parse, but do both after the first reparse. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119285 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Remove invalid assertion from CFG builder. When building the CFG pieces for ↵Ted Kremenek
a ternary '?' expression, it is possible for the confluence block to only have a single predecessor due to calls to 'noreturn' functions. Fixes assertion failure reported in PR 8619. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119284 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Cast pointers instead of returning a new value within RunVisitorWorkList().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119282 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Annotate CursorVisitor::VisitDataRecursive() with attribute 'noinline'.Ted Kremenek
Clang currently uses a ridiculous amount of stack space when inlining this function, which can lead to premature stack overflows. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119281 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Add method ParentMap::addStmt().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119181 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Relax assertion in SValuator so that we don't crash when analyzing a call ↵Ted Kremenek
via a function pointer that casts the return value to something completely different. While we need better reasoning here, we should definately not crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119177 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Some cleanup of block API code.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119174 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Fixes PR8611.Rafael Espindola
Silence warning about -g not being used during linking. I couldn't find any change in behavior in gcc liking when given -g. Please open another bug if I missed something. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119166 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Restore these tests. I think I fixed the problem.Fariborz Jahanian
We shall see. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119158 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Implement C++0x [temp.func.order]p3 (aka DR532) properly. InDouglas Gregor
particular, we only add the implement object parameter type if only one of the function templates is a non-static member function template. Moreover, since this DR differs from existing practice in C++98/03, this commit implements the existing practice (which ignores the first parameter of the function template that is not the non-static member function template) in C++98/03 mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119145 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Silence an unused variable warning during release builds by folding theChandler Carruth
expression into the assert. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119143 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Yes, vector conversions are bitcasts.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119141 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Kill CK_Unknown references in the ObjC rewriter. The actualJohn McCall
choice of cast doesn't matter here, but I've tried to choose the right one anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119140 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Fix a think-o. Fixes PR8606.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119139 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Assorted work leading towards the elimination of CK_Unknown.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119138 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-15Add driver support for Ubuntu 9.10.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119137 91177308-0d34-0410-b5e6-96231b3b80d8