aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-10-15Sorry! Accidentally checked in experimental change.John Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84183 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Diagnose explicit instantiations of function templates and memberDouglas Gregor
functions/static data members of class template specializations that do not have definitions. This is the latter part of [temp.explicit]p4; the former part still needs more testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84182 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15More explicit template instantiation. Now we're checking for moreDouglas Gregor
cases where an explicit instantiation requires a definition; the remainder of these checks will come with the implementation of paragraph 4 of [temp.explicit]. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84181 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Refine non-virtual part of the this adjustment for thunks. RefineMike Stump
non-virtual part of the return result adjustments for covariant thunks. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84178 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15AuroraUX toolchain fixes.Edward O'Callaghan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Complete some unfinished comments.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84169 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Better living through metaprogramming. Create a base class which abstractsJohn McCall
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class to represent the idea that we *might* start representing source locations of qualifiers. Dealing with qualifiers explicitly like this also lets us efficiently ignore them in all the concrete cases. This should make it obvious and easy to add new TypeLoc subclasses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84168 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Make this at least compile.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84167 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Track the offset to the current virtual base in CurrentVBaseOffset.Mike Stump
Track path information completely to ensure we get all the overrides. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84166 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Per an astute observation from Zhongxing Xu, remove a "special case" logic inTed Kremenek
RegionStoreManager::Retrieve() that was intended to handle conflated uses of pointers as integers. It turns out this isn't needed, and resulted in inconsistent behavior when creating symbolic values on the following test case in 'tests/Analysis/misc-ps.m': typedef struct _BStruct { void *grue; } BStruct; void testB_aux(void *ptr); void testB(BStruct *b) { { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; testB_aux(__gruep__); } { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; if (~0 != __gruev__) {} } } When the code was analyzed with '-arch x86_64', the value assigned to '__gruev__' be would be a symbolic integer, but for '-arch i386' the value assigned to '__gruev__' would be a symbolic region (a blob of memory). With this change the value created is always a symbolic integer. Since the code being removed was added to support analysis of code calling OSAtomicCompareAndSwapXXX(), I also modified 'test/Analysis/NSString.m' to analyze the code in both '-arch i386' and '-arch x86_64', and also added some complementary test cases to test the presence of leaks when using OSAtomicCompareAndSwap32Barrier()/OSAtomicCompareAndSwap64Barrier() instead of just their absence. This code change reveals that previously both RegionStore and BasicStore were handling these cases wrong, and would never cause the analyzer to emit a leak in these cases (false negatives). Now RegionStore gets it right, but BasicStore still gets it wrong (and hence it has been disabled temporarily for this test case). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84163 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15HandleAnders Carlsson
struct A { }; struct B : A { }; void f() { const A& a = B(); } correctly. (This now does the offset conversion if necessary and calls the destructor when a goes out of scope). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84162 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Check the return type when calling pointer to member functions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84161 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Removed math.h include, as Windows math.h has a compile error.John Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84160 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Remove stale comment.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14CheckTemplateSpecializationScope isn't going to be used for explicitDouglas Gregor
instantiations, since the requirements are too different from those for template specializations. Simplify it slightly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84156 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Additional semantic checking for explicit template instantiations,Douglas Gregor
focusing on the scope- and qualifier-related semantic requirements in C++ [temp.explicit]p2. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84154 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Our C++ support is far enough along now that we shouldn't be recommending ↵Douglas Gregor
the use of Elsa git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84149 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Reuse some code for checking the scope of an explicit instantiationDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84148 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Fix a thinko that John pointed outDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84142 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Check the implicit instantiation of a static data member of a classDouglas Gregor
template that has no out-of-line definition. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84141 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Give explicit and implicit instantiations of static data members ofDouglas Gregor
class templates the proper linkage. Daniel, please look over the CodeGenModule bits. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84140 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Testing and some minor fixes for explicit template instantiation.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84129 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Testcase for recent checkin. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84123 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Shift the vcall slots for non-virtual bases of a virtual base, up intoMike Stump
the virtual base so they can be reused properly. Don't reuse vcall slots across a virtual boundary. WIP. I have a testcase, but there are still things that need to be fixed before the testcase can go in. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84120 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14When mapping from an injected-class-name to its correspondingDouglas Gregor
template, make sure to get the template that corresponds to *this* declaration of the class template or specialization, rather than the canonical specialization. Fixes PR5187. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84119 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Add support for having different c++ search dirs with -m32 and -m64. So farRafael Espindola
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84115 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Copy metadata associated with CIDevang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84114 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Implement support for overloaded operator uses that result to a callDouglas Gregor
to a member operator template. We missed updating this call site when adding support for function templates; bug exposed by a test for PR5072. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84111 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14There is now only one version of eh.selector and eh.typeid.for.Duncan Sands
Fix the clang build. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84107 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Have the exception specification checkers take partial diagnostics. Use this ↵Sebastian Redl
to merge two diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84105 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Few targets like PIC16 mangle the names of global variables, so retrieve the ↵Sanjiv Gupta
name from Var itself rather than the decl for DebugInfo metadata. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84102 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Use CanQualType in the exception specification verification type sets.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Teach Lexer::MeasureTokenLength to be able to measure theChris Lattner
length of comment tokens. Patch by Abramo Bagnara! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84100 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Use partial diagnostics properly in call to RequireCompleteType. Among other ↵Sebastian Redl
things, this means we get a note on the declaration of the incomplete type when it is used in an exception specification. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Do exception spec compatibility tests for member pointers, too.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Now StoreManager::CastRegion() takes a MemRegion, returns a MemRegion.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84081 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Add comments to test.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84078 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14fix some cfstring related issues: Chris Lattner
1) -fwritable-string does affect the non-utf16 version of cfstrings just not the utf16 ones. 2) utf16 strings should always be marked constant, as the __TEXT segment is readonly. 3) The name of the global doesn't matter, remove it from TargetInfo. 4) Trust the asmprinter to drop cstrings into the right section, like llvmgcc does now. This fixes rdar://7115750 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84077 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14unbreak test/CodeGen/builtins.c, reverting Devang's change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84075 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Remove dead code.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84073 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14* Remove unused GRState* parameterZhongxing Xu
* Make all Base value the last argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Add test case for <rdar://problem/7257223>, and XFAIL this test until it passes.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84070 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Handle ambiguity of reference initialization.Fariborz Jahanian
Removes a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84068 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14retain/release checker: Recognize that calls toTed Kremenek
'CVPixelBufferCreateWithPlanarBytes()' and 'CVPixelBufferCreateWithBytes' (Core Video API) can indirectly release a pixel buffer object via a callback. This fixes <rdar://problem/7283567>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84064 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Remove some non-ASCII charactersDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84058 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Member function templates (and instantiations/specializations thereof)Douglas Gregor
are never copy constructors or copy assignment operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84057 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Improve diagnostics when the parser encounters a declarator with anDouglas Gregor
unknown type name, e.g., foo::bar x; when "bar" does not refer to a type in "foo". With this change, the parser now calls into the action to perform diagnostics and can try to recover by substituting in an appropriate type. For example, this allows us to easily diagnose some missing "typename" specifiers, which we now do: test/SemaCXX/unknown-type-name.cpp:29:1: error: missing 'typename' prior to dependent type name 'A<T>::type' A<T>::type A<T>::f() { return type(); } ^~~~~~~~~~ typename Fixes PR3990. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84053 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Fix for PR 5181.Edward O'Callaghan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84051 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Check void type before using replaceAllUsesWith().Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84050 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13The operator loc points to the operator, not the function decl.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84048 91177308-0d34-0410-b5e6-96231b3b80d8