| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 92260
|
| |
|
|
|
|
|
|
| |
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.
llvm-svn: 92259
|
| |
|
|
| |
llvm-svn: 92256
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().
This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.
This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.
This introduces a number of fixme's which I'll follow up on.
llvm-svn: 92235
|
| |
|
|
|
|
|
| |
doesn't exist already, eliminate registerMDKind. Tidy up a bunch
of random stuff.
llvm-svn: 92225
|
| |
|
|
|
|
| |
no functionality change.
llvm-svn: 91848
|
| |
|
|
|
|
| |
the underlying PHI node insertion issue in SSAUpdate is fixed.
llvm-svn: 91821
|
| |
|
|
|
|
|
|
|
|
| |
'GetValueInMiddleOfBlock' case, instead of inserting
duplicates.
A similar fix is almost certainly needed by the machine-level
SSAUpdate implementation.
llvm-svn: 91820
|
| |
|
|
|
|
|
|
| |
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
|
| |
|
|
| |
llvm-svn: 91645
|
| |
|
|
|
|
|
|
| |
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.
llvm-svn: 91421
|
| |
|
|
|
|
| |
about the potential use of these uninitialized members under certain conditions.
llvm-svn: 91239
|
| |
|
|
| |
llvm-svn: 90836
|
| |
|
|
|
|
| |
a compile time perf optimization to avoid a load.
llvm-svn: 90507
|
| |
|
|
|
|
| |
Patch by Howard Hinnant!
llvm-svn: 90365
|
| |
|
|
| |
llvm-svn: 90324
|
| |
|
|
| |
llvm-svn: 89645
|
| |
|
|
|
|
|
|
|
|
|
|
| |
it may be used in contexts where preheader insertion may have failed due
to an indirectbr.
Make LoopSimplify's LoopSimplify::SeparateNestedLoop properly fail in
the case that it would require splitting an indirectbr edge.
These fix PR5502.
llvm-svn: 89484
|
| |
|
|
|
|
| |
introduce these, and it's beneficial to later passes to clean them up.
llvm-svn: 89298
|
| |
|
|
| |
llvm-svn: 89297
|
| |
|
|
| |
llvm-svn: 86933
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
llvm.invariant.start to be used without necessarily being paired with a call
to llvm.invariant.end. If you run the entire optimization pipeline then such
calls are in fact deleted (adce does it), but that's actually a good thing since
we probably do want them to be zapped late in the game. There should really be
an integration test that checks that the llvm.invariant.start call lasts long
enough that all passes that do interesting things with it get to do their stuff
before it is deleted. But since no passes do anything interesting with it yet
this will have to wait for later.
llvm-svn: 86840
|
| |
|
|
| |
llvm-svn: 86748
|
| |
|
|
|
|
| |
into libanalysis and transformutils.
llvm-svn: 86735
|
| |
|
|
| |
llvm-svn: 86666
|
| |
|
|
|
|
| |
individual operands instead of taking a temporary array
llvm-svn: 86619
|
| |
|
|
| |
llvm-svn: 86575
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the loop. This is needed because with indirectbr it may not be possible
for LoopSimplify to guarantee that all loop exit predecessors are
inside the loop. This fixes PR5437.
LCCSA no longer actually requires LoopSimplify form, but for now it
must still have the dependency because the PassManager doesn't know
how to schedule LoopSimplify otherwise.
llvm-svn: 86569
|
| |
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
| |
|
|
|
|
|
| |
on loops having dedicated exits, which LoopSimplify can no longer always
guarantee.
llvm-svn: 86181
|
| |
|
|
|
|
|
|
|
| |
unsplittable critical edges, which means the introduction of
loops which cannot be transformed to LoopSimplify form. Fix
LoopSimplify to avoid transforming such loops into invalid
code.
llvm-svn: 86176
|
| |
|
|
| |
llvm-svn: 86164
|
| |
|
|
| |
llvm-svn: 86160
|
| |
|
|
|
|
|
|
|
|
|
|
| |
makes several optimization passes abort in cases where they're currently
silently miscompiling code.
Remove the indirectbr assertion from SplitEdge. Indirectbr is only
a problem for critical edges, and SplitEdge defers to SplitCriticalEdge
to handle those, and SplitCriticalEdge has its own assertion for
indirectbr.
llvm-svn: 86147
|
| |
|
|
| |
llvm-svn: 85863
|
| |
|
|
| |
llvm-svn: 85859
|
| |
|
|
| |
llvm-svn: 85786
|
| |
|
|
| |
llvm-svn: 85725
|
| |
|
|
|
|
|
|
|
| |
when BB2 has its address taken. Since it ends up doing BB2->rauw(BB1),
this can cause the address of the entry block to be taken. Since it is
generally undesirable to nuke blocks whose address is taken, even when
we can, just unconditionally stop this xform.
llvm-svn: 85708
|
| |
|
|
| |
llvm-svn: 85704
|
| |
|
|
|
|
|
| |
indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it
for simplicity.
llvm-svn: 85699
|
| |
|
|
|
|
| |
Fix CodeGenPrepare to not try to split edges from indirectbr.
llvm-svn: 85690
|
| |
|
|
|
|
| |
it abort on IndirectBrInst as describe in the comment.
llvm-svn: 85688
|
| |
|
|
| |
llvm-svn: 85680
|
| |
|
|
|
|
|
| |
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
|
| |
|
|
| |
llvm-svn: 85668
|
| |
|
|
|
|
|
| |
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
|
| |
|
|
| |
llvm-svn: 85662
|
| |
|
|
| |
llvm-svn: 85660
|
| |
|
|
|
|
|
| |
LoopUnrollPass.cpp, for consistency with other passes which are
similarly split.
llvm-svn: 85659
|