summaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
Commit message (Collapse)AuthorAgeFilesLines
* + * simplify-rtx.c (simplify_rtx): Use swap_commutative_operands_p.law2001-07-021-8/+1
| | | | | | | Forgot to commit Friday. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43692 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): When simplifying a CONCAT, atdj2001-06-291-1/+6
| | | | | | | least get rid of the CONCAT if we can't simplify further. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43659 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_rtx): Canonicalize commutative expressionslaw2001-06-281-1/+19
| | | | | | | by putting complex operands first and constants second. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43621 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Allow volatile memoryhubicka2001-06-121-1/+5
| | | | | | | to be subregged in case we don't have move instruction. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43261 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Fix offset calculationm.hayes2001-06-111-2/+2
| | | | | | | for complex values within a CONCAT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43177 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Fix verification ofhubicka2001-06-081-1/+1
| | | | | | | combined subreg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43008 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Fix combining ofhubicka2001-06-041-25/+47
| | | | | | | paradoxical subregs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42868 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtlanal.c (operand_preference): Fix preference for objects.hubicka2001-06-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | * gcse.c (handle_avail_expr): Be prepared to handle single_set parallels. * combine.c (if_then_else_cond): Use simplify_subreg instead of operand_subword. * integreate.c (sub_constants): Likewise. * emit-rtl.c (constant_subword): Deprecate; remove most of code and use simplify_gen_subreg. Mon Jun 4 19:55:23 CEST 2001 Lars Brinkhoff <lars@nocrew.org> * sibcall.c (skip_copy_to_return_value): recognize the situation when the called function's return value is copied into an intermediate pseudo, and then into the calling functions return value register. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42864 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify_rtx.c (simplify_subreg): Keep subregs on return values,hubicka2001-06-041-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | check CLASS_CANNOT_CHANGE_MODE before avoiding subreg on hard reg, in case register wasn't OK previously, accept it now; allow subregs of frame pointer if reload completed and frame pointer is not needed. * combine.c (sombine_simplify_rtx): Fix comment; use subreg_lowpart_offset instead of subreg_lowpart_p (gen_lowpart_for_combine): Use subreg_lowpart_offset. * rtl.h (subreg_lowpart_parts_p): Kill. (subreg_lowpart_offset, subreg_highpart_offset): Declare. * simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset. * emit-rtl.c (gen_lowpart_SUBREG): Use subreg_lowpart_offset; (gen_lowpart_common): Likewise. (subreg_lowpart_p): Likewise. (subreg_lowpart_parts_p): Kill. (subreg_lowpart_offset, subreg_highpart_offset): New function. * emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg to simplify SUBREG and REG. (gen_highpart): Use simplify_gen_subreg for all simplifications. * emit-rtl.c (gen_realpart, gen_imagpart): Do not handle CONCAT specially. * rtlanal.c (replace_regs): Use simplify_gen_subreg git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42850 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Fix CONCAT simplification;hubicka2001-05-241-2/+2
| | | | | | | fix hard register simplification. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42529 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (gen_binary): Use swap_commutative_operands_prth2001-05-221-2/+1
| | | | | | | | | | | | (simplify_comparison): Likewise. * expmed.c (emit_store_flag): Likewise. * expr.c (compare_from_rtx): Likewise. (do_compare_rtx_and_jump): Likewise. * optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort if not emitting a branch and operands want swapping. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42433 138bc75d-0d04-0410-961f-82ee72b054a4
* * integrate.c (copy_rtx_and_substitute): Use simplify_gen_subreg.hubicka2001-05-171-12/+18
| | | | | | | | | | | | | | | | | | (simplify_subreg): Handle complex types represented as CONCAT. * recog.c (validate_replace_rtx_1): Properly canonicalize expression * rtl.h (swap_commutative_operands_p): Declare. * rtlanal.c (swap_commutative_operands_p): New. (operand_preference): New static function. * combine.c (combine_simplify_rtx): Use swap_commutative_operands_p. (gen_binary): Likewise. * optabs.c (emit_cmp_and_jump_insns, emit_conditional_move): Likewise. * simplify-rtx.c (simplify_gen_binary, simplify_gen_relational): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42224 138bc75d-0d04-0410-961f-82ee72b054a4
* * cse.c (fold_rtx): Use simplify_subreg.hubicka2001-05-171-7/+50
| | | | | | | | | | * simplify-rtx.c (simplify_replace_rtx): Use simplify_gen_subreg. (simplify_gen_subreg): New. (simplify_rtx): Use simplify_subreg. * rtl.h (simplify_gen_subreg): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42221 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Avoid creating of incorrect subregs.hubicka2001-05-171-0/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42212 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify_rtx.c (simplify_subreg): Fix simplification of nested subregs.hubicka2001-05-171-2/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42202 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_subreg): Break out from ...hubicka2001-05-171-0/+194
| | | | | | | | | | | * combine.c (combine_splify_rtx) ... here and ... * recog.c (validate_replace_rtx_1): ... here; * rtl.h (subreg_lowpart_parts_p, simplify_subreg): Declare. * emit-rtl.c (subreg_lowpart_parts_p): Break out from ... (subreg_lowpart_p): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42199 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-05-04 Lars Brinkhoff <lars@nocrew.org>geoffk2001-05-051-0/+7
| | | | | | | | * simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1 into -a. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41854 138bc75d-0d04-0410-961f-82ee72b054a4
* * bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".ghazi2001-05-011-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | * c-common.c: Likewise. * c-decl.c: Likewise. * combine.c: Likewise. * rs6000.c: Likewise. * except.c: Likewise. * explow.c: Likewise. * expr.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * gcc.c: Likewise. * gcse.c: Likewise. * integrate.c: Likewise. * loop.c: Likewise. * objc/objc-act.c: Likewise. * recog.c: Likewise. * reg-stack.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * simplify-rtx.c: Likewise. * stmt.c: Likewise. * varasm.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41722 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (simplify_gen_relational): Add cmp_mode parameter.hubicka2001-04-281-3/+33
| | | | | | | | | | | | | | | | | | | | | | * simplify-rtx.c (simplify_gen_relational): Likewise. * simplify-rtx.c (simplify_replace_rtx): Handle relationals and MEMs. * i386.h (VALID_SSE_REG_MODE): Accept MMX modes if SSE2 * i386.md (movsi_1, movdi2, movdi_1_rex64): Handle SSE2 moves. * i386.md (negsf2, negdf2, abssf2, absdf2): Force operands to registers in SSE case; fix handling of the immediates. (negsf2_ifs, abssf2_ifs): Tweak constraints; require operands to be in regsiters before reload. (negdf2_ifs, absdf2_ifs): Likewise; disable for 64bit (negdf2_ifs_rex64, absdf2_ifs_rtx64): New. (abstf,absxf,negtf,negxf splitters): Compute properly the regnum for x86_64. (avsdf2_if_rex64): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41664 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-04-04 Diego Novillo <dnovillo@redhat.com>dnovillo2001-04-051-4/+12
| | | | | | | | | | | | * simplify-rtx.c (simplify_binary_operation): Check for overflow when folding integer division and modulo operations. 2001-04-04 Diego Novillo <dnovillo@redhat.com> * gcc.c-torture/compile/20010404-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41105 138bc75d-0d04-0410-961f-82ee72b054a4
* Brad's -ffast-math breakup.rth2001-03-071-15/+15
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40300 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtlanal.c (find_reg_equal_equiv_note): New function.kenner2001-02-131-7/+128
| | | | | | | | | * simplify-rtx.c (simplify_gen_unary, simplify_gen_ternary): New fns. (simplify_gen_relational, simplify_replace_rtx): Likewise. * rtl.h: Add declarations for above functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39644 138bc75d-0d04-0410-961f-82ee72b054a4
* * cselib.c: New file, from simplify-rtx.c.kenner2001-02-121-1335/+1
| | | | | | | | * simplify-rtx.c: Remove cselib parts. * Makefile.in: Add cselib.o. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39611 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (nonzero_bits, case PLUS): If pointers extend unsignedkenner2001-02-061-2/+10
| | | | | | | | | | | | | | | | | and this is the sum of a pointer and a constant, we know the result did not overflow. (num_sign_bit_copies, case PLUS): Likewise. * explow.c (convert_memory_address): Remove opposite SUBREG. * function.c (instantiate_new_reg): New function (from common code). (instantiate_virtual_regs_1): Call it. For PLUS, handle if (plus (subreg (virt-reg) (const_int)) if pointers sign- or zero-extend. * simplify-rtx.c (simplify_unary_operation, case ZERO_EXTEND): If pointers extend unsigned, use inside of SUBREG. (simplify_unary_operation, case SIGN_EXTEND): Likewise, if sign extend. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39489 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix obvious bug in previous commitdj2001-01-241-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39248 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (combine_simplify_rtx): If the modes are all VOIDmode,dj2001-01-241-0/+2
| | | | | | | | check the original operand's mode also. * simplify-rtx.c (simplify_ternary_operation): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39247 138bc75d-0d04-0410-961f-82ee72b054a4
* * jump.c (jump_optimize_1): Use reversed_comparison_codehubicka2001-01-081-5/+12
| | | | | | | | | | | | | | | instead of can_reverse_comparison_p. (jump_back_p): Likewise. (invert_exp_1): Likewise. (thread_jumps): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. (simplify_ternary_operation): Likewise. * cse.c (find_comparison_args): Convert to use can_reverse_comparison_p. (record_jump_equiv): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38802 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Always simplifyhubicka2001-01-071-0/+8
| | | | | | | | ORDERED and UNORDERED when FLAG_FAST_MATH. Handle properly UNLE and UNGE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38775 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (cfc_args): add "unordered" field.hubicka2001-01-051-4/+44
| | | | | | | | | | | | | | | | | | (check_fold_consts): Set unordered field. (simplify_relational_operation): Simplify the unordered comparisons. * reg-stack.c (swap_rtx_condition): Ensure that the transformation is valid. * emit-rtl.c (try_split): Fix code to mark labels. * jump.c (mark_jump_label): Make global. * rtl.h (mark_jump_label): Declare. * predict.c (estimate_probability): Handle unordred comparisons. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38711 138bc75d-0d04-0410-961f-82ee72b054a4
* Plug a memory leak.bernds2000-12-131-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38218 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (make_edge): Early out, if no flags to set.rth2000-11-301-8/+27
| | | | | | | | | | | | | | | | (calculate_global_regs_live): Clear out garbage only when necessary. * simplify-rtx.c (varray_type used_regs): New. (clear_table): Use it to only clear necessary items. (cselib_lookup, cselib_record_set): Remember newly set items. (cselib_update_varray_sizes, cselib_init): Initialize and grow used_regs. * local-alloc.c (update_equiv_regs): New local `cleared_regs'. Move clearing of dead regs out of insn-loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37899 138bc75d-0d04-0410-961f-82ee72b054a4
* Ignore SETs that are anything except REG or MEM, but look inside ↵bernds2000-11-281-8/+21
| | | | | | STRICT_LOW_PART. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37819 138bc75d-0d04-0410-961f-82ee72b054a4
* In cselib, do not consider constants with different modes equivalent.bernds2000-11-271-11/+45
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37792 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (init_alias_analysis), calls.c (expand_call,jsm282000-11-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | emit_library_call_value_1), combine.c (init_reg_last_arrays), cse.c (new_basic_block), dbxout.c (dbxout_type), diagnostic.c (init_output_buffer, set_diagnostic_context), dwarf2out.c (equate_decl_number_to_die, build_abbrev_table), emit-rtl.c (init_emit_once), fold-const.c (mul_double, div_and_round_double), function.c (assign_parms), gcse.c (compute_can_copy, alloc_gcse_mem, alloc_reg_set_mem, record_one_set, compute_hash_table, compute_set_hash_table, compute_expr_hash_table), genattrtab.c (optimize_attrs), global.c (global_alloc, global_conflicts), haifa-sched.c (compute_trg_info, clear_units, schedule_block), integrate.c (initialize_for_inline, expand_inline_function), jump.c (thread_jumps), local-alloc.c (local_alloc), loop.c (combine_movables, count_loop_regs_set, load_mems_and_recount_loop_regs_set), print-tree.c (debug_tree), regclass.c (init_reg_sets, init_reg_sets_1, regclass, record_reg_classes, allocate_reg_info), reload.c (get_secondary_mem, remove_address_replacements, find_reloads), reload1.c (reload, set_initial_label_offsets, finish_spills, reload_as_needed, choose_reload_regs_init, reload_cse_simplify_operands), reorg.c (dbr_schedule), sbitmap.c (sbitmap_zero), simplify-rtx.c (simplify_plus_minus), ssa.c (rename_registers), stmt.c (expand_end_case), unroll.c (unroll_loop), varray.c (varray_grow), objc/objc-act.c: Use memset () instead of bzero (). ch: * actions.c (check_missing_cases), typeck.c (build_chill_slice, build_chill_cast): Use memset () instead of bzero (). cp: * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c (push_binding_level), error.c (cp_tree_printer), pt.c (process_partial_specialization, tsubst_template_arg_vector), search.c (lookup_member): Use memset () instead of bzero (). java: * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c (init_outgoing_cpool), lex.c (java_init_lex): Use memset () instead of bzero (). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37303 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Sign extendrth2000-10-251-3/+2
| | | | | | | low words before sign extending to high words. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37061 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove obstacks.mmitchel2000-10-131-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (ggc-callbacks.o): Remove target. (flow.o): Depend on GGC_H. * alias.c (init_alias_analysis): Remove ggc_p conditionals. (end_alias_analysis): Likewise. * basic-block.h (init_flow): New function. (allocate_reg_life_data): Declare. * bb-reorder.c (function_obstack): Replace with ... (flow_obstack): ... new variable. (fixup_reorder_chain): Use it. * c-decl.c (ggc_p): Remove. (caller-save.c): Don't call oballoc/obfree. * combine.c (struct undobuf): Remove storage. (try_combine): Don't call oballoc. (undo_all): Don't call obfree. * cse.c (insert): Use xmalloc, not oballoc. (cse_main): Adjust accordingly. * dwarf2out.c (save_rtx): Remove obstack code. (dwarf2out_init): Remove ggc_p conditionals. * emit-rtl.c (rtl_obstack): Remove. (gen_rtx_CONST_INT): Remove ggc_p conditionals. (make_insn_raw): Likewise. (emit_insn_before): Likewise. (emit_insn_after): Likewise. (emit_insn): Likewise. (gen_sequence): Likewise. (copy_insn_1): Remove handling of `b' RTL components. (init_emit_once): Remove ggc_p conditionals. * except.c (create_rethrow_ref): Don't fool with obstacks. (add_partial_entry): Likewise. (call_get_eh_context): Likewise. (begin_protect_partials): Likewise. (protect_with_terminate): Likewise. * explow.c (plus_constant_wide): Likewise. * expr.c (init_expr_once): Likewise. (emit_block_move): Likewise. (clear_storage): Likewise. (expand_expr): Likewise. * flow.c (function_obstack): Remove. (flow_obstack): New variable. (flow_firstobj): Likewise. (create_base_block): Use the flow_obstack. (split_block): Likewise. (split_edge): Likewise. (calculate_global_regs_live): Likewise. (allocate_bb_life_data): Make it static. Likewiwse. (init_flow): New function. (size_int_type_wide): Remove ggc_p conditionals. * function.c (push_function_context_to): Don't call save_tree_status. (pop_function_context_from): Or restore_tree_status. (assign_stack_local_1): Don't call push_obstacks. (find_fixup_replacement): Use xmalloc. (fixup_var_refs_insns): Free the storage. (insns_for_mem_walk): Don't mess with obstacks. (instantiate_decls): Likewise. (trampoline_address): Likewise. (expand_function_end): Likewise. * function.h (sturct function): Remove obstack-related variables. (save_tree_status): Don't declare. (restore_tree_status): Likewise. * gcse.c (compute_can_copy): Don't call oballoc/obfree. * genattrtab.c (operate_exp): Remove ggc_p conditionals. (simplify_cond): Likewise. (simplify_test_exp): Don't mess with obstacks. (optimize_attrs): Likewise. * gengenrtl.c (gendef): Don't include ggc_p conditionals. * ggc-callbacks.c (ggc_p): Remove. * ggc-none.c (ggc_p): Remove. * ggc.h (ggc_p): Don't declare. * integrate.c (save_for_inline): Don't mess with obstacks. (integrate_decl_tree): Likewise. (output_inline_function): Likewise. * lists.c (init_EXPR_INSN_LIST_cache): Likewise. * loop.c (temp_obstack): Remove. (rtl_obstack): Likewise. (init_loop): Don't mess with obstacks. (reg_address_cost): Free BIVs and GIVs. (check_insns_for_bivs): Use xmalloc, not oballoc. (find_mem_givs): Likewise. (record_biv): Likewise. (general_induction_var): Likewise. (product_cheap_p): Likewse. * optabs.c (init_one_libfunc): Remove ggc_p conditional. * print-tree.c (debug_tree): Don't use oballoc/obfree. (print_node): Likewise. * profile.c (output_func_start_profiler): Remove call to temporary_allocation. * reload1.c (eliminate_regs_in_insn): Don't mess with obstacks. * resource.c (mark_target_live_regs): Use xmalloc. (free_resource_info): Free the memory. * rtl.c (rtl_obstack): Remove. (rtvec_alloc): Don't mess with obstacks. (rtx_alloc): Likewise. (rtx_free): Remove. (copy_rtx): Don't handle `b' cases. (read_rtx): Use a local rtl_obstack. * rtl.h (oballoc): Remove. (obfree): Likewise. (pop_obstacks): Likewise. (push_obstacks): Likewise. (allocate_bb_life_data): Likewise. (allocate_reg_life_data): Likewise. (rtx_free): Likewise. * sdbout.c (sdbout_queue_anonymous_type): Use tree_cons, not saveable_tree_cons. * simplify-rtx.c (cselib_init): Don't mess with obstacks. * stmt.c (mark_block_nesting): Mark the label_chain. (epxand_label): Use ggc_alloc, not oballoc. (clear_last_expr): Don't mess with obstacks. (expand_decl_cleanup): Likewise. (expand_dcc_cleanup): Likewise. (expand_dhc_cleanup): Likewise. (expand_anon_union_decl): Likewise. (add_case_node): Use xmalloc, not oballoc. (free_case_nodes): New function. (expand_end_case): Call it. * stor-layout.c (layout_type): Don't mess with obstacks. (layout_type): Likewise. * toplev.c (wrapup_global_declarations): Likewise. (compile_file): Remove ggc_p conditionals. (rest_of_compilation): Call init_flow. Remove ggc_p conditionals. (decode_f_option): Remove ggc_p conditionals. * tree.c (function_maybepermanent_obstack): Remove. (maybepermanent_obstack): Likewise. (function_obstack): Likewise. (tmeporary_obstack): Likewise. (momentary_obstack): Likewise. (temp_decl_obstack): Likewise. (saveable_obstack): Likewise. (rtl_obstack): Likewise. (current_obstack): Likewise. (expression_obstack): Likewise. (struct obstack_stack): Likewise. (obstack_stack): Likewise. (obstack_stack_obstack): Likewise. (maybepermanent_firstobj): Likewise. (temporary_firstobj): Likewise. (momentary_firstobj): Likewise. (temp_decl_firstobj): Likewise. (momentary_function_firstobj): Likewise. (all_types_permanent): Likewise. (struct momentary_level): Likewise. (momentary_stack): Likewise. (init_obstacks): Remove initialization of removed obstacks. (save_tree_status): Remove. (restore_tree_status): Likewise. (temporary_allocation): Liekwise. (end_temporary_allocation): Liekwise. (resume_temporary_allocation): Likewise. (saveable_allocation): Likewise. (push_obstacks): Likewise. (push_obstacks_nochange): Likewise. (pop_obstacks): Likewise. (allocation_temporary_p): Likewise. (permanent_allocation): Likewise. (preserve_data): Likewise. (preserve_initializer): Likewise. (rtl_in_current_obstack): Likewise. (rtl_in_saveable_obstack): Likewise. (oballoc): Likewise. (obfree): Likewise. (savealloc): Likewise. (expralloc): Likewise. (print_obstack_name): Likewise. (debug_obstack): Likewise. (object_permanent_p): Likewise. (push_momentary): Likewise. (perserve_momentary): Likewise. (clear_momentary): Likewise. (pop_momentary): Likewise. (pop_momentary_nofree): Likewise. (suspend_momentary): Likewise. (resume_momentary): Likewise. (make_node): Don't set TREE_PERMANENT. (copy_node): Remove ggc_p conditionals. Don't set TYPE_OBSTACK. Don't set TREE_PERMANENT. (get_identifier): Remove ggc_p conditionals. (build_string): Likewise. (make_tree_vec): Likewise. (build_decl_list): Remove. (build_expr_list): Likewise. (tree_cons): Remove ggc_p conditionals. (decl_tree_cons): Remove. (expr_tree_cons): Likewise. (perm_tree_cons): Likewise. (temp_tree_cons): Likewise. (saveable_tree_cons): Likewise. (build1): Remove ggc_p conditionals. (build_parse_node): Likewise. (build_type_attribute_variant): Don't mess with obstacks. (build_type_copy): Likewise. (type_hash_canon): Likewise. (build_pointer_type): Likewise. (build_reference_type): Likewise. (build_index_type): Likewise. (build_range_type): Likewise. (dump_tree_statistics): Don't print obstack information. * tree.h (struct tree_common): Remove permanent_flag. (TREE_PERMANENT): Remove. (TREE_SET_PERMANENT): Likewise. (TYPE_OBSTACK): Likewise. (struct tree_type): Remove obstack. (oballoc): Remove. (savealloc): Likewise. (build_decl_list): Likewise. (build_expr_list): Likewise. (perm_tree_cons): Likewise. (temp_tree_cons): Likewise. (saveable_tree_cons): Likewise. (decl_tree_cons): Likewise. (expr_tree_cons): Likewise. (suspend_momentary): Likewise. (allocation_temporary_p): Likewise. (resume_momentary): Likewise. (push_obstacks_nochange): Likewise. (permanent_allocation): Likewise. (push_momentary): Likewise. (clear_momentary): Likewise. (pop_momentary): Likewise. (end_temporary_allocation): Likewise. (pop_obstacks): Likewise. (push_obstacks): Likewise. (pop_momentary_nofree): LIkewise. (preserve_momentary): Likewise. (saveable_allocation): Likewise. (temporary_allocation): Likewise. (resume_temporary_allocation): Likewise. (perserve_initializer): Likewise. (debug_obstack): Likewise. (rtl_in_current_obstack): Likewise. (rtl_in_saveable_obstack): Likewise. (obfree): Likewise. * varasm.c (current_obstack): Remove. (saveable_obstack): Remove. (rtl_obstack): Remove. (immed_double_const): Don't mess with obstacks. (immed_real_cons): Likewise. (output_constant_def): Likewise. (init_varasm_status): Use xcalloc. (mark_pool_constant): Mark the pool constant itself. (free_varasm_status): Free memory. (decode_rtx_const): Call bzero directly, rather than expanding it inline. (record_rtx_const): Don't mess with obstacks. (force_const_mem): Likewise. * config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p conditionals. (aof_pic_entry): Likewise. * config/ia64/ia64.c (ia64_encode_section_info): Likewise. * config/m32r/m32r.c (m32r_encode_section_info): Likewise. * config/pa/pa.c (saveable_obstack): Remove. (rtl_obstack): Likewise. (current_obstack): Likewise. (output_call): Don't mess with obstacks. (hppa_encode_label): Remove ggc_p conditionals. * config/romp/romp.c (get_symref): Don't mess with obstacks. * config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional. (rs6000_encode_section_info): Likewise. * config/sh/sh.c (get_fpscr_rtx): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36856 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (combine_simplify_rtx): Use gen_unary to distributerth2000-09-181-3/+14
| | | | | | | | | the NOT for De Morgan's rule. * simplify-rtx.c (simplify_unary_operation): Simplify a BImode NOT of a comparison to the reverse comparison. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36506 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_unary_operation): Add caseskenner2000-09-171-0/+2
| | | | | | | FLOAT_EXTEND and FLOAT_TRUNCATE to ones that return 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36471 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (simplify_if_then_else): Don't convert a == b ? b : ajakub2000-09-111-0/+2
| | | | | | | | to a if the comparison is floating mode and not -ffast-math. * simplify-rtx.c (simplify_ternary_operation): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36326 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_rtx): Don't pass VOIDmode toaoliva2000-08-231-2/+5
| | | | | | | | | simplify_relational_operation() unless both operands are of VOIDmode. * cse.c (fold_rtx): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35904 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (mark_constant_function): Use INSN_P.law2000-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (init_alias_analysis): Likewise. * combine.c (combine_instructions): Use INSN_P. (can_combine_p): Likewise. (try_combine): Likewise. (distribute_notes): Likewise. (distribute_links): Likewise. * cse.c (cse_around_loop): Use INSN_P. (invalidate_skipped_block): Likewise. (cse_set_around_loop): Likewise. (cse_end_of_basic_block): Likewise. (delete_trivially_dead_insns): Likewise. * emit-rtl.c (unshare_all_rtl_again): Use INSN_P. (unshare_all_rtl_1): Likewise. (next_cc0_user): Likewise. (try_split make_insn_raw): Likewise. (remove_unnecessary_notes): Likewise. * final.c (shorten_branches): Use INSN_P. (leaf_renumber_regs): Likewise. (leaf_renumber_regs_insn): Likewise. * flow.c (find_label_refs): Use INSN_P. (verify_wide_reg): Likewise. (notice_stack_pointer_modification): Likewise. (count_or_remove_death_notes): Likewise. (verify_flow_info): Likewise. (clear_log_links): Likewise. * function.c (fixup_var_refs_insns): Use INSN_P. (compute_insns_for_mem): Likewise. * gcse.c (alloc_gcse_mem): Use INSN_P. (compute_sets): Likewise. (compute_hash_table): Likewise. (classic_gcse): Likewise. (cprop): Likewise. (insert_insn_end_bb): Likewise. (delete_null_pointer_checks_1): Likewise. * global.c (expand_preferences): Use INSN_P. (build_insn_chain): Likewise. * graph.c (node_data): Use INSN_P. * haifa-sched.c (priority): Use INSN_P. (rm_line_notes): Likewise. (rm_other_notes): Likewise. (find_insn_reg_weight): Likewise. (init_target_units): Likewise. (schedule_block): Likewise. (compute_block_forward_dependences): Likewise. (debug_dependencies): Likewise. (set_priorities): Likewise. * integrate.c (function_cannot_inline_p): Use INSN_P. (save_parm_insns): Likewise. (copy_insn_list): Likewise. * jump.c (mark_all_labels): Use INSN_P. (never_reached_warning): Likewise. * lcm.c (optimize_mode_switching): Use INSN_P. * local-alloc.c (validate_equiv_mem): Use INSN_P. (memref_used_between_p): Likewise. (update_equiv_regs): Likewise. (block_alloc): Likewise. (no_conflict_p): Likewise. * loop.c (scan_loop): Use INSN_P. (find_and_verify_loops): Likewise. (count_loop_regs_set): Likewise. (loop_reg_used_before_p): Likewise. (strength_reduce): Likewise. (recombine_givs): Likewise. (check_dbra_loop): Likewise. (load_mems): Likewise. (try_copy_prop): Likewise. * print-rtl.c (print_rtx): Use INSN_P. * recog.c (find_single_use): Use INSN_P. * reg-stack.c (stack_regs_mentioned): Use INSN_P. (next_flags_user): Likewise. (swap_rtx_condition): Likewise. * regmove.c (mark_flags_life_zones): Use INSN_P. (optimize_reg_copy_1): Likewise. (optimize_reg_copy_2): Likewise. (optimize_reg_copy_3): Likewise. (reg_is_remote_constant_p): Likewise. (fixup_match_2): Likewise. (regmove_optimize): Likewise. (fixup_match_1): Likewise. * regrename.c (build_def_use): Use INSN_P. (replace_reg_in_block): Likewise. (consider_use): Likewise. * reload.c (find_equiv_reg): Use INSN_P. * reload1.c (reload): Use INSN_P. (maybe_fix_stack_asms): Likewise. (calculate_needs_all_insns): Likewise. (reload_as_needed): Likewise. (emit_output_reload_insns): Likewise. (delete_address_reloads_1): Likewise. (reload_cse_regs_1): Likewise. (reload_combine): Likewise. (reload_cse_move2add): Likewise. * reorg.c (redundant_insn): Use INSN_P. (dbr_schedule): Likewise. * resource.c (find_dead_or_set_registers): Use INSN_P. (mark_target_live_regs): Likewise. * rtlanal.c (reg_used_between_p): Use INSN_P. (reg_referenced_between_p): Likewise. (reg_set_between_p): Likewise. (reg_set_p): Likewise. (single_set): Likewise. (multiple_sets): Likewise. (find_last_value): Likewise. (reg_set_last): Likewise. (find_reg_note): Likewise. (find_regno_note): Likewise. * sibcall.c (sequence_uses_addressof): Use INSN_P. * simplify-rtx.c (cselib_process_insn): Use INSN_P. * ssa.c (find_evaluations): Use INSN_P. (rename_block): Likewise. (rename_equivalent_regs): Likewise. * unroll.c (loop_find_equiv_value): Use INSN_P. (set_dominates_use): Likewise. * varasm.c (mark_constant_pool): Use INSN_P. (mark_constants): Likewise. * config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P. (alphaev4_next_group): Likewise. (alphaev5_next_group): Likewise. * config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P. (c4x_rptb_rpts_p): Likewise. * config/mips/mips.c (mips16_optimize_gp): Use INSN_P. * config/rs6000/rs6000.c (uses_TOC): Use INSN_P. (rs6000_adjust_priority): Likewise. * config/sh/sh.c (sh_loop_align): Use INSN_P. (machine_dependent_reorg): Likewise. (split_branches): Likewise. * config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35494 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Verify that mode ==hubicka2000-07-301-1/+9
| | | | | | | | | VOIDmode implies both operands to be VOIDmode. (simplify_ternary_operation): Compute properly the mode of comparison. * combine.c (combine_simplify_rtx): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35343 138bc75d-0d04-0410-961f-82ee72b054a4
* * cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.rth2000-07-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cse_insn): Likewise. (addr_affects_sp_p): Likewise. * expr.c (move_by_pieces): Likewise. (clear_by_pieces): Likewise. * gcse.c (oprs_unchanged_p): Likewise. * haifa-sched.c (sched_analyze_2): Likewise. * recog.c (offsettable_address_p): Likewise. * regclass.c (record_address_regs): Likewise. * reload.c (find_reusable_reload): Likewise. (push_reload): Likewise. (operands_match_p): Likewise. (decompose): Likewise. (find_reloads_address_1): Likewise. (find_inc_amount): Likewise. * reload1.c (elimination_effects): Likewise. * resource.c (mark_set_resources): Likewise. * flow.c (attempt_auto_inc): New function; mostly broken out of find_auto_inc. (find_auto_inc): Split into two functions and enhanced to generate POST_MODIFY. * rtl.def (PRE_MODIFY, POST_MODIFY): Adjust comment. * rtl.h (count_all_occurrences): Declare. (HAVE_{PRE,POST}_MODIFY_{DISP,REG}): Provide default of 0 if not defined. * rtlanal.c (count_all_occurrences): New function. * tm.texi (HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_DISP, HAVE_POST_MODIFY_REG, HAVE_PRE_MODIFY_REG): Document. * config/ia64/ia64-protos.h (destination_operand): Declare. * config/ia64/ia64.c (destination_operand): New function. (ia64_print_operand): Handle POST_MODIFY. (rtx_needs_barrier): Likewise. * config/ia64/ia64.h (HAVE_POST_MODIFY_DISP): Define to 1. (HAVE_POST_MODIFY_REG): Define to 1. (MAX_REGS_PER_ADDRESS): Change to 2. (GO_IF_LEGITIMATE_ADDRESS): Accept POST_MODIFY too. (LEGITIMATE_ADDRESS_REG): New helper macro. (LEGITIMATE_ADDRESS_DISP): Likewise. (PREDICATE_CODES): Add entry for destination_operand. * config/ia64/ia64.md (all mov patterns): Use destination_operand predicate for operand 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35321 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Recognizezack2000-07-171-5/+22
| | | | | | | | | (compare (gt[u] (cc) 0) (lt[u] (cc) 0)). (simplify_ternary_operation): Do not examine MODE_BITSIZE of a CONST_INT, it will always be zero. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35098 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Two signedgeoffk2000-07-171-2/+2
| | | | | | | | values with equal high words are less/greater than each other if their low words are less/greater when considered as unsigned. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35080 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c: Rename macro SIGN_EXTEND to HWI_SIGN_EXTEND.ghazi2000-05-241-10/+10
| | | | | | | All callers changed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34141 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (SIGN_EXTEND): New macro.zack2000-05-231-13/+22
| | | | | | | | | | | (simplify_unary_operation, simplify_binary_operation, simplify_relational_operation): Use SIGN_EXTEND. Make low halves of (low, high) pairs unsigned if they weren't already. (simplify_ternary_operation): Cast INTVAL to unsigned before comparing to a MODE_BITSIZE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34109 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_ternary_operation): Try to simplifyrth2000-05-221-0/+19
| | | | | | | IF_THEN_ELSE to a setcc form. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34076 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_ternary_operation): Cast to unsigned.jason2000-05-041-1/+1
| | | | | | | | | | | | | | | | | | | | | * stor-layout.c (place_field): Likewise. * integrate.h (struct inline_remap): Make regno_pointer_align unsigned. * expr.c (store_expr): Make align unsigned. * explow.c (plus_constant_wide): Make low words unsigned. * expmed.c (choose_multiplier): Likewise. * fold-const.c (fold): Likewise. * tree.h (build_int_2): Likewise. * tree.c (build_int_2_wide, tree_int_cst_msb): Likewise. * emit-rtl.c (gen_reg_rtx): Add cast to unsigned char*. (init_emit): Change cast to unsigned char*. * varasm.c (compare_constant_1): Add cast to char*. * gcse.c (delete_null_pointer_checks): Change cast to unsigned int*. * reload1.c (reload): Likewise. * rtl.h (MEM_SET_IN_STRUCT_P): Use do { } while (0). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33684 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P andkenner2000-05-041-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MEM_ALIAS_SET. * alias.c (canon_rtx): Don't copy RTX_UNCHANGING_P or MEM_ALIAS_SET when calling MEM_COPY_ATTRIBUTES. * emit-rtl.c (operand_subword, change_address): Likewise. * explow.c (stabilize): Likewise. * expr.c (protect_from_queue, emit_move_insn_1): Likewise. * integrate.c (copy_rtx_and_substitute): Likewise. * combine.c (combine_simplify_rtx): Don't copy RTX_UNCHANGING_P when calling MEM_COPY_ATTRIBUTES. (make_extraction, simplify_shift_const, gen_lowpart_for_combine): Likewise. * cse.c (gen_lowpart_if_possible): Likewise. * function.c (fixup_var_refs_1, purge_addressof_1): Likewise. * optabs.c (gen_move_insn): Likewise. * recog.c (validate_replace_rtx_1): Likewise. * simplify-rtx.c (add_mem_for_addr): Likewise. * stmt.c (expand_anon_union_decl): Likewise. * config/arm/arm.md: Likewise. * config/h8300/h7300.c (fix_bit_operand): Likewise. * config/m88k/m88k.c (legitimize_address, block_move_loop): Likewise. (block_move_no_loop, block_move_sequence): Likewise. * config/rs6000/rs6000.c (expand_block_move_mem): Likewise. * config/alpha/alpha.c (get_aligned_mem): Likewise. Clear MEM_ALIAS_SET. * final.c (alter_subreg): Don't copy MEM_ALIAS_SET when calling MEM_COPY_ATTRIBUTES. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33665 138bc75d-0d04-0410-961f-82ee72b054a4