summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* * config/rs6000/darwin-ldouble.c: Correct referencegeoffk2004-07-082-1/+6
| | | | | | | to the Linnainmaa paper. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84314 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/arc/arc-protos.h (arc_va_arg): Remove.rth2004-07-084-74/+14
| | | | | | | | | * config/arc/arc.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New. (arc_gimplify_va_arg_expr): Rewrite from arc_va_arg. * config/arc/arc.h (EXPAND_BUILTIN_VA_ARG): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84313 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Paolo Carlini <pcarlini@suse.de>paolo2004-07-0810-643/+793
| | | | | | | | | | | | | | | * include/bits/gslice.h: Trivial formatting fixes. * include/bits/gslice_array.h: Likewise. * include/bits/indirect_array.h: Likewise. * include/bits/mask_array.h: Likewise. * include/bits/slice_array.h: Likewise. * include/bits/valarray_after.h: Likewise. * include/bits/valarray_array.h: Likewise. * include/bits/valarray_before.h: Likewise. * include/std/std_valarray.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84312 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/c4x/c4x-protos.h (c4x_va_arg): Remove.rth2004-07-084-11/+19
| | | | | | | | | * config/c4x/c4x.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New. (c4x_gimplify_va_arg_expr): Rewrite from c4x_va_arg. * config/c4x/c4x.h (EXPAND_BUILTIN_VA_ARG): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84311 138bc75d-0d04-0410-961f-82ee72b054a4
* * pa.md (prefetch_32, prefetch_64): Simplify constraint checks.danglin2004-07-082-12/+10
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84310 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.c-torture/execute/920428-2.x: Delete.ebotcazou2004-07-083-12/+5
| | | | | | | * gcc.c-torture/execute/920501-7.x: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84309 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/16291pbrook2004-07-082-5/+11
| | | | | | | | * libgfortran/io/write.c: (write_float): Added length check. Remove pointless memset calls. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84308 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-decl.c (static_ctors, static_dtors): Make static.zack2004-07-086-73/+81
| | | | | | | | | | | | | | | | | | | | | | | (pop_file_scope): Call c_common_write_pch and cgraph_finalize_compilation_unit here. (build_cdtor): Moved here from c-objc-common.c; simplify. (c_write_global_declarations_1): Clarify comment. (c_write_global_declarations): Close the external scope before doing anything else. Call build_cdtor, cgraph_optimize, and mudflap_finish_file here. * c-lang.c (finish_file): Don't call c_objc_common_finish_file. Clarify comment. * c-objc-common.c: No need to include cgraph.h. (build_cdtor): Moved to c-decl.c. (c_objc_common_finish_file): Delete. * c-tree.h: Update to match. * objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file. (generate_static_references): Set TREE_USED before calling finish_decl. Eliminate unnecessary dummy declaration. Call rest_of_decl_compilation on the static_instances_decl. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84307 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scopezack2004-07-087-55/+37
| | | | | | | | | | | | | | | decls when there is only one input translation unit. * langhooks.c (lhd_set_decl_assembler_name): Partially revert change of 2004-07-05; do not treat declarations with DECL_CONTEXT a TRANSLATION_UNIT_DECL specially. * opts.c (cur_in_fname): Delete. * opts.h: Likewise. * tree.c: Revert changes of 2004-07-05; no special treatment for TRANSLATION_UNIT_DECLs. * Makefile.in (tree.o): Update dependencies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84306 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.def (host_modules): Set bootstrap=true for flex.aoliva2004-07-084-4/+10
| | | | | | | | * Makefile.tpl (all-gcc): Depend on texinfo and flex. * Makefile.in: Rebuilt. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84305 138bc75d-0d04-0410-961f-82ee72b054a4
* * intrinsic.c (add_sym_4s): New function.pbrook2004-07-082-18/+51
| | | | | | | (add_subroutines): Change gfc_add_sym_? to gfc_add_sym_?s. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84304 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Frank Ch. Eigler <fche@redhat.com>fche2004-07-084-287/+388
| | | | | | | | | | | | | | | | | | | | | | | | | ANSI C conversion, libmudflap specialization, recursion limiting. * splay-tree.h (splay_tree_{de,}allocate_fn): Remove allocation_data argument and indirection function pointers, update callers. (splay_tree_s): Add statistics and recursion control fields num_keys, max_depth, depth, rebalance_p. * splay-tree.c (splay_tree_splay_helper): Track recursion depth. Back out of search if it exceeds limit. (splay_tree_splay): Manage recursion limiting with rebalancing as needed. (splay_tree_new): More initialization. (splay_tree_rebalance): New function. (splay_tree_foreach): Rewrite using nonrecursive logic. (splay_tree_xmalloc_allocate, splay_tree_xmalloc_deallocate): Remove. Point indirect calls to mf-runtime.c's routines. (splay_tree_compare_ints, splay_tree_compare_pointers): Remove unused functions. (splay_tree_delete, splay_tree_delete_helper): Ditto. * testsuite/heap-scalestress.c: New test based on one from Eyal Lebedinsky <eyal@eyal.emu.id.au>: git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84303 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.c (fold_builtin_strcpy): Merge functionality fromsayle2004-07-086-203/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | simplify_builtin_strcpy. Add additional len argument. No longer static. Remove function prototype. (fold_builtin_strncpy): Likewise integrate functionality from simplify_builtin_strncpy. Add additional slen argument. No longer static. Remove function prototype. (simplify_builtin_strcy, simplify_builtin_strncpy): Delete. (simplify_builtin_fputs): Rename to fold_builtin_fputs. Change types of "ignore" and "unlocked" parameters to bool. (fold_builtin_1): Add additional ignore argument. Call renamed fold_builtin_fputs to simplify GCC "fputs" and "fputs_unlocked" builtins. Update arguments to fold_builtin_strncpy and fold_builtin_strcpy. Add function prototype. (fold_builtin): Add additional Boolean ignore argument to pass to fold_builtin_1. (simplify_builtin): Call fold_builtin_fputs, fold_builtin_strcpy and fold_builtin_strncpy instead of simplify_builtin_fputs, simplify_builtin_strcpy and simplify_builtin_strncpy respectively. * expr.h (simplify_builtin_fputs, simplify_builtin_strcpy, simplify_builtin_strncpy): Delete function prototypes. * tree.h (fold_builtin_fputs, fold_builtin_strcpy, fold_builtin_strncpy): Add function prototypes here. (fold_builtin): Update function prototype with new "bool ignore". * tree-ssa-ccp.c (ccp_fold): Update call to fold_builtin. (ccp_fold_builtin): Update call to fold_builtin. Call fold_builtin_fputs, fold_builtin_strcpy and fold_builtin_strncpy instead of simplify_builtin_fputs, simplify_builtin_strcpy and simplify_builtin_strncpy respectively. * fold-const.c (fold): Update call to fold_builtin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84302 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.c (expand_builtin_stpcpy): Un-simplify decay of stpcpyaoliva2004-07-082-1/+11
| | | | | | | to strcpy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84301 138bc75d-0d04-0410-961f-82ee72b054a4
* * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.aoliva2004-07-085-28/+23
| | | | | | | | | | | (FUNCTION_ARG_PASS_BY_REFERENCE): Likewise. (FUNCTION_ARG_CALLEE_COPIES): Likewise. * calls.c: Remove ifdefs of macros above. * functions.c: Likewise. * expr.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84300 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/sparc/sparc.md (UNSPECV_GOTO_V9): Delete.ebotcazou2004-07-082-17/+53
| | | | | | | | | | | | | (arch attribute): Delete. (current_function_calls_alloca attribute): Rename into calls_alloca. (calls_eh_return): New attribute. (leaf_function): Likewise. (length attribute): Fix formula for sibcalls. (return insn): Correctly compute the 'length' attribute. (do_builtin_setjmp_setup): Adjust use of current_function_calls_alloca. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84299 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-cfg.c (make_exit_edges): Use get_call_expr_in.rth2004-07-088-102/+110
| | | | | | | | | | | | | | | (remove_useless_stmts_1, is_ctrl_altering_stmt): Likewise. (tree_block_ends_with_call_p, need_fake_edge_p): Likewise. * tree-eh.c (lower_eh_constructs_1): Likewise. * tree-sra.c (sra_walk_modify_expr): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. (eliminate_unnecessary_stmts): Likewise. * tree-ssa-dse.c (dse_optimize_stmt): Likewise. * tree-tailcall.c (optimize_tail_call): Likewise. * tree-ssa-ccp.c (get_rhs, set_rhs): Reorg to use switch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84298 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Paolo Bonzini <bonzini@gnu.org>jakub2004-07-084-6/+41
| | | | | | | | | | | | | | | | | | | | Jakub Jelinek <jakub@redhat.com> * config/i386/i386.c (override_options): Enable SSE prefetches with -mtune, as long as we are compiling for i686 or higher. All i686 processors accept SSE prefetches as NOPS, some i586's don't. 2004-07-08 Jakub Jelinek <jakub@redhat.com> * gcc.mist-tests/i386-prefetch.exp (PREFETCH_SSE): Change all -march=i386 into -march=i686. Add -march=i686 -mtune=x and -march=x for pentium3, pentium3m, pentium-m, pentium4m, prescott and c3-2. (PREFETCH_3DNOW): Add -march=c3. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84297 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Benjamin Kosnik <bkoz@redhat.com>bkoz2004-07-082-8/+7
| | | | | | | | PR c++/16169 * include/bits/basic_string.h (basic_string::operator=): Revert. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84296 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c/16437dnovillo2004-07-083-0/+33
| | | | | | | | * gcc.c-torture/execute/991118-1.x: XFAIL for x86_64. * gcc.c-torture/execute/bf64-1.x: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84295 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/10567ebotcazou2004-07-082-3/+16
| | | | | | | * config/sparc/sparc.md (update_return): Honor flag_delayed_branch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84293 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-ssa-operands.c (get_asm_expr_operands): Fix thinkos indnovillo2004-07-082-38/+40
| | | | | | | the handling of clobbering ASM_EXPRs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84292 138bc75d-0d04-0410-961f-82ee72b054a4
* * name-lookup.h (struct cp_binding_level): Update documentationmmitchel2004-07-082-6/+11
| | | | | | | for class_shadowed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84291 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/16430ebotcazou2004-07-082-0/+18
| | | | | | | | * config/sparc/sparc.c (function_value): In 64-bit mode, return the aggregates larger than 16 bytes like unions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84289 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/16199ebotcazou2004-07-084-63/+213
| | | | | | | | | | | | * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): When 'temp' is zero, generate new pseudos as needed and emit the sequence of insns in single-assignment form. Resync comments with code. (sparc_emit_set_const64): Pass zero as 'temp' argument to above function before reload. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84285 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/16169giovannibajo2004-07-084-3/+73
| | | | | | | | | | | * typeck.c (check_return_expr): Improve -Weffc++ warning: handle returning CALL_EXPR, and non-reference return type. PR c++/16169 * g++.dg/warn/effc2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84283 138bc75d-0d04-0410-961f-82ee72b054a4
* * vec.c (vec_assert_fail): Remove duplicate 'function'.nathan2004-07-082-2/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84282 138bc75d-0d04-0410-961f-82ee72b054a4
* .:nathan2004-07-085-67/+95
| | | | | | | | | | | | * vec.c (vec_p_reserve, vec_o_reserve): Allocation is signed. * vec.h (VEC_alloc, VEC_embedded_size, VEC_embedded_init): Allocation is signed. (VEC_reserve): Return flag, allocation is signed. cp: * name-lookup.c (push_binding): Use VEC_reserve. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84281 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-ssa-ccp.c (fold_stmt): Get type directly fromnathan2004-07-082-1/+11
| | | | | | | OBJ_TYPE_REF_OBJECT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84280 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Joseph S. Myers <jsm@polyomino.org.uk>jsm282004-07-0816-52/+251
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Neil Booth <neil@daikokuya.co.uk> PR c/2511 PR c/3325 * c-decl.c (finish_struct): Ensure bit-fields are given the correct type. * c-common.c (c_common_signed_or_unsigned_type): For C, require the precision to match as well as the mode. * expr.c (reduce_to_bit_field_precision): New function. (expand_expr_real_1): Reduce expressions of bit-field type to proper precision. * langhooks.h (reduce_bit_field_operations): New hook. * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define. * c-lang.c, objc/objc-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define. * objc/objc-act.c (check_ivars): Convert types to bit-field types before checking. * tree.c (build_nonstandard_integer_type): New function. * tree.h (build_nonstandard_integer_type): New prototype. * tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat conversions between integer and boolean types as useless. testsuite: * gcc.c-torture/execute/bitfld-1.x: Remove. * gcc.c-torture/execute/bitfld-3.c: New test. * gcc.dg/bitfld-2.c: Remove XFAILs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84279 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Paolo Bonzini <bonzini@gnu.org>bonzini2004-07-082-8/+5
| | | | | | | | * c-common.c (c_common_nodes_and_builtins): Do not create __builtin_ptrdiff_t and __builtin_size_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84278 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Andrew Pinski <apinski@apple.com>pinskia2004-07-082-1/+6
| | | | | | | | * Makefile.in (libbackend.o): Add -combine to the gcc command line. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84277 138bc75d-0d04-0410-961f-82ee72b054a4
* (TARGET_LIBGCC2_CFLAGS): Define. Set to -Os.nickc2004-07-082-0/+7
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84276 138bc75d-0d04-0410-961f-82ee72b054a4
* * except.c (expand_eh_region_start, expand_eh_region_end,rth2004-07-0825-1891/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | expand_eh_handler, expand_eh_region_end_cleanup, expand_start_all_catch, expand_start_catch, expand_end_catch, expand_end_all_catch, expand_eh_region_end_allowed, expand_eh_region_end_must_not_throw, expand_eh_region_end_throw, expand_eh_region_end_fixup): Remove. * stmt.c (struct nesting): Remove stack_level, innermost_stack_block, cleanups, outer_cleanups, label_chain, exception_region. (struct goto_fixup): Remove stack_level, cleanup_list_list. (struct label_chain): Remove. (struct stmt_status): Remove x_stack_block_stack. (stack_block_stack, expand_goto_internal, expand_fixup, expand_fixups, fixup_gotos, save_stack_pointer, expand_decl_cleanup, expand_decl_cleanup_eh, expand_cleanups, start_cleanup_deferral, end_cleanup_deferral, last_cleanup_this_contour, containing_blocks_have_cleanups_or_stack_level, any_pending_cleanups): Remove. (expand_null_return_1): Take no arguments. (expand_label, expand_naked_return, expand_return, expand_start_bindings_and_block, expand_end_bindings, expand_decl, expand_anon_union_decl, expand_start_case, pushcase, pushcase_range, expand_end_case_type): Don't use any of them. * calls.c (expand_call): Likewise. * dojump.c (do_jump): Likewise. * function.c (expand_function_end): Likewise. * expr.c (store_expr, expand_expr_real_1): Likewise. (safe_from_p): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR. (expand_expr_real_1): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR, TARGET_EXPR, TRY_CATCH_EXPR, CATCH_EXPR, EH_FILTER_EXPR, TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR. * fold-const.c (fold_checksum_tree): Use first_rtl_op. * gengtype.c (adjust_field_tree_exp): Remove rtl op handling. * gimplify.c (gimplify_cleanup_point_expr): Renumber operands for WITH_CLEANUP_EXPR. (gimple_push_cleanup): Likewise. * integrate.c (copy_decl_for_inlining): Don't DECL_TOO_LATE. * print-tree.c (print_node): Likewise. * tree-pretty-print.c (dump_generic_node): Remove GOTO_SUBROUTINE_EXPR. * tree.c (first_rtl_op): Always just TREE_CODE_LENGTH. (has_cleanups): Remove GOTO_SUBROUTINE_EXPR. * tree.def (WITH_CLEANUP_EXPR): Remove op1 and op2. (GOTO_SUBROUTINE_EXPR): Remove. * tree.h (WITH_CLEANUP_EXPR_RTL): Remove. (DECL_TOO_LATE): Remove. * except.h, tree.h: Update decls. ada/ * trans.c (gnat_to_gnu <N_Handled_Sequence_Of_Statements>): Update commentary. cp/ * cp-tree.h (expand_eh_spec_block): Remove. java/ * expr.c (case_identity, get_primitive_array_vtable, java_expand_expr, emit_init_test_initialization): Remove. * java-tree.h (java_expand_expr): Remove. * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84275 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-08 Paolo Bonzini <bonzini@gnu.org>bonzini2004-07-0810-401/+507
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * explow.c (optimize_save_area_alloca): Do not accept parameters. * passes.c (rest_of_handle_final): Handle symout. (rest_of_handle_new_regalloc, rest_of_handle_old_regalloc): Push timevar here. (rest_of_handle_sched): Break out SMS. Remove ifs for flag_schedule_insns and flag_modulo_sched. (rest_of_handle_addressof, rest_of_handle_cse2): Garbage collect at the end. (rest_of_handle_gcse2): Put under timevar TV_RELOAD_CSE_REGS. (rest_of_handle_partition_blocks, rest_of_handle_sms, rest_of_handle_if_after_reload, rest_of_handle_peephole2, rest_of_handle_mode_switching, rest_of_handle_jump, rest_of_handle_guess_branch_prob, rest_of_handle_eh, rest_of_handle_jump2, rest_of_handle_postreload, rest_of_handle_flow2, rest_of_clean_state, rest_of_handle_shorten_branches, rest_of_handle_prologue_epilogue, rest_of_handle_branch_target_load_optimize): New. (rest_of_compilation): Call the above. Remove ggc_collect calls moved to rest_of_handle_*. * rtl.h (optimize_save_area_alloca): Do not accept parameters. * dwarf2out.c (dwarf2out_begin_prologue): Use TREE_NOTHROW. * except.c (set_nothrow_function_flags): Set TREE_NOTHROW. * except.h (set_nothrow_function_flags): Update comment. * function.c (current_function_nothrow): Remove. * output.h (current_function_nothrow): Remove. * passes.c (rest_of_compilation): Do not set TREE_NOTHROW. * config/arm/arm.c (arm_compute_func_type): Use TREE_NOTHROW. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84274 138bc75d-0d04-0410-961f-82ee72b054a4
* PR bootstrap/16326ebotcazou2004-07-082-62/+96
| | | | | | | | | | | | | * reorg.c: Revert 2004-06-30 change. (find_end_label): If HAVE_epilogue and !HAVE_return, return 0 instead of creating a label at the end of the insn chain. (optimize_skip): Account for the failure mode of find_end_label. (fill_simple_delay_slots): Likewise. (fill_slots_from_thread): Likewise. (relax_delay_slots): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84273 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-flow.h (addressable_vars): Declare.dnovillo2004-07-085-53/+137
| | | | | | | | | | | | | | | | * tree-ssa-alias.c (addressable_vars): Define. (setup_pointers_and_addressables): Add addressable variables to addressable_vars. * tree-ssa-operands.c (get_stmt_operands): Move handling of ASM_EXPRs ... (get_asm_expr_operands): ... here. When the ASM_EXPR clobbers memory, also clobber addressable variables. * tree-ssa.c (init_tree_ssa): Initialize addressable_vars. (delete_tree_ssa): Reset addressable_vars. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84272 138bc75d-0d04-0410-961f-82ee72b054a4
* * varasm.c (assemble_variable): Use assemble_zeros forrth2004-07-082-7/+25
| | | | | | | | | zero-initialized variables. (categorize_decl_for_section): Honor flag_zero_initialized_in_bss for SECCAT_BSS and SECCAT_TBSS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84271 138bc75d-0d04-0410-961f-82ee72b054a4
* * varasm.c (asm_output_bss): Don't declare unless BSS_SECTION_ASM_OP.rth2004-07-082-1/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84269 138bc75d-0d04-0410-961f-82ee72b054a4
* * expmed.c (emit_store_flag): Also special-case double-wordrth2004-07-082-8/+13
| | | | | | | (in-)equality comparison against -1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84268 138bc75d-0d04-0410-961f-82ee72b054a4
* * calls.c (emit_library_call_value_1): Use mode of function parameterrth2004-07-082-3/+7
| | | | | | | rather than that of argument since constants have none. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84267 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary forrth2004-07-082-4/+9
| | | | | | | passing arguments the containers for which are registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84266 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-07 Benjamin Kosnik <bkoz@redhat.com>bkoz2004-07-085-2/+17
| | | | | | | | | | | | | | | * configure.ac (libtool_VERSION): To 6:2:0. * configure: Regenerated. * testsuite/testsuite_abi.cc (check_version): Add 3.4.2. 2004-07-07 Aaron W. LaFramboise <aaronraolete36@aaronwl.com> PR libstdc++/16411 * config/linker-map.gnu: Add stdio_sync_filebuf::file exports. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84264 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>hjl2004-07-082-0/+45
| | | | | | | | PR c++/16276 * g++.dg/rtti/tinfo1.C: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84261 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (saved_scope): Remove x_previous_class_type andmmitchel2004-07-086-138/+259
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x_previous_class_values; add x_previous_class_level. (previous_class_type): Remove. (previous_class_values): Remove. (previous_class_level): New macro. * class.c (pushclass): Restore the identifier cache more expeditiously. (invalidate_class_lookup_cache): Use vector for class_shadowed and previous_class_values. * decl.c (poplevel): Likewise. * name-lookup.c (cxx_binding_init): New function. (cxx_binding_make): Use it. (push_binding): For a binding in a class level, use a vector of cp_class_binding nodes. (push_binding_level): New function. (begin_scope): Use it. (leave_scope): Do not put class binding levels on the free list. (print_binding_level): Adjust for the fact that class_shadowed is a vector. (poplevel_class): Likewise. (clear_identifier_class_values): Likewise. (push_class_level_binding): Likewise. (set_class_shadows): Remove. (store_binding): New function. (store_class_bindings): New function. (push_to_top_level): Use store_class_bindings as appropriate. (pop_from_top_level): Use previous_class_level, not previous_class_type. * name-lookup.h (cp_class_binding): New type. (cp_binding_level): Use a vector object for class_shadowed. (push_binding_level): Declare. (set_class_shadows): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84259 138bc75d-0d04-0410-961f-82ee72b054a4
* Introduce H8SX support.aoliva2004-07-0817-667/+4845
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * expr.c (expand_strcpy): Renamed and moved to... * builtins.c (expand_movstr): ... here. Tweak. (expand_builtin_strcpy): Adjust. Use movstr if len can't be computed or has side effects. (expand_builtin_stpcpy): Likewise. Use strcpy if return value is unused, or if mempcpy fails. Adjust the return value in the latter case. Use movstr if everything else fails. * doc/md.texi (movstr): Document. (movmemM, clrmemM): Fix explanation of memory block operands. * config/h8300/h8300.md (stpcpy): Renamed to... (movstr): ... this. Adjust. 2004-07-07 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.md: Rename movstr*, except for movstrict*, to movmem* and clrstr* to clrmem*. 2004-06-27 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (h8300_reg_class_from_letter): Map 'D' to GENERAL_REGS, always. (h8300_swap_into_er6, h8300_swap_into_er6): Handle the case of getting the stack pointer as addr. * config/h8300/h8300.h (PREDICATE_CODES): Remove constant rtxes from general_operand_dst. * config/h8300/h8300.md (movmd_internal_normal): New, normal-mode variant of... (movmd_internal): ... this. Add modes to operands. Disparage `D' instead of requiring it to match only before reload. (stpcpy_internal_normal): New, normal-mode variant of... (stpcpy_internal): ... this. Add modes to operands. Disparage `D' instead of requiring it to match only before reload. * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Add mode argument. * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Pass it to... * config/h8300/h8300.c (h8300_legitimate_address_p): Pass it to h8300_get_index. * config/h8300/h8300.md (attr type): Add call. (attr can_delay): If type is call, set it no. (call, call_value): Set type to call. 2004-06-21 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New. 2004-06-16 Alexandre Oliva <aoliva@redhat.com> * tree.c (get_narrower): Don't narrow integral types into non-integral types. * config/h8300/h8300.c (h8300_expand_epilogue): Initialize frame_size *before* the first use. * config/h8300/h8300.md (movstrictqi): Reintroduce post-increment on input. (peephole2): Don't widen instructions that push SP. Move decrement of SP to the end of all stm-generating peepholes. 2003-07-24 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (insv): Prefer to use AND to clear a bitfield and OR to set it to all ones. 2003-07-24 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (can_delay): Default to "no" for bit branches. (call, call_value): Set can_delay to "no". 2003-07-22 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (extzv): Make subreg check more robust. 2003-07-21 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (*brabit): Remove. * config/h8300/h8300.md (*brabc, *brabs): Remove mode from zero_extract. Use bit_memory_operand as the predicate for operand 1 and 'WU' as the constraint. Check the difference between the base length and the final one when deciding which type of branch to use. 2003-07-21 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (extzv): Remove mode from operands 0 and 1. Use convert_move to extend the result for TARGET_H8300SX. Check for QImode memory references. Optimize the case where the destination is a paradoxical subreg. 2003-07-21 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md (*movsf_h8sx): Add an r <- G alternative. * config/h8300/h8300.md (andqi): Remove bclr from h8sx version. 2003-07-21 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.md: Include mova.md (length_table): Add mova and mova_zero. * config/h8300/h8300.c (print_operand): Handle '%o'. Print a length after all constant addresses for '%R', '%X', '%T' and '%S'. (h8300_mova_length): New function. (h8300_insn_length_from_table): Use it to handle mova and mova_zero. * config/h8300/t-h8300 (mova.md): Generate from genmova.sh. Add to dependencies for s-config, etc. * config/h8300/gemova.sh: New file. * config/h8300/mova.md: Generated. 2003-07-20 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (h8300_bitfield_length): New. (nibble_operand): Adjust. (h8300_binary_length): Handle conditional binary op. (h8300_insn_length_from_table): Handle bitfield and bitbranch. * config/h8300/h8300.h: Change constraints W# and Y# to P#>X and P#<X, respectively. The original P is now IP4>X. Introduced P#>0 and P#<0, unused so far. W and Y are now prefixes to multi-letter constraints. WU is introduced as a variant of U that requires a mem, and is therefore considered an EXTRA_MEMORY_CONSTRAINT. * config/h8300/h8300.md (attr type): Added bitbranch. (attr length_table): Added bitfield and bitbranch. (attr length): Compute bitbranch length. (andqi): Separate pattern for H8300SX. Use bfld for loading the least-significant bit of a byte. (brabit, brabc, brabs): New. (insv, extzv): Emit bfst and bfld on H8300SX. (bfld, bfst, seq, sne): New. (bstzhireg, cmpstz, bstz, bistz): New. (cmpcondbset, condbset, cmpcondbclr, condbclr): New. (cmpcondbsetreg, condbsetreg, cmpcondbclrreg, condbclrreg): New. 2003-07-11 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c (h8sx_binary_memory_operator): New function. (h8sx_unary_memory_operator): New function. * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Disable. (PREDICATE_CODES): Add h8sx_{unary,binary}_memory_operator. * config/h8300/h8300.md: Add peepholes to combine reloads and arithmetic insns. 2003-07-10 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h830.md (cmpqi): Use 'i' rather than 'n' in constraints. (*cmphi_h8300hs, *addqi3, *addhi3_h8sx, subhi3): Likewise. (and?i, ior?i, xor?i): Likewise. 2003-07-10 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c: Move enums and prototypes to head of file. Various whitespace fixes. (h8300_constant_length): New function, split out from... (h8300_displacement_size): ...here. Rename h8300_displacement_length. (h8300_classify_operand): Use IN_RANGE. (h8300_classify_operand): Use h8300_constant_length. (h8300_short_move_mem_p): Tighten size check. (h8sx_mergeable_memrefs_p): Tighten equality check. 2003-06-30 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Define __H8300SX__ for -msx. * config/h8300/crti.asm: Use .h8300sx or .h8300sxn for -msx code. * config/h8300/crtn.asm: Likewise. * config/h8300/lib1funcs.asm: Likewise. Use 32-bit pointers if __H8300SX__ is defined. 2003-06-27 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300-protos.h (h8300_get_index): Add mode parameter. * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Update accordingly. (GO_IF_MODE_DEPENDENT_ADDRESS): Treat POST_DEC, PRE_INC and indexed addresses as mode-dependent. * config/h8300/h8300.c (print_operand_address): Update call to h8300_get_index. (h8300_get_index): Take a mode argument. Rework to fix an earlier misunderstanding. 2003-06-26 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c (zero_extendqisi2): Force the source operand into a register if TARGET_H8300SX. (*zero_extendqisi2_h8300hs, *extendqisi2_h8300): Disable for TARGET_H8300SX. Also disable related define_splits. (*zero_extendqisi2_h8sx, *extendqisi2_h8sx): New patterns. 2003-06-23 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling. 2003-06-20 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.h (OK_FOR_Z): New macro. (EXTRA_CONSTRAINT_STR): Check it. * config/h8300/h8300.c (h8300_classify_operand): Accept null class arguments. (h8300_insn_length_from_table): Handle LENGTH_TABLE_MOV_IMM4. * config/h8300/h8300.md (length_table): Add mov_imm4. (movqi, movhi): Add Z <- W4 alternatives to h8sx patterns. 2003-06-20 Richard Sandiford <rsandifo@redhat.com> * genattrtab.c (write_eligible_delay): Allow candidate_insn to be a label. * config/h8300/h8300.h (DELAY_SLOT_LENGTH): New macro. * config/h8300/h8300.c (h8300_reorg): New function. (TARGET_MACHINE_DEPENDENT_REORG): Define. * config/h8300/h8300.md (length): Subtract the length of the delay slot from (pc) when checking the range of forward branches. (delay_slot, can_delay): New attributes. (define_delay): Add bra/s handling. (movmd_internal, return_h8sx, *return_1): Set can_delay to no. (jump): Add delayed-branch handling. 2003-06-17 Richard Sandiford <rsandifo@redhat.com> * expr.c (expand_strcpy): New function. * builtins.c (expand_builtin_strcpy): Fall back on expand_strcpy. (expand_builtin_stpcpy): Likewise. * config/h8300/h8300-protos.h (h8sx_split_movmd): Remove. (h8300_swap_into_er6, h8300_swap_out_of_er6): Declare. * config/h8300/h8300.c (h8300_reg_class_from_letter): Tweak 'd' handling to improve register allocation for -fno-omit-frame-pointer. (h8sx_split_movmd): Delete, moving er6 handling into... (h8300_swap_into_er6, h8300_swap_out_of_er6): ...these new functions. * config/h8300/h8300.md (UNSPEC_STPCPY): New unspec constant. (movmd): Add calls to copy_rtx. (movmd_internal): In the second alternative, allow the initial and final destination registers to be different . Update the splitter accordingly. Call h8300_swap_into_er6 and h8300_swap_out_of_er6 instead of h8sx_split_movmd. (stpcpy, movsd): New expanders. (movsd_internal): New define_insn. 2003-06-13 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Declare. (h8sx_emit_movmd, h8sx_split_movmd): Declare. * config/h8300/h8300.h (reg_class): Add COUNTER_REGS, SOURCE_REGS and DESTINATION_REGS. (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly. (REGNO_REG_CLASS): Map er4, er5 and er6 to the new classes. (REG_CLASS_FROM_LETTER): Use h8300_reg_class_from_letter. (h8300_move_ratio): Declare. (MOVE_RATIO): Use it. * config/h8300/h8300.c (h8300_move_ratio): New variable. (h8300_init_once): Initialize it. (h8300_reg_class_from_letter): New function. (print_operand): Add an 'm' prefix for printing ".b", ".w" or ".l". (h8sx_emit_movmd, h8sx_split_movmd): New functions. * config/h8300/h8300.md (UNSPEC_MOVMD): New unspec constant. (COUNTER_REG, SOURCE_REG, DESTINATION_REG): New register constants. (movstrsi, movmd): New expanders. (movmd_internal): New insn. 2003-06-06 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define. 2003-06-04 Richard Sandiford <rsandifo@redhat.com> * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxnelf for -msx -mn. * config/h8300/h8300.c (asm_file_start): Use .h8300sxn likewise. 2003-06-03 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c (nibble_operand): Fix warning. * config/h8300/h8300.md (movstricthi): Set adjust_length to no. (movsi_h8sx): Likewise here and the normal h8sx movhi pattern. (movsf_h8300h): Disable for TARGET_H8300SX. 2003-06-03 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.h (PREDICATE_CODES): Add h8300_ldm_parallel, h8300_stm_parallel and h8300_return_parallel. * config/h8300/h8300.c (h8300_push_pop, h8300_stack_offset_p, h8300_ldm_stm_regno, h8300_ldm_stm_parallel, h8300_ldm_parallel, h8300_stm_parallel, h8300_return_parallel): New functions. (h8300_expand_prologue): Don't enforce ldm/stm register alignment if TARGET_H8300SX. Use h8300_push_pop. (h8300_expand_epilogue): Likewise. Try to merge the return insn and final pop when generating h8sx code. Always emit some form of return insn. * config/h8300/h8300.md: Don't enforce register alignment in stm peepholes if TARGET_H8300SX. (ldm_h8300s, stm_h8300s, return_h8sx): New patterns. (ldm_h8300s_[234], stm_h8300_[234]): Disable. (epilogue): Expect h8300_expand_epilogue to emit a return insn. 2003-06-03 Richard Sandiford <rsandifo@redhat.com> * config/h8300/t-h8300 (MULTILIB_OPTIONS): Add a -msx multilib. (MULTILIB_DIRNAMES): Add a directory for it. (MULTILIB_MATCHES): Delete. 2003-05-28 Richard Sandiford <rsandifo@redhat.com> * final.c (walk_alter_subreg): Handle addresses with subregs inside a ZERO_EXTEND or AND. * config/h8300/h8300-protos.h (h8300_get_index): Declare. * config/h8300/h8300.h (INDEX_REG_CLASS): Set to GENERAL_REGS if TARGET_H8300SX. (GO_IF_LEGITIMATE_ADDRESS): Use h8300_get_index. * config/h8300/h8300.c (print_operand_address): Handle @(dd,RnL.b), @(dd,Rn.w) and @(dd,ERn.L). (h8300_displacement_size): Take the whole address as argument. (h8300_classify_operand, h8300_short_move_mem_p): Adjust accordingly. 2003-05-28 Richard Sandiford <rsandifo@redhat.com> * config/mips/mips-protos.h (h8300_operands_match_p): Declare. (h8sx_mergeable_memrefs_p): Declare. * config/h8300/h8300.h (HAVE_POST_DECREMENT): Define to TARGET_H8300SX. (HAVE_PRE_INCREMENT): Likewise. (GO_IF_LEGITIMATE_ADDRESS): Accept pre/post increment/decrement addresses for TARGET_H8300SX, * config/h8300/h8300.c (print_operand_address): Deal with PRE_INC and POST_DEC. (movb_length_table, movl_length_table): New tables. (movw_length_table): Define to movb_length_table. (h8300_displacement_size): New, split out from... (h8300_classify_address): ...here. Handle pre/post inc/dec. (h8300_short_immediate_length): Allow H8OP_MEM_COMPLEX operands. (h8300_insn_length_from_table): Add cases for movb, movw and movl. (h8sx_mergeable_memrefs_p, h8300_operands_match_p): New functions. (output_plussi): Use add.l #xx:3,Rn and sub.l #xx:3,Rn for h8sx. (compute_plussi_length, compute_plussi_cc): Update accordingly. (h8sx_unary_shift_operator): Get the mode from the operator. (binary_shift_operator): Likewise. * config/h8300/h8300.md: If a peephole2 applies gen_lowpart to a memory reference, check whether the reference is offsettable. (length_table): Add movb, movw and movl. (movqi): Add new h8sx pattern. Don't force one operand to be a register when generating h8sx code. (movhi, movsi, movsf): Likewise. (movstrictqi): Use the length_table attribute. (movstricthi): Likewise. Add h8sx alternative for mov.w #xx:3,Rn. (addqi3): Split into a define_expand and define_insn. Don't accept memory operands in the expander. Use h8300_operands_match_p to check for matching operands in the define_insn. (subqi3, negqi2, one_cmplqi2): Likewise. (add[hs]i3): Don't accept memory operands in the expander. Likewise in any patterns that are unused in h8sx code. In the h8sx patterns, use h8300_operands_match_p to check whether operands match. (sub[hs]i3, and[hi]3, ior[hs]i3, xor[hs]i3, neg[hsi]3, one_cmpl[hs]i3): Likewise. (andqi3, iorqi3, xorqi3): Likewise. Don't call fix_bit_operand in the expander. 2003-05-23 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300-protos.h (expand_a_shift): Return a bool. (h8300_insn_length_from_table): Add a second parameter. (output_h8sx_shift): Declare. * config/h8300/h8300.h (OK_FOR_W, OK_FOR_Y): New macros. (EXTRA_CONSTRAINT): Replace with... (EXTRA_CONSTRAINT_STR): ...this. Use OK_FOR_W and OK_FOR_Y. (CONSTRAINT_LEN): Define, returning 2 for 'W' and 'Y'. (PREDICATE_CODES): Add entries for h8sx_unary_shift_operator and h8sx_binary_shift_operator. * config/h8300/h8300.c (two_insn_adds_subs_operand): Return false for TARGET_H8300SX. (bit_operand): Replace use of EXTRA_CONSTRAINT with OK_FOR_U. (bit_memory_operand, fix_bit_operand): Likewise. (h8300_length_table_for_insn): Remove. (h8300_classify_operand): Fix check for 16-bit operands in 32-bit instructions. (h8300_short_immediate_length, h8300_binary_length): New functions. (h8300_insn_length_from_table): Add an opcodes parameter. Rework. (output_plussi): Use sub to add negative constants. (compute_plussi_length): Adjust accordingly. (h8sx_single_shift_type): New enum. (h8sx_single_shift, h8sx_unary_shift_operator, h8sx_binary_shift_operator, output_h8sx_shift): New functions. (expand_a_shift, expand_a_rotate): Emit nothing if the shift is a single h8sx instruction. Return false in this case. * config/h8300/h8300.md (length_table): Add short_immediate. (length): Pass the operand array to h8300_insn_length_from_table. (adjust_length): Assume "no" for insns with a length_table attribute. (*cmphi_h8300hs, cmpsi): Add alternatives for #xx:3. (*addhi3_h8300hs): Don't use for h8sx. (*addhi3_h8sx): New pattern, with alternatives for add.w #xx:3 and sub.w #xx:3. (ashl[qhs]i3, lshr[qhs]i3, ashr[qhs]i3, rotl[qhs]i3): Change operand 1's predicate to nonimmediate_operand. Only skip default expansion if expand_a_shift or expand_a_rotate returns true. Add new patterns for single h8sx shift instructions. 2003-05-22 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (nibble_operand): Split out of... (reg_or_nibble_operand): ... this. * config/h8300/h8300.h (PREDICATE_CODES): Added nibble_operand. * config/h8300/h8300.md: (mulqihi3, mulhisi3, umulqihi3, umulhisi3): Introduce expand, and introduce separate insns for sign- or zero-extended REG and already-extended CONST_INT. 2003-05-20 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.c (h8300_unary_length): Fix miscounting. * config/h8300/h8300.md (subqi3): Generalize for h8sx. (subhi3): Likewise. Don't accept immediates for operand 1. Remove the early clobber from second alternative of the h8300s pattern. (subsi3): Generalize for h8sx. Force operand 2 into a register on plain h8300 targets. (subsi3_h8300): Use h8300_dst_operand for consistency with expander. (subsi3_h8300h): Generalize for h8sx. (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise. 2003-05-19 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (reg_or_nibble_operand): New. * config/h8300/h8300.h (PREDICATE_CODES): Adjust. (TARGET_H8300SXMUL): New. (CONST_OK_FOR_P): New. (CONST_OK_FOR_LETTER_P): Adjust. * config/h8300/h8300.md (mulqihi3, mulhisi3, umulqihi3, umulhisi3): Accept 4-bit immediate on H8SX. (mulhi3, mulsi3, smulsi3_highpart, umulsi3_highpart): New. (udivsi3, divhi3, udivsi3, divsi3): New. 2003-05-19 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300-protos.h (h8300_insn_length_from_table): Declare. * config/h8300/h8300.h (OK_FOR_Q): New macro. (EXTRA_CONSTRAINT): Use it to check the 'Q' constraint. (PREDICATE_CODES): Add h8300_src_operand and h8300_dst_operand. Add ADDRESSOF to the bit_operand entry. * config/h8300/h8300.c (h8300_dst_operand): New predicate. (h8300_src_operand): Likewise. (bit_operand): Check nonimmediate_operand rather than general_operand. Accept any nonimmediate_operand in h8sx code. (h8300_and_costs): Initialize operands[1]. (h8300_rtx_costs) <AND>: Return false if the operands aren't valid. (h8300_operand_class): New enum. (h8300_length_table): New typedef. (addb_length_table, addw_length_table, addl_length_table, logicl_length_table): New tables. (logicb_length_table, logicw_length_table): New macros. (h8300_classify_operand, h8300_length_from_table, h8300_length_table_for_insn, h8300_unary_length, h8300_insn_length_from_table): New functions. (output_plussi): Only use adds and subs for register destinations. Disable redundant clause. (compute_plussi_cc): Likewise. (compute_plussi_length): Likewise. Use h8300_length_from_table to work out the length of an insn. (output_logical_op): Only use narrower immediate instructions if the destination is a register. (compute_logical_op_cc): Likewise. (compute_logical_op_length): Likewise. Use h8300_length_from_table. (h8300_adjust_insn_length): Tighten check for reg<->mem moves. * config/h8300/h8300.md (length_table): New attribute. (length): When an instruction has a length_table attribute, use h8300_insn_length_from_table to calculate its default length. (cmpqi): Use h8300_dst_operand for the first operand and h8300_src_operand for the second. (cmphi, *cmphi_h8300hs, cmpsi, negqi2, neghi2, neghi2_h8300h, negsi2, negsi2_h8300h, addqi3, addhi3, *addhi3_h8300, *addhi3_h8300hs, addsi3, addsi_h8300, addsi_h8300h, andhi3, andsi3, iorhi3, iorsi3, xorhi3, xorsi3): Likewise. (andqi3): Use h8300_src_operand for operand 2. Adjust the condition so that it allows any combination of operands for TARGET_H8300SX. (iorqi3, xorqi3): Likewise. (cmpqi): Use the length_table attribute. (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, andqi3, iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise. (cmpqi): Add 'Q' constraint. (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, addsi_h8300h, andqi3, iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise. 2003-05-14 Richard Sandiford <rsandifo@redhat.com> * config/h8300/h8300.h (MASK_H8300SX): New macro. (TARGET_H8300S): True for both -ms and -msx. (TARGET_H8300SX): New macro. (TARGET_SWITCHES): Add entries for -msx and -mno-sx. * config/h8300/h8300.c (asm_file_start): Write .h8300sx for -msx. * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxelf for -msx. * config/h8300/t-h8300 (MULTILIB_MATCHES): Use -ms multilibs for -msx. [Temporary change.] 2003-02-28 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.h (SIZE_TYPE, PTRDIFF_TYPE): Use short with 16-bit pointers and 32-bit ints. * config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Accept CONST_DOUBLE with mode no wider than SImode. * config/h8300/h8300.md (extendqisi2_h8300): Add constraints for output operand. 2003-02-27 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (general_operand_src): Match CONSTANT_P_RTX or SUBREG thereof. * config/h8300/h8300.h (PREDICATE_CODES): Adjust. 2003-02-22 Alexandre Oliva <aoliva@redhat.com> * config/h8300/h8300.c (dosize): Truncate sign * size to Pmode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84257 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (build_static_field_ref): Add a NOP_EXPR; otherwise webothner2004-07-082-0/+4
| | | | | | | get internal error due to mismatched types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84256 138bc75d-0d04-0410-961f-82ee72b054a4
* * config.gcc (i[34567]86-*-mingw32*): Enable threads by default.bothner2004-07-082-3/+7
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84255 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (attempt_auto_inc): Remove now-redundant PUT_CODE.bothner2004-07-082-1/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84254 138bc75d-0d04-0410-961f-82ee72b054a4
* * engine/util.c (vfail): Remove unnecessary sync, fsync, and fflush.bothner2004-07-082-5/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84253 138bc75d-0d04-0410-961f-82ee72b054a4