2006-02-11 Roger Sayle <roger@eyesopen.com>
R. Scott Bailey <scott.bailey@eds.com>
Bill Northcott <w.northcott@unsw.edu.au>
PR bootstrap/16787
* floatformat.c: Include <float.h> where available.
(NAN): Use value of DBL_QNAN if defined, and NAN isn't.
Co-Authored-By: Bill Northcott <w.northcott@unsw.edu.au>
Co-Authored-By: R. Scott Bailey <scott.bailey@eds.com>
From-SVN: r110873
libiberty/
2006-01-20 Carlos O'Donell <carlos@codesourcery.com>
* testsuite/Makefile.in: Add test-expandargv test.
* testsuite/test-expandargv.c: New test.
* argv.c (expandargv): Check for errors with ferror,
rather than just by looking at return value from fread.
From-SVN: r110047
* floatformat.c (floatformat_i387_ext_is_valid): Use explicit cast
to convert from "from".
(floatformat_to_double): Likewise.
(floatformat_from_double): Use explicit cast to convert from "to".
From-SVN: r108717
* libiberty.h (expandargv): New function.
* argv.c (safe-ctype.h): Include it.
(ISBLANK): Remove.
(stdio.h): Include.
(buildargv): Use ISSPACE instead of ISBLANK.
(expandargv): New function.
From-SVN: r104664
* pex-win32.c: Include "windows.h".
(backslashify): New function.
(fix_argv): Use backslashify to convert path to windows format. Allocate one
more place in new argv for potential executable from '#!' parsing.
(tack_on_executable): New function. Conditional on USE_MINGW_MSYS
(openkey): Ditto.
(mingw_rootify): Ditto.
(msys_rootify): Ditto.
(spawn_script): New function.
(pex_win32_exec_child): Save translated argv in newargv. Pass to spawn_script
if spawnv* fails.
(main): New function. Conditional on MAIN. Useful for testing.
From-SVN: r104292
[libiberty]
* floatformat.c (floatformat_always_valid): Change type of last
argument to `void *'.
(floatformat_i387_ext_is_valid): Likewise.
(floatformat_to_double): Change type of second argument to `const
void *'.
(floatformat_from_double): Change type of last argument to `void
*'.
(floatformat_is_valid): Change type of last argument to `const
void *'.
(ieee_test): Remove redundant casts.
[include]
* floatformat.h (struct floatformat): Change type of large
argument for is_valid member to `const void *'.
(floatformat_to_double): Change type of second argument to `const
void *'.
(floatformat_from_double): Change type of last argument to `void
*'.
(floatformat_is_valid): Change type of last argument to `const
void *'.
From-SVN: r103218
2005-07-07 Kelley Cook <kcook@gcc.gnu.org>
* config.table: Delete file. Move former contents into ...
* configure.ac: ... here and escape any brackets for m4.
* Makefile.in (config.status): Remove dependency on config.table.
* configure: Regenerate.
From-SVN: r101684
PR other/22268
* cp-demangle.c (d_expr_primary): Don't run off the end of the
string while looking for the end of a literal value.
* testsuite/demangle-expected: Add test case.
From-SVN: r101506
2005-06-29 Daniel Berlin <dberlin@dberlin.org>
* tree-complex.c (complex_variable_components): Now a hashtable.
(cvc_lookup): Ditto.
(cvc_insert): Ditto.
(create_components): Use referenced var iterator.
Initialize hashtable. Use cvc_insert/lookup.
(extract_components): Use cvc_insert/lookup.
(update_complex_components): Ditto.
(update_complex_components_on_edge): Ditto.
* tree-dfa.c (referenced_vars): Now a hashtable.
(dump_referenced_vars): Use iterator.
(referenced_var_lookup): New function.
(referenced_var_insert): Ditto.
(add_referenced_var): Use referenced_var_insert.
(mark_new_vars_to_rename): Use DECL_UID.
* tree-flow-inline.h (first_htab_element): New function.
(end_htab_p): Ditto.
(next_htab_element): Ditto.
(first_referenced_var): Ditto.
(end_referenced_vars_p): Ditto.
(next_referenced_var): Ditto.
(is_call_clobbered): Use DECL_UID.
(mark_call_clobbered): Ditto.
(clear_call_clobbered): Ditto.
(mark_non_addressable): Ditto.
* tree-flow.h (htab_iterator): New struct.
(FOR_EACH_HTAB_ELEMENT): New macro.
(struct int_tree_map): New struct.
(int_tree_map_hash): Prototype.
(int_tree_map_eq): Ditto.
(referenced_var_iterator): Ditto.
(FOR_EACH_REFERENCED_VAR): New macro.
(referenced_vars): Now a hashtable.
* tree-into-ssa.c (symbol_marked_for_renaming): Use DECL_UID.
(add_new_name_mapping): Ditto.
(mark_def_sites): Ditto.
(insert_phi_nodes): Use referenced_var iterator.
(mark_def_site_blocks): Ditto.
(mark_sym_for_renaming): Use DECL_UID.
* tree-sra.c (is_sra_candidate_decl): Use DECL_UID.
(lookup_element): Ditto.
(find_candidates_for_sra): Use referenced_vars iterator.
Use DECL_UID.
* tree-ssa-alias.c (NUM_REFERENCES): New macro.
(NUM_REFERENCES_CLEAR): Ditto.
(NUM_REFERENCES_INC): Ditto.
(NUM_REFERENCES_SET): Ditto.
(alias_obstack): New bitmap obstack.
(struct alias_map_d): Use bitmap, not sbitmap.
(struct alias_info): Remove num_references.
(init_alias_info): Use referenced_var iterator.
Initialize bitmap obstack.
(delete_alias_info): Use referenced_var iterator.
Free bitmap obstack.
(compute_points_to_and_addr_escape): Use DECL_UID.
Use new NUM_REFERENCES macros.
(compute_flow_sensitive_aliasing): may_aliases is now a bitmap.
Use new NUM_REFERENCES macros.
(group_aliases_into): Update prototype to use bitmap.
(setup_pointers_and_addressables): Use referenced_vars iterator.
Use DECL_UID. Use new NUM_REFERENCES macros.
(add_pointed_to_var): Use DECL_UID.
(dump_alias_info): Use referenced_var iterator.
(add_type_alias): Ditto.
(used_portions): Now a hashtable.
(used_part_map_eq): New function.
(used_part_map_hash): Ditto.
(free_used_part_map): Ditto.
(up_lookup): Ditto.
(up_insert): Ditto.
(get_or_create_used_part_for): Use up_lookup.
(create_overlap_variables_for): Ditto.
(find_used_portions): Use up_insert.
Use DECL_UID.
(create_structure_vars): Init used_portions hashtable, use
referenced_vars iterator.
* tree-ssa-live.c (create_ssa_var_map): sbitmaps became bitmaps.
Use DECL_UID.
* tree-ssa-loop-im.c (gather_mem_refs_stmt): Use DECL_UID.
* tree-ssa-operands.c (get_asm_expr_operands): Ditto.
(note_addressable): Ditto.
* tree-ssa-structalias.c (set_uids_in_ptset): Ditto.
* tree-ssa.c (verify_flow_insensitive_alias_info): Use
referenced_var iterator.
Use DECL_UID.
(delete_tree_ssa): Ditto.
(int_tree_map_eq): New function.
(int_tree_map_hash): Ditto.
* tree-stdarg.c (find_va_list_reference): Use DECL_UID.
(va_list_ptr_read): Ditto.
(va_list_counter_struct_op): Ditto.
(va_list_ptr_write): Ditto.
(check_va_list_escapes): Ditto.
(check_all_va_list_escapes): Ditto.
(execute_optimize_stdarg): Ditto.
* tree-tailcall.c (suitable_for_tail_opt_p): Used referenced_var
iterator.
2005-06-30 Daniel Berlin <dberlin@dberlin.org>
* hashtab.h (HTAB_DELETED_ENTRY): New macro.
(HTAB_EMPTY_ENTRY): New macro.
2005-06-30 Daniel Berlin <dberlin@dberlin.org>
* hashtab.c (EMPTY_ENTRY): Moved and renamed.
(DELETED_ENTRY): Ditto.
From-SVN: r101480
include/
2005-05-24 Gabriel Dos Reis <gdr@integrable-solutions.net>
* libiberty.h (ACONCAT): Properly cast value of alloca().
* ansidecl.h (ATTRIBUTE_UNUSED_LABEL): Don't define if
__cplusplus.
libiberty/
2005-05-24 Gabriel Dos Reis <gdr@integrable-solutions.net>
* configure.ac: Check declarations for calloc(), getenv(),
malloc(), realloc() and sbrk().
* config.in: Regenerate.
* configure: Likewise.
* alloca.c (C_alloca): Change "new" to "new_storage". Use XNEWVEC
instead of xmalloc.
* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
* concat.c (liiberty_concat_ptr): Surround definition with an
extern "C" block, if __cplusplus.
(concat): Use XNEWVEC instead of xmalloc.
(reconcat): Likewise.
* cp-demangle.c (struct d_print_template): Rename member
"template" to "template_decl". Adjust use throughout the file.
(d_print_resize): Properly cast return value of realloc().
(cplus_demangle_print): Same for malloc().
(d_demangle): Likewise.
* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
"typename" to "type_name".
* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
(demangle_template_value_parm): Likewise.
(demangle_template): Likewise.
(recursively_demangle): Likewise.
(do_hpacc_template_literal): Likewise.
(do_arg): Likewise.
(remember_type): Likewise.
(remember_Ktype): Likewise.
(register_Btype): Likewise.
(string_need): Use XRESIZEVEC instead of xrealloc().
* dyn-string.c (dyn_string_init): Use XNEWVEC.
(dyn_string_new): Use XNEW.
(dyn_string_resize): Use XRESIZEVEC.
* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
Otherwise include <stdlib.h>.
(exchange): Cast return value of malloc().
* hashtab.c (htab_size): Define as both macro and non-inline
function.
(htab_elements): Likewise.
* getpwd.c (getpwd): Use XNEWVEC.
(htab_create_alloc_ex): Use C90 prototype-style.
* lrealpath.c (lrealpath): Appropriately cast return value of
malloc().
* make-relative-prefix.c (save_string): Likewise.
* make-temp-file.c (try_dir): Rename from "try". Adjust use in
the file.
(choose_tmpdir): Use XNEWVEC.
* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
* pex-common.c (pex_init_common): Use XNEW.
(pex_add_remove): Use XRESIZEVEC.
(pex_run): Likewise.
(pex_get_status_and_time): Likewise.
* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
* pex-msdos.c (pex_init): Use XNEW.
(pex_msdos_exec_child): Likewise.
(pex_msdos_exec_child): Use XRESIZEVEC.
* pex-unix.c (pex_wait): Use XNEW.
* pex-win32.c (fix_argv): Use XNEWVEC.
* pexecute.c (pwait): Likewise.
* setenv.c (setenv): Properly cast return value of malloc().
* sigsetmask.c (sigsetmask): Rename local variables "old" and
"new" to "old_sig" and "new_sig".
* sort.c (main): Use XNEWVEC.
* spaces.c (spaces): Cast return value of malloc().
* strndup.c (strndup): Likewise.
* ternary.c (ternary_insert): Use XNEW.
* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
with an extern "C" block if __cplusplus.
* xstrdup.c (xstrdup): Cast return value of memcpy().
* xstrerror.c (strerror): Enclose declaration in an extern "C"
block if __cplusplus.
* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().
From-SVN: r100115
* getpwd.c: Remove unneeded prototype getcwd and move getwd so
that it's only declared if needed.
* getopt1.c: Change order of includes so that __GNU_LIBRARY__ is
defined.
From-SVN: r99775
2005-05-15 Eli Zaretskii <eliz@gnu.org>
* pexecute.txh: Enclose multi-word data types in @deftypefn in
braces. Minor wording fixes. Use --- for em-dash. Use
@enumerate in enumerated lists.
From-SVN: r99728
2005-05-11 Eli Zaretskii <eliz@gnu.org>
* pex-djgpp.c: Include string.h, fcntl.h, unistd.h, and
sys/stat.h.
(pex_init): Fix last argument to pex_init_common.
(pex_djgpp_exec_child): Remove leading underscore from _open,
_dup, _dup2, _close, and _spawnv/_spawnvp. Replace `program',
which is undeclared, with `executable', which was unused. Remove
unused variable `e'. Fix casting of last arg to spawnv/spawnvp.
(pex_djgpp_wait): Declare arguments with ATTRIBUTE_UNUSED.
From-SVN: r99606
[include]
* fibheap.h (struct fibnode): Only use unsigned long bitfields
when __GNUC__ is defined and ints are less than 32-bits wide.
[libiberty]
* configure.ac: Invoke AC_CHECK_SIZEOF for sizeof (int).
* configure: Regenerate.
* config.in: Likewise.
From-SVN: r92009
* objalloc.c, strsignal.c, xstrerror.c: Include "config.h" before
"ansidecl.h" to avoid redeclaration errors with native compilers.
* regex.c: Protect config.h from multiple inclusion.
From-SVN: r90954
libiberty:
* cp-demangle.h: Declare cplus_demangle_operators,
cplus_demangle_builtin_types, cplus_demangle_mangled_name, and
cplus_demangle_type as static if IN_GLIBCPP_V3.
libobjc:
* encoding.c: Rename target_flags with a #define to avoid
conflict with a prior declaration.
From-SVN: r83800
* hashtab.c: Include limits.h, stdint.h, ansidecl.h.
(CHAR_BIT): Provide default.
(struct prime_ent, prime_tab): New.
(higher_prime_index): Rename from higher_prime_number, return index.
(htab_mod_1): New.
(htab_mod, htab_mod_m2): Use it.
(htab_create_alloc, htab_create_alloc_ex): Store prime index.
(htab_expand): Likewise.
* configure.ac: Check for stdint.h.
(UNSIGNED_64BIT_TYPE): New define and checks to fill it in.
* config.in, configure: Rebuild.
From-SVN: r81029
* hashtab.c (htab_remove_elt_with_hash): New function.
(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.
* hashtab.h (htab_remove_elt_with_hash): Prototype new function.
From-SVN: r80641
* pex-unix.c (pexecute): Use vfork instead of fork, with
appropriate changes to make this safe.
* pex-common.h (STDERR_FILE_NO): Define.
From-SVN: r79617
* cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
* cp-demangle.c (cplus_demangle_builtin_types): Change char and
short types to D_PRINT_DEFAULT. Change other integer types to use
new D_PRINT_* values where appropriate. Change float types to
D_PRINT_FLOAT.
(d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
values.
* testsuite/demangle-expected: Adjust two test cases.
* cp-demangle.c (d_print_function_type): Print a space before the
parenthesis around the function type in more cases.
* testsuite/demangle-expected: Adjust one test case.
From-SVN: r78421
* cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
parentheses around a cast.
* testsuite/demangle-expected: Adjust two test cases to match new
output.
From-SVN: r78416
* cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
push more than one of the same CV-qualifier on the top of the
stack.
(d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
move the CV-qualifiers to apply to the element type instead.
(d_print_array_type): When checking the modifiers, keep looking
past ones which have been printed already.
* testsuite/demangle-expected: Add three test cases.
From-SVN: r78354
2004-02-23 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (__cxa_demangle): It is not an error if status is
not NULL. It is an error if the mangled name is the same as a
built-in type name.
(main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
than cplus_demangle_v3.
From-SVN: r78348
* demangle.h (enum demangle_component_type): Define.
(struct demangle_operator_info): Declare.
(struct demangle_builtin_type_info): Declare.
(struct demangle_component): Define.
(cplus_demangle_fill_component): Declare.
(cplus_demangle_fill_name): Declare.
(cplus_demangle_fill_builtin_type): Declare.
(cplus_demangle_fill_operator): Declare.
(cplus_demangle_fill_extended_operator): Declare.
(cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare.
(cplus_demangle_v3_components): Declare.
(cplus_demangle_print): Declare.
* cp-demangle.c: Include "cp-demangle.h". If IN_GLIBCPP_V3 is
defined, rename some functions which are to become static via
#define.
(CP_STATIC_IF_GLIBCPP_V3): Define.
(struct d_operator_info): Move definition to cp-demangle.h, and
rename to demangle_operator_info. Change all uses.
(enum d_builtin_type_print): Move definition to cp-demangle.h.
(struct d_builtin_type_info): Move definition to cp-demangle.h,
and rename to demangle_builtin_type_info. Change all uses.
(enum d_comp_type): Move definition to include/demangle.h, and
rename to demangle_component_type, and change all enums to start
with DEMANGLE_COMPONENT_ instead of D_. Change all uses.
(struct d_comp): Move definition to include/demangle.h, and rename
to demangle_component. Change all uses.
(struct d_info): Move definition to cp-demangle.h.
(cplus_demangle_fill_name): New function.
(cplus_demangle_fill_extended_operator): New function.
(cplus_demangle_fill_ctor): New function.
(cplus_demangle_fill_dtor): New function.
(d_make_empty): Remove type parameter. Change all callers.
(d_make_name): Use cplus_demangle_fill_name.
(d_make_extended_operator): Use
cplus_demangle_fill_extended_operator.
(d_make_ctor): Use cplus_demangle_fill_ctor.
(d_make_dtor): Use cplus_demangle_fill_dtor.
(cplus_demangle_mangled_name): Rename from d_mangled_name. Make
non-static by default. Change all callers.
(cplus_demangle_operators): Rename from d_operators. Change all
uses. Make non-static by default. Add sentinel at end of array.
(d_operator_name): Adjust initialization of high for new sentinel
in cplus_demangle_operators.
(cplus_demangle_builtin_types): Rename from d_builtin_types.
Change all uses. Make non-static by default. Change initializer
to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
(cplus_demangle_type): Rename from d_type. Make non-static by
default. Change all callers.
(cplus_demangle_init_info): Rename from d_init_info. Make
non-static by default. Change all callers.
* cp-demangle.h: New file.
* cp-demint.c: New file.
* Makefile.in: Rebuild dependencies.
(CFILES): Add cp-demint.c.
(REQUIRED_OFILES): Add cp-demint.o.
From-SVN: r75748
* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
demangling template parameters.
* testsuite/test-demangle.c (fail): New static function.
(main): Support new options in input file: --no-params,
--is-v3-ctor, and --is-v3-dtor.
* testsuite/demangle-expected: Add --no-params to most tests, and
add the correct result when parameters are not demangled. Add
some simple tests for V3 constructor/destructor recognition.
From-SVN: r75336
PR debug/13272
* Makefile.in (lbasename.o): Depend on filenames.h.
* lbasename.c: Include "filenames.h" instead of defining
its macros locally.
From-SVN: r74943
* cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
dynamic arrays.
(struct d_operator_info): Add len field.
(struct d_builtin_type_info): Add len and java_len fields.
(struct d_standard_sub_info): Add simple_len, full_len, and
set_last_name_len fields.
(struct d_comp): Add len field to s_string.
(struct d_info): Add send, did_subs, and expansion fields.
(d_append_string_constant): Define.
(d_append_string): Remove. Change all users to use
d_append_string_constant or d_append_buffer instead.
(d_make_sub): Add len parameter. Change all callers.
(d_name): Increase expansion when substituting std::.
(d_unqualified_name): Increase expansion for an operator.
(d_number): Don't use multiplication for negative numbers.
(d_identifier): Make sure there are enough characters in the
string for the specified length. Adjust expansion for an
anonymous namespace.
(d_operators): Initialize len field.
(d_special_name, d_ctor_dtor_name): Increase expansion.
(d_builtin_types): Initialize len and java_len fields.
(d_type): Increase expansion for a builtin type.
(d_cv_qualifiers): Increase expansion for each qualifier.
(d_bare_function_type): Decrease expansion when removing single
void parameter.
(d_template_param): Increment did_subs.
(d_expression): Increase expansion for an operator.
(d_expr_primary): Decrease expansion for a type we will print
specially.
(standard_subs): Initialize new fields.
(d_substitution): Increment did_subs when doing a normal
substitution. Increase expansion for a special substitution.
(d_print): Add estimate parameter. Change all callers.
(d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
(d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
(d_print_java_identifier): Rename from d_print_identifier. Handle
only Java case. Change caller.
(d_init_info): Change return type to void. Change all callers.
Initialize send, did_subs, and expansion fields. Do not
initialize comps and subs fields.
(d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
arrays on stack. Make an estimate of the length of the demangled
name. Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
(is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
subs arrays on stack.
From-SVN: r74933
* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
after the identifier.
* testsuite/demangle-expected: Add test case.
From-SVN: r74885
Fix for PR c++/13447:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
D_COMP_QUAL_NAME.
(is_ctor_or_dtor): Likewise.
(d_local_name): Use D_COMP_LOCAL_NAME rather than
D_COMP_QUAL_NAME.
(d_print_comp) [D_COMP_LOCAL_NAME]: New.
(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
* testsuite/demangle-expected: Add two test cases.
* cp-demangle.c (d_print_function_type): Clear the global modifier
list when printing the modifiers, not just when printing the
function parameters.
* testsuite/demangle-expected: Add two test cases.
From-SVN: r74850
* cp-demangle.c (d_print_function_type): Print the function
parameters with no modifiers.
* testsuite/demangle-expected: Add test case.
From-SVN: r74652
* cp-demangle.c (d_demangle): If DMGL_PARAMS is not set, don't
expect that we've read the entire string.
(is_ctor_or_dtor): Don't expect that we've read the entire
string--reverse patch of 2003-11-29.
From-SVN: r74651
* cp-demangle.c (struct d_standard_sub_info): Define.
(d_substitution): Add prefix argument. Change all callers.
Rework handling of standard substitutions to print full name when
qualifying a constructor/destructor, or when DMGL_VERBOSE is set.
* testsuite/demangle-expected: Add test case.
Fix handling of negative literal constants:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LITERAL_NEG.
(d_dump, d_make_comp): Handle D_COMP_LITERAL_NEG.
(d_expr_primary): Use D_COMP_LITERAL_NEG for a negative number.
(d_print_comp): Handle D_COMP_LITERAL_NEG.
* testsuite/demangle-expected: Add test case.
From-SVN: r74632
* cp-demangle.c (IS_UPPER, IS_LOWER): Define.
(d_last_char): Define new macro.
(d_make_name): Reject an empty name.
(d_prefix, d_unqualified_name, d_type): Use new IS_* macros.
(d_substitution, d_print_identifier): Likewise.
(d_print_comp) [D_COMP_OPERATOR]: Likewise.
(d_print_comp) [D_COMP_TEMPLATE]: Use new d_last_char macro.
(d_print_mod) Use new d_last_char macro.
(d_print_cast): Use new d_last_char macro.
(is_ctor_or_dtor): Don't leak memory.
Fix handling of member function modifiers:
* cp-demangle.c (enum d_comp_type): Add D_COMP_RESTRICT_THIS,
D_COMP_VOLATILE_THIS, and D_COMP_CONST_THIS.
(d_dump): Dump new d_comp_type values.
(d_make_comp): Accept new d_comp_type values.
(has_return_type): Only accept _THIS variants of qualifiers.
(d_encoding): Without DMGL_PARAMS, only remove _THIS variants of
qualifiers.
(d_cv_qualifiers): Add member_fn parameter. Change all callers.
(d_print_comp) [D_COMP_TYPED_NAME]: Rather than removing
qualifiers and printing them at the end, add _THIS qualifiers to
the modifier list.
(d_print_comp) [D_COMP_*_THIS]: New cases.
(d_print_comp) [D_COMP_PTRMEM_TYPE]: Remove special handling of
qualifiers.
(d_print_mod_list): Add suffix parameter. Change all callers.
Keep walking the list even if the current modifier has been
printed.
(d_print_mod): Handle new _THIS qualifiers.
(d_print_function_type): Handle new _THIS qualifiers when deciding
whether to print a parenthesis. Put a space before the
parenthesis in some cases. Call d_print_mod_list again at the
end, passing suffix as 1.
(is_ctor_or_dtor): Look for new _THIS qualifiers.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13304:
* cp-demangle.c (d_print_comp) [D_COMP_TEMPLATE]: If the character
before the '<' is itself a '<', insert a space.
(d_print_cast): Likewise.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13244:
* cp-demangle.c (d_print_comp) [D_COMP_BINARY]: Wrap an expression
which uses the '>' operator in an extra layer of parens.
* testsuite/demangle-expected: Add test case.
From-SVN: r74290
* floatformat.c: Include "config.h" and <string.h> if available.
(INFINITY, NAN): Define if not defined by <math.h>.
(floatformat_to_double): Handle NaN, infinity, and denormalized
numbers.
(floatformat_from_double): Likewise.
(ieee_test): In debugging code, use little endian rather than big
endian. Correct tests to handle NaN and to check correct sign of
zero. Omit m68k extended test.
(main): Add more debugging cases.
From-SVN: r74237
* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
to restore expected result of EDG test case to original expected
result.
From-SVN: r74128
* cp-demangle.c (struct d_print_mod): Add templates field.
(d_make_builtin_type): Check for NULL type.
(d_make_extended_operator): Check for NULL name.
(d_make_ctor, d_make_dtor): Likewise.
(d_mangled_name): Add top_level parameter. Change all callers.
(d_encoding): If DMGL_PARAMS is not set, strip off initial
CV-qualifiers.
(d_type): Check some return values we rely on.
(d_bare_function_type, d_array_type): Likewise.
(d_pointer_to_member_type, d_template_args): Likewise.
(d_add_substitution): Fail if argument is NULL.
(d_print_resize): Check whether buf is NULL.
(d_print_comp): Save current templates list with each modifier.
Don't pass the modifier list down when printing a template.
(d_print_cast): Don't pass the modifier list down when printing a
template.
(d_print_mod_list): Temporarily set templates list while printing
a modifier.
(d_print_mod): Check that buf is not NULL before using it.
(d_print_function_type): Print parens if there is no modifier.
(d_init_info): Permit as many substitutions as there are
characters in the mangled name.
* testsuite/demangle-expected: Add two new test cases.
From-SVN: r73970
* cp-demangle.c (has_return_type): Skip qualifiers when checking
whether we have a template.
* testsuite/demangle-expected: Add four new tests.
From-SVN: r73819
* testsuite/demangle-expected: Minor changes to match output of
new demangler: adjust whitespace in four tests, and change order
of qualifiers in one test.
From-SVN: r73813
* cp-demangle.c (demangle_operator_name): Remove space before
"sizeof".
(demangle_type_ptr): Put qualifiers in the right place. Handle
qualifiers in pointer to member specially.
(demangle_type): Handle qualifiers for pointer or reference
specially. Handle function type.
(demangle_local_name): Save and restore caret around demangling of
initial encoding.
From-SVN: r73723