Resolve conflicts from gcc 2.95.3 import.

This commit is contained in:
tv 2001-04-23 12:23:26 +00:00
parent f54fbfcb75
commit dbfa9a0b9b
11 changed files with 1037 additions and 269 deletions

View File

@ -54,6 +54,670 @@
* config/sparc/sparc.c (sparc_override_options): Allow block * config/sparc/sparc.c (sparc_override_options): Allow block
profiling with -m32. profiling with -m32.
Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
* gcc-2.95.3 Released.
2001-03-12 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.md (movsi_h8300hs): Split the 2nd alternative
into two parts.
2001-03-12 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* final.c (alter_subreg): Use plus_constant_for_output to match
what offsettable_address_p does.
2001-02-19 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
Back out sjlj eh fixes.
* varasm.c (force_const_mem): Revert previous change.
* except.c (receive_exception_label, start_dynamic_handler):
Likewise.
* expr.c (expand_builtin_setjmp, expand_builtin_setjmp_setup,
expand_builtin_setjmp_receiver, expand_builtin): Likewise.
* expr.h (expand_builtin_setjmp, expand_builtin_setjmp_receiver):
Likewise.
2001-01-25 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* varasm.c (force_const_mem): When putting a LABEL_REF into the
constant pool, also put it on forced_labels list so that it won't
be deleted.
2000-05-25 Alexandre Oliva <aoliva@cygnus.com>
* emit-rtl.c (reset_used_decls): New function.
(unshare_all_rtl_again): Call it.
2000-05-24 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* emit-rtl.c (unshare_all_decls): New function.
(unshare_all_rtl): Call it.
2000-05-20 Alexandre Oliva <aoliva@cygnus.com>
* emit-rtl.c (unshare_all_rtl): Store the copied rtx.
2000-04-15 Richard Earnshaw (rearnsah@arm.com)
* emit-rtl.c (unshare_all_rtl_again): Unmark everything, then
call unshare_all_rtl.
2000-01-27 Geoffrey Keating <geoffk@cygnus.com>
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.
* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.
* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.
2001-01-12 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* expr.c (expand_builtin_setjmp_receiver): Emit a scheduling barrier
as last insn.
2001-01-11 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
2001-01-09 Mark Mitchell <mark@codesourcery.com>
Remove support for using UWIN as a host machine.
* configure.in: Issue an error message.
* configure: Regenerated.
* config.gcc: Remove xm_* UWIN configury.
* config/i386/xm-uwin.h: Remove.
* config/mips/vxworks.h: Don't terminate comment before its end.
* invoke.texi: Update -fvtable-thunks documentation.
* loop.c (scan_loop): Disable copy propagation if we find a REG_LABEL
note.
Revert this patch:
2000-12-18 David Edelsohn <edelsohn@gnu.org>
* rs6000.c (and64_operand): Use logical_u_operand.
Mon Oct 4 16:56:11 1999 Richard Henderson <rth@cygnus.com>
* tree.c (build1): Set TREE_SIDE_EFFECTS for expressions that
always have side-effects.
Mon Oct 4 02:12:41 1999 Mark Mitchell <mark@codesourcery.com>
* tree.c (make_node): Set TREE_SIDE_EFFECTS for expressions that
always have side-effects.
2001-01-01 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* loop.c (instrument_loop_bct): Set JUMP_LABEL on new jump.
2000-12-27 Geoffrey Keating <geoffk@redhat.com>
* config/rs6000/rs6000.md (define_attr "length"): Correct
calculation.
2001-01-01 Philipp Thomas <pthomas@suse.de>
* configure.in: Make the help for --enable-nls make it
clear that this is an experimental feature.
* configure: Regenerate.
* ABOUT-GCC-NLS: Explain why NLS support is buggy.
2000-12-29 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* combine.c (cant_combine_insn_p): Only restrict hard register
combinations for SMALL_REGISTER_CLASSES machines.
* config/sparc/sparc.c (pic_address_needs_scratch): LABEL_REFs are
not valid pic operands.
2000-12-26 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.c (get_shift_alg): Fix a typo in the
assembly code for 12-bit ASHIFTRT in HImode.
2000-07-17 Kazu Hirata <kazu@hxi.com>
* h8300.md: Fix the format of mac.
(movsi_h8300hs): Output a tab after stmac instead of a space.
2000-10-07 Will Cohen <wcohen@redhat.com>, Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.md: Remove the memory alternative and correct
the insn lengths in the templates for sign extention and zero
extention.
2000-12-23 Philip Blundell <philb@gnu.org>
* config/arm/linux-elf.h (CPP_PREDEFINES): Don't define `arm' or
`arm_elf'; do define `__arm__'.
2000-08-22 Richard Henderson <rth@cygnus.com>
* alias.c (init_alias_analysis): Do not register
struct_value_incoming_rtx or static_chain_rtx as pointing
to stack memory.
Tue Dec 5 20:09:14 2000 Jeffrey A Law (law@cygnus.com)
* builtins.c (expand_builtin_setjmp_setup): Set
current_function_has_nonlocal_label.
2000-12-03 Richard Henderson <rth@redhat.com>
* builtins.c (expand_builtin_setjmp_setup): New.
(expand_builtin_setjmp_receiver): New.
(expand_builtin_setjmp): Split out _setup and _receiver functions.
Move argument parsing in from ...
(expand_builtin): ... here.
* except.c (receive_exception_label): Branch around receiver
unless new-style exceptions. Call expand_builtin_setjmp_receiver.
(start_dynamic_handler): Call expand_builtin_setjmp_setup.
* expr.h: Update builtin setjmp decls.
2000-12-22 Bernd Schmidt <bernds@redhat.co.uk>
* calls.c (emit_call_1): Fall back to call_pop/call_value_pop if no
non-popping calls are available.
* flow.c (propagate_block): Use flow_delete_insn instead of
NOTEifying a dead ADDR_VEC.
Fri Sep 10 11:43:07 1999 Philip Blundell <pb@futuretv.com>
* configure.in, config/arm/linux-oldld.h,
config/arm/linux-elf26.h, config/arm/linux-elf.h: Backport latest
ARM GNU/Linux config from mainline.
* configure: Regenerate.
2000-02-08 Geoff Keating <geoffk@cygnus.com>
* dwarf2.h (DW_CFA_GNU_negative_offset_extended): New constant.
* dwarf2out.c (dwarf_cfi_name): Print name of new constant.
(reg_save): Use DW_CFA_GNU_negative_offset_extended when needed.
(output_cfi): Handle output of DW_CFA_GNU_negative_offset_extended.
* frame.c (execute_cfa_insn): Handle
DW_CFA_GNU_negative_offset_extended.
2000-03-06 Mark Mitchell <mark@codesourcery.com>
* function.c (free_temps_for_rtl_expr): Don't free slots
that have been pushed into a higher level.
1999-12-16 David S. Miller <davem@redhat.com>
* expr.c (emit_move_insn_1): Only emit clobbers if one of
the outputs is a SUBREG.
Wed Sep 22 17:35:55 1999 Michael Meissner <meissner@cygnus.com>
* expr.c (emit_move_insn_1): If we are copying a complex that fits
in one word or less (complex char, complex short, or on 64 bit
systems complex float) to/from a hard register, copy it through
memory instead of dying in gen_{real,imag}part. If we have a
short complex type, prevent inlining since it allocates stack
memory.
Fri Dec 15 15:32:16 MET 2000 Jan Hubicka <jh@suse.cz>
* combine.c (cant_combine_insn_p): Get around SUBREGs when determining
hardreg<->reg moves.
2000-12-01 Bernd Schmidt <bernds@redhat.co.uk>
* combine.c (cant_combine_insn_p): Only disallow insns involving
hard regs if they are reg-reg moves.
2000-11-24 Bernd Schmidt <bernds@redhat.co.uk>
* combine.c (cant_combine_insn_p): New function.
(try_combine): Use it.
2000-12-20 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
* reload1.c (free_for_value_p): Fix error in last change.
2000-03-22 Richard Henderson <rth@cygnus.com>
* stmt.c (expand_asm_operands): Don't promote the temporary.
Sun Sep 19 09:03:40 1999 Mark Mitchell <mark@codesourcery.com>
* rtl.h (insns_safe_to_move_p): New function.
* loop.c (find_and_verify_loops): Use it.
* rtlanal.c (insns_safe_to_move_p): Define it.
Thu Nov 2 19:20:12 2000 J"orn Rennecke <amylaar@redhat.com>
* reload.c (find_equiv_reg): Test all hard registers for membership
in the requested class.
Sun Apr 23 16:24:35 2000 Denis Chertykov <denisc@overta.ru>
* reload.c (find_equiv_reg): Checks all valueno regs
as a reload_reg_p regs.
Fri Apr 21 14:58:29 2000 Denis Chertykov <denisc@overta.ru>
* reload.c (find_equiv_reg): Checks all valueno and regno regs
as a call-clobbered regs.
2000-12-18 Bernd Schmidt <bernds@redhat.co.uk>
2000-09-15 Bernd Schmidt <bernds@redhat.co.uk>
* optabs.c (emit_libcall_block): If target is a user variable,
copy to a temporary first.
2000-04-28 Kazu Hirata <kazu@hxi.com>
* h8300.c (function_epilogue): Clean up flags when the last insn
in a function is a barrier.
Mon Aug 30 01:02:09 1999 Jeffrey A Law (law@cygnus.com)
* emit-rtl.c (copy_rtx_if_shared): A MEM which references
virtual_stack_vars_rtx or virtual_incoming_args_rtx can not
be shared.
2000-03-24 Geoff Keating <geoffk@cygnus.com>
* flow.c (propagate_block): When we delete an ADDR_VEC,
also delete the BARRIER following it if there is one.
Wed Oct 27 14:10:27 1999 Geoffrey Keating <geoffk@cygnus.com>
* flow.c (propagate_block): When the last reference to a label
before an ADDR_VEC is deleted because the reference is a dead
store, delete the ADDR_VEC.
2000-03-19 Richard Henderson <rth@cygnus.com>
* flow.c (delete_block): Delete the addr_vec along with the block.
(flow_delete_insn): Decrement LABEL_NUSES when deleting insns that
reference labels.
2000-12-02 Bernd Schmidt <bernds@redhat.co.uk>
* reload1.c (free_for_value_p): New function, frontend to
reload_reg_free_for_value_p. All callers of the latter now call
this function with an additional mode argument.
2000-11-10 Bernd Schmidt <bernds@redhat.co.uk>
(regno_clobbered_p): New arg SETS. Examine SETs if it's nonzero. All
callers changed.
* reload1.c (choose_reload_regs): Registers set in the insn can't be
used for RELOAD_OTHER reloads.
2000-10-28 Bernd Schmidt <bernds@redhat.co.uk>
* reload1.c (choose_reload_regs): Never set reload_override_in for an
optional reload.
2000-09-07 Bernd Schmidt <bernds@redhat.co.uk>
* reload.c (regno_clobbered_p): Accept new arg, MODE, and use it
to handle multiword modes correctly. All callers and the declaration
changed.
2000-12-18 David Edelsohn <edelsohn@gnu.org>
* rs6000.c (and64_operand): Use logical_u_operand.
(first_reg_to_save): Don't save fixed or call-used registers
except PIC_OFFSET_TABLE_REGNUM when -fpic even though it is fixed.
* rs6000.md (anddi3): Prefer rldic? over andis instruction.
2000-12-18 Zack Weinberg <zackw@Stanford.EDU>:
* Makefile.in: Rename cpp to cpp0, tradcpp to tradcpp0, and
xcpp to cpp throughout.
(native): Remove unnecessary dependency on cpp.
* gcc.c (C specs): Call cpp0 to do preprocessing, not cpp.
* ch/lang-specs.h, cp/lang-specs.h, f/lang-specs.h,
objc/lang-specs.h: Call cpp0 to do preprocessing, not cpp.
2000-12-18 Christian Groessler <cpg@aladdin.de>
* toplev.c (check_lang_option): Use NUM_ELEM only on arrays, not on
pointers.
2000-12-18 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* linux.h (DEFAULT_VTABLE_THUNKS): Switch back to version 1.
* alpha/linux-elf.h (DEFAULT_VTABLE_THUNKS): Likewise.
* arm/linux-elf (DEFAULT_VTABLE_THUNKS): Likewise.
* i386/freebsd-elf.h (DEFAULT_VTABLE_THUNKS): Likewise.
* rs6000/linux.h (DEFAULT_VTABLE_THUNKS): Likewise.
* sparc/linux.h (DEFAULT_VTABLE_THUNKS): Likewise.
2000-12-05 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
2000-07-03 Nick Clifton <nickc@cygnus.com>
* config/arm/arm.md: Fix post increment and pre increment
peepholes so that they do not generate UNPREDICATBLE opcodes.
(ie ones where the increment clobbers the source/destination).
Mon Oct 25 00:42:35 1999 Jeffrey A Law (law@cygnus.com)
* arm.c (arm_override_options): Correct initialization of
arm_fast_multiply, arm_arch4, arm_arch5, arm_ld_sched,
arm_is_strong, and arm_is_6_or_7.
Thu Jul 29 19:01:58 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* arm.h (Hint): Delete macro.
Substitute HOST_WIDE_INT for Hint in some prototypes.
* arm.c: Substitute HOST_WIDE_INT for Hint in one prototype.
2000-11-30 Bernd Schmidt <bernds@redhat.co.uk>
* version.c: Bump.
Based on a patch from Geoff Keating <geoffk@redhat.com>:
* loop.c (basic_induction_var): If a REG is set from something
that is not a biv, then the REG is not a biv. Even if it is
earlier set from something that is a biv.
2000-09-01 Jim Wilson <wilson@cygnus.com>
* loop.c (check_final_value): Check for biv use before checking for
giv use. Check for both biv and giv uses. Always set last_giv_use
if there is a giv use.
2000-09-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* loop.c (check_final_value): A GIV is not replaceable if used
before set.
Sun Oct 10 13:28:48 1999 Bernd Schmidt <bernds@redhat.co.uk>
* loop.c (find_and_verify_loops): When looking for a BARRIER, don't
use one before a jump table.
Fri Jul 9 10:48:28 1999 Bernd Schmidt <bernds@redhat.co.uk>
* loop.c (check_dbra_loop): When reversing a loop, delete all
REG_EQUAL notes referencing the reversed biv except those which are
for a giv based on it.
2000-11-24 Bernd Schmidt <bernds@redhat.co.uk>
* reload1.c (conflicts_with_override): New function.
(emit_input_reload_insns): Use it to tighten test for validity
of substituting into output of previous insn.
Wed Oct 27 03:09:23 1999 J"orn Rennecke <amylaar@redhat.co.uk>
* reload.h (earlyclobber_operand_p): Declare.
* reload.c (earlyclobber_operand_p): Don't declare. No longer static.
* reload1.c (reload_reg_free_for_value_p): RELOAD_OTHER reloads with
an earlyclobbered output conflict with RELOAD_INPUT reloads - handle
case where the RELOAD_OTHER reload is new. Use
earlyclobber_operand_p.
2000-01-12 Bernd Schmidt <bernds@redhat.co.uk>
* reload1.c (reload_reg_unavailable): New static variable.
(reload_reg_free_p): Test it.
(reload_reg_free_for_value_p): Test it instead of reload_reg_used.
(choose_reload_regs_init): Compute it.
Thu Jul 6 18:30:36 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* reload.c (push_reload): When seeing if can reuse a register,
check extra registers against widest of INMODE and OUTMODE.
1999-11-29 Bernd Schmidt <bernds@redhat.co.uk>
* reload.c (push_reload): When looking for a register to put into
reg_rtx, make sure all hard regs in a multi-reg register are in the
right class and nonfixed.
1999-11-29 Joern Rennecke <amylaar@redhat.co.uk>
* reload1.c (reloads_conflict): Reverse test comparing operand
numbers when testing for conflict between output/outaddr reloads.
2000-07-12 Richard Henderson <rth@redhat.com>
* reload.c (push_secondary_reload): Make sure to add the new
reload at the end, after acquiring secondary memory.
2000-09-14 Alexandre Oliva <aoliva@redhat.com>, Bernd Schmidt <bernds@redhat.co.uk>
* reload.c (find_reloads_address_1): Generate reloads for auto_inc
pseudos that refer to the original pseudos, not only to their
equivalent memory locations.
2000-09-18 Bernd Schmidt <bernds@redhat.co.uk>
* reload1.c (forget_old_reloads_1): If a hard reg is stored, clear
its entry in spill_reg_store.
Tue Oct 26 00:41:54 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* reload1.c (reload_reg_free_for_value_p): Show
RELOAD_FOR_OTHER_ADDRESS reloads can conflict with RELOAD_OTHER
reloads.
2000-02-26 Geoff Keating <geoffk@cygnus.com>
* reload1.c (do_output_reload): Check reg_reloaded_valid before
looking at reg_reloaded_contents.
Thu Apr 13 19:39:56 2000 Clinton Popetz <cpopetz@cygnus.com>
* emit-rtl.c (try_split): Avoid infinite loop if the split
results in a sequence that contains the original insn.
1999-12-14 Bernd Schmidt <bernds@cygnus.co.uk>
* combine.c (combine_simplify_rtx): Don't make shared rtl.
(simplify_logical): Likewise.
Sat May 20 07:27:35 2000 Alexandre Oliva <aoliva@cygnus.com>
* fold-const.c (make_range): Handle degenerated intervals.
Fixes c-torture/execute/991221-1.c
2000-07-15 Michael Meissner <meissner@redhat.com>
* fold-const.c (fold): When optimizing FOO++ == CONST into ++FOO
== CONST + INCREMENT, don't overwrite the tree node for FOO++,
create a new node instead.
2000-01-01 Bernd Schmidt <bernds@cygnus.co.uk>
* expmed.c (emit_store_flag): Prevent losing a pending stack
adjust the same way we prevent losing queued increments.
2000-10-27 Bernd Schmidt <bernds@redhat.co.uk>
* expr.c (expand_expr, case INDIRECT_REF): If the address is a
PLUS, that does not prove the object is in a structure.
2000-08-25 David Edelsohn <edelsohn@gnu.org>
* collect2.c (use_import_list): Always return 0 (disable).
2000-07-07 Manfred Hollstein <manfredh@redhat.com>
* i386.md (exception_receiver): Add missing parameter in
call to load_pic_register.
Fri May 26 10:30:02 2000 Richard Earnshaw (rearnsha@arm.com)
* arm.md (negdi2): Add clobber of condition code register.
Wed May 24 00:25:45 2000 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
2000-05-22 Richard Henderson <rth@cygnus.com>
* function.c (thread_prologue_and_epilogue_insns): Make sure
existing line number notes appear after the prologue.
2000-05-16 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysv4.h (CPP_OS_LINUX_SPEC): Define __unix and __linux according
to given options.
2000-05-14 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* rs6000/rs6000.md (nonlocal_goto_receiver): Add length attribute.
Wed Apr 12 00:42:19 2000 Jeffrey A Law (law@cygnus.com)
2000-02-19 Richard Henderson <rth@cygnus.com>
* c-typeck.c (add_pending_init): Don't abort for multiple
fields at the same offset.
(pending_init_member): Test the correct member.
Wed Apr 12 00:44:31 2000 Jeffrey A Law (law@cygnus.com)
* config/i386/freebsd-elf.h (DEFAULT_VTABLE_THUNKS): Changed to 2.
Tue Nov 9 17:14:40 1999 H.J. Lu <hjl@gnu.org>
* invoke.texi (-fvtable-thunks): Document that Linux/GNU uses
version 2 as default.
Tue Nov 9 10:16:55 1999 H.J. Lu <hjl@gnu.org>
* alpha/linux-elf.h (DEFAULT_VTABLE_THUNKS): Changed to 2.
* arm/linux-elf.h: Likewise.
* rs6000/linux.h: Likewise.
* sparc/linux.h: Likewise.
Mon Nov 8 14:41:34 1999 H.J. Lu <hjl@gnu.org>
* config/linux.h (DEFAULT_VTABLE_THUNKS): Changed to 2.
Sun May 2 08:49:27 1999 Martin von Löwis <loewis@informatik.hu-berlin.de>
* invoke.texi (-fvtable-thunks): Document numeric argument.
2000-04-11 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* config/elfos.h (SELECT_SECTION): Decide whether to use a data or
const section to output a CONSTRUCTOR based on the same conditions
used for VAR_DECLs.
Mon Apr 3 02:31:32 2000 Jeffrey A Law (law@cygnus.com)
2000-01-20 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* unroll.c (loop_iterations): Don't abort if REG_USERVAR_P set
on iteration_var.
Wed Mar 22 13:11:54 2000 David Edelsohn <edelsohn@gnu.org>
* rs6000.c (reg_or_u_cint_operand): New function.
(logical_operand): Handle 64-bit hosts.
(logical_u_operand): New function.
(non_logical_cint_operand): Handle 64-bit hosts.
(non_logical_u_cint_operand): New function.
(expand_block_move): Allow 8 DImode loads for PowerPC64.
* rs6000.h (PREDICATE_CODES): Define new functions.
* rs6000.md (iordi3, xordi3): Constant int must be unsigned 32-bits.
(movdi_64): Bracket code intended for 64-bit hosts. Create
CONST_DOUBLE for 32-bit values.
* glimits.h (__LONG_MAX__): Recognize 64-bit AIX too.
Wed Mar 22 13:11:54 2000 Gabriel Paubert <paubert@iram.es>
* rs6000.md: Correct instructions length attributes and
constraints on unsigned compare instructions.
(*ne0): Disable for PowerPC64.
Tue Mar 7 21:41:17 2000 Jeffrey A Law (law@cygnus.com)
* cccp.c (handle_directive): Initialize backslash_newlines_p.
Wed Jan 19 20:39:17 2000 Jim Wilson <wilson@cygnus.com>
* fixinc/inclhack.tpl: Test for directory before trying to cd into it.
* fixinc/fixincl.sh, fixinc/inclhack.sh: Regenerate.
Tue Oct 12 09:45:19 1999 Jonathan Larmour <jlarmour@cygnus.co.uk>
* config/rs6000/eabi-ctors.c (__do_global_ctors): Run through
__CTOR_LIST__ in opposite order, which is the correct order for sorted
constructors.
(__do_global_dtors): similarly for __DTOR_LIST__.
2000-01-05 Bernd Schmidt <bernds@cygnus.co.uk>
* reload1.c (choose_reload_regs): When disabling a reload, also
set reload_spill_index to -1.
Thu Nov 4 15:52:35 1999 Andrew Haley <aph@cygnus.com>
* reload1.c (reload_reg_free_for_value_p): Don't use a register
that is in reload_reg_used.
2000-01-18 Clinton Popetz <cpopetz@cygnus.com>
* loop.c (check_dbra_loop): When checking a loop for
reversability, check the source of any stores to ensure they
don't depend on an initial value.
Sat Jan 8 12:12:46 2000 Nick Clifton <nickc@cygnus.com>
* config/v850/v850.c (expand_epilogue): Interrupt functions no
longer allocate extra stack for function calls.
Fri Feb 18 13:32:32 2000 Martin von Loewis <loewis@informatik.hu-berlin.de>
* gcc.texi (Bug Reporting): Refer to bugs.html.
(Bug Lists): Likewise.
* system.h (GCCBUGURL): New preprocessor define.
(abort): Use it.
* gcc.c (main): Likewise.
Thu Feb 3 10:53:45 2000 Richard Henderson <rth@cygnus.com>
Wed Nov 3 10:10:58 1999 Richard Henderson <rth@cygnus.com>
* c-decl.c (duplicate_decls): Copy DECL_MODE too.
Thu Jan 20 10:02:07 2000 Richard Henderson <rth@cygnus.com>
2000-01-03 Anthony Green <green@cygnus.com>
* config/i386/i386.md (builtin_setjmp_receiver): New pattern.
Restore the pic register if required.
Fri Jan 7 14:40:05 2000 Richard Henderson <rth@cygnus.com>
Thu Oct 28 18:06:50 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stmt.c (expand_value_return): Correctly convert VAL when promoting
function return.
Tue Jan 4 02:22:27 2000 Jeffrey A Law (law@cygnus.com)
Mon Oct 18 18:50:51 1999 Andreas Schwab <schwab@suse.de>
* config/m68k/m68k.h (INITIAL_FRAME_POINTER_OFFSET): Add one word
if the pic register is used.
Sat Sep 25 13:11:07 1999 Jeffrey A Law (law@cygnus.com)
* cse.c: Update comments.
(cse_insn): When converting a conditional/computed jump into
an unconditional jump, always make sure a BARRIER immediately
follows the converted jump. Do not delete unreachable code.
(cse_basic_block): Do not delete unreachable code.
* toplev.c (rest_of_compilation): Move call to
delete_trivially_dead_insns after the conditional call to
jump_optimize.
Wed Dec 29 22:47:43 1999 Jeffrey A Law (law@cygnus.com)
1999-12-12 Stephen L Moshier <moshier@mediaone.net>
* loop.c (load_mems): Don't hoist written floating point mem
if -ffloat-store.
* cppinit.c (is_idchar): Only use special initialization for
gcc-2.8 and later versions of the compiler.
Wed Oct 27 01:42:26 1999 Scott Christley <scottc@net-community.com>
* sparc.md (call): Don't bound structure return size to 0xfff.
Mon Dec 27 07:32:59 1999 Jeffrey A Law (law@cygnus.com)
Fri Sep 3 10:16:37 HST 1999 Glen Nakamura <glen.nakamura@usa.net>
* cccp.c (rescan): Fixed obp pointer handling around call to
check_expand subroutine.
Thu Sep 16 00:46:35 1999 Geoff Keating <geoffk@cygnus.com>
* loop.c (basic_induction_var): A non-integer variable which is
being set by a paradoxical subreg is probably not a biv.
1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>
* loop.c (check_dbra_loop): Check bl->biv->add_val is a
CONST_INT before using its INTVAL.
Tue Nov 2 15:27:31 1999 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* configure.in (m68k-hp-hpux*, xm_alloca.h): The underscore should
have been an hyphen, fixed.
* configure: Rebuilt.
Thu Dec 23 11:59:56 1999 Jeffrey A Law (law@cygnus.com)
1999-12-23 Martin v. Löwis <loewis@informatik.hu-berlin.de>
* fold-const.c (operand_equal_p): Use memcmp to compare string
constants.
Suggested by D. J. Bernstein
Thu Dec 16 02:26:11 1999 Jeffrey A Law (law@cygnus.com)
* h8300.md (HImode preinc peephole): Fix typo.
1999-12-14 Bernd Schmidt <bernds@cygnus.co.uk>
* loop.c (check_dbra_loop): Can't reverse a biv that has
maybe_multiple set.
1999-12-07 Martin v. Löwis <loewis@informatik.hu-berlin.de>
* invoke.texi (C Dialect Options): Remove -flang-c9x, add -std
documentation.
Sun Oct 31 22:32:17 1999 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* config/i386/sol2gas.h: I had installed the wrong version of Sept
22's patch in the release branch. Fixed.
* configure.in: Likewise.
* configure: Rebuilt.
Reported by Jason Beardsley <jbeardsley@origin.ea.com>
Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
* gcc-2.95.2 Released. * gcc-2.95.2 Released.

