summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorjkratoch <jkratoch@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-13 22:32:40 +0000
committerjkratoch <jkratoch@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-13 22:32:40 +0000
commit932501f94a46dbc8dc4a6bf3ceb7eaa1640181f2 (patch)
tree24049e95658da009e3b8bd1958b7b0ead304b317 /libiberty
parentce673d9a757460240add1503c73e87d61738f872 (diff)
downloadgcc-932501f94a46dbc8dc4a6bf3ceb7eaa1640181f2.tar.gz
include/
* demangle.h (DMGL_RET_POSTFIX): Extend the comment. (DMGL_RET_DROP): New. libiberty/ * cp-demangle.c (d_print_comp) <DEMANGLE_COMPONENT_FUNCTION_TYPE>: Do not pass DMGL_RET_POSTFIX or DMGL_RET_DROP. Support DMGL_RET_DROP. * testsuite/demangle-expected: New testcases for --ret-drop. * testsuite/test-demangle.c: Document --ret-drop in a comment. (main): New variable ret_drop, fill it, call cplus_demangle with it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175000 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog8
-rw-r--r--libiberty/cp-demangle.c13
-rw-r--r--libiberty/testsuite/demangle-expected18
-rw-r--r--libiberty/testsuite/test-demangle.c12
4 files changed, 43 insertions, 8 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index c2d49664f8f..8e1fa521db6 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,5 +1,13 @@
2011-06-13 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * cp-demangle.c (d_print_comp) <DEMANGLE_COMPONENT_FUNCTION_TYPE>: Do
+ not pass DMGL_RET_POSTFIX or DMGL_RET_DROP. Support DMGL_RET_DROP.
+ * testsuite/demangle-expected: New testcases for --ret-drop.
+ * testsuite/test-demangle.c: Document --ret-drop in a comment.
+ (main): New variable ret_drop, fill it, call cplus_demangle with it.
+
+2011-06-13 Jan Kratochvil <jan.kratochvil@redhat.com>
+
* cp-demangle.c (struct d_print_info): Remove field options.
(d_print_init): Remove parameter options.
(cplus_demangle_print_callback): Update all the callers.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 0ac90f1a625..da6d7979f2c 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -3917,10 +3917,12 @@ d_print_comp (struct d_print_info *dpi, int options,
case DEMANGLE_COMPONENT_FUNCTION_TYPE:
{
if ((options & DMGL_RET_POSTFIX) != 0)
- d_print_function_type (dpi, options, dc, dpi->modifiers);
+ d_print_function_type (dpi,
+ options & ~(DMGL_RET_POSTFIX | DMGL_RET_DROP),
+ dc, dpi->modifiers);
/* Print return type if present */
- if (d_left (dc) != NULL)
+ if (d_left (dc) != NULL && (options & DMGL_RET_DROP) == 0)
{
struct d_print_mod dpm;
@@ -3932,7 +3934,8 @@ d_print_comp (struct d_print_info *dpi, int options,
dpm.printed = 0;
dpm.templates = dpi->templates;
- d_print_comp (dpi, options, d_left (dc));
+ d_print_comp (dpi, options & ~(DMGL_RET_POSTFIX | DMGL_RET_DROP),
+ d_left (dc));
dpi->modifiers = dpm.next;
@@ -3946,7 +3949,9 @@ d_print_comp (struct d_print_info *dpi, int options,
}
if ((options & DMGL_RET_POSTFIX) == 0)
- d_print_function_type (dpi, options, dc, dpi->modifiers);
+ d_print_function_type (dpi,
+ options & ~(DMGL_RET_POSTFIX | DMGL_RET_DROP),
+ dc, dpi->modifiers);
return;
}
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 5ce0377b13b..63a3e24ba41 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -3959,6 +3959,24 @@ f(decltype(nullptr))
--format=gnu-v3
_ZN5aaaaa6bbbbbb5cccccIN23ddddddddddddddddddddddd3eeeENS2_4ffff16ggggggggggggggggENS0_9hhhhhhhhhES6_S6_S6_S6_S6_S6_S6_EE
aaaaa::bbbbbb::ccccc<ddddddddddddddddddddddd::eee, ddddddddddddddddddddddd::ffff::gggggggggggggggg, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh>
+--format=gnu-v3
+_Z5outerIsEcPFilE
+char outer<short>(int (*)(long))
+--format=gnu-v3
+_Z5outerPFsiEl
+outer(short (*)(int), long)
+--format=gnu-v3
+_Z6outer2IsEPFilES1_
+int (*outer2<short>(int (*)(long)))(long)
+--format=gnu-v3 --ret-drop
+_Z5outerIsEcPFilE
+outer<short>(int (*)(long))
+--format=gnu-v3 --ret-drop
+_Z5outerPFsiEl
+outer(short (*)(int), long)
+--format=gnu-v3 --ret-drop
+_Z6outer2IsEPFilES1_
+outer2<short>(int (*)(long))
#
# Ada (GNAT) tests.
#
diff --git a/libiberty/testsuite/test-demangle.c b/libiberty/testsuite/test-demangle.c
index 1c982d6ef20..11d9729999b 100644
--- a/libiberty/testsuite/test-demangle.c
+++ b/libiberty/testsuite/test-demangle.c
@@ -159,6 +159,7 @@ exp: %s\n",
output is an integer representing ctor_kind.
--is-v3-dtor Likewise, but for dtors.
--ret-postfix Passes the DMGL_RET_POSTFIX option
+ --ret-drop Passes the DMGL_RET_DROP option
For compatibility, just in case it matters, the options line may be
empty, to mean --format=auto. If it doesn't start with --, then it
@@ -174,7 +175,7 @@ main(argc, argv)
int no_params;
int is_v3_ctor;
int is_v3_dtor;
- int ret_postfix;
+ int ret_postfix, ret_drop;
struct line format;
struct line input;
struct line expect;
@@ -209,6 +210,7 @@ main(argc, argv)
no_params = 0;
ret_postfix = 0;
+ ret_drop = 0;
is_v3_ctor = 0;
is_v3_dtor = 0;
if (format.data[0] == '\0')
@@ -265,6 +267,8 @@ main(argc, argv)
is_v3_dtor = 1;
else if (strcmp (opt, "--ret-postfix") == 0)
ret_postfix = 1;
+ else if (strcmp (opt, "--ret-drop") == 0)
+ ret_drop = 1;
else
{
printf ("FAIL at line %d: unrecognized option %s\n",
@@ -307,9 +311,9 @@ main(argc, argv)
cplus_demangle_set_style (style);
- result = cplus_demangle (inp,
- DMGL_PARAMS|DMGL_ANSI|DMGL_TYPES
- |(ret_postfix ? DMGL_RET_POSTFIX : 0));
+ result = cplus_demangle (inp, (DMGL_PARAMS | DMGL_ANSI | DMGL_TYPES
+ | (ret_postfix ? DMGL_RET_POSTFIX : 0)
+ | (ret_drop ? DMGL_RET_DROP : 0)));
if (result
? strcmp (result, expect.data)