Alexandre Oliva [Fri, 2 Feb 2001 18:20:29 +0000 (18:20 +0000)]
sh.c (output_far_jump): Don't use braf on SH1.
* config/sh/sh.c (output_far_jump): Don't use braf on SH1. Emit
label before alignment to be used as the braf base address.
* config/sh/sh.md (length): Use longer lengths for SH1 PIC far
branches.
(casesi_jump_2): Require at least TARGET_SH2.
Mark Mitchell [Fri, 2 Feb 2001 17:42:00 +0000 (17:42 +0000)]
gcc.c (init_gcc_specs): New function.
* gcc.c (init_gcc_specs): New function. Make -shared-libgcc
the default when building a shared object.
(init_spec): Use it.
* testsuite/lib/g++.exp: Include the directory where libgcc
is located to the LD_LIBRARY_PATH list.
* inovke.texi (-shared-libgcc): Document the cases in which
* Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
of macros used when compiling g++spec.c.
* g++spec.c (lang_specific_driver): Link with the shared
libgcc by default.
* dwarf2out.c: Added explanation of abbreviations.
(def_cfa_1): Added comments listing DWARF2 instructions.
(cfa_temp_reg): Removed in favor of cfa_temp.
(cfa_temp_value): Removed in favor of cfa_temp.
(cfa_temp): New global variable.
(dwarf2out_frame_debug_expr): Added extensive introductory
comments explaining the function's transformations. Revised to
use cfa_temp. Added some rtx checking. Generalize IOR case.
(dwarf2out_frame_debug): Revised to use cfa_temp.
(output_aranges): Cast as "unsigned" to avoid warning.
* rtl.texi (RTX_FRAME_RELATED_P): Revise entry to emphasize better
explain which instructions must be marked.
Bryce McKinlay [Fri, 2 Feb 2001 00:27:39 +0000 (00:27 +0000)]
Add support for Java demangling under the v3 ABI:
* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
(struct demangling_def): Add `style' field.
(demangling_new): New parameter `style'. Set it in demangling_t.
(demangle_prefix): Use NAMESPACE_SEPARATOR.
(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
(cp_demangle): New parameter `style'. Pass it to demangling_new().
(main): Call cp_demangle with extra parameter.
(java_demangle_v3): New function.
(java_builtin_type_names): New. Table of primitive type names used
for Java demangling.
(demangle_builtin_type): Look up in java_builtin_type_names if doing
Java output.
* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
demangling.
(long_options): Remove obsolete `java' option.
(main): Remove explicit handling of `java' option. Instead, pass style
parameter in cplus_demangle flags as gdb does.
* testsuite/demangle.expected: Add some Java test cases.
Neil Booth [Thu, 1 Feb 2001 19:13:53 +0000 (19:13 +0000)]
cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
* cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
* cpplex.c (_cpp_lex_token): New token picks up the saved flags,
and AVOID_LPASTE is cleared on meeting an unescaped newline.
* cppmacro.c (builtin_macro): Set builtin flags here.
(paste_all_tokens): Preserve AVOID_LPASTE on pasted token.
(replace_args): Clarify intent.
(cpp_get_token): Macro expansion tokens get the saved flags.
Update.
* cppmain.c (scan_buffer): Remove now-redundant print.printed
check.
Richard Kenner [Thu, 1 Feb 2001 12:29:18 +0000 (12:29 +0000)]
builtins.c (expand_builtin_alloca): allocate_dynamic_stack_space returns Pmode pseudo, but we need ptr_mode.
* builtins.c (expand_builtin_alloca): allocate_dynamic_stack_space
returns Pmode pseudo, but we need ptr_mode.
* explow.c (allocate_dynamic_stack_space): Use plus_constant.
Remove bogus conversions; use HOST_WIDE_INT for size.
Don't use TARGET if wrong mode.
Alan Modra [Thu, 1 Feb 2001 04:51:24 +0000 (04:51 +0000)]
(hppa_init_pic_save): Emit the pic offset table reg save after last_parm_insn.
* (hppa_init_pic_save): Emit the pic offset table
reg save after last_parm_insn.
* pa.c (hppa_init_pic_save): New function.
* pa.h (hppa_init_pic_save): Declare.
* pa.md (call, call_value, sibcall, sibcall_value): Use
the above instead of duplicated code.
Alan Modra [Thu, 1 Feb 2001 01:11:28 +0000 (01:11 +0000)]
pa.c (hppa_encode_label): Correct size of alloca buffer so we don't overrun it.
* pa.c (hppa_encode_label): Correct size of alloca buffer
so we don't overrun it. Correct leading `*' case.
* pa.h (STRIP_NAME_ENCODING): Simplify now that we don't
need to handle `*@'.
(FUNCTION_NAME_P): Likewise.
Joseph Myers [Wed, 31 Jan 2001 10:24:40 +0000 (10:24 +0000)]
c-parse.in (structsp): Pedwarn when "enum foo" refers to an incomplete type.
* c-parse.in (structsp): Pedwarn when "enum foo" refers to an
incomplete type.
(typename): Call pending_xref_error after parsing typed_typespecs.
* c-decl.c (lookup_tag): Give error immediately rather than
leaving it pending if the tag of the wrong type is in the same
binding level.
(xref_tag): Don't pedwarn for forward declarations of enum types
here.
* gcc.texi (Actual Bugs): Remove entry for misuse of struct, union
and enum tags.
* fixinc/fixincl.tpl: Add 2001 to copyright. Change name of
README file.
* fixinc/fixincl.x: Regenerated.
* fixinc/inclhack.def (irix_limits_const): New definition to
convert "const" to "__const" in limits.h.
Neil Booth [Tue, 30 Jan 2001 19:19:40 +0000 (19:19 +0000)]
c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type) is not NULL.
* c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
is not NULL.
* toplev.c (decode_W_option): Update warn_larger_than
unconditionally for each processed switch.
* testsuite/gcc.dg/Wlarger-than.c: New test.
pa.c (pa_init_machine_status): Initialize pic_offset_table_save_rtx to NULL_RTX.
* pa.c (pa_init_machine_status): Initialize pic_offset_table_save_rtx
to NULL_RTX.
(hppa_expand_prologue): Delete code to save pic offset table register
in the function prologue.
* pa.h (PIC_OFFSET_TABLE_SAVE_RTX): Correct type in comment.
* pa.md (call, call_value, sibcall, sibcall_value): Save the pic offset
table register at the beginning of the function after the prologue.
Benjamin Kosnik [Tue, 30 Jan 2001 09:18:51 +0000 (09:18 +0000)]
Preliminary named locales.
2001-01-29 Benjamin Kosnik <bkoz@redhat.com>
Preliminary named locales.
* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): New macro.
* aclocal.m4: Regenerate.
* configure.in: Use it.
* configure: Regerate.
* src/Makefile.am (sources): Add c++locale.cc.
(build_headers): Add c++locale.h.
* src/Makefile.in: Regenerate.
* config/c_locale_gnu.h: New file.
* config/c_locale_gnu.cc: New file. Non-inline member functions
for named locales, gnu-specific.
* config/c_locale_generic.h: New file.
* config/c_locale_generic.cc: New file. Non-inline member
functions for named locales, generic version.
* docs/html/configopts.html: Add documentation on new options.
* include/bits/localefwd.h (locale::_M_coalesce): New
function. Correctly put together multi-name locales.
(_Impl(const _Impl&, category, size_t)): Remove.
* src/localename.cc (locale::facet::_S_create_c_locale): Properly
create and error-check underlying locale object.
(locale::facet::_S_destroy_c_locale): Add, take care of properly
tearing down underlying locale object.
* include/bits/localefwd.h (locale::facet): Declare.
* testsuite/22_locale/members.cc: Don't test "fr_FR" locale for
correctness, as glibc apparently has incorrect info in it. Test
with it when it works again.....
* include/bits/localefwd.h (locale::_Impl::__vec_string):
Remove. Number of categories is fixed at six, so just simplify and
make this an array of strings.
(locale::_Impl::_M_has_name): Remove.
(locale::_Impl::_M_name): Remove.
(locale::_Impl::_M_category_names): Turns into...
(locale::_Impl::_M_names): ...this.
(locale::_Impl::_M_has_same_name()): New function.
* src/localename.cc (locale::_Impl::~_Impl()): Remove here.
(locale::_Impl::_Impl(size_t __refs, string __str)): Simplify
signature.
* src/locale.cc (locale::name()): Construct mangled name
accurately reflecting combined locale categories.
* src/locale.cc (locale::classic()): Don't initialize here.
* src/localename.cc (locale::_Impl::_Impl(size_t __num, size_t
__refs, bool __has_name, string __str): Do it here.
* include/bits/localefwd.h: _S_categories_num to
_S_num_categories. _S_facets_num to _S_num_facets.
(locale::id::id()): Explicitly set _M_index to zero.
* src/locale.cc: Same.
* src/locale.cc: (locale::locale(const char*)): Construct named
locales uniquely.
* src/locale.cc: Remove numpunct_byname ctors.
* testsuite/22_locale/numpunct_byname.cc: New file.
* testsuite/22_locale/numpunct.cc: New file.
* include/bits/localefwd.h (class locale): Change data members to
protected, from private.
(_Impl::_M_get_c_locale): Add member function.
(locale::facet::_M_get_global_impl()): Add member function.
* include/bits/locale_facets.h (numpunct::_M_init): Change to take
a __c_locale pointer.
(numpunct::numpunct( __c_locale*, size_t)): Add additonal ctor for
named locales.
* testsuite/22_locale/members.cc: New file, test name and combine.
* include/bits/locale_facets.h (class numpunct): Remove class
_Punct and _Numpunct. Rewrite class numpunct to be correct for
named locales.
* include/bits/localefwd.h (locale::_Imp::_M_c_locale): Add.
* src/localename.cc (_Impl::~_Impl()): Call __frelocale.
(_Imp::_Impl(size_t, size_t, bool, string)) Initialize _M_c_locale.
* src/locale-inst.cc: Remove _Numpunct, _Punct instantiations.
* testsuite/22_locale/numpunct_char_members.cc: New file.
pa.md (return): Revise comment for trivial return.
* pa.md (return): Revise comment for trivial return.
(return_internal): Non-trivial return pattern for non-PIC code.
(return_internal_pic): Non-trivial return pattern for PIC code.
It uses the PIC register to ensure it is restored after
function calls.
(epilogue): Generate appropriate return for PIC and non-PIC code.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r39345
Joseph Myers [Mon, 29 Jan 2001 18:57:24 +0000 (18:57 +0000)]
tree.c, tree.h (build_parse_node): Remove; was identical to build_nt.
* tree.c, tree.h (build_parse_node): Remove; was identical to
build_nt.
* c-lang.c (start_cdtor), objc/objc-act.c
(build_module_descriptor): Use build_nt instead of
build_parse_node.
Jakub Jelinek [Mon, 29 Jan 2001 18:31:35 +0000 (19:31 +0100)]
i386.md (addqi_1_lea): Fix mode (QI instead of HI).
* config/i386/i386.md (addqi_1_lea): Fix mode (QI instead of HI).
(testqi_1, andqi_2): If widening to SImode, make sure CONST_INT does
not have any upper bits set.
* gcc.c-torture/execute/20010129-1.c: New test.
* gcc.c-torture/execute/20010129-1.x: Add -mcpu=i686 on ia32.
Neil Booth [Sun, 28 Jan 2001 11:22:23 +0000 (11:22 +0000)]
cpphash.c (_cpp_cleanup_hashtable, [...]): Don't set fe_value.
* cpphash.c (_cpp_cleanup_hashtable, _cpp_lookup_with_hash)
: Don't set fe_value.
* cpplib.h (AVOID_LPASTE): New flag.
(struct cpp_hashnode): Remove fe_value.
* cpplex.c (cpp_avoid_paste): Don't paste '.' with a number.
* cppmacro.c (builtin_macro): Don't set flags here.
(replace_args): Set AVOID_LPASTE flag on first token of an
argument, and the token following it.
(cpp_get_token): Set AVOID_LPASTE flag on first token of a
macro expansion, and on the token following it. Do it for
builtins too.
* cppmain.c (scan_buffer): Avoid pasting only flagged tokens.
* config.gcc (i[34567]86-sequent-{ptx4*,sysv4*}): Use usegas.h
if appropriate.
* config/ptx4.h: Several fixes to build on DYNIX/ptx v4.[456], and
to remove macro definitions that are duplicated from elfos.h.
* c-typeck.c (struct constructor_stack): Add range_stack member.
(really_start_incremental_init): Clear it.
(push_init_level): Save constructor_range_stack and clear it if
pushing explicit braces.
(pop_init_level): abort if constructor_range_stack is non-zero at
explicit closing brace. Restore saved constructor_range_stack if
not implicit.
* gcc.dg/gnu99-init-1.c: Add 3 more designated range initializer
tests.
Bryce McKinlay [Sat, 27 Jan 2001 06:04:29 +0000 (06:04 +0000)]
ObjectInputStream.java (read): AND byte with 0xff to make result unsigned.
* java/io/ObjectInputStream.java (read): AND byte with 0xff to make
result unsigned.
(read (byte[], int, int)): Only call readNextBlock() if the block
buffer would actually be overrun. Increment blockDataPosition.
(callReadMethod): Propagate exceptions from invocation target.
* java/io/ObjectOutputStream.java (callWriteMethod): Propagate
exceptions from invocation target.
* stmt.c (cost_table): Remove.
(COST_TABLE, cost_table_initialized): New.
(estimate_case_costs): Use the later instead of the former.
(balance_case_nodes): Likewise.