- Jan 28, 2008
-
-
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
-
Duncan Sands authored
longer allowed to write through byval arguments. llvm-svn: 46416
-
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
-
Duncan Sands authored
when inlining a readonly function. llvm-svn: 46393
-
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
-
-
Duncan Sands authored
llvm-svn: 46369
-
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 17, 2008
-
-
Evan Cheng authored
llvm-svn: 46113
-
Chris Lattner authored
promoted functions. This is important for varargs calls in particular. Thanks to duncan for providing a great testcase. llvm-svn: 46108
-
- Jan 16, 2008
-
-
Chris Lattner authored
llvm-svn: 46090
-
Devang Patel authored
llvm-svn: 46045
-
- 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
byval work. This miscompilation is due to the program indexing an array out of range and us doing a transformation that broke this. llvm-svn: 45949
-
Chris Lattner authored
llvm-svn: 45948
-
Chris Lattner authored
difficult to understand the invariants. llvm-svn: 45947
-
Chris Lattner authored
easier to show that its safe. No functionality change. llvm-svn: 45946
-
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
llvm-svn: 45932
-
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 12, 2008
-
-
Chris Lattner authored
inlining a function if we know that the function does not write to *any* memory. This implements test/Transforms/Inline/byval2.ll llvm-svn: 45912
-
Chris Lattner authored
the inliner pass. Patch by Robert Zeh. llvm-svn: 45903
-
Duncan Sands authored
attributes on the vararg call arguments are also dropped. llvm-svn: 45892
-
- Jan 11, 2008
-
-
Chris Lattner authored
get away with it, which exposes opportunities to eliminate the memory objects entirely. For example, we now compile byval.ll to: define internal void @f1(i32 %b.0, i64 %b.1) { entry: %tmp2 = add i32 %b.0, 1 ; <i32> [#uses=0] ret void } define i32 @main() nounwind { entry: call void @f1( i32 1, i64 2 ) ret i32 0 } This seems like it would trigger a lot for code that passes around small structs (e.g. SDOperand's or _Complex)... llvm-svn: 45886
-
Chris Lattner authored
llvm-svn: 45878
-
Chris Lattner authored
llvm-svn: 45877
-
Chris Lattner authored
whether an argument is byval and pass into isSafeToPromoteArgument. llvm-svn: 45876
-
Chris Lattner authored
llvm-svn: 45875
-
Chris Lattner authored
llvm-svn: 45874
-
Chris Lattner authored
llvm-svn: 45873
-