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
Eli Friedman
fcbf7d2baf
PR4287: allow a variadic prototype to make a subsequent K&R style
...
definition variadic. I'm not completely sure it's legal, but the
standard can be interpreted as making it legal, and gcc seems to think
it's legal, so I didn't add an extension warning.
llvm-svn: 72689
2009-06-01 09:24:59 +00:00
Douglas Gregor
82dbbd7054
Some cleanups and commenting to our declaration-name handling
...
llvm-svn: 72570
2009-05-29 14:49:33 +00:00
Douglas Gregor
2517f334b4
Don't drop the computed implicit conversions when building a call to
...
overloaded operator[] or overloaded postfix unary operator (++,
--). Thanks to Eli for finding this bug!
llvm-svn: 72460
2009-05-27 05:00:47 +00:00
Fariborz Jahanian
88fead8c48
Cannot type cast @selector expressions.
...
llvm-svn: 72284
2009-05-22 21:42:52 +00:00
Douglas Gregor
a8db954f24
Representation of and template instantiation for member
...
expressions. This change introduces another AST node,
CXXUnresolvedMemberExpr, that captures member references (x->m, x.m)
when the base of the expression (the "x") is type-dependent, and we
therefore cannot resolve the member reference yet.
Note that our parsing of member references for C++ is still quite
poor, e.g., we don't handle x->Base::m or x->operator int.
llvm-svn: 72281
2009-05-22 21:13:27 +00:00
Douglas Gregor
1c37d9eed5
Template instantiation for C99 compound literals
...
llvm-svn: 72236
2009-05-21 23:48:18 +00:00
Jay Foad
7d0479f2c2
Use v.data() instead of &v[0] when SmallVector v might be empty.
...
llvm-svn: 72210
2009-05-21 09:52:38 +00:00
Douglas Gregor
ad3150cd38
Template instantiation for __builtin_va_arg.
...
llvm-svn: 72144
2009-05-19 23:10:31 +00:00
Douglas Gregor
0df91121ba
Template instantiation for __builtin_choose_expr.
...
llvm-svn: 72143
2009-05-19 22:43:30 +00:00
Douglas Gregor
f907cbf634
Ban the use of __builtin_types_compatible_p in C++; g++ doesn't support it,
...
and it isn't clear exactly what it's supposed to mean. Thanks Eli!
llvm-svn: 72142
2009-05-19 22:28:02 +00:00
Fariborz Jahanian
960910a159
Patch finishes off application of printf attribute on blocks.
...
llvm-svn: 72111
2009-05-19 17:08:59 +00:00
Douglas Gregor
7a77a6bcf9
Template instantiation for array subscript expressions. This was far
...
easier than expected because of the limitation that subscript
operators must be member functions.
llvm-svn: 72076
2009-05-19 00:01:19 +00:00
Fariborz Jahanian
5f1f9d7a46
BlockDecl node must be complete before block attributes
...
can be processed. No change in functionality.
llvm-svn: 72066
2009-05-18 23:17:46 +00:00
Fariborz Jahanian
c1585be6bd
more printf attribute on block declaration and
...
checking when block is envoked. In progress.
llvm-svn: 72039
2009-05-18 21:05:18 +00:00
Anders Carlsson
9303134cef
Add FIXME about not using MemberExpr nodes when the base type is a dependent type.
...
llvm-svn: 71979
2009-05-17 16:28:18 +00:00
Eli Friedman
ce7f900b3b
Refactor address-of-void extension a bit so that it's more obviously
...
correct. No functionality change, as far as I know.
llvm-svn: 71965
2009-05-16 23:27:50 +00:00
Anders Carlsson
5b53576fe4
Don't return member pointer types for static member functions. Fixes 6879261.
...
llvm-svn: 71961
2009-05-16 21:43:42 +00:00
Anders Carlsson
524d5a4f5a
Improve checking of member expressions where the base type is a dependent type.
...
llvm-svn: 71956
2009-05-16 20:31:20 +00:00
Eli Friedman
168fe15b0d
Avoid calling mergeTypes in C++. I think these are the correct C++
...
alternatives, but please correct me if I'm wrong.
I eventually plan to assert in mergeTypes that we aren't in C++ mode
because composite types are fundamentally not a part of C++. The
remaining callers for code in the regression tests are
Sema::WarnConflictingTypedMethods and CodeGenFunction::EmitFunctionProlog;
I'm not quite sure what the correct approach is for those callers.
llvm-svn: 71946
2009-05-16 13:54:38 +00:00
Eli Friedman
e2cad65015
Add stricter checking for va_arg.
...
llvm-svn: 71942
2009-05-16 12:46:54 +00:00
Mike Stump
87c57acfb7
Reflow some comments.
...
llvm-svn: 71936
2009-05-16 07:39:55 +00:00
Eli Friedman
b05c41e0a1
Remove useless wrapper.
...
llvm-svn: 71928
2009-05-16 05:56:02 +00:00
Anders Carlsson
789e2cce54
Basic support for member exprs where the base expr type is dependent.
...
llvm-svn: 71907
2009-05-15 23:10:19 +00:00
Fariborz Jahanian
6802ed9968
improved on diagnosing misplacement of sentinel attributes.
...
No change in functionality.
llvm-svn: 71894
2009-05-15 21:18:04 +00:00
Fariborz Jahanian
0aa5c4565d
This patch finishes off the sentinel attribute handling for
...
blocks and function pointers.
llvm-svn: 71888
2009-05-15 20:33:25 +00:00
Fariborz Jahanian
6607b21156
Adds recognition of sentinel attribute on block declarations.
...
llvm-svn: 71788
2009-05-14 20:53:39 +00:00
Fariborz Jahanian
4a528035fd
Diagnose missing sentinel argument on a funciton call
...
with sentinel attribute.
llvm-svn: 71778
2009-05-14 18:00:00 +00:00
Fariborz Jahanian
9e87721d47
Look for and diagnose missing sentinel argument on message
...
dispatch arguments which have sentinel attribute.
llvm-svn: 71737
2009-05-13 23:20:50 +00:00
Fariborz Jahanian
027b886a99
Some early declarations to support sentinel attribute on
...
message dispatches (and function calls later). No change in
functionality.
llvm-svn: 71683
2009-05-13 18:09:35 +00:00
Sebastian Redl
576fd424df
Implement C++0x nullptr.
...
llvm-svn: 71405
2009-05-10 18:38:11 +00:00
Fariborz Jahanian
fe9e3940eb
Refactoring of my last patch.
...
llvm-svn: 71248
2009-05-08 20:20:55 +00:00
Fariborz Jahanian
b2ab73d93c
More type checking for properties, accessors and
...
use of dot-syntax expression. This is to match gcc's.
llvm-svn: 71243
2009-05-08 19:36:34 +00:00
Mike Stump
f70bcf7d1a
Tighten up relationals with blocks and ints. Radar 6441502
...
llvm-svn: 71171
2009-05-07 18:43:07 +00:00
Mike Stump
1b821b4fc5
Improve semantic checking for blocks. Radar 6441502
...
llvm-svn: 71145
2009-05-07 03:14:14 +00:00
Douglas Gregor
b8420464c6
Turns out that Sebastian already implemented the logic to compute the
...
composite pointer type, and his is better! Updated relational- and
equality-operator checking accordingly.
llvm-svn: 70963
2009-05-05 04:50:50 +00:00
Douglas Gregor
5b07c7ec05
Implement support for comparing pointers with <, >, <=, >=, ==, and !=
...
in C++, taking into account conversions to the "composite pointer
type" so that we can compare, e.g., a pointer to a derived class to a
pointer to a base class.
Also, upgrade the "comparing distinct pointer types" from a warning to
an error for C++, since this is clearly an error. Turns out that we
hadn't gone through and audited this code for C++, ever.
Fixes <rdar://problem/6816420>.
llvm-svn: 70829
2009-05-04 06:07:12 +00:00
Eli Friedman
b8c4fd8cfd
PR2524: downgrade taking address of expression of type 'void' to an
...
extension warning.
llvm-svn: 70805
2009-05-03 22:36:05 +00:00
Eli Friedman
8469bc7c73
Fix/re-enable test.
...
llvm-svn: 70800
2009-05-03 21:22:18 +00:00
Anders Carlsson
38ebcaa8c8
Fix a thinko and a test.
...
llvm-svn: 70637
2009-05-02 18:36:10 +00:00
Anders Carlsson
8b98d02976
Downgrade the invalid offsetof error to a warning.
...
llvm-svn: 70634
2009-05-02 17:45:47 +00:00
Douglas Gregor
71235ecb7f
When determining whether an expression refers to a bit-field, look
...
into the left-hand side of an assignment expression. This completes
most of PR3500; the only remaining part is to deal with the
GCC-specific implementation-defined behavior for "unsigned long" (and
other) bit-fields.
llvm-svn: 70623
2009-05-02 02:18:30 +00:00
Douglas Gregor
d2c2d172da
Fix bitfield promotions in several more cases. We don't seem to work hard enough at determining whether an expression is a bitfield or not, yet.
...
llvm-svn: 70613
2009-05-02 00:36:19 +00:00
Anders Carlsson
2bbb86b02e
It's an error to call offsetof on a non-POD type.
...
llvm-svn: 70595
2009-05-01 23:20:30 +00:00
Douglas Gregor
8d9c509975
Implement bit-field promotion rules for C99. Fixes PR3500.
...
llvm-svn: 70571
2009-05-01 20:41:21 +00:00
Anders Carlsson
b781bcdc30
Replace more release+static_cast with takeAs.
...
llvm-svn: 70567
2009-05-01 19:49:17 +00:00
Anders Carlsson
3cbc85985a
Replace a bunch of static_cast + release with takeAs.
...
llvm-svn: 70566
2009-05-01 19:30:39 +00:00
Eli Friedman
f4e3ad6500
PR4013 and PR4105: pointer-like types can only be cast to/from integers
...
and other pointer-like types.
llvm-svn: 70531
2009-05-01 02:23:58 +00:00
Douglas Gregor
0cfbdab0cf
Implement semantic analysis for transparent unions. This is largely
...
based on a patch from Anders Johnsen. CodeGen support is incomplete,
in that we do not properly coerce to the first field's type.
llvm-svn: 70419
2009-04-29 22:16:16 +00:00