diff options
author | Richard Guenther <rguenther@suse.de> | 2011-03-15 13:39:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-03-15 13:39:28 +0000 |
commit | 930672adb7c3ae012e0af46eb19b0e8de1974cfb (patch) | |
tree | 21dbe136eadd04262c13f6f277122dfec08e0839 /gcc | |
parent | c7ee7b4534f5730263f9d653d4c8d58c3ea02acf (diff) | |
download | gcc-930672adb7c3ae012e0af46eb19b0e8de1974cfb.zip gcc-930672adb7c3ae012e0af46eb19b0e8de1974cfb.tar.gz gcc-930672adb7c3ae012e0af46eb19b0e8de1974cfb.tar.bz2 |
re PR middle-end/47650 (wrong output of print_generic_decl() called from a plugin)
2011-03-15 Richard Guenther <rguenther@suse.de>
PR middle-end/47650
* tree-pretty-print.c (dump_function_declaration): Properly
dump unprototyped and varargs function types.
* gfortran.dg/c_f_pointer_tests_3.f90: Adjust.
* gfortran.dg/ishft_4.f90: Likewise.
* gfortran.dg/leadz_trailz_3.f90: Likewise.
From-SVN: r170995
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/ishft_4.f90 | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 | 2 | ||||
-rw-r--r-- | gcc/tree-pretty-print.c | 20 |
6 files changed, 29 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc5f897..d3f2eef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2011-03-15 Richard Guenther <rguenther@suse.de> + PR middle-end/47650 + * tree-pretty-print.c (dump_function_declaration): Properly + dump unprototyped and varargs function types. + +2011-03-15 Richard Guenther <rguenther@suse.de> + PR tree-optimization/13954 * tree-ssa-sccvn.c (vn_reference_lookup_3): Look through memcpy and friends. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0257a77..753f900 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2011-03-15 Richard Guenther <rguenther@suse.de> + PR middle-end/47650 + * gfortran.dg/c_f_pointer_tests_3.f90: Adjust. + * gfortran.dg/ishft_4.f90: Likewise. + * gfortran.dg/leadz_trailz_3.f90: Likewise. + +2011-03-15 Richard Guenther <rguenther@suse.de> + PR tree-optimization/13954 * g++.dg/tree-ssa/pr13954.C: New testcase. diff --git a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 index 3b28f52..f7d6fa7 100644 --- a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 +++ b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 @@ -30,6 +30,6 @@ end program test ! { dg-final { scan-tree-dump-times " fptr = .integer.kind=4. .. cptr" 1 "original" } } ! ! Check c_f_procpointer -! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. .void.. cfunptr;" 1 "original" } } +! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. ... cfunptr;" 1 "original" } } ! ! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/ishft_4.f90 b/gcc/testsuite/gfortran.dg/ishft_4.f90 index 4e2ad2b..0315c7f 100644 --- a/gcc/testsuite/gfortran.dg/ishft_4.f90 +++ b/gcc/testsuite/gfortran.dg/ishft_4.f90 @@ -35,6 +35,6 @@ end program ! -- once in the function definition itself ! -- plus as many times as the function is called ! -! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 5 "original" } } -! { dg-final { scan-tree-dump-times "bar *\\\(\\\)" 5 "original" } } +! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 6 "original" } } +! { dg-final { scan-tree-dump-times "bar *\\\(\\\)" 6 "original" } } ! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 b/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 index b54a11f..f8466ff 100644 --- a/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 +++ b/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 @@ -26,5 +26,5 @@ end program ! -- once in the function definition itself ! -- plus as many times as the function is called ! -! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 7 "original" } } +! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 8 "original" } } ! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 12ef388..f2f5a22 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -232,23 +232,27 @@ dump_function_declaration (pretty_printer *buffer, tree node, pp_space (buffer); pp_character (buffer, '('); - /* Print the argument types. The last element in the list is a VOID_TYPE. - The following avoids printing the last element. */ + /* Print the argument types. */ arg = TYPE_ARG_TYPES (node); - while (arg && TREE_CHAIN (arg) && arg != error_mark_node) + while (arg && arg != void_list_node && arg != error_mark_node) { - wrote_arg = true; - dump_generic_node (buffer, TREE_VALUE (arg), spc, flags, false); - arg = TREE_CHAIN (arg); - if (TREE_CHAIN (arg) && TREE_CODE (TREE_CHAIN (arg)) == TREE_LIST) + if (wrote_arg) { pp_character (buffer, ','); pp_space (buffer); } + wrote_arg = true; + dump_generic_node (buffer, TREE_VALUE (arg), spc, flags, false); + arg = TREE_CHAIN (arg); } - if (!wrote_arg) + /* Drop the trailing void_type_node if we had any previous argument. */ + if (arg == void_list_node && !wrote_arg) pp_string (buffer, "void"); + /* Properly dump vararg function types. */ + else if (!arg && wrote_arg) + pp_string (buffer, ", ..."); + /* Avoid printing any arg for unprototyped functions. */ pp_character (buffer, ')'); } |