summaryrefslogtreecommitdiff
path: root/gcc/alias.c
Commit message (Collapse)AuthorAgeFilesLines
* Major cutover to using system.h:ghazi1998-03-201-10/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o, c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o, caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o, dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o, expr.o, final.o, flow.o, function.o, getpwd.o, global.o, integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o, prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o, reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o, rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o, tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend on system.h. * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c, c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c, caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c, dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c, expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c, integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c, prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c, reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c, rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c, stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c, xcoffout.c: Include system.h. Organize include ordering so that stdarg/varargs comes before other system headers. Remove spurious casts of functions assured of a prototype in system.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18726 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c: Include <stdlib.h> and <string.h>.jfc1998-02-151-1/+11
| | | | | | | (init_alias_analysis): Pass NULL_RTX instead of 0 to record_set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18011 138bc75d-0d04-0410-961f-82ee72b054a4
* Document unique_id variable.jfc1998-02-081-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17783 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO;rth1998-01-141-13/+13
| | | | | | | | | | | | | | | change gen_rtx(expr...) to gen_rtx_fmt_foo(expr...). * caller-save.c, calls.c, combine.c, cse.c: Likewise. * dwarf2out.c, except.c, explow.c, expmed.c, expr.c: Likewise. * final.c, flow.c, function.c, genpeep.c, haifa-sched.c: Likewise. * halfpic.c, integrate.c, jump.c, local-alloc.c, loop.c: Likewise. * profile.c, recog.c, reg-stack.c, regclass.c, regmove.c: Likewise. * reload.c, reload1.c, reorg.c, sched.c, stmt.c, stupid.c: Likewise. * unroll.c, varasm.c: Likewise. * config/alpha/alpha.c, config/alpha/alpha.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17357 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (*_dependence): Call base_alias_check before canon_rtx.law1998-01-051-18/+40
| | | | | | | | (base_alias_check): If no base found for address call canon_rtx and try again. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17296 138bc75d-0d04-0410-961f-82ee72b054a4
* * flags.h, toplev.c, calls.c, alias.c: Remove flag_alias_check;law1997-12-241-164/+122
| | | | | | | | | | | | | | | | optimization is now always enabled. * calls.c (expand_call): Recognize C++ operator new as malloc-like function. * alias.c (memrefs_conflict_p): Eliminate tests now done by base_alias_check. (*_dependence): Call canon_rtx before base_alias_check. (init_alias_once): New function to precompute set of registers which can hold Pmode function arguments. * rtl.h: Declare init_alias_once. * toplev.c (compile_file): Call init_alias_once. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17226 138bc75d-0d04-0410-961f-82ee72b054a4
* * bitmap.c (bitmap_clear): Ensure `inline' is at the beginninglaw1997-12-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of the declaration. * c-decl.c (finish_decl): Use parentheses around && within ||. * rtl.c: Include stdlib.h. (read_skip_spaces): Add parentheses around assignments used as truth values. (read_rtx): Initialize list_rtx. * cppexp.c (parse_number): Use || when operands are truth values. * alias.c (find_base_value): Add default case. (memrefs_conflict): Likewise. * combine.c (sets_function_arg_p): Likewise. * genemit.c (gen_exp): Likewise. * local-alloc.c (contains_replace_regs): Likewise. * rtlanal.c (jmp_uses_reg_or_mem): Likewise. * fold-const.c (fold_convert): Use "&&" for truth values. (fold): Add default case. * sdbout.c (sdbout_field_types): Fix typo in declaration. (sdbout_one_type): Add default case. * alpha.c (alpha_sa_mask): Prototype only if OPEN_VMS. (some_operand): Add default case. (input_operand): Likewise. (signed_comparison_operator): Likewise. (divmod_operator): Likewise. (alpha_set_memflags_1): Likewise. * reload1.c (reload_cse_simplify_operands): Ensure function always returns a value. * scan-decls.c (scan_decls): Likewise. * c-lex.c (skip_white_space): Fix typo in declaraion. * c-typeck.c (comp_target_types): Add parentheses around assignment used as truth value. (print_spelling): Likewise. (constructor_implicit, constructor_result): Remove unused variables. * collect2.c (scan_library): Protect prototype with #ifdef SCAN_LIBRARIES. * emit-rtl.c (find_line_note): Fix typo in declaration. * final.c (asm_insn_count): Protect prototype with #ifdef HAVE_ATTR_length. * flow.c (find_auto_inc): Protect prototype with #ifdef AUTO_INC_DEC. (try_pre_increment_1, try_pre_increment): Likewise. * regclass.c (auto_inc_dec_reg_p): Protect prototype with #ifdef FORBIDDEN_INC_DEC_CLASSES. Make return type explicit. * gcov-io.h (__store_long, __write_long, __read_long): Fix unsigned/signed comparisons. * gcov.c (read_files): Remove unused "first_type" variable. (scan _for_source_files): Initialize s_ptr. (function_summary): Eliminate "%lf" formatting, use %ld for longs. (output_data): Initialize branch_probs and last_line_num. Eliminate "%lf" formatting, use "%ld" for longs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17158 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (MAX_ALIAS_LOOP_PASSES): Define.law1997-11-101-5/+27
| | | | | | | (init_alias_analysis): Break out of loops after MAX_ALIAS_LOOP_PASSES. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16415 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (find_base_value): Only return the known base value forlaw1997-11-051-4/+8
| | | | | | | pseudo registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16345 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (find_base_value): When copying arguments, return thelaw1997-11-041-4/+7
| | | | | | | tenative value for a hard register. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16319 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (init_alias_analysis): Handle -fno-alias-check whenlaw1997-11-021-47/+55
| | | | | | | optimizing correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16268 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (init_alias_analysis): Add struct_value_incoming_rtxlaw1997-10-311-53/+138
| | | | | | | | | | | | | | | | | | | | | | | and static_chain_rtx into the potential base values array if they are registers. Fixes bugs exposed by improved alias propagation code. * alias.c (new_reg_base_value): New array of potential base values. (unique_id): Now file scoped static. (find_base_value, case REG): Return the value in reg_base_value array for the REG if it exists. Else, return the value from new_reg_base_value if copying args and REG is a hard register. (find_base_value, case PLUS): If either operand of the PLUS is a REG, try to get its base value. Handle base + index and index + base. (record_set): Use new_reg_base_value instead of reg_base_value. (init_alias_analysis): Allocate space for new_reg_base_value too. Rework code to iterate over the insns propagating base value information until nothing changes. Improve alias propagation significantly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16250 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix typo in last change.law1997-10-261-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16194 138bc75d-0d04-0410-961f-82ee72b054a4
* Opps. Checked in some development patches by accident.law1997-10-261-23/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16189 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (memrefs_conflict_p): Treat arg_pointer_rtx justlaw1997-10-261-2/+2
| | | | | | | like stack_pointer_rtx. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16188 138bc75d-0d04-0410-961f-82ee72b054a4
* Take out find_base_value change -- not needed, only the find_base_termlaw1997-10-261-8/+23
| | | | | | | change was needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16185 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (find_base_value): Handle PRE_INC, PRE_DEC, POST_INC,law1997-10-261-1/+15
| | | | | | | | | | and POS_DEC. (find_base_term): Likewise. * alias.c (true_dependence): Fix typo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16182 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (base_alias_check): Two symbols can conflict if theylaw1997-09-291-11/+29
| | | | | | | | are accessed via AND. (memrefs_conflict_p): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15785 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (init_alias_analysis): Clean up incompatible pointerlaw1997-09-081-1/+1
| | | | | | | | | | | | type warning in bzero. * regmove.c (regmove_optimize): Ditto. * haifa-sched.c (find_rgns): Ditto. * haifa-sched.c (print_value): Clean up ptr->int cast warnings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15169 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix H.J. Lu's alpha-linux aliasing bug.wilson1997-09-031-2/+10
| | | | | | | | * alias.c (true_dependence): Address with AND can alias scalars. (anti_dependence, output_dependence): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15063 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix minor alias typo found while working on H.J. Lu's alpha-linux alias bug.wilson1997-09-031-1/+1
| | | | | | | * alias.c (true_dependence): Test x for BLKmode, in addition to mem. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15061 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix m68k-next-nextstep3 stage2 enquire compilation hang reported by Moene.wilson1997-08-231-1/+1
| | | | | | | * alias.c (true_dependence): Pass x_addr not x to varies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14898 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (find_base_value): Improve handling of PLUS, MINUS, andlaw1997-08-221-43/+58
| | | | | | | | | | | LO_SUM. (record_set): Handle LO_SUM like PLUS. (init_alias_analysis): When following chains of base addresses, do not stop on reaching a hard register. Updates from jfc. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14888 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (init_alias_analysis): When simplifying the reg_base_valuelaw1997-08-211-1/+1
| | | | | | | | array, simplify entries for hard registers too. From jfc. Fixes c-torture failure on the PA. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14869 138bc75d-0d04-0410-961f-82ee72b054a4
* * Integrate alias analysis changes from jfc@mit.edulaw1997-08-111-0/+1015
* Makefile.in (OBJS): Add alias.o (alias.o): Add dependencies. * alias.c: New file. * sched.c: Remove alias analysis code. It lives in alias.c now. (reg_last_uses_size): Declare. (sched_analyze_2): Add new arguments to true_dependence. (sched_analyze_insn): Use reg_last_uses_size instead of max_reg. (schedule_block): Initialize reg_last_uses_size. (schedule_insns): Always call init_alias_analysis. * calls.c (expand_call): Note calls to malloc, calloc, and realloc; mark return value from such functions as a pointer and keep track of them for alias analysis. If a return value from a function is a pointer, mark it as such. * combine.c (distribute_notes): Handle REG_NOALIAS. * cse.c (struct write_data): Delete. No longer needed. (invalidate): Don't call set_nonvarying_address_components anymore. Use true_dependence to decide if an entry should be removed from the hash table. (invalidate_memory): Remove WRITES argument, simplify appropriately. Fix all callers. (note_mem_written): Similarly for WRITE_PTR argument. (invalidate_from_clobbers): Similarly for W argument. (invalidate_for_call): Remove memory elements from the hash table. (refers_to_mem_p, cse_rtx_addr_varies_p): Deleted. (cse_rtx_varies_p): New function. Derived from old cse_rtx_addr_varies_p. (cse_insn): Remove WRITES_MEMORY and INIT variables and all references. Don't call note_mem_written anymore. Stack pushes invalidate the stack pointer if PUSH_ROUNDING is defined. No longer need to call cse_rtx_addr_varies_p to decide if a MEM should be invalidated. (skipped_writes_memory): Remove variable. (invalidate_skipped_set): Simplify and wewrite to use invalidate_memory. (invalidate_skipped_block): Simplify for new alias analysis code. (cse_set_around_loop): Likewise. (cse_main): Call init_alias_analysis. * flags.h (flag_alias_check, flag_argument_noalias): Declare. * toplev.c (flag_alias_check, flag_argument_noalias): Define. (f_options): Add new alias checking arguments. (main): Set flag_alias_check when optimizing. * local_alloc (validate_equiv_mem_from_store): Add new arguments to true_dependence. (memref_referenced_p): Likewise. * loop.c (NUM_STORES): Increase to 30. (prescan_loop): Only non-constant calls set unknown_address_altered. (invariant_p): Add new arguments to true_dependence. (record_giv): Initialize unrolled and shared fields. (emit_iv_add_mult): Call record_base_value as needed. * loop.h (struct induction): Add unrolled and shared fields. * unroll.c (unroll_loop): Call record_base_value as needed. (copy_loop_body): Likewise. (final_biv_value): Likewise. (final_giv_value): Likewise. (find_splittable_regs): Likewise. Only create one new pseudo if we have multiple address GIVs that were combined with the same dst_reg GIV. Note when a new register is created due to unrolling. * rtl.c (reg_note_name): Add REG_NOALIAS. * rtl.h (enum reg_note): Similarly. (rtx_varies_p, may_trap_p, side_effects_p): Declare. (volatile_refs_p, volatile_insn_p, remove_note): Likewise. (note_stores, refers_to_regno_p, reg_overlap_mentioned_p): Likewise. (true_dependence, read_dependence, anti_dependence): Likewise. (output_dependence, init_alias_analysis, end_alias_analysis): Likewise. (mark_user_reg, mark_reg_pointer): Likewise. jfc's alias analysis code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14768 138bc75d-0d04-0410-961f-82ee72b054a4