Douglas Gregor
bd130a2962
Basic test for user-defined conversions involving vector types
...
llvm-svn: 104085
2010-05-18 23:05:44 +00:00
Fariborz Jahanian
9f963c2488
Misc. fixes to bring Objetive-C++'s handling of
...
gc attributes to be inline with Objective-C
(for radar 7925141).
llvm-svn: 104084
2010-05-18 23:04:17 +00:00
Douglas Gregor
bdb604a806
Protect isIntegerConstantExpr from seeing type- or value-dependent
...
expressions in attributes, pragmas.
llvm-svn: 104083
2010-05-18 23:01:22 +00:00
Douglas Gregor
4618868a7d
Implement C++ support for vector and extended vector types. This
...
involves extending implicit conversion sequences to model vector
conversions and vector splats, along with teaching the C++ conditional
operator-checking code about vector types.
Fixes <rdar://problem/7983501>.
llvm-svn: 104081
2010-05-18 22:42:18 +00:00
Ted Kremenek
a10f12829f
Add function 'clang_isTagDeclDefinition()' to allow clients of libclang to distinguish between
...
forward declarations and definitions of structs/classes/enums.
llvm-svn: 104075
2010-05-18 22:32:15 +00:00
Ted Kremenek
49be9e0819
Teach CursorVisitor about duplicate ObjCPropertyDecls that can arise because of a current
...
design limitation in how we handle Objective-C class extensions. This was causing the CursorVisitor
to essentially visit an @property twice (once in the @interface, the other in the class extension).
Fixes <rdar://problem/7410145>.
llvm-svn: 104055
2010-05-18 21:09:07 +00:00
Fariborz Jahanian
87b915a9bc
These test now run in objective-c++ mode we well.
...
llvm-svn: 104041
2010-05-18 18:24:06 +00:00
Douglas Gregor
162b419a02
Add missing test case, provided by Steven Watanabe.
...
llvm-svn: 104037
2010-05-18 17:43:51 +00:00
Douglas Gregor
8b6be164d6
Fix typo test case
...
llvm-svn: 104027
2010-05-18 16:57:36 +00:00
Douglas Gregor
a941dcae16
Add support for Microsoft's __thiscall, from Steven Watanabe!
...
llvm-svn: 104026
2010-05-18 16:57:00 +00:00
Anders Carlsson
be48c548c5
Correctly initialize bases with member pointers. This should fix PR6441 but that test case is a bit weird and I'd like to investigate further before closing that bug.
...
llvm-svn: 104025
2010-05-18 16:51:41 +00:00
Douglas Gregor
86ad085b40
Give a slight edge to the context-sensitive keyword 'super' over
...
non-function-local declarations with names similar to what the user
typed. For example, this allows us to correct 'supper' to 'super' in
an Objective-C message send, even though the C function 'isupper' has
the same edit distance.
llvm-svn: 104023
2010-05-18 16:30:22 +00:00
Douglas Gregor
5fd04d4832
Tweak typo-correction logic a bit regarding "super", so that we
...
consider "super" as a candidate whenever we're parsing an expression
within an Objective-C method in an interface that has a superclass. At
some point, we'd like to give "super" a little edge over non-local
names; that will come later.
llvm-svn: 104022
2010-05-18 16:14:23 +00:00
John McCall
0e704f7fcd
Permit Objective C object pointers to be const_casted.
...
llvm-svn: 104019
2010-05-18 09:35:29 +00:00
Alexis Hunt
abb2ac8889
Switch over the tablegen to use much prettier range technology
...
Also rename ABSTRACT to ABSTRACT_STMT, in keeping with the other .def
files
llvm-svn: 104017
2010-05-18 06:22:21 +00:00
Douglas Gregor
923d2252dc
"The attached patch allows clang to find the headers
...
for Visual Studio 2010. It also adds a registry search
for the Express edition,", from Steven Watanabe!
llvm-svn: 104015
2010-05-18 05:47:04 +00:00
Douglas Gregor
b92ea59481
I hate this commit.
...
Revert much of the implementation of C++98/03 [temp.friend]p5 in
r103943 and its follow-ons r103948 and r103952. While our
implementation was technically correct, other compilers don't seem to
implement this paragraph (which forces the instantiation of friend
functions defined in a class template when a class template
specialization is instantiated), and doing so broke a bunch of Boost
libraries.
Since this behavior has changed in C++0x (which instantiates the
friend function definitions when they are used), we're going to skip
the nowhere-implemented C++98/03 semantics and go straight to the
C++0x semantics.
This commit is a band-aid to get Boost up and running again. It
doesn't really fix PR6952 (which this commit un-fixes), but it does
deal with the way Boost.Units abuses this particular paragraph.
llvm-svn: 104014
2010-05-18 05:45:02 +00:00
Anders Carlsson
061ca524b7
Keep track of the LLVM field numbers for non-virtual bases.
...
llvm-svn: 104013
2010-05-18 05:22:06 +00:00
Anders Carlsson
af9e5afe54
Start laying out bases as individual fields. We still use ugly i8 arrays but this is a step in the right direction.
...
llvm-svn: 104012
2010-05-18 05:12:20 +00:00
Anders Carlsson
864d1b555e
Add CodeGenTypes::ContainsPointerToDataMember overload that takes a CXXRecordDecl.
...
llvm-svn: 104011
2010-05-18 03:47:15 +00:00
John McCall
d3dfbd6f4f
If a switch condition is constant, don't warn about missing enum cases.
...
If a switch condition is constant, warn if there's no case for it.
Constant switch conditions do come up in reasonable template code.
llvm-svn: 104010
2010-05-18 03:19:21 +00:00
Zhongxing Xu
b013b0bc04
Add option '-analyzer-max-loop', which specifies the maximum
...
number of times the analyzer will go through a loop.
llvm-svn: 104007
2010-05-18 00:28:37 +00:00
John McCall
a9e6e8d654
Teach the ObjC mangler to ignore member pointers just like gcc does.
...
llvm-svn: 104001
2010-05-17 23:56:34 +00:00
Chandler Carruth
3b43338870
Add a hack to silence warnings about failing to return from functions after
...
a temporary with a noreturn destructor has been created. Fixes PR6884 for now.
llvm-svn: 104000
2010-05-17 23:51:52 +00:00
Douglas Gregor
96cdb1590e
Instantiate attributes on typedefs. This is a quick fix for PR7148,
...
when we really need a proper audit of our handling of attributes in
templates.
llvm-svn: 103999
2010-05-17 23:46:49 +00:00
Nick Lewycky
47b92a2cc4
Add a 'Base' type to RecursiveASTVisitor to make recursing easier and document
...
how you're supposed to use it.
llvm-svn: 103993
2010-05-17 23:15:38 +00:00
Ted Kremenek
990783e345
Clean up test case and remove XFAIL. This test can now distinguish between
...
cases where Clang can suggest and fix and suggest and not auto-fix (because of
current limitations).
llvm-svn: 103987
2010-05-17 23:03:33 +00:00
John McCall
1b84d1106e
Comments and assorted cleanups for the Objective C type AST.
...
llvm-svn: 103986
2010-05-17 23:00:45 +00:00
John McCall
96fa4845f7
Clean up some more uses of getAs<ObjCInterfaceType>() that Fariborz pointed
...
out. The remaining ones are okay.
llvm-svn: 103973
2010-05-17 21:00:27 +00:00
Chandler Carruth
0450cc684c
Fix an ambiguous else warning from GCC by adding some much needed curlies.
...
llvm-svn: 103972
2010-05-17 20:58:49 +00:00
Chris Lattner
467f6bcfe5
robustify the conflict marker stuff. Don't add 7 twice, which would
...
make it miss (invalid) things like:
<<<<<<<
>>>>>>>
and crash if
<<<<<<<
was at the end of the line. When we find a >>>>>>> that is not at the
end of the line, make sure to reset Pos so we don't crash on something
like:
<<<<<<< >>>>>>>
This isn't worth making testcases for, since each would require a new file.
rdar://7987078 - signal 11 compiling "<<<<<<<<<<"
llvm-svn: 103968
2010-05-17 20:27:25 +00:00
Ted Kremenek
0ed7549343
Fix missing '}'.
...
llvm-svn: 103966
2010-05-17 20:12:45 +00:00
John McCall
3e294929b8
Correctly generate IR for ObjC messages sends to protocol-qualified types.
...
Fixes rdar://problem/7992749
llvm-svn: 103965
2010-05-17 20:12:43 +00:00
Ted Kremenek
9cfe9e6a4a
Add libclang function 'clang_CXXMethod_isStatic' to query of a C++ method
...
is declared static.
llvm-svn: 103963
2010-05-17 20:06:56 +00:00
Douglas Gregor
c4c574bd2e
Test that mutability of class members that involve class definitions actually works
...
llvm-svn: 103959
2010-05-17 19:45:25 +00:00
Douglas Gregor
3b05bdba5a
Teach ASTContext::getUnqualifiedArrayType() how to look through
...
typedefs. As a drive-by, teach hit how to build VLA types, since those
will eventually be supported in C++.
llvm-svn: 103958
2010-05-17 18:45:21 +00:00
Douglas Gregor
c9a99c5e5c
mutable is a storage class that can follow a class/struct/union definition. Fixes PR7153
...
llvm-svn: 103954
2010-05-17 18:19:56 +00:00
Fariborz Jahanian
16f94c6e8f
Don't attempt to poke into an invalid field's class type
...
to mark its destructors as referenced which may cause
a crash. Fixes radar 7896920
llvm-svn: 103953
2010-05-17 18:15:18 +00:00
Douglas Gregor
fd7224fee0
Diagnose a redefinition error when there are two instantiations of friend
...
functions defined inside a class template. Fixes PR6952, the last
Boost.Units failure.
llvm-svn: 103952
2010-05-17 17:57:54 +00:00
Douglas Gregor
69f6a365d3
Determine when the instantiation of a friend function defined inside a
...
class template conflicts with an existing (non-template)
definition. This is another part of PR6952.
llvm-svn: 103948
2010-05-17 17:34:56 +00:00
Daniel Dunbar
f7a8825484
IRgen: Remove dead function.
...
llvm-svn: 103945
2010-05-17 16:46:02 +00:00
Daniel Dunbar
cd20ce1513
C++/Darwin/i386 ABI: Fix some problems with empty record handling.
...
- Check bases as part of isEmptyRecord().
- C++ record fields are never empty in the Itanium ABI.
llvm-svn: 103944
2010-05-17 16:46:00 +00:00
Douglas Gregor
1cd6ea0b24
C++98/03 [temp.friend]p4 requires that inline function definitions
...
within class templates be instantiated along with each class template
specialization, even if the functions are not used. Do so, as a baby
step toward PR6952.
llvm-svn: 103943
2010-05-17 16:38:00 +00:00
Douglas Gregor
9154b5dffe
Ensure that destructors are called for NRVO'd objects when the
...
function does not return. Thanks to Eli for pointing out this corner
case.
llvm-svn: 103941
2010-05-17 15:52:46 +00:00
David Chisnall
f9c4225af6
Pick the correct personality function based on the language. This prevents link failures when C/ObjC code uses __attribute__((cleanup())) (previously this was inserting references to two libstc++ symbols; the personality function and the __terminate() function).
...
This is still probably wrong for Objective-C++ and adds a couple of lines in CGException that should probably be in the CGObjCRuntime subclass. The personality function is now only looked up in one place in CGException though, so this should be easier to fix in the future.
llvm-svn: 103938
2010-05-17 13:49:20 +00:00
Eli Friedman
b41ad0fbea
PR7117: Make sure we don't lose the calling convention for K&R-style
...
definitions.
llvm-svn: 103932
2010-05-17 02:50:18 +00:00
Chris Lattner
561aabd943
when code completing inside a C-style block comment, don't emit errors about
...
a missing */ since we truncated the file.
This fixes rdar://7948776
llvm-svn: 103913
2010-05-16 19:54:05 +00:00
mike-m
c6da261fb4
Moved clang-builtin include dir position to immediately precede C includes.
...
This aligns with how gcc compiler does things.
llvm-svn: 103912
2010-05-16 19:03:52 +00:00
Anders Carlsson
e6ae81b0a2
Correctly diagnose array 'new' with initialization arguments when the new type is a typedef to an array type.
...
llvm-svn: 103909
2010-05-16 16:24:20 +00:00
Douglas Gregor
cda95f47e5
When the type-id or new-type-id of a C++ "new" expression is a typedef
...
of an array type, use the outermost array bound as the number of
elements to allocate. Fixes PR7147.
llvm-svn: 103908
2010-05-16 16:01:03 +00:00