+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
+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
--- /dev/null
+/* { 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);
+}
/* { dg-do link } */
/* { dg-options "-O2" } */
-extern void link_error (void);
+extern void link_error (void) { /* XFAIL */ }
typedef unsigned char(*Calculable)(void);
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))