- Feb 04, 2008
-
-
Owen Anderson authored
llvm-svn: 46693
-
- Feb 03, 2008
-
-
Nick Lewycky authored
llvm-svn: 46687
-
Nick Lewycky authored
llvm-svn: 46684
-
Nick Lewycky authored
reassociate anyways, but they could be generated during instcombine's run. llvm-svn: 46683
-
- Jan 30, 2008
-
-
Nick Lewycky authored
list just to see if whether the list is empty. llvm-svn: 46555
-
Nick Lewycky authored
llvm-svn: 46554
-
Nick Lewycky authored
llvm-svn: 46553
-
Owen Anderson authored
Make DSE much more aggressive by performing DCE earlier. Update a testcase to reflect this increased aggressiveness. llvm-svn: 46542
-
Chris Lattner authored
In practice this can only happen on code with already undefined behavior, but this is still a good thing to handle correctly. llvm-svn: 46539
-
- Jan 29, 2008
-
-
Dan Gohman authored
llvm-svn: 46514
-
Chris Lattner authored
avoid turning -0.0 + 0.0 -> -0.0 which is incorrect. llvm-svn: 46499
-
Owen Anderson authored
the handling of eliminating stores to byval arguments. llvm-svn: 46494
-
Devang Patel authored
These loops are not yet handled. Fix PR 1912. llvm-svn: 46484
-
- Jan 28, 2008
-
-
Nick Lewycky authored
llvm-svn: 46431
-
Chris Lattner authored
llvm-svn: 46429
-
Chris Lattner authored
way or the other. Rewriting the code itself prevents subsequent analysis passes from making contradictory conclusions about the code that could cause an infeasible path to be made feasible. llvm-svn: 46427
-
- Jan 27, 2008
-
-
Nick Lewycky authored
llvm-svn: 46417
-
Bill Wendling authored
This fixes PR1769. llvm-svn: 46408
-
Chris Lattner authored
llvm-svn: 46406
-
- Jan 26, 2008
-
-
Bill Wendling authored
a "nop" instruction so that we don't have the function's label associated with something that it's not supposed to be associated with. llvm-svn: 46394
-
Bill Wendling authored
void bork() { int *address = 0; *address = 0; } It's compiled into LLVM code that looks like this: define void @bork() noreturn nounwind { entry: unreachable } This is bad on some platforms (like PPC) because it will generate the label for the function but no body. The label could end up being associated with some non-code related stuff, like a section. This places a "trap" instruction if the SimplifyCFG pass removed all code from the function leaving only one "unreachable" instruction. llvm-svn: 46387
-
- Jan 25, 2008
-
-
Owen Anderson authored
DeadStoreElimination can treat byval parameters as if there were alloca's for the purpose of removing end-of-function stores. llvm-svn: 46351
-
- Jan 22, 2008
-
-
Nick Lewycky authored
llvm-svn: 46247
-
Nick Lewycky authored
a smaller bitwidth. llvm-svn: 46244
-
- Jan 20, 2008
-
-
Duncan Sands authored
Fixes PR1935. llvm-svn: 46203
-
Duncan Sands authored
to complain on x86-64 (gcc 4.1). Use ~0U instead. llvm-svn: 46197
-
- Jan 14, 2008
-
-
Duncan Sands authored
drop attributes on varargs call arguments. Also, it could generate invalid IR if the transformed call already had the 'nest' attribute somewhere (this can never happen for code coming from llvm-gcc, but it's a theoretical possibility). Fix both problems. llvm-svn: 45973
-
Chris Lattner authored
a load/store of i64. The later prevents promotion/scalarrepl of the source and dest in many cases. This fixes the 300% performance regression of the byval stuff on stepanov_v1p2. llvm-svn: 45945
-
Chris Lattner authored
method, no functionality change. llvm-svn: 45944
-
- Jan 13, 2008
-
-
Chris Lattner authored
greater than memcpy alignment, and if we lower to load/store, use the best alignment info we have. llvm-svn: 45943
-
Chris Lattner authored
make memmove->memcpy conversion a bit simpler. llvm-svn: 45942
-
Chris Lattner authored
realize that ne & sgt was a signed comparison (it was only looking at whether the left compare was signed). llvm-svn: 45937
-
Duncan Sands authored
if this becomes a varargs call then deal correctly with any parameter attributes on the newly vararg call arguments. llvm-svn: 45931
-
- Jan 08, 2008
-
-
Chris Lattner authored
llvm-svn: 45745
-
- Jan 07, 2008
-
-
Duncan Sands authored
incompatibility. llvm-svn: 45704
-
Gordon Henriksen authored
llvm-svn: 45675
-
Gordon Henriksen authored
ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) llvm-svn: 45670
-
- Jan 06, 2008
-
-
Duncan Sands authored
direct calls bails out unless caller and callee have essentially equivalent parameter attributes. This is illogical - the callee's attributes should be of no relevance here. Rework the logic, which incidentally fixes a crash when removed arguments have attributes. llvm-svn: 45658
-
Duncan Sands authored
a direct call with cast parameters and cast return value (if any), instcombine was prepared to cast any non-void return value into any other, whether castable or not. Add a new predicate for testing whether casting is valid, and check it both for the return value and (as a cleanup) for the parameters. llvm-svn: 45657
-
- Jan 05, 2008
-
-
Chris Lattner authored
llvm-svn: 45613
-