View File

@ -1,5 +1,6 @@
/* Process declarations and variables for C compiler. /* Process declarations and variables for C compiler.
Copyright (C) 1988, 92-98, 1999 Free Software Foundation, Inc. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
@ -1955,6 +1956,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
{ {
/* Since the type is OLDDECL's, make OLDDECL's size go with. */ /* Since the type is OLDDECL's, make OLDDECL's size go with. */
DECL_SIZE (newdecl) = DECL_SIZE (olddecl); DECL_SIZE (newdecl) = DECL_SIZE (olddecl);
DECL_MODE (newdecl) = DECL_MODE (olddecl);
if (TREE_CODE (olddecl) != FUNCTION_DECL) if (TREE_CODE (olddecl) != FUNCTION_DECL)
if (DECL_ALIGN (olddecl) > DECL_ALIGN (newdecl)) if (DECL_ALIGN (olddecl) > DECL_ALIGN (newdecl))
DECL_ALIGN (newdecl) = DECL_ALIGN (olddecl); DECL_ALIGN (newdecl) = DECL_ALIGN (olddecl);

View File

@ -1,5 +1,6 @@
/* Convert function calls to rtl insns, for GNU C compiler. /* Convert function calls to rtl insns, for GNU C compiler.
Copyright (C) 1989, 92-97, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
@ -408,13 +409,12 @@ emit_call_1 (funexp, fndecl, funtype, stack_size, rounded_stack_size,
/* If the target has "call" or "call_value" insns, then prefer them /* If the target has "call" or "call_value" insns, then prefer them
if no arguments are actually popped. If the target does not have if no arguments are actually popped. If the target does not have
"call" or "call_value" insns, then we must use the popping versions "call" or "call_value" insns, then we must use the popping versions
eve n if the call has no arguments to pop. */ even if the call has no arguments to pop. */
if (HAVE_call_pop && HAVE_call_value_pop
#if defined (HAVE_call) && defined (HAVE_call_value) #if defined (HAVE_call) && defined (HAVE_call_value)
if (HAVE_call && HAVE_call_value && HAVE_call_pop && HAVE_call_value_pop && (n_popped > 0 || ! HAVE_call || ! HAVE_call_value)
&& n_popped > 0)
#else
if (HAVE_call_pop && HAVE_call_value_pop)
#endif #endif
)
{ {
rtx n_pop = GEN_INT (n_popped); rtx n_pop = GEN_INT (n_popped);
rtx pat; rtx pat;

View File

@ -1,6 +1,7 @@
/* Collect static initialization info into data structures that can be /* Collect static initialization info into data structures that can be
traversed by C++ initialization and finalization routines. traversed by C++ initialization and finalization routines.
Copyright (C) 1992, 93-98, 1999 Free Software Foundation, Inc. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
Contributed by Chris Smith (csmith@convex.com). Contributed by Chris Smith (csmith@convex.com).
Heavily modified by Michael Meissner (meissner@cygnus.com), Heavily modified by Michael Meissner (meissner@cygnus.com),
Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com). Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
@ -3044,21 +3045,11 @@ scan_prog_file (prog_name, which_pass)
#ifdef COLLECT_EXPORT_LIST #ifdef COLLECT_EXPORT_LIST
/* This new function is used to decide whether we should /* Never generate import list (gcc-2.95 branch). */
generate import list for an object or to use it directly. */
static int static int
use_import_list (prog_name) use_import_list (prog_name)
char *prog_name; char *prog_name;
{ {
char *p;
/* If we do not build a shared object then import list should not be used. */
if (! shared_obj) return 0;
/* Currently we check only for libgcc, but this can be changed in future. */
p = strstr (prog_name, "libgcc.a");
if (p != 0 && (strlen (p) == sizeof ("libgcc.a") - 1))
return 1;
return 0; return 0;
} }

View File

@ -1,6 +1,6 @@
/* elfos.h -- operating system specific defines to be used when /* elfos.h -- operating system specific defines to be used when
targeting GCC for some generic ELF system targeting GCC for some generic ELF system
Copyright (C) 1991, 1994, 1995, 1999 Free Software Foundation, Inc. Copyright (C) 1991, 1994, 1995, 1999, 2000 Free Software Foundation, Inc.
Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com). Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
This file is part of GNU CC. This file is part of GNU CC.
@ -431,7 +431,8 @@ do { \
else \ else \
data_section (); \ data_section (); \
} \ } \
else if (TREE_CODE (DECL) == VAR_DECL) \ else if (TREE_CODE (DECL) == VAR_DECL \
|| TREE_CODE (DECL) == CONSTRUCTOR) \
{ \ { \
if ((flag_pic && RELOC) \ if ((flag_pic && RELOC) \
|| !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \ || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \

View File

@ -1,5 +1,6 @@
/* Subroutines for insn-output.c for Sun SPARC. /* Subroutines for insn-output.c for Sun SPARC.
Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Contributed by Michael Tiemann (tiemann@cygnus.com)
64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
at Cygnus Support. at Cygnus Support.
@ -2434,6 +2435,9 @@ int
pic_address_needs_scratch (x) pic_address_needs_scratch (x)
rtx x; rtx x;
{ {
if (GET_CODE (x) == LABEL_REF)
return 1;
/* An address which is a symbolic plus a non SMALL_INT needs a temp reg. */ /* An address which is a symbolic plus a non SMALL_INT needs a temp reg. */
if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS
&& GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF

View File

@ -1,5 +1,6 @@
;;- Machine description for SPARC chip for GNU C compiler ;;- Machine description for SPARC chip for GNU C compiler
;; Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc. ;; Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
;; 1999 Free Software Foundation, Inc.
;; Contributed by Michael Tiemann (tiemann@cygnus.com) ;; Contributed by Michael Tiemann (tiemann@cygnus.com)
;; 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, ;; 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
;; at Cygnus Support. ;; at Cygnus Support.
@ -7480,7 +7481,7 @@
gen_rtvec (3, gen_rtvec (3,
gen_rtx_SET (VOIDmode, pc_rtx, gen_rtx_SET (VOIDmode, pc_rtx,
XEXP (operands[0], 0)), XEXP (operands[0], 0)),
GEN_INT (INTVAL (operands[3]) & 0xfff), operands[3],
gen_rtx_CLOBBER (VOIDmode, gen_rtx_CLOBBER (VOIDmode,
gen_rtx_REG (Pmode, 15))))); gen_rtx_REG (Pmode, 15)))));
else else
@ -7512,7 +7513,7 @@
emit_call_insn emit_call_insn
(gen_rtx_PARALLEL (VOIDmode, (gen_rtx_PARALLEL (VOIDmode,
gen_rtvec (3, gen_rtx_CALL (VOIDmode, fn_rtx, nregs_rtx), gen_rtvec (3, gen_rtx_CALL (VOIDmode, fn_rtx, nregs_rtx),
GEN_INT (INTVAL (operands[3]) & 0xfff), operands[3],
gen_rtx_CLOBBER (VOIDmode, gen_rtx_CLOBBER (VOIDmode,
gen_rtx_REG (Pmode, 15))))); gen_rtx_REG (Pmode, 15)))));
else else

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
# configure.in for GNU CC # configure.in for GNU CC
# Process this file with autoconf to generate a configuration script. # Process this file with autoconf to generate a configuration script.
# Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. # Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
#This file is part of GNU CC. #This file is part of GNU CC.
@ -396,10 +396,9 @@ GCC_FUNC_PRINTF_PTR
case "${host}" in case "${host}" in
*-*-uwin*) *-*-uwin*)
# Under some versions of uwin, vfork is notoriously buggy and the test AC_MSG_ERROR([
# can hang configure; on other versions, vfork exists just as a stub. *** UWIN may not be used as a host platform because
# FIXME: This should be removed once vfork in uwin's runtime is fixed. *** linking with posix.dll is not allowed by the GNU GPL])
ac_cv_func_vfork_works=no
;; ;;
esac esac
AC_FUNC_VFORK AC_FUNC_VFORK
@ -756,15 +755,31 @@ changequote([,])dnl
tmake_file=arm/t-linux tmake_file=arm/t-linux
gnu_ld=yes gnu_ld=yes
;; ;;
arm*-*-linux-gnuoldld*) # ARM GNU/Linux with old ELF linker
xm_file=arm/xm-linux.h
xmake_file=x-linux
tm_file="arm/linux-oldld.h arm/linux-elf.h"
case $machine in
armv2*-*-*)
tm_file="arm/linux-elf26.h $tm_file"
;;
esac
tmake_file="t-linux arm/t-linux"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
gnu_ld=yes
case x${enable_threads} in
x | xyes | xpthreads | xposix)
thread_file='posix'
;;
esac
;;
arm*-*-linux-gnu*) # ARM GNU/Linux with ELF arm*-*-linux-gnu*) # ARM GNU/Linux with ELF
xm_file=arm/xm-linux.h xm_file=arm/xm-linux.h
xmake_file=x-linux xmake_file=x-linux
tm_file="arm/linux-elf.h"
case $machine in case $machine in
armv2*-*-*) armv2*-*-*)
tm_file=arm/linux-elf26.h tm_file="arm/linux-elf26.h $tm_file"
;;
*)
tm_file=arm/linux-elf.h
;; ;;
esac esac
tmake_file="t-linux arm/t-linux" tmake_file="t-linux arm/t-linux"
@ -1407,11 +1422,10 @@ changequote(,)dnl
changequote([,])dnl changequote([,])dnl
xm_file="xm-siglist.h xm-alloca.h ${xm_file}" xm_file="xm-siglist.h xm-alloca.h ${xm_file}"
xm_defines="USG POSIX SMALL_ARG_MAX" xm_defines="USG POSIX SMALL_ARG_MAX"
tm_file=i386/sol2.h
if test x$gas = xyes; then if test x$gas = xyes; then
# Only needed if gas does not support -s # Only needed if gas does not support -s
tm_file=i386/sol2gas.h tm_file="i386/sol2gas.h ${tm_file}"
else
tm_file=i386/sol2.h
fi fi
tmake_file=i386/t-sol2 tmake_file=i386/t-sol2
extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
@ -1557,8 +1571,6 @@ changequote(,)dnl
i[34567]86-*-uwin*) i[34567]86-*-uwin*)
changequote([,])dnl changequote([,])dnl
tm_file=i386/uwin.h tm_file=i386/uwin.h
xm_file="${xm_file} i386/xm-uwin.h"
xm_defines="USG NO_STAB_H NO_SYS_SIGLIST"
tmake_file="i386/t-cygwin i386/t-uwin" tmake_file="i386/t-cygwin i386/t-uwin"
extra_objs=winnt.o extra_objs=winnt.o
xmake_file=i386/x-cygwin xmake_file=i386/x-cygwin
@ -1697,7 +1709,7 @@ changequote([,])dnl
extra_headers=math-68881.h extra_headers=math-68881.h
;; ;;
m68000-hp-hpux*) # HP 9000 series 300 m68000-hp-hpux*) # HP 9000 series 300
xm_file="xm_alloca.h ${xm_file}" xm_file="xm-alloca.h ${xm_file}"
xm_defines="USG NO_SYS_SIGLIST" xm_defines="USG NO_SYS_SIGLIST"
if test x$gas = xyes if test x$gas = xyes
then then
@ -1898,7 +1910,7 @@ changequote([,])dnl
extra_headers=math-68881.h extra_headers=math-68881.h
;; ;;
m68k-hp-hpux7*) # HP 9000 series 300 running HPUX version 7. m68k-hp-hpux7*) # HP 9000 series 300 running HPUX version 7.
xm_file="xm_alloca.h ${xm_file}" xm_file="xm-alloca.h ${xm_file}"
xm_defines="USG NO_SYS_SIGLIST" xm_defines="USG NO_SYS_SIGLIST"
if test x$gas = xyes if test x$gas = xyes
then then
@ -1914,7 +1926,7 @@ changequote([,])dnl
float_format=m68k float_format=m68k
;; ;;
m68k-hp-hpux*) # HP 9000 series 300 m68k-hp-hpux*) # HP 9000 series 300
xm_file="xm_alloca.h ${xm_file}" xm_file="xm-alloca.h ${xm_file}"
xm_defines="USG NO_SYS_SIGLIST" xm_defines="USG NO_SYS_SIGLIST"
if test x$gas = xyes if test x$gas = xyes
then then
@ -3758,7 +3770,8 @@ ALL_LINGUAS="en_UK"
# NLS support is still experimental, so disable it by default for now. # NLS support is still experimental, so disable it by default for now.
AC_ARG_ENABLE(nls, AC_ARG_ENABLE(nls,
[ --enable-nls use Native Language Support (disabled by default)], [ --enable-nls use Native Language Support (disabled by default).
EXPERIMENTAL, see ABOUT-GCC-NLS.],
, enable_nls=no) , enable_nls=no)
AM_GNU_GETTEXT AM_GNU_GETTEXT

