- Aug 16, 2011
-
-
Bill Wendling authored
llvm-svn: 137712
-
Devang Patel authored
llvm-svn: 137673
-
- Aug 15, 2011
-
-
Eli Friedman authored
llvm-svn: 137662
-
Bill Wendling authored
write to memory.) Marking it as such makes some checks for immobility go away. llvm-svn: 137655
-
Eli Friedman authored
llvm-svn: 137650
-
Eli Friedman authored
llvm-svn: 137648
-
Bill Wendling authored
llvm-svn: 137628
-
Devang Patel authored
llvm-svn: 137621
-
- Aug 12, 2011
-
-
Duncan Sands authored
when building with assertions disabled. llvm-svn: 137460
-
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
-
-
Andrew Trick authored
ancestor loops. I have a unit test that depends on scev-unroll, which unfortunately isn't checked in. But I will check it in when I can. llvm-svn: 137341
-
Andrew Trick authored
llvm-svn: 137317
-
Andrew Trick authored
An algorithm for incrementally updating LoopInfo within a LoopPassManager. The incremental update should be extremely cheap in most cases and can be used in places where it's not feasible to regenerate the entire loop forest. - "Unloop" is a node in the loop tree whose last backedge has been removed. - Perform reverse dataflow on the block inside Unloop to propagate the nearest loop from the block's successors. - For reducible CFG, each block in unloop is visited exactly once. This is because unloop no longer has a backedge and blocks within subloops don't change parents. - Immediate subloops are summarized by the nearest loop reachable from their exits or exits within nested subloops. - At completion the unloop blocks each have a new parent loop, and each immediate subloop has a new parent. llvm-svn: 137276
-
- Aug 10, 2011
-
-
Devang Patel authored
Distinguish between two copies of one inlined variable. Take 2. llvm-svn: 137253
-
Andrew Trick authored
llvm-svn: 137195
-
- Aug 09, 2011
-
-
Devang Patel authored
llvm-svn: 137095
-
- 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
-
-
Duncan Sands authored
reported at http://habrahabr.ru/blogs/compilers/125626/. llvm-svn: 136865
-
Andrew Trick authored
llvm-svn: 136857
-
Andrew Trick authored
LoopPassManager. The incremental update should be extremely cheap in most cases and can be used in places where it's not feasible to regenerate the entire loop forest. - "Unloop" is a node in the loop tree whose last backedge has been removed. - Perform reverse dataflow on the block inside Unloop to propagate the nearest loop from the block's successors. - For reducible CFG, each block in unloop is visited exactly once. This is because unloop no longer has a backedge and blocks within subloops don't change parents. - Immediate subloops are summarized by the nearest loop reachable from their exits or exits within nested subloops. - At completion the unloop blocks each have a new parent loop, and each immediate subloop has a new parent. llvm-svn: 136844
-
Andrew Trick authored
llvm-svn: 136843
-
- Aug 03, 2011
-
-
Jakub Staszak authored
llvm-svn: 136816
-
Bill Wendling authored
Add this back in for now. There are still a few passes which create unwind instructions at the moment. llvm-svn: 136756
-
Bill Wendling authored
the function, because the UnwindInst is going away. llvm-svn: 136751
-
- Aug 02, 2011
-
-
Andrew Trick authored
llvm-svn: 136677
-
- Aug 01, 2011
-
-
Jakub Staszak authored
one than one successor goes to the same block. llvm-svn: 136638
-
- Jul 31, 2011
-
-
Jakub Staszak authored
llvm-svn: 136588
-
Jakub Staszak authored
llvm-svn: 136587
-
Jakub Staszak authored
it to RHS anyway. llvm-svn: 136586
-
Jakub Staszak authored
decide whether condition is likely to be true this way: x == 0 -> false x < 0 -> false x <= 0 -> false x != 0 -> true x > 0 -> true x >= 0 -> true llvm-svn: 136583
-
- Jul 29, 2011
-
-
Jakub Staszak authored
llvm-svn: 136502
-
Jakub Staszak authored
rounding errors. llvm-svn: 136456
-
Chandler Carruth authored
specified in the same file that the library itself is created. This is more idiomatic for CMake builds, and also allows us to correctly specify dependencies that are missed due to bugs in the GenLibDeps perl script, or change from compiler to compiler. On Linux, this returns CMake to a place where it can relably rebuild several targets of LLVM. I have tried not to change the dependencies from the ones in the current auto-generated file. The only places I've really diverged are in places where I was seeing link failures, and added a dependency. The goal of this patch is not to start changing the dependencies, merely to move them into the correct location, and an explicit form that we can control and change when necessary. This also removes a serialization point in the build because we don't have to scan all the libraries before we begin building various tools. We no longer have a step of the build that regenerates a file inside the source tree. A few other associated cleanups fall out of this. This isn't really finished yet though. After talking to dgregor he urged switching to a single CMake macro to construct libraries with both sources and dependencies in the arguments. Migrating from the two macros to that style will be a follow-up patch. Also, llvm-config is still generated with GenLibDeps.pl, which means it still has slightly buggy dependencies. The internal CMake 'llvm-config-like' macro uses the correct explicitly specified dependencies however. A future patch will switch llvm-config generation (when using CMake) to be based on these deps as well. This may well break Windows. I'm getting a machine set up now to dig into any failures there. If anyone can chime in with problems they see or ideas of how to solve them for Windows, much appreciated. llvm-svn: 136433
-
Jakub Staszak authored
LBH_TAKEN_WEIGHT + LBH_NONTAKEN_WEIGHT = 128 which in _most_ cases reduce number of rounding errors. llvm-svn: 136428
-
- Jul 28, 2011
-
-
Jakub Staszak authored
llvm-svn: 136402
-
Jakub Staszak authored
there is no frequency difference whether condition is in the header or in the latch. llvm-svn: 136398
-
Jakub Staszak authored
llvm-svn: 136278
-
- Jul 27, 2011
-
-
Jeffrey Yasskin authored
C++0x. llvm-svn: 136211
-
Eli Friedman authored
llvm-svn: 136202
-