Paolo Carlini [Mon, 18 Mar 2002 23:11:57 +0000 (00:11 +0100)]
locale_facets.tcc (money_put::do_put(long double)): Fix dimensioning of temporary buffers to avoid risk of overruns.
2002-03-18 Paolo Carlini <pcarlini@unitus.it>
* include/bits/locale_facets.tcc
(money_put::do_put(long double)): Fix dimensioning of
temporary buffers to avoid risk of overruns.
(money_put::do_put(string)): Same for the buffer used to
add the grouping chars.
* testsuite/22_locale/money_put_members_char.cc: Add test06.
* testsuite/22_locale/money_put_members_wchar_t.cc: Ditto.
Eric Botcazou [Mon, 18 Mar 2002 20:19:39 +0000 (20:19 +0000)]
re PR c++/3882 (gcc 3.0 error referencing a variable in its initializer expression in template code)
PR c++/3882
* pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
(tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
only after recording the declaration.
Alexandre Oliva [Mon, 18 Mar 2002 19:12:50 +0000 (19:12 +0000)]
mips.h (ELIMINABLE_REGS): Can't eliminate RETURN_ADDRESS_POINTER_REGNUM to $ra.
* config/mips/mips.h (ELIMINABLE_REGS): Can't eliminate
RETURN_ADDRESS_POINTER_REGNUM to $ra.
(CAN_ELIMINATE): Only eliminate it to $sp if a frame pointer is
not needed. Disregard leaf_function_p().
(INITIAL_ELIMINATION_OFFSET): Adjust for elimination of rap to
mips16 frame pointer.
* config/mips/mips.md (store ra): Only to small SP offsets.
2001-08-22 Graham Stott <grahams@redhat.com>
* config/mips/mips.h (RETURN_ADDR_RTX): For a leaf function
return a REG rtx for the return address register.
Richard Earnshaw [Mon, 18 Mar 2002 11:27:39 +0000 (11:27 +0000)]
re PR target/4863 (arm/thumb: code for switch statements: branch out of range)
PR target/4863
* arm.md (tablejump): Make this a define_expand. For PIC add the
offset to the base of the table.
(thumb_tablejump): Matcher for Thumb tablejump insn.
* config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output thumb entries
as the difference of two labels.
* config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Only put ARM jump
tables in the code.
* config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
* arm.c (get_jump_table_size): If the table is not in the text
section, return zero.
Richard Earnshaw [Mon, 18 Mar 2002 11:26:24 +0000 (11:26 +0000)]
arm.md (tablejump): Make this a define_expand.
* arm.md (tablejump): Make this a define_expand. For PIC add the
offset to the base of the table.
(thumb_tablejump): Matcher for Thumb tablejump insn.
* config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output thumb entries
as the difference of two labels.
* config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Only put ARM jump
tables in the code.
* config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
* arm.c (get_jump_table_size): If the table is not in the text
section, return zero.
Philipp Thomas [Mon, 18 Mar 2002 10:47:15 +0000 (10:47 +0000)]
hash_map.h: hash, hashtable, hash_map and hash_multimap are in namespace __gnu_cxx.
2002-03-15 Philipp Thomas <pthomas@suse.de>
* include/backward/hash_map.h: hash, hashtable, hash_map and
hash_multimap are in namespace __gnu_cxx.
include/backward/hash_set.h: hash, hashtable, hash_set and
hash_multiset are in namespace __gnu_cxx.
include/backward/hashtable.h: hash and hashtable are in
namespace __gnu_cxx.
include/backward/rope.h: char_producer, sequence_buffer,
rope, crope and wrope are in namespace __gnu_cxx.
include/backward/slist.h: slist is in namespace __gnu_cxx.
* testsuite/backward/header_hash_map_h.cc
testsuite/backward/header_hash_set_h.cc
testsuite/backward/header_hashtable_h.cc
testsuite/backward/header_rope_h.cc
testsuite/backward/header_slist_h.cc
testsuite/backward/header_tempbuf_h.cc: New tests for
checking that we're using the correct namespace.
Jason Merrill [Mon, 18 Mar 2002 00:09:37 +0000 (19:09 -0500)]
re PR c++/4381 (Exceptions virtually inherited from a class cause segmentation fault at run time)
PR c++/4381
* libsupc++/eh_personality.cc (get_adjusted_ptr): New static fn.
(check_exception_spec): Call it. Take the thrown pointer.
(__cxa_call_unexpected): Pass it.
(PERSONALITY_FUNCTION): Likewise. Use get_adjusted_ptr.
boehm-gc:
* Makefile.am: Make a convenience library.
* Makefile.in: Rebuilt.
libjava:
Build a single libgcj.so, without separate gc and zlib libraries.
* configure.in: Use convenience libraries for boehm-gc and zlib. Set
SYS_ZLIBS if system zlib is used.
* configure: Rebuilt.
* Makefile.am: Use boehm-gc and zlib convenience libraries.
* Makefile.in: Rebuilt.
* libtool-version: Increment .so version number.
Alexandre Oliva [Sun, 17 Mar 2002 00:02:30 +0000 (00:02 +0000)]
mips.h (CAN_ELIMINATE): Don't eliminate rap to $fp (s8), but rather HARD_FRAME_POINTER_REGNUM.
* config/mips/mips.h (CAN_ELIMINATE): Don't eliminate rap to $fp
(s8), but rather HARD_FRAME_POINTER_REGNUM. Add parentheses
where appropriate. Make the second reference to
leaf_function_p a function call, as intended. Reindented.
Nathan Sidwell [Sat, 16 Mar 2002 18:30:16 +0000 (18:30 +0000)]
re PR c++/4361 (bogus ambiguity taking the address of a member template)
cp:
PR c++/4361
* cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
conversion operators go.
(struct lang_decl_flags): Add template_conv_p and unused
bitfields.
(DECL_TEMPLATE_CONV_FN_P): New macro.
* call.c (build_user_type_conversion_1): Don't check second type
conversion of overload set first.
* class.c (add_method): Make sure templated conversion operators
all end up on slot 2.
* lex.c (do_identifier): A conversion operator token might be
satisfied by a templated conversion operator.
* mangle.c (struct globals) Add internal_mangling_p member.
(write_template_param): Do internal mangling, if needed.
(mangle_conv_op_name_for_type): Request internal mangling.
* pt.c (check_explicit_specialization): Use
CLASSTYPE_FIRST_CONVERSION_SLOT.
(template_parm_this_level_p): New function.
(push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
* search.c (lookup_fn_fields_1): Template conversions will be on
the first slot.
* typeck.c (build_component_ref): Preserve the type of an
conversion operator name on the overload type.
(build_x_function_call): Retrieve the conversion operator name.
testsuite:
* g++.dg/template/conv1.C: New test.
* g++.dg/template/conv2.C: New test.
* g++.dg/template/conv3.C: New test.
* g++.dg/template/conv4.C: New test.
Stephane Carrez [Sat, 16 Mar 2002 13:03:59 +0000 (14:03 +0100)]
m68hc11.c (m68hc11_override_options): Don't use soft registers by default for 68HC12.
* config/m68hc11/m68hc11.c (m68hc11_override_options): Don't use
soft registers by default for 68HC12.
(m68hc11_conditional_register_usage): Don't use Z register for 68HC12
when compiling with -fomit-frame-pointer.
(expand_prologue): Use push/pop to allocate 4-bytes of locals on 68HC12.
(expand_epilogue): Likewise.
(m68hc11_gen_rotate): Use exg when rotating by 8.
Stephane Carrez [Sat, 16 Mar 2002 12:52:20 +0000 (13:52 +0100)]
m68hc11-protos.h (ix_reg): Declare.
* config/m68hc11/m68hc11-protos.h (ix_reg): Declare.
* config/m68hc11/m68hc11.md ("addsi3"): Use general_operand for sources.
(splits): Remove unused add splits.
("*addhi3_68hc12"): Tune constraints.
("addhi_sp"): Try to use X instead of Y in all cases and if the
constant fits in 8-bits and D is dead use abx/aby instructions.
("*addhi3"): Remove extern declaration of ix_reg.
("*subsi3"): Optimize and provide new split.
("subhi3"): Cleanup.
("*subhi3_sp"): Avoid saving X if we know it is dead.
(arith splits): For 68hc12 save the address register on the stack
and do the arithmetic operation with a pop.
Chris Demetriou [Sat, 16 Mar 2002 04:16:15 +0000 (04:16 +0000)]
mips.h (SUBTARGET_CPP_SIZE_SPEC): Provide an MEABI case for each definition of SUBTARGET_CPP_SIZE_SPEC...
2002-03-15 Chris Demetriou <cgd@broadcom.com>
* config/mips/mips.h (SUBTARGET_CPP_SIZE_SPEC): Provide an
MEABI case for each definition of SUBTARGET_CPP_SIZE_SPEC,
and define it so that regardless of target CPU size,
__SIZE_TYPE__ and __PTRDIFF_TYPE__ are defined in terms
of "int" rather than "long."
Alexandre Oliva [Fri, 15 Mar 2002 22:46:58 +0000 (22:46 +0000)]
Makefile.am (jv_convert_LDADD): Don't list libraries that are already implicitly brought in from libgcj.la.
* Makefile.am (jv_convert_LDADD): Don't list libraries that are
already implicitly brought in from libgcj.la.
(gij_LDADD, rmic_LDADD, rmiregistry_LDADD): Likewise.
* Makefile.in: Rebuilt.
Stephane Carrez [Fri, 15 Mar 2002 22:33:30 +0000 (23:33 +0100)]
m68hc11.md ("tstqi_1"): Try to use ldab instead of tst.
* config/m68hc11/m68hc11.md ("tstqi_1"): Try to use ldab instead of tst.
("tstqi" split): Avoid using memory for tstqi on address register.
(splits): Remove constraints.
("cmphi_1_hc12"): New from "cmphi_1" and tuned for 68HC12.
("cmpdf", "cmpsf"): Remove since not used.
("*tbeq", "*tbne", "*tbeq8", "*tbne8"): Also look in cc_status.value2.
(peephole2): New peepholes to optimize tstqi and pre inc/dec addressing.
Stephane Carrez [Fri, 15 Mar 2002 22:04:49 +0000 (23:04 +0100)]
m68hc11.c (m68hc11_symbolic_p): New function.
* config/m68hc11/m68hc11.c (m68hc11_symbolic_p): New function.
(m68hc11_indirect_p): New function.
(m68hc11_override_options): Must set MASK_NO_DIRECT_MODE for 68HC12.
(m68hc11_gen_highpart): Use TARGET_NO_DIRECT_MODE instead of
TARGET_M6812.
(asm_print_register): Likewise.
* config/m68hc11/m68hc11-protos.h (m68hc11_symbolic_p): Declare.
(m68hc11_indirect_p): Declare.
* config/m68hc11/m68hc11.h (EXTRA_CONSTRAINT): New constraint 'R', 'Q'.
(TARGET_NO_DIRECT_MODE, TARGET_RELAX): New.
(TARGET_SWITCHES): New option -mrelax.
* config/m68hc11/m68hc11.md ("andsi3"): Allow soft register for
destination.
("iorsi3", "xorsi3"): Likewise.
("andhi3", "andqi3", "iorhi3", "iorqi3"): Use a define_expand.
("*andhi3_mem"): New to handle destination in memory with bclr
and a scratch register.
("*andqi3_mem", "*iorhi3_mem", "*iorqi3_mem"): Likewise.
("*andhi3_const"): New when operand2 is constant.
("*andqi3_const", "*iorhi3_const", "*iorqi3_const"): Likewise.
("*andhi3_gen"): Cleanup of the old "andhi3".
("*andqi3_gen", "*iorhi3_gen", "*iorqi3_gen"): Likewise.
("xorqi3"): Update constraints.
Stephane Carrez [Fri, 15 Mar 2002 21:54:58 +0000 (22:54 +0100)]
m68hc11.c (m68hc11_small_indexed_indirect_p): Look for reg_equiv_memory_loc when the operand is a register that does not get...
* config/m68hc11/m68hc11.c (m68hc11_small_indexed_indirect_p): Look
for reg_equiv_memory_loc when the operand is a register that does
not get a hard register (stack location).
(tst_operand): After reload, accept all memory operand.
(symbolic_memory_operand): Fix detection of symbolic references.
* config/m68hc11/m68hc11.h (VALID_CONSTANT_OFFSET_P): For 68HC12
accept symbols and any constant.
Stephane Carrez [Fri, 15 Mar 2002 21:44:49 +0000 (22:44 +0100)]
m68hc11.c (emit_move_after_reload): Add a REG_INC note on the insn that sets the soft frame register.
* config/m68hc11/m68hc11.c (emit_move_after_reload): Add a REG_INC
note on the insn that sets the soft frame register.
(must_parenthesize): ix and iy are also reserved names.
(print_operand_address): One more place where parenthesis are required
to avoid confusion with register names.
(m68hc11_gen_movhi): Allow push of stack pointer.
(m68hc11_check_z_replacement): Fix handling of parallel with a
clobber.
(m68hc11_z_replacement): Must update the REG_INC notes to tell what
the replacement register is.
* config/m68hc11/m68hc11.h (REG_CLASS_CONTENTS): Switch Z_REGS
and D8_REGS classes.
(MODES_TIEABLE_P): All modes are tieable except QImode.