- Jun 02, 2011
-
-
Eli Friedman authored
PR10067: Add missing safety check to call return transformation in MemCpyOpt::processStore. If something accesses the dest of the "copy" between the call and the copy, the performCallSlotOptzn transformation is not valid. llvm-svn: 132485
-
- Jun 01, 2011
-
-
-
John McCall authored
landing pad, forward llvm.eh.resume calls to it instead of turning them invalidly into invokes. llvm-svn: 132382
-
- May 31, 2011
-
-
-
Stuart Hastings authored
sub with a non-constant. Fix comments, enlarge test case. rdar://problem/6501862 llvm-svn: 132348
-
- May 30, 2011
-
-
Stuart Hastings authored
rdar://problem/6501862 llvm-svn: 132316
-
- May 29, 2011
-
-
Nick Lewycky authored
llvm-svn: 132290
-
Nick Lewycky authored
variable. Noticed by inspection. Simulate memset in EvaluateFunction where the target of the memset and the value we're setting are both the null value. Fixes PR10047! llvm-svn: 132288
-
Nadav Rotem authored
llvm-svn: 132285
-
John McCall authored
fixes self-host. llvm-svn: 132275
-
- May 28, 2011
-
-
Benjamin Kramer authored
Fixes PR10040. llvm-svn: 132254
-
John McCall authored
transformed by the inliner into a branch to the enclosing landing pad (when inlined through an invoke). If not so optimized, it is lowered DWARF EH preparation into a call to _Unwind_Resume (or _Unwind_SjLj_Resume as appropriate). Its chief advantage is that it takes both the exception value and the selector value as arguments, meaning that there is zero effort in recovering these; however, the frontend is required to pass these down, which is not actually particularly difficult. Also document the behavior of landing pads a bit better, and make it clearer that it's okay that personality functions don't always land at landing pads. This is just a fact of life. Don't write optimizations that rely on pushing things over an unwind edge. llvm-svn: 132253
-
- May 27, 2011
-
-
Nadav Rotem authored
code in one place. Re-apply 131534 and fix the multi-step promotion of integers. llvm-svn: 132217
-
Eli Friedman authored
Attempt to preserve debug line info in LICM; as the comment in the code says, it's hard to pick good line numbers for this transformation, but something is better than nothing. rdar://9143729 llvm-svn: 132215
-
Eli Friedman authored
Don't sink or hoist debug info instrinsics; it isn't useful. This also prevents LICM sinking from erasing debug intrinsics which don't dominate any exit block of the loop. rdar://9143943 . llvm-svn: 132201
-
John McCall authored
- the selector for the landing pad must provide all available information about the handlers, filters, and cleanups within that landing pad - calls to _Unwind_Resume must be converted to branches to the enclosing lpad so as to avoid re-entering the unwinder when the lpad claimed it was going to handle the exception in some way This is quite specific to libUnwind-based unwinding. In an effort to not interfere too badly with other unwinders, and with existing hacks in frontends, this only triggers on _Unwind_Resume (not _Unwind_Resume_or_Rethrow) and does nothing with selectors if it cannot find a selector call for either lpad. llvm-svn: 132200
-
Eli Friedman authored
llvm-svn: 132195
-
-
Benjamin Kramer authored
InstCombine: Make switch folding with equality compares more aggressive by trying instsimplify on the arm where we know the compared value. Stuff like "x == y ? y : x&y" now folds into "x&y". llvm-svn: 132185
-
Eli Friedman authored
One more debug line number miss in instcombine (although the code in question isn't actually in instcombine). llvm-svn: 132170
-
Eli Friedman authored
Final step of instcombine debuginfo; switch a couple more places over to InsertNewInstWith, and use setDebugLoc for the cases which can't be easily handled by the automated mechanisms. llvm-svn: 132167
-
Chandler Carruth authored
This looks like it flagged an actual bug. Devang, please review. I added the parentheses that change behavior, but make the behavior more closely match commit log's intent. llvm-svn: 132165
-
Devang Patel authored
llvm-svn: 132164
-
Chad Rosier authored
crc32.[8|16|32] have been renamed to .crc32.32.[8|16|32] and crc64.[8|16|32] have been renamed to .crc32.64.[8|64]. llvm-svn: 132163
-
Devang Patel authored
llvm-svn: 132161
-
- May 26, 2011
-
-
Devang Patel authored
If llvm.dbg.value and the value instruction it refers to are far apart then iSel may not be able to find corresponding Node for llvm.dbg.value during DAG construction. Make iSel's life easier by removing this distance between llvm.dbg.value and its value instruction. llvm-svn: 132151
-
Andrew Trick authored
Use a proper worklist for use-def traversal without holding onto an iterator. Now that we process all IV uses, we need complete logic for resusing existing derived IV defs. See HoistStep. llvm-svn: 132103
-
Eli Friedman authored
llvm-svn: 132097
-
- May 25, 2011
-
-
Evan Cheng authored
llvm-svn: 132071
-
Andrew Trick authored
cleanup and overdue test cases. llvm-svn: 132038
-
Evan Cheng authored
llvm-svn: 132025
-
Evan Cheng authored
case of a switch instruction. Back off this optimization when this would eliminate all of the predecessors to the latch. Sorry, I am unable to reduce a reasonably sized test case. rdar://9486843 llvm-svn: 132022
-
- May 24, 2011
-
-
Eli Friedman authored
Make instcombine O(N) instead of O(N^2) in code where the same simplifiable constant is used many times. Part of rdar://9471075. llvm-svn: 131979
-
Cameron Zwarich authored
llvm-svn: 131956
-
Cameron Zwarich authored
promoting allocas to SSA variables. Fixes <rdar://problem/9479036>. llvm-svn: 131953
-
- May 23, 2011
-
-
Dan Gohman authored
This fixes PR9845. llvm-svn: 131919
-
Chris Lattner authored
xform recurse. llvm-svn: 131888
-
Chris Lattner authored
in a known-non-zero context. llvm-svn: 131887
-
Chris Lattner authored
for a constant directly. Thanks to Duncan for pointing this out. llvm-svn: 131885
-
Chris Lattner authored
aligned. Teach memcpyopt to not give up all hope when confonted with an underaligned memcpy feeding an overaligned byval. If the *source* of the memcpy can be determined to be adequeately aligned, or if it can be forced to be, we can eliminate the memcpy. This addresses PR9794. We now compile the example into: define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp { entry: %call = call i32 @g(%struct.p* byval align 8 %q) nounwind ret i32 %call } in both x86-64 and x86-32 mode. We still don't get a tailcall though, because tailcalls apparently can't handle byval. llvm-svn: 131884
-