| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
typedefs. As a drive-by, teach hit how to build VLA types, since those
will eventually be supported in C++.
llvm-svn: 103958
|
| |
|
|
|
|
| |
Fixes PR7153
llvm-svn: 103954
|
| |
|
|
|
|
|
| |
to mark its destructors as referenced which may cause
a crash. Fixes radar 7896920
llvm-svn: 103953
|
| |
|
|
|
|
|
| |
functions defined inside a class template. Fixes PR6952, the last
Boost.Units failure.
llvm-svn: 103952
|
| |
|
|
|
|
|
| |
class template conflicts with an existing (non-template)
definition. This is another part of PR6952.
llvm-svn: 103948
|
| |
|
|
| |
llvm-svn: 103945
|
| |
|
|
|
|
|
|
| |
- Check bases as part of isEmptyRecord().
- C++ record fields are never empty in the Itanium ABI.
llvm-svn: 103944
|
| |
|
|
|
|
|
|
| |
within class templates be instantiated along with each class template
specialization, even if the functions are not used. Do so, as a baby
step toward PR6952.
llvm-svn: 103943
|
| |
|
|
|
|
|
| |
function does not return. Thanks to Eli for pointing out this corner
case.
llvm-svn: 103941
|
| |
|
|
|
|
|
|
| |
link failures when C/ObjC code uses __attribute__((cleanup())) (previously this was inserting references to two libstc++ symbols; the personality function and the __terminate() function).
This is still probably wrong for Objective-C++ and adds a couple of lines in CGException that should probably be in the CGObjCRuntime subclass. The personality function is now only looked up in one place in CGException though, so this should be easier to fix in the future.
llvm-svn: 103938
|
| |
|
|
|
|
|
| |
definitions.
llvm-svn: 103932
|
| |
|
|
|
|
|
|
| |
a missing */ since we truncated the file.
This fixes rdar://7948776
llvm-svn: 103913
|
| |
|
|
|
|
| |
This aligns with how gcc compiler does things.
llvm-svn: 103912
|
| |
|
|
|
|
| |
type is a typedef to an array type.
llvm-svn: 103909
|
| |
|
|
|
|
|
| |
of an array type, use the outermost array bound as the number of
elements to allocate. Fixes PR7147.
llvm-svn: 103908
|
| |
|
|
|
|
| |
compute a CFG for a function.
llvm-svn: 103905
|
| |
|
|
|
|
|
|
| |
initializer, don't fold paramters. Their initializers are just default
arguments which can be overridden. This fixes some spectacular regressions due
to more things making it into the constant folding.
llvm-svn: 103904
|
| |
|
|
|
|
| |
passed to va_start, it doesn't actually pass it.
llvm-svn: 103899
|
| |
|
|
|
|
| |
entirely sure what this does, to be honest.
llvm-svn: 103895
|
| |
|
|
|
|
|
| |
can probably do this for us, but it's actually somewhat nicer to write it
out here.
llvm-svn: 103893
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures, along with the regressions that r103880
caused.
The crucial difference between this and r103880 is that we now follow
LLVM's little dance with the llvm.eh.exception and llvm.eh.selector
calls, then use _Unwind_Resume_or_Rethrow to rethrow.
llvm-svn: 103892
|
| |
|
|
|
|
| |
because it's causing strange linker errors. Unfixes PR7144.
llvm-svn: 103890
|
| |
|
|
| |
llvm-svn: 103889
|
| |
|
|
|
|
| |
in Objective-c++ mode. Fixes radar 7986354.
llvm-svn: 103887
|
| |
|
|
|
|
|
|
| |
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures.
llvm-svn: 103880
|
| |
|
|
| |
llvm-svn: 103875
|
| |
|
|
| |
llvm-svn: 103873
|
| |
|
|
|
|
|
| |
destroy the variable along the exceptional edge; it's only during
normal execution that we avoid destroying this variable.
llvm-svn: 103872
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.
Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.
By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.
llvm-svn: 103870
|
| |
|
|
|
|
|
|
|
| |
return statements. We perform NRVO only when all of the return
statements in the function return the same variable. Fixes some link
failures in Boost.Interprocess (which is relying on NRVO), and
probably improves performance for some C++ applications.
llvm-svn: 103867
|
| |
|
|
|
|
|
|
|
|
|
|
| |
return value optimization. Sema marks return statements with their
NRVO candidates (which may or may not end up using the NRVO), then, at
the end of a function body, computes and marks those variables that
can be allocated into the return slot.
I've checked this locally with some debugging statements (not
committed), but there won't be any tests until CodeGen comes along.
llvm-svn: 103865
|
| |
|
|
|
|
|
| |
implicit conversions where needed. This fixes an error reported
on cfe-dev, not really worth a testcase though.
llvm-svn: 103864
|
| |
|
|
|
|
|
|
|
|
| |
"return" statement and mark the corresponding CXXConstructExpr as
elidable. Teach CodeGen that eliding a temporary is different from
eliding an object construction.
This is just a baby step toward NRVO.
llvm-svn: 103849
|
| |
|
|
| |
llvm-svn: 103843
|
| |
|
|
| |
llvm-svn: 103842
|
| |
|
|
|
|
| |
assembler defaults to on.
llvm-svn: 103825
|
| |
|
|
|
|
| |
Radar 7923673.
llvm-svn: 103812
|
| |
|
|
|
|
| |
part (or possibly all) of PR7132.
llvm-svn: 103810
|
| |
|
|
|
|
|
|
| |
throw, it should use invoke when needed. The fixes the
Boost.Statechrt failures that motivated PR7132, but there are a few
side issues to tackle as well.
llvm-svn: 103803
|
| |
|
|
| |
llvm-svn: 103793
|
| |
|
|
| |
llvm-svn: 103792
|
| |
|
|
|
|
|
|
|
| |
user directive is needed to force a property implementation.
It is decided based on those propeties which are declared in
the class (or in its protocols) but not those which must be
default implemented by one of its super classes. Implements radar 7923851.
llvm-svn: 103787
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declarator is incorrect. Not being a typename causes the parser to
dive down into the K&R identifier list handling stuff, which is almost
never the right thing to do.
Before:
r.c:3:17: error: expected ')'
void bar(intptr y);
^
r.c:3:9: note: to match this '('
void bar(intptr y);
^
r.c:3:10: error: a parameter list without types is only allowed in a function definition
void bar(intptr y);
^
After:
r.c:3:10: error: unknown type name 'intptr'; did you mean 'intptr_t'?
void bar(intptr y);
^~~~~~
intptr_t
r.c:1:13: note: 'intptr_t' declared here
typedef int intptr_t;
^
This fixes rdar://7980651 - poor recovery for bad type in the first arg of a C function
llvm-svn: 103783
|
| |
|
|
|
|
|
| |
identifier in the identifier list consumed before it is called.
No functionality change.
llvm-svn: 103781
|
| |
|
|
| |
llvm-svn: 103780
|
| |
|
|
|
|
| |
Providing linkage name for function static variable confuses gdb, so don't do that.
llvm-svn: 103779
|
| |
|
|
|
|
| |
types.", it is breaking Clang bootstrap.
llvm-svn: 103775
|
| |
|
|
|
|
| |
correctly.
llvm-svn: 103771
|
| |
|
|
| |
llvm-svn: 103770
|
| |
|
|
| |
llvm-svn: 103767
|