llvm-project
llvm-project copied to clipboard
timeout:infinite recursion in ScalarEvolution -O3
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