Subject: SCM_UNPACK triggers Werror=volatile in c++20

From: Tom de Vries <[email-masked]>
Date: Wed, 16 Aug 2023 08:41:14 +0200

Hi,

I tried to build gdb with guile support with -std=c++20 and ran into:
...
In file included from /usr/include/guile/2.0/libguile/__scm.h:479,
                  from /usr/include/guile/2.0/libguile.h:31,
                  from /data/vries/gdb/src/gdb/guile/guile-internal.h:30,
                  from /data/vries/gdb/src/gdb/guile/guile.c:37:
/usr/include/guile/2.0/libguile/gc.h: In function ‘scm_unused_struct* 
scm_cell(scm_t_bits, scm_t_bits)’:
/usr/include/guile/2.0/libguile/tags.h:98:63: error: using value of 
assignment with ‘volatile’-qualified left operand is deprecated 
[-Werror=volatile]
    98 | #   define SCM_UNPACK(x) ((scm_t_bits) (0? (*(volatile SCM 
*)0=(x)): x))
       |                                            ~~~~~~~~~~~~~~~~~~~^~~~~
...

FWIW, I ran into the same with guile 3.0.x.

Thanks,
- Tom

GDB PR: https://sourceware.org/bugzilla/show_bug.cgi?id=30767