Fix a severe compile time problem when forming large SCEV expressions.
authorAndrew Trick <atrick@apple.com>
Wed, 31 Jul 2013 02:43:40 +0000 (02:43 +0000)
committerAndrew Trick <atrick@apple.com>
Wed, 31 Jul 2013 02:43:40 +0000 (02:43 +0000)
This fix is very lightweight. The same fix already existed for AddRec
but was missing for NAry expressions.

This is obviously an improvement and I'm unsure how to test compile
time problems.

Patch by Xiaoyi Guo!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187475 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ScalarEvolution.cpp

index 85290d6e1b88e73a4e6490ab1b284d906acfa41f..f5d095b9781b3b43ab1de028c7d1d2e7bd95d743 100644 (file)
@@ -585,6 +585,9 @@ namespace {
 
         // Lexicographically compare n-ary expressions.
         unsigned LNumOps = LC->getNumOperands(), RNumOps = RC->getNumOperands();
+        if (LNumOps != RNumOps)
+          return (int)LNumOps - (int)RNumOps;
+
         for (unsigned i = 0; i != LNumOps; ++i) {
           if (i >= RNumOps)
             return 1;