Douglas Gregor
1e09bf83c0
Some cleanups suggested by Chris
...
llvm-svn: 73713
2009-06-18 18:45:36 +00:00
Douglas Gregor
78bd61f661
Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>.
...
llvm-svn: 73702
2009-06-18 16:11:24 +00:00
Fariborz Jahanian
b1743254e7
Removed deadcode related to addition of constructor
...
decls to a class.
llvm-svn: 73650
2009-06-17 22:44:31 +00:00
Steve Naroff
fb4330f255
First step toward fixing <rdar://problem/6613046> refactor clang objc type representation.
...
Add a type (ObjCObjectPointerType) and remove a type (ObjCQualifiedIdType).
This large/tedious patch is just a first step. Next step is to remove ObjCQualifiedInterfaceType. After that, I will remove the magic TypedefType for 'id' (installed by Sema). This work will enable various simplifications throughout clang (when dealing with ObjC types).
No functionality change.
llvm-svn: 73649
2009-06-17 22:40:22 +00:00
Douglas Gregor
758a869b14
Support dependent extended vector types and template instantiation
...
thereof. Patch by Anders Johnsen!
llvm-svn: 73641
2009-06-17 21:51:59 +00:00
Anders Carlsson
a42ab8f3d5
Handle temporaries in default arguments.
...
llvm-svn: 73462
2009-06-16 03:37:31 +00:00
Anders Carlsson
90036dc96a
Keep track of whether a type parameter type is a parameter pack.
...
llvm-svn: 73452
2009-06-16 00:30:48 +00:00
Anders Carlsson
475501b01c
More parameter pack work.
...
llvm-svn: 73395
2009-06-15 17:56:45 +00:00
Anders Carlsson
bc34391f04
Add a new 'Pack' argument kind to TemplateArgument. This is not yet used.
...
llvm-svn: 73391
2009-06-15 17:04:53 +00:00
Eli Friedman
1cf2536d6c
PR4391: Tweak -ast-print output to generate valid output for edge cases
...
like "int x = + +3;".
llvm-svn: 73356
2009-06-14 22:39:26 +00:00
Eli Friedman
334046a134
PR4351: Add constant evaluation for constructs like "foo == NULL", where
...
foo has a constant address.
llvm-svn: 73321
2009-06-14 02:17:33 +00:00
Chris Lattner
15ba94987a
Sink the BuiltinInfo object from ASTContext into the
...
preprocessor and initialize it early in clang-cc. This
ensures that __has_builtin works in all modes, not just
when ASTContext is around.
llvm-svn: 73319
2009-06-14 01:54:56 +00:00
Chris Lattner
5abdec7978
move the various builtins stuff from libast to libbasic. This
...
fixes a layering violation in lib/Basic/Targets.cpp.
llvm-svn: 73318
2009-06-14 01:05:48 +00:00
Chris Lattner
3d4ead17c7
prune #includes, Builtins.h/cpp no longer depends on libast.
...
llvm-svn: 73317
2009-06-14 00:52:07 +00:00
Chris Lattner
ecd79c6353
move GetBuiltinType from Builtin::Context to ASTContext.
...
llvm-svn: 73316
2009-06-14 00:45:47 +00:00
Anders Carlsson
20ee0ed4ea
If a CXXRecordDecl is a class template, the 'this' type should be the injected class name type. Fixes pr4383.
...
llvm-svn: 73284
2009-06-13 02:59:33 +00:00
Anders Carlsson
15201f19ba
More work on type parameter packs.
...
llvm-svn: 73281
2009-06-13 02:08:00 +00:00
Anders Carlsson
aa73b9135a
Improvements to TemplateArgumentListBuilder to make it work better with parameter packs.
...
llvm-svn: 73272
2009-06-13 00:08:58 +00:00
Anders Carlsson
fb1d776ff0
Keep track of whether a type parameter is actually a type parameter pack.
...
llvm-svn: 73261
2009-06-12 22:23:22 +00:00
Eli Friedman
a6638ca3a3
Delete method which is now trivial.
...
llvm-svn: 73043
2009-06-08 05:08:54 +00:00
Eli Friedman
9e81b02ec5
Don't allow defining a block with a non-prototype type. Remove a
...
hack which introduces some strange inconsistencies in compatibility
for block pointers.
Note that unlike an earlier revision proposed on cfe-commits, this patch
still allows declaring block pointers without a prototype.
llvm-svn: 73041
2009-06-08 04:24:21 +00:00
Anders Carlsson
0880e9f58d
Instantiation support for more Obj-C expressions, string literals, @selector and @protocol expressions.
...
llvm-svn: 73036
2009-06-07 19:51:47 +00:00
Fariborz Jahanian
28c5a8ba4a
Adds synthesize ivars to DeclContext.
...
llvm-svn: 73000
2009-06-06 16:36:41 +00:00
Anders Carlsson
8544647e9c
Make ParmVarDecl::getDefaultArg() more robust, it now asserts that the argument is not unparsed. Add a new hasDefaultArg() and use it in places where getDefaultArg() was called when the argument was unparsed.
...
llvm-svn: 72984
2009-06-06 04:14:07 +00:00
Mike Stump
dedc0968cf
Avoid warnings.
...
llvm-svn: 72976
2009-06-05 23:49:48 +00:00
Fariborz Jahanian
6845383426
Use of DeclContext for objc's ivars. No functionality
...
change. More to follow.
llvm-svn: 72951
2009-06-05 18:16:35 +00:00
Anders Carlsson
b3d05d6d11
Improvements to CXXExprWithTemporaries in preparation for fixing a bug with default arguments that have temporaries.
...
llvm-svn: 72944
2009-06-05 15:38:08 +00:00
Eli Friedman
9ffd4a9b96
Move CharIsSigned from TargetInfo to LangOptions.
...
llvm-svn: 72928
2009-06-05 07:05:05 +00:00
Anders Carlsson
184cb4123e
Make TemplateArgumentListBuilder take an ASTContext (because we're probably going to need it later). Move push_back to the .cpp file. If the passed in template argument is a type, assert that it's canonical.
...
llvm-svn: 72918
2009-06-05 05:31:27 +00:00
Anders Carlsson
c8e7113a9f
Make the TemplateArgumentList take a TemplateArgumentListBuilder.
...
llvm-svn: 72917
2009-06-05 04:47:51 +00:00
Anders Carlsson
1b28c3efe2
Change the specialization decls to take a TemplateArgumentListBuilder.
...
llvm-svn: 72916
2009-06-05 04:06:48 +00:00
Eli Friedman
fa90b154ca
Minor simplification.
...
llvm-svn: 72887
2009-06-04 20:23:20 +00:00
Eli Friedman
4a4fefcd29
PR4326: Handle constant evaluation for void* pointer subtraction
...
correctly.
llvm-svn: 72886
2009-06-04 20:04:03 +00:00
Anders Carlsson
40f8f8d4d7
Minor improvements to template parameter writing.
...
llvm-svn: 72848
2009-06-04 05:37:43 +00:00
Douglas Gregor
6cc628edf4
Eliminate a warning
...
llvm-svn: 72846
2009-06-04 05:28:55 +00:00
Fariborz Jahanian
7c80959a97
Cleanup/Refactoring of ivar collection. No change in functionality.
...
llvm-svn: 72827
2009-06-04 01:19:09 +00:00
Douglas Gregor
5cdac0a52e
Template argument deduction for references
...
llvm-svn: 72822
2009-06-04 00:21:18 +00:00
Fariborz Jahanian
b68215c4de
Place the GC attribute on the same relative pointer
...
position to make it consistant and to match gcc's behavior,
by placing it at the inner-most pointer.
llvm-svn: 72784
2009-06-03 17:15:17 +00:00
Argyrios Kyrtzidis
b1d51aa18a
Use "()" instead of "(void)" when pretty-printing a parameter-less function type for C++.
...
llvm-svn: 72747
2009-06-03 02:06:50 +00:00
Fariborz Jahanian
991a2b1933
Diagnose misuse of __strong attribute in a redeclaration.
...
llvm-svn: 72737
2009-06-02 20:58:58 +00:00
Fariborz Jahanian
6ab4375f87
Issue diagnostics on __weak attribute mismatch.
...
Fixes an error recovery issue which caused a crash.
llvm-svn: 72733
2009-06-02 18:32:00 +00:00
Eli Friedman
5aa28de4fe
Fix a silly typo in my previous objc_gc merging patch.
...
llvm-svn: 72723
2009-06-02 07:45:37 +00:00
Eli Friedman
091a9ac014
Cleaned-up version of gc attribute type merging. I still don't like it
...
very much, but I have a feeling we're never going to have an
implementation that makes sense because of compatibility issues.
llvm-svn: 72715
2009-06-02 05:28:56 +00:00
Fariborz Jahanian
2d725b19da
This patch attempts to fix the merging of __strong/__weak attributes
...
in merge_types. It is incomplete. We probably want to issue
a warning if user attempts to change the attribute from __weak to
__strong or vice-vera. It also assumes that a __weak/__strong
attribute can not be specified with other (currently one) type
attriute.
llvm-svn: 72711
2009-06-02 01:40:22 +00:00
Fariborz Jahanian
c6d9800564
A corner case of objc2 gc's write-barrier generation
...
for the Next runtime.
llvm-svn: 72703
2009-06-01 21:29:32 +00:00
Eli Friedman
dcca6333c6
Disable type merging with gc attributes. This has a number of nasty
...
properties at the moment:
1. It allows stuff like "__strong id x; __weak id x;".
2. For constructs like "__strong id x; id x;", subsequent references to
x lose the objc_gc attribute.
3. This incorrectly allows merges involving the address_space attribute.
4. Constructs like "id x; /* some code using x */ __weak id x;" don't
apply the objc_gc attribute consistently to all uses of x.
The first three can probably be fixed relatively easily; the fourth
would be extremely difficult to fix.
llvm-svn: 72683
2009-06-01 01:22:52 +00:00
Douglas Gregor
2373c599b5
Initial infrastructure for class template partial specialization. Here
...
we have the basics of declaring and storing class template partial
specializations, matching class template partial specializations at
instantiation time via (limited) template argument deduction, and
using the class template partial specialization's pattern for
instantiation.
This patch is enough to make a simple is_pointer type trait work, but
not much else.
llvm-svn: 72662
2009-05-31 09:31:02 +00:00
Douglas Gregor
7a1a7cb09d
Add a little FIXME for C++ class printing
...
llvm-svn: 72660
2009-05-31 07:13:39 +00:00
Anders Carlsson
73b836bf3d
Clean up the newly added C++ AST nodes.
...
llvm-svn: 72643
2009-05-30 22:38:53 +00:00
Anders Carlsson
4f44fd5c6f
Get rid of CXXTempVarDecl.
...
llvm-svn: 72637
2009-05-30 21:10:34 +00:00