| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
emitted the increment expression. Fixes PR7189.
If someone knows how to write a useful test for this, I'd be grateful.
llvm-svn: 104335
|
| |
|
|
| |
llvm-svn: 104332
|
| |
|
|
|
|
|
|
| |
not make copies non-POD arguments or arguments passed by reference:
just copy the pointers directly. This eliminates another source of the
dreaded memcpy-of-non-PODs. Fixes PR7188.
llvm-svn: 104327
|
| |
|
|
| |
llvm-svn: 104319
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Factor its implementation to ease the addition of these custom edges to
traverse. With this patch we get initializer expressions, block bodies, type
source info, and function argument, result, and exception types. There are
probably still some more missed edges.
While we're here, clean up and flesh out a bunch of comments.
Patch by Zhanyong Wan; I've done a cursory review, but further review
appreciated. This is fast becoming one of the most important public APIs to the
AST.
llvm-svn: 104315
|
| |
|
|
| |
llvm-svn: 104314
|
| |
|
|
|
|
|
|
|
|
| |
'self' variable arising from uses of the 'super' keyword. Also reorganize
some code so that BlockInfo (now CGBlockInfo) can be opaque outside of
CGBlocks.cpp.
Fixes rdar://problem/8010633.
llvm-svn: 104312
|
| |
|
|
|
|
|
| |
class initialization, drill down through an arbitrary number of anonymous
records.
llvm-svn: 104310
|
| |
|
|
|
|
| |
to the associated object declaration.
llvm-svn: 104309
|
| |
|
|
|
|
|
|
|
| |
sure that the anonymous struct/union record declaration gets
instantiated before the variable declaration, and that it and its
fields (recursively) get entries in the local instantiation map. Fixes
PR7088.
llvm-svn: 104305
|
| |
|
|
|
|
| |
-integrated-as and -no-integrated-as options.
llvm-svn: 104304
|
| |
|
|
| |
llvm-svn: 104301
|
| |
|
|
| |
llvm-svn: 104299
|
| |
|
|
|
|
| |
thanks to doug for pointing this out!
llvm-svn: 104297
|
| |
|
|
|
|
| |
classes whose base class have GC'able object pointers.
llvm-svn: 104296
|
| |
|
|
|
|
|
|
|
| |
matching G++'s behavior.
Warn when -pedantic or -Wc++-hex-floats is passed, and
don't warn if -pedantic -Wno-c++-hex-floats are both passed.
llvm-svn: 104295
|
| |
|
|
|
|
|
|
| |
recursively, e.g. so that members of anonymous unions inside anonymous structs
still get initialized. Also generate default constructor calls for anonymous
struct members when necessary.
llvm-svn: 104292
|
| |
|
|
|
|
| |
<rdar://problem/7971948>.
llvm-svn: 104291
|
| |
|
|
|
|
|
|
|
| |
capture failures when we try to initialize an incomplete
type. Previously, we would (ab)use FK_ConversionFailed, then
occasionally dereference a null pointer when trying to diagnose the
failure. Fixes <rdar://problem/7959007>.
llvm-svn: 104286
|
| |
|
|
|
|
| |
(or -save-temps), when the integrated assembler is enabled.
llvm-svn: 104282
|
| |
|
|
|
|
| |
in Objective-C++ mode.
llvm-svn: 104281
|
| |
|
|
| |
llvm-svn: 104280
|
| |
|
|
|
|
|
| |
class for UnresolvedLookupExprs, even when occuring on template
names" along with a fix for an Objective-C++ crasher it introduced.
llvm-svn: 104277
|
| |
|
|
| |
llvm-svn: 104253
|
| |
|
|
|
|
| |
Also, fix output defaulting to match llvm-mc.
llvm-svn: 104246
|
| |
|
|
|
|
| |
approximately the same interface as 'llvm-mc'.
llvm-svn: 104239
|
| |
|
|
| |
llvm-svn: 104237
|
| |
|
|
|
|
| |
be turned into a setter call (fixes radar 8008649).
llvm-svn: 104235
|
| |
|
|
| |
llvm-svn: 104230
|
| |
|
|
| |
llvm-svn: 104229
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
particular issue was the cause of the Boost.Interprocess failures, and
in general will lead to horrendous, hard-to-diagnose miscompiles. The
assertion itself has survives self-host and a full Boost build, so we
are close to eradicating this problem in C++.
Note that the assertion is *not* turned on for Objective-C++, where we
still have problems with introducing memcpy's of non-POD class
types. That part of the assertion will go away as soon as we fix the
known issues in Objective-C++.
llvm-svn: 104227
|
| |
|
|
| |
llvm-svn: 104226
|
| |
|
|
|
|
| |
returning non-pointer-sized things were generating invalid IR inside @try blocks.
llvm-svn: 104222
|
| |
|
|
|
|
| |
getFullSourceRange -> getSourceRange for TypeLoc.
llvm-svn: 104220
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
subobject. Previously, we could only properly bind to a base class
subobject while extending the lifetime of the complete object (of a
derived type); for non-static data member subobjects, we could memcpy
(!) the result and bind to that, which is rather broken.
Now, we pull apart the expression that we're binding to, to figure out
which subobject we're accessing, then construct the temporary object
(adding a destruction if needed) and, finally, dig out the subobject
we actually meant to access.
This fixes yet another instance where we were memcpy'ing rather than
doing the right thing. However, note the FIXME in references.cpp:
there's more work to be done for binding to subobjects, since the AST
is incorrectly modeling some member accesses in base classes as
lvalues when they are really rvalues.
llvm-svn: 104219
|
| |
|
|
| |
llvm-svn: 104218
|
| |
|
|
|
|
| |
<rdar://problem/7995494>.
llvm-svn: 104217
|
| |
|
|
|
|
|
|
|
| |
class type (that uses a return slot), pass the return slot to the
callee directly rather than allocating new storage and trying to copy
the object. This appears to have been the cause of the remaining two
Boost.Interprocess failures.
llvm-svn: 104215
|
| |
|
|
|
|
| |
SourceManager::isFromMainFile()).
llvm-svn: 104208
|
| |
|
|
| |
llvm-svn: 104207
|
| |
|
|
|
|
|
|
|
|
| |
instance variables:
- Use isRecordType() rather than isa<RecordType>(), so that we see
through typedefs in ivar types.
- Mark the destructor as referenced
- Perform C++ access control on the destructor
llvm-svn: 104206
|
| |
|
|
|
|
| |
<rdar://problem/8007063>.
llvm-svn: 104205
|
| |
|
|
|
|
| |
(the codegen works here, too, but that's annoying to test without execution)
llvm-svn: 104202
|
| |
|
|
|
|
| |
c++'03 code and variadic support "needs work".
llvm-svn: 104195
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
smallvector
instead of new[]'d. This greatly reduces the number of new[]'s, and guess what,
they were all leaked.
This adds a fixme in this hunk:
unsigned NumPackArgs = NumFlatArgs - PackBeginIndex;
+ // FIXME: NumPackArgs shouldn't be negative here???
if (NumPackArgs)
- PackArgs = &FlatArgs[PackBeginIndex];
+ PackArgs = FlatArgs.data()+PackBeginIndex;
where test/SemaTemplate/variadic-class-template-2.cpp is accessing the vector
out of range and NumPackArgs is negative. I assume variadic template args are
completely hosed.
llvm-svn: 104194
|
| |
|
|
|
|
|
| |
be a copy constructor (since it isn't one semantically)
and fix the ownership bits it sets to be correct!
llvm-svn: 104192
|
| |
|
|
|
|
|
| |
"structure" arg lists, the first step to fixing some massive
memory leaks.
llvm-svn: 104191
|
| |
|
|
|
|
| |
suggested modification.
llvm-svn: 104188
|
| |
|
|
|
|
|
|
|
|
| |
create a temporary copy of both the "true" and "false" results. Fixes
the Boost.Interprocess failures.
Daniel did all the hard work of tracking down the issue, I get to type
up the trivial fix for this horrible miscompile.
llvm-svn: 104184
|
| |
|
|
| |
llvm-svn: 104176
|