| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
CheckSpecializationInstantiationRedecl to check for
redeclarations/instantiations. Also fixes a longstanding issue where
our explicit-instantiation location information wasn't as good as it
could have been.
llvm-svn: 84216
|
| |
|
|
|
|
| |
This fixes <rdar://problem/7306898>
llvm-svn: 84213
|
| |
|
|
|
|
| |
summaries. No functionality change.
llvm-svn: 84210
|
| |
|
|
| |
llvm-svn: 84208
|
| |
|
|
|
|
|
|
| |
isn't implemented yet.
- <rdar://problem/7297571> Clang should use pretokenized headers for C++ PCH
files
llvm-svn: 84197
|
| |
|
|
| |
llvm-svn: 84189
|
| |
|
|
|
|
|
|
|
| |
instantiation redeclaration semantics for function template
specializations and member functions of class template
specializations. Also, record the point of instantiation for
explicit-instantiated functions and static data members.
llvm-svn: 84188
|
| |
|
|
|
|
|
|
|
|
| |
sets of builtin operators. Currently, it is applied
to '++' and '->*' operators. I need to apply it to others
as well. Also, heuristics need be applied to
BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants.
This is WIP.
llvm-svn: 84187
|
| |
|
|
|
|
|
|
| |
specializations. Work in progress; there's more cleanup required to
actually use the new CheckSpecializationInstantiationRedecl checker
uniformly.
llvm-svn: 84185
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 84182
|
| |
|
|
|
|
|
|
| |
cases where an explicit instantiation requires a definition; the
remainder of these checks will come with the implementation of
paragraph 4 of [temp.explicit].
llvm-svn: 84181
|
| |
|
|
|
|
|
| |
non-virtual part of the return result adjustments for covariant
thunks. WIP.
llvm-svn: 84178
|
| |
|
|
| |
llvm-svn: 84176
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 84168
|
| |
|
|
|
|
| |
Track path information completely to ensure we get all the overrides. WIP.
llvm-svn: 84166
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
llvm-svn: 84163
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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).
llvm-svn: 84162
|
| |
|
|
| |
llvm-svn: 84161
|
| |
|
|
| |
llvm-svn: 84157
|
| |
|
|
|
|
|
| |
instantiations, since the requirements are too different from those
for template specializations. Simplify it slightly.
llvm-svn: 84156
|
| |
|
|
|
|
|
| |
focusing on the scope- and qualifier-related semantic requirements in
C++ [temp.explicit]p2.
llvm-svn: 84154
|
| |
|
|
| |
llvm-svn: 84148
|
| |
|
|
| |
llvm-svn: 84142
|
| |
|
|
|
|
|
|
| |
class templates the proper linkage.
Daniel, please look over the CodeGenModule bits.
llvm-svn: 84140
|
| |
|
|
| |
llvm-svn: 84129
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 84120
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 84119
|
| |
|
|
|
|
| |
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1.
llvm-svn: 84115
|
| |
|
|
| |
llvm-svn: 84114
|
| |
|
|
|
|
|
|
| |
to a member operator template. We missed updating this call site when
adding support for function templates; bug exposed by a test for
PR5072.
llvm-svn: 84111
|
| |
|
|
|
|
| |
Fix the clang build.
llvm-svn: 84107
|
| |
|
|
|
|
| |
to merge two diagnostics.
llvm-svn: 84105
|
| |
|
|
|
|
|
|
| |
name
from Var itself rather than the decl for DebugInfo metadata.
llvm-svn: 84102
|
| |
|
|
| |
llvm-svn: 84101
|
| |
|
|
|
|
| |
length of comment tokens. Patch by Abramo Bagnara!
llvm-svn: 84100
|
| |
|
|
|
|
| |
things, this means we get a note on the declaration of the incomplete type when it is used in an exception specification.
llvm-svn: 84099
|
| |
|
|
| |
llvm-svn: 84098
|
| |
|
|
| |
llvm-svn: 84081
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 84077
|
| |
|
|
| |
llvm-svn: 84075
|
| |
|
|
| |
llvm-svn: 84073
|
| |
|
|
|
|
| |
* Make all Base value the last argument.
llvm-svn: 84071
|
| |
|
|
|
|
| |
Removes a FIXME.
llvm-svn: 84068
|
| |
|
|
|
|
|
|
|
|
| |
'CVPixelBufferCreateWithPlanarBytes()' and
'CVPixelBufferCreateWithBytes' (Core Video API) can indirectly release
a pixel buffer object via a callback.
This fixes <rdar://problem/7283567>.
llvm-svn: 84064
|
| |
|
|
| |
llvm-svn: 84058
|
| |
|
|
|
|
| |
are never copy constructors or copy assignment operators.
llvm-svn: 84057
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 84053
|
| |
|
|
| |
llvm-svn: 84051
|
| |
|
|
| |
llvm-svn: 84050
|
| |
|
|
| |
llvm-svn: 84048
|