| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
VisualStudio happy. Also had to undefine setjmp because of #include <csetjmp> turning setjmp into _setjmp in VisualStudio.
llvm-svn: 49743
|
| |
|
|
| |
llvm-svn: 49657
|
| |
|
|
|
|
| |
which is significantly more efficient.
llvm-svn: 49614
|
| |
|
|
| |
llvm-svn: 49367
|
| |
|
|
|
|
|
|
|
| |
needs to be fixed here - a previous commit made sure
that intrinsics always get the right attributes.
So remove no-longer needed code, and while there use
Intrinsic::getDeclaration rather than getOrInsertFunction.
llvm-svn: 49337
|
| |
|
|
|
|
|
| |
intrinsics. Fix up the argument type (should
be i8*, was an array*).
llvm-svn: 49336
|
| |
|
|
|
|
|
|
| |
nounwind. When such calls are inlined into something
else that is invoked, they were getting changed to invokes,
which is badness.
llvm-svn: 49299
|
| |
|
|
|
|
|
|
| |
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277
|
| |
|
|
|
|
|
| |
2. Do not use # of basic blocks as part of the cost computation since it doesn't really figure into function size.
3. More aggressively inline function with vector code.
llvm-svn: 49061
|
| |
|
|
| |
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
|