| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 101912
|
| |
|
|
|
|
|
|
| |
function declaration, since it may end up being changed (e.g.,
"extern" can become "static" if a prior declaration was static). Patch
by Enea Zaffanella and Paolo Bolzoni.
llvm-svn: 101826
|
| |
|
|
|
|
| |
-fdump-record-layouts.
llvm-svn: 101815
|
| |
|
|
| |
llvm-svn: 101786
|
| |
|
|
| |
llvm-svn: 101668
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
the result of comparisons are 'int' in C, it doesn't work to
test just the result type of the expression.
llvm-svn: 101576
|
| |
|
|
| |
llvm-svn: 101470
|
| |
|
|
| |
llvm-svn: 101467
|
| |
|
|
| |
llvm-svn: 101462
|
| |
|
|
|
|
| |
fixes a bug where we would lay out virtual bases in the wrong order.
llvm-svn: 101373
|
| |
|
|
| |
llvm-svn: 101369
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Used to determine whether the alignment of the type in a bit-field is
respected when laying out structures. The default is true, targets can
override this as needed.
- This is designed to correspond to the PCC_BITFIELD_TYPE_MATTERS macro in
gcc. The AST/Sema implementation only affects one line, unless I have
forgotten something. I'd appreciate further review.
- IRgen still needs to be updated to fully support this (which is effectively
PR5591).
llvm-svn: 101356
|
| |
|
|
|
|
| |
blocks. Fixes PR6468.
llvm-svn: 101196
|
| |
|
|
|
|
|
| |
measurements of '-fsyntax-only' on combine.c (403.gcc) shows no real performance
change, but now the vector isn't leaked.
llvm-svn: 101195
|
| |
|
|
|
|
|
|
| |
code the first time.
Fixes PR6827.
llvm-svn: 101184
|
| |
|
|
| |
llvm-svn: 101176
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
this caused us to codegen dead globals like this:
struct foo { int a; int b; };
static struct foo fooarray[] = {
{1, 2},
{4},
};
llvm-svn: 101150
|
| |
|
|
|
|
| |
initializes a virtual base or not.
llvm-svn: 101004
|
| |
|
|
| |
llvm-svn: 100952
|
| |
|
|
| |
llvm-svn: 100951
|
| |
|
|
|
|
| |
the offset for a virtual base.
llvm-svn: 100940
|
| |
|
|
|
|
| |
for objc.
llvm-svn: 100865
|
| |
|
|
|
|
| |
of c-style arguments. Completes radar 7445205.
llvm-svn: 100813
|
| |
|
|
|
|
| |
parameters list for encoding.
llvm-svn: 100788
|
| |
|
|
| |
llvm-svn: 100753
|
| |
|
|
| |
llvm-svn: 100746
|
| |
|
|
|
|
|
| |
parameter, explicitly ask the user to give it arguments. We used to
complain that it wasn't a type and expect the user to figure it out.
llvm-svn: 100729
|
| |
|
|
|
|
|
|
| |
contain assignments
or similar side-effects.
llvm-svn: 100676
|
| |
|
|
|
|
|
|
| |
that protected members be used on objects of types which derive from the
naming class of the lookup. My first N attempts at this were poorly-founded,
largely because the standard is very badly worded here.
llvm-svn: 100562
|
| |
|
|
|
|
| |
block pointer type comparison.
llvm-svn: 100533
|
| |
|
|
| |
llvm-svn: 100484
|
| |
|
|
|
|
|
| |
of file locations for anonymous tag types (e.g., "enum <anonymous at
t.h:15:6>"), which can get rather long.
llvm-svn: 100470
|
| |
|
|
| |
llvm-svn: 100449
|
| |
|
|
| |
llvm-svn: 100227
|
| |
|
|
|
|
|
|
| |
invariants on the provided DeclContext.
- Doug, please see the FIXME in DeclObjC.cpp -- I am not sure what the right fix is.
llvm-svn: 100213
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
take'id' or return 'id' in their type. Fixes radar 7814131.
llvm-svn: 100129
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
(such as "class T::foo") from an ElaboratedType of a TypenameType to a
DependentNameType, which more accurately models the underlying
concept.
Improve template instantiation for DependentNameType nodes that
represent nested-name-specifiers, by performing tag name lookup and
checking the resulting tag appropriately. Fixes PR5681.
There is still much testing and cleanup to do in this area.
llvm-svn: 100054
|
| |
|
|
|
|
|
| |
this was parsed as a typename-specifier, elaborated-type-specifier
(including the kind), or just a dependent qualified type name.
llvm-svn: 100039
|
| |
|
|
| |
llvm-svn: 100027
|
| |
|
|
|
|
| |
refactoring work in this area.
llvm-svn: 100019
|
| |
|
|
| |
llvm-svn: 99979
|
| |
|
|
|
|
|
| |
null checks, and make sure we elide null checks when accessing base class
members.
llvm-svn: 99963
|
| |
|
|
|
|
| |
Fixes PR3782.
llvm-svn: 99940
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
the underlying/instantiated decl) through a lot of API, including "intermediate"
MemberExprs required for (e.g.) template instantiation. This is necessary
because of the access semantics of member accesses to using declarations:
only the base class *containing the using decl* need be accessible from the
naming class.
This allows us to complete an access-controlled selfhost, if there are no
recent regressions.
llvm-svn: 99936
|
| |
|
|
|
|
|
|
| |
This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.
llvm-svn: 99920
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dyn_cast) invocations for C++ and Objective-C types, declarations,
expressions, and statements. The statistics will be printed when
-print-stats is provided to Clang -cc1, with results such as:
277073 clang - Number of checks for C++ declaration nodes
13311 clang - Number of checks for C++ expression nodes
18 clang - Number of checks for C++ statement nodes
174182 clang - Number of checks for C++ type nodes
92300 clang - Number of checks for Objective-C declaration nodes
9800 clang - Number of checks for Objective-C expression nodes
7 clang - Number of checks for Objective-C statement nodes
65733 clang - Number of checks for Objective-C type nodes
The statistics are only gathered when NDEBUG is not defined, since
they introduce potentially-expensive operations into very low-level
routines (isa).
llvm-svn: 99912
|
| |
|
|
|
|
| |
objective-c methods. (radar 7418262).
llvm-svn: 99903
|