- Feb 24, 2009
-
-
Dan Gohman authored
to more accurately describe what it does. Expand its doxygen comment to describe what the backedge-taken count is and how it differs from the actual iteration count of the loop. Adjust names and comments in associated code accordingly. llvm-svn: 65382
-
Dan Gohman authored
ashr instcombine to help expose this code. And apply the fix to SelectionDAG's copy of this code too. llvm-svn: 65364
-
Dan Gohman authored
handling non-constant strides. No functionality change. llvm-svn: 65363
-
Dan Gohman authored
llvm-svn: 65359
-
Dan Gohman authored
trip counts that use signed comparisons. It's not obviously the best approach for preserving trip count information, and at any rate there isn't anything in the tree right now that makes use of that, so for now always using zero-extensions is preferable. llvm-svn: 65347
-
- Feb 23, 2009
-
-
Dan Gohman authored
so that ScalarEvolution doesn't hang onto a dangling Loop*, which could be a problem if another Loop happens to get allocated at the same address. llvm-svn: 65323
-
Dan Gohman authored
-std-compile-opts sequence, this avoids the need for ScalarEvolution to be rerun before LoopDeletion. llvm-svn: 65318
-
Zhou Sheng authored
llvm-svn: 65314
-
Chris Lattner authored
llvm-svn: 65306
-
- Feb 22, 2009
-
-
Dan Gohman authored
memcpy to match the alignment of the destination. It isn't necessary for making loads and stores handled like the SSE loadu/storeu intrinsics, and it was causing a performance regression in MultiSource/Applications/JM/lencod. The problem appears to have been a memcpy that copies from some highly aligned array into an alloca; the alloca was then being assigned a large alignment, which required codegen to perform dynamic stack-pointer re-alignment, which forced the enclosing function to have a frame pointer, which led to increased spilling. llvm-svn: 65289
-
Dan Gohman authored
-full-lsr code, as well as a GCC warning. llvm-svn: 65288
-
Evan Cheng authored
Only try to sink immediate when TLI is not null. It needs to check if immediate would fit in target addressing field. llvm-svn: 65268
-
- Feb 21, 2009
-
-
Nick Lewycky authored
load(bitcast(char[4] to i32*)) evaluation. llvm-svn: 65246
-
Evan Cheng authored
Teach LSR sink to sink the immediate portion of the common expression back into uses if they fit in address modes of all the uses. llvm-svn: 65215
-
Chris Lattner authored
as legality. Make load sinking and gep sinking more careful: we only do it when it won't pessimize loads from the stack. This has the added benefit of not producing code that is unanalyzable to SROA. llvm-svn: 65209
-
- Feb 20, 2009
-
-
Evan Cheng authored
addresses, part 1. This fixes an obvious logic bug. Previously if the only in-loop use is a PHI, it would return AllUsesAreAddresses as true. llvm-svn: 65178
-
Dan Gohman authored
llvm-svn: 65167
-
Dan Gohman authored
llvm-svn: 65159
-
Dan Gohman authored
llvm-svn: 65157
-
Dan Gohman authored
llvm-svn: 65147
-
Evan Cheng authored
Factor address mode matcher out of codegen prepare to make it available to other passes, e.g. loop strength reduction. llvm-svn: 65134
-
Dan Gohman authored
reduction of address calculations down to basic pointer arithmetic. This is currently off by default, as it needs a few other features before it becomes generally useful. And even when enabled, full strength reduction is only performed when it doesn't increase register pressure, and when several other conditions are true. This also factors out a bunch of exisiting LSR code out of StrengthReduceStridedIVUsers into separate functions, and tidies up IV insertion. This actually decreases register pressure even in non-superhero mode. The change in iv-users-in-other-loops.ll is an example of this; there are two more adds because there are two fewer leas, and there is less spilling. llvm-svn: 65108
-
- Feb 19, 2009
-
-
Dan Gohman authored
since the latter just passes a null reference when debugging is not enabled. llvm-svn: 65060
-
Dan Gohman authored
llvm-svn: 65057
-
- Feb 18, 2009
-
-
Dan Gohman authored
trip count value when the original loop iteration condition is signed and the canonical induction variable won't undergo signed overflow. This isn't required for correctness; it just preserves more information about original loop iteration values. Add a getTruncateOrSignExtend method to ScalarEvolution, following getTruncateOrZeroExtend. llvm-svn: 64918
-
Dan Gohman authored
llvm-svn: 64917
-
Dan Gohman authored
llvm-svn: 64888
-
Dan Gohman authored
are multiple IV's in a loop, some of them may under go signed or unsigned wrapping even if the IV that's used in the loop exit condition doesn't. Restrict sign-extension-elimination and zero-extension-elimination to only those that operate on the original loop-controlling IV. llvm-svn: 64866
-
Dan Gohman authored
llvm-svn: 64859
-
- Feb 17, 2009
-
-
Dan Gohman authored
llvm-svn: 64811
-
Dan Gohman authored
modified in a way that may effect the trip count calculation. Change IndVars to use this method when it rewrites pointer or floating-point induction variables instead of using a doInitialization method to sneak these changes in before ScalarEvolution has a chance to see the loop. This eliminates the need for LoopPass to depend on ScalarEvolution. llvm-svn: 64810
-
Chris Lattner authored
eliminate all the extensions and all but the one required truncate from the testcase, but the or/and/shift stuff still isn't zapped. llvm-svn: 64809
-
Dan Gohman authored
llvm-svn: 64784
-
Dan Gohman authored
llvm-svn: 64766
-
Evan Cheng authored
llvm-svn: 64703
-
Dan Gohman authored
llvm-svn: 64702
-
Dan Gohman authored
of an alloca or global variable. llvm-svn: 64693
-
- Feb 16, 2009
-
-
Dan Gohman authored
been written for is no longer relevant with the elimination of signed and unsigned types. llvm-svn: 64625
-
Dan Gohman authored
Enhance instcombine to use the preferred field of GetOrEnforceKnownAlignment in more cases, so that regular IR operations are optimized in the same way that the intrinsics currently are. llvm-svn: 64623
-
- Feb 15, 2009
-
-
Nick Lewycky authored
when I was looking at functions used by python. Highlights include, better largefile support (64-bit file sizes on 32-bit systems), fputs string is nocapture, popen/pclose added (popen being noalias return), modf and frexp and friends. Also added some missing 'break' statements and combined identical sections. llvm-svn: 64615
-