Anders Carlsson
7f78d85be4
Start at NextOffset when laying out bases as well.
...
llvm-svn: 82831
2009-09-26 01:29:10 +00:00
Anders Carlsson
a6d95b5a3e
Use NextOffset when laying out a field.
...
llvm-svn: 82828
2009-09-26 01:09:35 +00:00
Douglas Gregor
0e876e0180
Use explicitly-specified template argument lists to help naming
...
explicit template specializations, when available.
llvm-svn: 82824
2009-09-25 23:53:26 +00:00
Anders Carlsson
d7d358a65e
Even more work on empty classes.
...
llvm-svn: 82770
2009-09-25 15:39:00 +00:00
Anders Carlsson
e1883100a3
Who would have thought that empty classes were so tricky? Handle cases where an empty virtual base class needs to be moved aside because it conflicts with the first field.
...
llvm-svn: 82746
2009-09-25 01:54:38 +00:00
Anders Carlsson
4bf82141e7
Handle array fields that contain empty structs.
...
llvm-svn: 82744
2009-09-25 01:23:32 +00:00
Anders Carlsson
6f95c705ea
More work on empty classes.
...
llvm-svn: 82736
2009-09-25 00:02:51 +00:00
Anders Carlsson
bb66bc8e84
More improvements with laying out empty bases.
...
llvm-svn: 82682
2009-09-24 05:21:31 +00:00
Anders Carlsson
f24b18fb06
More work on empty classes.
...
llvm-svn: 82679
2009-09-24 03:22:10 +00:00
Douglas Gregor
96ab942a69
Make C++ temporary-related expressions provide proper source-range information.
...
llvm-svn: 82665
2009-09-23 22:51:26 +00:00
Fariborz Jahanian
af0262dccf
This patch addresses a few issues related to 8.5.3 [dcl.init.ref]
...
It uses a recent API to find inherited conversion functions to do
the initializer to reference lvalue conversion (and removes a FIXME).
It issues the ambiguity diagnostics when multiple conversions are found.
WIP.
llvm-svn: 82649
2009-09-23 20:55:32 +00:00
Gabor Greif
a8f9374661
fix typo in file name
...
llvm-svn: 82623
2009-09-23 13:15:04 +00:00
Fariborz Jahanian
21ccf06352
Produce detailed diagnostics when overload
...
resolution failed to select a candidate due to
ambiguity in type conversion function selection.
llvm-svn: 82596
2009-09-23 00:58:07 +00:00
Anders Carlsson
8ab20bb144
Cast the array size expr to a size_t
...
llvm-svn: 82594
2009-09-23 00:37:25 +00:00
Fariborz Jahanian
0b51c729c9
Issue good ambiguity diagnostic when convesion fails.
...
llvm-svn: 82565
2009-09-22 19:53:15 +00:00
Anders Carlsson
55640546e4
If we already set a primary base, don't set it to the first nearly empty base class.
...
llvm-svn: 82563
2009-09-22 19:16:59 +00:00
Daniel Dunbar
ebc5140e22
Disable questionable code for handling isNullPointerConstant on value dependent
...
expression.
llvm-svn: 82217
2009-09-18 08:46:16 +00:00
Daniel Dunbar
687fa86a30
Fix two crashes on value dependent expressions (shift and null-pointer check).
...
- Doug, please check.
- PR4940.
llvm-svn: 82129
2009-09-17 06:31:27 +00:00
Anders Carlsson
93b6d5e85e
Temporary band-aid for handling empty classes somewhat better.
...
llvm-svn: 82124
2009-09-17 04:42:56 +00:00
Anders Carlsson
570af5d426
Improve handling of vector casts in C++.
...
llvm-svn: 82072
2009-09-16 19:19:43 +00:00
Fariborz Jahanian
adcea10410
1) don't do overload resolution in selecting conversion
...
to pointer function for delete expression. 2)
Treat type conversion function and its 'const' version
as identical in building the visible conversion list.
llvm-svn: 81930
2009-09-15 22:15:23 +00:00
Fariborz Jahanian
3e6b57e593
Issue good diagnostics when initialization failes due to
...
ambiguity in type conversion function selection.
llvm-svn: 81898
2009-09-15 19:12:21 +00:00
Fariborz Jahanian
c34c179f4b
Perform overload resolution when selecting a pointer conversion
...
function for delete of a class expression and issue
good diagnostic when result is ambiguous.
llvm-svn: 81870
2009-09-15 17:21:47 +00:00
Fariborz Jahanian
19c7328881
Issue a good diagnostics when attempt to select
...
a type convesion function results in ambiguity.
llvm-svn: 81812
2009-09-15 00:10:11 +00:00
Anders Carlsson
3fa58d1f63
Diagnose taking the address of a bit-field inside a conditional operator.
...
llvm-svn: 81808
2009-09-14 23:15:26 +00:00
Douglas Gregor
2e0807cd75
Slightly improve the test for partial ordering of overloaded function
...
templates.
llvm-svn: 81806
2009-09-14 22:31:20 +00:00
Douglas Gregor
48bc374d1e
Test function template partial ordering when resolving the address of
...
an overloaded function (template).
llvm-svn: 81804
2009-09-14 22:02:01 +00:00
Fariborz Jahanian
f4061e39a3
Used visible conversion function api to do overload
...
resolution of type conversion functions in base and
current class.
llvm-svn: 81784
2009-09-14 20:41:01 +00:00
Fariborz Jahanian
2243014431
Removed couple of FIXME comments from test case.
...
llvm-svn: 81774
2009-09-14 17:32:50 +00:00
Sam Weinig
914244e7b0
Add support for -Wchar-subscripts. Fixes PR4801.
...
llvm-svn: 81747
2009-09-14 01:58:58 +00:00
Anders Carlsson
1b12ed4a00
Perform the C++ specific semantic checks of a function declaration after it's been merged with the previous declaration. This ensures that getPreviousDecl() will have the right value when ActOnConversionDeclarator is called.
...
llvm-svn: 81720
2009-09-13 21:33:06 +00:00
Anders Carlsson
002f2b3eec
CXXMethodDecl::isVirtual needs to check the canonical declaration. Fixes PR4878.
...
llvm-svn: 81715
2009-09-13 21:01:57 +00:00
Fariborz Jahanian
b394f50ac9
More work toward having an access method for visible
...
conversion functions.
llvm-svn: 81618
2009-09-12 18:26:03 +00:00
Fariborz Jahanian
b54ccb2782
Patch to build visible conversion function list lazily and make its
...
first use in calling the conversion function on delete statements.
llvm-svn: 81576
2009-09-11 21:44:33 +00:00
Douglas Gregor
c732aba9a9
Cleanup and test C++ default arguments. Improvements include:
...
- Diagnose attempts to add default arguments to templates (or member
functions of templates) after the initial declaration (DR217).
- Improve diagnostics when a default argument is redefined. Now, the
note will always point at the place where the default argument was
previously defined, rather than pointing to the most recent
declaration of the function.
llvm-svn: 81548
2009-09-11 18:44:32 +00:00
Anders Carlsson
99056f23b7
Fix PR4878 for real.
...
llvm-svn: 81507
2009-09-11 05:54:14 +00:00
Douglas Gregor
73341c4e63
Diagnose VLAs as an error in C++.
...
Also, treat the GNU __null as an integral constant expression to match
GCC's behavior.
llvm-svn: 81490
2009-09-11 00:18:58 +00:00
Douglas Gregor
8ef65fbd49
Eliminate some "default"s in CheckICE.
...
llvm-svn: 81477
2009-09-10 23:31:45 +00:00
Anders Carlsson
78b5493994
Look for overloaded arrow operators in base classes.
...
llvm-svn: 81475
2009-09-10 23:18:36 +00:00
Anders Carlsson
04e1e22fe7
Don't check use of a member function declaration used if the member function is virtual and the member reference expression doesn't explicitly qualify it. Fixes PR4878.
...
llvm-svn: 81460
2009-09-10 20:48:14 +00:00
Douglas Gregor
7736e2ad98
static_cast, reinterpret_cast, and const_cast can all be used in C++
...
integral constant expressions (for conversions to integer types,
naturally). I don't *think* that const_casts will ever get to this
point, but I also can't convince myself that they won't... so I've
taken the safe route and allowed the ICE checking code to look at
const_cast.
llvm-svn: 81453
2009-09-10 17:44:23 +00:00
Douglas Gregor
7f737c0015
When performing unqualified name lookup into a DeclContext, also look into
...
all of the parent DeclContexts that aren't represented within the
Scope chain. This fixes some name-lookup problems in out-of-line
definitions of members of nested classes.
llvm-svn: 81451
2009-09-10 16:57:35 +00:00
Douglas Gregor
0fea62d0c7
For a C++ delete expression where the operand is of class type that
...
has a single conversion to pointer-to-object type, implicitly convert
to that pointer-to-object type (C++ [expr.delete]p1).
llvm-svn: 81401
2009-09-09 23:39:55 +00:00
Douglas Gregor
5d3507d39c
Improve handling of initialization by constructor, by ensuring that
...
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.
llvm-svn: 81394
2009-09-09 23:08:42 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Douglas Gregor
822514fe39
Allow a declaration of an array to complete a prior, incomplete
...
declaration of that array in C++.
llvm-svn: 81309
2009-09-09 01:45:28 +00:00
Anders Carlsson
6816affaa4
Handle variadic constructors better. Share code between BuildCXXConstructExpr and BuildCXXTemporaryObjectExpr.
...
llvm-svn: 81181
2009-09-08 01:48:42 +00:00
Anders Carlsson
85ec4ffaf5
Check that the destination type of a static_cast expression is a complete type.
...
llvm-svn: 81151
2009-09-07 18:25:47 +00:00
Douglas Gregor
bddb73fa1d
If a destructor is referenced or a pseudo-destructor expression is
...
formed without a trailing '(', diagnose the error (these expressions
must be immediately called), emit a fix-it hint, and fix the code.
llvm-svn: 81015
2009-09-04 18:29:40 +00:00
Douglas Gregor
ad8a336b40
Implement AST, semantics, and CodeGen for C++ pseudo-destructor
...
expressions, e.g.,
p->~T()
when p is a pointer to a scalar type.
We don't currently diagnose errors when pseudo-destructor expressions
are used in any way other than by forming a call.
llvm-svn: 81009
2009-09-04 17:36:40 +00:00