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.