|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | Thanks to Duncan for spotting my mistake.
llvm-svn: 98671 | 
| | 
| 
| 
| | llvm-svn: 98663 | 
| | 
| 
| 
| | llvm-svn: 98584 | 
| | 
| 
| 
| | llvm-svn: 98581 | 
| | 
| 
| 
| 
| 
| | value intrinsics are present in this bb. Use terminator to find return instructions.
llvm-svn: 98565 | 
| | 
| 
| 
| | llvm-svn: 98491 | 
| | 
| 
| 
| | llvm-svn: 98490 | 
| | 
| 
| 
| | llvm-svn: 98376 | 
| | 
| 
| 
| 
| 
| | to unify the almost identical code in CodeGenPrepare and InstCombineCalls.
llvm-svn: 98338 | 
| | 
| 
| 
| | llvm-svn: 98297 | 
| | 
| 
| 
| | llvm-svn: 98296 | 
| | 
| 
| 
| 
| 
| | __strcpy_chk -> strcpy code.
llvm-svn: 98284 | 
| | 
| 
| 
| | llvm-svn: 98274 | 
| | 
| 
| 
| | llvm-svn: 98260 | 
| | 
| 
| 
| 
| 
| 
| 
| | that in InstCombineCalls.
More call lowering needed.
llvm-svn: 98228 | 
| | 
| 
| 
| | llvm-svn: 98219 | 
| | 
| 
| 
| 
| 
| 
| | compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.
llvm-svn: 98179 | 
| | 
| 
| 
| | llvm-svn: 98122 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | The Caller cost info would be reset everytime a callee was inlined. If the
caller has lots of calls and there is some mutual recursion going on, the
caller cost info could be calculated many times.
This patch reduces inliner runtime from 240s to 0.5s for a function with 20000
small function calls.
This is a more conservative version of r98089 that doesn't break the clang
test CodeGenCXX/temp-order.cpp. That test relies on rather extreme inlining
for constant folding.
llvm-svn: 98099 | 
| | 
| 
| 
| | llvm-svn: 98094 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | The Caller cost info would be reset everytime a callee was inlined. If the
caller has lots of calls and there is some mutual recursion going on, the
caller cost info could be calculated many times.
This patch reduces inliner runtime from 240s to 0.5s for a function with 20000
small function calls.
llvm-svn: 98089 | 
| | 
| 
| 
| | llvm-svn: 98024 | 
| | 
| 
| 
| | llvm-svn: 98000 | 
| | 
| 
| 
| 
| 
| | This is a first step towards eliminating checks in Descriptor constructors.
llvm-svn: 97975 | 
| | 
| 
| 
| | llvm-svn: 97963 | 
| | 
| 
| 
| 
| 
| | This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.
llvm-svn: 97947 | 
| | 
| 
| 
| 
| 
| | before we try to optimize.
llvm-svn: 97876 | 
| | 
| 
| 
| 
| 
| 
| 
| | out the remainder of the calls that we should lower in some way and
move the tests to the new correct directory. Fix up tests that are now
optimized more than they were before by -instcombine.
llvm-svn: 97875 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Log:
Transform @llvm.objectsize to integer if the argument is a result of malloc of known size.
Modified:
   llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
   llvm/trunk/test/Transforms/InstCombine/objsize.ll
It appears to be causing swb and nightly test failures.
llvm-svn: 97866 | 
| | 
| 
| 
| 
| 
| | of known size.
llvm-svn: 97860 | 
| | 
| 
| 
| | llvm-svn: 97846 | 
| | 
| 
| 
| 
| 
| 
| 
| | can be used in more places.  Add an argument for the TargetData that
most of them need. Update for the getInt8PtrTy() change.  Should be
no functionality change.
llvm-svn: 97844 | 
| | 
| 
| 
| 
| 
| | >= memset / memcpy / memmove size.
llvm-svn: 97828 | 
| | 
| 
| 
| 
| 
| | integer.
llvm-svn: 97827 | 
| | 
| 
| 
| 
| 
| | from different addr spaces.
llvm-svn: 97813 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | parts of the cmp|cmp and cmp&cmp folding logic wasn't prepared for vectors
(unrelated to the bug but noticed while in the code) and the code was 
*definitely* not safe to use by the (cast icmp)|(cast icmp) handling logic
that I added in r95855.  Fix all this up by changing the various routines
to more consistently use IRBuilder and not pass in the I which had the wrong 
type.
llvm-svn: 97801 | 
| | 
| 
| 
| 
| 
| | compares, noticed by inspection.
llvm-svn: 97795 | 
| | 
| 
| 
| 
| 
| 
| | in a very specific use pattern embodied in the carefully
reduced testcase.
llvm-svn: 97794 | 
| | 
| 
| 
| 
| 
| | No functionality change.
llvm-svn: 97793 | 
| | 
| 
| 
| 
| 
| | the following Intrinsic::bswap code. I have no idea why it wasn't breaking stuff.
llvm-svn: 97774 | 
| | 
| 
| 
| 
| 
| | of loops.
llvm-svn: 97642 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | long test(long x) { return (x & 123124) | 3; }
Currently compiles to:
_test:
        orl     $3, %edi
        movq    %rdi, %rax
        andq    $123127, %rax
        ret
This is because instruction and DAG combiners canonicalize
  (or (and x, C), D) -> (and (or, D), (C | D))
However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.
llvm-svn: 97616 | 
| | 
| 
| 
| 
| 
| 
| | emitted after the increment. Make sure the insert position
reflects this. This fixes PR6453.
llvm-svn: 97537 | 
| | 
| 
| 
| 
| 
| | respectively.
llvm-svn: 97531 | 
| | 
| 
| 
| 
| 
| | a loop and is itself the only dependency).
llvm-svn: 97526 | 
| | 
| 
| 
| 
| 
| 
| 
| | predecessors before returning.  Otherwise, if multiple predecessor edges need
splitting, we only get one of them per iteration.  This makes a small but
measurable compile time improvement with -enable-full-load-pre.
llvm-svn: 97521 | 
| | 
| 
| 
| | llvm-svn: 97512 | 
| | 
| 
| 
| | llvm-svn: 97458 | 
| | 
| 
| 
| | llvm-svn: 97453 | 
| | 
| 
| 
| | llvm-svn: 97448 |