c-typeck.c (convert_arguments): When comparing for enumeral type equality, use TYPE_MAIN_VARIANT.
* c-typeck.c (convert_arguments): When comparing for enumeral type equality, use TYPE_MAIN_VARIANT. * gcc.dg/Wconversion.c: New tests. From-SVN: r46559
This commit is contained in:
parent
30151c7b3b
commit
a38b987a89
|
@ -1,3 +1,9 @@
|
|||
2001-10-26 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* c-typeck.c (convert_arguments): When comparing for enumeral
|
||||
type equality, use TYPE_MAIN_VARIANT.
|
||||
* gcc.dg/Wconversion.c: New tests.
|
||||
|
||||
2001-10-26 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* s390/s390.c: Fix comment typos.
|
||||
|
|
|
@ -1651,7 +1651,8 @@ convert_arguments (typelist, values, name, fundecl)
|
|||
tree type1 = TREE_TYPE (would_have_been);
|
||||
|
||||
if (TREE_CODE (type) == ENUMERAL_TYPE
|
||||
&& type == TREE_TYPE (val))
|
||||
&& (TYPE_MAIN_VARIANT (type)
|
||||
== TYPE_MAIN_VARIANT (TREE_TYPE (val))))
|
||||
/* No warning if function asks for enum
|
||||
and the actual arg is that enum type. */
|
||||
;
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/* Source: PR 137.
|
||||
|
||||
We would not warn about passing an enum, but would warn about
|
||||
passing a enum that was part of an array. TYPE_MAIN_VARIANT was
|
||||
not used in the appropriate place in the warning code. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options -Wconversion } */
|
||||
|
||||
typedef enum { a } __attribute__((packed)) t;
|
||||
void f(t x) {}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
t x[2], y;
|
||||
f(x[0]); /* { dg-bogus "different width" } */
|
||||
f(y); /* { dg-bogus "different width" } */
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue