Nathan Sidwell [Mon, 27 Jan 2003 23:29:50 +0000 (23:29 +0000)]
class.c (update_vtable_entry_for_fn): Add index parameter.
cp:
* class.c (update_vtable_entry_for_fn): Add index parameter.
Generate vcall thunk for covariant overriding from a virtual
primary base.
(dfs_modify_vtables): Adjust.
testsuite:
* g++.dg/abi/covariant1.C: New test.
Jerry Quinn [Mon, 27 Jan 2003 18:06:39 +0000 (18:06 +0000)]
invoke.texi (Optimization Options): Group together optional and experimental flags.
* gcc/doc/invoke.texi (Optimization Options): Group together
optional and experimental flags. Move trapv and bounds-check
out of this section.
(Code Gen Options): Move trapv and bounds-check to here.
Steven Bosscher [Sun, 26 Jan 2003 14:40:22 +0000 (15:40 +0100)]
avr.h, [...]: Undefine ASM_FINISH_DECLARE_OBJECT before defining it.
2003-01-26 Steven Bosscher <s.bosscher@student.tudelft.nl>
* config/avr/avr.h, config/cris/aout.h, config/elfos.h,
config/i386/freebsd-aout.h, config/mips/iris6.h: Undefine
ASM_FINISH_DECLARE_OBJECT before defining it.
* toplev.c (rest_of_decl_compilation): Don't define
ASM_FINISH_DECLARE_OBJECT. Only use it if it is defined.
(rest_of_type_compilation): Don't ATTRIBUTE_UNUSED function
parameters for DWARF2 targets because they _are_ used.
Alexandre Oliva [Sun, 26 Jan 2003 10:06:57 +0000 (10:06 +0000)]
fp-bit.h: Define macros for TFmode floating-point constants in IBM-extended TFmode types.
* fp-bit.h: Define macros for TFmode floating-point constants
in IBM-extended TFmode types.
(TMODES): Define if __LDBL_MANT_DIG__ has the newly-supported
widths.
* config/fp-bit.c (pack_d, unpack_d): Support IBM-extended
TFmode type.
Alexandre Oliva [Sun, 26 Jan 2003 09:33:46 +0000 (09:33 +0000)]
fp-bit.h: Define macros for TFmode floating-point constants in IEEE quad TFmode type.
* config/fp-bit.h: Define macros for TFmode floating-point
constants in IEEE quad TFmode type. Declare functions according
to L_ macros.
(TMODES): Define if __LDBL_MANT_DIG__ is 113.
(TFtype, TItype, UTItype): Define if TMODES is defined.
(MAX_UDI_INT, MAX_DI_INT, BITS_PER_DI): Likewise.
(F_T_BITOFF, D_T_BITOFF): Define.
(IMPLICIT_1, IMPLICIT_2): Cast constants to types that are
guaranteed to be wide enough.
* config/fp-bit.c: Check for L_ macros for tf functions.
(__thenan_tf): New.
(nan): Adjust.
(pack_d, unpack_d): Support IEEE 854 quad type.
(_fpmul_parts): Support TFmode. Compute exponent adjustment
from FRAC_NBITS, FRAC_BITS and NGARDS.
(usi_to_float): Cast constants to be shifted to fractype
instead of assuming long long is wide enough.
(sf_to_tf, df_to_tf, __make_tp, tf_to_df, tf_to_sf): New.
hashtab.h (htab_alloc_with_arg, [...]): Add new types.
include/
* hashtab.h (htab_alloc_with_arg, htab_free_with_arg): Add new types.
(struct htab): Add alloc_arg, alloc_with_arg_f, free_with_arg_f.
(htab_create_alloc_ex): New prototype.
(htab_set_functions_ex): New prototype.
libiberty/
* hashtab.c (htab_create_alloc_ex): New function.
(hatab_set_functions_ex): New function.
(htab_delete, htab_expand): Support alternate allocation functions.
Roger Sayle [Sat, 25 Jan 2003 21:49:52 +0000 (21:49 +0000)]
gcse.c (bypass_last_basic_block): New global variable.
* gcse.c (bypass_last_basic_block): New global variable.
(bypass_block): Use redirect_edge_and_branch_force to redirect
fall-through edges. Use bypass_last_basic_block to determine
which blocks have valid PRE information.
(bypass_conditional_jumps): Initialize bypass_last_basic_block.
bitmap.h (BITMAP_WORD): New typedef: fundamental storage type for bitmaps.
* bitmap.h (BITMAP_WORD): New typedef: fundamental storage
type for bitmaps. Use unsigned long.
(nBITMAP_WORD_BITS): New macro.
(BITMAP_WORD_BITS): New macro.
(rest of file): Use it.
* bitmap.c: Use it.
Roger Sayle [Sat, 25 Jan 2003 17:47:26 +0000 (17:47 +0000)]
builtins.c (purge_builtin_constant_p): Scan insn stream sequentially rather than by basic block.
* builtins.c (purge_builtin_constant_p): Scan insn stream
sequentially rather than by basic block.
* function.c (purge_addressof): Simplify test with INSN_P.
Roger Sayle [Sat, 25 Jan 2003 17:42:39 +0000 (17:42 +0000)]
function.h (struct function): New field calls_constant_p.
* function.h (struct function): New field calls_constant_p.
(current_function_calls_constant_p): New macro for above.
* function.c (prepare_function_start): Initialize calls_eh_return
and calls_constant_p.
* builtins.c (expand_builtin_constant_p): Set calls_constant_p.
* toplev.c (rest_of_compilation): Only call purge_builtin_constant_p
when the current_function_calls_constant_p.
* integrate.c (expand_inline_function): Set calls_constant_p if
the function being inlined has calls_constant_p set.
Roger Sayle [Sat, 25 Jan 2003 17:37:42 +0000 (17:37 +0000)]
cse.c (fold_rtx): Instantiate CONSTANT_P_RTX to 0 when not optimizing, even if flag_gcse is true.
* cse.c (fold_rtx): Instantiate CONSTANT_P_RTX to 0 when not
optimizing, even if flag_gcse is true.
* toplev.c (rest_of_compilation): purge_builtin_constant_p
only needs to be called when "optimize > 0 && flag_gcse".
Roger Sayle [Sat, 25 Jan 2003 17:30:29 +0000 (17:30 +0000)]
stmt.c (emit_case_bit_tests): New routine to implement suitable switch statements using the equivalent of "if...
* stmt.c (emit_case_bit_tests): New routine to implement suitable
switch statements using the equivalent of "if ((1<<x) & cst) ... ".
(case_bit_test_cmp): New comparison function for "qsort" to order
case_bit_tests by decreasing number of destination nodes.
(lshift_cheap_p): New function to determine if "1 << x" is cheap.
(expand_end_case_type): Use emit_case_bit_tests to implement
suitable switch statments.
(CASE_USE_BIT_TESTS): New target macro to disable the above.
* Makefile.in (stmt.o): Add dependency on optab.h.
* doc/tm.texi (CASE_USE_BIT_TESTS): Document new target macro.
* gcc.c-torture/execute/switch-1.c: New test case.
Andreas Schwab [Sat, 25 Jan 2003 17:26:55 +0000 (17:26 +0000)]
crtend.asm [...]: Make __do_global_ctors_aux hidden global and don't put it in .init_array.
* config/ia64/crtend.asm [HAVE_INITFINI_ARRAY]: Make
__do_global_ctors_aux hidden global and don't put it in
.init_array.
* config/ia64/crtbegin.asm [HAVE_INITFINI_ARRAY]: Put it here
instead so that it comes first.
Jan Hubicka [Sat, 25 Jan 2003 15:00:51 +0000 (16:00 +0100)]
i386.c (ix86_expand_movstr, [...]): Consistently do libcall for large blocks.
* i386.c (ix86_expand_movstr, ix86_expand_clrstr): Consistently
do libcall for large blocks.
* i386.md (comi patterns): Set type to ssecomi.
(sse2_unpck?pd): Fix mode of vec_select.
* cse.c: Include except.h
(cse_set_around_loop): Do not create new basic blocks.
* Makefile.in (cse.o): Add dependnecy on except.h
Jan Hubicka [Sat, 25 Jan 2003 11:08:38 +0000 (12:08 +0100)]
builtins.c (fold_trunc_transparent_mathfn): New function.
* builtins.c (fold_trunc_transparent_mathfn): New function.
(fold_builtin): Use it.
* convert.c (convert_to_real): Re-enable code to convert
math functions; add support for floor familly functions.
Bob Wilson [Fri, 24 Jan 2003 22:09:05 +0000 (22:09 +0000)]
xtensa.c: Remove unused include of machmode.h.
* config/xtensa/xtensa.c: Remove unused include of machmode.h.
(xtensa_emit_call, print_operand): Fix printf format strings
to avoid compile warnings.
(xtensa_function_prologue, xtensa_function_epilogue): Change type
of "size" argument to HOST_WIDE_INT to fix compile warnings.
* config/xtensa/xtensa-protos.h
(xtensa_function_prologue, xtensa_function_epilogue): Ditto.
Bob Wilson [Fri, 24 Jan 2003 21:51:03 +0000 (21:51 +0000)]
config.gcc (xtensa-*-elf*): Removed assignments to with_newlib, extra_parts, and fixincludes.
* config.gcc (xtensa-*-elf*): Removed assignments to with_newlib,
extra_parts, and fixincludes. Add xtensa/t-elf tmake_file.
(xtensa-*-linux*): Add xtensa/t-linux tmake_file.
* config/xtensa/crti.asm: New file.
* config/xtensa/crtn.asm: New file.
* config/xtensa/t-elf: New file.
* config/xtensa/t-linux: New file.
* config/xtensa/t-xtensa: Add rules for crti.o and crtn.o.
Move various CFLAGS settings to new t-elf file.
* config/i386/i386-protos.h (function_arg_pass_by_reference): Declare.
* config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use it.
* config/i386/i386.c (function_arg_pass_by_reference): New.
(ix86_va_arg): Support arguments passed by reference.
* config/s390/s390-protos.h (tls_symbolic_operand): Add prototype.
(tls_symbolic_reference_mentioned_p): Add prototype.
(s390_tls_get_offset): Add prototype.
(emit_pic_move): Remove prototype, replace by ...
(emit_symbolic_move): .. this new prototype.
* config/s390/s390.c (TARGET_HAVE_TLS): Conditionally define.
(tls_model_chars): New global variable.
(s390_encode_section_info): Encode TLS model.
Use targetm.binds_local_p to check for local symbols.
(s390_strip_name_encoding): New function.
(TARGET_STRIP_NAME_ENCODING): Define.
(get_thread_pointer): New function.
(legitimize_tls_address): New function.
(legitimize_address): Call it.
(emit_pic_move): Remove, replace by ...
(emit_symbolic_move): ... this new function.
(s390_output_symbolic_const): Handle TLS unspecs.
(print_operand): New code 'J'.
(machine_function): Add struct member 'some_ld_name'.
(get_some_local_dynamic_name, get_some_local_dynamic_name_1): New.
(enum s390_builtin): New type.
(code_for_builtin_64, code_for_builtin_31): New global variables.
(s390_init_builtins, s390_expand_builtin): New functions.
(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.