llvm/test
David Peixotto dace98d805 Fix loop rerolling pass failure with non-consant loop lower bound
The loop rerolling pass was failing with an assertion failure from a
failed cast on loops like this:

  void foo(int *A, int *B, int m, int n) {
    for (int i = m; i < n; i+=4) {
      A[i+0] = B[i+0] * 4;
      A[i+1] = B[i+1] * 4;
      A[i+2] = B[i+2] * 4;
      A[i+3] = B[i+3] * 4;
    }
  }

The code was casting the SCEV-expanded code for the new
induction variable to a phi-node. When the loop had a non-constant
lower bound, the SCEV expander would end the code expansion with an
add insted of a phi node and the cast would fail.

It looks like the cast to a phi node was only needed to get the
induction variable value coming from the backedge to compute the end
of loop condition. This patch changes the loop reroller to compare
the induction variable to the number of times the backedge is taken
instead of the iteration count of the loop. In other words, we stop
the loop when the current value of the induction variable ==
IterationCount-1. Previously, the comparison was comparing the
induction variable value from the next iteration == IterationCount.

This problem only seems to occur on 32-bit targets. For some reason,
the loop is not rerolled on 64-bit targets.

PR18290


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198425 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-03 17:20:01 +00:00
..
Analysis BasicAA: Use reachabilty instead of dominance for checking value equality in phi 2014-01-03 05:47:03 +00:00
Assembler Allow addrspacecast in global aliases 2014-01-02 20:55:01 +00:00
Bindings Update the ML test to expect the new string format of getStringRepresentation. 2013-12-19 23:38:09 +00:00
Bitcode Fold vector selects with undef elements in the condition. Fixes PR18319. 2013-12-31 19:30:47 +00:00
BugPoint Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
CodeGen [RegAlloc] Make tryInstructionSplit less aggressive. 2014-01-02 22:47:22 +00:00
DebugInfo Revert "Debug Info: Type Units: Simplify type hashing using IR-provided unique names." 2014-01-03 04:49:04 +00:00
ExecutionEngine Remove empty MCJIT/load-object-a.ll since r196641. 2013-12-07 06:17:10 +00:00
Feature Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
FileCheck FileCheck: fix a bug with multiple --check-prefix options. Similar to r194565 2013-11-20 13:25:05 +00:00
Instrumentation [ASan] Fix the tests broken by r198018 to check for private linkage of ASan-generated globals. 2013-12-25 17:06:04 +00:00
Integer
JitListener Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
Linker Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
LTO Resubmit r196544: Apply transformation on OS X 10.9+ and iOS 7.0+: pow(10, x) ―> __exp10(x) 2013-12-12 01:55:04 +00:00
MC [arm] Add softvfp to supported FPU names. 2014-01-02 15:50:02 +00:00
Object Correct word hyphenations 2013-12-05 05:44:44 +00:00
Other Removed llvm-cov.test from Other folder. 2013-12-12 20:29:54 +00:00
TableGen [TableGen] Correctly generate implicit anonymous prototype defs in multiclasses 2014-01-02 20:47:09 +00:00
tools Teach the llvm-readobj COFF dumper to dump debug line tables from object files 2013-12-19 11:37:14 +00:00
Transforms Fix loop rerolling pass failure with non-consant loop lower bound 2014-01-03 17:20:01 +00:00
Unit
Verifier Fix all the verifier tests I added for address spaces. 2014-01-02 21:09:05 +00:00
YAMLParser
.clang-format Add .clang-format without column limit to subdirectory tests/. 2013-11-19 04:26:05 +00:00
CMakeLists.txt check-llvm: Ask llvm-config about assertion mode, instead of llc. 2013-12-03 23:22:25 +00:00
lit.cfg check-llvm: Ask llvm-config about assertion mode, instead of llc. 2013-12-03 23:22:25 +00:00
lit.site.cfg.in [CMake] Add missing set_output_directory after Takumi's change in r198205. 2014-01-02 19:47:45 +00:00
Makefile [OCaml] Dynamically link LLVM on --enable-shared builds 2013-11-12 20:55:49 +00:00
Makefile.tests
TestRunner.sh