aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-01-14 12:39:09 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-01-14 12:39:09 +0000
commit8f66db3b32436cd7902dc553cc013dddf5b26b79 (patch)
tree64dfd052541a93e27fdd0ce2a8bf2535491bcced
parent6c0c92e6b37e27b14dc3fb8a02ee4e0e8c33b658 (diff)
downloadgcc-8f66db3b32436cd7902dc553cc013dddf5b26b79.zip
gcc-8f66db3b32436cd7902dc553cc013dddf5b26b79.tar.gz
gcc-8f66db3b32436cd7902dc553cc013dddf5b26b79.tar.bz2
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47281.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr46076.c2
-rw-r--r--gcc/tree-ssa.c5
5 files changed, 40 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 939d7f1..ad614d3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,15 @@
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
* tree-ssa-structalias.c (new_var_info): Register variables
are global.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ed3a787..c67c37c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
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
* gcc.dg/tree-ssa/pr47286.c: New testcase.
diff --git a/gcc/testsuite/gcc.dg/torture/pr47281.c b/gcc/testsuite/gcc.dg/torture/pr47281.c
new file mode 100644
index 0000000..517e854
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr47281.c
@@ -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);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c b/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
index a2777a6..e9dc434 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
@@ -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);
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index aa797e2..7bd01f8 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -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))