| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
AST during the instantiation. Fixes PR7417!
llvm-svn: 107690
|
| |
|
|
|
|
| |
into IRBuilder.
llvm-svn: 107687
|
| |
|
|
|
|
|
| |
TagDecl subclasses when out-of-line template declaration information
is available, from Peter Collingbourne!
llvm-svn: 107686
|
| |
|
|
|
|
| |
template specialization, from Peter Collingbourne.
llvm-svn: 107682
|
| |
|
|
|
|
|
|
| |
declarations when implicitly declaring the default constructor, copy
constructor, destructor, and copy-assignment operators of a
class. Argiris fixed the underlying problem in r107596.
llvm-svn: 107681
|
| |
|
|
|
|
|
| |
uninitialized (which doesn't seem to be the case), by giving
them arbitrary initial values.
llvm-svn: 107679
|
| |
|
|
|
|
|
|
| |
block before deleting it. Fixes PR7575.
This really just a short-term fix before implementing lazy cleanups.
llvm-svn: 107676
|
| |
|
|
|
|
| |
elements (macros, enum constants, etc).
llvm-svn: 107675
|
| |
|
|
| |
llvm-svn: 107665
|
| |
|
|
| |
llvm-svn: 107664
|
| |
|
|
|
|
| |
still initializing.
llvm-svn: 107663
|
| |
|
|
| |
llvm-svn: 107662
|
| |
|
|
| |
llvm-svn: 107645
|
| |
|
|
|
|
| |
Add an API to get an Entity associated with a name in the global namespace.
llvm-svn: 107642
|
| |
|
|
|
|
| |
as nounwind in -fno-exceptions. Fixes rdar://problem/8090834.
llvm-svn: 107639
|
| |
|
|
|
|
| |
expression equals a certain value, use SValuator::EvalEQ and GRState::Assume to see if it can, must, or must not equal that value.
llvm-svn: 107638
|
| |
|
|
|
|
| |
argument was non-NULL, and we report where the null assumption came from (like AttrNonNullChecker already did).
llvm-svn: 107633
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
self-host. Hopefully these results hold up on different platforms.
I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
Reimplement how clang generates IR for exceptions. Instead of creating new
invoke destinations which sequentially chain to the previous destination,
push a more semantic representation of *why* we need the cleanup/catch/filter
behavior, then collect that information into a single landing pad upon request.
Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
control flow) are generated, since it's actually fairly closely tied in with
the former. Remove the need to track which cleanup scope a block is associated
with.
Document a lot of previously poorly-understood (by me, at least) behavior.
The new framework implements the Horrible Hack (tm), which requires every
landing pad to have a catch-all so that inlining will work. Clang no longer
requires the Horrible Hack just to make exceptions flow correctly within
a function, however. The HH is an unfortunate requirement of LLVM's EH IR.
llvm-svn: 107631
|
| |
|
|
| |
llvm-svn: 107630
|
| |
|
|
|
|
|
| |
coerce cases (e.g. {double,int}) which avoids fastisel
bailing out at -O0.
llvm-svn: 107628
|
| |
|
|
|
|
|
|
|
| |
alloca for an argument. Make sure the argument gets the proper
decl alignment, which may be different than the type alignment.
This fixes PR7567
llvm-svn: 107627
|
| |
|
|
| |
llvm-svn: 107626
|
| |
|
|
| |
llvm-svn: 107624
|
| |
|
|
|
|
| |
wasn't handling array padding elements right.
llvm-svn: 107621
|
| |
|
|
|
|
| |
Everyone knows that no bugs are ever possible with bitfields.
llvm-svn: 107620
|
| |
|
|
|
|
| |
We can now use a PCH'ed <map>.
llvm-svn: 107617
|
| |
|
|
| |
llvm-svn: 107616
|
| |
|
|
|
|
| |
unimplemented. A VLA region's sizeof value matches its extent.
llvm-svn: 107611
|
| |
|
|
| |
llvm-svn: 107607
|
| |
|
|
|
|
|
| |
class is available in the same translation unit when it's needed. So we make
all of them invalid Entity.
llvm-svn: 107606
|
| |
|
|
| |
llvm-svn: 107605
|
| |
|
|
| |
llvm-svn: 107604
|
| |
|
|
| |
llvm-svn: 107603
|
| |
|
|
|
|
|
| |
Some of the invariant checks for creating Record/Enum types don't hold true during PCH reading.
Introduce more suitable ASTContext::getRecordType() and getEnumType().
llvm-svn: 107598
|
| |
|
|
|
|
| |
instantiated-from information.
llvm-svn: 107597
|
| |
|
|
|
|
|
|
|
|
| |
Before this commit, visible decls added before deserialization were ignored.
This was not an issue since name lookup (that usually comes before the addition) forces deserialization
but it is an issue for lazily declared class implicit members.
We can use a PCH'ed <string> now.
llvm-svn: 107596
|
| |
|
|
|
|
|
|
|
|
| |
by PCHReader.
Currently, adding it to visible decls of a PCH'ed translation unit has no effect because
adding visible decls before deserialization has no effect (the decls won't be visible).
This will be fixed in a future commit; then it will force deserialization of visible decls, so avoid pointlessly installing it.
llvm-svn: 107595
|
| |
|
|
| |
llvm-svn: 107594
|
| |
|
|
| |
llvm-svn: 107593
|
| |
|
|
|
|
|
|
|
|
| |
regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.
Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.
The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.
llvm-svn: 107577
|
| |
|
|
| |
llvm-svn: 107573
|
| |
|
|
|
|
|
|
|
|
| |
ObjC pointers were easy enough (as far as the ABI is concerned, they're
just pointers to structs), but I had to invent a new mangling for block
pointers. This is particularly worrying with the Microsoft ABI, because
it is a vendor-specific ABI; extending it could come back to bite us
later when MS extends it on their own (and you know they will).
llvm-svn: 107572
|
| |
|
|
|
|
| |
point.
llvm-svn: 107570
|
| |
|
|
| |
llvm-svn: 107568
|
| |
|
|
| |
llvm-svn: 107567
|
| |
|
|
|
|
|
|
| |
initializing so avoid
the invariant checks at NamespaceDecl::setAnonymousNamespace().
llvm-svn: 107566
|
| |
|
|
| |
llvm-svn: 107564
|
| |
|
|
|
|
|
|
|
|
|
| |
Only actual functions get mangled correctly; I don't know how to fix it for
function pointers yet. Thanks to John McCall for the hint.
Also, mangle anonymous tag types. I don't have a suitable testcase yet; I have
a feeling that that's going to need support for static locals, and I haven't
figured out exactly how MSVC's scheme for mangling those works.
llvm-svn: 107561
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declarations for implicit default constructors, copy constructors,
copy assignment operators, and destructors. On a "simple" translation
unit that includes a bunch of C++ standard library headers, we
generate relatively few of these implicit declarations now:
4/159 implicit default constructors created
18/236 implicit copy constructors created
70/241 implicit copy assignment operators created
0/173 implicit destructors created
And, on this translation unit, this optimization doesn't really
provide any benefit. I'll do some more performance measurements soon,
but this completes the implementation work for <rdar://problem/8151045>.
llvm-svn: 107551
|
| |
|
|
| |
llvm-svn: 107543
|