https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112929
--- Comment #12 from Li Pan <pan2.li at intel dot com> --- (In reply to Patrick O'Neill from comment #0) > Testcase: > int printf(char *, ...); > int a, b, l, i, p, q, t, n, o; > int *volatile c; > static int j; > static struct pack_1_struct d; > long e; > char m = 5; > short s; > #pragma pack(1) > struct pack_1_struct { > long c; > int d; > int e; > int f; > int g; > int h; > int i; > } h, r = {1}, *f = &h, *volatile g; > int main() { > int u; > j = 0; > for (; j < 9; ++j) { > u = ++t ? a : 0; > if (u) { > int *v = &d.d; > *v = g || e; > *c = 0; > *f = h; > } > s = l && c; > o = i; > d.f || (p = 0); > q |= n; > } > r = *f; > printf("b: %d\n", b); > printf("m: %d\n", m); > } > > Commands: > rv64gc: > > /scratch/tc-testing/tc-dec-8-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > > -march=rv64gc -mabi=lp64d -O3 red.c -o rv64gc.out > > QEMU_CPU=rv64,vlen=128,v=true,vext_spec=v1.0 > > /scratch/tc-testing/tc-dec-8-trunk/build-rv64gcv/bin/qemu-riscv64 rv64gc.out > b: 0 > m: 5 > > rv64gcv: > > /scratch/tc-testing/tc-dec-8-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > > -march=rv64gcv -mabi=lp64d -O3 red.c -o rv64gcv.out > > QEMU_CPU=rv64,vlen=128,v=true,vext_spec=v1.0 > > /scratch/tc-testing/tc-dec-8-trunk/build-rv64gcv/bin/qemu-riscv64 > > rv64gcv.out > b: 0 > m: 0 > > Nothing touches the m variable so at the end it should equal 5. > > Commenting out the preceding printf("b: %d\n", b); statement causes the > testcase to pass successfully (and doesn't cause much change to the > assembly): > https://godbolt.org/z/Erzzqxo8q Could you please help to share the commit id of GCC for the above test? Would like to double check if the upstream still have this issue.