- Aug 12, 2011
-
-
Dan Gohman authored
is returned through a bitcast. llvm-svn: 137402
-
Dan Gohman authored
the retains and releases all use the same SSA pointer value. Also, don't let CFG hazards disrupt nested retain+release pair optimizations. llvm-svn: 137399
-
Dan Gohman authored
rather than plain postorder, so that CFG constructs like single-exit loops are reliably visited in a sensible order. llvm-svn: 137398
-
Andrew Trick authored
SCEV unrolling can unroll loops with arbitrary induction variables. It is a prerequisite for -disable-iv-rewrite performance. It is also easily handles loops of arbitrary structure including multiple exits and is generally more robust. This is under a temporary option to avoid affecting default behavior for the next couple of weeks. It is needed so that I can checkin unit tests for updateUnloop. llvm-svn: 137384
-
- Aug 11, 2011
-
-
Dan Gohman authored
llvm-svn: 137352
-
- Aug 10, 2011
-
-
Devang Patel authored
Distinguish between two copies of one inlined variable. Take 2. llvm-svn: 137253
-
Andrew Trick authored
Also, my apologies for spoiling the autocomplete on SimplifyInstructions.cpp. I couldn't think of a better filename. llvm-svn: 137229
-
Andrew Trick authored
llvm-svn: 137203
-
Andrew Trick authored
SimplifyIndVar utility since it is required. llvm-svn: 137202
-
Andrew Trick authored
llvm-svn: 137199
-
Benjamin Kramer authored
llvm-svn: 137198
-
Andrew Trick authored
based on ScalarEvolution without changing the induction variable phis. This utility is the main tool of IndVarSimplifyPass, but the pass also restructures induction variables in strange ways that are sensitive to pass ordering. This provides a way for other loop passes to simplify new uses of induction variables created during transformation. The utility may be used by any pass that preserves ScalarEvolution. Soon LoopUnroll will use it. The net effect in this checkin is to cleanup the IndVarSimplify pass by factoring out the SimplifyIndVar algorithm into a standalone utility. llvm-svn: 137197
-
Andrew Trick authored
llvm-svn: 137195
-
Andrew Trick authored
These are not individual bug fixes. I had to rewrite a good chunk of the unroller to make it sane. I think it was getting lucky on trivial completely unrolled loops with no early exits. I included some fairly simple unit tests for partial unrolling. I didn't do much stress testing, so it may not be perfect, but should be usable now. llvm-svn: 137190
-
Eli Friedman authored
llvm-svn: 137170
-
Rafael Espindola authored
functionality since in the C api a pass is created and added to a pass manager in a single call. llvm-svn: 137159
-
- Aug 09, 2011
-
-
Andrew Trick authored
LoopUnroll looks like it has some stale code. Remove it to prove my sanity and avoid further confusion. llvm-svn: 137106
-
Bill Wendling authored
instead of a vector. llvm-svn: 137099
-
Bill Wendling authored
The 'unwind' instruction was acting essentially as a placeholder, because it would be replaced at the end of this function by a branch to the "unwind handler". The 'unwind' instruction is going away, so use 'unreachable' instead, which serves the same purpose as a placeholder. llvm-svn: 137098
-
- Aug 06, 2011
-
-
Andrew Trick authored
recurrence, the initial values low bits can sometimes be ignored. To take advantage of this, added FoldIVUser to IndVarSimplify to fold an IV operand into a udiv/lshr if the operator doesn't affect the result. -indvars -disable-iv-rewrite now transforms i = phi i4 i1 = i0 + 1 idx = i1 >> (2 or more) i4 = i + 4 into i = phi i4 idx = i0 >> ... i4 = i + 4 llvm-svn: 137013
-
- Aug 05, 2011
-
-
Chandler Carruth authored
inlined variable, based on the discussion in PR10542. This explodes the runtime of several passes down the pipeline due to a large number of "copies" remaining live across a large function. This only shows up with both debug and opt, but when it does it creates a many-minute compile when self-hosting LLVM+Clang. There are several other cases that show these types of regressions. All of this is tracked in PR10542, and progress is being made on fixing the issue. Once its addressed, the re-instated, but until then this restores the performance for self-hosting and other opt+debug builds. Devang, let me know if this causes any trouble, or impedes fixing it in any way, and thanks for working on this! llvm-svn: 136953
-
- Aug 04, 2011
-
-
Devang Patel authored
We need to map DebugLoc. It leads to Fuction * (through subprogram entry node) which should be appropriately mapped. llvm-svn: 136910
-
Evan Cheng authored
llvm-svn: 136900
-
Bill Wendling authored
This is some of my original LLVM code. *wipes tear* llvm-svn: 136821
-
- Aug 03, 2011
-
-
Andrew Trick authored
to notify SCEV of a change. Add forgetLoop in a couple of those places. llvm-svn: 136797
-
Andrew Trick authored
llvm-svn: 136795
-
Nick Lewycky authored
- use SmallVectorImpl& for the function argument. - ignore the operands on the GEP, even if they aren't constant! Much as we pretend the malloc succeeds, we pretend that malloc + whatever-you-GEP'd-by is not null. It's magic! llvm-svn: 136757
-
Nick Lewycky authored
Don't replace a gep/bitcast with 'undef' because that will form a "free(undef)" which in turn means "unreachable". What we wanted was a no-op. Instead, analyze the whole tree and look for all the instructions we need to delete first, then delete them second, not relying on the use_list to stay consistent. llvm-svn: 136752
-
Nick Lewycky authored
malloc call. llvm-svn: 136732
-
- Aug 02, 2011
-
-
Rafael Espindola authored
llvm-svn: 136727
-
Eli Friedman authored
llvm-svn: 136723
-
Nick Lewycky authored
llvm-svn: 136722
-
Owen Anderson authored
Revert r136503 and r136480 in an effort to fix non-determinism in the llvm-gcc buildbots on i386. Devang is looking into the root cause. llvm-svn: 136674
-
- Jul 31, 2011
-
-
Bill Wendling authored
This adds the 'resume' instruction class, IR parsing, and bitcode reading and writing. The 'resume' instruction resumes propagation of an existing (in-flight) exception whose unwinding was interrupted with a 'landingpad' instruction (to be added later). llvm-svn: 136589
-
Rafael Espindola authored
llvm-svn: 136585
-
- Jul 30, 2011
-
-
Bill Wendling authored
r136339, r136341, r136369, r136387, r136392, r136396, r136429, r136430, r136444, r136445, r136446, r136253 pending review. llvm-svn: 136556
-
- Jul 29, 2011
-
-
Devang Patel authored
llvm-svn: 136503
-
Devang Patel authored
llvm-svn: 136480
-
Eli Friedman authored
working on x86 (at least for trivial testcases); other architectures will need more work so that they actually emit the appropriate instructions for orderings stricter than 'monotonic'. (As far as I can tell, the ARM, PPC, Mips, and Alpha backends need such changes.) llvm-svn: 136457
-
Eli Friedman authored
Make sure to correctly clear the exact/nuw/nsw flags off of shifts when they are combined together. <rdar://problem/9859829> llvm-svn: 136435
-