Dan Gohman
d42e09d91e
Ignore debug intrinsics in yet more places.
...
llvm-svn: 99580
2010-03-26 00:33:27 +00:00
Gabor Greif
6c6b2fd2b2
rename pred_const_iterator to const_pred_iterator for consistency's sake
...
llvm-svn: 99567
2010-03-25 23:25:28 +00:00
Gabor Greif
c78d720f02
rename use_const_iterator to const_use_iterator for consistency's sake
...
llvm-svn: 99564
2010-03-25 23:06:16 +00:00
Chris Lattner
0563804982
fix PR6642, GVN forwarding from memset to load of the base of the memset.
...
llvm-svn: 99488
2010-03-25 05:58:19 +00:00
Eric Christopher
1d38538fb6
Temporarily revert this, it's causing an issue with an internal project.
...
llvm-svn: 99451
2010-03-24 23:35:21 +00:00
Evan Cheng
c12c2d9bb4
Move OptChkCall off LibCallOptimization into StrCpyOpt.
...
llvm-svn: 99418
2010-03-24 20:19:04 +00:00
Gabor Greif
a2fbc0ae1b
Finally land the InvokeInst operand reordering.
...
I have audited all getOperandNo calls now, fixing
hidden assumptions. CallSite related uglyness will
be eliminated successively.
Note this patch has a long and griveous history,
for all the back-and-forths have a look at
CallSite.h's log.
llvm-svn: 99399
2010-03-24 13:21:49 +00:00
Gabor Greif
be18ae6781
tighten a type and remove trailing whitespace, no functional changes
...
llvm-svn: 99398
2010-03-24 11:58:07 +00:00
Gabor Greif
9027ffb918
increase const goodness and remove pointless getUser() calls
...
llvm-svn: 99395
2010-03-24 10:29:52 +00:00
Gabor Greif
11ff53146f
cache result of UI.getOperandNo() instead of calling it twice, it is cheaper this way
...
llvm-svn: 99394
2010-03-24 10:12:54 +00:00
Chris Lattner
00eeac4179
add some accessors to callsite/callinst/invokeinst to check
...
for the noinline attribute, and make the inliner refuse to
inline a call site when the call site is marked noinline even
if the callee isn't. This fixes PR6682.
llvm-svn: 99341
2010-03-23 22:59:07 +00:00
Bill Wendling
04803e8ef6
Skip debugging intrinsics when sinking unused invariants.
...
llvm-svn: 99324
2010-03-23 21:15:59 +00:00
Evan Cheng
d9e822345c
Teach simplify libcall to transform __strcpy_chk to __memcpy_chk to enable optimizations down stream.
...
llvm-svn: 99282
2010-03-23 15:48:04 +00:00
Gabor Greif
161cb044f3
add assert in argpromotion, which cannot trigger
...
if Function::hasAddressTaken works as advertised
also included some cosmetic cleanups
llvm-svn: 99276
2010-03-23 14:40:20 +00:00
Evan Cheng
3f7842232e
Fix an incorrect logic causing instcombine to miss some _chk -> non-chk transformations.
...
llvm-svn: 99263
2010-03-23 06:06:09 +00:00
Evan Cheng
9a7b270825
Fix 80 col violation.
...
llvm-svn: 99224
2010-03-22 22:44:31 +00:00
Gabor Greif
e1517a084f
backing out r99170 because it still fails on clang-x86_64-darwin10-fnt
...
llvm-svn: 99171
2010-03-22 09:11:00 +00:00
Gabor Greif
7a743e15e3
Now that hopefully all direct accesses to InvokeInst operands are fixed
...
we can reapply the InvokeInst operand reordering patch. (see r98957).
llvm-svn: 99170
2010-03-22 08:28:00 +00:00
Gabor Greif
febf6ab718
Add a setCalledFunction member to InvokeInst (like in CallInst)
...
and use this (as well as getCalledValue) to access the callee,
instead of {g|s}etOperand(0).
llvm-svn: 99084
2010-03-20 21:00:25 +00:00
Dan Gohman
1a2abe5580
Clear the SCEVExpander's insertion point after making deletions,
...
so that the SCEVExpander doesn't retain a dangling pointer as its
insert position. The dangling pointer in this case wasn't ever used
to insert new instructions, but it was causing trouble with
SCEVExpander's code for automatically advancing its insert position
past debug intrinsics.
This fixes use-after-free errors that valgrind noticed in
test/Transforms/IndVarSimplify/2007-06-06-DeleteDanglesPtr.ll and
test/Transforms/IndVarSimplify/exit_value_tests.ll.
llvm-svn: 99036
2010-03-20 03:53:53 +00:00
Gabor Greif
6c56ed847e
back out r98957, it broke http://smooshlab.apple.com:8010/builders/clang-x86_64-darwin10-fnt/builds/703 in the nightly test suite
...
llvm-svn: 98958
2010-03-19 13:50:02 +00:00
Gabor Greif
8335f9c0bf
Recommit r80858 again (which has been backed out in r80871).
...
This time I did a self-hosted bootstrap on Linux x86-64,
with no problems. Let's see how darwin 64-bit self-hosting
goes. At the first sign of failure I'll back this out.
Maybe the valgrind bots give me a hint of what may be wrong
(it at all).
llvm-svn: 98957
2010-03-19 11:55:53 +00:00
Benjamin Kramer
f2e4b5dd7f
str[r]chr returns its pointer argument so we cannot mark it as nocapture. Thanks to Duncan for spotting my mistake.
...
llvm-svn: 98671
2010-03-16 20:33:15 +00:00
Benjamin Kramer
5cf5fd2ffa
Mark str[r]chr readonly.
...
llvm-svn: 98663
2010-03-16 19:36:43 +00:00
Devang Patel
45c1505bf6
Skip debug info intrinsics.
...
llvm-svn: 98584
2010-03-15 22:23:03 +00:00
Devang Patel
b21991c4f5
Skip debug info intrinsics.
...
llvm-svn: 98581
2010-03-15 21:25:29 +00:00
Devang Patel
d3f41e8939
In "empty" bb, the return instruction may not be first instruction, if dbg value intrinsics are present in this bb. Use terminator to find return instructions.
...
llvm-svn: 98565
2010-03-15 19:05:46 +00:00
Bill Wendling
55e69d179b
Skip over debug info when trying to merge two return BBs.
...
llvm-svn: 98491
2010-03-14 10:40:55 +00:00
Bill Wendling
ee84f27536
Make returns more consistent with others.
...
llvm-svn: 98490
2010-03-14 10:40:28 +00:00
Benjamin Kramer
a956527c92
Add a virtual destructor and give vtable a home.
...
llvm-svn: 98376
2010-03-12 20:41:29 +00:00
Benjamin Kramer
7b88a49f3e
Factor checked library call optimization into a common helper class and use it
...
to unify the almost identical code in CodeGenPrepare and InstCombineCalls.
llvm-svn: 98338
2010-03-12 09:27:41 +00:00
Nate Begeman
2e41605d4f
Whoops this already existed.
...
llvm-svn: 98297
2010-03-11 23:21:19 +00:00
Nate Begeman
5daa235c91
Add a handful of additional useful pass manager things to the C API
...
llvm-svn: 98296
2010-03-11 23:06:07 +00:00
Benjamin Kramer
2fc395659c
stpcpy is so similar to strcpy, it doesn't deserve a complete copy of the __strcpy_chk -> strcpy code.
...
llvm-svn: 98284
2010-03-11 20:45:13 +00:00
Eric Christopher
607de1de53
Lower stpcpy_chk when possible.
...
llvm-svn: 98274
2010-03-11 19:24:34 +00:00
Eric Christopher
103e3ef893
Fix typo.
...
llvm-svn: 98260
2010-03-11 17:45:38 +00:00
Eric Christopher
4b7948e09e
Do some final lowering in CodeGenPrepare of _chk calls similar to
...
that in InstCombineCalls.
More call lowering needed.
llvm-svn: 98228
2010-03-11 02:41:03 +00:00
Eric Christopher
43dc11c525
Add strncpy libcall creator. Use it when it should be used.
...
llvm-svn: 98219
2010-03-11 01:25:07 +00:00
Dan Gohman
2734ebd37f
Add a DominatorTree argument to isLCSSA so that it doesn't have to
...
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.
llvm-svn: 98179
2010-03-10 19:38:49 +00:00
Dan Gohman
b7e0b87441
Fix a comment.
...
llvm-svn: 98122
2010-03-10 02:18:48 +00:00
Jakob Stoklund Olesen
b495cad7ca
Try to keep the cached inliner costs around for a bit longer for big functions.
...
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
2010-03-09 23:02:17 +00:00
Jakob Stoklund Olesen
4497475905
Revert r98089, it was breaking a clang test.
...
llvm-svn: 98094
2010-03-09 22:43:37 +00:00
Jakob Stoklund Olesen
741dec43e4
Try to keep the cached inliner costs around for a bit longer for big functions.
...
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
2010-03-09 22:17:11 +00:00
Jakob Stoklund Olesen
d62c2f554c
Add inlining threshold to log output.
...
llvm-svn: 98024
2010-03-09 00:59:53 +00:00
Evan Cheng
4f2fd2d2be
Re-commit 97860 with fix. getMallocAllocatedType may return null.
...
llvm-svn: 98000
2010-03-08 22:54:36 +00:00
Devang Patel
3b548aa8e2
Avoid using DIDescriptor.isNull().
...
This is a first step towards eliminating checks in Descriptor constructors.
llvm-svn: 97975
2010-03-08 20:52:55 +00:00
Devang Patel
bc97f6b757
Revert r97947.
...
llvm-svn: 97963
2010-03-08 19:20:38 +00:00
Devang Patel
fe28599f6f
Avoid using DIDescriptor.isNull().
...
This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.
llvm-svn: 97947
2010-03-08 18:25:48 +00:00
Eric Christopher
1810d77cb4
Let the fallthrough handle whether or not we've changed anything
...
before we try to optimize.
llvm-svn: 97876
2010-03-06 10:59:25 +00:00
Eric Christopher
a7fb58f5f5
Migrate _chk call lowering from SimplifyLibCalls to InstCombine. Stub
...
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
2010-03-06 10:50:38 +00:00