| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 49046
|
| |
|
|
|
|
|
|
|
|
|
| |
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.
llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.
llvm-svn: 49006
|
| |
|
|
|
|
|
|
| |
each BB costs 20 and each instruction costs 5, 200 means a 4 BB function + 24 instructions (actually less because caller's size also contributes to it).
Furthermore, double the limit when more than 10% of the callee instructions are vector instructions. Multimedia kernels tend to love inlining.
llvm-svn: 48725
|
| |
|
|
| |
llvm-svn: 48708
|
| |
|
|
| |
llvm-svn: 48573
|
| |
|
|
|
|
| |
successors. This makes it support nounwind.
llvm-svn: 48320
|
| |
|
|
|
|
|
|
| |
before trying to merge the block into its predecessors.
This allows two-entry-phi-return.ll to be simplified
into a single basic block.
llvm-svn: 48252
|
| |
|
|
|
|
| |
has single return value.
llvm-svn: 48162
|
| |
|
|
| |
llvm-svn: 48161
|
| |
|
|
| |
llvm-svn: 48160
|
| |
|
|
| |
llvm-svn: 48123
|
| |
|
|
|
|
|
| |
Secondly, we have to check whether the branch is actually pointing to the block
with the unwind in it. We could have gotten here because of the unwind_to alone.
llvm-svn: 48099
|
| |
|
|
|
|
| |
at all.
llvm-svn: 48096
|
| |
|
|
|
|
| |
and also update the cloning interface's major user, the loop optimizations.
llvm-svn: 48088
|
| |
|
|
| |
llvm-svn: 48086
|
| |
|
|
|
|
|
| |
Add the ability to remove just one instance of a BB from a phi node. This fixes
the compile error in the tree now.
llvm-svn: 48085
|
| |
|
|
| |
llvm-svn: 48020
|
| |
|
|
| |
llvm-svn: 47965
|
| |
|
|
| |
llvm-svn: 47924
|
| |
|
|
| |
llvm-svn: 47909
|
| |
|
|
|
|
| |
Update test to use multiple return value directly, instead of relying on -sretpromotion.
llvm-svn: 47907
|
| |
|
|
| |
llvm-svn: 47904
|
| |
|
|
| |
llvm-svn: 47375
|
| |
|
|
| |
llvm-svn: 47371
|
| |
|
|
|
|
| |
which is long dead by now.
llvm-svn: 47323
|
| |
|
|
|
|
| |
this speeds it up 2.3% on eon.
llvm-svn: 47261
|
| |
|
|
| |
llvm-svn: 47129
|
| |
|
|
|
|
|
|
| |
check more intelligent. This speeds up mem2reg from 5.29s to
0.79s on a synthetic testcase with tons of predecessors and
phi nodes.
llvm-svn: 46767
|
| |
|
|
|
|
| |
longer allowed to write through byval arguments.
llvm-svn: 46416
|
| |
|
|
|
|
| |
when inlining a readonly function.
llvm-svn: 46393
|
| |
|
|
| |
llvm-svn: 46369
|
| |
|
|
|
|
|
| |
inlining a function if we know that the function does not write
to *any* memory. This implements test/Transforms/Inline/byval2.ll
llvm-svn: 45912
|
| |
|
|
|
|
| |
copy of it in case the callee modifies the struct.
llvm-svn: 45853
|
| |
|
|
|
|
|
| |
could theoretically introduce a trap, but is also a performance issue.
This speeds up ptrdist/ks by 8%.
llvm-svn: 45533
|
| |
|
|
| |
llvm-svn: 45418
|
| |
|
|
| |
llvm-svn: 45415
|
| |
|
|
|
|
| |
have potential side-effects.
llvm-svn: 45392
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
define void @f() {
...
call i32 @g()
...
}
define void @g() {
...
}
The hazards are:
- @f and @g have GC, but they differ GC. Inlining is invalid. This
may never occur.
- @f has no GC, but @g does. g's GC must be propagated to @f.
The other scenarios are safe:
- @f and @g have the same GC.
- @f and @g have no GC.
- @g has no GC.
This patch adds inliner checks for the former two scenarios.
llvm-svn: 45351
|
| |
|
|
|
|
|
| |
not merge current bb and succ even if bb's terminator is
unconditional branch to succ.
llvm-svn: 45305
|
| |
|
|
|
|
|
|
|
| |
calls 'nounwind'. It is important for correct C++
exception handling that nounwind markings do not get
lost, so this transformation is actually needed for
correctness.
llvm-svn: 45218
|
| |
|
|
|
|
| |
doesNotThrow.
llvm-svn: 45160
|
| |
|
|
|
|
|
|
| |
how to lower them (with no attempt made to be
efficient, since they should only occur for
unoptimized code).
llvm-svn: 45108
|
| |
|
|
| |
llvm-svn: 45101
|
| |
|
|
|
|
| |
of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.
llvm-svn: 45082
|
| |
|
|
|
|
| |
changed not to reject invoke of inline asm.
llvm-svn: 45077
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
calls. Remove special casing of inline asm from the
inliner. There is a potential problem: the verifier
rejects invokes of inline asm (not sure why). If an
asm call is not marked "nounwind" in some .ll, and
instcombine is not run, but the inliner is run, then
an illegal module will be created. This is bad but
I'm not sure what the best approach is. I'm tempted
to remove the check in the verifier...
llvm-svn: 45073
|
| |
|
|
|
|
|
|
| |
Reimplement the xform in Analysis/ConstantFolding.cpp where we can use
targetdata to validate that it is safe. While I'm in there, fix some const
correctness issues and generalize the interface to the "operand folder".
llvm-svn: 44817
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
methods are new to Function:
bool hasCollector() const;
const std::string &getCollector() const;
void setCollector(const std::string &);
void clearCollector();
The assembly representation is as such:
define void @f() gc "shadow-stack" { ...
The implementation uses an on-the-side table to map Functions to
collector names, such that there is no overhead. A StringPool is
further used to unique collector names, which are extremely
likely to be unique per process.
llvm-svn: 44769
|
| |
|
|
|
|
|
|
|
| |
throw exceptions", just mark intrinsics with the nounwind
attribute. Likewise, mark intrinsics as readnone/readonly
and get rid of special aliasing logic (which didn't use
anything more than this anyway).
llvm-svn: 44544
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the function type, instead they belong to functions
and function calls. This is an updated and slightly
corrected version of Reid Spencer's original patch.
The only known problem is that auto-upgrading of
bitcode files doesn't seem to work properly (see
test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully
a bitcode guru (who might that be? :) ) will fix it.
llvm-svn: 44359
|