re PR c/89734 (const qualifier on return type not erased inside __typeof__)
PR c/89734 * c-decl.c (grokdeclarator): Call c_build_qualified_type on function return type even if quals_used is 0. Formatting fixes. * gcc.dg/pr89734.c: New test. From-SVN: r269789
This commit is contained in:
parent
7babd3e4f1
commit
855cd9b166
|
@ -1,3 +1,9 @@
|
|||
2019-03-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/89734
|
||||
* c-decl.c (grokdeclarator): Call c_build_qualified_type on function
|
||||
return type even if quals_used is 0. Formatting fixes.
|
||||
|
||||
2019-03-14 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* c-tree.h (enum c_declspec_il): New.
|
||||
|
|
|
@ -6611,10 +6611,12 @@ grokdeclarator (const struct c_declarator *declarator,
|
|||
quals_used &= TYPE_QUAL_ATOMIC;
|
||||
if (quals_used && VOID_TYPE_P (type) && really_funcdef)
|
||||
pedwarn (specs_loc, 0,
|
||||
"function definition has qualified void return type");
|
||||
"function definition has qualified void "
|
||||
"return type");
|
||||
else
|
||||
warning_at (specs_loc, OPT_Wignored_qualifiers,
|
||||
"type qualifiers ignored on function return type");
|
||||
"type qualifiers ignored on function "
|
||||
"return type");
|
||||
|
||||
/* Ensure an error for restrict on invalid types; the
|
||||
DR#423 resolution is not entirely clear about
|
||||
|
@ -6624,8 +6626,7 @@ grokdeclarator (const struct c_declarator *declarator,
|
|||
&& (!POINTER_TYPE_P (type)
|
||||
|| !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type))))
|
||||
error_at (loc, "invalid use of %<restrict%>");
|
||||
if (quals_used)
|
||||
type = c_build_qualified_type (type, quals_used);
|
||||
type = c_build_qualified_type (type, quals_used);
|
||||
}
|
||||
type_quals = TYPE_UNQUALIFIED;
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-03-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/89734
|
||||
* gcc.dg/pr89734.c: New test.
|
||||
|
||||
2019-03-18 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR tree-optimization/89720
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* PR c/89734 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
typedef const int CI;
|
||||
typedef _Atomic int AI;
|
||||
|
||||
CI foo (void);
|
||||
const int foo (void);
|
||||
|
||||
AI baz (void);
|
||||
_Atomic int baz (void);
|
Loading…
Reference in New Issue