llvm-mirror/lib/Transforms
James Molloy 3fdcf4e64c [LSR] Don't try and create post-inc expressions on non-rotated loops
If a loop is not rotated (for example when optimizing for size), the latch is not the backedge. If we promote an expression to post-inc form, we not only increase register pressure and add a COPY for that IV expression but for all IVs!

Motivating testcase:

    void f(float *a, float *b, float *c, int n) {
      while (n-- > 0)
        *c++ = *a++ + *b++;
    }

It's imperative that the pointer increments be located in the latch block and not the header block; if not, we cannot use post-increment loads and stores and we have to keep both the post-inc and pre-inc values around until the end of the latch which bloats register usage.

llvm-svn: 278658
2016-08-15 07:53:03 +00:00
..
Coroutines [Coroutines] Move class into anonymous namespace. 2016-08-12 08:47:13 +00:00
Hello Add auto-exporting of symbols from tools so that plugins work on Windows 2016-05-26 11:16:43 +00:00
InstCombine constify InstCombine::foldAllocaCmp. NFC. 2016-08-12 17:13:28 +00:00
Instrumentation Fix some Clang-tidy modernize and Include What You Use warnings. 2016-08-11 17:20:18 +00:00
IPO Fine tuning of sample profile propagation algorithm. 2016-08-12 16:22:12 +00:00
ObjCARC Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
Scalar [LSR] Don't try and create post-inc expressions on non-rotated loops 2016-08-15 07:53:03 +00:00
Utils [Inliner] Don't treat inalloca allocas as static 2016-08-12 22:23:04 +00:00
Vectorize [LSV] Use a set rather than an ArraySlice at the end of getVectorizablePrefix. NFC 2016-08-13 00:04:12 +00:00
CMakeLists.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
LLVMBuild.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00