c-typeck.c (function_types_compatible_p): Ignore incompatible 'volatile' qualifiers on a function's return type in GNU mode.
2003-04-29 Geoffrey Keating <geoffk@apple.com> * c-typeck.c (function_types_compatible_p): Ignore incompatible 'volatile' qualifiers on a function's return type in GNU mode. Index: testsuite/ChangeLog 2003-04-29 Geoffrey Keating <geoffk@apple.com> * gcc.dg/noreturn-5.c: New file. * gcc.dg/noreturn-6.c: New file. From-SVN: r66281
This commit is contained in:
parent
9c0631a756
commit
a6fdc0868e
@ -1,3 +1,8 @@
|
||||
2003-04-29 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* c-typeck.c (function_types_compatible_p): Ignore incompatible
|
||||
'volatile' qualifiers on a function's return type in GNU mode.
|
||||
|
||||
2003-04-29 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* expr.c (emit_group_load): Dump parallels of simd types to
|
||||
|
@ -630,9 +630,23 @@ function_types_compatible_p (f1, f2)
|
||||
/* 1 if no need for warning yet, 2 if warning cause has been seen. */
|
||||
int val = 1;
|
||||
int val1;
|
||||
tree ret1, ret2;
|
||||
|
||||
if (!(TREE_TYPE (f1) == TREE_TYPE (f2)
|
||||
|| (val = comptypes (TREE_TYPE (f1), TREE_TYPE (f2)))))
|
||||
ret1 = TREE_TYPE (f1);
|
||||
ret2 = TREE_TYPE (f2);
|
||||
|
||||
/* 'volatile' qualifiers on a function's return type mean the function
|
||||
is noreturn. */
|
||||
if (pedantic && TYPE_VOLATILE (ret1) != TYPE_VOLATILE (ret2))
|
||||
pedwarn ("function return types not compatible due to `volatile'");
|
||||
if (TYPE_VOLATILE (ret1))
|
||||
ret1 = build_qualified_type (TYPE_MAIN_VARIANT (ret1),
|
||||
TYPE_QUALS (ret1) & ~TYPE_QUAL_VOLATILE);
|
||||
if (TYPE_VOLATILE (ret2))
|
||||
ret2 = build_qualified_type (TYPE_MAIN_VARIANT (ret2),
|
||||
TYPE_QUALS (ret2) & ~TYPE_QUAL_VOLATILE);
|
||||
val = comptypes (ret1, ret2);
|
||||
if (val == 0)
|
||||
return 0;
|
||||
|
||||
args1 = TYPE_ARG_TYPES (f1);
|
||||
|
@ -1,5 +1,8 @@
|
||||
2003-04-29 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* gcc.dg/noreturn-5.c: New file.
|
||||
* gcc.dg/noreturn-6.c: New file.
|
||||
|
||||
* gcc.c-torture/compile/inline-1.c: New file.
|
||||
|
||||
2003-04-29 Mark Mitchell <mark@codesourcery.com>
|
||||
|
7
gcc/testsuite/gcc.dg/noreturn-5.c
Normal file
7
gcc/testsuite/gcc.dg/noreturn-5.c
Normal file
@ -0,0 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=gnu99" } */
|
||||
/* Check that 'noreturn' and 'volatile extern' are compatible.
|
||||
The testsuite uses -ansi -pedantic-errors by default, so this has
|
||||
to override. */
|
||||
extern void xxx (int) __attribute__((noreturn));
|
||||
__volatile extern void xxx (int);
|
4
gcc/testsuite/gcc.dg/noreturn-6.c
Normal file
4
gcc/testsuite/gcc.dg/noreturn-6.c
Normal file
@ -0,0 +1,4 @@
|
||||
/* { dg-do compile } */
|
||||
/* Check for volatile behaviour. */
|
||||
extern int xxx (void);
|
||||
volatile extern int xxx (void); /* { dg-error "not compatible" } */
|
Loading…
Reference in New Issue
Block a user