| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 102918
|
|
|
|
| |
llvm-svn: 102369
|
|
|
|
|
|
|
|
|
| |
assembly for the global "d7". We were previously testing for alignment
3, which seems to happen for some builders and not for others. I've
eliminated the alignment check and added a FIXME to unbreak the
buildbots.
llvm-svn: 100205
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
poor (and wrong) approximation of the actual rules governing when to
build a copy and when it can be elided.
The correct implementation is actually simpler than the
approximation. When we only enumerate constructors as part of
initialization (e.g., for direct initialization or when we're copying
from a class type or one of its derived classes), we don't create a
copy. When we enumerate all conversion functions, we do create a
copy. Before, we created some extra copies and missed some
others. The new test copy-initialization.cpp shows a case where we
missed creating a (required, non-elidable) copy as part of a
user-defined conversion, which resulted in a miscompile. This commit
also fixes PR6757, where the missing copy made us reject well-formed
code in the ternary operator.
This commit also cleans up our handling of copy elision in the case
where we create an extra copy of a temporary object, which became
necessary now that we produce the right copies. The code that seeks to
find the temporary object being copied has moved into
Expr::getTemporaryObject(); it used to have two different
not-quite-the-same implementations, one in Sema and one in CodeGen.
Note that we still do not attempt to perform the named return value
optimization, so we miss copy elisions for return values and throw
expressions.
llvm-svn: 100196
|
|
|
|
| |
llvm-svn: 99363
|
|
|
|
| |
llvm-svn: 95658
|
|
|
|
|
|
|
|
| |
to the declaring class from the nearest virtual base class. WIP.
This fixes 40% of all the problems remaining in one of my testcases.
llvm-svn: 94592
|
|
|
|
|
|
|
|
|
| |
multiple inheritance cases. WIP.
This fixes 20% of the outstanding problems found by the randomized
tester.
llvm-svn: 94499
|
|
|
|
| |
llvm-svn: 94478
|
|
|
|
| |
llvm-svn: 94307
|
|
|
|
|
|
| |
file, and add FIXMEs to the remaining broken tests.
llvm-svn: 94238
|
|
|
|
| |
llvm-svn: 94229
|
|
|
|
|
|
|
| |
not just among the direct bases. Before we where missing nearly
empties that were bases of virtual base classes.
llvm-svn: 94208
|
|
|
|
| |
llvm-svn: 94163
|
|
|
|
|
|
| |
Have I ever mentioned that clang regtests should not be grepping .s files??
llvm-svn: 93998
|
|
|
|
| |
llvm-svn: 93709
|
|
|
|
|
|
| |
really be all LLVM IR...
llvm-svn: 93707
|
|
|
|
| |
llvm-svn: 93346
|
|
|
|
| |
llvm-svn: 91545
|
|
|
|
|
|
|
|
|
| |
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
|
|
|
|
|
|
|
| |
generation, and make sure we generate thunks when the function is defined
rather than when the vtable is defined.
llvm-svn: 90722
|
|
|
|
| |
llvm-svn: 89412
|
|
|
|
| |
llvm-svn: 88710
|
|
|
|
| |
llvm-svn: 88702
|
|
|
|
| |
llvm-svn: 88699
|
|
|
|
| |
llvm-svn: 88681
|
|
|
|
|
|
|
|
| |
but this is necessary to continue work on virtual vtables. We don't
want to penalize virtual table building testcases, just because
complex virtual conversions don't yet work.
llvm-svn: 88676
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and implicitly defined constructors. This has a number of benefits:
1. Less code.
2. Explicit and implicit constructors get the same diagnostics.
3. The AST explicitly contains constructor calls from implicit default
constructors. This allows handing some cases that previously weren't handled
correctly in IRGen without any additional code. Specifically, implicit default
constructors containing calls to constructors with default arguments are now
handled correctly.
llvm-svn: 86500
|
|
|
|
| |
llvm-svn: 86432
|
|
|
|
|
|
| |
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.
llvm-svn: 86430
|
|
|
|
|
|
| |
adjustments of zero.
llvm-svn: 86300
|
|
|
|
|
|
| |
class that is overridden in a base that isn't morally virtual.
llvm-svn: 86217
|
|
|
|
|
|
| |
speed up this file by not doing twice the checking.
llvm-svn: 86205
|
|
|
|
|
|
| |
pointers are returned.
llvm-svn: 86120
|
|
|
|
| |
llvm-svn: 86118
|
|
|
|
| |
llvm-svn: 86117
|
|
|
|
|
|
|
| |
should only look at -O0 IR output not -O3 assembly output. XFAIL it for
now.
llvm-svn: 86029
|
|
|
|
|
|
|
| |
so the optimizer can tailcall into the return value adjustment thunk.
This improves codesize for complex hierarchies.
llvm-svn: 85988
|
|
|
|
| |
llvm-svn: 85925
|
|
|
|
| |
llvm-svn: 85916
|
|
|
|
| |
llvm-svn: 85905
|
|
|
|
| |
llvm-svn: 85677
|
|
|
|
| |
llvm-svn: 85354
|
|
|
|
| |
llvm-svn: 84123
|
|
|
|
|
|
| |
offsets for covariant thunks.
llvm-svn: 83965
|
|
|
|
| |
llvm-svn: 83035
|
|
|
|
| |
llvm-svn: 81346
|
|
|
|
| |
llvm-svn: 81143
|
|
|
|
| |
llvm-svn: 80725
|
|
|
|
| |
llvm-svn: 80405
|