https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77544
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |marxin at gcc dot gnu.org Target Milestone|--- |6.3 --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- The code snippet causes stack overflow as we periodically try to fold PLUS_EXPR: (unsigned int) (d + c) and ~(unsigned int) (302806 >> 0) to MINUS_EXPR: (unsigned int) (d + c) + (unsigned int) -(302806 >> 0) and 1 and so forth, there's part of back-trace: #1584 0x0000000000d52f3a in fold_build2_stat_loc (loc=2147483652, code=PLUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd98, op1=0x7ffff69fac18) at ../../gcc/fold-const.c:12287 #1585 0x00000000016a9ea5 in generic_simplify_MINUS_EXPR (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd98, op1=0x7ffff69facc0) at generic-match.c:12390 #1586 0x00000000016ebbaa in generic_simplify (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd98, op1=0x7ffff69facc0) at generic-match.c:31237 #1587 0x0000000000d42d9e in fold_binary_loc (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd98, op1=0x7ffff69facc0) at ../../gcc/fold-const.c:9159 #1588 0x0000000000d52f3a in fold_build2_stat_loc (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd98, op1=0x7ffff69facc0) at ../../gcc/fold-const.c:12287 #1589 0x0000000000d2083e in associate_trees (loc=2147483652, t1=0x7ffff67efd98, t2=0x7ffff69facc0, code=MINUS_EXPR, type=0x7ffff6a02540) at ../../gcc/fold-const.c:913 #1590 0x0000000000d45f53 in fold_binary_loc (loc=2147483652, code=PLUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67f25e0, op1=0x7ffff67f2620) at ../../gcc/fold-const.c:9679 #1591 0x0000000000d52f3a in fold_build2_stat_loc (loc=2147483652, code=PLUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67f25e0, op1=0x7ffff67f2620) at ../../gcc/fold-const.c:12287 #1592 0x0000000000d2083e in associate_trees (loc=2147483652, t1=0x7ffff67f25e0, t2=0x7ffff67f2620, code=PLUS_EXPR, type=0x7ffff6a02540) at ../../gcc/fold-const.c:913 #1593 0x0000000000d46049 in fold_binary_loc (loc=2147483652, code=PLUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd70, op1=0x7ffff69fac18) at ../../gcc/fold-const.c:9695 #1594 0x0000000000d52f3a in fold_build2_stat_loc (loc=2147483652, code=PLUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd70, op1=0x7ffff69fac18) at ../../gcc/fold-const.c:12287 #1595 0x00000000016a9ea5 in generic_simplify_MINUS_EXPR (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd70, op1=0x7ffff69facc0) at generic-match.c:12390 #1596 0x00000000016ebbaa in generic_simplify (loc=2147483652, code=MINUS_EXPR, type=0x7ffff6a02540, op0=0x7ffff67efd70, op1=0x7ffff69facc0) at generic-match.c:31237