Skip to content
Snippets Groups Projects
Commit 84a335eb authored by Joseph Myers's avatar Joseph Myers
Browse files

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.
parent 68459518
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment