Anders Carlsson
bae46277fe
Always emit vcall offset for the primary base, not only if it's virtual. Remove a debug printf, and add the test case that now passes.
...
llvm-svn: 96880
2010-02-23 03:26:17 +00:00
Anders Carlsson
510d22d097
Simplify the vcall offset calculation and make it give the correct answers :) My test case now has the right values but in the wrong order.
...
llvm-svn: 96877
2010-02-23 03:14:49 +00:00
Ted Kremenek
49fd94d261
Add missing header file.
...
llvm-svn: 96875
2010-02-23 03:08:26 +00:00
Anders Carlsson
30f5301e54
More work on vcall offsets. We now emit the right number of vcall offsets in my local test case, but not the right values.
...
llvm-svn: 96874
2010-02-23 02:47:31 +00:00
Ted Kremenek
7296de9ae3
Start moving some of the logic for the unreachable code analysis out of libSema
...
and into libAnalysis.
llvm-svn: 96872
2010-02-23 02:39:16 +00:00
Ted Kremenek
e10ba52be9
Convert use of std::queue to llvm::SmallVector and fix buildbot.
...
llvm-svn: 96855
2010-02-23 01:39:04 +00:00
Anders Carlsson
075056a8f9
Move BaseOffset out of the FinalOverriders class.
...
llvm-svn: 96853
2010-02-23 01:34:28 +00:00
Fariborz Jahanian
afe1386ed9
More support for ivars in class extension.
...
llvm-svn: 96850
2010-02-23 01:26:30 +00:00
Ted Kremenek
ca4be0c10e
Use SmallVectorImpl::iterator.
...
llvm-svn: 96848
2010-02-23 01:19:17 +00:00
Ted Kremenek
bab459eaf4
Simplify logic for determining values of 'ReturnsVoid' and 'HasNoReturn' flags.
...
No functionality change.
llvm-svn: 96847
2010-02-23 01:19:11 +00:00
Zhongxing Xu
5586096a5a
Correct comment.
...
llvm-svn: 96846
2010-02-23 01:17:41 +00:00
John McCall
f8ff7b9fd1
Perform two more constructor/destructor code-size optimizations:
...
1) emit base destructors as aliases to their unique base class destructors
under some careful conditions. This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.
2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor. This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).
These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.
llvm-svn: 96842
2010-02-23 00:48:20 +00:00
Douglas Gregor
46841e1bd9
Implement crazy destructor name lookup semantics differently in
...
C++98/03 and C++0x, since the '0x semantics break valid C++98/03
code. This new mess is tracked by core issue 399, which is still
unresolved.
Fixes PR6358 and PR6359.
llvm-svn: 96836
2010-02-23 00:15:22 +00:00
Douglas Gregor
d770f73fac
Rework the CIndex API for displaying diagnostics. Instead of printing
...
the diagnostics to a FILE*, return a CXString containing the formatted
diagnostic.
llvm-svn: 96823
2010-02-22 23:17:23 +00:00
Fariborz Jahanian
4c172c63e5
Early support for declaring ivars in class extensions. wip.
...
llvm-svn: 96819
2010-02-22 23:04:20 +00:00
Fariborz Jahanian
b8f018d1e9
Fixes a rewriting of byref variable when its initializer is
...
itself rewritten. Radar 7669784.
llvm-svn: 96798
2010-02-22 20:48:10 +00:00
Douglas Gregor
2b76dd9a9e
Don't assert that we have a valid access specifier on an invalid
...
declaration. This is the trivial part of PR6365.
llvm-svn: 96792
2010-02-22 17:53:38 +00:00
Douglas Gregor
dd4831794b
Set access specifiers on imported declarations.
...
llvm-svn: 96788
2010-02-22 17:42:47 +00:00
Douglas Gregor
d28f0412e4
Do not require a complete type when checking for a pointer conversion
...
between cv1 T* and cv2 T*.
llvm-svn: 96787
2010-02-22 17:06:41 +00:00
Douglas Gregor
f4f2e0247f
Change the name of the vtable-debugging environment variable to
...
CLANG_VTABLE_DEBUG.
llvm-svn: 96785
2010-02-22 16:48:26 +00:00
Douglas Gregor
76eb74a1cd
Don't use NamedDecl::getNameAsCString() when dealing with C++ methods,
...
since they may not have normal identifiers for names. Fixes PR6369.
llvm-svn: 96784
2010-02-22 16:44:27 +00:00
Daniel Dunbar
260918ce5c
Revert "Simplify code: Succ is guaranteed to be not NULL.", which turns out to
...
not be guaranteed.
llvm-svn: 96782
2010-02-22 05:58:59 +00:00
Zhongxing Xu
8064a5ba88
Remove dead code.
...
llvm-svn: 96773
2010-02-22 03:50:18 +00:00
Zhongxing Xu
d39620c451
Simplify code: Succ is guaranteed to be not NULL.
...
llvm-svn: 96772
2010-02-22 02:59:27 +00:00
Chris Lattner
dd1cb5b2ec
Add 'previous declaration is here' note for param redefinition
...
errors, e.g.:
t.c:1:21: error: redefinition of parameter 'x'
int test(int x, int x);
^
t.c:1:14: note: previous declaration is here
int test(int x, int x);
^
llvm-svn: 96769
2010-02-22 00:40:25 +00:00
Douglas Gregor
36c569fb33
Eliminate the default arguments to ASTContext::getFunctionType(),
...
fixing up a few callers that thought they were propagating NoReturn
information but were in fact saying something about exception
specifications.
llvm-svn: 96766
2010-02-21 22:15:06 +00:00
Daniel Dunbar
7126183006
Spell string.h correctly.
...
llvm-svn: 96765
2010-02-21 22:14:52 +00:00
Daniel Dunbar
65927014a9
Add missing include, noticed by ace2001ac on IRC.
...
llvm-svn: 96764
2010-02-21 22:07:42 +00:00
Daniel Dunbar
43b464cfe5
Remove unused includes.
...
llvm-svn: 96760
2010-02-21 21:47:19 +00:00
Douglas Gregor
6122e55813
De-XFAIL some win32 tests that are now passing
...
llvm-svn: 96759
2010-02-21 20:58:24 +00:00
Douglas Gregor
e61e24a5e3
Attempt to fix the MSVC9 failure with c-indext-test, where the CIndex DLL
...
and the c-index-test executable end up getting different copies of
stderr, causing non-deterministic ordering of output. Fixed by
flushing the file after printing a diagnostic (only on Windows).
llvm-svn: 96754
2010-02-21 20:15:42 +00:00
Douglas Gregor
90d554ecb3
Implement support for parsing pseudo-destructor expression with a nested-name-specifier, e.g.,
...
typedef int Int;
int *p;
p->Int::~Int();
This weakens the invariant that the only types in nested-name-specifiers are tag types (restricted to class types in C++98/03). However, we weaken this invariant as little as possible, accepting arbitrary types in nested-name-specifiers only when we're in a member access expression that looks like a pseudo-destructor expression.
llvm-svn: 96743
2010-02-21 18:36:56 +00:00
Douglas Gregor
901e717f92
A constructor template cannot be used to copy to an object of the same class type (per C++ [class.copy]p3). Make sure that includes copies that involve a derived-to-base conversion. Fixes PR6141.
...
llvm-svn: 96742
2010-02-21 18:30:38 +00:00
Douglas Gregor
00eace1958
Implement AST import for C++ member functions, including constructors, destructors, and conversions. Unfortunately, this cannot be tested yet, since we don't have C++ PCH support.
...
llvm-svn: 96741
2010-02-21 18:29:16 +00:00
Douglas Gregor
f18a2c7dd1
Implement AST importing for C++ namespaces.
...
llvm-svn: 96740
2010-02-21 18:26:36 +00:00
Douglas Gregor
968d633176
Collect the code that imports all of the members of a declaration context into a single function, ImportDeclContext. Use it rather than explicit loops. No functionality change.
...
llvm-svn: 96739
2010-02-21 18:24:45 +00:00
Douglas Gregor
e31bbd904d
Implement PCH support for C++ namespaces.
...
llvm-svn: 96738
2010-02-21 18:22:14 +00:00
Chandler Carruth
8f2548112e
Commiting a revert from dgregor of a bit of destructor logic until we can
...
figure out how not to break lots of code using this. See PR6358 and PR6359 for
motivating examples. FIXME's left in the code and the test.
llvm-svn: 96733
2010-02-21 10:19:54 +00:00
Chandler Carruth
f50ef6ed9a
Make Decl::isOutOfLine() virtual, and use that to determine when definitions
...
are for out of line declarations more easily. This simplifies the logic and
handles the case of out-of-line class definitions correctly. Fixes PR6107.
llvm-svn: 96729
2010-02-21 07:08:09 +00:00
Ted Kremenek
2fb89539f7
Clang really intends to reject attribute 'warn_unused_result' on Objective-C methods, but
...
instead it crashes on them. We might extend this attribute to work on methods, but for
now fix the crasher. Addresses <rdar://problem/7670939>.
llvm-svn: 96723
2010-02-21 05:15:32 +00:00
Ted Kremenek
1979007ca8
Don't emit a warning about a dllimport attribute being used in a typedef
...
when -fms-extensions is specified. Fixes <rdar://problem/7653870>.
llvm-svn: 96722
2010-02-21 05:12:56 +00:00
Ted Kremenek
a3cfc4d1e1
Don't warn about functions redeclared without the dllimport attribute when
...
-fms-extensions is enabled. Fixes <rdar://problem/7669559>.
llvm-svn: 96721
2010-02-21 05:12:53 +00:00
Fariborz Jahanian
34e3cef483
Start supporting declaration of ivars in @implementation
...
blocks. WIP.
llvm-svn: 96696
2010-02-19 20:58:54 +00:00
Anders Carlsson
350b56eed5
Add the CK_UnusedFunctionPointer component kind for unused function pointers.
...
llvm-svn: 96695
2010-02-19 20:08:13 +00:00
Fariborz Jahanian
c5d61df0a9
Issue extended diagnostic when property dot-syntax is used and
...
there is a setter but no getter (part of radar 7664555).
llvm-svn: 96687
2010-02-19 18:30:30 +00:00
Douglas Gregor
836ec94c8e
Simplify the CIndex fix-it API, now that we have half-open CXSourceRanges.
...
llvm-svn: 96685
2010-02-19 18:16:06 +00:00
Ted Kremenek
2b5faeb84f
Fix link.
...
llvm-svn: 96684
2010-02-19 18:12:09 +00:00
Ted Kremenek
a3e1e99b05
Update front page to mention Xcode integration.
...
llvm-svn: 96682
2010-02-19 17:33:38 +00:00
Ted Kremenek
3efee522ee
Expose "Key features" paragraph.
...
llvm-svn: 96681
2010-02-19 17:33:30 +00:00
Douglas Gregor
0286b46702
Only parse C++0x attribute specifiers in declarators when in C++0x
...
mode. This allows us to detect invalid VLAs in Objective-C++
mode. This should be the last of <rdar://problem/7660386>.
llvm-svn: 96679
2010-02-19 16:47:56 +00:00