diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc index 15b540646c22a88dd8fcda96a31ba20dcdebf356..4ed7a07cb7fbf6e556d47526d79ea89badc75b96 100644 --- a/gcc/gimplify.cc +++ b/gcc/gimplify.cc @@ -3344,6 +3344,9 @@ recalculate_side_effects (tree t) return; default: + if (code == SSA_NAME) + /* No side-effects. */ + return; gcc_unreachable (); } } diff --git a/gcc/testsuite/gcc.c-torture/compile/pr113228.c b/gcc/testsuite/gcc.c-torture/compile/pr113228.c new file mode 100644 index 0000000000000000000000000000000000000000..f46018442f90024166089f04d8390ae59682155f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr113228.c @@ -0,0 +1,17 @@ +/* PR tree-optimization/113228 */ + +int a, b, c, d, i; + +void +foo (void) +{ + int k[3] = {}; + int *l = &a; + for (d = 0; c; c--) + for (i = 0; i <= 9; i++) + { + for (b = 1; b <= 4; b++) + k[0] = k[0] == 0; + *l |= k[d]; + } +}