diff options
author | Richard Guenther <rguenther@suse.de> | 2011-01-14 12:39:09 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-01-14 12:39:09 +0000 |
commit | 8f66db3b32436cd7902dc553cc013dddf5b26b79 (patch) | |
tree | 64dfd052541a93e27fdd0ce2a8bf2535491bcced | |
parent | 6c0c92e6b37e27b14dc3fb8a02ee4e0e8c33b658 (diff) | |
download | gcc-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/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr47281.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr46076.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 5 |
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)) |