Reapply r142781 with fix. Original message:
authorNick Lewycky <nicholas@mxc.ca>
Mon, 24 Oct 2011 06:57:05 +0000 (06:57 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Mon, 24 Oct 2011 06:57:05 +0000 (06:57 +0000)
commit7c3fc5747284a0c6ca4e370f964082c69b42b8dd
tree22fbb227479db4cc3aedf4a6129d57eff6a0085d
parentf46c674a16669518dbb24d4cdd4bfc904dd3b505
Reapply r142781 with fix. Original message:

  Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
  loop header when computing the trip count.

  With this, we now constant evaluate:
    struct ListNode { const struct ListNode *next; int i; };
    static const struct ListNode node1 = {0, 1};
    static const struct ListNode node2 = {&node1, 2};
    static const struct ListNode node3 = {&node2, 3};
    int test() {
      int sum = 0;
      for (const struct ListNode *n = &node3; n != 0; n = n->next)
        sum += n->i;
      return sum;
    }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142790 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ScalarEvolution.cpp
test/Analysis/ScalarEvolution/load.ll