aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
AgeCommit message (Collapse)AuthorFilesLines
2006-06-19re PR target/27861 (ICE in expand_expr_real_1, at expr.c:6916)Roger Sayle1-3/+7
PR target/27861 * expmed.c (expand_shift): On SHIFT_COUNT_TRUNCATED targets, we may have stripped a SUBREG from the shift count, so we may need to convert_to_mode back to the type's mode before calling make_tree. Use new_amount instead of amount to avoid expanding a tree twice. * gcc.dg/pr27861-1.c: New test case. From-SVN: r114773
2006-06-08re PR middle-end/27733 (Large compile time regression)Paolo Bonzini1-1/+5
2006-06-08 Paolo Bonzini <bonzini@gnu.org> PR middle-end/27733 * expmed.c (struct alg_hash_entry): Fix type of field T to match synth_mult argument. (NUM_ALG_HASH_ENTRIES): Make it bigger for 64-bit HOST_WIDE_INT. From-SVN: r114488
2006-05-14re PR rtl-optimization/22563 (performance regression for gcc newer than 2.95)Roger Sayle1-14/+13
PR rtl-optimization/22563 * expmed.c (store_fixed_bit_field): When using AND and IOR to store a fixed width bitfield, always force the intermediates into psuedos. From-SVN: r113762
2006-04-27expmed.c (store_fixed_bit_field): If we're not optimizing for size...Roger Sayle1-1/+6
* expmed.c (store_fixed_bit_field): If we're not optimizing for size, force the intermediate into a new pseudo rather instead of performing both a bitwise AND and a bitwise IOR in memory. From-SVN: r113318
2006-04-26expmed.c (store_bit_field): Also check whether the bitsize is valid for the ↵Roger Sayle1-1/+3
machine's "insv" instruction... * expmed.c (store_bit_field): Also check whether the bitsize is valid for the machine's "insv" instruction before moving the target into a pseudo for use with the insv. * config/i386/predicates.md (const8_operand): New predicate. * config/i386/i386.md (extv, extzv, insv): Use the new const8_operand predicate where appropriate. From-SVN: r113265
2006-04-25expmed.c (store_bit_field): Handle paradoxical subregs on big endian machines.Andreas Krebbel1-1/+19
2006-04-25 Andreas Krebbel <krebbel1@de.ibm.com> * expmed.c (store_bit_field): Handle paradoxical subregs on big endian machines. 2006-04-25 Andreas Krebbel <krebbel1@de.ibm.com> * gcc.dg/20060425-1.c: New testcase. From-SVN: r113248
2006-03-04expmed.c (expand_mult_add): Remove.Kazu Hirata1-25/+0
* expmed.c (expand_mult_add): Remove. * expr.h: Remove the prototype for expand_mult_add. From-SVN: r111712
2006-02-13re PR middle-end/25724 (Emits call to __cmpdi2 for long long comparison in ↵Roger Sayle1-58/+7
switches) PR middle-end/25724 * dojump.c (do_jump): Call do_compare_rtx_and_jump. (do_jump_parts_zero_rtx): New function renamed from do_jump_parts_equality_rtx. Made static. Add a mode argument. (do_jump_parts_equality_rtx): New function split out from do_jump_parts_equality. Old implementation renamed as above. Call do_jump_parts_zero_rtx if either operand is zero. (do_jump_parts_equality): Call do_jump_parts_equality_rtx to do all of the heavy lifting. (do_compare_rtx_and_jump): Handle multi-word comparisons by calling either do_jump_by_parts_greater_rtx or do_jump_by_parts_equality_rtx. * expr.h (do_jump_by_parts_equality_rtx): Remove prototype. * expmed.c (do_cmp_and_jump): Now multi-word optimization has moved to do_compare_rtx_and_jump, call it directly. * stmt.c (do_jump_if_equal): Remove static prototype. Add a mode argument. Call do_compare_rtx_and_jump. (emit_case_nodes): Update calls to do_jump_if_equal. From-SVN: r110906
2006-01-31expr.h (expand_normal): new inline function.Marcin Dalecki1-1/+1
2006-01-30 Marcin Dalecki <martin@dalecki.de> * expr.h (expand_normal): new inline function. * builtins.c: use it, use EXPAND_NORMAL explicitely. * dojump.c: use it. * dwarf2out.c: use it. * expr.c: use it. * calls.c: use it. * expmed.c: use it. * except.c: use it. * config/sparc/sparc.c: use it. * config/i386/i386.c: use it. * config/rs6000/rs6000.c: use it. * config/arm/arm.c: use it. * config/mips/mips.c: use it. * stmt.c: use it, use EXPAND_NORMAL explicitely. From-SVN: r110428
2006-01-28expmed.c (const_mult_add_overflow_p): Remove.Kazu Hirata1-38/+0
* expmed.c (const_mult_add_overflow_p): Remove. * expr.h: Remove the prototype for const_mult_add_overflow_p. From-SVN: r110334
2006-01-24expmed.c (store_bit_field): Don't arbitrarily deny using insv for storing ↵DJ Delorie1-1/+0
constants in single-bit bitfields. * expmed.c (store_bit_field): Don't arbitrarily deny using insv for storing constants in single-bit bitfields. From-SVN: r110185
2005-12-19optabs.c (init_floating_libfuncs): Handle decimal float modes.Jon Grimm1-0/+5
* optabs.c (init_floating_libfuncs): Handle decimal float modes. (init_optabs): Handle libfuncs for decimal float. * genopinit.c (gen_insn): Handle MODE_DECIMAL_FLOAT. * stor-layout.c (int_mode_for_mode): Likewise. * simplify-rtx.c (simplify_immed_subreg): Likewise. (simplify_unary_operation_1): Skip optimisations for decimal float modes. * varasm.c (output_constant_pool_2): Handle MODE_DECIMAL_FLOAT. * emit-rtl.c (gen_const_vector): Add assertion check. (init_emit_once): Populate const_tiny_rtx with constants in each decimal float mode. * expmed.c (extract_high_half, expand_mult_highpart_optab, expand_mult_highpart): Assert that mode is not a scalar float mode. * expr.c (convert_move): Handle conversion between decimal and binary floats of the same size. * convert.c (convert_to_real): Consider decimal float types when folding. * dwarf2out.c (base_type_die): Use DW_ATE_decimal_float to describe decimal floating point types. Co-Authored-By: Ben Elliston <bje@au.ibm.com> Co-Authored-By: Janis Johnson <janis187@us.ibm.com> From-SVN: r108762
2005-11-29expmed.c (div_cost): Replace with...Roger Sayle1-25/+34
* expmed.c (div_cost): Replace with... (sdiv_cost, udiv_cost): New. (init_expmed): Initialize sdiv_cost and udiv_cost, not div_cost. Rename the div and mod fields, used to initialize sdiv_pow2_cheap and smod_pow2_cheap, to sdiv_32 and smod_32 to avoid confusion. (expand_divmod): Replace use of div_cost with either sdiv_cost or udiv_cost depending upon the signedness of the operation. From-SVN: r107641
2005-11-26re PR middle-end/21309 (internal compiler error: in expand_mult_const, at ↵Roger Sayle1-0/+11
expmed.c:2884) PR middle-end/21309 * expmed.c (choose_mult_variant): Return immediately when mult_cost is less than zero. Limit mult_cost to a reasonable upper bound for the synthetic multiplication sequence. From-SVN: r107537
2005-11-22re PR middle-end/24950 (ICE in operand_subword_force)Alan Modra1-0/+1
PR middle-end/24950 * expmed.c (store_bit_field): Don't attempt to insv a field larger than the reg. From-SVN: r107354
2005-11-22optabs.c (expand_abs_nojump): Use SCALAR_FLOAT_MODE_P instead of explicitly ↵Ben Elliston1-1/+1
testing GET_MODE_CLASS (x) ==... * optabs.c (expand_abs_nojump): Use SCALAR_FLOAT_MODE_P instead of explicitly testing GET_MODE_CLASS (x) == MODE_FLOAT. * genopinit.c (gen_insn): Likewise. * reload.c (find_equiv_reg): Likewise. * loop.c (load_mems): Likewise. * rtlanal.c (may_trap_p_1, canonicalize_condition): Likewise. * cse.c (find_comparison_args, fold_rtx): Likewise. * dwarf2out.c (add_const_value_attribute): Likewise. * expr.c (convert_move): Likewise. * recog.c (general_operand, register_operand): Likewise. * reg-stack.c (replace_reg): Likewise. * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. * c-common.c (handle_vector_size_attribute): Likewise. * simplify-rtx.c (simplify_const_unary_operation): Likewise. (simplify_binary_operation_1): Likewise. (simplify_const_binary_operation): Likewise. (simplify_relational_operation): Likewise. (simplify_const_relational_operation): Likewise. (simplify_immed_subreg): Likewise. * emit-rtl.c (gen_lowpart_common): Likewise. * expmed.c (expand_mult): Likewise. * stor-layout.c (layout_type): Likewise. From-SVN: r107322
2005-11-15expmed.c (store_bit_field): Add offset unconditionally for memory targets.Dale Johannesen1-8/+15
2005-11-14 Dale Johannesen <dalej@apple.com> * expmed.c (store_bit_field): Add offset unconditionally for memory targets. (extract_bit_field): Don't force extzv or extv operand into a register if field is too big. From-SVN: r106919
2005-11-07expmed.c (extract_bit_field): Do not use insv/extv/extzv patterns if the ↵Eric Botcazou1-4/+6
bitsize is zero. * expmed.c (extract_bit_field): Do not use insv/extv/extzv patterns if the bitsize is zero. * doc/md.texi (Standard Pattern Names): Document it. * config/ia64/ia64.c (ia64_pass_by_reference): Delete. (TARGET_PASS_BY_REFERENCE): Likewise. From-SVN: r106605
2005-09-29re PR middle-end/17886 (variable rotate and unsigned long long rotate should ↵Mark Mitchell1-13/+0
be better optimized) PR 17886 * expmed.c (expand_shift): Move logic to reverse rotation direction when rotating by constants ... * optabs.c (expand_binop): ... here. * config/i386/i386.md (rotrdi3): Handle 32-bit mode. (ix86_rotrdi3): New pattern. (rotldi3): Handle 32-bit mode. (ix86_rotldi3): New pattern. From-SVN: r104761
2005-09-22expmed.c (expand_shift): Don't use the target of the rotate as target for ↵Andreas Krebbel1-2/+2
the first expanded shift insn. 2005-09-22 Andreas Krebbel <krebbel1@de.ibm.com> * expmed.c (expand_shift): Don't use the target of the rotate as target for the first expanded shift insn. * testsuite/gcc.dg/20050922-1.c: Testcase added. From-SVN: r104528
2005-09-21expmed.c (alg_code): Add alg_impossible.Kazu Hirata1-21/+75
* expmed.c (alg_code): Add alg_impossible. (alg_hash_entry): Add cost. (synth_mult): Record alg_impossible in the hash table if multiplication by a given integer is impossble within the limit. Speed up using alg_impossible. From-SVN: r104492
2005-09-17Add comment to expand_mult max_cost change.David Edelsohn1-4/+8
From-SVN: r104379
2005-09-17re PR middle-end/22067 (Inconsistent multiply by immediate)David Edelsohn1-2/+3
PR middle-end/22067 * expmed.c (expand_mult): Substitute simple register for op0 when computing max_cost. From-SVN: r104373
2005-07-08Makefile.in (TREE_H): Add treestruct.def.Daniel Berlin1-1/+1
2005-07-08 Daniel Berlin <dberlin@dberlin.org> * Makefile.in (TREE_H): Add treestruct.def. (c-decl.o): Add pointer-set.h * c-decl.c (diagnose_mismatched_decls): Don't attempt to look at visibility on regular DECL's. (merge_decls): Fix the copying of decl nodes of various types for the new structures. Don't update RTL, section name, weak status, etc, on DECL's without RTL. (grokdeclarator): DECL_ARG_TYPE_AS_WRITTEN is gone. Don't check volatile on non-variable types. (store_parm_decls_oldstyle): Use pointer_set instead of DECL_WEAK to check whether we have seen arguments. * c-objc-common.c (c_tree_printer): Reverse order of tests so that flag is checked before field (flag is common, field is not). * dwarf2out.c (decl_ultimate_origin): Only DECL's with TS_DECL_COMMON could have an origin. (add_location_or_const_value_attribute): Don't check section name on non-var/function decls. (dwarf2out_var_location): Reverse order of tests. * emit-rtl.c (set_reg_attrs_for_parm): DECL_CHECK is dead, replace with DECL_WRTL_CHECK. * expmed.c (make_tree): rtl is now in decl_with_rtl. * fold-const.c (fold_binary): Don't check weakness on non-var/function decls. (tree_expr_nonzero_p): Ditto. (fold_checksum_tree): Use tree_decl_extra as sizeof buffer. * ggc-page.c (extra_order_size_table): Add sizes for tree_decl_non_common, tree_parm_decl, tree_var_decl, and tree_field_decl. * gimplify.c (gimplify_bind_expr): Only set DECL_SEEN_IN_BIND_EXPR_P on VAR_DECL. * integrate.c (copy_decl_for_inlining): Don't set RTL on decl's without RTL. * langhooks-def.h (LANG_HOOK_INIT_TS): New. * langhooks.h (init_ts). New langhook. * passes.c (rest_of_decl_compilation): Reverse order of tests. * print-tree.c (print_node): Update to only print fields that exist in the structures the passed decl has. * toplev.c (wrapup_global_declarations): Don't reset DECL_DEFER_OUTPUT on DECL's that don't contain it. * tree-browser.c (browse_tree): DECL_ARG_TYPE_AS_WRITTEN removed. * tree-inline.c (remap_decl): Ditto. * tree-outof-ssa.c (create_temp): Reverse order of tests. * tree-pretty-print.c (print_declaration): Don't print DECL_REGISTER on things that don't contain it. * tree-vrp.c (expr_computes_nonzero): Don't check weakness on non-var/function decls. * tree.c (tree_contains_struct): New structure. (init_priority_for_decl): New hashtable. (tree_int_map): New structure. (tree_int_map_eq): New function. (tree_int_map_marked_p): Ditto. (tree_int_map_hash): Ditto. (tree_map): Move to tree.h. (tree_map_eq): Externalize. (tree_map_hash): Ditto. (tree_map_marked_p): Ditto. (init_ttree): Set up tree_contains_struct and call langhook. (decl_assembler_name): Use DECL_NON_COMMON_CHECK.. (tree_code_size): Update for new structures. (tree_node_structure): Update for new structures. (make_node_stat): Don't try to set DECL_IN_SYSTEM_HEADER on decls without the field. (copy_node_stat): Copy init priority. (build_decl_stat): Ditto for visibility. (ts_enum_names): New. (tree_contains_struct_check_failed): New function. (decl_init_priority_lookup): Ditto. (decl_init_priority_insert): Ditto. * treestruct.def: New file. * tree.h (CODE_CONTAINS_STRUCT): New macro. (CONTAINS_STRUCT_CHECK): Ditto. (tree_contains_struct_check_failed): New prototype. (DECL_CHECK): Removed. (DECL_MINIMAL_CHECK): New. (DECL_COMMON_CHECK): Ditto. (DECL_WRTL_CHECK): Ditto. (DECL_NON_COMMON_CHECK): Ditto. (DECL_WITH_VIS_CHECK): Ditto. (VAR_OR_FUNCTION_DECL_P): Ditto (struct tree_decl_minimal): New structure. (struct tree_decl_common): Ditto. (struct tree_decl_with_rtl): Ditto. (struct tree_decl_with_vis): Ditto. (struct tree_decl_non_common): Ditto. (struct tree_field_decl): Ditto. (struct tree_parm_decl): Ditto. (struct tree_var_decl): Ditto. (struct tree_function_decl): Ditto. (struct tree_const_decl): Ditto. (struct tree_result_decl): Ditto. (union tree_node): Add new structures. * var-tracking.c (track_expr_p): Reverse order of tests. * doc/c-tree.texi: Add documentation on DECL node internal structure. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * utils.c (create_param_decl): DECL_ARG_TYPE_AS_WRITTEN is removed. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * Make-lang.in: Add gt-cp-lang.h. (cp-lang.o): Ditto. * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on the field. * config-lang.in: Add cp-lang.c to gtfiles. * cp-lang.c: Include hashtab.h. (cp_init_ts): New function. (LANG_HOOK_INIT_TS): Use macro. (decl_shadowed_for_var_lookup): New function. (decl_shadowed_for_var_insert): Ditto. * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common. (NON_THUNK_FUNCTION_CHECK): Ditto. (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common. (DECL_INIT_PRIORITY): Ditto. (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto. (DECL_SHADOWED_FOR_VAR): Use hashtable. (SET_DECL_SHADOWED_FOR_VAR): Ditto. * decl.c (duplicate_decls): Update for new/updated structures. (poplevel): Use SET_DECL_SHADOWED_FOR_VAR. * decl2.c (start_static_initialization_or_destruction): Deal with priority. * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing SET_DECL_RTL. * tree.c (handle_init_priority_attribute): Handle priority. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is removed. * objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common. (KEYWORD_KEY_NAME): Use decl_minimal. (METHOD_SEL_NAME): Ditto.. (METHOD_SEL_ARGS): Use decl_non_common. (METHOD_ADD_ARGS): Ditto. (METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common. (METHOD_DEFINITION): Ditto. (METHOD_ENCODING): Ditto. * objc-lang.c: (objc_init_ts): New function. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * trans-decl.c (create_function_arglist): DECL_ARG_TYPE_AS_WRITTEN is removed. From-SVN: r101799
2005-07-06Removal of -fforce-mem.Fariborz Jahanian1-15/+3
OKed by Richard Henderson. From-SVN: r101666
2005-06-25Update FSF address.Kelley Cook1-2/+2
From-SVN: r101317
2005-05-31expr.c (convert_move): When a partial_int requires multiple conversion steps...DJ Delorie1-1/+1
* 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-04-27dojump.c: Fix comment typos.Kazu Hirata1-22/+22
* 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-11/+11
* 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-03-13expmed.c (expand_mult): Use synthetic multiplication sequences for more ↵Roger Sayle1-43/+82
classes of DImode... * expmed.c (expand_mult): Use synthetic multiplication sequences for more classes of DImode multiplication by constant. Allow both multiplication by small negative constants (by performing a multiplication by a positive constant and negating the result) and multiplications by large powers of two, by using a left shift. From-SVN: r96377
2005-02-21tree-ssa-loop-ivopts.c (computation_cost): Start register numbering at ↵DJ Delorie1-1/+2
LAST_VIRTUAL_REGISTER+1 to avoid possibly using... * tree-ssa-loop-ivopts.c (computation_cost): Start register numbering at LAST_VIRTUAL_REGISTER+1 to avoid possibly using hard registers in unsupported ways. * expmed.c (init_expmed): Likewise. From-SVN: r95373
2005-02-18stmt.c (emit_case_bit_tests): Call fold_convert instead of convert.James A. Morrison1-20/+15
2005-02-18 James A. Morrison <phython@gcc.gnu.org> * stmt.c (emit_case_bit_tests): Call fold_convert instead of convert. (estimate_case_costs): Don't call convert. * expmed.c (expand_shift): Likewise. (make_tree): Call fold_convert instead of convert. From-SVN: r95224
2005-02-12c-tree.h, [...]: Fix comment typos.Kazu Hirata1-1/+1
* c-tree.h, combine.c, expmed.c, flow.c, libgcc2.c, simplify-rtx.c, tree-ssa-live.h: Fix comment typos. Follow spelling conventions. From-SVN: r94939
2005-02-06expmed.c (store_bit_field): Make the SUBREG code adjust bitnum.Richard Sandiford1-13/+20
* expmed.c (store_bit_field): Make the SUBREG code adjust bitnum. Set bitpos and offset later in the function. Do nothing if the target is a register and if the bitfield lies completely outside that register. (extract_bit_field): Make the same SUBREG, bitpos and offset changes here. Return an uninitialised register if the source value is stored in a register and the bitfield lies completely outside that register. From-SVN: r94677
2005-01-28expmed.c (expand_mult_highpart_optab): When attempting to use a non-widening ↵Roger Sayle1-3/+17
multiplication in a wider mode... * expmed.c (expand_mult_highpart_optab): When attempting to use a non-widening multiplication in a wider mode, the operands need to be converted (zero or sign extended) to that mode. From-SVN: r94383
2005-01-26Revert last change.Richard Henderson1-1/+1
From-SVN: r94291
2005-01-26re PR middle-end/18008 (Duplicate mask on bitfield insertion)Richard Henderson1-1/+1
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-25expmed.c (choose_multiplier): Change interface to return the multiplier ↵Roger Sayle1-19/+17
lowpart as an rtx instead of an... * expmed.c (choose_multiplier): Change interface to return the multiplier lowpart as an rtx instead of an unsigned HOST_WIDE_INT. (expand_divmod): Update calls to choose_multiplier. From-SVN: r94220
2005-01-25re PR middle-end/19330 (FAIL: gcc.c-torture/execute/20010605-2.c execution, ↵John David Anglin1-5/+11
-O1) PR middle-end/19330 * expmed.c (extract_bit_field): Use adjust_address instead of gen_lowpart when op0 is a MEM. From-SVN: r94198
2005-01-24c-opts.c, [...]: Update copyright.Kazu Hirata1-1/+1
* c-opts.c, expmed.c, gengtype.c, tree-complex.c, config/arm/iwmmxt.md, config/avr/avr.c, config/s390/s390.h: Update copyright. From-SVN: r94154
2005-01-24expmed.c (expand_mult_highpart): Make static.Roger Sayle1-15/+21
* expmed.c (expand_mult_highpart): Make static. Change type of constant multiplier argument from unsigned HOST_WIDE_INT to rtx. (expand_divmod): Updates calls to expand_mult_highpart by using gen_int_mode to pass a CONST_INT rtx. * rtl.h (expand_mult_highpart): Remove prototype. From-SVN: r94139
2004-12-10expmed.c (synth_mult): Initialize new_limit.latency before making a ↵Kazu Hirata1-1/+1
recursive call. * expmed.c (synth_mult): Initialize new_limit.latency before making a recursive call. From-SVN: r91992
2004-12-09simplify-rtx.c (simplify_subreg): In the CONCAT case...Richard Sandiford1-8/+10
* simplify-rtx.c (simplify_subreg): In the CONCAT case, check whether the request subreg is entirely contained in the requested component. (simplify_gen_subreg): Return null for CONCATs that are rejected by simplify_subreg. * expmed.c (store_bit_field): Create a temporary when changing the value to an integer mode. From-SVN: r91965
2004-12-08re PR middle-end/18293 (Redundant copy operation introduced by expand)Roger Sayle1-5/+20
PR middle-end/18293 * expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Move definition earlier. (expand_mult): Special case powers of two to avoid synth_mult. * loop.c (product_cheap_p): Handle case where expand_mult does require/generate any instructions (i.e. multiplication by zero). From-SVN: r91851
2004-12-01re PR rtl-optimization/15289 (reload error with non-lowpart subregs)Richard Henderson1-22/+0
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-01expmed.c (store_bit_field): Use simplify_gen_subreg instead of ↵Richard Henderson1-14/+4
gen_rtx_SUBREG directly. * expmed.c (store_bit_field): Use simplify_gen_subreg instead of gen_rtx_SUBREG directly. From-SVN: r91569
2004-11-26expmed.c (extract_bit_field): When extracting from non-integer mode...Richard Kenner1-7/+6
* expmed.c (extract_bit_field): When extracting from non-integer mode, force a SUBREG into a register because we may be taking a further SUBREG of it. From-SVN: r91361
2004-11-23expmed.c (extract_bit_field): Use simplify_gen_subreg instead of hard-coding ↵Richard Henderson1-20/+36
avoiding calls to gen_rtx_SUBREG. * expmed.c (extract_bit_field): Use simplify_gen_subreg instead of hard-coding avoiding calls to gen_rtx_SUBREG. Split complex return modes to CONCAT. From-SVN: r91124
2004-11-17expmed.c (alg_code): Add alg_unknown.Kazu Hirata1-3/+86
* expmed.c (alg_code): Add alg_unknown. (alg_hash_entry): New. (NUM_ALG_HASH_ENTRIES): Likewise. (alg_hash): Likewise. (synth_mult): Cache the result into alg_hash. From-SVN: r90825
2004-11-16* expmed.c, ra-colorize.c: Fix comment typos.Kazu Hirata1-1/+1
From-SVN: r90771