diff options
author | Joseph Myers <josmyers@redhat.com> | 2024-11-22 20:33:10 +0000 |
---|---|---|
committer | Joseph Myers <josmyers@redhat.com> | 2024-11-22 20:33:10 +0000 |
commit | 84a335eb4f9641a471184d86900609dd97215218 (patch) | |
tree | 4a0b1d3a538c3956c0c11918562e346483a0cfdf /gcc/gcc-urlifier.cc | |
parent | 684595188dea02d246edb66106d82bb7a9a22d79 (diff) | |
download | gcc-84a335eb4f9641a471184d86900609dd97215218.zip gcc-84a335eb4f9641a471184d86900609dd97215218.tar.gz gcc-84a335eb4f9641a471184d86900609dd97215218.tar.bz2 |
c: Fix typeof_unqual handling of qualified array types [PR112841]
As reported in bug 112841, typeof_unqual fails to remove qualifiers
from qualified array types. In C23 (unlike in previous standard
versions), array types are considered to have the qualifiers of the
element type, so typeof_unqual should remove such qualifiers (and an
example in the standard shows that is as intended). Fix this by
calling strip_array_types when checking for the presence of
qualifiers. (The reason we check for qualifiers rather than just
using TYPE_MAIN_VARIANT unconditionally is to avoid, as a quality of
implementation matter, unnecessarily losing typedef information in the
case where the type is already unqualified.)
Bootstrapped with no regressions for x86_64-pc-linux-gnu.
PR c/112841
gcc/c/
* c-parser.cc (c_parser_typeof_specifier): Call strip_array_types
when checking for type qualifiers for typeof_unqual.
gcc/testsuite/
* gcc.dg/c23-typeof-4.c: New test.
Diffstat (limited to 'gcc/gcc-urlifier.cc')
0 files changed, 0 insertions, 0 deletions