Argyrios Kyrtzidis
8566356acb
When building a compound literal, check that the base element of the array is complete.
...
Fixes rdar://8620582 & http://llvm.org/PR7905
llvm-svn: 118428
2010-11-08 19:14:19 +00:00
Douglas Gregor
bcd625305b
When attempting reference binding to an overloaded function, also
...
consider that we might be trying to bind a reference to a class type,
which involves a constructor call. Fixes PR7425.
llvm-svn: 118407
2010-11-08 15:20:28 +00:00
Douglas Gregor
b0a746e391
Add missing test case for PR8230
...
llvm-svn: 118402
2010-11-08 03:58:01 +00:00
Douglas Gregor
e81f58e180
Properly diagnose invalid casts to function references. Patch by
...
Faisal Vali, tweaked by me. Fixes PR8230.
llvm-svn: 118400
2010-11-08 03:40:48 +00:00
Anders Carlsson
2ceb347e8b
A union cannot contain static data members or data members of reference type.
...
llvm-svn: 118381
2010-11-07 19:13:55 +00:00
Anders Carlsson
3fd50319d3
Don't warn when matching %p to nullptr.
...
llvm-svn: 118344
2010-11-06 14:58:53 +00:00
Argyrios Kyrtzidis
7d391557cc
When determining which template partial specialization is more specialized,
...
make sure to setup the instantiation stack. Fixes rdar://8620775 & http://llvm.org/PR8234
llvm-svn: 118314
2010-11-05 23:25:18 +00:00
Anders Carlsson
e981a8c231
Expressions of type std::nullptr_t can be used as sentinels.
...
llvm-svn: 118276
2010-11-05 15:21:33 +00:00
Anders Carlsson
7da7cc568f
Implement [over.ics.rank]p4: A conversion that does not convert an std::nullptr_t to bool is better than one than does.
...
llvm-svn: 118269
2010-11-05 00:12:09 +00:00
Argyrios Kyrtzidis
4b52007c35
Don't be so eager to replace UsingDecls in a DeclContext's lookup table;
...
check that the TargetNestedNameDecl is the same first.
llvm-svn: 118239
2010-11-04 08:48:52 +00:00
Anders Carlsson
a95069c52f
It's OK to use nullptr in relational operators if the other side is a null pointer constant.
...
llvm-svn: 118234
2010-11-04 03:17:43 +00:00
Nick Lewycky
07e97c594d
Make this error less specific but also less likely to cause confusion. Fixes
...
PR7702.
llvm-svn: 118181
2010-11-03 17:52:57 +00:00
Douglas Gregor
b37c9af75d
When producing overload candidates for binary built-in operators, keep
...
the sets of available conversions for the first and second arguments
separate. This is apparently the indent of C++ [over.built], and
reduces the number of overload candidates generated, eliminating some
ambiguities. Fixes PR8477.
llvm-svn: 118178
2010-11-03 17:00:07 +00:00
Alexis Hunt
a56cbccfc4
Provide an error when a non-identifier name (such as an operator) is used as a
...
parameter name.
Fixes PR8012.
llvm-svn: 118138
2010-11-03 01:07:06 +00:00
Argyrios Kyrtzidis
3050d9bdb8
Properly handle temporaries that are created in a AsmStmt.
...
Previously the temporaries would get destroyed before the asm call.
llvm-svn: 118001
2010-11-02 02:33:08 +00:00
Argyrios Kyrtzidis
375584c7eb
Clean up temporaries created by an asm statement. Fixes rdar://8540491
...
llvm-svn: 117961
2010-11-01 21:51:42 +00:00
Argyrios Kyrtzidis
ca76629618
Emit error when using a bound member function for something other than calling it.
...
Also avoids IRGen crashes due to accepting invalid code.
llvm-svn: 117943
2010-11-01 18:49:26 +00:00
Argyrios Kyrtzidis
d3f0054395
Emit an error when trying to form a pointer-to-member to a bitfield.
...
As a bonus, avoids a crash on the IRGen side due to accepting invalid code.
llvm-svn: 117842
2010-10-30 19:52:22 +00:00
Argyrios Kyrtzidis
52355c8020
renamed: test/SemaCXX/ptrtomember-badcall.cpp -> test/SemaCXX/ptrtomember.cpp
...
llvm-svn: 117841
2010-10-30 19:52:19 +00:00
Argyrios Kyrtzidis
93513155e7
Don't remove the init expression from the initializer list if it had a semantic error.
...
We already flag the error with InitListChecker's hadError and we mess up the AST unnecessarily.
Fixes rdar://8605381.
llvm-svn: 117760
2010-10-30 01:06:26 +00:00
Argyrios Kyrtzidis
b5488f45db
Add test/SemaCXX/crash-PR7625.cpp into test/SemaCXX/crashes.cpp
...
llvm-svn: 117759
2010-10-30 01:06:23 +00:00
Argyrios Kyrtzidis
0f24185c76
test/SemaCXX/crash-8124080.cpp -> test/SemaCXX/crashes.cpp
...
llvm-svn: 117758
2010-10-30 01:06:21 +00:00
Ted Kremenek
c00d5b9706
Add test case for <rdar://problem/8610363> (a bogus report of using an uninitialized field). This was
...
already fixed, but this serves for detecting regressions.
llvm-svn: 117754
2010-10-30 00:43:15 +00:00
Argyrios Kyrtzidis
706bbf84d8
When doing name lookup for members don't look into global/namespace scope.
...
Better performance and fixes rdar://8603569.
llvm-svn: 117656
2010-10-29 16:12:50 +00:00
John McCall
9de9160d55
Implement an indirect-goto optimization for goto *&&lbl and respect this
...
in the scope checker. With that done, turn an indirect goto into a
protected scope into a hard error; otherwise IR generation has to start
worrying about declarations not dominating their scopes, as exemplified
in PR8473.
If this really affects anyone, I can probably adjust this to only hard-error
on possible indirect gotos into VLA scopes rather than arbitrary scopes.
But we'll see how people cope with the aggressive change on the marginal
feature.
llvm-svn: 117539
2010-10-28 08:53:48 +00:00
John McCall
811a0f5578
Parse attributes on enumerators and instantiate attributes on enum decls.
...
llvm-svn: 117182
2010-10-22 23:36:17 +00:00
Douglas Gregor
cd1d0b4f98
Implement the integral promotion rules for the C++0x char16_t and
...
char32_t character types and enable built-in overloaded operator
candidates for these types. Fixes PR8432.
llvm-svn: 117038
2010-10-21 18:04:08 +00:00
Francois Pichet
a310806ae5
Microsoft enum extensions. 2 things will change on -fms-extensions:
...
1. enum underlying type is int by default.
2. Error "enumerator value is not representable in the underlying type"is a ExtWarning
llvm-svn: 116704
2010-10-18 15:01:13 +00:00
Nick Lewycky
c60d6e7af0
Report the location of the syntax error inside a macro. Fixes PR7944.
...
llvm-svn: 116624
2010-10-15 21:43:24 +00:00
Douglas Gregor
36c22a2335
Diagnose C++ [class.mem]p13-14, where a class member has the same name
...
as the class itself. Fixes PR7082.
llvm-svn: 116573
2010-10-15 13:21:21 +00:00
Douglas Gregor
d4e1fb562e
Don't complain about a variable within a linkage-specification that is
...
initialized. Fixes PR7076.
llvm-svn: 116553
2010-10-15 01:21:46 +00:00
Douglas Gregor
5a2bb5ba98
Diagnose when a 'static' member function overrides a virtual function
...
in a base class. Fixes PR8168.
llvm-svn: 116448
2010-10-13 22:55:32 +00:00
Douglas Gregor
a007d36c1b
Generalize the checking for qualification of (non-friend) class
...
members. Provide a hard error when the qualification doesn't match the
current class type, or a warning + Fix-it if it does match the current
class type. Fixes PR8159.
llvm-svn: 116445
2010-10-13 22:19:53 +00:00
Douglas Gregor
d07ba34a44
There is no reason for dereferencing a pointer-to-member to require
...
that the class type into which the pointer points be complete, even
though the standard requires it. GCC/EDG do not require a complete
type here, so we're calling this a problem with the standard. Fixes
PR8328.
llvm-svn: 116429
2010-10-13 20:41:14 +00:00
Douglas Gregor
efc469587a
Parse default arguments within member functions in source order, from
...
Manuel Klimek! Fixes PR7715.
llvm-svn: 116311
2010-10-12 16:25:54 +00:00
John McCall
5627fd71c8
Flesh out test.
...
llvm-svn: 116292
2010-10-12 03:38:33 +00:00
John McCall
01cbf2de0f
I just do what the comments tell me to do.
...
llvm-svn: 116289
2010-10-12 02:19:57 +00:00
John McCall
36226621f6
Progress.
...
llvm-svn: 116287
2010-10-12 02:09:17 +00:00
John McCall
36e7fe31d4
Add some infrastructure for dealing with expressions of 'placeholder' type,
...
i.e. expressions with an internally-convenient type which should not be
appearing in generally valid, complete ASTs.
llvm-svn: 116281
2010-10-12 00:20:44 +00:00
Argyrios Kyrtzidis
52da8da03b
Fix g++.dg regressions introduced at r115347 (rdar://8529993)
...
llvm-svn: 116144
2010-10-09 04:39:54 +00:00
Douglas Gregor
0bf3140424
Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
...
bit by me).
llvm-svn: 116122
2010-10-08 23:50:27 +00:00
John McCall
942687084f
__attribute__((aligned(n))) directly specifies the alignment of a declaration
...
unless it's a non-packed field, in which case it can only increase the
alignment. [[align]] effectively works the same way for well-formed code
(because it's ill-formed for [[align]] to decrease alignment ever).
Fixes rdar://problem/8335865
llvm-svn: 116070
2010-10-08 18:24:19 +00:00
Argyrios Kyrtzidis
15a9edc7cf
Fix an infinite loop, caused by unintended syntax bug (the 'break;' after 'default:' was intended to break out of the while loop).
...
Fixes rdar://8518859&8520617.
llvm-svn: 115985
2010-10-07 21:52:18 +00:00
Douglas Gregor
3999e15d93
Reject the allocation of variably-modified types in C++ 'new'
...
expressions. Fixes PR8209 in the narrowest way possible. I'm still
considering whether I want to implement the extension that permits the
use of VLA types in a 'new' expression.
llvm-svn: 115790
2010-10-06 16:00:31 +00:00
Anders Carlsson
0f7e94fd7b
When checking for uninitialized fields in member initializers, special case static variables and enums. Fixes PR8075.
...
llvm-svn: 115732
2010-10-06 02:43:25 +00:00
Argyrios Kyrtzidis
a992bbc08a
Add test case for r115588.
...
llvm-svn: 115590
2010-10-05 03:15:43 +00:00
Gabor Greif
594ce3573a
Doug's feedback
...
llvm-svn: 115356
2010-10-01 22:12:38 +00:00
Gabor Greif
16e028617c
Factor out enumerator APSInt adjustment into
...
a helper function (AdjustAPSInt) and use that
for adjusting the high bounds of case ranges
before APSInt comparisons. Fixes
http://llvm.org/bugs/show_bug.cgi?id=8135
Some minor refacorings while I am here.
llvm-svn: 115355
2010-10-01 22:05:14 +00:00
Francois Pichet
6d76e6cd92
Better diagnostic for superfluous scope specifier inside a class definition for member functions. + Fixit.
...
Example:
class A {
void A::foo(); //warning: extra qualification on member 'foo'
};
llvm-svn: 115347
2010-10-01 21:19:28 +00:00
Douglas Gregor
7fb25418ed
Implement the C++0x "trailing return type" feature, e.g.,
...
auto f(int) -> int
from Daniel Wallin!
(With a few minor bug fixes from me).
llvm-svn: 115322
2010-10-01 18:44:50 +00:00
Douglas Gregor
4ed49f375d
When performing template argument deduction of a function template
...
against a function type, be sure to check the type of the resulting
function template specialization against the desired function type
after substituting the deduced/defaulted template arguments. Fixes PR8196.
llvm-svn: 115086
2010-09-29 21:14:36 +00:00
Douglas Gregor
9d5938ae8a
Centralize the management of CXXRecordDecl::DefinitionData's Empty bit
...
in CXXRecordDecl itself. Yes, this is also part of <rdar://problem/8459981>.
This reinstates r114924, with one crucial bug fix: we were ignoring
the implicit fields created by anonymous structs/unions when updating
the bits in CXXRecordDecl, which means that a class/struct containing
only an anonymous class/struct would be considered "empty". Hilarity
follows.
llvm-svn: 114980
2010-09-28 20:38:10 +00:00
Argyrios Kyrtzidis
d6ea6bd2a3
Don't warn with -Wbool-conversions if the user wrote an explicit cast like "(void *)false".
...
Fixes rdar://8459342.
llvm-svn: 114955
2010-09-28 14:54:11 +00:00
Anders Carlsson
991285e425
Allow the use of C++0x deleted functions as an extension in C++98.
...
llvm-svn: 114762
2010-09-24 21:25:25 +00:00
Argyrios Kyrtzidis
e619e99a1b
Fix bogus compiler errors when declaring anonymous union, outside a class, with
...
members with the same name as a decl outside the scope where the members are actually introduced.
Fixes http://llvm.org/PR6741
llvm-svn: 114641
2010-09-23 14:26:01 +00:00
Argyrios Kyrtzidis
03f0e2b5b4
Do not warn with -Wuninitialized when the member is used in a sizeof or address-of expression.
...
Fixes rdar://8331312.
llvm-svn: 114426
2010-09-21 10:47:20 +00:00
Argyrios Kyrtzidis
40cec8326c
Revert r114316, -Wunused-value enabled by default was intended.
...
llvm-svn: 114318
2010-09-19 23:03:35 +00:00
Argyrios Kyrtzidis
3698bf1c6d
Make -Wunused-value off by default, matching GCC. Fixes rdar://7126194.
...
llvm-svn: 114316
2010-09-19 21:21:44 +00:00
John McCall
386dfc738e
static local variables with destructors don't require a global destructor
...
unless we're on a platform without __cxa_atexit (or use thereof has been
disabled). This patch actually just disables the check completely for
static locals, but I've filed http://llvm.org/bugs/show_bug.cgi?id=8176 to
track the platform-specific fix.
llvm-svn: 114269
2010-09-18 05:25:11 +00:00
Douglas Gregor
eda7e545e6
Continue parsing more postfix expressions, even after semantic
...
errors. Improves code completion in yet another case.
llvm-svn: 114255
2010-09-18 01:28:11 +00:00
Douglas Gregor
29d907de03
When we run into an error parsing or type-checking the left-hand side
...
of a binary expression, continue on and parse the right-hand side of
the binary expression anyway, but don't call the semantic actions to
type-check. Previously, we would see the error and then, effectively,
skip tokens until the end of the statement.
The result should be more useful recovery, both in the normal case
(we'll actually see errors beyond the first one in a statement), but
it also helps code completion do a much better job, because we do
"real" code completion on the right-hand side of an invalid binary
expression rather than completing with the recovery completion. For
example, given
x = p->y
if there is no variable named "x", we can still complete after the p->
as a member expression. Along the recovery path, we would have
completed after the "->" as if we were in an expression context, which
is mostly useless.
llvm-svn: 114225
2010-09-17 22:25:06 +00:00
John McCall
7a626f63f7
one piece of code is responsible for the lifetime of every aggregate
...
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.
I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly
llvm-svn: 113962
2010-09-15 10:14:12 +00:00
Sebastian Redl
058fc820d7
Fix destructor and assignment operator lookup in the has_nothrow traits.
...
llvm-svn: 113897
2010-09-14 23:40:14 +00:00
John McCall
d3be2c83d5
The paired 'operator delete' for a placement 'operator new' is always a
...
placement 'operator delete', even if there are no placement args (i.e.
overload resolution selected an operator new with default arguments).
llvm-svn: 113861
2010-09-14 21:34:24 +00:00
Sebastian Redl
5c649bc7bb
Don't crash when using type traits on a class with a constructor template.
...
llvm-svn: 113796
2010-09-13 22:18:28 +00:00
Sebastian Redl
c15c326b51
Remove CXXRecordDecl::getDefaultConstructor(), an inherently unsafe function due to lazy declaration of default constructors. Now that __has_nothrow_constructor doesn't use it anymore, part of PR8101 is fixed.
...
llvm-svn: 113794
2010-09-13 22:02:47 +00:00
Sebastian Redl
951006f510
Have __has_nothrow_copy use Sema's lookup routines. This fixes the problem with not finding implicitly declared copy constructors, part of PR8107.
...
llvm-svn: 113784
2010-09-13 21:10:20 +00:00
Argyrios Kyrtzidis
14ec9f674a
When applying 'delete' on a pointer-to-array type match GCC and EDG behavior and treat it as 'delete[]'.
...
Also offer a fix-it hint adding '[]'.
llvm-svn: 113778
2010-09-13 20:15:54 +00:00
Douglas Gregor
bdd7b2358b
Don't assert when attempting to take the address of an overloaded
...
function fails due to ambiguities in partial ordering of function
templates. Fixes PR8033.
llvm-svn: 113725
2010-09-12 08:16:09 +00:00
Douglas Gregor
d5b730c9d5
When performing overload resolution, only compare the final conversion
...
sequences for two conversion functions when in fact we are in the text
of initialization by a user-defined conversion sequences. Fixes PR8034.
llvm-svn: 113724
2010-09-12 08:07:23 +00:00
Douglas Gregor
6309e3d18e
Don't complain about useless user-defined conversion functions when
...
they were instantiated from a template. In template metaprogramming,
stuff happens. Fixes PR8065.
llvm-svn: 113722
2010-09-12 07:22:28 +00:00
Francois Pichet
488b4a7d94
Add basic support for Microsoft enum forward declaration.
...
Assigning an underlying integral type to an enum forward declaration will come in a next patch.
llvm-svn: 113716
2010-09-12 05:06:55 +00:00
Douglas Gregor
c87f4d4aba
Don't perform integral promotions from an incompletion enumeration
...
type. Fixes PR8089 in a slightly different way than had been suggested.
llvm-svn: 113711
2010-09-12 03:38:25 +00:00
John McCall
db76892e72
Support in-class initialization of static const floating-point data members.
...
llvm-svn: 113663
2010-09-10 23:21:22 +00:00
Dawn Perchik
a42039d5eb
Add support for a few MS extensions supported by the Borland compiler
...
(__uuidof, _fastcall, etc.).
llvm-svn: 113434
2010-09-08 22:56:24 +00:00
Douglas Gregor
8ec5173f9a
Use the new-initialization code for initializing scalars with a
...
function-style cast. Previously, we had a (redundant, incorrect)
semantic-checking path for non-class types, which allowed
value-initialization of a reference type and then crashed.
llvm-svn: 113415
2010-09-08 21:40:08 +00:00
Francois Pichet
4ad4b58639
Allow type definitions inside anonymous struct/union in Microsoft mode.
...
llvm-svn: 113354
2010-09-08 11:32:25 +00:00
Sebastian Redl
02f1eebdc0
Don't give 'global constructor' warnings for function statics, even if they have a direct initializer. Fixes PR8095.
...
llvm-svn: 113344
2010-09-08 04:46:19 +00:00
Sebastian Redl
a190d3605f
Allow (cv) void and incomplete arrays to be passed to the type traits.
...
Fixes PR8110, and thus PR8109, PR8097, and parts of PR8101, PR8105 and PR8107. Only a few traits have tests for incomplete arrays, since I'm not yet clear what the result for them should be; Howards wants to file a DR to change the standard.
llvm-svn: 113326
2010-09-08 00:48:43 +00:00
Daniel Dunbar
53c9ac30f9
tests: Use -ffreestanding when including stdint.h, to avoid platform dependencies.
...
llvm-svn: 113301
2010-09-07 22:54:28 +00:00
Chris Lattner
d7ff9f91bf
remove curly quotes, patch by Dimitry Andric!
...
llvm-svn: 113156
2010-09-06 17:52:29 +00:00
Eli Friedman
abebebf742
Update test for r113128.
...
llvm-svn: 113131
2010-09-06 00:30:50 +00:00
Eli Friedman
8ed2bac65d
PR8023: Don't crash on invalid uses of __real__ on class types in C++.
...
llvm-svn: 113124
2010-09-05 23:15:52 +00:00
Chris Lattner
24b89469ac
'const std::type_info*' instead of 'std::type_info const*'
...
llvm-svn: 113092
2010-09-05 00:17:29 +00:00
Chris Lattner
9dd55103c1
print "const intptr_t" instead of "intptr_t const"
...
llvm-svn: 113091
2010-09-05 00:07:29 +00:00
Chris Lattner
53fa04909c
make clang print types as "const int *" instead of "int const*",
...
which is should have done from the beginning. As usual, the most
fun with this sort of change is updating all the testcases.
llvm-svn: 113090
2010-09-05 00:04:01 +00:00
Fariborz Jahanian
087206dbcd
Truncate block variable of bool type to i1 when its
...
value is used. This matches with non-block variable
use of bool type. (Fixes radar 8390062).
llvm-svn: 113027
2010-09-03 23:07:53 +00:00
Anders Carlsson
f849774495
It's OK for classes to have flexible array elements (but not unions).
...
llvm-svn: 113018
2010-09-03 21:53:49 +00:00
Fariborz Jahanian
9d798d13f3
Cope with llvm's reference to bool type of 'i1' vs. clang's
...
type of 'i8' for the same for __block variables of
type bool. refixes radar 8382559.
llvm-svn: 113015
2010-09-03 21:36:02 +00:00
Dawn Perchik
335e16bad4
Add symantic support for the Pascal calling convention via
...
"__attribute((pascal))" or "__pascal" (and "_pascal" under
-fborland-extensions). Support still needs to be added to llvm.
llvm-svn: 112939
2010-09-03 01:29:35 +00:00
Anders Carlsson
4013404eff
Static local variables don't result in global constructors being emitted.
...
llvm-svn: 112933
2010-09-03 01:11:38 +00:00
Anders Carlsson
af7534f084
Get rid of the "functions declared 'noreturn' should have a 'void' result type" warning.
...
The rationale behind this is that it is normal for callback functions to have a non-void return type
and it should still be possible to mark them noreturn. (JavaScriptCore is a good example of this).
llvm-svn: 112918
2010-09-03 00:25:02 +00:00
Dawn Perchik
68bb1b441f
Add support for Borland extensions via option -fborland-extensions
...
(original patch r112791 was reverted due to a bug).
llvm-svn: 112915
2010-09-02 23:59:25 +00:00
Sebastian Redl
b469afb4f3
Implement __has_virtual_destructor. Patch by Steven Watanabe.
...
llvm-svn: 112905
2010-09-02 23:19:42 +00:00
Dawn Perchik
f0882f90f3
Reverting rev 112791 - apparently -fborland-extensions is on all the time?!
...
llvm-svn: 112797
2010-09-02 02:18:55 +00:00
Ted Kremenek
cbe6b0b846
Enhance return-stack-address check (in Sema) to handle fields that themselves are references. (Fixes PR 7999; fix by Chandler Carruth).
...
llvm-svn: 112792
2010-09-02 01:12:13 +00:00
Dawn Perchik
1fcc18c7bc
Add support for Borland extensions via option -fborland-extensions
...
llvm-svn: 112791
2010-09-02 01:12:01 +00:00
Douglas Gregor
eece0eaa85
Transfer calling-convention attributes down to member function pointers.
...
llvm-svn: 112715
2010-09-01 16:29:03 +00:00
Sebastian Redl
7dcb155c18
Implement the __has_nothrow trait family, by Steven Watanabe.
...
llvm-svn: 112577
2010-08-31 04:59:00 +00:00
Alexis Hunt
3b7918625c
Revert my user-defined literal commits - r1124{58,60,67} pending
...
some issues being sorted out.
llvm-svn: 112493
2010-08-30 17:47:05 +00:00