re PR middle-end/47281 (error: non-trivial conversion at assignment)
2011-01-14 Richard Guenther <rguenther@suse.de> PR middle-end/47281 Revert 2011-01-11 Richard Guenther <rguenther@suse.de> PR tree-optimization/46076 * tree-ssa.c (useless_type_conversion_p): Conversions from unprototyped to empty argument list function types are useless. * gcc.dg/torture/pr47281.c: New testcase. * gcc.dg/tree-ssa/pr46076.c: XFAIL. From-SVN: r168781
This commit is contained in:
parent
6c0c92e6b3
commit
8f66db3b32
@ -1,3 +1,13 @@
|
||||
2011-01-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/47281
|
||||
Revert
|
||||
2011-01-11 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/46076
|
||||
* tree-ssa.c (useless_type_conversion_p): Conversions from
|
||||
unprototyped to empty argument list function types are useless.
|
||||
|
||||
2011-01-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/47286
|
||||
|
@ -1,3 +1,9 @@
|
||||
2011-01-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/47281
|
||||
* gcc.dg/torture/pr47281.c: New testcase.
|
||||
* gcc.dg/tree-ssa/pr46076.c: XFAIL.
|
||||
|
||||
2011-01-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/47286
|
||||
|
23
gcc/testsuite/gcc.dg/torture/pr47281.c
Normal file
23
gcc/testsuite/gcc.dg/torture/pr47281.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* { dg-do compile } */
|
||||
|
||||
struct T;
|
||||
typedef void F(void);
|
||||
|
||||
F* aux(void (*x)())
|
||||
{
|
||||
return x;
|
||||
}
|
||||
|
||||
void make_mess (int);
|
||||
|
||||
F*
|
||||
get_funloc (void (*x)(int), F* (*y)())
|
||||
{
|
||||
return y(x);
|
||||
}
|
||||
|
||||
F*
|
||||
foo ()
|
||||
{
|
||||
return get_funloc (make_mess, aux);
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
/* { dg-do link } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
extern void link_error (void);
|
||||
extern void link_error (void) { /* XFAIL */ }
|
||||
|
||||
typedef unsigned char(*Calculable)(void);
|
||||
|
||||
|
@ -1410,11 +1410,6 @@ useless_type_conversion_p (tree outer_type, tree inner_type)
|
||||
if (!prototype_p (outer_type))
|
||||
return true;
|
||||
|
||||
/* A conversion between unprototyped and empty argument list is ok. */
|
||||
if (TYPE_ARG_TYPES (outer_type) == void_list_node
|
||||
&& !prototype_p (inner_type))
|
||||
return true;
|
||||
|
||||
/* If the unqualified argument types are compatible the conversion
|
||||
is useless. */
|
||||
if (TYPE_ARG_TYPES (outer_type) == TYPE_ARG_TYPES (inner_type))
|
||||
|
Loading…
Reference in New Issue
Block a user