aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcc-urlifier.cc
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-11-22 20:33:10 +0000
committerJoseph Myers <josmyers@redhat.com>2024-11-22 20:33:10 +0000
commit84a335eb4f9641a471184d86900609dd97215218 (patch)
tree4a0b1d3a538c3956c0c11918562e346483a0cfdf /gcc/gcc-urlifier.cc
parent684595188dea02d246edb66106d82bb7a9a22d79 (diff)
downloadgcc-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