aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-02 00:21:09 +0000
committerRichard Henderson <rth@cygnus.com>1999-09-02 00:21:09 +0000
commit4e02fa2a76fc446fa5bb75838b0f758c2ad03faa (patch)
tree6c2f984ba25519a22524201e916e0034a0043d3a
parentb17a3f4d427135d643b2da1ca8c8dbe781543c17 (diff)
Final merge from mainlinenew_ia32_branch
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/new_ia32_branch@29040 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog1470
-rw-r--r--gcc/alias.c2
-rw-r--r--gcc/c-parse.c6
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c7
-rw-r--r--gcc/cp/cp-tree.h9
-rw-r--r--gcc/cp/parse.c341
-rw-r--r--gcc/cp/parse.h170
-rw-r--r--gcc/cse.c8
-rw-r--r--gcc/f/version.c2
-rw-r--r--gcc/java/parse-scan.c6
-rw-r--r--gcc/objc/objc-parse.c6
-rw-r--r--gcc/regmove.c19
-rw-r--r--gcc/reload.c272
-rw-r--r--gcc/reload1.c318
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/lib/c-torture.exp16
-rw-r--r--gcc/version.c2
-rw-r--r--include/ChangeLog8
-rw-r--r--include/obstack.h18
-rw-r--r--libf2c/libF77/Version.c2
-rw-r--r--libf2c/libI77/Version.c2
-rw-r--r--libf2c/libU77/Version.c2
-rw-r--r--libstdc++/ChangeLog4
-rw-r--r--libstdc++/configure.in3
25 files changed, 632 insertions, 2072 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c5fa34ce5ce..b36bfea5f0a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,26 @@
+Wed Sep 1 20:18:06 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * regmove.c (fixup_match_1): Don't move INSN in front of P if
+ it would end up in the shadow of a live flags regsiter.
+
+Wed Sep 1 11:32:00 1999 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * reload1.c: Fix many indentation problems.
+ * reload.c: Likewise.
+
+Tue Aug 31 22:08:03 1999 Marc Espie <espie@cvs.openbsd.org>
+
+ * alias.c (non_local_reference_p): Constify fmt.
+
+Tue Aug 31 23:19:35 1999 Michael Meissner <meissner@cygnus.com>
+
+ * config/i386/xm-cygwin.h (HAVE_DOS_BASED_FILE_SYSTEM): Define.
+
+Tue Aug 31 16:44:52 1999 Jeffrey A Law (law@cygnus.com)
+
+ * cse.c (delete_trivially_dead_insns): Do not delete stores to
+ the internal_arg_pointer.
+
Tue Aug 31 13:35:42 1999 Richard Henderson <rth@cygnus.com>
Merge peephole2 from new_ia32_branch:
@@ -2601,668 +2624,7 @@ Sat Jul 31 11:10:07 1999 Bernd Schmidt <bernds@cygnus.co.uk>
Sat Jul 31 04:10:01 1999 Jeffrey A Law (law@cygnus.com)
- * pa.c (compute_frame_size): Use STARTINg_FRAME_OFFSET instead
- of depending on a magic constant value. Update comments.
- (hppa_expand_prologue): Similarly.
-
- * pa.md (reload_indi, reload_outdi): Allow any register for the
- original reload register.
-
-Fri Jul 30 19:41:35 1999 Jim Wilson <wilson@cygnus.com>
-
- * cccp.c (print_help): Change marcos to macros.
-
-1999-07-30 Richard Henderson <rth@cygnus.com>
-
- * c-typeck.c (initializer_constant_valid_p): Move ...
- * c-common.c (initializer_constant_valid_p): ... here. Use
- FOO_TYPE_P instead of tests against TREE_CODE. Allow subtraction
- of label addresses.
- * c-common.h (initializer_constant_valid_p): Declare.
- * c-tree.h (initializer_constant_valid_p): Remove.
-
-Fri Jul 30 16:33:42 1999 Mathias Froehlich <frohlich@na.uni-tuebingen.de>
-
- * config/i386/sol2-c1.asm: Align the stack.
- * config/i386/sol2-gc1.asm: Likewise.
-
-1999-07-30 Vladimir Makarov <vmakarov@loony.cygnus.com>
-
- * config/sparc/sparc.h (ASM_CPU32_DEFAULT_SPEC): Change -Av8 onto
- -Asparclite for sparc86x.
- (CPP_CPU32_DEFAULT_SPEC, CPP_CPU_SPEC): Remove -D__sparc_v8__ for
- sparc86x.
- (ASM_CPU_SPEC): Use -Asparclite for sparc86x.
-
-Fri Jul 30 14:53:56 1999 Jakub Jelinek <jj@ultra.linux.cz>
-
- * config/sparc/linux64.h (CC1_SPEC): Preserve CPU specified by
- the user if using the non-default arch size in BI_ARCH configuration.
- * config/sparc/sol2-sld-64.h (CC1_SPEC): Ditto.
-
- * config/sparc/sparc.md (cmp_mul_set, cmp_udiv_cc_set):
- Fix patterns so that they actually match.
- (cmp_sdiv_cc_set): Ditto, also don't require g0 to be zero.
- (mulsidi3_sp64, const_mulsidi3_sp64): New patterns.
- (const_mulsidi3_sp32): Renamed from const_mulsidi3, only on
- TARGET_HARD_MUL32.
- (mulsidi3): Reflect this in the expand.
- (smulsi3_highpart): Only on TARGET_ARCH32.
- (umulsidi3_sp64, const_umulsidi3_sp64): New patterns.
- (const_umulsidi3_sp32): Renamed from const_umulsidi3.
- (umulsidi3): Reflect this in the expand.
- (umulsi3_highpart): Only on TARGET_ARCH32.
- (divsi3_sp32): Renamed from divsi3, only on TARGET_ARCH32,
- don't require g0 to be zero.
- (udivsi3_sp32): Renamed from udivsi3, only on TARGET_ARCH32.
- ({,u}divsi3): New expands.
- ({,u}divsi3_sp64): New patterns.
- (after lshrdi3_v8plus): Four new patterns to help combiner
- optimizing nested mixed mode shifts.
-
- * config/sparc/sparc.c (sparc_override_options): Use deprecated
- v8 instructions if optimizing for UltraSPARC I, II, IIi, as it
- speed things up. Don't use them by default on plain v9 in 64bit
- mode, according to what SPAMv9 sais.
-
- * config/sparc/sparc.h: Fix comments, e.g. Linux already preserves
- top 32 bits of %[og][0-7] in signal handlers.
- Also, TARGET_HARD_MUL32 now is only true for TARGET_ARCH32.
-
-Fri Jul 30 03:00:41 1999 Jeffrey A Law (law@cygnus.com)
-
- * pa.md (zvdep_imm32): Renamed from zvdep_imm.
- (ashlsi3): Corresponding changes.
-
- * pa.c (compute_zdepwi_operands): Renamed from compute_zdepi_operands.
-
-Thu Jul 29 18:37:13 1999 Jeffrey A Law (law@cygnus.com)
-
- * pa.h (FIRST_PARM_CALLER_OFFSET): Delete.
-
-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.
-
-Thu Jul 29 09:21:42 1999 Nick Clifton <nickc@cygnus.com>
-
- * builtins.c (expand_builtin_setjmp): Use force_operand to
- make sure that the buffer address is in a suitable form to be
- passed to force_reg.
-
-Wed Jul 28 12:50:48 1999 Geoff Keating <geoffk@cygnus.com>
-
- * config/mips/mips.c: system.h handles MIN and MAX, don't undefine
- them here.
-
-Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
-
- * pa.md (indirect_jump): Remove mode from match_operand. Verify
- proper mode in the condition string.
- (icacheflush, dcacheflush): Remove modes from match_operands.
-
- * pa.c (emit_move_sequence): Always convert scratch_reg to the
- proper mode before using it.
-
- * pa.md (adddi3, subdi3): Turn into a define_expand/define_insn
- pair.
-
- * pa.c (store_reg): Do not call add_high_const generator directly.
- (load_reg, set_reg_plus_d): Likewise.
- * pa.md (add_high_const): No longer a named pattern.
-
- * pa.c (legitimize_address): Consistently use Pmode rather than
- SImode. Do not call gen_pic2_highpart directly anymore.
- * pa.md (pic2_highpart): No longer a named pattern.
- (pic2_lo_sum): Similarly. Reformat to make more readable.
-
- * pa.md (call, call_value): Use "word_mode" instead of "SImode" as
- needed.
-
- * README: Update.
-
-Wed Jul 28 11:28:04 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * builtins.c (expand_builtin): Typo in call to expand_builtin_ffs.
-
-Wed Jul 28 11:23:48 1999 Richard Henderson <rth@cygnus.com>
-
- * pa.c (hppa_builtin_saveregs): Use get_varargs_alias_set
- and tag the spill mems.
- (hppa_va_start): New.
- (hppa_va_arg): New.
- * pa.h (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
-
-Wed Jul 28 11:22:21 1999 Richard Henderson <rth@cygnus.com>
-
- * mn10300.c (mn10300_builtin_saveregs): Use get_varargs_alias_set
- and tag the spill mems.
- (mn10300_va_start): New.
- (mn10300_va_arg): New.
- * mn10300.h (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
-
-Wed Jul 28 11:20:19 1999 Richard Henderson <rth@cygnus.com>
-
- * mn10200.c (mn10200_va_arg): New.
- * mn10200.h (EXPAND_BUILTIN_VA_ARG): New.
-
-Wed Jul 28 11:19:06 1999 Richard Henderson <rth@cygnus.com>
-
- * builtins.c (std_expand_builtin_va_arg): Use int_size_in_bytes
- rather than play with TREE_INT_CST_LOW.
-
-1999-07-27 Philip Blundell <pb@nexus.co.uk>
-
- * config/arm/telf.h: Include dbxelf.h.
- (CPP_PREDEFINES): Only define if not already defined.
- (ASM_IDENTIFY_GCC): Likewise.
- (SUBTARGET_EXTRA_SECTIONS): Likewise.
- (SUBTARGET_EXTRA_SECTION_FUNCTIONS): Likewise.
- * config/arm/thumb.h (LINK_SPEC): Only define if not already
- defined.
- (DBX_DEBUGGING_INFO): Don't define.
- * config/arm/linux-telf.h: New file.
- * config/arm/linux-tgas.h: New file.
- * config/arm/t-thumb-linux: New file.
- * config/arm/uclinux-elf.h: New file.
- * config/arm/uclinux-telf.h: New file.
- * configure.in (arm-*-uclinux, thumb-*-linux-gnu,
- thumb-*-uclinux): New targets.
- * configure: Regenerate.
-
-Tue Jul 27 23:20:21 1999 Jeffrey A Law (law@cygnus.com)
-
- * pa.md (post_store, pre_load): New expanders.
- (post_stwm, pre_ldwm): Renamed to post_stw and pre_ldw respectively.
- (post_ldwm, pre_stwm): Make these unnamed patterns since we never
- need to directly generate RTL for them.
- * pa.c (hppa_expand_prologue, hppa_expand_epilogue): Corresponding
- changes.
-
-Tue Jul 27 16:05:52 1999 David Edelsohn <edelsohn@gnu.org>
-
- * aix43.h (ASM_CPU_SPEC, CPP_CPU_SPEC): Add rs64a and PPC630.
- * rs6000.c (processor_target_table): Add powerpc64, rs64a, and PPC630.
- (rs6000_cpu): Choose between 32-bit and 64-bit default processors.
- (secndary_reload_class): Make TARGET_ELF conditional compile.
- (print_operand_address): Similar.
- (output_toc): Print all values as hex.
- (get_issue_rate): Rearrange and add RS64A and PPC630.
- * rs6000.h (processor_type): Add RS64A and PPC630.
- (PROCESSOR_POWERPC64): New.
- (PROMOTE_MODE): Use word_mode.
- (RTX_COSTS): Add RS64A and PPC630.
- * rs6000.md (scheduling information): Add lmul and ldiv
- representing 64-bit integer multiply and divide. Add rs64a and
- PPC630 information.
- (ashldi3): Add support for "rldic" instruction.
- * sysv4.h (PROCESSOR_DEFAULT): Change to PROCESSOR_750.
-
-Tue Jul 27 15:31:53 1999 Vladimir Makarov <vmakarov@toad.to.cygnus.com>
-
- * config/sparc/sparc.c (sparc_override_options): Enable SPARCLITE
- instead of V8 for sparclite86x in cpu_table.
-
-Tue Jul 27 17:49:42 1999 Bernd Schmidt <bernds@cygnus.co.uk>
-
- * config/arm/coff.h (ASM_FILE_START): If generating SDB output, call
- output_file_directive.
-
-Tue Jul 27 03:15:33 1999 Jason Merrill <jason@yorick.cygnus.com>
-
- * expr.c (expand_expr, case PLUS_EXPR): Get the mode from the
- tree for op1, not the rtl.
-
-Tue Jul 27 00:18:34 1999 Richard Henderson <rth@cygnus.com>
-
- * m88k.c (m88k_builtin_saveregs): Break out the constructor code
- to m88k_va_start, leaving only the register spill.
- (m88k_build_va_list): New.
- (m88k_va_start): New.
- (m88k_va_arg): New.
- * m88k.h (BUILD_VA_LIST_TYPE): New.
- (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
-
-Mon Jul 26 19:07:11 1999 Geoff Keating <geoffk@cygnus.com>
-
- * config/rs6000/rs6000.c (rs6000_expand_builtin_saveregs):
- Rename from expand_builtin_saveregs.
- * config/rs6000/rs6000.h (EXPAND_BUILTIN_SAVEREGS): Change caller.
-
-Mon Jul 26 22:52:47 1999 Richard Henderson <rth@cygnus.com>
-
- * i960.c (i960_setup_incoming_varargs): Use get_varargs_alias_set
- for the register spill block.
- (i960_build_va_list): New.
- (i960_va_start): New.
- (i960_va_arg): New.
- * i960.h (BUILD_VA_LIST_TYPE): New.
- (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
- * i960.md (store_multiple): Use change_address on individul mems.
-
-Mon Jul 26 22:43:12 1999 Richard Henderson <rth@cygnus.com>
-
- * builtins.c (stabilize_va_list): Don't INDIRECT_REF through
- an ARRAY_TYPE.
- (std_expand_builtin_va_start): Back out one word if !stdarg_p.
- (expand_builtin_va_end): Evaluate arg for side effects.
- * c-common.c (c_common_nodes_and_builtins): Construct a
- va_list_arg_type_node to handle array decomposition to pointer.
-
-Mon Jul 26 18:51:34 1999 Richard Henderson <rth@cygnus.com>
-
- * except.c (start_dynamic_cleanup): Use force_operand on the
- buffer's address.
-
-Mon Jul 26 16:43:26 1999 Richard Henderson <rth@cygnus.com>
-
- * c4x.h (EXPAND_BUILTIN_VA_ARG): New.
- * c4x.c (c4x_va_arg): New.
-
-Mon Jul 26 12:30:09 1999 Jason Merrill <jason@yorick.cygnus.com>
-
- * cpplib.c (cpp_get_token): Don't return a CPP_POP if the buffer
- has manual_pop set.
-
-1999-07-26 Nathan Sidwell <nathan@acm.org>
-
- * eh-common.h (__eh_matcher): Prototype correctly.
-
-Mon Jul 26 17:24:51 1999 Philip Blundell <pb@nexus.co.uk>
-
- * config/arm/thumb.h (THUMB_FLAG_SINGLE_PIC_BASE): Define.
- (TARGET_SINGLE_PIC_BASE): Likewise.
- (GOT_PCREL, NEED_GOT_RELOC, NEED_PLT_RELOC): Provide default
- definitions.
- (TARGET_CALLEE_INTERWORKING): Fix typo in comment.
- (TARGET_SWITCHES): Add -m{no-}single-pic-base.
- (TARGET_OPTIONS): Add -mpic-register=N.
- (OUTPUT_INT_ADDR_CONST): New macro.
- (INDEX_REGISTER_RTX_P, PIC_OFFSET_TABLE_REGNUM, FINALIZE_PIC,
- LEGITIMATE_PIC_OPERAND_P): Likewise.
- (LEGITIMIZE_ADDRESS, GOT_IF_LEGITIMATE_ADDRESS): Support PIC.
- (ASM_OUTPUT_INT): Use OUTPUT_INT_ADDR_CONST rather than calling
- output_addr_const directly.
- (PRINT_OPERAND_PUNCT_VALID_P): Accept `|' for compatibility with
- ARM port.
- (thumb_pic_register, thumb_pic_register_string): Declare.
-
- * config/arm/thumb.c (symbol_mentioned_p): New function: Imported
- from arm.c.
- (label_mentioned_p): New function: Imported from arm.c.
- (legitimize_pic_address): New function: Imported from arm.c.
- (is_pic):New function: Imported from arm.c.
- (thumb_finalize_pic):New function: Imported from arm.c.
- (add_constant): Cope with PIC constants.
- (fixit): Cope with PIC constants.
- (output_return): Do not treat the PIC register as live if
- TARGET_SINGLE_PIC_BASE is true.
- (thumb_function_prologue): Do not treat the PIC register as live if
- TARGET_SINGLE_PIC_BASE is true.
- (thumb_expand_prologue): Do not treat the PIC register as live if
- TARGET_SINGLE_PIC_BASE is true.
- (thumb_unexpand_epilogue): Do not treat the PIC register as live if
- TARGET_SINGLE_PIC_BASE is true.
- (thumb_print_operand): Accept '|'.
- (thumb_override_options): Process PIC options.
-
- * config/arm/thumb.md (movsi): Support PIC.
- (call_insn): Change "i" constraint to "X".
- (call_value_insn): Likewise.
- (consttable_4, consttable_8, consttable_end): Set and clear
- "making_const_table" as appropriate.
- (pic_load_addr, pic_add_dot_plus_four): New insns.
-
- * invoke.texi (Thumb Options): Fix spelling. Document new
- options -msingle-pic-base and -mpic-register=.
-
-1999-07-26 Andrew Haley <aph@cygnus.com>
-
- * config/m32r/initfini.c (__init): Use a full word immediate for
- __fini: this allows it to be placed in any memory region.
-
- * config/m32r/t-m32r: Compile crtinit.o and crtfini.o for
- -mmodel=medium. This is OK for all memory models.
-
-Mon Jul 26 11:58:46 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/arm.c: Replace %R%s in asm_fprintf strings with %r.
- * config/arm/arm.h: Replace %R%s in asm_fprintf strings with %r.
-
-Mon Jul 26 10:23:36 1999 Nick Clifton <nickc@cygnus.com>
-
- * final.c (asm_fprintf): Accept ASM_FPRINTF_EXTENSIONS, if
- defined.
-
- * tm.texi: Document ASM_FPRINTF_EXTENSIONS.
-
-Sun Jul 25 23:51:59 1999 Richard Henderson <rth@cygnus.com>
-
- * i860.h (EXPAND_BUILTIN_SAVEREGS): New.
- (BUILD_VA_LIST_TYPE): New.
- (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
- * i860.c (output_delayed_branch): Disable.
- (output_delay_insn): Likewise.
- (i860_saveregs): New.
- (i860_build_va_list): New.
- (i860_va_start): New.
- (i860_va_arg): New.
- * i860.md: Disable all peepholes using output_delayed_branch.
- * i860/sysv4.h (I860_SVR4_VA_LIST): New.
-
-Sun Jul 25 23:44:13 1999 Richard Henderson <rth@cygnus.com>
-
- * clipper.h (EXPAND_BUILTIN_SAVEREGS): Remove argument.
- (BUILD_VA_LIST_TYPE): New.
- (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
- * clipper.c (clipper_builtin_saveregs): Only dump registers.
- Return the address of the save area.
- (clipper_build_va_list): New.
- (clipper_va_start): New.
- (clipper_va_arg): New.
-
-Sun Jul 25 22:56:47 1999 Richard Henderson <rth@cygnus.com>
-
- * arc.h (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
- * arc.c (arc_setup_incoming_varargs): Set alias set of
- varargs save area.
- (arc_va_start): New.
- (arc_va_arg): New.
-
-Sun Jul 25 22:45:55 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha.h (EXPAND_BUILTIN_SAVEREGS): Delete.
- (BUILD_VA_LIST_TYPE): New.
- (EXPAND_BUILTIN_VA_START): New.
- (EXPAND_BUILTIN_VA_ARG): New.
- * alpha.c (alpha_builtin_saveregs): Delete.
- (alpha_build_va_list): New.
- (alpha_va_start): New.
- (alpha_va_arg): New.
-
-Sun Jul 25 21:40:33 1999 Jeffrey A Law (law@cygnus.com)
-
- * config/svr4.h (CTORS_SECTION_ASM_OP): Do not emit directives in
- column zero.
- (DTORS_SECTION_ASM_OP, INIT_SECTION_ASM_OP): Likewise.
- (FINI_SECTION_ASM_OP, ASM_OUTPUT_SECTION_NAME): Likewise.
-
- * gcc.texi: More changes related to list conversion.
- * invoke.texi: Likewise.
-
-Sun Jul 25 18:15:39 1999 Richard Henderson <rth@cygnus.com>
-
- * builtins.c (expand_builtin_saveregs): Remove static, remove exp
- and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
- (expand_builtin_next_arg): Accept ARGLIST not EXP.
- (stabilize_va_list): New function.
- (std_expand_builtin_va_start): New function.
- (expand_builtin_va_start): New function.
- (get_varargs_alias_set): New function.
- (std_expand_builtin_va_arg): New function.
- (expand_builtin_va_arg): New function.
- (expand_builtin_va_end): New function.
- (expand_builtin_va_copy): New function.
- (expand_builtin): Call them.
- * c-common.c (c_common_nodes_and_builtins): Build __builtin_va_list,
- __builtin_{varargs_start,stdarg_start,end,copy}.
- (build_va_arg): New function.
- * c-common.h (CTI_PTR_TYPE, ptr_type_node): Delete.
- (build_va_arg): Declare.
- * c-decl.c (ptr_type_node, va_list_type_node): New.
- * c-parse.gperf (__builtin_va_arg): New.
- * c-parse.in (VA_ARG): New token.
- (unary_expr): Recognize it.
- * expr.c (expand_expr): Expand VA_ARG_EXPR.
- * expr.h (std_expand_builtin_va_start): Declare.
- (std_expand_builtin_va_arg): Declare.
- (expand_builtin_va_arg): Declare.
- (get_varargs_alias_set): Declare.
- * tree.def (VA_ARG_EXPR): New.
- * tree.h (BUILT_IN_VARARGS_START): New.
- (BUILT_IN_STDARG_START, BUILT_IN_VA_END): New.
- (ptr_type_node, va_list_type_node): Declare.
- * tm.texi (EXPAND_BUILTIN_SAVEREGS): Kill unused ARGLIST argument.
- * m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
- * m88k.h, m88k.c: Likewise.
- * mn10300.h, mn10300.c: Likewise.
- * pa.h, pa.c: Likewise.
- * rs6000.h, rs6000.c: Likewise.
- * sh.h, sh.c: Likewise.
- * sparc.h, sparc.c: Likewise.
-
- * emit-rtl.c (operand_subword): Copy alias set.
- (change_address): Likewise.
-
-Sun Jul 25 15:04:37 1999 Jeffrey A Law (law@cygnus.com)
-
- * pa.c (compute_frame_size): Scan all the used callee saved registers,
- not just the first one.
-
-Fri Jul 23 14:09:58 1999 Philip Blundell <pb@nexus.co.uk>
-
- * config/arm/arm.h (TARGET_SWITCHES): Add
- -m{no-}single-pic-base. Correct help string for -mshort-load-words.
- (TARGET_OPTIONS): Add -mpic-register=.
- (ARM_FLAG_SINGLE_PIC_BASE, TARGET_SINGLE_PIC_BASE): Define.
- (arm_pic_register_string): Declare.
- (NEED_PLT_GOT): Delete, replace with ...
- (NEED_GOT_RELOC, NEED_PLT_RELOC): ... these. New macros.
- (OUTPUT_INT_ADDR_CONST): Replace NEED_PLT_GOT with NEED_GOT_RELOC.
- (ASM_OUTPUT_MI_THUNK): Replace NEED_PLT_GOT with NEED_PLT_RELOC.
- * config/arm/arm.c (arm_override_options): Add new option
- -mpic-register=N.
- (arm_pic_register_string): New variable.
- (arm_finalize_pic): Respect TARGET_SINGLE_PIC_BASE.
- (output_func_prologue): If TARGET_SINGLE_PIC_BASE, treat the PIC
- register as never live. Use NEED_PLT_RELOC not NEED_PLT_GOT.
- (output_return_instruction): Likewise.
- * config/arm/elf.h (NEED_PLT_GOT): Delete, replace with ...
- (NEED_GOT_RELOC, NEED_PLT_RELOC): ... these. Define to flag_pic.
- * config/arm/arm.md: Use NEED_PLT_RELOC in place of NEED_PLT_GOT.
-
- * invoke.texi (ARM Options): Fix spelling. Remove duplicate
- mention of -msched-prolog. Document new options -msingle-pic-base
- and -mpic-register=.
-
-Thu Jul 22 18:23:56 1999 Richard Henderson <rth@cygnus.com>
-
- * haifa-sched.c (reemit_notes): Tidy.
- * sched.c (reemit_notes): Duplicate 1998-08-31 patch to
- haifa's routine.
-
-Thu Jul 22 18:21:04 1999 Richard Henderson <rth@cygnus.com>
-
- * explow.c (trunc_int_for_mode): New function.
- (plus_constant_wide): Use it.
- * combine.c (simplify_and_const_int): Likewise.
- (merge_outer_ops): Likewise.
- (simplify_shift_const): Likewise.
- * cse.c (simplify_unary_operation): Likewise.
- (simplify_binary_operation): Likewise.
- * emit-rtl.c (operand_subword): Likewise.
- * rtl.h: Declare it.
-
-Thu Jul 22 14:34:59 1999 Bernd Schmidt <bernds@cygnus.co.uk>
-
- * config/arm/arm.c (arm_print_operand): Fix typo in 'M' case
- (use NUM_REGS instead of NUM_INTS).
-
-Thu Jul 22 11:25:20 1999 Bernd Schmidt <bernds@cygnus.co.uk>
-
- * builtins.c: New file.
- * expr.c (saveregs_value, apply_args_value): Delete definition,
- moved into builtins.c.
- (string_constant): No longer static.
- (get_pointer_alignment, c_strlen, get_memory_rtx, expand_builtin,
- apply_args_size, apply_result_size, result_vector,
- expand_builtin_apply_args, expand_builtin_apply,
- expand_builtin_return): Delete functions, moved into builtins.c.
- (INCOMING_REGNO, OUTGOING_REGNO): Delete unused macros.
- * expr.h (saveregs_value, apply_args_value): Declare variables.
- (expand_builtin, string_constant): Declare functions.
- * Makefile.in: Update to build builtin.o.
-
-Wed Jul 21 00:46:58 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * defaults.h (DWARF2_GENERATE_TEXT_SECTION_LABEL): New macro.
- * tm.texi (DWARF2_GENERATE_TEXT_SECTION_LABEL): Define it.
- * dwarf2out.c (dwarf2out_init): Don't output a label to mark the
- start of the text section if DWARF2_GENERATE_TEXT_SECTION_LABEL is
- false.
- * config/mips/iris6.h (DWARF2_GENERATE_TEXT_SECTION_LABEL):
- Define to zero.
-
-1999-07-21 Michael Meissner <meissner@cygnus.com>
-
- * print-rtl.c (print_rtx): Print the names of the virtual
- registers.
-
-Wed Jul 21 16:00:32 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/arm.h (INITIAL_ELIMINATION_OFFSET): Fix typo
- introduced in previous delta.
-
-Wed Jul 21 14:30:51 1999 Bernd Schmidt <bernds@cygnus.co.uk>
-
- * c-lang.c (finish_file): Rename void_list_node to void_list_node_1
- to avoid name clash.
-
-Wed Jul 21 08:39:22 1999 Gavin Romig-Koch <gavin@cygnus.com>
-
- * c-lex.c (yylex) : Correct the test for overflow when lexing
- integer literals.
-
-Tue Jul 20 18:02:42 1999 Richard Henderson <rth@cygnus.com>
-
- * haifa-sched.c (insn_cost): FREE implies cost 0 and vice versa.
- (adjust_priority): Always call ADJUST_PRIORITY.
- (schedule_insn): Only put insns into the ready at cost 0.
- (schedule_block): Remove redundant initial sort. Give clock_var
- and can_issue_more to MD_SCHED_REORDER. Requeue if hazard cost
- is not 0.
- * tm.texi (MD_SCHED_REORDER): Update docs.
-
- * sparc.h (MD_SCHED_REORDER): Update. Set CAN_ISSUE_MORE.
- * sparc.c (ultra_reorder_called_this_block): Delete.
- (ultrasparc_sched_init): Don't set it.
- (ultrasparc_sched_reorder): Don't check it.
-
-Tue Jul 20 17:07:54 1999 Richard Henderson <rth@cygnus.com>
-
- * rs6000.h (struct rs6000_args): Add sysv_gregno.
- * rs6000.c (init_cumulative_args): Init sysv_gregno.
- (function_arg_boundary): Align DFmode.
- (function_arg_advance): Restructure for ABI_V4; use sysv_gregno
- to get fp reg and stack overflow correct.
- (function_arg): Likewise.
- (function_arg_pass_by_reference): True for TFmode for ABI_V4.
- (setup_incoming_varargs): Restructure for ABI_V4; use
- function_arg_advance to skip final named argument.
- (expand_builtin_saveregs): Properly unskip the last integer arg
- when doing varargs. Adjust overflow location calculation.
-
- * ginclude/va-ppc.h (struct __va_list_tag): Make gpr and fpr
- explicitly unsigned.
- (__VA_FP_REGSAVE): Use new OFS argument instead of AP->fpr directly.
- (__VA_GP_REGSAVE): Similarly.
- (__va_longlong_p): Delete.
- (__va_arg_type_violation): New declaration.
- (va_arg): Restructure. Flag promotion errors. Align double.
- TFmode passed by reference.
-
- * rs6000.md (movdi_32+1): Use GEN_INT after arithmetic
- in the HOST_BITS_PER_WIDE_INT > 32 case.
-
-Tue Jul 20 12:37:30 1999 Hans-Peter Nilsson <hp@bitrange.com>
-
- * dwarf2out.c (output_abbrev_section): Terminate with a zero.
-
-Tue Jul 20 12:12:27 1999 Jason Merrill <jason@yorick.cygnus.com>
-
- * gcc.c (default_compilers, cpp-output): Pass -fpreprocessed.
- * toplev.c (documented_lang_options): Add -fpreprocessed.
- * cpplib.h (struct cpp_buffer): Add preprocessed.
- * cppinit.c (cpp_handle_option): Handle -fpreprocessed.
- (cpp_start_read): Don't expand macros or emit an initial #line
- directive if -fpreprocessed.
-
-Tue Jul 20 12:12:09 1999 Michael Tiemann <tiemann@holodeck.cygnus.com>
-
- * cpplib.h (struct cpp_buffer): Added manual_pop for
- better C++ tokenization.
- * cpplib.c (cpp_get_token): Return CPP_EOF if manual_pop.
- Also, support C++ tokenization for ->*, .*, <?, and >? operators.
- * c-common.c (cpp_token): Make non-static.
-
-Tue Jul 20 11:24:19 1999 Bernd Schmidt <bernds@cygnus.co.uk>
-
- * c-common.h: New file.
- * c-common.c (permanent_obstack): Delete unused declaration.
- (c_global_trees): New array.
- (c_common_nodes_and_builtins): New function; split off common code
- from init_decl_processing in both c-decl.c and cp/decl.c.
- * c-tree.h: Delete lots of declarations of tree nodes; replaced by
- c_global_trees and accessor macros defined in c-common.h.
- Include c-common.h.
- * c-decl.c: Delete definitions for tree nodes that were replaced by
- c_global_trees.
- (init_decl_processing): Build void_list_node.
- Call c_common_nodes_and_builtins; delete code to generate the common
- builtins here.
- * objc/objc-act.c (build_module_descriptor): Rename variable
- void_list_node to avoid clash with c-common.h.
-
- * Makefile.in: Update dependencies.
- * objc/Make-lang.in: Likewise.
-
-Mon Jul 19 14:22:18 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * config/mips/iris6gld.h (MAKE_DECL_ONE_ONLY): Define.
- (UNIQUE_SECTION_P): Likewise.
- (UNIQUE_SECTION): Likewise.
-
-1999-07-19 Linas Vepstas <linas@linas.org>
-
- * config/i370/README: New file.
- * config/i370/linux.h: New file.
- * config/i370/mvs.h: New file.
- * config/i370/oe.h: New file.
- * config/i370/t-linux: New file.
- * config/i370/t-mvs: New file.
- * config/i370/t-oe: New file.
- * config/i370/x-oe: New file.
- * config/i370/xm-linux.h: New file.
- * config/i370/xm-mvs.h: New file.
- * config/i370/xm-oe.h: New file.
-
- * i370.c (label_node_t): Add first_ref_page, label_addr,
- label_first_ref, label_last_ref members.
- (mvs_need_base_reload): Renamed from mvs_label_emitted.
- (MAX_MVS_LABEL_SIZE): Define.
- (MAX_LONG_LABEL_SIZE): Define.
- (alias_node_t, alias_anchor, alias_number): New.
- (mvs_function_table): Reorder for EBCDIC.
- (ascebc, ebcasc): Unconditionally define.
- (i370_branch_dest, i370_branch_length): New functions.
- (i370_short_branch, i370_label_scan): New functions.
- (mvs_get_label): Renamed from mvs_add_label. Search for
- an existing label before creating a new one.
- (mvs_add_label): New function.
- (mvs_get_label_page): New function.
- (mvs_free_label_list): Renamed from mvs_free_label. Iterate
- over the entire list.
- (mvs_check_page) [TARGET_HLASM]: Use BASR not BALR.
- (mvs_check_page) [TARGET_ELF_ABI]: New function.
+ * pa.c (compute_frame_size): Use STARTINg_FRAME_OFFSET instea
(mvs_add_alias, mvs_need_alias): New functions.
(mvs_get_alias, mvs_check_alias): New functions.
(handle_pragma): New function.
@@ -4176,786 +3538,4 @@ Thu Jun 17 13:28:30 1999 David O'Brien <obrien@FreeBSD.org>
* i386/freebsd-elf.h (LINK_SPEC): Fix typo.
- * i386/freebsd-elf.h (FUNCTION_PROFILER): labels are not needed and
- the reference to `mcount' was not correct for the ELF on FreeBSD.
-
-Thu Jun 17 17:22:07 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * loop.c (strength_reduce): When doing biv->giv conversion, fix up
- reg_biv_class.
-
- (recombine_givs): Set ix field after sorting.
-
-Thu Jun 17 02:54:30 1999 Jeffrey A Law (law@cygnus.com)
-
- * emit-rtl.c (operand_subword): Tighten checks for when it is safe
- to safe to extract a subword out of a REG.
-
-Thu Jun 17 01:45:24 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.md (mulsi3): Don't add a no-op move at the end.
-
-Wed Jun 16 20:29:00 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * cse.c (cse_insn): Don't put hard register source into tables for
- the last insn of a libcall.
-
-Wed Jun 16 19:44:33 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * loop.c (strength_reduce): Insert sets of derived givs at every
- biv increment, even if it's the only one.
-
-Wed Jun 16 10:33:02 1999 Jason Merrill <jason@yorick.cygnus.com>
-
- * dwarfout.c (add_incomplete_type): New fn.
- (output_type): Call it.
- (retry_incomplete_types): New fn.
- (dwarfout_finish): Call it.
-
- From Eric Raskin <ehr@listworks.com>:
- (output_type): Output types for bases.
-
-Tue Jun 15 12:51:23 1999 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * mips.c (mips_output_conditional_branch): Add `break'
- between `default' label and `close braces'.
-
-Tue Jun 15 01:55:20 1999 David O'Brien <obrien@FreeBSD.org>
-
- * i386/freebsd-elf.h (LINK_SPEC): clean up the linking library
- specifications and make it realistic.
- (LIB_SPEC): Likewise.
-
-Mon Jun 14 15:38:43 1999 Jim Wilson <wilson@cygnus.com>
-
- * config/mips/mips.c (mips_secondary_reload_class): Check for
- (PLUS (SP) (REG)) and return appropriate register class.
- * config/mips/mips.md (reload_insi): Delete predicate for operand 1.
- Handle (PLUS (SP) (REG)).
- (tablejump): In mips16 code, use emit_insn instead of emit_jump_insn.
- (tablejump_mips161, tablejump_mips162): Use emit_jump_insn instead
- of emit_insn for tablejump.
-
-Mon Jun 14 17:26:40 1999 David Edelsohn <edelsohn@gnu.org>
-
- * rs6000.c (output_prolog): RS6000_CALL_GLUE must be
- asm_fprintf format string by itself.
- (output_function_profiler): Likewise.
-
-Mon Jun 14 12:57:38 1999 David Mosberger <davidm@hpl.hp.com>
-
- * combine.c (simplify_logical, case AND): Only call
- simplify_and_const_int if the mode is no wider than HOST_WIDE_INT
- or the constant is positive.
-
-Mon Jun 14 11:43:41 1999 Nick Clifton <nickc@cygnus.com>
-
- * configure.in: Fix typo in rs6000-ibm-aix4 case.
- * configure: Regenerate.
-
-Mon Jun 14 03:55:40 1999 Jeffrey A Law (law@cygnus.com)
-
- * configure.in (rs6000-ibm-aix4.3*, powerpc-ibm-aix4.3*): Do not
- require a sub-version #.
- * configure: Rebuilt.
-
-1999-06-14 Robert Lipe (robertlipe@usa.net)
-
- * svr4.h (DWARF2_DEBUGGING_INFO): Check for redefinition.
-
-Mon Jun 14 10:30:52 BST 1999 Nathan Sidwell <nathan@acm.org>
-
- * c-typeck.c (process_init_element): Detect excess elements in
- char array initializer.
-
-1999-06-14 Andreas Jaeger <aj@arthur.rhein-neckar.de>
-
- * gcc.texi: Mention gcc 2.96 instead of egcs 1.00.
-
-Sat Jun 12 22:29:48 EDT 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * invoke.texi (Option Summary): Add -fpermissive flag.
-
-Sat Jun 12 03:40:42 1999 Jeffrey A Law (law@cygnus.com)
-
- * sparc.h (LEGITIMIZE_RELOAD_ADDRESS): Do nothing with operands
- that require PIC code sequences.
-
-Wed Jun 9 16:29:01 1999 Nick Clifton <nickc@cygnus.com>
-
- * configure.in: Add new target: thumb-elf.
- * configure: Regenerate.
- * config/arm/t-thumb-elf: New file: Makefile fragment for
- thumb-elf build.
- * config/arm/telf.h: New file: Header file for thumb-elf
- build.
-
-Fri Jun 11 03:17:51 1999 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (libgcc2): Pass MAYBE_USE_COLLECT2 as an argument.
- * libgcc2.c (__CTOR_LIST, __DTOR_LIST); Do not provide
- initializers is some circumstances.
-
- * fixinc/inclhack.def (endif_label): Add additional selector for
- more bogus stuff after #endif statements.
- * fixinc/inclhack.sh, fixinc/fixincl.x: Rebuilt.
-
-Thu Jun 10 20:44:36 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * i386/cygwin.h (SET_ASM_OP): Define.
-
-Thu Jun 10 20:37:57 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * reg-stack.c (stack_reg_life_analysis): Find all the RETURN insns.
-
-Thu Jun 10 19:23:00 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (TARGET_HARWARD, TARGET_HARVARD): Changed the former to the
- latter.
-
- * sh.md (ic_invalidate_line_i): Remove second alternative.
-
-Thu Jun 10 06:55 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- *fixinc/inclhack.def(sun_auth_proto): We do not know how to
- test for the presence of valid prototypes. Delete bypass expr.
- (ioctl_fix_ctrl): Correct the selection expression.
- (no_double_slash): Correct quoting rules
- *fixinc/fixincl.x: regen
- *fixinc/inclhack.sh: regen
-
-Thu Jun 10 15:08:15 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/arm.c (struct all_cores): Add ARM920 and ARM920t.
-
-Wed Jun 9 15:57:57 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * rs6000.md (movsi_got_internal_mem): Delete.
- * rs6000.h (CONDITIONAL_REGISTER_USAGE): Mark PIC_OFFSET_TABLE_REGNUM.
- (GOT_TOC_REGNUM): Delete.
- (PIC_OFFSET_TABLE_REGNUM): Define.
- (FINALIZE_PIC): Disable.
- * rs6000.c (rs6000_got_register): New code for fixed pic register.
- (rs6000_replace_regno): Delete.
- (rs6000_finalize_pic): Likewise.
- (output_prolog): Handle PIC_OFFSET_TABLE_REGNUM.
-
-Wed Jun 9 19:44:26 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * loop.c (loop_insn_first_p): Don't compare LUIDs when P
- is a note; use <= for the compare; advance P while it is
- a NOTE.
-
-Wed Jun 9 13:12:24 1999 Jeffrey A Law (law@cygnus.com)
-
- * fixinc/inclhack.def (no_double_slash): Fix quoting for test.
- * fixinc/inclhack.sh, fixinc/fixincl.x, fixinc/fixincl.sh; Rebuilt.
-
- * varasm.c (remove_from_pending_weak_list): Verify t->name
- is non-NULL before passing it to strcmp.
-
-Wed Jun 9 06:50 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- *fixinc/inclhack.def(sun_auth_proto): bypass the patch if
- the typed arguments are not part of a comment
- (ioctl_fix_ctrl): Added a purpose comment
- *fixinc/fixincl.x: regenerate
- *fixinc/inclhack.sh: regenerate
-
-Wed Jun 9 22:57:02 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
-
- * invoke.texi: Add C4x invocation docs.
-
-Wed Jun 9 22:34:38 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
-
- * config/c4x/c4x.h (TARGET_EXPOSE_LDP, LEGITIMIZE_RELOAD_ADDRESS):
- Define new macros.
- * config/c4x/c4x.c (c4x_emit_move_sequence, src_operand): Use
- TARGET_EXPOSE_LDP.
- (c4x_legitimize_reload_address): New function.
- * config/c4x/c4x.md: Update docs.
-
-Wed Jun 9 04:14:48 1999 Jeffrey A Law (law@cygnus.com)
-
- * fixincludes: Avoid removing '.'.
- * fixinc/fixinc.svr4: Likewise.
- * fixinc/fixinc.winnt: Likewise.
- * fixinc/inclhack.tpl: Likewise.
- * fixinc/fixincl.sh, fixinc/inclhack.sh: Rebuilt.
-
-1999-06-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * fixinc/inclhack.def (sun_catmacro): Escape parens in the select
- pattern.
- * fixinc/fixincl.x, fixinc/inclhack.sh: Rebuilt.
-
-Wed Jun 9 03:10:34 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * c-pragma.c (handle_pragma_token): Handle `#pragma pack()'
- correctly.
-
-Tue Jun 8 13:06:15 1999 Jim Wilson <wilson@cygnus.com>
-
- * configure.in (rs6000-ibm-aix4.[12]*): Change rx6000 to rs6000.
- * configure: Regenerate.
-
-Tue Jun 8 05:47:48 1999 Richard Earnshaw (rearnsha@arm.com)
-
- * optabs.c (expand_cmplxdiv_wide): Use expand_abs to get the absolute
- values.
-
-Mon Jun 7 22:30:37 1999 Jeffrey A Law (law@cygnus.com)
-
- * fixinc/inclhack.def (avoid_bool): Also catch
- "typedef [unsigned] int bool".
- * fixinc/inclhack.sh, fixinc/fixincl.x, fixinc/fixincl.sh: Rebuilt.
-
- * m68k/x-hp3bsd44: Delete obsolete and incorrect file.
- * configure.in (m68k-hp-bsd4.4): No longer use x-hp3bsd44.
- * configure: Rebuilt.
-
-Mon Jun 7 22:05:03 1999 Mark Kettenis <kettenis@gnu.org>
-
- * config/i386/gnu.h: Include <gnu.h> right after <i386/linux.h>,
- such that we can override its definitions if necessary.
- (CPP_SPEC): New define. Support processor specific predefines via
- %(cpp_cpu).
- (CC1_SPEC): New define. Support processor specific compiler
- options via %(cc1_cpu).
- (STARTFILE_SPEC): New define. Use crt0.o instead of crt1.o for
- -static.
-
-1999-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * fixinc/inclhack.def (math_gcc_ifndefs): Insert whitespace
- between sed's -e flag, and the open-quote following it.
- * fixinc/fixincl.x, fixinc/fixincl.sh: Rebuilt.
-
-Mon Jun 7 20:34:20 1999 Robert Lipe <robertlipe@usa.net>
- Jeffrey A Law (law@cygnus.com)
-
- * varasm.c (assemble_start_function): Remove the function
- from the pending weak decls list when we define a function.
- (assemble_variable): Similarly for variables.
- (weak_finish): Ignore items on the list with a NULL name.
- (remove_from_ending_weak_list); New function to "remove" an item
- from the pending weak declarations list.
-
-Mon Jun 7 19:27:07 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * pa.md (fmpyfadd, fmpynfadd, fnegabs): New patterns.
-
-Mon Jun 7 14:07:39 1999 Dave Brolley <brolley@cygnus.com>
-
- * c-lex.c (GETC): Redefine to call getch.
- (UNGETC): Redefine to call put_back.
- (putback_buffer): New structure type.
- (putback): New static structure.
- (getch): New function.
- (put_back): New function.
- (yylex): Replace unused bytes from bad multibyte character.
-
-Mon Jun 7 13:33:39 1999 Dave Brolley <brolley@cygnus.com>
-
- * cpplib.c (do_define): Cast `alloca' return value.
- (do_include, do_undef, do_pragma): Likewise.
- * cpphash.c (dump_definition): Cast `xstrdup' and `alloca' return
- values.
- * cppfiles.c (initialize_input_buffer): Cast `xmalloc' return values.
- * gcc/cppspec.c (lang_specific_driver): Cast xmalloc return value.
-
-Sun Jun 6 11:58:34 1999 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc.md (abstf2): This should be an expand.
- (split after abstf2_notv9): Fix mode.
- (abstf2_hq_v9): New pattern.
- (abstf2_v9): Only use when no hard quad.
- (absdf2_v9): Fix if target is not the same as source.
- (ashrsi3_extend, ashrsi3_extend2, lshrsi3_extend, lshrsi3_extend2):
- Add correct output constraints.
-
-Sat Jun 5 17:04:16 1999 Craig Burley <craig@jcb-sc.com>
-
- From Dave Love to egcs-patches on 20 May 1999 17:38:38 +0100:
- * invoke.texi: Clarify text vis-a-vis Intel CPUs.
-
-Sat Jun 5 12:11:24 1999 Mark Mitchell <mark@codesourcery.com>
-
- * mips.h (mips_output_conditional_branch): New function.
- (mips_adjust_insn_length): Likewise.
- (ASSEMBLER_SCRATCH_REGNUM): New macro.
- (ADJUST_INSN_LENGTH): Likewise.
- * mips.c (print_operand): Add `F' and `W' for floating-point
- comparison opcodes.
- (machine_dependent_reorg): Adjust MIPS16 code; instruction-lengths
- are now in bytes.
- (mips_adjust_insn_length): New function.
- (mips_output_conditional_branch): New function.
- * mips.md (length): Adjust attribute definition to handle
- conditional branches. Change lengths to bytes, rather than
- instructions throughout. Remove length attribute from
- instructions whose length is four bytes, and rely on the default
- instead.
- (dslot): Fix typo in comment.
- Reword conditional branch patterns to use
- mips_output_conditional_branch.
-
-Fri Jun 4 13:30:27 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * alpha/osf.h (CPP_SUBTARGET_SPEC): Handle -threads.
- (LIB_SPEC): Likewise.
- Link with -lprof1_r for -g/-pg.
-
-1999-06-04 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * loop.c (check_dbra_loop): Fix change of Jan 19.
-
-Fri Jun 4 00:12:40 1999 Marc Espie <espie@cvs.openbsd.org>
-
- * freebsd-elf.h (SWITCH_TAKES_ARG): Redefine, not define.
- (STARTFILE_SPEC): Define, override the svr4.h version.
- (ENDFILE_SPEC): Likewise.
-
-Thu Jun 3 23:58:55 1999 Jeffrey A Law (law@cygnus.com)
-
- * fixinc/inclhack.def (limits_ifndefs): Also apply to sys/limits.h
- * fixinc/fixincl.x: Regenerated.
- * fixinc/inclhack.sh: Regenerated.
-
-Fri Jun 4 05:42:23 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.c (barrier_align): Don't return early for normal branch/barrier
- when optimizing for SH2.
-
-Thu Jun 3 22:27:50 1999 Robert Lipe <robertlipe@usa.net>
-
- * i386/udk.h (LINK_SPEC): Correct linker search path for
- system libraries.
-
-Fri Jun 4 03:20:40 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.c (fixup_addr_diff_vecs): Emit braf reference label.
- (braf_label_ref_operand): Delete.
- * sh.h (PREDICATE_CODES): Remove braf_label_ref_operand.
- * sh.md (casesi_jump_2): Operand1 is now the inside of a
- label_ref, and has no predicate.
- The patten has a predicate to guard against invalid substitutions.
- (dummy_jump): Delete.
- (casesi): Update use of casesi_jump_2.
-
-Thu Jun 3 07:48 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- *fixinc/inclhack.def(Io_Def_Quotes): corrected sed expression
- *fixinc/fixincl.x: regenerate
- *fixinc/inclhack.sh: regenerate
-
-Thu Jun 3 02:15:07 1999 Jason Merrill <jason@yorick.cygnus.com>
-
- * dwarf2out.c (add_incomplete_type): New fn.
- (gen_struct_or_union_type_die): Call it.
- (retry_incomplete_types): New fn.
- (dwarf2out_finish): Call it.
-
-Thu Jun 3 01:19:03 1999 Jeffrey A Law (law@cygnus.com)
-
- * gcse.c (insert_insn_end_bb): Correct placement of insns when the
- current block starts with a CODE_LABEL and ends with a CALL and
- we can not find all the argument setup instructions for the CALL.
-
-Wed Jun 2 15:44:15 1999 Mark Mitchell <mark@codesourcery.com>
-
- Revert this change:
- * fold-const.c (fold): STRIP_NOPS when deciding whether or not
- something is a candidate for optimize_bit_field_compare.
-
-Wed Jun 2 21:53:05 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (CONST_OK_FOR_I, CONST_OK_FOR_L): Cast VALUE to HOST_WIDE_INT.
-
-Wed Jun 2 12:25:55 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha.c (override_options): Thinko in last patch.
-
- * alpha/osf.h (CPP_SUBTARGET_SPEC): Define.
- (LIB_SPEC): Recognize -pthread.
-
-Wed Jun 2 08:42:55 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/tcoff.h (USER_LABEL_PREFIX): Synchronise with
- definition in config/arm/coff.h
- * config/arm/coff.h: Add comment about USER_LABEL_PREFIX.
-
-Wed Jun 2 07:07 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- * fixinc/fixincl.c(global def): Add FD_SHELL_SCRIPT to mark
- fixes that need "file=xxx\n" prepended before invocation
- (start_fixer - new): starting the fixer process is complex enough
- to warrent its own routine. It prepends the "file=xxx\n" stuff.
- (process): uses the new routine; omit usage of putenv()
- * fixinc/fixincl.tpl: mark shell scripts with FD_SHELL_SCRIPT
- * fixinc/fixincl.x: regenerate
-
-Wed Jun 2 02:29:07 1999 Jeffrey A Law (law@cygnus.com)
-
- * README, configure.in, gcc.1, gcc.texi: Update name (egcs -> gcc)
- and version #s (1.1 -> 2.96) as needed.
- * README.g77: Kill way out of date file in the toplevel directory.
-
-Wed Jun 2 00:52:34 1999 David O'Brien <obrien@FreeBSD.org>
-
- * configure.in (i[34567]86-*-freebsdelf): Don't include linux.h,
- i386/freebsd-elf.h no longer requires it. Instead include svr4.h.
- * configure: Rebuilt.
- * i386/freebsd-elf.h (DEFAULT_VTABLE_THUNKS): Define.
- (ASM_COMMENT_START, ASM_APP_ON, ASM_APP_OFF, SET_ASM_OP): Likewise.
- (PREFERRED_DEBUGGING_TYPE, WCHAR_UNSIGNED): Likewise.
- (SWITCH_TAKES_ARG): Likewise.
- * i386/freebsd.h: Remove FREEBSD_NATIVE support.
- * config/t-freebsd: Moved from config/i386/ so it can used for all
- FreeBSD targets.
-
-Mon May 31 02:22:55 1999 Philippe De Muyter <phdm@macqel.be>
-
- * m68k/x-mot3300 (XCFLAGS): Fixed to match stb.o, not f/stb.o.
-
-Wed Jun 2 00:08:34 1999 Robert Lipe <robertlipe@usa.net>
-
- * configure.in (i[34567]86-*-udk*): Install headers with cpio.
- * configure: Rebuilt.
-
-Tue Jun 1 19:06:22 1999 David Edelsohn <edelsohn@gnu.org>
-
- * rs6000/aix41.h (RS6000_CALL_GLUE): Define.
- * rs6000/aix43.h (RS6000_CALL_GLUE): Likewise.
- * rs6000/rs6000.c (rs6000_file_start): Use putc.
- (rs6000_output_load_toc_table): Same.
- (output_prolog, output_mi_thunk): Same.
- * rs6000/rs6000.h (SELECT_SECTION): Formatting.
- (ASM_GLOBALIZE_LABEL): Use putc.
-
-Mon May 31 15:23:23 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha.md (reload_*_help): New patterns and splitters.
- (reload_*): Use them.
- (mov[qh]i): Likewise.
-
-Mon May 31 11:48:07 1999 Mark Mitchell <mark@codesourcery.com>
-
- * cccp.c (handle_directive): Handle backslash-newlines in quoted
- strings correctly.
-
-Mon May 31 09:36:11 1999 Cort Dougan <cort@cs.nmt.edu>
-
- * rs6000/linux.h (LINK_SPEC): Use emulation elf32ppclinux.
-
-Mon May 31 11:40:20 EDT 1999 John Wehle (john@feith.com)
-
- * flow.c (mark_regs_live_at_end, insn_dead_p,
- mark_set_1, mark_used_regs): Only give FRAME_POINTER_REGNUM
- and HARD_FRAME_POINTER_REGNUM special treatment if reload
- hasn't run or the frame pointer is needed.
- * haifa-sched.c (attach_deaths): Likewise.
- * sched.c (attach_deaths): Likewise.
-
-Mon May 31 00:46:17 1999 Jeffrey A Law (law@cygnus.com)
-
- * jump.c (jump_optimize_1): Only set CAN_REACH_END if
- calculate_can_reach_end returns nonzero.
-
- * configure.in (native gas tests): Search for an assembler in the
- same manner that the installed compiler will.
- * configure: Rebuilt.
- * tm.texi (MD_EXEC_PREFIX): Note need to update configure.in too.
-
- * alias.c (find_base_term): Improve handling of addresses
- constructed from binary operations.
-
-Sun May 30 14:29:17 1999 Eric Raskin (ehr@listworks.com)
-
- * dgux.h (STARTFILE_SPEC): Fix incorrectly matched curly-braces.
-
-Sun May 30 14:19:13 1999 Jeffrey A Law (law@cygnus.com)
-
- * function.h (cleanup_label, frame_offset): Declare.
- (tail_recursion_label, tail_recursion_reentry): Likewise.
- (arg_pointer_save_area, rtl_expr_chain): Likewise.
- * stmt.c (cleanup_label, frame_offset): Delete extern declarations.
- (tail_recursion_label, tail_recursion_reentry): Likewise.
- (arg_pointer_save_area, rtl_expr_chain): Likewise.
-
-Sat May 29 19:08:10 1999 Philip Blundell <philb@gnu.org>
-
- * config/arm/aout.h (ASM_OUTPUT_ALIGN): Only define if not already
- defined.
- * config/arm/elf.h (ASM_OUTPUT_ALIGN): Define.
- (MAX_OFILE_ALIGNMENT): Define.
-
-Fri May 28 21:40 1999 Robert Lipe <robertlipe@usa.net>
-
- * fixincl.c: Replace local include scheme with #includes of
- gansidecl.h and system.h.
- * procopen.c: Likewise.
- * server.c: Likewise.
-
-Fri May 28 03:47:03 1999 Eric Raskin (ehr@listworks.com)
-
- * i386/t-dgux (EXTRA_PARTS): Add crti.o
- (crti.o): Add build rule and dependencies.
- * fixinc/fixinc.dgux: Use modified _int_varargs.h
-
-Fri May 28 03:41:02 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * rs6000/sysv4.h (CC1_SPEC): Add support for -profile
- (LIB_LINUX_SPEC): Likewise.
- (LIB_LINUX_SPEC): Add support for -pthread
- (CPP_OS_LINUX_SPEC): Likewise.
- (CPP_SYSV_SPEC): Avoid redefinitions if both -fpic and -fPIC are
- specified.
-
-Thu May 27 13:04:52 1999 H.J. Lu (hjl@gnu.org)
-
- * i386.c (output_fp_cc0_set): Don't check the JUMP_INSN code for
- conditional move.
- (notice_update_cc, output_float_compare): Enable TARGET_CMOVE support.
- (output_float_compare, output_fp_cc0_set): Fix the FLOAT comparison
- for IEEE math and CC_FCOMI.
- (put_jump_code): No IEEE if CC_FCOMI is set.
-
-1999-05-27 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * fold-const.c (fold_truthop): Make the field reference unsigned
- when converting a single bit compare.
-
-Thu May 27 02:40:48 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * loop.c (strength_reduce): Don't do biv->giv conversion on constants.
-
-Thu May 27 02:09:27 1999 Jeffrey A Law (law@cygnus.com)
-
- * varasm.c (STRIP_NAME_ENCODING): Remove default definition.
- * output.h (STRIP_NAME_ENCODING): Strip '*' like the old varasm
- version did.
-
- * reload.c (push_reload): Do not call remove_address_replacements
- when presented with identical optional reloads.
-
-Wed May 26 14:18:05 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha.h (MASK_FIX, TARGET_FIX): New.
- (MASK_*): Reorganize constants.
- (CPP_AM_FIX_SPEC): New.
- (TARGET_SWITCHES): Add FIX.
- (EXTRA_SPECS): Likewise.
- (CPP_CPU_EV6_SPEC): Use FIX, not CIX.
- (SECONDARY_MEMORY_NEEDED): Likewise.
- (REGISTER_MOVE_COST): Likewise.
- * alpha.c (override_options): Add FIX support. Always use
- ALPHA_TP_PROG for ev6.
- * alpha.md (sqrt and mov[sd]i patterns): Use FIX, not CIX.
- * alpha/elf.h (ASM_FILE_START): Look at FIX too.
- * configure.in (target_cpu_default2) [ev6]: Use FIX, not CIX.
-
-Wed May 26 09:53:05 1999 Mark Mitchell <mark@codesourcery.com>
-
- * fold-const.c (fold): STRIP_NOPS when deciding whether or not
- something is a candidate for optimize_bit_field_compare.
-
-Wed May 26 09:40:02 1999 Mark Mitchell <mark@codesourcery.com>
-
- * gcc.texi (Passes): Document branch-shortening.
- * invoke.texi (Debugging Options): Document the fact that `-dp'
- outputs length information for instructions.
-
-Wed May 26 08:49:31 1999 Nick Clifton <nickc@cygnus.com>
-
- * flow.c: Revert previous delta.
-
-Wed May 26 06:05:10 1999 Nick Clifton <nickc@cygnus.com>
-
- * flow.c (insn_dead_p): Check against frame_pointer_rtx not
- FRAME_POINTER_REGNUM.
- (mark_set_1): Ditto.
- (mark_used_regs): Ditto.
-
-Wed May 26 02:19:31 1999 Philip Blundell <pb@nexus.co.uk>
-
- * arm.h (NEED_PLT_GOT): Fix mistake in last change.
- (GOT_PCREL): New macro. Define to 1 if not already defined.
- * arm/elf.h (GOT_PCREL): Define to 0.
- * arm.c (arm_finalize_pic): Take into account the setting of
- GOT_PCREL.
-
-Tue May 25 14:06:06 1999 Jeffrey A Law (law@cygnus.com)
-
- * output.h (STRIP_NAME_ENCODING): Provide default definition.
- * dwarf2out.c (ASM_NAME_TO_STRING): Use STRIP_NAME_ENCODING.
-
- * flow.c (mark_set_1): Do not record BLKmode stores as dead
- store elimination candidates.
-
-Tue May 25 08:55:57 1999 Gavin Romig-Koch <gavin@cygnus.com>
-
- * config/mips/mips.h (ASM_OUTPUT_DOUBLE_INT) : Use 'dword' if
- TARGET_GAS.
-
-Mon May 24 20:30:08 1999 Jim Wilson <wilson@cygnus.com>
-
- * configure.in (rs6000-ibm-aix4.[12]*): Delete use of aix41-gld.h.
- Add use of x-aix41-gld.
-
-Mon May 24 16:44:09 1999 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc/linux64.h (ASM_OUTPUT_CONSTRUCTOR): Define.
- (ASM_OUTPUT_DESTRUCTOR): Define.
-
-Mon May 24 14:35:24 1999 Jeffrey A Law (law@cygnus.com)
-
- * loop.c (strength_reduce): Do not clear NOT_EVERY_ITERATION at the
- last CODE_LABEL in a loop if we have previously passed a jump
- to the top of the loop.
-
-Mon May 24 07:56:29 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/arm.h (OUTPUT_INT_ADDR_CONST): Fix blunder made when
- applying Philip's patch.
-
-Mon May 24 01:02:12 1999 Mark Mitchell <mark@codesourcery.com>
-
- * stmt.c (expand_end_bindings): Ignore any elements of VARS that
- are not VAR_DECLs.
-
-Sun May 23 20:31:16 1999 Jeffrey A Law (law@cygnus.com)
-
- * loop.c (strength_reduce): Grow reg_single_usage as needed.
-
-Sun May 23 10:13:20 1999 David O'Brien <obrien@FreeBSD.org>
-
- * i386/freebsd-elf.h (LINK_SPEC): Change -static to -Bstatic.
- Also remove a useless comment.
-
-Sun May 23 10:05:23 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * pa.md (negdf2,negsf2): Use fneg instead of fsub on pa 2.0.
-
-Sat May 22 21:02:06 1999 David Edelsohn <edelsohn@gnu.org>
-
- * collect2.c (main): Only generate import or export file and add
- to link arguments if non-empty. Use xmalloc not alloca.
- (write_{export,import}_file): Delete.
- (write_aix_file): New function.
- (locatelib): Use xmalloc not malloc.
- (GCC_OK_SYMBOL): Do not check type if aix64.
-
-Sat May 22 09:35:51 1999 Philip Blundell <pb@nexus.co.uk>
-
- Based on patch by Scott Bambrough and Pat Beirne:
- * config/arm/arm.c (making_const_table): New variable.
- * config/arm/arm.h (making_const_table): Declare.
- (OUTPUT_INT_ADDR_CONST): Mark symbols as position independent if
- appropriate.
- * config/arm/arm.md (consttable_4, consttable_8, consttable_end):
- Keep track of when we are building the constant table.
-
-Sat May 22 09:34:22 1999 Philip Blundell <pb@nexus.co.uk>
-
- * config/arm/arm.c (arm_override_options): Fix erroneous warning
- message.
-
-Sat May 22 09:06:33 1999 Nick Clifton <nickc@cygnus.com>
-
- * config/arm/arm.h (NEED_PLT_GOT): Only define if not already
- defined.
-
-Sat May 22 07:17:05 1999 Nick Clifton <nickc@cygnus.com>
-
- * tm.texi (FUNCTION_ARG): Correct description of a stack element
- in a PARALLEL.
-
-Sat May 22 01:27:49 1999 Mark Mitchell <mark@codesourcery.com>
-
- * expr.h (lang_expand_constant): Guard with #ifdef TREE_CODE.
-
-Fri May 21 21:19:02 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * rs6000.c (output_mi_thunk): Enable full support again.
-
-Fri May 21 20:09:52 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (BRANCH_COST): Define.
-
-Thu May 20 10:00:42 1999 Stephen L Moshier <moshier@world.std.com>
-
- * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
-
-Thu May 20 09:58:57 1999 Jan Hubicka <hubicka@freesoft.cz>
-
- * function.c (assign_stack_local): Align stack slot propertly.
- (assign_outer_stack_local): Likewise.
-
-Thu May 20 10:38:43 1999 Mark Mitchell <mark@codesourcery.com>
-
- * expr.h (lang_expand_constant): Declare.
- * toplev.c (lang_expand_constant): Define it.
- * varasm.c (output_constant): Use it.
-
-Thu May 20 11:28:53 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * optabs.c (expand_cmplxdiv_straight, expand_cmplxdiv_wide):
- Change function definitions to K&R style.
-
-Thu May 20 08:16:39 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- * fixinc/fixincl.c: We must not ignore SIGCLD now.
-
-Thu May 20 07:06:39 1999 Alexandre Oliva <aoliva@acm.org>
-
- * fixinc/Makefile.in(gnu-regex.o): add $(INCLUDES) to compile options
- * fixinc/fixincl.c(wait_for_pid): K&R-ify arguments
- (several places): omit static initialization
- (process): use single fd, since only the read fd is used
- * fixinc/gnu-regex.c: define 'const' away, if not supported
- * fixinc/procopen.c(several places): omit static initialization
- * fixinc/server.c: define 'volitile' away, if not supported
-
-1999-05-20 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * config/dbxcoff.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Use
- asm_fprintf and %L to generate the label name.
- * config/dbxelf.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Likewise.
- (ASM_OUTPUT_SOURCE_LINE): Correct generation of internal labels.
-
-Thu May 20 01:40:55 1999 Jeffrey A Law (law@cygnus.com)
-
- * jump.c (can_reverse_comparison_p): Do not abort if the comparison
- insn for a conditional jump can not be found.
-
-Wed May 19 23:58:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * mips.h (ENCODE_SECTION_INFO): Do not perform GP optimizations
- on variables in specific sections other than .sbss and .sdata.
-
-Wed May 19 03:56:56 1999 Mark Mitchell <mark@codesourcery.com>
-
- * stmt.c (expand_return): Call start_cleanup_deferral and
- end_cleanup_deferral around conditional code.
-
-Wed May 19 08:40:08 1999 Bruce Korb <ddsinc09@ix.netcom.com>
-
- * fixinc/fixincl.tpl: Avoid depending on ANSI C features for
- filename lists. Utilizes new "krstr" AutoGen function.
- * fixinc/fixincl.x: Rebuilt.
-
-Wed May 19 02:47:11 1999 Jan Hubicka (hubicka@freesoft.cz)
-
- * i386.c (output_float_compare): Avoid GNU-C extensions.
-
-Wed May 19 00:34:40 1999 Jeffrey A Law (law@cygnus.com)
-
- * version.c: Bump to distinguish mainline tree from the
- gcc-2.95 branch.
-
-See ChangeLog.1 for earlier changes.
-
-Local Variables:
-add-log-time-format: current-time-string
-End:
+ * i386/freebsd-
diff --git a/gcc/alias.c b/gcc/alias.c
index 9de034a9f13..a94793ea12c 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1431,7 +1431,7 @@ nonlocal_reference_p (x)
/* Recursively scan the operands of this expression. */
{
- register char *fmt = GET_RTX_FORMAT (code);
+ register const char *fmt = GET_RTX_FORMAT (code);
register int i;
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
diff --git a/gcc/c-parse.c b/gcc/c-parse.c
index 063d3db006e..49cb5ecf3d4 100644
--- a/gcc/c-parse.c
+++ b/gcc/c-parse.c
@@ -1232,7 +1232,7 @@ static const short yycheck[] = { 38,
49, 50, 51, 52, 53, 54
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1425,7 +1425,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
-#line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -3776,7 +3776,7 @@ case 405:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 68c35907730..1f418a947e1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+1999-09-01 Mark Mitchell <mark@codesourcery.com>
+
+ * cp-tree.h (lang_type): Move align into type_flags.
+ (CLASSTYPE_ALIGN): Adjust accordingly.
+ * call.c (direct_reference_binding): Remove misleading comment.
+
1999-08-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* parse.y (language_string): Constify.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index eed211f884a..0eefa7f49c0 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -987,10 +987,9 @@ direct_reference_binding (type, conv)
/* Returns the conversion path from type FROM to reference type TO for
purposes of reference binding. For lvalue binding, either pass a
- reference type to FROM or an lvalue expression to EXPR.
-
- Currently does not distinguish in the generated trees between binding to
- an lvalue and a temporary. Should it? */
+ reference type to FROM or an lvalue expression to EXPR. If the
+ reference will be bound to a temporary, NEED_TEMPORARY_P is set for
+ the conversion returned. */
static tree
reference_binding (rto, rfrom, expr, flags)
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 40d280a89af..8448b109f61 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -809,7 +809,9 @@ struct lang_type
/* The MIPS compiler gets it wrong if this struct also
does not fill out to a multiple of 4 bytes. Add a
member `dummy' with new bits if you go over the edge. */
- unsigned dummy : 14;
+ unsigned dummy : 6;
+
+ unsigned char align;
} type_flags;
int vsize;
@@ -822,9 +824,6 @@ struct lang_type
union tree_node *search_slot;
- unsigned char align;
- /* Room for another three unsigned chars. */
-
union tree_node *size;
union tree_node *abstract_virtuals;
@@ -999,7 +998,7 @@ struct lang_type
/* These are the size, mode and alignment of the type without its
virtual base classes, for when we use this type as a base itself. */
#define CLASSTYPE_SIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->size)
-#define CLASSTYPE_ALIGN(NODE) (TYPE_LANG_SPECIFIC(NODE)->align)
+#define CLASSTYPE_ALIGN(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.align)
/* A cons list of virtual functions which cannot be inherited by
derived classes. When deriving from this type, the derived
diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c
index 9725019dbb3..8909892ee24 100644
--- a/gcc/cp/parse.c
+++ b/gcc/cp/parse.c
@@ -1,95 +1,95 @@
/* A Bison parser, made from parse.y
- by GNU Bison version 1.27
+ by GNU Bison version 1.25
*/
#define YYBISON 1 /* Identify Bison output. */
-#define IDENTIFIER 257
-#define TYPENAME 258
-#define SELFNAME 259
-#define PFUNCNAME 260
-#define SCSPEC 261
-#define TYPESPEC 262
-#define CV_QUALIFIER 263
-#define CONSTANT 264
-#define STRING 265
-#define ELLIPSIS 266
-#define SIZEOF 267
-#define ENUM 268
-#define IF 269
-#define ELSE 270
-#define WHILE 271
-#define DO 272
-#define FOR 273
-#define SWITCH 274
-#define CASE 275
-#define DEFAULT 276
-#define BREAK 277
-#define CONTINUE 278
-#define RETURN_KEYWORD 279
-#define GOTO 280
-#define ASM_KEYWORD 281
-#define TYPEOF 282
-#define ALIGNOF 283
-#define SIGOF 284
-#define ATTRIBUTE 285
-#define EXTENSION 286
-#define LABEL 287
-#define REALPART 288
-#define IMAGPART 289
-#define VA_ARG 290
-#define AGGR 291
-#define VISSPEC 292
-#define DELETE 293
-#define NEW 294
-#define THIS 295
-#define OPERATOR 296
-#define CXX_TRUE 297
-#define CXX_FALSE 298
-#define NAMESPACE 299
-#define TYPENAME_KEYWORD 300
-#define USING 301
-#define LEFT_RIGHT 302
-#define TEMPLATE 303
-#define TYPEID 304
-#define DYNAMIC_CAST 305
-#define STATIC_CAST 306
-#define REINTERPRET_CAST 307
-#define CONST_CAST 308
-#define SCOPE 309
-#define EMPTY 310
-#define PTYPENAME 311
-#define NSNAME 312
-#define THROW 313
-#define ASSIGN 314
-#define OROR 315
-#define ANDAND 316
-#define MIN_MAX 317
-#define EQCOMPARE 318
-#define ARITHCOMPARE 319
-#define LSHIFT 320
-#define RSHIFT 321
-#define POINTSAT_STAR 322
-#define DOT_STAR 323
-#define UNARY 324
-#define PLUSPLUS 325
-#define MINUSMINUS 326
-#define HYPERUNARY 327
-#define POINTSAT 328
-#define TRY 329
-#define CATCH 330
-#define PRE_PARSED_FUNCTION_DECL 331
-#define EXTERN_LANG_STRING 332
-#define ALL 333
-#define PRE_PARSED_CLASS_DECL 334
-#define DEFARG 335
-#define DEFARG_MARKER 336
-#define TYPENAME_DEFN 337
-#define IDENTIFIER_DEFN 338
-#define PTYPENAME_DEFN 339
-#define END_OF_LINE 340
-#define END_OF_SAVED_INPUT 341
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SELFNAME 260
+#define PFUNCNAME 261
+#define SCSPEC 262
+#define TYPESPEC 263
+#define CV_QUALIFIER 264
+#define CONSTANT 265
+#define STRING 266
+#define ELLIPSIS 267
+#define SIZEOF 268
+#define ENUM 269
+#define IF 270
+#define ELSE 271
+#define WHILE 272
+#define DO 273
+#define FOR 274
+#define SWITCH 275
+#define CASE 276
+#define DEFAULT 277
+#define BREAK 278
+#define CONTINUE 279
+#define RETURN_KEYWORD 280
+#define GOTO 281
+#define ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define SIGOF 285
+#define ATTRIBUTE 286
+#define EXTENSION 287
+#define LABEL 288
+#define REALPART 289
+#define IMAGPART 290
+#define VA_ARG 291
+#define AGGR 292
+#define VISSPEC 293
+#define DELETE 294
+#define NEW 295
+#define THIS 296
+#define OPERATOR 297
+#define CXX_TRUE 298
+#define CXX_FALSE 299
+#define NAMESPACE 300
+#define TYPENAME_KEYWORD 301
+#define USING 302
+#define LEFT_RIGHT 303
+#define TEMPLATE 304
+#define TYPEID 305
+#define DYNAMIC_CAST 306
+#define STATIC_CAST 307
+#define REINTERPRET_CAST 308
+#define CONST_CAST 309
+#define SCOPE 310
+#define EMPTY 311
+#define PTYPENAME 312
+#define NSNAME 313
+#define THROW 314
+#define ASSIGN 315
+#define OROR 316
+#define ANDAND 317
+#define MIN_MAX 318
+#define EQCOMPARE 319
+#define ARITHCOMPARE 320
+#define LSHIFT 321
+#define RSHIFT 322
+#define POINTSAT_STAR 323
+#define DOT_STAR 324
+#define UNARY 325
+#define PLUSPLUS 326
+#define MINUSMINUS 327
+#define HYPERUNARY 328
+#define POINTSAT 329
+#define TRY 330
+#define CATCH 331
+#define PRE_PARSED_FUNCTION_DECL 332
+#define EXTERN_LANG_STRING 333
+#define ALL 334
+#define PRE_PARSED_CLASS_DECL 335
+#define DEFARG 336
+#define DEFARG_MARKER 337
+#define TYPENAME_DEFN 338
+#define IDENTIFIER_DEFN 339
+#define PTYPENAME_DEFN 340
+#define END_OF_LINE 341
+#define END_OF_SAVED_INPUT 342
#line 29 "parse.y"
@@ -219,7 +219,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
#define YYFLAG -32768
#define YYNTBASE 112
-#define YYTRANSLATE(x) ((unsigned)(x) <= 341 ? yytranslate[x] : 401)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 401)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -247,16 +247,16 @@ static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 62, 64, 67, 68, 72, 73, 74, 77,
- 78, 84, 85, 86, 87, 88, 90, 91, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 62, 64, 67, 68, 72, 73, 74,
+ 77, 78, 84, 85, 86, 87, 88, 90, 91, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107
};
#if YYDEBUG != 0
@@ -3911,7 +3911,6 @@ static const short yycheck[] = { 4,
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple"
-/* This file comes from bison-1.27. */
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -3928,66 +3927,46 @@ static const short yycheck[] = { 4,
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
-/* This is the parser code that is written into each bison parser
- when the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
+#ifndef alloca
#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C. */
-/* This used to test MSDOS, but that is a bad idea
- since that symbol is in the user namespace. */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
- instead, just don't use alloca. */
+#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
-#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
- So I turned it off. rms, 2 May 1997. */
-/* #include <malloc.h> */
+#include <malloc.h>
#pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
- and on HPUX 10. Eventually we can turn this on. */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
#endif /* __hpux */
-#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
/* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
@@ -3997,8 +3976,8 @@ static const short yycheck[] = { 4,
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
+#define YYACCEPT return(0)
+#define YYABORT return(1)
#define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror.
This remains here temporarily to ease the
@@ -4079,12 +4058,12 @@ int yydebug; /* nonzero means print parse trace */
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif
-
-/* Define __yy_memcpy. Note that the size argument
- should be passed with type unsigned int, because that is what the non-GCC
- definitions require. With GCC, __builtin_memcpy takes an arg
- of type size_t, but it can handle unsigned int. */
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else /* not GNU C or C++ */
@@ -4096,7 +4075,7 @@ static void
__yy_memcpy (to, from, count)
char *to;
char *from;
- unsigned int count;
+ int count;
{
register char *f = from;
register char *t = to;
@@ -4111,10 +4090,10 @@ __yy_memcpy (to, from, count)
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+__yy_memcpy (char *to, char *from, int count)
{
- register char *t = to;
register char *f = from;
+ register char *t = to;
register int i = count;
while (i-- > 0)
@@ -4124,7 +4103,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#endif
#endif
-#line 216 "/usr/lib/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -4145,15 +4124,6 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
int
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
@@ -4182,7 +4152,6 @@ yyparse(YYPARSE_PARAM_ARG)
#endif
int yystacksize = YYINITDEPTH;
- int yyfree_stacks = 0;
#ifdef YYPURE
int yychar;
@@ -4267,32 +4236,18 @@ yynewstate:
if (yystacksize >= YYMAXDEPTH)
{
yyerror("parser stack overflow");
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
return 2;
}
yystacksize *= 2;
if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
- yyfree_stacks = 1;
-#endif
- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
- __yy_memcpy ((char *)yyss, (char *)yyss1,
- size * (unsigned int) sizeof (*yyssp));
- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
- size * (unsigned int) sizeof (*yyvsp));
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
- __yy_memcpy ((char *)yyls, (char *)yyls1,
- size * (unsigned int) sizeof (*yylsp));
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */
@@ -8166,7 +8121,7 @@ case 878:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 542 "/usr/lib/bison.simple"
+#line 498 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -8361,30 +8316,6 @@ yyerrhandle:
yystate = yyn;
goto yynewstate;
-
- yyacceptlab:
- /* YYACCEPT comes here. */
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
- return 0;
-
- yyabortlab:
- /* YYABORT comes here. */
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
- return 1;
}
#line 3730 "parse.y"
diff --git a/gcc/cp/parse.h b/gcc/cp/parse.h
index 56ec7b40996..27412c5b3da 100644
--- a/gcc/cp/parse.h
+++ b/gcc/cp/parse.h
@@ -1,89 +1,89 @@
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
-#define IDENTIFIER 257
-#define TYPENAME 258
-#define SELFNAME 259
-#define PFUNCNAME 260
-#define SCSPEC 261
-#define TYPESPEC 262
-#define CV_QUALIFIER 263
-#define CONSTANT 264
-#define STRING 265
-#define ELLIPSIS 266
-#define SIZEOF 267
-#define ENUM 268
-#define IF 269
-#define ELSE 270
-#define WHILE 271
-#define DO 272
-#define FOR 273
-#define SWITCH 274
-#define CASE 275
-#define DEFAULT 276
-#define BREAK 277
-#define CONTINUE 278
-#define RETURN_KEYWORD 279
-#define GOTO 280
-#define ASM_KEYWORD 281
-#define TYPEOF 282
-#define ALIGNOF 283
-#define SIGOF 284
-#define ATTRIBUTE 285
-#define EXTENSION 286
-#define LABEL 287
-#define REALPART 288
-#define IMAGPART 289
-#define VA_ARG 290
-#define AGGR 291
-#define VISSPEC 292
-#define DELETE 293
-#define NEW 294
-#define THIS 295
-#define OPERATOR 296
-#define CXX_TRUE 297
-#define CXX_FALSE 298
-#define NAMESPACE 299
-#define TYPENAME_KEYWORD 300
-#define USING 301
-#define LEFT_RIGHT 302
-#define TEMPLATE 303
-#define TYPEID 304
-#define DYNAMIC_CAST 305
-#define STATIC_CAST 306
-#define REINTERPRET_CAST 307
-#define CONST_CAST 308
-#define SCOPE 309
-#define EMPTY 310
-#define PTYPENAME 311
-#define NSNAME 312
-#define THROW 313
-#define ASSIGN 314
-#define OROR 315
-#define ANDAND 316
-#define MIN_MAX 317
-#define EQCOMPARE 318
-#define ARITHCOMPARE 319
-#define LSHIFT 320
-#define RSHIFT 321
-#define POINTSAT_STAR 322
-#define DOT_STAR 323
-#define UNARY 324
-#define PLUSPLUS 325
-#define MINUSMINUS 326
-#define HYPERUNARY 327
-#define POINTSAT 328
-#define TRY 329
-#define CATCH 330
-#define PRE_PARSED_FUNCTION_DECL 331
-#define EXTERN_LANG_STRING 332
-#define ALL 333
-#define PRE_PARSED_CLASS_DECL 334
-#define DEFARG 335
-#define DEFARG_MARKER 336
-#define TYPENAME_DEFN 337
-#define IDENTIFIER_DEFN 338
-#define PTYPENAME_DEFN 339
-#define END_OF_LINE 340
-#define END_OF_SAVED_INPUT 341
+#define IDENTIFIER 258
+#define TYPENAME 259
+#define SELFNAME 260
+#define PFUNCNAME 261
+#define SCSPEC 262
+#define TYPESPEC 263
+#define CV_QUALIFIER 264
+#define CONSTANT 265
+#define STRING 266
+#define ELLIPSIS 267
+#define SIZEOF 268
+#define ENUM 269
+#define IF 270
+#define ELSE 271
+#define WHILE 272
+#define DO 273
+#define FOR 274
+#define SWITCH 275
+#define CASE 276
+#define DEFAULT 277
+#define BREAK 278
+#define CONTINUE 279
+#define RETURN_KEYWORD 280
+#define GOTO 281
+#define ASM_KEYWORD 282
+#define TYPEOF 283
+#define ALIGNOF 284
+#define SIGOF 285
+#define ATTRIBUTE 286
+#define EXTENSION 287
+#define LABEL 288
+#define REALPART 289
+#define IMAGPART 290
+#define VA_ARG 291
+#define AGGR 292
+#define VISSPEC 293
+#define DELETE 294
+#define NEW 295
+#define THIS 296
+#define OPERATOR 297
+#define CXX_TRUE 298
+#define CXX_FALSE 299
+#define NAMESPACE 300
+#define TYPENAME_KEYWORD 301
+#define USING 302
+#define LEFT_RIGHT 303
+#define TEMPLATE 304
+#define TYPEID 305
+#define DYNAMIC_CAST 306
+#define STATIC_CAST 307
+#define REINTERPRET_CAST 308
+#define CONST_CAST 309
+#define SCOPE 310
+#define EMPTY 311
+#define PTYPENAME 312
+#define NSNAME 313
+#define THROW 314
+#define ASSIGN 315
+#define OROR 316
+#define ANDAND 317
+#define MIN_MAX 318
+#define EQCOMPARE 319
+#define ARITHCOMPARE 320
+#define LSHIFT 321
+#define RSHIFT 322
+#define POINTSAT_STAR 323
+#define DOT_STAR 324
+#define UNARY 325
+#define PLUSPLUS 326
+#define MINUSMINUS 327
+#define HYPERUNARY 328
+#define POINTSAT 329
+#define TRY 330
+#define CATCH 331
+#define PRE_PARSED_FUNCTION_DECL 332
+#define EXTERN_LANG_STRING 333
+#define ALL 334
+#define PRE_PARSED_CLASS_DECL 335
+#define DEFARG 336
+#define DEFARG_MARKER 337
+#define TYPENAME_DEFN 338
+#define IDENTIFIER_DEFN 339
+#define PTYPENAME_DEFN 340
+#define END_OF_LINE 341
+#define END_OF_SAVED_INPUT 342
extern YYSTYPE yylval;
diff --git a/gcc/cse.c b/gcc/cse.c
index 6c7aef31ecd..68fe7b04a92 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -9191,7 +9191,13 @@ delete_trivially_dead_insns (insns, nreg)
else if (GET_CODE (SET_DEST (PATTERN (insn))) != REG
|| REGNO (SET_DEST (PATTERN (insn))) < FIRST_PSEUDO_REGISTER
|| counts[REGNO (SET_DEST (PATTERN (insn)))] != 0
- || side_effects_p (SET_SRC (PATTERN (insn))))
+ || side_effects_p (SET_SRC (PATTERN (insn)))
+ /* An ADDRESSOF expression can turn into a use of the
+ internal arg pointer, so always consider the
+ internal arg pointer live. If it is truly dead,
+ flow will delete the initializing insn. */
+ || (SET_DEST (PATTERN (insn))
+ == current_function_internal_arg_pointer))
live_insn = 1;
}
else if (GET_CODE (PATTERN (insn)) == PARALLEL)
diff --git a/gcc/f/version.c b/gcc/f/version.c
index f84b6ae9e9f..7ca52c07c5d 100644
--- a/gcc/f/version.c
+++ b/gcc/f/version.c
@@ -1 +1 @@
-const char *ffe_version_string = "0.5.25 19990831 (experimental)";
+const char *ffe_version_string = "0.5.25 19990901 (experimental)";
diff --git a/gcc/java/parse-scan.c b/gcc/java/parse-scan.c
index 8ade4994a83..78fbbed1ce6 100644
--- a/gcc/java/parse-scan.c
+++ b/gcc/java/parse-scan.c
@@ -1378,7 +1378,7 @@ static const short yycheck[] = { 3,
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/local/gnu/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1571,7 +1571,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
-#line 196 "/usr/local/gnu/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -2159,7 +2159,7 @@ case 337:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/local/gnu/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
diff --git a/gcc/objc/objc-parse.c b/gcc/objc/objc-parse.c
index f34ec91a596..8aca1be2707 100644
--- a/gcc/objc/objc-parse.c
+++ b/gcc/objc/objc-parse.c
@@ -1708,7 +1708,7 @@ static const short yycheck[] = { 56,
53, 54
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1901,7 +1901,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
-#line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -5033,7 +5033,7 @@ case 568:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
diff --git a/gcc/regmove.c b/gcc/regmove.c
index e685fc08eb5..11a5c704dd4 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -1642,7 +1642,7 @@ find_matches (insn, matchp)
}
/* Try to replace output operand DST in SET, with input operand SRC. SET is
- the only set in INSN. INSN has just been recgnized and constrained.
+ the only set in INSN. INSN has just been recognized and constrained.
SRC is operand number OPERAND_NUMBER in INSN.
DST is operand number MATCH_NUMBER in INSN.
If BACKWARD is nonzero, we have been called in a backward pass.
@@ -1737,11 +1737,11 @@ fixup_match_1 (insn, set, src, src_subreg, dst, backward, operand_number,
if ((dst_note = find_regno_note (p, REG_DEAD, REGNO (dst)))
&& (GET_MODE (XEXP (dst_note, 0)) == GET_MODE (dst)))
{
- /* If an optimization is done, the flags for P may be changed.
- Check that P is not in or ending the shadow of a live flags
- register. Note that the `ending' part (p is a flags user)
- means that we have to check the _previous_ insn. */
- if (GET_MODE (PREV_INSN (p)) != VOIDmode)
+ /* If we would be moving INSN, check that we won't move it
+ into the shadow of a live a live flags register. */
+ /* ??? We only try to move it in front of P, although
+ we could move it anywhere between OVERLAP and P. */
+ if (overlap && GET_MODE (PREV_INSN (p)) != VOIDmode)
break;
if (! src_note)
@@ -1851,8 +1851,11 @@ fixup_match_1 (insn, set, src, src_subreg, dst, backward, operand_number,
break;
if (! src_note && reg_overlap_mentioned_p (src, PATTERN (p)))
{
- /* INSN was already checked to be movable when
- we found no REG_DEAD note for src on it. */
+ /* INSN was already checked to be movable wrt. the registers that it
+ sets / uses when we found no REG_DEAD note for src on it, but it
+ still might clobber the flags register. We'll have to check that
+ we won't insert it into the shadow of a live flags register when
+ we finally know where we are to move it. */
overlap = p;
src_note = find_reg_note (p, REG_DEAD, src);
}
diff --git a/gcc/reload.c b/gcc/reload.c
index 46479ac53e1..1ebe140a39f 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -161,7 +161,7 @@ a register with any other reload. */
or more reloads.
reload_secondary_in_reload
reload_secondary_out_reload
- int, gives the reload number of a secondary
+ int, gives the reload number of a secondary
reload, when needed; otherwise -1
reload_secondary_in_icode
reload_secondary_out_icode
@@ -237,9 +237,9 @@ struct decomposition
#ifdef SECONDARY_MEMORY_NEEDED
/* Save MEMs needed to copy from one class of registers to another. One MEM
- is used per mode, but normally only one or two modes are ever used.
+ is used per mode, but normally only one or two modes are ever used.
- We keep two versions, before and after register elimination. The one
+ We keep two versions, before and after register elimination. The one
after register elimination is record separately for each operand. This
is done in case the address is not valid to be sure that we separately
reload each. */
@@ -439,7 +439,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
if (icode != CODE_FOR_nothing)
{
- /* If IN_P is non-zero, the reload register will be the output in
+ /* If IN_P is non-zero, the reload register will be the output in
operand 0. If IN_P is zero, the reload register will be the input
in operand 1. Outputs should have an initial "=", which we must
skip. */
@@ -587,7 +587,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
#ifdef SECONDARY_MEMORY_NEEDED
/* If we need a memory location to copy between the two reload regs,
set it up now. Note that we do the input case before making
- the reload and the output case after. This is due to the
+ the reload and the output case after. This is due to the
way reloads are output. */
if (in_p && icode == CODE_FOR_nothing
@@ -613,7 +613,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
reload_when_needed[s_reload] = secondary_type;
reload_secondary_in_reload[s_reload] = in_p ? t_reload : -1;
reload_secondary_out_reload[s_reload] = ! in_p ? t_reload : -1;
- reload_secondary_in_icode[s_reload] = in_p ? t_icode : CODE_FOR_nothing;
+ reload_secondary_in_icode[s_reload] = in_p ? t_icode : CODE_FOR_nothing;
reload_secondary_out_icode[s_reload]
= ! in_p ? t_icode : CODE_FOR_nothing;
reload_secondary_p[s_reload] = 1;
@@ -634,7 +634,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
#ifdef SECONDARY_MEMORY_NEEDED
-/* Return a memory location that will be used to copy X in mode MODE.
+/* Return a memory location that will be used to copy X in mode MODE.
If we haven't already made a location for this mode in this insn,
call find_reloads_address on the location being returned. */
@@ -664,7 +664,7 @@ get_secondary_mem (x, mode, opnum, type)
if (secondary_memlocs_elim[(int) mode][opnum] != 0)
return secondary_memlocs_elim[(int) mode][opnum];
- /* If this is the first time we've tried to get a MEM for this mode,
+ /* If this is the first time we've tried to get a MEM for this mode,
allocate a new one. `something_changed' in reload will get set
by noticing that the frame size has changed. */
@@ -774,12 +774,12 @@ find_reusable_reload (p_in, out, class, type, opnum, dont_share)
/* We can use an existing reload if the class is right
and at least one of IN and OUT is a match
and the other is at worst neutral.
- (A zero compared against anything is neutral.)
+ (A zero compared against anything is neutral.)
If SMALL_REGISTER_CLASSES, don't use existing reloads unless they are
for the same thing since that can cause us to need more reload registers
than we otherwise would. */
-
+
for (i = 0; i < n_reloads; i++)
if ((reg_class_subset_p (class, reload_reg_class[i])
|| reg_class_subset_p (reload_reg_class[i], class))
@@ -794,8 +794,8 @@ find_reusable_reload (p_in, out, class, type, opnum, dont_share)
&& (in == 0 || reload_in[i] == 0 || MATCHES (reload_in[i], in))))
&& (reload_out[i] == 0 || ! earlyclobber_operand_p (reload_out[i]))
&& (reg_class_size[(int) class] == 1 || SMALL_REGISTER_CLASSES)
- && MERGABLE_RELOADS (type, reload_when_needed[i],
- opnum, reload_opnum[i]))
+ && MERGABLE_RELOADS (type, reload_when_needed[i],
+ opnum, reload_opnum[i]))
return i;
/* Reloading a plain reg for input can match a reload to postincrement
@@ -900,7 +900,7 @@ push_reload (in, out, inloc, outloc, class,
if (outmode == VOIDmode && out != 0)
outmode = GET_MODE (out);
- /* If IN is a pseudo register everywhere-equivalent to a constant, and
+ /* If IN is a pseudo register everywhere-equivalent to a constant, and
it is not in a hard register, reload straight from the constant,
since we want to get rid of such pseudo registers.
Often this is done earlier, but not always in find_reloads_address. */
@@ -1104,7 +1104,7 @@ push_reload (in, out, inloc, outloc, class,
((GET_MODE_SIZE (GET_MODE (SUBREG_REG (out))) - 1)
/ UNITS_PER_WORD)))
#endif
- ))
+ ))
|| (GET_CODE (SUBREG_REG (out)) == REG
&& REGNO (SUBREG_REG (out)) < FIRST_PSEUDO_REGISTER
&& ((GET_MODE_SIZE (outmode) <= UNITS_PER_WORD
@@ -1137,9 +1137,9 @@ push_reload (in, out, inloc, outloc, class,
{
out_subreg_loc = outloc;
outloc = &SUBREG_REG (out);
- out = *outloc;
+ out = *outloc;
#if ! defined (LOAD_EXTEND_OP) && ! defined (WORD_REGISTER_OPERATIONS)
- if (GET_CODE (out) == MEM
+ if (GET_CODE (out) == MEM
&& GET_MODE_SIZE (GET_MODE (out)) > GET_MODE_SIZE (outmode))
abort ();
#endif
@@ -1304,7 +1304,7 @@ push_reload (in, out, inloc, outloc, class,
if (in != 0 && GET_CODE (in) == REG
&& REGNO (in) < FIRST_PSEUDO_REGISTER
&& SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (in)),
- class, inmode))
+ class, inmode))
get_secondary_mem (in, inmode, opnum, type);
#endif
@@ -1634,10 +1634,10 @@ loc_mentioned_in_p (loc, in)
if (loc == &in->fld[i].rtx)
return 1;
if (fmt[i] == 'e')
- {
+ {
if (loc_mentioned_in_p (loc, XEXP (in, i)))
return 1;
- }
+ }
else if (fmt[i] == 'E')
for (j = XVECLEN (in, i) - 1; i >= 0; i--)
if (loc_mentioned_in_p (loc, XVECEXP (in, i, j)))
@@ -1806,10 +1806,10 @@ combine_reloads ()
<= HARD_REGNO_NREGS (REGNO (XEXP (note, 0)), GET_MODE (XEXP (note, 0))))
/* Ensure that a secondary or tertiary reload for this output
won't want this register. */
- && ((secondary_out = reload_secondary_out_reload[output_reload]) == -1
- || (! (TEST_HARD_REG_BIT
- (reg_class_contents[(int) reload_reg_class[secondary_out]],
- REGNO (XEXP (note, 0))))
+ && ((secondary_out = reload_secondary_out_reload[output_reload]) == -1
+ || (! (TEST_HARD_REG_BIT
+ (reg_class_contents[(int) reload_reg_class[secondary_out]],
+ REGNO (XEXP (note, 0))))
&& ((secondary_out = reload_secondary_out_reload[secondary_out]) == -1
|| ! (TEST_HARD_REG_BIT
(reg_class_contents[(int) reload_reg_class[secondary_out]],
@@ -2077,7 +2077,7 @@ operands_match_p (x, y)
register RTX_CODE code = GET_CODE (x);
register const char *fmt;
int success_2;
-
+
if (x == y)
return 1;
if ((code == REG || (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG))
@@ -2136,7 +2136,7 @@ operands_match_p (x, y)
slow:
- /* Now we have disposed of all the cases
+ /* Now we have disposed of all the cases
in which different rtx codes can match. */
if (code != GET_CODE (y))
return 0;
@@ -2207,11 +2207,11 @@ operands_match_p (x, y)
}
/* Describe the range of registers or memory referenced by X.
- If X is a register, set REG_FLAG and put the first register
+ If X is a register, set REG_FLAG and put the first register
number into START and the last plus one into END.
- If X is a memory reference, put a base address into BASE
+ If X is a memory reference, put a base address into BASE
and a range of integer offsets into START and END.
- If X is pushing on the stack, we can assume it causes no trouble,
+ If X is pushing on the stack, we can assume it causes no trouble,
so we set the SAFE field. */
static struct decomposition
@@ -2262,7 +2262,7 @@ decompose (x)
{
base = addr;
offset = const0_rtx;
- }
+ }
if (GET_CODE (offset) == CONST)
offset = XEXP (offset, 0);
if (GET_CODE (offset) == PLUS)
@@ -2303,7 +2303,7 @@ decompose (x)
else if (GET_CODE (x) == REG)
{
val.reg_flag = 1;
- val.start = true_regnum (x);
+ val.start = true_regnum (x);
if (val.start < 0)
{
/* A pseudo with no hard reg. */
@@ -2320,7 +2320,7 @@ decompose (x)
/* This could be more precise, but it's good enough. */
return decompose (SUBREG_REG (x));
val.reg_flag = 1;
- val.start = true_regnum (x);
+ val.start = true_regnum (x);
if (val.start < 0)
return decompose (SUBREG_REG (x));
else
@@ -2496,7 +2496,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if (reg_set_p (cc0_rtx, PATTERN (insn)))
no_output_reloads = 1;
#endif
-
+
#ifdef SECONDARY_MEMORY_NEEDED
/* The eliminated forms of any secondary memory locations are per-insn, so
clear them out here. */
@@ -2550,7 +2550,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
modified[i] = RELOAD_READ;
- /* Scan this operand's constraint to see if it is an output operand,
+ /* Scan this operand's constraint to see if it is an output operand,
an in-out operand, is commutative, or should match another. */
while ((c = *p++))
@@ -2605,7 +2605,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
and reload parts of the addresses into index registers.
Also here any references to pseudo regs that didn't get hard regs
but are equivalent to constants get replaced in the insn itself
- with those constants. Nobody will ever see them again.
+ with those constants. Nobody will ever see them again.
Finally, set up the preferred classes of each operand. */
@@ -2631,7 +2631,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
recog_operand[i], recog_operand_loc[i],
i, operand_type[i], ind_levels, insn);
- /* If we now have a simple operand where we used to have a
+ /* If we now have a simple operand where we used to have a
PLUS or MULT, re-recognize and try again. */
if ((GET_RTX_CLASS (GET_CODE (*recog_operand_loc[i])) == 'o'
|| GET_CODE (*recog_operand_loc[i]) == SUBREG)
@@ -2670,14 +2670,14 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
that didn't get a hard register, emit a USE with a REG_EQUAL
note in front so that we might inherit a previous, possibly
wider reload. */
-
+
if (replace
&& GET_CODE (op) == MEM
&& GET_CODE (reg) == REG
&& (GET_MODE_SIZE (GET_MODE (reg))
>= GET_MODE_SIZE (GET_MODE (op))))
- REG_NOTES (emit_insn_before (gen_rtx_USE (VOIDmode, reg), insn))
- = gen_rtx_EXPR_LIST (REG_EQUAL,
+ REG_NOTES (emit_insn_before (gen_rtx_USE (VOIDmode, reg), insn))
+ = gen_rtx_EXPR_LIST (REG_EQUAL,
reg_equiv_memory_loc[REGNO (reg)], NULL_RTX);
substed_operand[i] = recog_operand[i] = op;
@@ -2702,13 +2702,13 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
&& (set == 0 || &SET_DEST (set) != recog_operand_loc[i]))
{
/* Record the existing mode so that the check if constants are
- allowed will work when operand_mode isn't specified. */
+ allowed will work when operand_mode isn't specified. */
if (operand_mode[i] == VOIDmode)
operand_mode[i] = GET_MODE (recog_operand[i]);
substed_operand[i] = recog_operand[i]
- = reg_equiv_constant[regno];
+ = reg_equiv_constant[regno];
}
if (reg_equiv_memory_loc[regno] != 0
&& (reg_equiv_address[regno] != 0 || num_not_at_initial_offset))
@@ -2780,7 +2780,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* REJECT is a count of how undesirable this alternative says it is
if any reloading is required. If the alternative matches exactly
then REJECT is ignored, but otherwise it gets this much
- counted against it in addition to the reloading needed. Each
+ counted against it in addition to the reloading needed. Each
? counts three times here since we want the disparaging caused by
a bad register class to only count 1/3 as much. */
int reject = 0;
@@ -2808,7 +2808,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
int earlyclobber = 0;
/* If the predicate accepts a unary operator, it means that
- we need to reload the operand, but do not do this for
+ we need to reload the operand, but do not do this for
match_operator and friends. */
if (GET_RTX_CLASS (GET_CODE (operand)) == '1' && *p != 0)
operand = XEXP (operand, 0);
@@ -2838,10 +2838,10 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
made assumptions about the behavior of the machine in such
register access. If the data is, in fact, in memory we
must always load using the size assumed to be in the
- register and let the insn do the different-sized
+ register and let the insn do the different-sized
accesses.
- This is doubly true if WORD_REGISTER_OPERATIONS. In
+ This is doubly true if WORD_REGISTER_OPERATIONS. In
this case eliminate_regs has left non-paradoxical
subregs for push_reloads to see. Make sure it does
by forcing the reload.
@@ -2955,10 +2955,10 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
don't exchange them, because operands_match is valid
only on one side of its diagonal. */
? (operands_match
- [(c == commutative || c == commutative + 1)
- ? 2*commutative + 1 - c : c]
- [(i == commutative || i == commutative + 1)
- ? 2*commutative + 1 - i : i])
+ [(c == commutative || c == commutative + 1)
+ ? 2*commutative + 1 - c : c]
+ [(i == commutative || i == commutative + 1)
+ ? 2*commutative + 1 - i : i])
: operands_match[c][i])
{
/* If we are matching a non-offsettable address where an
@@ -3176,8 +3176,8 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* A SCRATCH is not a valid operand. */
&& GET_CODE (operand) != SCRATCH
#ifdef LEGITIMATE_PIC_OPERAND_P
- && (! CONSTANT_P (operand)
- || ! flag_pic
+ && (! CONSTANT_P (operand)
+ || ! flag_pic
|| LEGITIMATE_PIC_OPERAND_P (operand))
#endif
&& (GENERAL_REGS == ALL_REGS
@@ -3193,20 +3193,20 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
goto reg;
#ifdef EXTRA_CONSTRAINT
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
if (EXTRA_CONSTRAINT (operand, c))
win = 1;
break;
#endif
-
+
default:
this_alternative[i]
= (int) reg_class_subunion[this_alternative[i]][(int) REG_CLASS_FROM_LETTER (c)];
-
+
reg:
if (GET_MODE (operand) == BLKmode)
break;
@@ -3247,7 +3247,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* If this is a pseudo-register that is set in the previous
insns, there's a good chance that it will already be in a
spill register and we can use that spill register. So
- make this case cheaper.
+ make this case cheaper.
Disabled for egcs. egcs has better inheritance code and
this change causes problems with the improved reload
@@ -3263,14 +3263,14 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
reload. This is consistent with other code and is
required to avoid choosing another alternative when
the constant is moved into memory by this function on
- an early reload pass. Note that the test here is
+ an early reload pass. Note that the test here is
precisely the same as in the code below that calls
force_const_mem. */
if (CONSTANT_P (operand)
/* force_const_mem does not accept HIGH. */
&& GET_CODE (operand) != HIGH
&& ((PREFERRED_RELOAD_CLASS (operand,
- (enum reg_class) this_alternative[i])
+ (enum reg_class) this_alternative[i])
== NO_REGS)
|| no_input_reloads)
&& operand_mode[i] != VOIDmode)
@@ -3296,8 +3296,8 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
permitted for this insn. We can always reload SCRATCH
and objects with a REG_UNUSED note. */
else if (GET_CODE (operand) != SCRATCH
- && modified[i] != RELOAD_READ && no_output_reloads
- && ! find_reg_note (insn, REG_UNUSED, operand))
+ && modified[i] != RELOAD_READ && no_output_reloads
+ && ! find_reg_note (insn, REG_UNUSED, operand))
bad = 1;
else if (modified[i] != RELOAD_WRITE && no_input_reloads
&& ! const_to_mem)
@@ -3307,7 +3307,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* We prefer to reload pseudos over reloading other things,
since such reloads may be able to be eliminated later.
If we are reloading a SCRATCH, we won't be generating any
- insns, just using a register, so it is also preferred.
+ insns, just using a register, so it is also preferred.
So bump REJECT in other cases. Don't do this in the
case where we are forcing a constant into memory and
it will then win since we don't want to have a different
@@ -3325,7 +3325,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
reject++;
}
- /* If this operand is a pseudo register that didn't get a hard
+ /* If this operand is a pseudo register that didn't get a hard
reg and this alternative accepts some register, see if the
class that we want is a subset of the preferred class for this
register. If not, but it intersects that class, use the
@@ -3356,7 +3356,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
{
/* Since we don't have a way of forming the intersection,
we just do something special if the preferred class
- is a subset of the class we have; that's the most
+ is a subset of the class we have; that's the most
common case anyway. */
if (reg_class_subset_p (preferred_class[i],
this_alternative[i]))
@@ -3375,13 +3375,13 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if (this_alternative_earlyclobber[i]
&& this_alternative_win[i])
{
- struct decomposition early_data;
+ struct decomposition early_data;
early_data = decompose (recog_operand[i]);
if (modified[i] == RELOAD_READ)
abort ();
-
+
if (this_alternative[i] == NO_REGS)
{
this_alternative_earlyclobber[i] = 0;
@@ -3600,9 +3600,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
One special case that is worth checking is when we have an
output that is earlyclobber but isn't used past the insn (typically
- a SCRATCH). In this case, we only need have the reload live
+ a SCRATCH). In this case, we only need have the reload live
through the insn itself, but not for any of our input or output
- reloads.
+ reloads.
But we must not accidentally narrow the scope of an existing
RELOAD_OTHER reload - leave these alone.
@@ -3623,7 +3623,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* force_const_mem does not accept HIGH. */
&& GET_CODE (recog_operand[i]) != HIGH
&& ((PREFERRED_RELOAD_CLASS (recog_operand[i],
- (enum reg_class) goal_alternative[i])
+ (enum reg_class) goal_alternative[i])
== NO_REGS)
|| no_input_reloads)
&& operand_mode[i] != VOIDmode)
@@ -3763,7 +3763,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
&& goal_alternative_matches[i] < 0
&& optimize)
{
- /* For each non-matching operand that's a MEM or a pseudo-register
+ /* For each non-matching operand that's a MEM or a pseudo-register
that didn't get a hard register, make an optional reload.
This may get done even if the insn needs no reloads otherwise. */
@@ -3857,7 +3857,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
operand_mode[i],
0, 1, goal_alternative_matches[i], RELOAD_OTHER);
}
-
+
/* Perform whatever substitutions on the operands we are supposed
to make due to commutativity or replacement of registers
with equivalent constants or memory slots. */
@@ -3865,9 +3865,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
for (i = 0; i < noperands; i++)
{
/* We only do this on the last pass through reload, because it is
- possible for some data (like reg_equiv_address) to be changed during
- later passes. Moreover, we loose the opportunity to get a useful
- reload_{in,out}_reg when we do these replacements. */
+ possible for some data (like reg_equiv_address) to be changed during
+ later passes. Moreover, we loose the opportunity to get a useful
+ reload_{in,out}_reg when we do these replacements. */
if (replace)
{
@@ -3978,7 +3978,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
}
}
- /* Scan all the reloads and update their type.
+ /* Scan all the reloads and update their type.
If a reload is for the address of an operand and we didn't reload
that operand, change the type. Similarly, change the operand number
of a reload when two operands match. If a reload is optional, treat it
@@ -4023,7 +4023,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* If there's a tertiary reload we have to change it also. */
if (secondary_in_reload > 0
&& reload_secondary_in_reload[secondary_in_reload] != -1)
- reload_when_needed[reload_secondary_in_reload[secondary_in_reload]]
+ reload_when_needed[reload_secondary_in_reload[secondary_in_reload]]
= RELOAD_FOR_OPADDR_ADDR;
}
@@ -4039,7 +4039,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
/* If there's a tertiary reload we have to change it also. */
if (secondary_out_reload
&& reload_secondary_out_reload[secondary_out_reload] != -1)
- reload_when_needed[reload_secondary_out_reload[secondary_out_reload]]
+ reload_when_needed[reload_secondary_out_reload[secondary_out_reload]]
= RELOAD_FOR_OPADDR_ADDR;
}
@@ -4053,7 +4053,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
if ((reload_when_needed[i] == RELOAD_FOR_INPUT_ADDRESS
|| reload_when_needed[i] == RELOAD_FOR_INPADDR_ADDRESS)
&& operand_reloadnum[reload_opnum[i]] >= 0
- && (reload_when_needed[operand_reloadnum[reload_opnum[i]]]
+ && (reload_when_needed[operand_reloadnum[reload_opnum[i]]]
== RELOAD_OTHER))
reload_when_needed[i] = RELOAD_FOR_OTHER_ADDRESS;
@@ -4392,8 +4392,8 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn)
if (reg_equiv_constant[regno] != 0 && !is_set_dest)
x = reg_equiv_constant[regno];
#if 0
-/* This creates (subreg (mem...)) which would cause an unnecessary
- reload of the mem. */
+ /* This creates (subreg (mem...)) which would cause an unnecessary
+ reload of the mem. */
else if (reg_equiv_mem[regno] != 0)
x = reg_equiv_mem[regno];
#endif
@@ -4426,7 +4426,7 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn)
if (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG)
{
- /* Check for SUBREG containing a REG that's equivalent to a constant.
+ /* Check for SUBREG containing a REG that's equivalent to a constant.
If the constant has a known value, truncate it right now.
Similarly if we are extracting a single-word of a multi-word
constant. If the constant is symbolic, allow it to be substituted
@@ -4474,18 +4474,18 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn)
&& GET_CODE (reg_equiv_constant[regno]) == CONST_INT
&& (GET_MODE_SIZE (GET_MODE (x))
< GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))))
- {
- int shift = SUBREG_WORD (x) * BITS_PER_WORD;
- if (WORDS_BIG_ENDIAN)
- shift = (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x)))
- - GET_MODE_BITSIZE (GET_MODE (x))
- - shift);
- /* Here we use the knowledge that CONST_INTs have a
- HOST_WIDE_INT field. */
- if (shift >= HOST_BITS_PER_WIDE_INT)
- shift = HOST_BITS_PER_WIDE_INT - 1;
- return GEN_INT (INTVAL (reg_equiv_constant[regno]) >> shift);
- }
+ {
+ int shift = SUBREG_WORD (x) * BITS_PER_WORD;
+ if (WORDS_BIG_ENDIAN)
+ shift = (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x)))
+ - GET_MODE_BITSIZE (GET_MODE (x))
+ - shift);
+ /* Here we use the knowledge that CONST_INTs have a
+ HOST_WIDE_INT field. */
+ if (shift >= HOST_BITS_PER_WIDE_INT)
+ shift = HOST_BITS_PER_WIDE_INT - 1;
+ return GEN_INT (INTVAL (reg_equiv_constant[regno]) >> shift);
+ }
if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0
&& reg_equiv_constant[regno] != 0
@@ -4512,7 +4512,7 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn)
#endif
&& (reg_equiv_address[regno] != 0
|| (reg_equiv_mem[regno] != 0
- && (! strict_memory_address_p (GET_MODE (x),
+ && (! strict_memory_address_p (GET_MODE (x),
XEXP (reg_equiv_mem[regno], 0))
|| ! offsettable_memref_p (reg_equiv_mem[regno])
|| num_not_at_initial_offset))))
@@ -4827,7 +4827,7 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
/* If we have an indexed stack slot, there are three possible reasons why
it might be invalid: The index might need to be reloaded, the address
might have been made by frame pointer elimination and hence have a
- constant out of range, or both reasons might apply.
+ constant out of range, or both reasons might apply.
We can easily check for an index needing reload, but even if that is the
case, we might also have an invalid constant. To avoid making the
@@ -4868,7 +4868,7 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
*loc = ad = gen_rtx_PLUS (GET_MODE (ad),
plus_constant (XEXP (XEXP (ad, 0), 0),
INTVAL (XEXP (ad, 1))),
- XEXP (XEXP (ad, 0), 1));
+ XEXP (XEXP (ad, 0), 1));
find_reloads_address_part (XEXP (ad, 0), &XEXP (ad, 0), BASE_REG_CLASS,
GET_MODE (ad), opnum, type, ind_levels);
find_reloads_address_1 (mode, XEXP (ad, 1), 1, &XEXP (ad, 1), opnum,
@@ -4876,7 +4876,7 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
return 0;
}
-
+
else if (GET_CODE (ad) == PLUS && GET_CODE (XEXP (ad, 1)) == CONST_INT
&& GET_CODE (XEXP (ad, 0)) == PLUS
&& (XEXP (XEXP (ad, 0), 1) == frame_pointer_rtx
@@ -4900,7 +4900,7 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
return 0;
}
-
+
/* See if address becomes valid when an eliminable register
in a sum is replaced. */
@@ -5003,7 +5003,7 @@ subst_reg_equivs (ad, insn)
&& GET_CODE (XEXP (ad, 1)) == CONST_INT)
return ad;
break;
-
+
default:
break;
}
@@ -5095,9 +5095,9 @@ subst_indexed_address (addr)
&& reg_equiv_constant[regno] != 0)
op0 = reg_equiv_constant[regno];
else if (GET_CODE (op1) == REG
- && (regno = REGNO (op1)) >= FIRST_PSEUDO_REGISTER
- && reg_renumber[regno] < 0
- && reg_equiv_constant[regno] != 0)
+ && (regno = REGNO (op1)) >= FIRST_PSEUDO_REGISTER
+ && reg_renumber[regno] < 0
+ && reg_equiv_constant[regno] != 0)
op1 = reg_equiv_constant[regno];
else if (GET_CODE (op0) == PLUS
&& (tem = subst_indexed_address (op0)) != op0)
@@ -5191,7 +5191,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
REGNO (op1) + SUBREG_WORD (orig_op1));
}
- if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
+ if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
|| code0 == ZERO_EXTEND || code1 == MEM)
{
find_reloads_address_1 (mode, orig_op0, 1, &XEXP (x, 0), opnum,
@@ -5352,8 +5352,8 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
reloadnum
= push_reload (x, x, loc, loc,
(context ? INDEX_REG_CLASS : BASE_REG_CLASS),
- GET_MODE (x), GET_MODE (x), 0, 0,
- opnum, RELOAD_OTHER);
+ GET_MODE (x), GET_MODE (x), 0, 0,
+ opnum, RELOAD_OTHER);
/* If we created a new MEM based on reg_equiv_mem[REGNO], then
LOC above is part of the new MEM, not the MEM in INSN.
@@ -5372,7 +5372,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
opnum, type);
reload_inc[reloadnum]
= find_inc_amount (PATTERN (this_insn), XEXP (x_orig, 0));
-
+
value = 1;
}
@@ -5548,7 +5548,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
}
}
break;
-
+
default:
break;
}
@@ -5926,7 +5926,7 @@ refers_to_regno_for_reload_p (regno, endregno, x, loc)
}
return (endregno > i
- && regno < i + (i < FIRST_PSEUDO_REGISTER
+ && regno < i + (i < FIRST_PSEUDO_REGISTER
? HARD_REGNO_NREGS (i, GET_MODE (x))
: 1));
@@ -5970,7 +5970,7 @@ refers_to_regno_for_reload_p (regno, endregno, x, loc)
return 0;
x = SET_SRC (x);
goto repeat;
-
+
default:
break;
}
@@ -6009,7 +6009,7 @@ refers_to_regno_for_reload_p (regno, endregno, x, loc)
we check if any register number in X conflicts with the relevant register
numbers. If X is a constant, return 0. If X is a MEM, return 1 iff IN
contains a MEM (we don't bother checking for memory addresses that can't
- conflict because we expect this to be a rare case.
+ conflict because we expect this to be a rare case.
This function is similar to reg_overlap_mention_p in rtlanal.c except
that we look at equivalences for pseudos that didn't get hard registers. */
@@ -6079,14 +6079,14 @@ refers_to_mem_for_reload_p (x)
if (GET_CODE (x) == REG)
return (REGNO (x) >= FIRST_PSEUDO_REGISTER
&& reg_equiv_memory_loc[REGNO (x)]);
-
+
fmt = GET_RTX_FORMAT (GET_CODE (x));
for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)
if (fmt[i] == 'e'
&& (GET_CODE (XEXP (x, i)) == MEM
|| refers_to_mem_for_reload_p (XEXP (x, i))))
return 1;
-
+
return 0;
}
@@ -6178,12 +6178,12 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
/* On some machines, certain regs must always be rejected
because they don't behave the way ordinary registers do. */
-
+
#ifdef OVERLAPPING_REGNO_P
- if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
- && OVERLAPPING_REGNO_P (regno))
- return 0;
-#endif
+ if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
+ && OVERLAPPING_REGNO_P (regno))
+ return 0;
+#endif
/* Scan insns back from INSN, looking for one that copies
a value into or out of GOAL.
@@ -6198,13 +6198,13 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
/* If we don't want spill regs ... */
&& (! (reload_reg_p != 0
&& reload_reg_p != (short *) (HOST_WIDE_INT) 1)
- /* ... then ignore insns introduced by reload; they aren't useful
- and can cause results in reload_as_needed to be different
- from what they were when calculating the need for spills.
- If we notice an input-reload insn here, we will reject it below,
- but it might hide a usable equivalent. That makes bad code.
- It may even abort: perhaps no reg was spilled for this insn
- because it was assumed we would find that equivalent. */
+ /* ... then ignore insns introduced by reload; they aren't useful
+ and can cause results in reload_as_needed to be different
+ from what they were when calculating the need for spills.
+ If we notice an input-reload insn here, we will reject it below,
+ but it might hide a usable equivalent. That makes bad code.
+ It may even abort: perhaps no reg was spilled for this insn
+ because it was assumed we would find that equivalent. */
|| INSN_UID (p) < reload_first_uid))
{
rtx tem;
@@ -6325,11 +6325,11 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
/* On some machines, certain regs must always be rejected
because they don't behave the way ordinary registers do. */
-
+
#ifdef OVERLAPPING_REGNO_P
if (OVERLAPPING_REGNO_P (valueno))
return 0;
-#endif
+#endif
nregs = HARD_REGNO_NREGS (regno, mode);
valuenregs = HARD_REGNO_NREGS (valueno, mode);
@@ -6380,7 +6380,7 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
|| need_stable_sp))
return 0;
-#ifdef NON_SAVING_SETJMP
+#ifdef NON_SAVING_SETJMP
if (NON_SAVING_SETJMP && GET_CODE (p) == NOTE
&& NOTE_LINE_NUMBER (p) == NOTE_INSN_SETJMP)
return 0;
@@ -6388,9 +6388,9 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
#ifdef INSN_CLOBBERS_REGNO_P
if ((valueno >= 0 && valueno < FIRST_PSEUDO_REGISTER
- && INSN_CLOBBERS_REGNO_P (p, valueno))
+ && INSN_CLOBBERS_REGNO_P (p, valueno))
|| (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
- && INSN_CLOBBERS_REGNO_P (p, regno)))
+ && INSN_CLOBBERS_REGNO_P (p, regno)))
return 0;
#endif
@@ -6398,8 +6398,8 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
{
pat = PATTERN (p);
- /* Watch out for unspec_volatile, and volatile asms. */
- if (volatile_insn_p (pat))
+ /* Watch out for unspec_volatile, and volatile asms. */
+ if (volatile_insn_p (pat))
return 0;
/* If this insn P stores in either GOAL or VALUE, return 0.
@@ -6640,16 +6640,16 @@ regno_clobbered_p (regno, insn)
static const char *reload_when_needed_name[] =
{
- "RELOAD_FOR_INPUT",
- "RELOAD_FOR_OUTPUT",
+ "RELOAD_FOR_INPUT",
+ "RELOAD_FOR_OUTPUT",
"RELOAD_FOR_INSN",
"RELOAD_FOR_INPUT_ADDRESS",
"RELOAD_FOR_INPADDR_ADDRESS",
"RELOAD_FOR_OUTPUT_ADDRESS",
"RELOAD_FOR_OUTADDR_ADDRESS",
- "RELOAD_FOR_OPERAND_ADDRESS",
+ "RELOAD_FOR_OPERAND_ADDRESS",
"RELOAD_FOR_OPADDR_ADDR",
- "RELOAD_OTHER",
+ "RELOAD_OTHER",
"RELOAD_FOR_OTHER_ADDRESS"
};
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 83ebad3c6bc..8b92b431eff 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -165,7 +165,7 @@ static rtx spill_reg_stored_to[FIRST_PSEUDO_REGISTER];
/* This table is the inverse mapping of spill_regs:
indexed by hard reg number,
it contains the position of that reg in spill_regs,
- or -1 for something that is not in spill_regs.
+ or -1 for something that is not in spill_regs.
?!? This is no longer accurate. */
static short spill_reg_order[FIRST_PSEUDO_REGISTER];
@@ -680,7 +680,7 @@ reload (first, global, dumpfile)
/* Look for REG_EQUIV notes; record what each pseudo is equivalent to.
Also find all paradoxical subregs and find largest such for each pseudo.
On machines with small register classes, record hard registers that
- are used for user variables. These can never be used for spills.
+ are used for user variables. These can never be used for spills.
Also look for a "constant" NOTE_INSN_SETJMP. This means that all
caller-saved registers must be marked live. */
@@ -837,7 +837,7 @@ reload (first, global, dumpfile)
insns_need_reload = 0;
something_needs_elimination = 0;
-
+
/* Initialize to -1, which means take the first spill register. */
last_spill_reg = -1;
@@ -1179,14 +1179,14 @@ reload (first, global, dumpfile)
if (flag_stack_check && ! STACK_CHECK_BUILTIN)
{
HOST_WIDE_INT size = get_frame_size () + STACK_CHECK_FIXED_FRAME_SIZE;
- static int verbose_warned = 0;
-
+ static int verbose_warned = 0;
+
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (regs_ever_live[i] && ! fixed_regs[i] && call_used_regs[i])
size += UNITS_PER_WORD;
if (size > STACK_CHECK_MAX_FRAME_SIZE)
- {
+ {
warning ("frame size too large for reliable stack checking");
if (! verbose_warned)
{
@@ -1324,7 +1324,7 @@ maybe_fix_stack_asms ()
default:
cls = (int) reg_class_subunion[cls][(int) REG_CLASS_FROM_LETTER (c)];
-
+
}
}
}
@@ -2009,7 +2009,7 @@ find_reload_regs (chain, dumpfile)
return;
}
}
-
+
/* We know which hard regs to use, now mark the pseudos that live in them
as needing to be kicked out. */
EXECUTE_IF_SET_IN_REG_SET
@@ -2296,9 +2296,9 @@ new_spill_reg (chain, i, class, nongroup, dumpfile)
if (asm_noperands (PATTERN (chain->insn)) < 0)
{
- /* The error message is still correct - we know only that it wasn't
- an asm statement that caused the problem, but one of the global
- registers declared by the users might have screwed us. */
+ /* The error message is still correct - we know only that it wasn't
+ an asm statement that caused the problem, but one of the global
+ registers declared by the users might have screwed us. */
error ("fixed or forbidden register %d (%s) was spilled for class %s.",
regno, reg_names[regno], reg_class_names[class]);
error ("This may be due to a compiler bug or to impossible asm");
@@ -2464,7 +2464,7 @@ alter_reg (i, from_reg)
stack_slot = gen_rtx_MEM (mode_for_size (total_size
* BITS_PER_UNIT,
MODE_INT, 1),
- plus_constant (XEXP (x, 0), adjust));
+ plus_constant (XEXP (x, 0), adjust));
}
spill_stack_slot[from_reg] = stack_slot;
spill_stack_slot_width[from_reg] = total_size;
@@ -2480,7 +2480,7 @@ alter_reg (i, from_reg)
if (adjust != 0 || GET_MODE (x) != GET_MODE (regno_reg_rtx[i]))
{
x = gen_rtx_MEM (GET_MODE (regno_reg_rtx[i]),
- plus_constant (XEXP (x, 0), adjust));
+ plus_constant (XEXP (x, 0), adjust));
/* If this was shared among registers, must ensure we never
set it readonly since that can cause scheduling
@@ -2656,7 +2656,7 @@ set_label_offsets (x, insn, initial_p)
if (p->offset != p->initial_offset)
p->can_eliminate = 0;
break;
-
+
default:
break;
}
@@ -2851,7 +2851,7 @@ eliminate_regs (x, mem_mode, insn)
return x;
case MULT:
- /* If this is the product of an eliminable register and a
+ /* If this is the product of an eliminable register and a
constant, apply the distribute law and move the constant out
so that we have (plus (mult ..) ..). This is needed in order
to keep load-address insns valid. This case is pathological.
@@ -2993,7 +2993,7 @@ eliminate_regs (x, mem_mode, insn)
&& GET_CODE (insn) != INSN_LIST)
REG_NOTES (emit_insn_before (gen_rtx_USE (VOIDmode,
SUBREG_REG (x)),
- insn))
+ insn))
= gen_rtx_EXPR_LIST (REG_EQUAL, new, NULL_RTX);
/* Ensure NEW isn't shared in case we have to reload it. */
@@ -3016,10 +3016,10 @@ eliminate_regs (x, mem_mode, insn)
#ifdef WORD_REGISTER_OPERATIONS
/* On these machines, combine can create rtl of the form
(set (subreg:m1 (reg:m2 R) 0) ...)
- where m1 < m2, and expects something interesting to
+ where m1 < m2, and expects something interesting to
happen to the entire word. Moreover, it will use the
(reg:m2 R) later, expecting all bits to be preserved.
- So if the number of words is the same, preserve the
+ So if the number of words is the same, preserve the
subreg so that push_reloads can see it. */
&& ! ((x_size-1)/UNITS_PER_WORD == (new_size-1)/UNITS_PER_WORD)
#endif
@@ -3193,7 +3193,7 @@ eliminate_regs (x, mem_mode, insn)
}
else
return x;
-
+
default:
break;
}
@@ -3399,7 +3399,7 @@ eliminate_regs_in_insn (insn, replace)
old_asm_operands_vec = 0;
/* Replace the body of this insn with a substituted form. If we changed
- something, return non-zero.
+ something, return non-zero.
If we are replacing a body that was a (set X (plus Y Z)), try to
re-recognize the insn. We do this in case we had a simple addition
@@ -3573,7 +3573,7 @@ verify_initial_elim_offsets ()
INITIAL_FRAME_POINTER_OFFSET (t);
if (t != reg_eliminate[0].initial_offset)
abort ();
-#endif
+#endif
}
/* Reset all offsets on eliminable registers to their initial values. */
@@ -3734,7 +3734,7 @@ init_elim_table ()
bzero ((PTR) reg_eliminate,
sizeof(struct elim_table) * NUM_ELIMINABLE_REGS);
}
-
+
/* Does this function require a frame pointer? */
frame_pointer_needed = (! flag_omit_frame_pointer
@@ -3826,7 +3826,7 @@ ior_hard_reg_set (set1, set2)
{
IOR_HARD_REG_SET (*set1, *set2);
}
-
+
/* After find_reload_regs has been run for all insn that need reloads,
and/or spill_hard_regs was called, this function is used to actually
spill pseudo registers and try to reallocate them. It also sets up the
@@ -3907,7 +3907,7 @@ finish_spills (global, dumpfile)
/* Retry allocating the spilled pseudos. For each reg, merge the
various reg sets that indicate which hard regs can't be used,
and call retry_global_alloc.
- We change spill_pseudos here to only contain pseudos that did not
+ We change spill_pseudos here to only contain pseudos that did not
get a new hard register. */
for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
if (reg_old_renumber[i] != reg_renumber[i])
@@ -3962,7 +3962,7 @@ finish_spills (global, dumpfile)
int regno = reg_renumber[i];
if (reg_old_renumber[i] == regno)
continue;
-
+
alter_reg (i, reg_old_renumber[i]);
reg_old_renumber[i] = regno;
if (dumpfile)
@@ -3978,7 +3978,7 @@ finish_spills (global, dumpfile)
return something_changed;
}
-/* Find all paradoxical subregs within X and update reg_max_ref_width.
+/* Find all paradoxical subregs within X and update reg_max_ref_width.
Also mark any hard registers used to store user variables as
forbidden from being used for spill registers. */
@@ -4017,7 +4017,7 @@ scan_paradoxical_subregs (x)
reg_max_ref_width[REGNO (SUBREG_REG (x))]
= GET_MODE_SIZE (GET_MODE (x));
return;
-
+
default:
break;
}
@@ -4040,7 +4040,7 @@ static int
hard_reg_use_compare (p1p, p2p)
const GENERIC_PTR p1p;
const GENERIC_PTR p2p;
-{
+{
struct hard_reg_n_uses *p1 = (struct hard_reg_n_uses *)p1p;
struct hard_reg_n_uses *p2 = (struct hard_reg_n_uses *)p2p;
int bad1 = TEST_HARD_REG_BIT (bad_spill_regs, p1->regno);
@@ -4082,7 +4082,7 @@ count_pseudo (n_uses, reg)
nregs = HARD_REGNO_NREGS (r, PSEUDO_REGNO_MODE (reg));
while (nregs-- > 0)
- n_uses[r++].uses += REG_N_REFS (reg);
+ n_uses[r++].uses += REG_N_REFS (reg);
}
/* Choose the order to consider regs for use as reload registers
based on how much trouble would be caused by spilling one.
@@ -4287,7 +4287,7 @@ reload_as_needed (live_known)
Record the choices of reload reg in reload_reg_rtx. */
choose_reload_regs (chain);
- /* Merge any reloads that we didn't combine for fear of
+ /* Merge any reloads that we didn't combine for fear of
increasing the number of spill registers needed but now
discover can be safely merged. */
if (SMALL_REGISTER_CLASSES)
@@ -4357,7 +4357,7 @@ reload_as_needed (live_known)
some other (e.g. output operand) pseudo. */
&& (reg_reloaded_contents[REGNO (reload_reg_rtx[i])]
== REGNO (XEXP (in_reg, 0))))
-
+
{
rtx reload_reg = reload_reg_rtx[i];
enum machine_mode mode = GET_MODE (reload_reg);
@@ -4397,7 +4397,7 @@ reload_as_needed (live_known)
reload_reg, p);
break;
}
-
+
}
break;
}
@@ -4755,7 +4755,7 @@ clear_reload_reg_in_use (regno, opnum, type, mode)
more then what would be necessary if we used a HARD_REG_SET here.
But this should only happen very infrequently, so there should
be no reason to worry about it. */
-
+
start_regno = regno;
end_regno = regno + nregs;
if (check_opnum || check_any)
@@ -4857,8 +4857,8 @@ reload_reg_free_p (regno, opnum, type)
case RELOAD_FOR_INPADDR_ADDRESS:
/* Can't use a register if it is used for an input address
- for this operand or used as an input in an earlier
- one. */
+ for this operand or used as an input in an earlier
+ one. */
if (TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[opnum], regno))
return 0;
@@ -4882,8 +4882,8 @@ reload_reg_free_p (regno, opnum, type)
case RELOAD_FOR_OUTADDR_ADDRESS:
/* Can't use a register if it is used for an output address
- for this operand or used as an output in this or a
- later operand. */
+ for this operand or used as an output in this or a
+ later operand. */
if (TEST_HARD_REG_BIT (reload_reg_used_in_outaddr_addr[opnum], regno))
return 0;
@@ -4903,8 +4903,8 @@ reload_reg_free_p (regno, opnum, type)
case RELOAD_FOR_OPADDR_ADDR:
for (i = 0; i < reload_n_operands; i++)
- if (TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno))
- return 0;
+ if (TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno))
+ return 0;
return (!TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno));
@@ -4964,7 +4964,7 @@ reload_reg_reaches_end_p (regno, opnum, type)
return 1;
/* If this use is for part of the insn,
- its value reaches if no subsequent part uses the same register.
+ its value reaches if no subsequent part uses the same register.
Just like the above function, don't try to do this with lots
of fallthroughs. */
@@ -5015,7 +5015,7 @@ reload_reg_reaches_end_p (regno, opnum, type)
case RELOAD_FOR_INPUT:
/* Similar to input address, except we start at the next operand for
- both input and input address and we do not check for
+ both input and input address and we do not check for
RELOAD_FOR_OPERAND_ADDRESS and RELOAD_FOR_INSN since these
would conflict. */
@@ -5095,7 +5095,7 @@ reloads_conflict (r1, r2)
switch (r1_type)
{
case RELOAD_FOR_INPUT:
- return (r2_type == RELOAD_FOR_INSN
+ return (r2_type == RELOAD_FOR_INSN
|| r2_type == RELOAD_FOR_OPERAND_ADDRESS
|| r2_type == RELOAD_FOR_OPADDR_ADDR
|| r2_type == RELOAD_FOR_INPUT
@@ -5124,7 +5124,7 @@ reloads_conflict (r1, r2)
|| r2_type == RELOAD_FOR_OPERAND_ADDRESS);
case RELOAD_FOR_OPADDR_ADDR:
- return (r2_type == RELOAD_FOR_INPUT
+ return (r2_type == RELOAD_FOR_INPUT
|| r2_type == RELOAD_FOR_OPADDR_ADDR);
case RELOAD_FOR_OUTPUT:
@@ -5190,7 +5190,7 @@ int reload_spill_index[MAX_RELOADS];
register. */
static int
reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
- ignore_address_reloads)
+ ignore_address_reloads)
int regno;
int opnum;
enum reload_type type;
@@ -5231,12 +5231,12 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
case RELOAD_OTHER:
time1 = copy ? 1 : MAX_RECOG_OPERANDS * 5 + 5;
break;
- /* For each input, we might have a sequence of RELOAD_FOR_INPADDR_ADDRESS,
- RELOAD_FOR_INPUT_ADDRESS and RELOAD_FOR_INPUT. By adding 0 / 1 / 2 ,
- respectively, to the time values for these, we get distinct time
- values. To get distinct time values for each operand, we have to
- multiply opnum by at least three. We round that up to four because
- multiply by four is often cheaper. */
+ /* For each input, we may have a sequence of RELOAD_FOR_INPADDR_ADDRESS,
+ RELOAD_FOR_INPUT_ADDRESS and RELOAD_FOR_INPUT. By adding 0 / 1 / 2 ,
+ respectively, to the time values for these, we get distinct time
+ values. To get distinct time values for each operand, we have to
+ multiply opnum by at least three. We round that up to four because
+ multiply by four is often cheaper. */
case RELOAD_FOR_INPADDR_ADDRESS:
time1 = opnum * 4 + 2;
break;
@@ -5249,8 +5249,8 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
time1 = copy ? opnum * 4 + 4 : MAX_RECOG_OPERANDS * 4 + 3;
break;
case RELOAD_FOR_OPADDR_ADDR:
- /* opnum * 4 + 4
- <= (MAX_RECOG_OPERANDS - 1) * 4 + 4 == MAX_RECOG_OPERANDS * 4 */
+ /* opnum * 4 + 4
+ <= (MAX_RECOG_OPERANDS - 1) * 4 + 4 == MAX_RECOG_OPERANDS * 4 */
time1 = MAX_RECOG_OPERANDS * 4 + 1;
break;
case RELOAD_FOR_OPERAND_ADDRESS:
@@ -5319,8 +5319,8 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
case RELOAD_FOR_INPUT:
time2 = reload_opnum[i] * 4 + 4;
break;
- /* reload_opnum[i] * 4 + 4 <= (MAX_RECOG_OPERAND - 1) * 4 + 4
- == MAX_RECOG_OPERAND * 4 */
+ /* reload_opnum[i] * 4 + 4 <= (MAX_RECOG_OPERAND - 1) * 4 + 4
+ == MAX_RECOG_OPERAND * 4 */
case RELOAD_FOR_OPADDR_ADDR:
if (type == RELOAD_FOR_OPERAND_ADDRESS && reloadnum == i + 1
&& ignore_address_reloads
@@ -5335,13 +5335,13 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
time2 = MAX_RECOG_OPERANDS * 4 + 3;
break;
case RELOAD_FOR_OUTPUT:
- /* All RELOAD_FOR_OUTPUT reloads become live just after the
- instruction is executed. */
+ /* All RELOAD_FOR_OUTPUT reloads become live just after the
+ instruction is executed. */
time2 = MAX_RECOG_OPERANDS * 4 + 4;
break;
- /* The first RELOAD_FOR_OUTADDR_ADDRESS reload conflicts with
- the RELOAD_FOR_OUTPUT reloads, so assign it the same time
- value. */
+ /* The first RELOAD_FOR_OUTADDR_ADDRESS reload conflicts with
+ the RELOAD_FOR_OUTPUT reloads, so assign it the same time
+ value. */
case RELOAD_FOR_OUTADDR_ADDRESS:
if (type == RELOAD_FOR_OUTPUT_ADDRESS && reloadnum == i + 1
&& ignore_address_reloads
@@ -5438,7 +5438,7 @@ allocate_reload_reg (chain, r, last_reload, noerror)
of leapfrogging each other. Don't do this, however, when we have
group needs and failure would be fatal; if we only have a relatively
small number of spill registers, and more than one of them has
- group needs, then by starting in the middle, we may end up
+ group needs, then by starting in the middle, we may end up
allocating the first one in such a way that we are not left with
sufficient groups to handle the rest. */
@@ -5446,7 +5446,7 @@ allocate_reload_reg (chain, r, last_reload, noerror)
i = last_spill_reg;
else
i = -1;
-
+
for (count = 0; count < n_spills; count++)
{
int class = (int) reload_reg_class[r];
@@ -5460,14 +5460,14 @@ allocate_reload_reg (chain, r, last_reload, noerror)
if ((reload_reg_free_p (regnum, reload_opnum[r],
reload_when_needed[r])
|| (reload_in[r]
- /* We check reload_reg_used to make sure we
- don't clobber the return register. */
+ /* We check reload_reg_used to make sure we
+ don't clobber the return register. */
&& ! TEST_HARD_REG_BIT (reload_reg_used, regnum)
&& reload_reg_free_for_value_p (regnum,
- reload_opnum[r],
- reload_when_needed[r],
- reload_in[r],
- reload_out[r], r, 1)))
+ reload_opnum[r],
+ reload_when_needed[r],
+ reload_in[r],
+ reload_out[r], r, 1)))
&& TEST_HARD_REG_BIT (reg_class_contents[class], regnum)
&& HARD_REGNO_MODE_OK (regnum, reload_mode[r])
/* Look first for regs to share, then for unshared. But
@@ -5536,7 +5536,7 @@ allocate_reload_reg (chain, r, last_reload, noerror)
if (new == 0 || GET_MODE (new) != reload_mode[r])
spill_reg_rtx[i] = new
= gen_rtx_REG (reload_mode[r], spill_regs[i]);
-
+
regno = true_regnum (new);
/* Detect when the reload reg can't hold the reload mode.
@@ -5661,7 +5661,7 @@ choose_reload_regs (chain)
}
IOR_COMPL_HARD_REG_SET (reload_reg_used, chain->used_spill_regs);
-
+
#if 0 /* Not needed, now that we can always retry without inheritance. */
/* See if we have more mandatory reloads than spill regs.
If so, then we cannot risk optimizations that could prevent
@@ -5699,10 +5699,10 @@ choose_reload_regs (chain)
reload_spill_index[j] = -1;
reload_mode[j]
- = (reload_inmode[j] == VOIDmode
+ = ((reload_inmode[j] == VOIDmode
|| (GET_MODE_SIZE (reload_outmode[j])
> GET_MODE_SIZE (reload_inmode[j])))
- ? reload_outmode[j] : reload_inmode[j];
+ ? reload_outmode[j] : reload_inmode[j]);
reload_nregs[j] = CLASS_MAX_NREGS (reload_reg_class[j], reload_mode[j]);
@@ -5893,7 +5893,7 @@ choose_reload_regs (chain)
{
enum reg_class class = reload_reg_class[r], last_class;
rtx last_reg = reg_last_reload_reg[regno];
-
+
i = REGNO (last_reg) + word;
last_class = REGNO_REG_CLASS (i);
if ((GET_MODE_SIZE (GET_MODE (last_reg))
@@ -6177,7 +6177,7 @@ choose_reload_regs (chain)
&& reg_classes_intersect_p (reload_reg_class[r],
reload_reg_class[s]))
|| reload_nregs[s] < reload_nregs[r])
- break;
+ break;
}
if (i == n_reloads)
@@ -6270,15 +6270,15 @@ choose_reload_regs (chain)
check_reg = reload_reg_rtx[r];
else if (reload_override_in[r]
&& (GET_CODE (reload_override_in[r]) == REG
- || GET_CODE (reload_override_in[r]) == SUBREG))
+ || GET_CODE (reload_override_in[r]) == SUBREG))
check_reg = reload_override_in[r];
else
continue;
if (! reload_reg_free_for_value_p (true_regnum (check_reg),
- reload_opnum[r],
- reload_when_needed[r],
- reload_in[r],
- (reload_inherited[r]
+ reload_opnum[r],
+ reload_when_needed[r],
+ reload_in[r],
+ (reload_inherited[r]
? reload_out[r] : const0_rtx),
r, 1))
{
@@ -6387,7 +6387,7 @@ deallocate_reload_reg (r)
/* If SMALL_REGISTER_CLASSES is non-zero, we may not have merged two
reloads of the same item for fear that we might not have enough reload
registers. However, normally they will get the same reload register
- and hence actually need not be loaded twice.
+ and hence actually need not be loaded twice.
Here we check for the most common case of this phenomenon: when we have
a number of reloads for the same object, each of which were allocated
@@ -6492,7 +6492,7 @@ merge_assigned_reloads (insn)
? RELOAD_FOR_OTHER_ADDRESS : RELOAD_OTHER);
}
}
-}
+}
/* Output insns to reload values in and out of the chosen reload regs. */
@@ -6790,7 +6790,7 @@ emit_reload_insns (chain)
uses the same reg first. */
&& reload_reg_free_for_value_p (REGNO (reloadreg),
reload_opnum[j],
- reload_when_needed[j],
+ reload_when_needed[j],
old, reload_out[j],
j, 0))
{
@@ -6871,12 +6871,12 @@ emit_reload_insns (chain)
equivalent MEM, we must fall back to reload_in, which
will have all the necessary substitutions registered.
Likewise for a pseudo that can't be replaced with its
- equivalent constant.
+ equivalent constant.
Take extra care for subregs of such pseudos. Note that
we cannot use reg_equiv_mem in this case because it is
not in the right mode. */
-
+
tmp = oldequiv;
if (GET_CODE (tmp) == SUBREG)
tmp = SUBREG_REG (tmp);
@@ -6964,7 +6964,7 @@ emit_reload_insns (chain)
to see if it is being used as a scratch or intermediate
register and generate code appropriately. If we need
a scratch register, use REAL_OLDEQUIV since the form of
- the insn may depend on the actual address if it is
+ the insn may depend on the actual address if it is
a MEM. */
if (second_reload_reg)
@@ -6985,7 +6985,7 @@ emit_reload_insns (chain)
if (tertiary_icode != CODE_FOR_nothing)
{
rtx third_reload_reg
- = reload_reg_rtx[reload_secondary_in_reload[secondary_reload]];
+ = reload_reg_rtx[reload_secondary_in_reload[secondary_reload]];
emit_insn ((GEN_FCN (tertiary_icode)
(second_reload_reg, real_oldequiv,
@@ -7064,12 +7064,12 @@ emit_reload_insns (chain)
/* There doesn't seem to be any reason to restrict this to pseudos
and doing so loses in the case where we are copying from a
register of the wrong class. */
- && REGNO (spill_reg_stored_to[REGNO (reload_reg_rtx[j])])
- >= FIRST_PSEUDO_REGISTER
+ && (REGNO (spill_reg_stored_to[REGNO (reload_reg_rtx[j])])
+ >= FIRST_PSEUDO_REGISTER)
#endif
- /* The insn might have already some references to stackslots
- replaced by MEMs, while reload_out_reg still names the
- original pseudo. */
+ /* The insn might have already some references to stackslots
+ replaced by MEMs, while reload_out_reg still names the
+ original pseudo. */
&& (dead_or_set_p (insn,
spill_reg_stored_to[REGNO (reload_reg_rtx[j])])
|| rtx_equal_p (spill_reg_stored_to[REGNO (reload_reg_rtx[j])],
@@ -7088,7 +7088,7 @@ emit_reload_insns (chain)
store. */
{
rtx pseudo = reload_out_reg[j];
-
+
if (pseudo
&& GET_CODE (pseudo) == REG
&& ! rtx_equal_p (reload_in_reg[j], pseudo)
@@ -7320,8 +7320,8 @@ emit_reload_insns (chain)
has and where the actual store to the pseudo is
made; leave new_spill_reg_store alone. */
else if (s >= 0
- && SET_SRC (set) == reload_reg_rtx[j]
- && SET_DEST (set) == reload_reg_rtx[s])
+ && SET_SRC (set) == reload_reg_rtx[j]
+ && SET_DEST (set) == reload_reg_rtx[s])
{
/* Usually the next instruction will be the
secondary reload insn; if we can confirm
@@ -7407,9 +7407,9 @@ emit_reload_insns (chain)
if (n_basic_blocks)
{
if (BLOCK_HEAD (chain->block) == insn)
- BLOCK_HEAD (chain->block) = NEXT_INSN (before_insn);
+ BLOCK_HEAD (chain->block) = NEXT_INSN (before_insn);
if (BLOCK_END (chain->block) == insn)
- BLOCK_END (chain->block) = PREV_INSN (following_insn);
+ BLOCK_END (chain->block) = PREV_INSN (following_insn);
}
/* For all the spill regs newly reloaded in this instruction,
@@ -7425,33 +7425,33 @@ emit_reload_insns (chain)
register int i = reload_spill_index[r];
/* If this is a non-inherited input reload from a pseudo, we must
- clear any memory of a previous store to the same pseudo. Only do
- something if there will not be an output reload for the pseudo
- being reloaded. */
+ clear any memory of a previous store to the same pseudo. Only do
+ something if there will not be an output reload for the pseudo
+ being reloaded. */
if (reload_in_reg[r] != 0
- && ! (reload_inherited[r] || reload_override_in[r]))
- {
- rtx reg = reload_in_reg[r];
+ && ! (reload_inherited[r] || reload_override_in[r]))
+ {
+ rtx reg = reload_in_reg[r];
- if (GET_CODE (reg) == SUBREG)
+ if (GET_CODE (reg) == SUBREG)
reg = SUBREG_REG (reg);
-
- if (GET_CODE (reg) == REG
+
+ if (GET_CODE (reg) == REG
&& REGNO (reg) >= FIRST_PSEUDO_REGISTER
&& ! reg_has_output_reload[REGNO (reg)])
{
int nregno = REGNO (reg);
if (reg_last_reload_reg[nregno])
- {
- int last_regno = REGNO (reg_last_reload_reg[nregno]);
+ {
+ int last_regno = REGNO (reg_last_reload_reg[nregno]);
- if (reg_reloaded_contents[last_regno] == nregno)
+ if (reg_reloaded_contents[last_regno] == nregno)
spill_reg_store[last_regno] = 0;
- }
+ }
}
}
-
+
/* I is nonneg if this reload used a register.
If reload_reg_rtx[r] is 0, this is an optional reload
that we opted to ignore. */
@@ -7508,7 +7508,7 @@ emit_reload_insns (chain)
reg_last_reload_reg[nregno] = reload_reg_rtx[r];
/* If NREGNO is a hard register, it may occupy more than
- one register. If it does, say what is in the
+ one register. If it does, say what is in the
rest of the registers assuming that both registers
agree on how many words the object takes. If not,
invalidate the subsequent registers. */
@@ -7560,7 +7560,7 @@ emit_reload_insns (chain)
nnr = (nregno >= FIRST_PSEUDO_REGISTER ? 1
: HARD_REGNO_NREGS (nregno,
GET_MODE (reload_reg_rtx[r])));
-
+
reg_last_reload_reg[nregno] = reload_reg_rtx[r];
if (nregno < FIRST_PSEUDO_REGISTER)
@@ -7697,7 +7697,7 @@ emit_reload_insns (chain)
/* Emit code to perform a reload from IN (which may be a reload register) to
OUT (which may also be a reload register). IN or OUT is from operand
- OPNUM with reload type TYPE.
+ OPNUM with reload type TYPE.
Returns first insn emitted. */
@@ -7936,7 +7936,7 @@ delete_output_reload (insn, j, last_reload_reg)
int n_inherited = 0;
register rtx i1;
rtx substed;
-
+
/* Get the raw pseudo-register referred to. */
while (GET_CODE (reg) == SUBREG)
@@ -8288,7 +8288,7 @@ inc_for_reload (reloadreg, in, value, inc_amount)
add_insn = emit_insn (gen_rtx_SET (VOIDmode, incloc,
gen_rtx_PLUS (GET_MODE (incloc),
incloc, inc)));
-
+
code = recog_memoized (add_insn);
if (code >= 0)
{
@@ -8423,7 +8423,7 @@ count_occurrences (x, find)
if (SET_DEST (x) == find)
return count_occurrences (SET_SRC (x), find);
break;
-
+
default:
break;
}
@@ -8519,8 +8519,8 @@ reload_cse_invalidate_regno (regno, mode, clobber)
&& refers_to_regno_p (regno, endregno, XEXP (x, 0), NULL_PTR))
{
/* If this is the only entry on the list, clear
- reg_values[i]. Otherwise, just clear this entry on
- the list. */
+ reg_values[i]. Otherwise, just clear this entry on
+ the list. */
if (XEXP (x, 1) == 0 && x == reg_values[i])
{
reg_values[i] = 0;
@@ -8641,8 +8641,8 @@ reload_cse_invalidate_mem (mem_rtx)
&& reload_cse_mem_conflict_p (mem_rtx, XEXP (x, 0)))
{
/* If this is the only entry on the list, clear
- reg_values[i]. Otherwise, just clear this entry on
- the list. */
+ reg_values[i]. Otherwise, just clear this entry on
+ the list. */
if (XEXP (x, 1) == 0 && x == reg_values[i])
{
reg_values[i] = 0;
@@ -8685,7 +8685,7 @@ reload_cse_invalidate_rtx (dest, ignore)
This function also detects cases where we load a value from memory
into two different registers, and (if memory is more expensive than
registers) changes it to simply copy the first register into the
- second register.
+ second register.
Another optimization is performed that scans the operands of each
instruction to see whether the value is already available in a
@@ -8726,14 +8726,14 @@ reload_cse_regs_1 (first)
if (GET_CODE (insn) == CODE_LABEL)
{
/* Forget all the register values at a code label. We don't
- try to do anything clever around jumps. */
+ try to do anything clever around jumps. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
reg_values[i] = 0;
continue;
}
-#ifdef NON_SAVING_SETJMP
+#ifdef NON_SAVING_SETJMP
if (NON_SAVING_SETJMP && GET_CODE (insn) == NOTE
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP)
{
@@ -8760,7 +8760,7 @@ reload_cse_regs_1 (first)
reload_cse_invalidate_mem (callmem);
}
-
+
/* Forget all the register values at a volatile asm. */
if (GET_CODE (insn) == INSN
&& GET_CODE (PATTERN (insn)) == ASM_OPERANDS
@@ -8807,7 +8807,7 @@ reload_cse_regs_1 (first)
apply_change_group ();
else
reload_cse_simplify_operands (insn);
-
+
reload_cse_record_set (body, body);
}
else if (GET_CODE (body) == PARALLEL)
@@ -8816,7 +8816,7 @@ reload_cse_regs_1 (first)
rtx value = NULL_RTX;
/* If every action in a PARALLEL is a noop, we can delete
- the entire PARALLEL. */
+ the entire PARALLEL. */
for (i = XVECLEN (body, 0) - 1; i >= 0; --i)
{
rtx part = XVECEXP (body, 0, i);
@@ -8854,7 +8854,7 @@ reload_cse_regs_1 (first)
/* We're done with this insn. */
continue;
}
-
+
/* It's not a no-op, but we can try to simplify it. */
for (i = XVECLEN (body, 0) - 1; i >= 0; --i)
if (GET_CODE (XVECEXP (body, 0, i)) == SET)
@@ -8866,7 +8866,7 @@ reload_cse_regs_1 (first)
reload_cse_simplify_operands (insn);
/* Look through the PARALLEL and record the values being
- set, if possible. Also handle any CLOBBERs. */
+ set, if possible. Also handle any CLOBBERs. */
for (i = XVECLEN (body, 0) - 1; i >= 0; --i)
{
rtx x = XVECEXP (body, 0, i);
@@ -8882,8 +8882,8 @@ reload_cse_regs_1 (first)
#ifdef AUTO_INC_DEC
/* Clobber any registers which appear in REG_INC notes. We
- could keep track of the changes to their values, but it is
- unlikely to help. */
+ could keep track of the changes to their values, but it is
+ unlikely to help. */
{
rtx x;
@@ -8894,7 +8894,7 @@ reload_cse_regs_1 (first)
#endif
/* Look for any CLOBBERs in CALL_INSN_FUNCTION_USAGE, but only
- after we have processed the insn. */
+ after we have processed the insn. */
if (GET_CODE (insn) == CALL_INSN)
{
rtx x;
@@ -8998,12 +8998,12 @@ reload_cse_noop_set_p (set, insn)
ret = 1;
/* Check for setting a register to a value which we already know
- is in the register. */
+ is in the register. */
else if (reload_cse_regno_equal_p (dreg, src, dest_mode))
ret = 1;
/* Check for setting a register DREG to another register SREG
- where SREG is equal to a value which is already in DREG. */
+ where SREG is equal to a value which is already in DREG. */
else if (sreg >= 0)
{
rtx x;
@@ -9035,7 +9035,7 @@ reload_cse_noop_set_p (set, insn)
else if (GET_CODE (dest) == MEM)
{
/* Check for storing a register to memory when we know that the
- register is equivalent to the memory location. */
+ register is equivalent to the memory location. */
if (sreg >= 0
&& reload_cse_regno_equal_p (sreg, dest, dest_mode)
&& ! side_effects_p (dest))
@@ -9098,7 +9098,7 @@ reload_cse_simplify_set (set, insn)
gen_rtx_REG (dest_mode, i), 1);
/* Go back to the obstack we are using for temporary
- storage. */
+ storage. */
push_obstacks (&reload_obstack, &reload_obstack);
if (validated)
@@ -9109,8 +9109,8 @@ reload_cse_simplify_set (set, insn)
}
/* Try to replace operands in INSN with equivalent values that are already
- in registers. This can be viewed as optional reloading.
-
+ in registers. This can be viewed as optional reloading.
+
For each non-register operand in the insn, see if any hard regs are
known to be equivalent to that operand. Record the alternatives which
can accept these hard registers. Among all alternatives, select the
@@ -9127,7 +9127,7 @@ reload_cse_simplify_operands (insn)
int i,j;
const char *constraints[MAX_RECOG_OPERANDS];
-
+
/* Vector recording how bad an alternative is. */
int *alternative_reject;
/* Vector recording how many registers can be introduced by choosing
@@ -9140,7 +9140,7 @@ reload_cse_simplify_operands (insn)
/* Array of alternatives, sorted in order of decreasing desirability. */
int *alternative_order;
rtx reg = gen_rtx_REG (VOIDmode, -1);
-
+
extract_insn (insn);
if (recog_n_alternatives == 0 || recog_n_operands == 0)
@@ -9209,12 +9209,12 @@ reload_cse_simplify_operands (insn)
for (;;)
{
char c = *p++;
-
+
switch (c)
{
case '=': case '+': case '?':
case '#': case '&': case '!':
- case '*': case '%':
+ case '*': case '%':
case '0': case '1': case '2': case '3': case '4':
case 'm': case '<': case '>': case 'V': case 'o':
case 'E': case 'F': case 'G': case 'H':
@@ -9289,12 +9289,12 @@ reload_cse_simplify_operands (insn)
best_nregs = this_nregs;
}
}
-
+
tmp = alternative_order[best];
alternative_order[best] = alternative_order[i];
alternative_order[i] = tmp;
}
-
+
/* Substitute the operands as determined by op_alt_regno for the best
alternative. */
j = alternative_order[0];
@@ -9441,7 +9441,7 @@ reload_cse_record_set (set, body)
int i;
/* This is an assignment to a register. Update the value we
- have stored for the register. */
+ have stored for the register. */
if (sreg >= 0)
{
rtx x;
@@ -9460,24 +9460,24 @@ reload_cse_record_set (set, body)
if (dest_mode == GET_MODE (XEXP (x, 0)))
tmp = XEXP (x, 0);
else if (GET_MODE_BITSIZE (dest_mode)
- > GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))))
+ > GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))))
continue;
else
tmp = gen_lowpart_common (dest_mode, XEXP (x, 0));
if (tmp)
reg_values[dreg] = gen_rtx_EXPR_LIST (dest_mode, tmp,
reg_values[dreg]);
- }
+ }
}
else
reg_values[dreg] = gen_rtx_EXPR_LIST (dest_mode, src, NULL_RTX);
/* We've changed DREG, so invalidate any values held by other
- registers that depend upon it. */
+ registers that depend upon it. */
reload_cse_invalidate_regno (dreg, dest_mode, 0);
/* If this assignment changes more than one hard register,
- forget anything we know about the others. */
+ forget anything we know about the others. */
for (i = 1; i < HARD_REGNO_NREGS (dreg, dest_mode); i++)
reg_values[dreg + i] = 0;
}
@@ -9487,7 +9487,7 @@ reload_cse_record_set (set, body)
reload_cse_invalidate_mem (dest);
/* If we're storing a register to memory, add DEST to the list
- in REG_VALUES. */
+ in REG_VALUES. */
if (sreg >= 0 && ! side_effects_p (dest))
reg_values[sreg] = gen_rtx_EXPR_LIST (dest_mode, dest,
reg_values[sreg]);
@@ -9610,7 +9610,7 @@ reload_combine ()
/* We cannot do our optimization across labels. Invalidating all the use
information we have would be costly, so we just note where the label
- is and then later disable any optimization that would cross it. */
+ is and then later disable any optimization that would cross it. */
if (GET_CODE (insn) == CODE_LABEL)
last_label_ruid = reload_combine_ruid;
if (GET_CODE (insn) == BARRIER)
@@ -9670,11 +9670,11 @@ reload_combine ()
}
else
{
- /* Otherwise, look for a free index register. Since we have
- checked above that neiter REG nor BASE are index registers,
- if we find anything at all, it will be different from these
- two registers. */
- for (i = first_index_reg; i <= last_index_reg; i++)
+ /* Otherwise, look for a free index register. Since we have
+ checked above that neiter REG nor BASE are index registers,
+ if we find anything at all, it will be different from these
+ two registers. */
+ for (i = first_index_reg; i <= last_index_reg; i++)
{
if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], i)
&& reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
@@ -9825,7 +9825,7 @@ reload_combine_note_store (dst, set)
regno += REGNO (dst);
/* note_stores might have stripped a STRICT_LOW_PART, so we have to be
- careful with registers / register parts that are not full words.
+ careful with registers / register parts that are not full words.
Similarly for ZERO_EXTRACT and SIGN_EXTRACT. */
if (GET_CODE (set) != SET
@@ -9884,7 +9884,7 @@ reload_combine_note_use (xp, insn)
break;
offset = XEXP (x, 1);
x = XEXP (x, 0);
- /* Fall through. */
+ /* Fall through. */
case REG:
{
int regno = REGNO (x);
@@ -10023,9 +10023,9 @@ reload_cse_move2add (first)
/* ??? We don't know how zero / sign extension is handled, hence
we can't go from a narrower to a wider mode. */
if (reg_set_luid[regno] > last_label_luid
- && (GET_MODE_SIZE (GET_MODE (reg))
- <= GET_MODE_SIZE (reg_mode[regno]))
- && GET_CODE (reg_offset[regno]) == CONST_INT)
+ && (GET_MODE_SIZE (GET_MODE (reg))
+ <= GET_MODE_SIZE (reg_mode[regno]))
+ && GET_CODE (reg_offset[regno]) == CONST_INT)
{
/* Try to transform (set (REGX) (CONST_INT A))
...
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e4163b4f625..86d45e8de20 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+Tue Aug 31 17:57:49 1999 Jeffrey A Law (law@cygnus.com)
+
+ * lib/c-torture.exp: Avoid the "compare executables" optimization
+ when testing native.
+
Sun Aug 29 14:35:41 1999 Jeffrey A Law (law@cygnus.com)
* gcc.c-torture/execute/990829-1.c: New test.
diff --git a/gcc/testsuite/lib/c-torture.exp b/gcc/testsuite/lib/c-torture.exp
index 839c32caa80..0c8aeda6106 100644
--- a/gcc/testsuite/lib/c-torture.exp
+++ b/gcc/testsuite/lib/c-torture.exp
@@ -189,8 +189,22 @@ proc c-torture-execute { src args } {
set ignore_me [eval $torture_eval_before_execute]
}
+
+ # Sometimes we end up creating identical executables for two
+ # consecutive sets of different of compiler options.
+ #
+ # In such cases we know the result of this test will be identical
+ # to the result of the last test.
+ #
+ # So in cases where the time to load and run/simulate the test
+ # is relatively high, compare the two binaries and avoid rerunning
+ # tests if the executables are identical.
+ #
+ # Do not do this for native testing since the cost to load/execute
+ # the test is fairly small and the comparison step actually slows
+ # the entire process down because it usually does not "hit".
set skip 0;
- if [info exists oldexec] {
+ if { ![isnative] && [info exists oldexec] } {
if { [remote_file build cmp $oldexec $execname] == 0 } {
set skip 1;
}
diff --git a/gcc/version.c b/gcc/version.c
index 8fbff5a0f61..0dd38e2efa5 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -1 +1 @@
-char *version_string = "2.96 19990831 (experimental)";
+char *version_string = "2.96 19990901 (experimental)";
diff --git a/include/ChangeLog b/include/ChangeLog
index b2468c99d2c..41af292ebbf 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,11 @@
+1999-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * obstack.h (obstack_grow, obstack_grow0): Move (char*) casts
+ in calls to `_obstack_memcpy' from here ...
+
+ (_obstack_memcpy): ... to here, except in the __STDC__ case which
+ doesn't need it.
+
1999-08-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* libiberty.h (getpwd): Prototype.
diff --git a/include/obstack.h b/include/obstack.h
index 38e96777660..a20ab55967a 100644
--- a/include/obstack.h
+++ b/include/obstack.h
@@ -143,12 +143,16 @@ extern "C" {
#if defined _LIBC || defined HAVE_STRING_H
# include <string.h>
-# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+# if defined __STDC__ && __STDC__
+# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+# else
+# define _obstack_memcpy(To, From, N) memcpy ((To), (char *)(From), (N))
+# endif
#else
# ifdef memcpy
-# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+# define _obstack_memcpy(To, From, N) memcpy ((To), (char *)(From), (N))
# else
-# define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
+# define _obstack_memcpy(To, From, N) bcopy ((char *)(From), (To), (N))
# endif
#endif
@@ -385,7 +389,7 @@ __extension__ \
int __len = (length); \
if (__o->next_free + __len > __o->chunk_limit) \
_obstack_newchunk (__o, __len); \
- _obstack_memcpy (__o->next_free, (char *) (where), __len); \
+ _obstack_memcpy (__o->next_free, (where), __len); \
__o->next_free += __len; \
(void) 0; })
@@ -395,7 +399,7 @@ __extension__ \
int __len = (length); \
if (__o->next_free + __len + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, __len + 1); \
- _obstack_memcpy (__o->next_free, (char *) (where), __len); \
+ _obstack_memcpy (__o->next_free, (where), __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
(void) 0; })
@@ -510,14 +514,14 @@ __extension__ \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
- _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
+ _obstack_memcpy ((h)->next_free, (where), (h)->temp), \
(h)->next_free += (h)->temp)
# define obstack_grow0(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
- _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
+ _obstack_memcpy ((h)->next_free, (where), (h)->temp), \
(h)->next_free += (h)->temp, \
*((h)->next_free)++ = 0)
diff --git a/libf2c/libF77/Version.c b/libf2c/libF77/Version.c
index d0a3f3e0c03..622ab4451fe 100644
--- a/libf2c/libF77/Version.c
+++ b/libf2c/libF77/Version.c
@@ -3,7 +3,7 @@ static char junk[] = "\n@(#)LIBF77 VERSION 19990503\n";
/*
*/
-char __G77_LIBF77_VERSION__[] = "0.5.25 19990831 (prerelease)";
+char __G77_LIBF77_VERSION__[] = "0.5.25 19990901 (prerelease)";
/*
2.00 11 June 1980. File version.c added to library.
diff --git a/libf2c/libI77/Version.c b/libf2c/libI77/Version.c
index b96c6a6e3ab..13be182b22c 100644
--- a/libf2c/libI77/Version.c
+++ b/libf2c/libI77/Version.c
@@ -3,7 +3,7 @@ static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19990627\n";
/*
*/
-char __G77_LIBI77_VERSION__[] = "0.5.25 19990831 (prerelease)";
+char __G77_LIBI77_VERSION__[] = "0.5.25 19990901 (prerelease)";
/*
2.01 $ format added
diff --git a/libf2c/libU77/Version.c b/libf2c/libU77/Version.c
index a31e5d762f6..1538da1044c 100644
--- a/libf2c/libU77/Version.c
+++ b/libf2c/libU77/Version.c
@@ -1,6 +1,6 @@
static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
-char __G77_LIBU77_VERSION__[] = "0.5.25 19990831 (prerelease)";
+char __G77_LIBU77_VERSION__[] = "0.5.25 19990901 (prerelease)";
#include <stdio.h>
diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog
index 535c68321d1..25e5418a77c 100644
--- a/libstdc++/ChangeLog
+++ b/libstdc++/ChangeLog
@@ -1,3 +1,7 @@
+1999-09-01 Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Move *-*-gnu* pattern below *-*-linux*.
+
Wed Aug 25 01:31:11 1999 "David O'Brien" <obrien@NUXI.com>
* configure.in: Alphabetize selection of .ml fragments.
diff --git a/libstdc++/configure.in b/libstdc++/configure.in
index bb54fedf963..e246360593c 100644
--- a/libstdc++/configure.in
+++ b/libstdc++/configure.in
@@ -71,11 +71,12 @@ if [ "${shared}" = "yes" ]; then
*-dec-osf*) frags="${frags} dec-osf.ml";;
*-*-freebsd2*) ;;
*-*-freebsd*) frags="${frags} freebsd.ml" ;;
- *-*-gnu*) frags="${frags} gnu.ml" ;;
*-*-hpux*) frags="${frags} hpux.ml" ;;
*-*-irix[56]*) frags="${frags} irix5.ml" ;;
*-*-linux*aout*) ;;
*-*-linux*) frags="${frags} linux.ml" ;;
+ # This must come after *-*-linux*
+ *-*-gnu*) frags="${frags} gnu.ml" ;;
*-*-openbsd*) frags="${frags} openbsd.ml" ;;
*-*-sysv[45]*|*-*-udk*) frags="${frags} elf.ml" ;;
*-*-solaris*) frags="${frags} sol2shm.ml" ;;