| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
machine instruction loads or stores from/to a stack slot. Unlike
isLoadFromStackSlot and isStoreFromStackSlot, the instruction may be
something other than a pure load/store (e.g. it may be an arithmetic
operation with a memory operand). This helps AsmPrinter determine when
to print a spill/reload comment.
This is only a hint since we may not be able to figure this out in all
cases. As such, it should not be relied upon for correctness.
Implement for X86. Return false by default for other architectures.
llvm-svn: 87026
|
| |
|
|
| |
llvm-svn: 87024
|
| |
|
|
|
|
|
|
|
| |
and don't assume that the call doesn't throw. It would be nice if there were a
way to determine which is the callee and which is a parameter. In practice, the
architecture we care about normally only have one operand for a call instruction
(x86 and arm).
llvm-svn: 87023
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.
Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.
Update all targets to adhere to the new interfaces..
llvm-svn: 87022
|
| |
|
|
|
|
| |
StringsEqualNoCase (from StringExtras.h) to it.
llvm-svn: 87020
|
| |
|
|
|
|
|
|
| |
making it visible to clients and adding LLVM-style cast capability.
This will be used by AsmPrinter to determine when to emit spill comments
for an instruction.
llvm-svn: 87019
|
| |
|
|
| |
llvm-svn: 87015
|
| |
|
|
|
|
| |
make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes.
llvm-svn: 87014
|
| |
|
|
|
|
|
| |
to directly follow the jump table. Move the layout changes to prior to any
constant island handling.
llvm-svn: 86999
|
| |
|
|
| |
llvm-svn: 86987
|
| |
|
|
|
|
| |
quite tricky.
llvm-svn: 86986
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
running IPSCCP early, and we run functionattrs interlaced with the inliner,
we often (particularly for small or noop functions) completely propagate
all of the information about a call to its call site in IPSSCP (making a call
dead) and functionattrs is smart enough to realize that the function is
readonly (because it is interlaced with inliner).
To improve compile time and make the inliner threshold more accurate, realize
that we don't have to inline dead readonly function calls. Instead, just
delete the call. This happens all the time for C++ codes, here are some
counters from opt/llvm-ld counting the number of times calls were deleted vs
inlined on various apps:
Tramp3d opt:
5033 inline - Number of call sites deleted, not inlined
24596 inline - Number of functions inlined
llvm-ld:
667 inline - Number of functions deleted because all callers found
699 inline - Number of functions inlined
483.xalancbmk opt:
8096 inline - Number of call sites deleted, not inlined
62528 inline - Number of functions inlined
llvm-ld:
217 inline - Number of allocas merged together
2158 inline - Number of functions inlined
471.omnetpp:
331 inline - Number of call sites deleted, not inlined
8981 inline - Number of functions inlined
llvm-ld:
171 inline - Number of functions deleted because all callers found
629 inline - Number of functions inlined
Deleting a call is much faster than inlining it, and is insensitive to the
size of the callee. :)
llvm-svn: 86975
|
| |
|
|
| |
llvm-svn: 86972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.
llvm-svn: 86969
|
| |
|
|
| |
llvm-svn: 86965
|
| |
|
|
| |
llvm-svn: 86964
|
| |
|
|
|
|
|
| |
which implements GCC PR18046. This also gets us 360 more
jump threads on 176.gcc.
llvm-svn: 86953
|
| |
|
|
| |
llvm-svn: 86952
|
| |
|
|
|
|
|
|
| |
making the new LVI stuff smart enough to subsume some special
cases in the old code. Disable them when LVI is around, the
testcase still passes.
llvm-svn: 86951
|
| |
|
|
|
|
|
| |
constant constraints. Improve the LVI lattice to include inequality
constraints.
llvm-svn: 86950
|
| |
|
|
|
|
| |
MachineBasicBlock so other passes can utilize it.
llvm-svn: 86947
|
| |
|
|
|
|
| |
way to do it forthcoming anyway.
llvm-svn: 86945
|
| |
|
|
|
|
|
|
| |
otherwise create a stub.
Add a test to make sure we don't create extraneous stubs.
llvm-svn: 86941
|
| |
|
|
| |
llvm-svn: 86933
|
| |
|
|
| |
llvm-svn: 86928
|
| |
|
|
| |
llvm-svn: 86926
|
| |
|
|
|
|
| |
allows us to handle the test10 testcase.
llvm-svn: 86924
|
| |
|
|
| |
llvm-svn: 86923
|
| |
|
|
| |
llvm-svn: 86920
|
| |
|
|
|
|
| |
miscompilations casued by PreAllocSplitting.
llvm-svn: 86919
|
| |
|
|
|
|
| |
the basic.ll testcase.
llvm-svn: 86918
|
| |
|
|
| |
llvm-svn: 86917
|
| |
|
|
|
|
|
| |
This allows StringRef to skip controversial if(str) check in constructor.
Buildbots, wait for corresponding clang and llvm-gcc FE check-ins!
llvm-svn: 86914
|
| |
|
|
|
|
| |
can be made to fall through into the other.
llvm-svn: 86909
|
| |
|
|
|
|
| |
"nounwind" attribute.
llvm-svn: 86897
|
| |
|
|
| |
llvm-svn: 86895
|
| |
|
|
|
|
| |
strswitch.
llvm-svn: 86889
|
| |
|
|
|
|
| |
uses LVI info when -enable-jump-threading-lvi is passed.
llvm-svn: 86886
|
| |
|
|
|
|
|
| |
instead of typedefs for std::pair. This simplifies the type of
SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator>
llvm-svn: 86885
|
| |
|
|
|
|
| |
in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.
llvm-svn: 86876
|
| |
|
|
| |
llvm-svn: 86875
|
| |
|
|
|
|
| |
debug info.
llvm-svn: 86874
|
| |
|
|
| |
llvm-svn: 86873
|
| |
|
|
|
|
|
|
|
|
|
| |
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.
llvm-svn: 86871
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Edges are split before any phis are eliminated, so the code is SSA.
- Create a proper IR BasicBlock for the split edges.
- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.
This feature still causes some miscompilations.
llvm-svn: 86867
|
| |
|
|
|
|
| |
folded into target icmp instructions.
llvm-svn: 86858
|
| |
|
|
| |
llvm-svn: 86857
|
| |
|
|
| |
llvm-svn: 86856
|
| |
|
|
| |
llvm-svn: 86855
|
| |
|
|
|
|
| |
the numbers mean.
llvm-svn: 86854
|