View File

@ -1,5 +1,6 @@
/* Emit RTL for the GNU C-Compiler expander. /* Emit RTL for the GNU C-Compiler expander.
Copyright (C) 1987, 88, 92-97, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
@ -248,6 +249,9 @@ extern int emit_lineno;
static rtx make_jump_insn_raw PROTO((rtx)); static rtx make_jump_insn_raw PROTO((rtx));
static rtx make_call_insn_raw PROTO((rtx)); static rtx make_call_insn_raw PROTO((rtx));
static rtx find_line_note PROTO((rtx)); static rtx find_line_note PROTO((rtx));
static void unshare_all_rtl_1 PROTO((rtx));
static void unshare_all_decls PROTO((tree));
static void reset_used_decls PROTO((tree));
rtx rtx
gen_rtx_CONST_INT (mode, arg) gen_rtx_CONST_INT (mode, arg)
@ -1776,23 +1780,29 @@ restore_emit_status (p)
free_insn = 0; free_insn = 0;
} }
/* Go through all the RTL insn bodies and copy any invalid shared structure. /* Go through all the RTL insn bodies and copy any invalid shared
It does not work to do this twice, because the mark bits set here structure. This routine should only be called once. */
are not cleared afterwards. */
void void
unshare_all_rtl (insn) unshare_all_rtl (fndecl, insn)
register rtx insn; tree fndecl;
rtx insn;
{ {
for (; insn; insn = NEXT_INSN (insn)) tree decl;
if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
|| GET_CODE (insn) == CALL_INSN)
{
PATTERN (insn) = copy_rtx_if_shared (PATTERN (insn));
REG_NOTES (insn) = copy_rtx_if_shared (REG_NOTES (insn));
LOG_LINKS (insn) = copy_rtx_if_shared (LOG_LINKS (insn));
}
/* Make sure that virtual stack slots are not shared. */
reset_used_decls (DECL_INITIAL (current_function_decl));
/* Make sure that virtual parameters are not shared. */
for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl))
DECL_RTL (decl) = copy_rtx_if_shared (DECL_RTL (decl));
/* Make sure that virtual stack slots are not shared. */
unshare_all_decls (DECL_INITIAL (fndecl));
/* Unshare just about everything else. */
unshare_all_rtl_1 (insn);
/* Make sure the addresses of stack slots found outside the insn chain /* Make sure the addresses of stack slots found outside the insn chain
(such as, in DECL_RTL of a variable) are not shared (such as, in DECL_RTL of a variable) are not shared
with the insn chain. with the insn chain.
@ -1800,8 +1810,76 @@ unshare_all_rtl (insn)
This special care is necessary when the stack slot MEM does not This special care is necessary when the stack slot MEM does not
actually appear in the insn chain. If it does appear, its address actually appear in the insn chain. If it does appear, its address
is unshared from all else at that point. */ is unshared from all else at that point. */
stack_slot_list = copy_rtx_if_shared (stack_slot_list);
}
copy_rtx_if_shared (stack_slot_list); /* Go through all the RTL insn bodies and copy any invalid shared
structure, again. This is a fairly expensive thing to do so it
should be done sparingly. */
void
unshare_all_rtl_again (insn)
rtx insn;
{
rtx p;
for (p = insn; p; p = NEXT_INSN (p))
if (GET_RTX_CLASS (GET_CODE (p)) == 'i')
{
reset_used_flags (PATTERN (p));
reset_used_flags (REG_NOTES (p));
reset_used_flags (LOG_LINKS (p));
}
unshare_all_rtl_1 (insn);
}
/* Go through all the RTL insn bodies and copy any invalid shared structure.
Assumes the mark bits are cleared at entry. */
static void
unshare_all_rtl_1 (insn)
rtx insn;
{
for (; insn; insn = NEXT_INSN (insn))
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
{
PATTERN (insn) = copy_rtx_if_shared (PATTERN (insn));
REG_NOTES (insn) = copy_rtx_if_shared (REG_NOTES (insn));
LOG_LINKS (insn) = copy_rtx_if_shared (LOG_LINKS (insn));
}
}
/* Go through all virtual stack slots of a function and copy any
shared structure. */
static void
unshare_all_decls (blk)
tree blk;
{
tree t;
/* Copy shared decls. */
for (t = BLOCK_VARS (blk); t; t = TREE_CHAIN (t))
DECL_RTL (t) = copy_rtx_if_shared (DECL_RTL (t));
/* Now process sub-blocks. */
for (t = BLOCK_SUBBLOCKS (blk); t; t = TREE_CHAIN (t))
unshare_all_decls (t);
}
/* Go through all virtual stack slots of a function and mark them as
not shared. */
static void
reset_used_decls (blk)
tree blk;
{
tree t;
/* Mark decls. */
for (t = BLOCK_VARS (blk); t; t = TREE_CHAIN (t))
reset_used_flags (DECL_RTL (t));
/* Now process sub-blocks. */
for (t = BLOCK_SUBBLOCKS (blk); t; t = TREE_CHAIN (t))
reset_used_decls (t);
} }
/* Mark ORIG as in use, and return a copy of it if it was already in use. /* Mark ORIG as in use, and return a copy of it if it was already in use.
@ -1856,25 +1934,17 @@ copy_rtx_if_shared (orig)
return x; return x;
case MEM: case MEM:
/* A MEM is allowed to be shared if its address is constant /* A MEM is allowed to be shared if its address is constant.
or is a constant plus one of the special registers. */
if (CONSTANT_ADDRESS_P (XEXP (x, 0)) We used to allow sharing of MEMs which referenced
|| XEXP (x, 0) == virtual_stack_vars_rtx virtual_stack_vars_rtx or virtual_incoming_args_rtx, but
|| XEXP (x, 0) == virtual_incoming_args_rtx) that can lose. instantiate_virtual_regs will not unshare
the MEMs, and combine may change the structure of the address
because it looks safe and profitable in one context, but
in some other context it creates unrecognizable RTL. */
if (CONSTANT_ADDRESS_P (XEXP (x, 0)))
return x; return x;
if (GET_CODE (XEXP (x, 0)) == PLUS
&& (XEXP (XEXP (x, 0), 0) == virtual_stack_vars_rtx
|| XEXP (XEXP (x, 0), 0) == virtual_incoming_args_rtx)
&& CONSTANT_ADDRESS_P (XEXP (XEXP (x, 0), 1)))
{
/* This MEM can appear in more than one place,
but its address better not be shared with anything else. */
if (! x->used)
XEXP (x, 0) = copy_rtx_if_shared (XEXP (x, 0));
x->used = 1;
return x;
}
break; break;
default: default:
@ -2368,10 +2438,18 @@ try_split (pat, trial, last)
it, in turn, will be split (SFmode on the 29k is an example). */ it, in turn, will be split (SFmode on the 29k is an example). */
if (GET_CODE (seq) == SEQUENCE) if (GET_CODE (seq) == SEQUENCE)
{ {
int i;
/* Avoid infinite loop if any insn of the result matches
the original pattern. */
for (i = 0; i < XVECLEN (seq, 0); i++)
if (GET_CODE (XVECEXP (seq, 0, i)) == INSN
&& rtx_equal_p (PATTERN (XVECEXP (seq, 0, i)), pat))
return trial;
/* If we are splitting a JUMP_INSN, look for the JUMP_INSN in /* If we are splitting a JUMP_INSN, look for the JUMP_INSN in
SEQ and copy our JUMP_LABEL to it. If JUMP_LABEL is non-zero, SEQ and copy our JUMP_LABEL to it. If JUMP_LABEL is non-zero,
increment the usage count so we don't delete the label. */ increment the usage count so we don't delete the label. */
int i;
if (GET_CODE (trial) == JUMP_INSN) if (GET_CODE (trial) == JUMP_INSN)
for (i = XVECLEN (seq, 0) - 1; i >= 0; i--) for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)

View File

@ -1,5 +1,6 @@
/* Output variables, constants and external declarations, for GNU compiler. /* Output variables, constants and external declarations, for GNU compiler.
Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.