aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
AgeCommit message (Collapse)AuthorFilesLines
2005-06-07tree-ssa-address.c: New file.Zdenek Dvorak1-5/+13
* tree-ssa-address.c: New file. * Makefile.in (tree-ssa-address.o): Add. * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on INDIRECT_REFs. Handle TARGET_MEM_REFs. * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs. * tree-flow.h (struct mem_address): New. (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c. (create_mem_ref, addr_for_mem_ref, get_address_description, maybe_fold_tmr, multiplier_allowed_in_address_p, multiply_by_cost): Declare. * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs. * tree-pretty-print.c (dump_generic_node): Ditto. * tree-ssa-loop-im.c (for_each_index): Ditto. * tree-ssa-loop-ivopts.c (may_be_unaligned_p, find_interesting_uses_address): Ditto. (rewrite_address_base, build_addr_strip_iref): Removed. (struct affine_tree_combination): Moved to tree-flow.h. (get_ref_tag, copy_ref_info): New functions. (rewrite_use_address): Produce TARGET_MEM_REFs. (tree_ssa_iv_optimize): Do not call update_ssa and rewrite_into_loop_closed_ssa. (tree_to_aff_combination): Use build_fold_addr_expr instead of build_addr_strip_iref. (unshare_aff_combination): New function. (fold_affine_sum): Removed. (get_computation_at): Use get_computation_aff. Unshare the result. (get_computation_aff, multiplier_allowed_in_address_p): New function. (multiply_by_cost): Exported. (get_address_cost): Use multiplier_allowed_in_address_p. * tree-ssa-operands.c (get_tmr_operands): New function. (get_expr_operands): Handle TARGET_MEM_REFs. * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs. (build): Handle 7 arguments. (build7_stat): New function. * tree.def (TARGET_MEM_DEF): New. * tree.h (REF_ORIGINAL): Removed. (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL, TMR_TAG, build7): New macros. (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare. * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr. * doc/c-tree.texi: Document TARGET_MEM_REF. * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar. * gcc.dg/tree-ssa/loop-2.c: Update outcome. * gcc.dg/tree-ssa/loop-3.c: Update outcome. * gcc.dg/tree-ssa/loop-4.c: Update outcome. * gcc.dg/tree-ssa/loop-9.c: New test. From-SVN: r100708
2005-06-06expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.Eric Christopher1-2/+1
2005-06-06 Eric Christopher <echristo@redhat.com> target/21927 * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST. From-SVN: r100670
2005-06-04cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.Daniel Berlin1-1/+1
2005-06-01 Daniel Berlin <dberlin@dberlin.org> * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P. * dwarf2out.c (loc_descriptor_from_tree_1): Ditto. * expr.c (expand_var): Ditto. * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too. * gimplify.c (gimplify_decl_expr): Ditto. (gimplify_expr): Ditto. * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P. * tree.c (value_expr_for_decl): New. (print_value_expr_statistics): New. (init_ttree): Init value_expr_for_decl. (decl_value_expr_lookup): New. (decl_value_expr_insert): Ditto. (copy_node_stat): Copy DECL_VALUE_EXPR status. * tree.h (DECL_VALUE_EXPR): Use hashtable. (SET_DECL_VALUE_EXPR): New. (DECL_HAS_VALUE_EXPR_P): New. From-SVN: r100592
2005-05-31expr.c (convert_move): When a partial_int requires multiple conversion steps...DJ Delorie1-4/+12
* expr.c (convert_move): When a partial_int requires multiple conversion steps, make sure successive steps convert the intermediate value, not the original value. * expmed.c (expand_mult): Convert partial_int multiplies to shift/add combinations too. * genmodes.c (mode_data): Add wider_2x. (calc_wider_mode): Calculate twice-wider mode too. (emit_mode_wider): Emit twice-wider mode too. * machmode.h (mode_2xwider, GET_MODE_2XWIDER_MODE): New. * expr.c (expand_expr_real_1): Use it for expanding multiplies. From-SVN: r100414
2005-05-17Makefile.in: Add tree-ssa-math-opts.c.Paolo Bonzini1-12/+0
gcc: 2005-05-17 Paolo Bonzini <bonzini@gnu.org> * Makefile.in: Add tree-ssa-math-opts.c. * expr.c (expand_expr_real_1) <case RDIV_EXPR>: Never emit as a*(1/b). * fold-const.c (distribute_real_division): New. (fold_binary) <case PLUS_EXPR, case MINUS_EXPR>: Use it. * tree-pass.h (pass_cse_reciprocals): New. * tree-optimize.c (init_tree_optimization_passes): Run it. * tree-ssa-math-opts.c: New file. * doc/passes.texi: Document the new pass. gcc/testsuite: 2005-05-17 Paolo Bonzini <bonzini@gnu.org> * gcc.dg/fold-div-1.c, gcc.dg/recip-1.c, gcc.dg/recip-2.c: New. From-SVN: r99826
2005-05-04re PR middle-end/21265 (GCC fails to optimize tail call to memset)Jakub Jelinek1-12/+19
PR middle-end/21265 * expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL. (clear_storage): Add argument. * expr.c (emit_block_move_via_libcall, clear_storage_via_libcall): Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to tailcall. (emit_block_move): Handle BLOCK_OP_TAILCALL method. (clear_storage): Add method argument, handle BLOCK_OP_TAILCALL. (store_expr, store_constructor): Adjust callers. * builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL to emit_block_move if CALL_EXPR_TAILCALL (exp). (expand_builtin_memmove): Add ORIG_EXP argument, copy CALL_EXPR_TAILCALL from ORIG_EXP to the new CALL_EXPR. (expand_builtin_bcopy): Replace ARGLIST and TYPE arguments with EXP. Pass EXP to expand_builtin_memmove. (expand_builtin_memset): Add ORIG_EXP argument, pass BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp). (expand_builtin_bzero): Replace ARGLIST argument with EXP. Pass EXP to expand_builtin_memset. (expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR. (expand_builtin_strncmp): Likewise. (expand_builtin_printf): Replace ARGLIST argument with EXP. Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR. (expand_builtin_fprintf): Likewise. (expand_builtin): Adjust calls to expand_builtin_{memmove,bcopy,memset,bzero,{,f}printf}. * gcc.dg/20050503-1.c: New test. From-SVN: r99187
2005-04-28bt-load.c, [...]: Use JUMP_P, LABEL_P, REG_P, MEM_P, NONJUMP_INSN_P, and ↵Kazu Hirata1-3/+3
INSN_P where appropriate. * bt-load.c, cfgexpand.c, dwarf2out.c, emit-rtl.c, expr.c, function.c, global.c, lcm.c, loop-invariant.c, optabs.c, reorg.c, resource.c, tree-ssa-loop-ivopts.c, value-prof.c: Use JUMP_P, LABEL_P, REG_P, MEM_P, NONJUMP_INSN_P, and INSN_P where appropriate. From-SVN: r98913
2005-04-27dojump.c: Fix comment typos.Kazu Hirata1-14/+14
* dojump.c: Fix comment typos. emit-rtl.c, expmed.c, expr.c, stmt.c, stor-layout.c: Use fold_buildN instead of fold (buildN (...)). From-SVN: r98848
2005-04-22builtins.c (gimplify_va_arg_expr): Reword comments to avoid 'abort'.Nathan Sidwell1-8/+7
* builtins.c (gimplify_va_arg_expr): Reword comments to avoid 'abort'. Use gcc_assert and gcc_unreachable as appropriate. * c-format.c (get_constant, decode_format_attr, get_flag_spec, find_char_info_specifier_index, find_length_info_modifier_index): Likewise. * c-typeck.c (composite_type, pop_init_level): Likewise. * combine.c (cant_combine_insn_p, try_combine): Likewise. * cse.c (cse_insn): Likewise * dominance.c (calc_dfs_tree): Likewise dwarf2out.c (loc_descriptor_from_tree_1, add_abstract_origin_attribute, force_decl_die, force_type_die): Likewise emit-rtl.c (operand_subword_force): Likewise explow.c (hard_function_value): Likewise expmed.c (store_bit_field, expand_divmod, emit_store_flag_force): Likewise expr.c (emit_move_multi_word, store_expr, expand_expr_real_1): Likewise final.c (this_is_asm_operands, shorten_branches, final_scan_insn, output_operand): Likewise flow.c (recompute_reg_usage): Likewise * function.c (assign_stack_temp_for_type, assign_temp, handle_epilogue_set): Likewise * genextract.c (main): Likewise * gimplify.c (mostly_copy_tree_r, gimplify_return_expr, gimplify_modify_expr_rhs, gimplify_expr): Likewise * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element, ready_remove, rm_line_notes, rm_other_notes, schedule_block): Likewise mips-tfile.c (copy_object, out_of_bounds): Likewise From-SVN: r98567
2005-04-21Fix for latent bug in splitting arguments exposed by ↵Alan Modra1-2/+3
rs6000_arg_partial_bytes rewrite. Fix for latent bug in splitting arguments exposed by rs6000_arg_partial_bytes rewrite. Oked by Richard Henderson. Co-Authored-By: Fariborz Jahanian <fjahanian@apple.com> From-SVN: r98507
2005-04-14re PR middle-end/14311 (builtins for atomic operations needed)Richard Henderson1-0/+24
PR middle-end/14311 * builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2, BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2, BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1, BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8, BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4, BT_FN_I8_VPTR_I8_I8): New. * builtins.def (DEF_SYNC_BUILTIN): New. (BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1, BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4, BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N, BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2, BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8, BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1, BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4, BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N, BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2, BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8, BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1, BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4, BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N, BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2, BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8, BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1, BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4, BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N, BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2, BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8, BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1, BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4, BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N, BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2, BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8, BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1, BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4, BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N, BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2, BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8, BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1, BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4, BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N, BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2, BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8, BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1, BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4, BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N, BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2, BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8, BUILT_IN_SYNCHRONIZE: New. * builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN as a function. Accept __sync_ as a prefix as well. (expand_builtin_sync_operation, expand_builtin_compare_and_swap, expand_builtin_lock_test_and_set, expand_builtin_synchronize, expand_builtin_lock_release): New. (expand_builtin): Call them. * c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if neither BOTH_P nor FALLBACK_P are defined. (builtin_type_for_size): New. (sync_resolve_size, sync_resolve_params, sync_resolve_return): New. (resolve_overloaded_builtin): New. * c-common.h (resolve_overloaded_builtin): Declare. (builtin_type_for_size): Declare. * c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin. * expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab, sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab, sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab, sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab, sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab, sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap, sync_compare_and_swap_cc, sync_lock_test_and_set, sync_lock_release): New. * optabs.h: Declare them. * expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap, expand_sync_operation, expand_sync_fetch_operation, expand_sync_lock_test_and_set): Declare. * genopinit.c (optabs): Add sync optabs. * optabs.c (init_optabs): Initialize sync optabs. (expand_val_compare_and_swap_1, expand_val_compare_and_swap, expand_bool_compare_and_swap, expand_compare_and_swap_loop, expand_sync_operation, expand_sync_fetch_operation, expand_sync_lock_test_and_set): New. * doc/extend.texi (Atomic Builtins): New section * doc/md.texi (Standard Names): Add sync patterns. From-SVN: r98154
2005-03-30tree.def (FILE_TYPE): Removed.Tom Tromey1-1/+0
gcc: * tree.def (FILE_TYPE): Removed. * typeclass.h (enum type_class): Removed file_type_class. * dwarf2out.c (is_base_type): Updated. (gen_type_die): Likewise. * dbxout.c (dbxout_type): Updated. * builtins.c (type_to_class): Updated. * tree.c (type_contains_placeholder_1): Updated. * config/sparc/sparc.c (sparc_type_code): Updated. * config/ia64/ia64.c (hfa_element_mode): Updated. * expr.c (count_type_elements): Updated. * stor-layout.c (layout_type): Updated. * tree-inline.c (remap_type): Updated. * tree-pretty-print.c (dump_generic_node): Updated. gcc/java: * decl.c (gnat_substitute_in_type): Don't handle FILE_TYPE. From-SVN: r97282
2005-03-11re PR rtl-optimization/20306 (FP complex modes moved via GPRs)David Edelsohn1-11/+17
PR rtl-optimization/20306 * expr.c (emit_move_complex): Set try_int false if mode is MODE_COMPLEX_FLOAT and mov_optab exists for inner mode. Only try emit_block_move if try_int is true. From-SVN: r96312
2005-03-10expr.c (expand_expr_real_1): If possible, use a conditional move for ↵Steven Bosscher1-7/+48
expanding MIN_EXPR and MAX_EXPR. * expr.c (expand_expr_real_1): If possible, use a conditional move for expanding MIN_EXPR and MAX_EXPR. Use temp for moving around rtx-en. From-SVN: r96269
2005-03-09* expr.c (expand_assignment): Remove orig_to_rtx.Kazu Hirata1-2/+1
From-SVN: r96164
2005-03-02PR middle-end/18029 and PR middle-end/18030Kazu Hirata1-0/+35
PR middle-end/18029 and PR middle-end/18030 * expr.c (optimize_bitfield_assignment_op): Add a special case to handle BIT_IOR_EXPR and BIT_XOR_EXPR. From-SVN: r95782
2005-01-29re PR middle-end/19689 (ICE in store_bit_field, at expmed.c)Richard Henderson1-6/+12
PR middle-end/19689 * expr.c (store_field): Don't strip sub-mode cast when the input data is even smaller. From-SVN: r94429
2005-01-29re PR middle-end/19687 (ICE with union initializer)Richard Henderson1-19/+23
PR middle-end/19687 * expr.c (categorize_ctor_elements_1): Check for CONSTRUCTOR of a union being empty. From-SVN: r94421
2005-01-26For real this time...Richard Henderson1-1/+15
PR middle-end/18008 * c-decl.c (finish_struct): Set DECL_MODE after resetting a field's type. * expr.c (store_field): Strip conversions to odd-bit-sized types if the destination field width matches. From-SVN: r94294
2005-01-26Revert last change.Richard Henderson1-15/+1
From-SVN: r94291
2005-01-26re PR middle-end/18008 (Duplicate mask on bitfield insertion)Richard Henderson1-1/+15
PR middle-end/18008 * c-decl.c (finish_struct): Set DECL_MODE after resetting a field's type. * expmed.c (store_fixed_bit_field): Create a paradoxical subreg if we don't need the bits above those present in the current mode. * expr.c (store_field): Strip conversions to odd-bit-sized types if the destination field width matches. From-SVN: r94290
2005-01-26re PR middle-end/19515 (Violation of C99 6.7.8 §21 for unions)Richard Henderson1-8/+48
PR middle-end/19515 * expr.c (categorize_ctor_elements): New argument p_must_clear. (categorize_ctor_elements_1): Likewise. Detect a union that isn't fully initialized. (mostly_zeros_p): Update for new categorize_ctor_elements argument. * gimplify.c (gimplify_init_constructor): Likewise. Only shove objects into static storage if they have more than one non-zero value. * tree.h (categorize_ctor_elements): Update decl. From-SVN: r94266
2005-01-23alias.c, [...]: Fix comment typos.Kazu Hirata1-2/+2
* alias.c, c-common.h, c-incpath.c, c-incpath.h, expr.c, fold-const.c, gimplify.c, params.h, tree-data-ref.c, tree-if-conv.c, tree-nested.c, tree-outof-ssa.c, tree-ssa-dom.c, tree-vectorizer.c, tree.def, config/darwin.c, config/freebsd-spec.h, config/arm/arm.h, config/h8300/h8300.md, config/i386/i386.md, config/i386/predicates.md, config/i386/sse.md, config/ia64/ia64.c, config/ip2k/ip2k.c, config/s390/s390.c, config/vax/vax.md: Fix comment typos. Follow spelling conventions. From-SVN: r94112
2005-01-19re PR middle-end/19304 (wrong code for spec test from emit_move_change_mode)Richard Henderson1-24/+22
PR middle-end/19304 * expr.c (emit_move_change_mode): New argument force; use simplify_gen_subreg if true. (emit_move_via_alt_mode): Merge into ... (emit_move_via_integer): ... here. (emit_move_ccmode): Use emit_move_change_mode directly. From-SVN: r93944
2005-01-18basic-block.h, [...]: Update copyright.Kazu Hirata1-1/+1
* basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c, c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c, combine.c, config.gcc, coverage.h, cse.c, cselib.c, defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c, flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c, gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h, output.h, postreload-gcse.c, postreload.c, recog.c, resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c, targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c, tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c, tree-optimize.c, tree-outof-ssa.c, tree-pass.h, tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def, unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright. From-SVN: r93827
2005-01-11expr.c (store_constructor): Use rtvec_alloc instead of alloca+gen_rtvec_v...Richard Henderson1-6/+6
* expr.c (store_constructor): Use rtvec_alloc instead of alloca+gen_rtvec_v, and an incorrect number passed to alloca. From-SVN: r93177
2004-12-29target.h (targetm.calls.arg_partial_bytes): New.Richard Henderson1-20/+12
* target.h (targetm.calls.arg_partial_bytes): New. * target-def.h (TARGET_ARG_PARTIAL_BYTES): New. * calls.c (store_unaligned_arguments_into_pseudos): Update for partial in bytes. (load_register_parameters): Likewise. (store_one_arg): Likewise. (initialize_argument_information): Use targetm.calls.arg_partial_bytes. (emit_library_call_value_1): Likewise. * expr.c (block_move_libcall_safe_for_call_parm): Likewise. (emit_push_insn): Update for partial in bytes. * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * function.c (assign_parm_find_entry_rtl): Use targetm.calls.arg_partial_bytes. Update for result in bytes. (locate_and_pad_parm): Update for partial in bytes. * system.h (FUNCTION_ARG_PARTIAL_NREGS): Poison. * targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): New. * targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Declare. * doc/tm.texi (TARGET_ARG_PARTIAL_BYTES): Rename and update from FUNCTION_ARG_PARTIAL_NREGS. * config/arc/arc.h, config/c4x/c4x.h, config/i386/i386.h, config/i860/i860.h, config/m68hc11/m68hc11.h, config/m68k/m68k.h, config/pdp11/pdp11.h, config/s390/s390.h, config/stormy16/stormy16.h, config/xtensa/xtensa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/alpha/alpha.c (alpha_arg_partial_bytes): New. (TARGET_ARG_PARTIAL_BYTES): New. * config/alpha/alpha.h, config/alpha/unicosmk.h, config/alpha/vms.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/arm/arm.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/arm/arm.c (arm_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/cris/cris.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/cris/cris.c (cris_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/fr30/fr30.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/fr30/fr30.c (fr30_arg_partial_bytes): Rename from fr30_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/fr30/fr30-protos.h: Update. * config/frv/frv.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/frv/frv.c (frv_arg_partial_bytes): Rename from frv_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/frv/frv-protos.h: Update. * config/ia64/ia64.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/ia64/ia64.c (ia64_arg_partial_bytes): Rename from ia64_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/ia64/ia64-protos.h: Update. * config/iq2000/iq2000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/iq2000/iq2000-protos.h: Update. * config/m32r/m32r.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/m32r/m32r.c (m32r_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/m32r/m32r-protos.h: Update. * config/mcore/mcore.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mcore/mcore.c (mcore_arg_partial_bytes): Rename from mcore_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mcore/mcore-protos.h: Update. * config/mips/mips.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mips/mips.c (mips_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mips/mips-protos.h: Update. * config/mn10300/mn10300.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mn10300/mn10300-protos.h: Update. * config/ns32k/ns32k.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/ns32k/ns32k.c (ns32k_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/pa/pa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/pa/pa.c (pa_arg_partial_bytes): Rename from function_arg_partial_nregs. Handle 32-bit. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/pa/pa-protos.h: Update. * config/rs6000/rs6000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/rs6000/rs6000-protos.h: Update. * config/sh/sh.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/sh/sh.c (sh_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/sparc/sparc.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/sparc/sparc.c (sparc_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/sparc/sparc-protos.h: Update. * config/v850/v850.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/v850/v850.c (v850_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/v850/v850-protos.h: Update. From-SVN: r92726
2004-12-25expr.c (clear_storage): Validate CONST0_RTX extant.Richard Henderson1-17/+36
* expr.c (clear_storage): Validate CONST0_RTX extant. Special case complex modes. From-SVN: r92615
2004-12-23re PR middle-end/17746 (ICE when building the Ada RTS)Eric Botcazou1-11/+26
PR middle-end/17746 * expr.c (get_inner_reference): Add 'keep_aligning' parameter. Break on aligning VIEW_CONVERT_EXPR nodes on STRICT_ALIGNMENT platforms only if keep_aligning is true. (expand_assignment): Adjust call to get_inner_reference. (expand_expr_addr_expr_1): Likewise. (expand_expr_real_1): Likewise. * dojump.c (do_jump): Likewise. * dwarf2out.c (loc_descriptor_from_tree_1): Likewise. * fold-const.c (optimize_bit_field_compare): Likewise. (decode_field_reference): Likewise. (split_address_to_core_and_offset): Likewise. * tree-ssa-loop-ivopts.c (split_address_cost): Likewise. * expr.h (get_inner_reference): Adjust prototype. ada/ * trans.c (Attribute_to_gnu): Adjust call to get_inner_reference. * utils2.c (build_unary_op): Likewise. From-SVN: r92549
2004-12-22optabs.h (OTI_movmisalign, [...]): New.Richard Henderson1-4/+27
* optabs.h (OTI_movmisalign, movmisalign_optab): New. * optabs.c (init_optabs): Create it. * genopinit.c (optabs): Initialize it. * expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it. * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise. * target-def.h (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. * target.h (vectorize.misaligned_mem_ok): Remove. * targhooks.c (default_vect_misaligned_mem_ok): Remove. * doc/md.texi (movmisalign): New. * doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. From-SVN: r92537
2004-12-21expr.c (emit_group_load_1): Return the source if the move is a regular move ↵Eric Botcazou1-0/+5
between complex values. * expr.c (emit_group_load_1): Return the source if the move is a regular move between complex values. From-SVN: r92455
2004-12-20re PR middle-end/18776 (Libgfortran doesn't build again)Eric Botcazou1-7/+39
PR middle-end/18776 * expr.c (write_complex_part): Use a subreg if the original object is a hard reg that spans an even number of regs or a MEM. (read_complex_part): Likewise. From-SVN: r92440
2004-12-20re PR middle-end/18191 (Struct member is not getting default-initialized)Steven Bosscher1-13/+30
gcc/ PR middle-end/18191 PR middle-end/18965 PR middle-end/18999 * expr.c (categorize_ctor_elements_1): Count the total number of elements in the constructor. (categorize_ctor_elements): Return it in a new argument. * tree.h (categorize_ctor_elements): Adjust prototype. * gimplify.c (gimplify_init_ctor_eval_range): New. (gimplify_init_ctor_eval): Gimplify RANGE_EXPR. (gimplify_init_constructor): Block clear the object if the constructor has fewer elements than the object type. Only try to add assignments to individual elements when we have to. testsuite/ * gcc.dg/20041219-1.c: New test. Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu> From-SVN: r92415
2004-12-18re PR middle-end/18548 (Miscompiles code generated by Gambit-C Scheme->C ↵Roger Sayle1-1/+6
compiler) PR middle-end/18548 * expr.c (expand_expr_real_1) <MAX_EXPR>: Ensure that target, op0 and op1 are all registers (or constants) before expanding the RTL comparison sequence [to avoid reg_overlap_mentioned (target, op1)]. * gcc.dg/max-1.c: New test case. From-SVN: r92351
2004-12-12expr.c (emit_move_change_mode): New.Richard Henderson1-29/+38
* expr.c (emit_move_change_mode): New. (emit_move_via_alt_mode): Use it. From-SVN: r92065
2004-12-12re PR tree-optimization/18040 (ICE in for_each_index, at tree-ssa-loop-im.c:178)Andrew Pinski1-19/+0
2004-12-12 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/18040 * g++.dg/opt/ptrmem6.C: New test. 2004-12-12 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/18040 * expr.c (get_inner_reference): Remove NON_LVALUE_EXPR, NOP_EXPR, CONVERT_EXPR cases. (handled_component_p): Likewise. From-SVN: r92051
2004-12-09tree.def (SET_TYPE): Remove.Nathan Sidwell1-183/+1
* tree.def (SET_TYPE): Remove. (CONSTRUCTOR): Update description. * builtins.c (type_to_class) Remove SET_TYPE case. * dbxout.c (dbxout_type): Likewise. * dwarf2out.c (is_base_type): Likewise. (gen_set_type_die): Remove. (gen_type_die): Remove SET_TYPE case. * expr.c (count_type_elements): Likewise. (mostly_zeroes_p): Likewise. (store_constructor): Likewise. * print_tree.c (print_node): Likewise. * stor-layout.c (layout_type): Likewise. * tree-browser.c (browse_tree): Likewise. * tree-inline.c (remap_type): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. * tree.c (type_contains_plaeholder_1, type_hash_eq, variably_modified_type_p, initializer_zerop): Likewise. * tree.h (SET_OR_ARRAY_CHECK): Remove. (AGGREGATE_TYPE_P): Remove SET_TYPE check. (TYPE_DOMAIN): Use ARRAY_TYPE_CHECK. * typeclass.h (enum type_class): Remove set_type_class. * varasm.c (const_hash_1): Remove SET_TYPE case. (compare_constant, copy_constant, output_constant): Likewise. * config/i386/i386.c (classify_argument): Likewise. * config/ia64/ia64.c (hfa_element_mode): Likewise. * config/sparc/sparc.c (sparc_type_code): Likewise. * ada/decl.c (gnat_substitute_in_type): Remove SET_TYPE case. From-SVN: r91931
2004-12-07c-common.c, [...]: Replace uses of first_rtl_op with TREE_CODE_LENGTH.Kazu Hirata1-1/+1
gcc/ * c-common.c, expr.c, fold-const.c, print-tree.c, tree-gimple.c, tree-inline.c, tree-pretty-print.c, tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c: Replace uses of first_rtl_op with TREE_CODE_LENGTH. * tree.c (first_rtl_op): Remove. Replace uses of first_rtl_op with TREE_CODE_LENGTH. * tree.h: Remove the prototype for first_rtl_op. gcc/cp/ * pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH. From-SVN: r91818
2004-12-06expr.c (expand_expr_real_1): Remove an "if" whose condition is always false.Kazu Hirata1-6/+0
* expr.c (expand_expr_real_1): Remove an "if" whose condition is always false. From-SVN: r91786
2004-12-06expr.c (expand_expr_real_1): Abort on COND_EXPR of VOID_TYPE.Kazu Hirata1-15/+4
* expr.c (expand_expr_real_1): Abort on COND_EXPR of VOID_TYPE. From-SVN: r91758
2004-12-03alias.c (component_uses_parent_alias_set): Rename from can_address_p.Richard Henderson1-2/+1
* alias.c (component_uses_parent_alias_set): Rename from can_address_p. Return bool. Reverse the sense of the result. Reinstate the check for alias set zero. (get_alias_set): Update to match. * alias.h (component_uses_parent_alias_set): Likewise. * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise. * expr.c (expand_assignment): Likewise. * expr.h: Remove commented out prototypes that were moved to alias.h. From-SVN: r91712
2004-12-02expr.c (write_complex_part): Use simplify_gen_subreg when the submode is at ↵Richard Henderson1-6/+34
least as large as a word. * expr.c (write_complex_part): Use simplify_gen_subreg when the submode is at least as large as a word. (read_complex_part): Likewise. From-SVN: r91664
2004-12-01expr.c (expand_assignment): Handle CONCAT both as a final destination and as ↵Richard Henderson1-2/+10
a middle point. * expr.c (expand_assignment): Handle CONCAT both as a final destination and as a middle point. From-SVN: r91614
2004-12-01expr.c (get_inner_reference): Fix thinko in REAL/IMAGPART_EXPR offsetting.Richard Henderson1-2/+2
* expr.c (get_inner_reference): Fix thinko in REAL/IMAGPART_EXPR offsetting. From-SVN: r91577
2004-12-01re PR rtl-optimization/15289 (reload error with non-lowpart subregs)Richard Henderson1-358/+401
PR rtl-opt/15289 * emit-rtl.c (gen_complex_constant_part): Remove. (gen_realpart, gen_imagpart): Remove. * rtl.h (gen_realpart, gen_imagpart): Remove. * expmed.c (extract_bit_field): Remove CONCAT hack catering to gen_realpart/gen_imagpart. * expr.c (write_complex_part, read_complex_part): New. (emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push, emit_move_complex_push, emit_move_complex, emit_move_ccmode, emit_move_multi_word): Split out from ... (emit_move_insn_1): ... here. (expand_expr_real_1) <COMPLEX_EXPR>: Use write_complex_part. <REALPART_EXPR, IMAGPART_EXPR>: Use read_complex_part. * function.c (assign_parm_setup_reg): Hard-code transformations instead of using gen_realpart/gen_imagpart. From-SVN: r91571
2004-12-01expr.c (optimize_bitfield_assignment_op): Split out from ...Richard Henderson1-137/+143
* expr.c (optimize_bitfield_assignment_op): Split out from ... (expand_assignment): ... here. Use handled_component_p to gate get_inner_reference code. Simplify MEM handling. Special case CONCAT destinations. From-SVN: r91570
2004-11-29expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR.Richard Henderson1-53/+81
* expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR. (handled_component_p): Likewise. * alias.c (can_address_p): Reformat and simplify. Handle REAL/IMAGPART_EXPR. Do not disable addressability based on alias set zero. * fold-const.c (build_fold_addr_expr_with_type): Remove duplicate check for REAL/IMAGPART_EXPR. * gimplify.c (gimplify_compound_lval): Likewise. * tree-cfg.c (verify_expr): Likewise. * tree-gimple.c (is_gimple_addressable, get_base_address): Likewise. * tree-nested.c (build_addr, convert_nonlocal_reference): Likewise. (convert_local_reference): Likewise. * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Likewise. From-SVN: r91511
2004-11-30* expr.c (emit_group_load_1): Don't die on const_int orig_src.Alan Modra1-2/+4
From-SVN: r91510
2004-11-29expr.c (expand_expr_real_1, [...]): Properly handle REDUCE_BIT_FIELD by ↵Richard Kenner1-17/+20
applying it to result, not input, of conversion. * expr.c (expand_expr_real_1, case NOP_EXPR): Properly handle REDUCE_BIT_FIELD by applying it to result, not input, of conversion. From-SVN: r91498
2004-11-28expr.c (expand_expr_real_1, [...]): Properly fold with non-zero lower bound.Richard Kenner1-24/+6
* expr.c (expand_expr_real_1, case ARRAY_REF): Properly fold with non-zero lower bound. From-SVN: r91446