llvm-project icon indicating copy to clipboard operation
llvm-project copied to clipboard

timeout:infinite recursion in ScalarEvolution -O3

Open younglx643 opened this issue 3 years ago • 0 comments

It seems cause infinite recursion when use -O3. godbolt: https://godbolt.org/z/ej1jEsT6W

sourcecode:

#include <stdint.h>
int a() {
  int b, c;
  uint32_t d;
  for (;;)
    if (d + (d = 0 >= b)) {
      b = 3;
      for (; b <= 58; b++) {
        uint32_t *e = &d;
        *e += ((c || b) & d ^ (0 || 4)) + 3;
      }
    }
  return 0;
}

gdb backtrace:

#0  llvm::cast<llvm::SCEVConstant, llvm::SCEV const> (Val=0x555555968310)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Support/Casting.h:268
#1  0x00007ffff38e9c15 in llvm::SCEV::getType (this=<optimized out>)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:385
#2  0x00007ffff3904a1c in llvm::ScalarEvolution::getZeroExtendExpr (this=this@entry=0x555555931580, Op=0x555555968310, Ty=Ty@entry=0x555555603030,
    Depth=Depth@entry=0) at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:1537
#3  0x00007ffff3917554 in llvm::ScalarEvolution::getUDivExpr (this=this@entry=0x555555931580, LHS=<optimized out>, RHS=RHS@entry=0x555555962970)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:3208
#4  0x00007ffff3904ea1 in llvm::ScalarEvolution::getZeroExtendExpr (this=0x555555931580, Op=<optimized out>, Ty=0x555555603010, Depth=2)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:315
#5  0x00007ffff3904ae8 in llvm::ScalarEvolution::getZeroExtendExpr (this=0x555555931580, Op=0x55555598bba0, Ty=0x555555603010, Depth=1)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:84
#6  0x00007ffff3905455 in llvm::ScalarEvolution::getZeroExtendExpr (this=this@entry=0x555555931580, Op=Op@entry=0x55555598bc00, Ty=Ty@entry=0x555555603010,
    Depth=Depth@entry=0) at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:1796
#7  0x00007ffff3917477 in llvm::ScalarEvolution::getUDivExpr (this=0x555555931580, LHS=<optimized out>, RHS=<optimized out>)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:3177
#8  0x00007ffff3917907 in llvm::ScalarEvolution::getUDivExpr (this=this@entry=0x555555931580, LHS=<optimized out>, RHS=RHS@entry=0x5555559682d0)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:201
#9  0x00007ffff3904ea1 in llvm::ScalarEvolution::getZeroExtendExpr (this=0x555555931580, Op=<optimized out>, Ty=0x555555602ff0, Depth=3)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:315
#10 0x00007ffff3904ae8 in llvm::ScalarEvolution::getZeroExtendExpr (this=0x555555931580, Op=0x55555598bf40, Ty=0x555555602ff0, Depth=2)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:84
#11 0x00007ffff3905455 in llvm::ScalarEvolution::getZeroExtendExpr (this=0x555555931580, Op=<optimized out>, Ty=0x555555602ff0, Depth=1)
    at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:1796
#12 0x00007ffff3904fca in llvm::ScalarEvolution::getZeroExtendExpr (this=this@entry=0x555555931580, Op=Op@entry=0x55555598c000, Ty=Ty@entry=0x555555602ff0,
    Depth=Depth@entry=0) at /home/ylx/project_retargetabl/branch_test/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:1763

younglx643 avatar Oct 17 '22 09:10 younglx643