| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
in C++03.
llvm-svn: 101707
|
|
|
|
|
|
|
| |
return types, and default arguments. This fixes PR6855 along with several
similar cases where we rejected valid code.
llvm-svn: 101706
|
|
|
|
|
|
|
|
|
| |
reference binding to an rvalue of reference-compatible type, check
parameters after the first for complete parameter types and build any
required default function arguments. We're effectively simulating the
type-checking for a call without building the call itself.
llvm-svn: 101705
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reference-compatible type, the implementation is permitted to make a
copy of the rvalue (or many such copies, even). However, even though
we don't make that copy, we are required to check for the presence of
a suitable copy constructor. With this change, we do.
Note that in C++0x we are not allowed to make these copies, so we test
both dialects separately.
Also note the FIXME in one of the C++03 tests, where we are not
instantiating default function arguments for the copy constructor we
pick (but do not call). The fix is obvious; eliminating the infinite
recursion it causes is not. Will address that next.
llvm-svn: 101704
|
|
|
|
|
|
| |
not issue a warning).
llvm-svn: 101699
|
|
|
|
|
|
|
|
|
| |
temporary object. This is blindingly obvious from reading C++
[over.match.ctor]p1, but somehow I'd missed it and it took DR152 to
educate me. Adjust one test that was relying on this non-standard
behavior.
llvm-svn: 101688
|
|
|
|
|
|
| |
where assigning to a bit-field member would overwrite other parts of the struct.
llvm-svn: 101681
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resolution. There are two sources of problems involving user-defined
conversions that this change eliminates, along with providing simpler
interfaces for checking implicit conversions:
- It eliminates a case of infinite recursion found in Boost.
- It eliminates the search for the constructor needed to copy a temporary
generated by an implicit conversion from overload
resolution. Overload resolution assumes that, if it gets a value
of the parameter's class type (or a derived class thereof), there
is a way to copy if... even if there isn't. We now model this
properly.
llvm-svn: 101680
|
|
|
|
| |
llvm-svn: 101678
|
|
|
|
|
|
| |
affect alignment.
llvm-svn: 101673
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 101671
|
|
|
|
| |
llvm-svn: 101668
|
|
|
|
|
|
|
|
| |
implemented precisely the same as GCC, but the distinction GCC makes isn't
useful to represent. This allows parsing code which uses GCC-specific keywords
('asm', etc.) without parsing in a fully GNU mode.
llvm-svn: 101667
|
|
|
|
| |
llvm-svn: 101666
|
|
|
|
| |
llvm-svn: 101660
|
|
|
|
|
|
| |
unused.
llvm-svn: 101643
|
|
|
|
|
|
| |
raw_ostream. Use it in getAsString and NamedDecl's raw_ostream operator.
llvm-svn: 101633
|
|
|
|
|
|
|
|
| |
users of getNameAsString on a stream.
The next step is to print the name directly into the stream, avoiding a temporary std::string copy.
llvm-svn: 101632
|
|
|
|
|
|
|
|
|
|
| |
void exit_picture()
{
char yuv_types[4][6]= {"4:0:0","4:2:0","4:2:2","4:4:4"};
foo(yuv_types);
}
llvm-svn: 101623
|
|
|
|
| |
llvm-svn: 101618
|
|
|
|
|
|
|
|
| |
checking into a single function and use that throughout. Remove some
now unnecessary diagnostics and update tests with now more accurate
diagnostics.
llvm-svn: 101610
|
|
|
|
| |
llvm-svn: 101580
|
|
|
|
|
|
|
| |
the result of comparisons are 'int' in C, it doesn't work to
test just the result type of the expression.
llvm-svn: 101576
|
|
|
|
|
|
|
| |
do *not* suggest that the function could be attribute 'noreturn';
overridden functions may end up returning.
llvm-svn: 101572
|
|
|
|
|
|
|
| |
This is the last of the uses of TryImplicitConversion outside of
overload resolution and InitializationSequence itself.
llvm-svn: 101569
|
|
|
|
| |
llvm-svn: 101568
|
|
|
|
|
|
| |
Sema::TryImplicitConversion is, for my own sanity. No functionality change
llvm-svn: 101554
|
|
|
|
|
|
| |
functionality change
llvm-svn: 101550
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TryStaticImplicitCast (for references, class types, and everything
else, respectively) into a single invocation of
InitializationSequence.
One of the paths (for class types) was the only client of
Sema::TryInitializationByConstructor, which I have eliminated. This
also simplified the interface for much of the cast-checking logic,
eliminating yet more code.
I've kept the representation of C++ functional casts with <> 1
arguments the same, despite the fact that I hate it. That fix will
come soon. To satisfy my paranoia, I've bootstrapped + tested Clang
with these changes.
llvm-svn: 101549
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
struct may cause it to shrink more than one byte. Before
my recent changes we compiled the new test into:
%0 = type { [6 x i8] }
@x = global %0 { [6 x i8] undef }, align 2 ; <%0*> [#uses=0]
which is obviously bogus. Now we compile it into:
%0 = type <{ i32, i8, i8 }>
@x = global %0 zeroinitializer, align 2 ; <%0*> [#uses=0]
Where the last byte only is tail padding.
llvm-svn: 101536
|
|
|
|
|
|
| |
merge also a few tests I had here for this feature, and FileCheck'ize one file
llvm-svn: 101535
|
|
|
|
|
|
|
|
|
|
| |
functional casts over to InitializationSequence, eliminating a caller
of Sema::TryImplicitConversion. We also get access and ambiguity
checking "for free".
More cleanups to come in this routine.
llvm-svn: 101526
|
|
|
|
|
|
|
| |
implementation today but is the right place if we want to make it faster some
day.
llvm-svn: 101521
|
|
|
|
| |
llvm-svn: 101502
|
|
|
|
|
|
| |
float. Fixes PR 6854.
llvm-svn: 101499
|
|
|
|
| |
llvm-svn: 101498
|
|
|
|
|
|
| |
SemaOverload.cpp; no functionality change.
llvm-svn: 101497
|
|
|
|
|
|
| |
that we aren't using ForceRValue any more?
llvm-svn: 101496
|
|
|
|
| |
llvm-svn: 101495
|
|
|
|
| |
llvm-svn: 101494
|
|
|
|
|
|
| |
functions.
llvm-svn: 101492
|
|
|
|
|
|
| |
not the way we're going to handle this.
llvm-svn: 101483
|
|
|
|
|
|
| |
Sema::IsUserDefinedConversion. No functionality change
llvm-svn: 101482
|
|
|
|
|
|
| |
don't need it.
llvm-svn: 101481
|
|
|
|
|
|
|
|
|
|
|
| |
large files, this doesn't seem significantly better than just letting
raw_ostream pick a buffer size.
This code predates raw-ostream's automatic buffer sizing; in fact, it
was introduced as part of the code which would eventually become
raw_ostream.
llvm-svn: 101473
|
|
|
|
|
|
| |
shortly (Daniel, please review).
llvm-svn: 101472
|
|
|
|
| |
llvm-svn: 101470
|
|
|
|
| |
llvm-svn: 101467
|
|
|
|
| |
llvm-svn: 101464
|
|
|
|
| |
llvm-svn: 101462
|