#
7b0a5fd2 |
| 27-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
simplify: CallSite::get --> CallSite constructor
llvm-svn: 109506
|
#
42f620cc |
| 24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use callsite to obtain all arguments
llvm-svn: 106728
|
#
0dc3c2d3 |
| 24-Jun-2010 |
Devang Patel <dpatel@apple.com> |
Use ValueMap instead of DenseMap. The ValueMapper used by various cloning utility maps MDNodes also.
llvm-svn: 106706
|
#
b8f11de1 |
| 23-Jun-2010 |
Devang Patel <dpatel@apple.com> |
Cosmetic change. Do not use "ValueMap" as a name for a local variable or an argument.
llvm-svn: 106698
|
#
4c904fa7 |
| 31-May-2010 |
Duncan Sands <baldrick@free.fr> |
Fix PR7272: when inlining through a callsite with byval arguments, the newly created allocas may be used by inlined calls, so these need to have their tail call flags cleared. Fixes PR7272.
llvm-sv
Fix PR7272: when inlining through a callsite with byval arguments, the newly created allocas may be used by inlined calls, so these need to have their tail call flags cleared. Fixes PR7272.
llvm-svn: 105255
show more ...
|
#
c2432b9d |
| 01-May-2010 |
Chris Lattner <sabre@nondot.org> |
rename InlineInfo.DevirtualizedCalls -> InlinedCalls to reflect that it includes all inlined calls now, not just devirtualized ones.
llvm-svn: 102824
|
#
fc8d9ee6 |
| 01-May-2010 |
Chris Lattner <sabre@nondot.org> |
Implement rdar://6295824 and PR6724 with two tiny changes that can have a big effect :). The first is to enable the iterative SCC passmanager juice that kicks in when the scc passmgr detects that a
Implement rdar://6295824 and PR6724 with two tiny changes that can have a big effect :). The first is to enable the iterative SCC passmanager juice that kicks in when the scc passmgr detects that a function pass has devirtualized a call. In this case, it will rerun all the passes it manages on the SCC, up to the iteration count limit (4). This is useful because a function pass may devirualize a call, and we want the inliner to inline it, or pruneeh to infer stuff about it, etc.
The second patch is to add *all* call sites to the DevirtualizedCalls list the inliner uses. This list is about to get renamed, but the jist of this is that the inliner now reconsiders *all* inlined call sites as candidates for further inlining. The intuition is this that in cases like this:
f() { g(1); } g(int x) { h(x); }
We analyze this bottom up, and may decide that it isn't profitable to inline H into G. Next step, we decide that it is profitable to inline G into F, and do so, which means that F now calls H. Even though the call from G -> H may not have been profitable to inline, the call from F -> H may be (in this case because a constant allows folding etc).
In my spot checks, this doesn't have a big impact on code. For example, the LLC output for 252.eon grew from 0.02% (from 317252 to 317308) and 176.gcc actually shrunk by .3% (from 1525612 to 1520964 bytes). 252.eon never iterated in the SCC Passmgr, 176.gcc iterated at most 1 time.
llvm-svn: 102823
show more ...
|
Revision tags: llvmorg-2.7.0 |
|
#
c691de3b |
| 23-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
switch InlineInfo.DevirtualizedCalls's list to be of WeakVH. This fixes a bug where calls inlined into an invoke would get changed into an invoke but the array would keep pointing to the (now dead) c
switch InlineInfo.DevirtualizedCalls's list to be of WeakVH. This fixes a bug where calls inlined into an invoke would get changed into an invoke but the array would keep pointing to the (now dead) call. The improved inliner behavior is still disabled for now.
llvm-svn: 102196
show more ...
|
#
2eee5d34 |
| 22-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
The inliner was choosing to not consider call sites that appear in the SCC as a result of inlining as candidates for inlining. Change this so that it *does* consider call sites that change from bei
The inliner was choosing to not consider call sites that appear in the SCC as a result of inlining as candidates for inlining. Change this so that it *does* consider call sites that change from being indirect to being direct as a result of inlining. This allows it to completely "devirtualize" the testcase.
llvm-svn: 102146
show more ...
|
#
4ba01ec8 |
| 22-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
refactor the interface to InlineFunction so that most of the in/out arguments are handled with a new InlineFunctionInfo class. This makes it easier to extend InlineFunction to return more info in t
refactor the interface to InlineFunction so that most of the in/out arguments are handled with a new InlineFunctionInfo class. This makes it easier to extend InlineFunction to return more info in the future.
llvm-svn: 102137
show more ...
|
#
016c00a3 |
| 22-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
when inlining something like this:
define void @f3(void (i8*)* %__f) ssp { entry: call void %__f(i8* undef) unreachable }
define void @f4(i8* %this) ssp align 2 { entry: call void @f3(void (i
when inlining something like this:
define void @f3(void (i8*)* %__f) ssp { entry: call void %__f(i8* undef) unreachable }
define void @f4(i8* %this) ssp align 2 { entry: call void @f3(void (i8*)* @f2) ssp ret void }
The inliner is turning the indirect call to %__f into a direct call to F2. Make the call graph more precise when this happens.
The inliner doesn't revisit call sites introduced by inlining, so there isn't an easy way to test for this, but a more precise callgraph is a good thing.
llvm-svn: 102131
show more ...
|
#
0a3b5b4e |
| 22-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate dead #include.
llvm-svn: 102119
|
#
7258dcd7 |
| 16-Apr-2010 |
Eric Christopher <echristo@apple.com> |
Revert 101465, it broke internal OpenGL testing.
Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating.
llvm-svn: 101579
|
#
f375520f |
| 16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101434 with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to llvm-commits: more e
reapply r101434 with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary
llvm-svn: 101465
show more ...
|
#
403e9694 |
| 16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101423 and r101397, they break llvm-gcc self-host on darwin10
llvm-svn: 101434
|
#
33ae80bf |
| 15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101364, which has been backed out in r101368 with a fix
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to
reapply r101364, which has been backed out in r101368 with a fix
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary
llvm-svn: 101397
show more ...
|
#
9fd00c7d |
| 15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101364, as it trips the linux nightlybot on some clang C++ tests
llvm-svn: 101368
|
#
aafd2096 |
| 15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faste
rotate CallInst operands, i.e. move callee to the back of the operand array
the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary
llvm-svn: 101364
show more ...
|
#
c576ee90 |
| 04-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i3
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
llvm-svn: 100304
show more ...
|
#
999c1b92 |
| 02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Revert r100191 since it breaks objc in clang
llvm-svn: 100199
|
#
a972ab85 |
| 02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i3
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
llvm-svn: 100191
show more ...
|
#
6f7fd288 |
| 30-Mar-2010 |
Bob Wilson <bob.wilson@apple.com> |
Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.
llvm-svn: 99948
|
#
74605713 |
| 30-Mar-2010 |
Mon P Wang <wangmp@apple.com> |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update o
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin.
llvm-svn: 99928
show more ...
|
#
1d38538f |
| 24-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Temporarily revert this, it's causing an issue with an internal project.
llvm-svn: 99451
|
#
00eeac41 |
| 23-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
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'
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
show more ...
|