| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
different kinds (aka garbage). This happens if we're comparing a standard
conversion sequence to an ambiguous one which have the same KindRank.
Found by valgrind.
llvm-svn: 101717
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
resolution ([over.ics.ref]), we take some shortcuts required by the
standard that effectively permit binding of a const volatile reference
to an rvalue. We have to treat lightly here to avoid infinite
recursion.
Fixes PR6177.
llvm-svn: 101712
 | 
| | 
| 
| 
| 
| 
|  | 
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
 |