From d0ec45ebce6df5e9f1c4f2db8ba1e97fd3e6f194 Mon Sep 17 00:00:00 2001 From: No Author Date: Wed, 4 Mar 1998 02:31:39 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'gcc-2_8_1-RELEASE'. From-SVN: r18395 --- gcc/ChangeLog.11 | 10652 ----------------------------------------------- gcc/gengenrtl.c | 287 -- gcc/getopt.h | 2 +- gcc/intl/cat-compat.c | 262 -- gcc/intl/intl-compat.c | 76 - gcc/intl/linux-msg.sed | 100 - gcc/intl/po2tbl.sed.in | 102 - gcc/intl/xopen-msg.sed | 104 - gcc/move-if-change | 17 - gcc/obstack.c | 3 +- gcc/obstack.h | 3 +- gcc/regmove.c | 983 ----- gcc/system.h | 188 - gcc/texinfo.tex | 4977 ---------------------- 14 files changed, 5 insertions(+), 17751 deletions(-) delete mode 100644 gcc/ChangeLog.11 delete mode 100644 gcc/gengenrtl.c delete mode 100644 gcc/intl/cat-compat.c delete mode 100644 gcc/intl/intl-compat.c delete mode 100755 gcc/intl/linux-msg.sed delete mode 100755 gcc/intl/po2tbl.sed.in delete mode 100755 gcc/intl/xopen-msg.sed delete mode 100755 gcc/move-if-change delete mode 100644 gcc/regmove.c delete mode 100644 gcc/system.h delete mode 100644 gcc/texinfo.tex diff --git a/gcc/ChangeLog.11 b/gcc/ChangeLog.11 deleted file mode 100644 index 29483ba2618..00000000000 --- a/gcc/ChangeLog.11 +++ /dev/null @@ -1,10652 +0,0 @@ -Sat Aug 2 18:50:43 1997 Paul Eggert - - * tree.c (int_fits_type_p): Negative ints never fit unsigned - types, and unsigned ints with top-bit-set never fit signed types. - -Sat Aug 2 16:25:43 1997 Per Bothner - - * Makefile.in (EXTRA_C_OBJS): Removed. - (C_AND_OBJC_OBJS): New. Subsumes EXTRA_C_OBJS and OBJC_CCOMMON. - * objc/Make-lang.in (OBJC_CCOMMON): Removed. - -Sat Aug 2 16:11:57 1997 Doug Evans - - * configure.in: Build .gdbinit for top level build dir here. - (AC_OUTPUT): Pass oldstyle_subdirs to configure.lang. - * configure.lang: Fix building of .gdbinit for oldstyle lang subdirs. - -Sat Aug 2 13:48:15 1997 Ken Raeburn - - * cse.c (cse_insn): Ignore paradoxical SUBREGs unless we are - looking for such. - -Sat Aug 2 13:25:33 1997 Tristan Gingold (gingold@email.enst.fr) - - * calls.c (expand_call): If -fcheck-memory-usage, use pseudo-register, - check indirectly called function is executable, and set rights of - memory for aggregate as write only. - (store_one_arg): If -fcheck-memory-usage, set rights for pushed - stack argument. - * c-decl.c (init_decl_processing): Add - __builtin_aggregate_incoming_address. - * explow.c (expr_size): Call expand_expr with appropriate flag. - * expr.c (expand_builtin, case BUILT_IN_AGGREGATE_INCOMING_ADDRESS): - New case. - (expand_assignment, expand_expr, emit_push_insn, store_expr): - Insert calls to chkr_check_addr, chkr_set_right, and chkr_copy_bitmap - when -fcheck-memory-usage. - (get_push_address, get_memory_usage_from_modifier): New functions. - * expr.h: Add expand_modifier flags. - (chkr_*_libfunc): New decls. - (memory_use_mode): New declaration. - * flags.h (flag_check_memory_usage, flag_prefix_function_name): New - declaration. - * function.c (put_var_into_stack, assign_parms): If - -fcheck-memory-usage, set the rights of pushed variable. - * optabs.c (chkr_{check_addr,set_right}_libfunc): New definitions. - (chkr_{copy_bitmap,check_exec}_libfunc): Likewise. - (init_optabs): Initialize these chkr_*_libfunc. - * stmt.c (expand_computed_goto): If -fcheck-memory-usage, check that - computed address of a goto is executable. - (expand_asm, expand_asm_operands): If -fcheck-memory-usage, - disallow asm statments. - * toplev.c (flag_check_memory_usage, flag_prefix_function_name): New - variable. - (f_options): Add `check-memory-usage' and `prefix_function_name'. - (main): Disable `-fomit-frame-pointer' if `-fcheck-memory-usage' is set - and the machine can't debug without the frame pointer. - * tree.h (built_in_function): Add BUILT_IN_AGGREGATE_INCOMING_ADDRESS. - * varasm.c (make_function_rtl, make_decl_rtl): Add a prefix when - flag_prefix_function_name_usage is set. - (assemble_name): Strip the CHKR_PREFIX. - * alpha.c (alpha_builtin_saveregs): If -fcheck-memory-usage, - set rights of saved registers. - * clipper.c (clipper_builtin_saveregs): Likewise. - * m88k.c (m88k_builtin_saveregs): Likewise. - * pa.c (hppa_builtin_saveregs): Likewise. - * sparc.c (sparc_builtin_saveregs): Likewise. - -Sat Aug 2 08:01:12 1997 Richard Kenner - - * c-decl.c (grokdeclarator): Give error for `long double' and - refine text of some error messages. - - * alpha.h (FLOAT_VALUE_TYPE, INTIFY, FLOATIFY, FLOAT_ARG_TYPE): Define. - * i860.h (FLOAT_VALUE_TYPE): Fix typo; was FLOAT_TYPE_VALLUE. - - * calls.c (store_one_arg): Allow stack_slot to be SP in - ARGS_GROW_DOWNWARD case. - - * c-decl.c (parmlist_tags_warning): Only suppress warning on - union if anonymous. - - * libgcc2.c (_trampoline): Rework last change; both getpagesize - and mprotect are in cygwin32. - - * reload1.c (reload): Add IN_ADDR to IN_ADDR_ADDR when computing - needs since they conflict. - - * print-rtl.c (indent): Move to file level; was static in print_rtx. - (print_inline_rtx): New function. - * reload.c (debug_reload): Rework to make output more compact. - - * dwarfout.c (output_compile_unit_die): Add support for Pascal. - * dwarf2out.c (gen_compile_unit_die): Likewise. - - * c-typeck.c (lvalue_p, case BIND_EXPR, RTL_EXPR): Return 1 if array. - - * Makefile.in (OBJC_OBJC): Delete from here. - - * varasm.c (compare_constant_1, case STRING_CST): Compare TYPE_MODE. - (record_constant_1, case STRING_CST): Record TYPE_MODE. - - * tree.c (contains_this_placeholder_p): Delete. - (contains_placeholder_p): Now contains code from above function. - (contains_placeholder_p, case 'r'): Don't look at offset info. - * expr.c (expand_expr, case PLACEHOLDER_EXPR): Find innermost - matching and don't check contains_placeholder_p. - -Fri Aug 1 17:15:07 1997 Per Bothner - - * objc/objc-act.c (lang_init): Don't check_newline #if USE_CPPLIB. - * c-lex.c (lang_init): Remove (recently moved here). - * c-lang.c (lang_init): Restore, but add #if !USE_CPPLIB. - -Fri Aug 1 11:26:45 1997 Jeffrey A Law (law@cygnus.com) - - * pa.c (pa_reorg): Explode ADDR_DIFF_VEC insns too. - -Thu Jul 31 19:37:22 1997 Ian Lance Taylor - - * libgcc2.c (getpagesize): Don't compile if __CYGWIN32__. - -Thu Jul 31 16:04:42 1997 Stan Cox - - * i386.c (output_to_reg, output_fix_trunc): Use scratch memory, - if available, instead of dynamically extending the stack. - (put_condition_code, print_operand): Added reverse_cc to reverse the - comparison when $ah is accessed directly instead of using eflags - - * i386.md (*trunc*): Use scratch memory for output_fix_trunc. - (movsicc_1, movhicc_1) Change alternative 3 to: - jCC L1; mov; jmp L2; L1:mov; L2: - (movsfcc, movdfcc, movxfcc): Force constant operands to memory. - (movsfcc_1, movdfcc_1, movxfcc_1): Change alternative 3 as above. - -Thu Jul 31 16:04:42 1997 Jason Merrill - - * i386.h (MAX_FIXED_MODE_SIZE): Define. - -Thu Jul 31 16:04:42 1997 Robert Lipe - - * i386/sco5.h (SWITCHES_NEED_SPACES) Define. - Required by the COFF (but not ELF) linker. - -Wed Jul 30 15:03:52 1997 Per Bothner - - * demangle.h (DMGL_JAVA): New option to request Java demangling. - * cplus-dem.c: Various changes to produce Java output when passed - DMGL_JAVA. Thus "::" becomes "." and "JArray" becomes "Foo[]". - (main): Support --java and -j flags to set DMGL_JAVA. - -Wed Jul 30 08:56:08 1997 Philip Blundell - - * configure.in (arm-*-*): Replace with arm-*-aout. - * arm/aout.h (SET_ASM_OP): Define by default. - * arm/riscix.h (SET_ASM_OP: Undefine. - * arm.h (CPP_SPEC): Add %(subtarget_cpp_spec). - (SUBTARGET_CPP_SPEC): New macro. - * arm/linux.h: Include aout.h rather than arm.h directly. - (TARGET_CPU_DEFAULT): Define. - ({ASM,CPP}_SPEC): Remove. - * arm/t-linux (MULTILIB_OPTIONS): Use -mapcs-NN instead of -mN. - (LIB1ASMSRC): Use generic ARM version. - (CROSS_LIBGCC1): Define. - * arm/lib1funcs-linux.asm: Remove. - -Tue Jul 29 17:57:47 1997 Per Bothner - - * Add hooks for using autconf-style Makefile.in in language subdirs. - * configure.in (all_outputs, oldstyle_subdirs): New variables. - Pass all_outputs to AC_OUTPUT. - * configure.lang: Only iterate over oldstyle_subdirs. - - * Patches to use cpplib with cc1 #if USE_CPPLIB. - * configure.in (--enable-c-cpplib): New option. - (extra_c_flags, extra_c_objs): New variables. - * Makefile.in (EXTRA_C_OBJS): New variable. - (INTERNAL_CFLAGS): Add @extra_c_flags@. - (C_OBJS): Add $(EXTRA_C_OBJS). - * c-lex.c (generally): Replace getc and ungetc by macros GETC and - UNGETC. Avoid explicit references to finput. - (yy_get_token): New function, that calls cpp_get_token. - (init_parse): New function - calls init_lex. - (finish_parse): New function (called by compile_file). - (GET_DIRECTIVE_LINE): New macro wrapper replaces get_directive_line. - (lang_init): Don't check_newline - already know main_input_filename. - (handle_sysv_pragma): Remove FILE* parameter. - * toplev.c (finput): Remove #if USE_CPPLIB. - (compile_file): #if USE_CPPLIB don't open input file here, - do it in cpp_start_read. Call init_parse instead of init_lex. - At end, call finish_parse instead of fclose(finput). - -Mon Jul 28 15:48:29 1997 Brendan Kehoe - - * integrate.c (expand_inline_function): Use xmalloc instead of - alloca for the LABEL_MAP. - (save_for_inline_copying): Likewise. - -Mon Jul 28 11:22:16 1997 Jason Merrill - - * toplev.c (compile_file): Also emit any deferred TREE_PUBLIC inlines. - (rest_of_compilation): Use decl_printable_name instead of DECL_NAME - to identify functions in the RTL dump files. - - * dwarf2out.c (add_location_or_const_value_attribute): - leaf_renumber_regs_insn. Also eliminate_regs here. - (add_AT_location_description): Not here. Don't emit anything - for a variable that has been optimized away. - (add_const_value_attribute): Likewise. - - * dwarfout.c (location_or_const_value_attribute): - leaf_renumber_regs_insn. Also eliminate_regs here. - (location_attribute): Not here. - - * stor-layout.c (layout_type): Fix ancient code to match ancient - comment. Use mode of field for one-field structs. - -Sun Jul 27 12:09:02 1997 Richard Kenner - - * function.c (put_var_into_stack, trampoline_address): Treat - inline_function_decl like current_function_decl. - * expr.c (expand_expr, case LABEL_DECL): Likewise. - (expand_expr, case SAVE_EXPR): Handle top-level SAVE_EXPR by - moving into current function; abort if in incorrect context. - * fold-const.c (fold_range_test, fold): Avoid making SAVE_EXPR - if at top level. - - * dwarfout.c (ASM_OUTPUT_SOURCE_FILENAME): Delete default value. - - * alpha.h (TARGET_SWITCHES): Add -mno-byte. - - * expr.c (get_inner_unaligned_p): Deleted. - (expand_assignment): Remove special-case of constant array. - (expand_expr, case ARRAY_REF): Likewise, and clean up remaining code. - - * explow.c (probe_stack_range): Do probing with loop if more - than a small number. - -Fri Jul 25 15:42:34 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * configure.in: Finish fixing calculation if default thread - support is enabled. - -Fri Jul 25 15:30:09 1997 Doug Evans - - * Makefile.in (native): Depend on config.h. - (gcc.o): Depend on Makefile, not config.status. - -Fri Jul 25 10:56:50 1997 Jeffrey A Law (law@cygnus.com) - - * pa.c (pa_reorg): If TARGET_BIG_SWITCH, then do not explode - ADDR_VEC insns. Slightly rework code which explodes ADDR_VEC - insns. - * pa.h (TARGET_BIG_SWITCH): Define. - (TARGET_SWITCHES): Add "big-switch" and "no-big-switch". - (CASE_VECTOR_MODE): Use TI or DI depending on TARGET_BIG_SWITCH. - (CASE_DROPS_THROUGH): Remove definition. - (ASM_OUTPUT_ADDR_VEC_ELT): Rewrite to handle TARGET_BIG_SWITCH. - (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - * pa.md (casesi): Rework to avoid some potential long branch - problems (also makes generated code faster!). Handle - TARGET_BIG_SWITCH. - (casesi0): Corresponding changes. - -Fri Jul 25 08:36:47 1997 Richard Kenner - - * calls.c: (expand_call): If -fstack-check and temp needed - for arg is too large, use alloca. - * expr.c (expand_expr, case MODIFY_EXPR): Don't preexpand calls - if LHS is an indirect via a constant pointer. - -Thu Jul 24 21:49:11 1997 Pat Rankin - - * bitmap.c (bitmap_operation): Reset CURRENT on deferred deletion. - -Wed Jul 23 23:52:14 1997 Chris Smith - - * convex.h (CHECK_FLOAT_VALUE): Fix OVERFLOW capitalization. - -Wed Jul 23 13:00:47 1997 Richard Earnshaw - - * configure.in (arm-*-netbsd*): Fix typo setting tmake_file. - -Wed Jul 23 06:39:35 1997 Richard Kenner - - * configure.in (alpha*): Put quotes around MASK_GAS. - -Tue Jul 22 15:24:45 1997 Brendan Kehoe - - * tree.c (array_type_nelts): Make sure the domain of TYPE is set - before we try to use it. - -Tue Jul 22 12:26:13 1997 Doug Evans - - * sparc.c (gen_v9_scc): Handle early clobber of result. - * sparc.md (seqdi_special): Don't clobber %xcc. - (snedi_special, seqdi_special_trunc, snedi_special_trunc): Likewise. - (snedi_zero, neg_snedi_zero, seqdi_zero, neg_seqdi_zero): Likewise. - (snedi_zero_trunc, seqdi_zero_trunc): Likewise. Renamed from ..._sp64. - (snedi_zero_trunc_sp32, seqdi_zero_trunc_sp32): Delete. - - * Makefile.in (Makefile): Pass xmake_file, tmake_file to - configure.frag - (distclean): Delete Make-host, Make-target. - * configure.in (host_overrides): Set to Make-host. - (dep_host_xmakefile): Loop over all elements in host_make_file. - (target_overrides): Set to Make-target. - (dep_tmake_file): Loop over all elements in tmake_file. - (configure.frag): Pass dep_host_xmake_file, dep_tmake_file. - * configure.frag: New arguments xmake_files, tmake_files. - Build Make-host, Make-target. - -Mon Jul 21 23:17:44 1997 Paul Eggert - - * objc/Make-lang.in, objc/Makefile.in: Comment out lines containing - just formfeeds. - -Mon Jul 21 14:05:46 1997 Doug Evans - - * Makefile.in (Makefile): Depend on config.status instead - of configure. - (config.status): Depend on configure. Run config.status --recheck - if out of date. - (cstamp-h.in): Use echo instead of touch. - - * reload1.c (reload_cse_mem_conflict_p): Restore handling of - (mem:BLK const0_rtx) meaning all memory is clobbered. - -Mon Jul 21 06:20:10 1997 Andreas Schwab - - * m68k.md (iorsi_zexthi_ashl16): Mark output operand as earlyclobber. - -Sun Jul 20 06:11:30 1997 Richard Kenner - - * configure.in (alpha*-*-*): Set cpu_type to alpha. - Change "alpha-" to "alpha*-" in all entries. - Set target_cpu_default for ev5 and ev56 systems. - Use symbolic names for target_cpu_default. - * alpha.c (override_options): Set default for alpha_cpu - from TARGET_CPU_DEFAULT. - * alpha.h (MASK_CPU_EV5): New macro. - - * tree.c (contains_placeholder_p): Call contains_this_placeholder_p. - (contains_this_placeholder_p): Renamed from contains_placeholder_p. - Added new arg, PL. - Rework to make more consistent, check more codes, and avoid - undefined fields. - * expr.c (expand_expr, case PLACEHOLDER_EXPR): Pick outermost - object in placeholder_list of right type without a PLACEHOLDER_EXPR. - -Sat Jul 19 18:00:01 1997 Richard Kenner - - * alpha.c (override_options): Allow processor of ev56 or 21164a. - (input_operand, case MEM): Correct test involving TARGET_BYTE_OPS. - * alpha.h (SECONDARY_{IN,OUT}PUT_RELOAD_CLASS): Don't need for - QImode or HImode if TARGET_BYTE_OPS. - (ASM_FILE_START): Write a .arch directive. - (STACK_CHECK_BUILTIN): New macro. - * alpha.md ({zero_,}extend[qh]i[dsh]i2): Rework TARGET_BYTE_OPS cases. - (mov[hq]i): Likewise. - (extend[qh]i[hsd]i2x): Add missing cases and fix typo in constraint. - (reload_{in,out}[qh]i): Disable for TARGET_BYTE_OPS. - -Fri Jul 18 23:24:57 1997 Jason Merrill - - * varasm.c (make_decl_rtl): Don't use ASM_FORMAT_PRIVATE_NAME for - local decls with TREE_PUBLIC set. - (bc_make_decl_rtl): Likewise. - -Fri Jul 18 22:16:28 1997 Doug Evans - - * configure.in: Invoke AC_CONFIG_HEADER. - Check for string.h, strings.h, stdlib.h, time.h, unistd.h. - Check for whether malloc/realloc/free need to be declared. - (links): Rename config.h to config2.h. - (AC_OUTPUT): Create cstamp-h. - * Makefile.in (config.in,cstamp-h.in): Add rules for. - (config.h,cstamp-h): Add rules for. - (distclean): Delete config2.h, cstamp-h. - (ALL_CFLAGS): Add @DEFS@. - * aclocal.m4, acconfig.h: New files. - - * Makefile.in (distclean): Delete Make-host, Make-target. - * configure.in (host_overrides): Set to host_xmake_file, don't create - Make-host. - (target_overrides): Set to tmake_file, don't create Make-target. - (language subdir support): Keep together. - - * c-decl.c (duplicate_decls): Set DECL_ABSTRACT_ORIGIN to olddecl - if inline function and not new definition. - - * configure.in: Don't loop trying to configure language subdirs. - Don't pass to configure.lang variables it doesn't use. - * configure.lang: Delete top level directory from loop. - Delete code not useful for language subdirs. - -Fri Jul 18 08:12:53 1997 Bernd Schmidt - - * toplev.c (rest_of_compilation): Call reload_cse_regs here. - * reload1.c (reload): Don't call it here. - (reload_cse_mem_conflict_p): Remove MEM_OFFSET and MEM_MODE args. - (reload_cse_mem_conflict_p, case MEM): Call anti_dependence. - (reload_cse_invalidate_mem): Update call to reload_cse_mem_conflict_p. - (reload_cse_regs): No longer static. - Call init_alias_analysis. - Ignore CLOBBER in a PARALLEL. - -Fri Jul 18 06:44:22 1997 Andreas Schwab - - * objc/Make-lang.in (objc-headers): Fix command for the new build - directory layout, don't pass srcdir variable. - * objc/Makefile.in (copy-headers): Use $(srcdir) from this - makefile, not the parent's. - -Thu Jul 17 16:03:03 1997 Doug Evans - - * configure.lang (EXTRA_HEADERS,EXTRA_PASSES,EXTRA_PARTS): Delete. - (EXTRA_PROGRAMS,EXTRA_OBJS,EXTRA_GCC_OBJS,MD_DEPS): Delete. - (version) Delete duplicate entry. - * configure.in (merged_frags): Delete unused variable. - (extra_headers_list): Move setting outside of subdir loop. - (extra_headers,extra_passes): Don't pass to configure.lang. - (extra_programs,extra_parts,extra_objs): Likewise. - (host_extra_gcc_objs,gxx_include_dir,md_cppflags): Likewise. - -Thu Jul 17 07:00:43 1997 Richard Kenner - - * expr.h (STACK_CHECK_*): Provide default values. - (probe_stack_range): New declaration. - * flags.h (flag_stack_check): Likewise. - * explow.c (allocate_dynamic_stack_space): Call probe_stack_range. - (emit_stack_probe, probe_stack_range): New functions. - * function.c (expand_function_end): If function is non-leaf and stack - checking is requested, emit needed probes. - * reload1.c (reload): If checking stack, verify frame small enough. - * stmt.c (expand_decl): If stack checking, use alloca for large vars. - * toplev.c (flag_stack_check): New variable. - (f_options): Add "stack-check". - - * reorg.c (mark_target_live_regs): Pass FIRST_PSEUDO_REGISTER to - call to EXECUTE_IF_SET_IN_REG_SET. - -Wed Jul 16 14:51:00 1997 Jason Merrill - - * i960.h (ASM_OUTPUT_ALIGNED_BSS): Define. - (ASM_OUTPUT_ALIGNED_LOCAL): Use standard method to convert ALIGN - to power-of-two of bytes. - - * sparc.h (ASM_OUTPUT_ALIGNED_BSS): Define. - * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Undef before definition. - -Wed Jul 16 14:34:09 1997 Klaus Espenlaub (kespenla@hydra.informatik.uni-ulm.de) - - * calls.c (emit_library_call_value): Initialize all argvec elements. - -Wed Jul 16 14:31:39 1997 Richard Kenner - - * global.c (global_conflicts): Pass FIRST_PSEUDO_REGISTER to - call to EXECUTE_IF_SET_IN_REG_SET. - -Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) - - * From Rob Black (r.black@ic.ac.uk) and Mark Brinicombe - (amb@physig.ph.kcl.ac.uk): - * configure.in (arm-*-netbsd*): New configuration. - * arm/netbsd.h, arm/t-netbsd, arm/xm-netbsd.h: New files. - -Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) - - * arm.c (tune_flags): New variable. - (target_{cpu,fpe}_name): Delete. - (arm_fpu_arch): New variable. - (arm_select): Also allow -march=... to configure just the - architecture. - (all_procs): Allow armv{2,2a,3,3m,4,4t} for use with -march=. - (arm_override_options): Handle -march=, but don't let -mcpu= - and -mtune= match the architecture names, since we can only - tune for an implementation. Rework selection of tuning options - for floating point. - (use_return_insn): Support interworking with Thumb code. - (arm_rtx_costs): Rework multiply costs so that cost is based on - the tune, not the architecture. - (f_register_operand): New function. - (output_return_instruction): Support interworking with Thumb code. - (output_func_epilogue): Support interworking with Thumb code. - Remove redundant calculation of code_size. Use floating-point - load-multiples if permitted. - (emit_sfm): New function. - (arm_expand_prologue): Use floating-point store-multiples if - permitted. - - * arm.h (CPP_CPU_ARCH_SPEC): Handle -march=... - (TARGET_OPTIONS): Add arch= and fp=. Delete fpe=. - (enum processor_type): Add PROCESSOR_NONE, for use in all_procs table. - (FP_DEFAULT): Default floating point architecture for generic - back-end. - (PREDICATE_CODES): Add f_register_operand. - - * arm.md (*push_fp_multi): New pattern. - - -Tue Jul 15 22:08:47 1997 Jim Wilson - - * Makefile.in (exeext): Set to build_exeext not exeext. - * configure.in (exeext): Delete redundant set and AC_SUBST call. - Change remaining AC_SUBST to use build_exeext instead of exeext. - -Tue Jul 15 15:48:25 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * configure.in: Fix calculation if default thread support is enabled. - -Tue Jul 15 13:38:46 1997 Mike Meissner - - * rtl.h (replace_regs): Declare. - -Mon Jul 14 16:18:19 1997 Jason Merrill - - * i960.h (ASM_OUTPUT_MI_THUNK): Define. - - * dwarf2out.c (gen_subprogram_die): Remove unreachable and redundant - code. - -Mon Jul 14 14:22:45 1997 Jeffrey A Law (law@cygnus.com) - - * calls.c (emit_library_call): Use right index into argvec array - when iterating over arguments which need to be pushed on the stack. - (emit_library_call_value): Likewise. - -Mon Jul 14 08:17:41 1997 Richard Kenner - - * gcc.c (convert_filename): Fix typo. - -Mon Jul 14 08:10:12 1997 Andreas Schwab - - * configure.in: Clear headers and lib2funcs before re-reading - config-lang.in. - - * m68k/linux.h (LINK_SPEC): Fix last change. - -Mon Jul 14 08:03:38 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * configure.in (sparc-*-linux-gnu{*,libc1*}): Add sparc/t-linux. - * sparc/t-linux: New file. - - * alpha/elf.h (LINK_SPEC): Fix typo. - * configure.in (alpha-*-linux-gnu*): Set tmake_file. - * alpha/t-linux: New file. - -Mon Jul 14 07:41:37 1997 Philippe De Muyter - - * m68k.c (output_{and,ior,xor}si3): New functions from patterns bodies. - * m68k.h (output_{and,ior,xor}si3): New extern declarations. - * m68k.md (adddi3, subdi3): Allow constant operand. - (anddi3, iordi3, xordi3): New patterns. - ({and,ior,xor}si3_internal): Use corresponding output_???si3 function. - -Mon Jul 14 07:33:11 1997 Fila Kolodny - - * configure.in (*-*-gnu*): Add crt{begin,end}S.o to extra_parts. - -Mon Jul 14 07:26:36 1997 Craig Burley - - * varasm.c (assemble_variable): If low part of size - doesn't fit in an int, variable is too large. - -Mon Jul 14 06:51:37 1997 Mike Meissner - - * bitmap.{h,c}: New files. - * Makefile.in (OBJS): Add bitmap.o. - (BASIC_BLOCK_H): New make variable for basic-block.h, bitmap.h. - ({flow,combine,regclass,local-alloc,reload1,reorg,sched}.o): Use - BASIC_BLOCK_H variable instead of basic-block.h. - * basic-block.h (*REG_SET): Delete old implementation; use bitmap.h. - (regset_{size,bytes}): Delete. - (regs_live_at_setjmp): Declare. - (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Delete. - * flow.c (init_regset_vector): Make global; don't take basic block - times # of pseduos as argument. - (life_analysis): Change all init_regset_vector calls. - Use free_regset_vector to release arrays only flow uses at end. - (allocate_for_life_analysis): Change init_regset_vector call. - Don't set regset_{size,bytes}. - (free_regset_vector): Call FREE_REG_SET to release any - memory allocated by each vector. - (propagate_block): Call FREE_REG_SET on dead/live. - (mark_used_regs): Don't use REGSET_ELT_TYPE anymore. - * output.h (allocate_for_life_analysis): Add declaration. - (regno_uninitialized, regno_clobbered_at_setjmp): Likewise. - (dump_flow_info, flow_analysis): Likewise. - * regclass.c (init_reg_sets): Invoke INIT_ONCE_REG_SET. - (allocate_reg_info): Invoke MAX_REGNO_REG_SET. - (regset_release_memory): Free basic_block_live_at_start storage. - * reorg.c (mark_target_live_regs): Delete unused variables. - * sched.c (schedule_block): Free space associated with - reg_pending_sets and old_live_regs. - (schedule_insns): Free bb_{dead,live}_regs on first pass. - (sched_analyze_insn): Use EXECUTE_IF_SET_IN_REG_SET and then clear. - * toplev.c (rest_of_compilation): Call regset_release_memory. - -Mon Jul 14 00:14:13 1997 Jason Merrill - - * toplev.c (main): Prefer DWARF 2 or stabs with -ggdb. - * ns32k/tek6000.h (PREFERRED_DEBUGGING_TYPE): DBX_DEBUG. - * alpha.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. - * mips.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. - -Sun Jul 13 15:11:08 1997 Richard Kenner - - * stupid.c (stupid_mark_refs): If setting reg set only in this - insn and not referenced, make REG_UNUSED note. - -Sun Jul 13 14:03:19 1997 Michael Meissner - - * gcc.c (process_command): If -save-temps and -pipe were specified - together, don't do -pipe. - -Sun Jul 13 12:27:03 1997 Doug Evans - - * gcc.c (main): Handle blank in version_string when comparing - with compiler_version. - -Sat Jul 12 01:53:55 1997 Jason Merrill - - * sparc.c (output_function_prologue): Fix offset from CFA. - (sparc_flat_output_function_prologue): Likewise. - -Fri Jul 11 09:49:15 1997 Jeffrey A Law (law@cygnus.com) - - * mips.c (epilogue_reg_mentioned_p): Delete unused function. - (mips_epilogue_delay_slots): Likewise. - (function_epilogue): Greatly simplify. - (mips_expand_epilogue): If we have a null prologue/epilogue, - then use a normal return insn. Emit blockage insns before - stack pointer adjustments. - (mips_can_use_return_insn): Renamed from simple_epilogue_p. All - callers changed. Do not use return insns if $31 is live in the - function or if generating profiling information. - * mips.h (DELAY_SLOTS_FOR_EPILOGUE): Delete. - (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise. - * mips.md (return): Remove expander and change the pattern to - look like a standard "return" insn. - (return_internal): Show use of $31 explictly. - (epilogue expander): Enable. - -Thu Jul 10 13:04:53 1997 Doug Evans - - * cccp.c (INO_T_EQ): Return 0 for MSDOS. - - * Makefile.in (CC): Use autoconf value. - -Tue Jul 8 18:08:00 1997 Jim Wilson - - * dwarf2out.c (gen_subprogram_die): When handling declarations, test - DECL_CONTEXT not decl_class_context before equate_decl_number_to_die. - -Tue Jul 8 16:47:13 1997 Michael Meissner - - * rs6000.md (movsi define_split): Use unsigned HOST_WIDE_INT, - not unsigned. - -Sat Jul 7 00:01:41 1997 Jim Meyering - - * i386/t-sol2 (crt[1in].o): Also depend on $(GCC_PASSES). - -Fri Jul 4 11:45:39 1997 Jason Merrill - - * dwarf2out.c (DWARF_CIE_HEADER_SIZE, DWARF_FDE_HEADER_SIZE, - size_of_cfi, size_of_fde, calc_fde_sizes, next_fde_offset, - cie_size): Lose. - (ASM_OUTPUT_DWARF_STRING): Move earlier. - (INCOMING_FRAME_SP_OFFSET): Provide default. - (initial_return_save): Adjust for CFA offset. - (dwarf2out_frame_debug): Lookup initial CFA offset when setting up. - (output_call_frame_info): Use label subtraction for length fields. - Add pointer to exception region information in for_eh case. - (dwarf2out_do_frame): New fn. - (dwarf2out_frame_init): Use INCOMING_FRAME_SP_OFFSET. - (dwarf2out_frame_finish): Don't bother emitting .debug_frame for - non-Irix targets. Just emit .eh_frame. - (output_die): Refer to an FDE with label subtraction. - * i386.h (INCOMING_FRAME_SP_OFFSET): Define. - * defaults.h (DWARF2_UNWIND_INFO): Define if - INCOMING_RETURN_ADDR_RTX is provided. - * final.c (final): Don't call dwarf2out_frame_debug unless we are - doing dwarf 2. - -Thu Jul 3 17:37:52 1997 Jim Wilson - - * fp-bit.c (unpack_d): Check fraction not sign to distinquish QNaN. - -Wed Jul 2 09:48:03 1997 Michael Meissner - - * loop.c (strength_reduce): Make sure register does not exceed the - table size when looking up the last UID. - -Wed Jul 2 07:47:44 1997 Nick Burrett - - * genoutput.c (process_template): Place increment expression - outside of putchar function call. - -Wed Jul 2 06:56:52 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * sparc/linux.h (LIBGCC_SPEC): Removed. - (CC1_SPEC): Add %{profile:-p}. - ({CPP,LIB,LINK}_SPEC): Choose glibc 1 or 2 depending on USE_GNULIBC_1. - * configure.in (sparc-*-linux-gnulibc1*): New configuration. - - * configure.in (powerpc-*-linuxgnu*): Default thread_file is posix. - Set xmake_file to x-linux. Add extra_parts. - * rs6000/linux.h (LINK_SPEC): Defined. - - * m68k/linux.h (LINK_SPEC): Pass -shared for -shared. - ({CPP,LINK}_SPEC): Choose for glibc 1 or 2 depending on USE_GNULIBC_1. - * configure.in (m68k-*-linux-gnu*): Default thread_file is `posix'. - (m68k-*-linux-gnulibc1): New configuration. - - * alpha/elf.h (LINK_SPEC): Change ld-gnu.so.1 to ld-linux.so.2. - * configure.in (alpha-*-linux-gnu*): Default thread_file is `posix'. - -Wed Jul 2 06:12:37 1997 Richard Kenner - - * alpha.md (divsi3, modsi3, udivsi3): Comment out. - (extendsfsd2_no_tp): Add alternative with output in MEM, input in REG. - - * configure.in (*-linux*): Add "-gnu" to names to match. - - * libgcc2.c (_trampoline): Add stdcall attribute to VirtualProtect - on i386. - - * objc/objc.gperf: Renamed from gperf. - -Wed Jul 2 05:42:19 1997 Andreas Schwab - - * objc/Make-lang.in ($(srcdir)/objc/objc-parse.c): Fix command - to use the right file names. - -Tue Jul 1 23:25:42 1997 Richard Kenner - - * reorg.c (redundant_insn): If INSN or possible match has REG_UNUSED - note, don't have match. - -Tue Jul 1 18:36:24 1997 Doug Evans - - * mips.c (mips_output_external): Don't output .extern's for - variables in user specified sections unless they're .sbss/.sdata. - -Tue Jul 1 18:30:26 1997 Jim Wilson - - * cse.c (find_best_addr): Add missing rtx_cost arguments. - - * fp-bit.c (float_to_usi): Move code for negative numbers before code - for infinity. Modify infinty code to only handle positive infinities. - -Tue Jul 1 11:16:41 1997 Robert Lipe - - * fixinc.sco: Restore pwd aftercopy. - Convert declaration of abs in math.h to prototype. - Fix static functions in sys/stat.h for C++. - -Tue Jul 1 10:55:47 1997 Michael Meissner - - * rs6000.md ({add,ior,xor}si3): Change to use define_expand wrapper - and split add/ior/xor of large constants early. - (andsi3): Remove 6/29 code to do and of large constants. - (nor, nand, eqv, maskir): Add names to all logical define_insns. - -Tue Jul 1 09:03:35 1997 Jeffrey A Law (law@cygnus.com) - - * h8300.h (BIGGEST_FIELD_ALIGNMENT): Remove definition. - * mips.h (BIGGEST_FIELD_ALIGNMENT): Likewise. - -Mon Jun 30 14:58:00 1997 Jeffrey A Law (law@cygnus.com) - - * sh.c (sh_expand_epilogue): Emit blockage insn before cutting - back stack. - -Sun Jun 29 11:27:07 1997 Michael Meissner - - * rs6000.h (TARGET_FLAGS): Add -m{,no-}update to suppress - creating load/store with update instructions, and also - -m{,no-}fused-madd to suppress the generation of fused add and - multiply instructions. Move debug flags to TARGET_OPTIONS. - (GO_IF_LEGITIMATE_ADDRESS): Don't allow PRE_{INC,DEC} if -mno-update. - (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto. - (rs6000_debug_{name,stack,arg}): Add declarations. - (toc_initialized): Likewise. - (got_no_const_operand): Likewise. - (PREDICATE_CODES): Add got_no_const_operand. - (toc_section): Make toc_initialized a global. - (RTX_COSTS): Set appropriate costs for add, logical operators that - are really two instructions. - - * rs6000.c (rs6000_debug_{name,stack,arg}): Add definitions. - (rs6000_override_options): Process debug flags. - (toc_initialized): Global to say toc initialized. - (small_data_operand): Use #if TARGET_ELF, not #ifdef TARGET_SDATA. - (rs6000_init_expanders): Likewise. - (SMALL_DATA_RELOC): Likewise. - (got_no_const_operand): Recognize SYMBOL_REF and LABEL_REF. - (rs6000_makes_calls): System V profiling doesn't count as a call. - (rs6000_stack_info): Likewise. - (rs6000_output_load_toc_table): Take register number argument to - determine register to load. Generate correct code if more than - one toc table is done in System V due to profiling or non-local - gotos. If System V toc is not initialized, initialize it now. - (rs6000_allocate_stack_space): Move code from output_prolog to - allocate stack space. Take -mno-update into account. - (output_prolog): Call rs6000_allocate_stack_space. Only set - rs6000_pic_func_labelno if not profiling. - (output_function_profiler): Implement System V profiling. - (and_operand): Don't call reg_or_short_operand. - (rs6000_finalize_pic): If not optimizing, insert a USE of the GOT - register as the last insn. - - * rs6000.md (load/store update): Take -mno-update into account. - If -msoft-float, support SF load/store with update to GPR regs. - (allocate_stack): Take -mno-update into account. - (add/subtract + multiply instructions): Take -mno-fused-madd into - account. - (nonlocal_goto_receiver): Specify register # to load. - ({add,and,ior,xor}si3): Recognize operation done with full 32 bit - constant, splitting latter if need be. - (andsi3 define_split): Fix up splitting andsi3 of large constant. - ({ior,xor}si3 define_split): Use GEN_INT to create integer rtx - values. - (movsi_got{,_internal}): Split the load of a CONST into load of - the SYMBOL_REF/LABEL_REF and an add. - (movsi): Know that addsi3 can handle large values now for NT. - - * sysv4.h (TARGET_SDATA): Remove explicit bit for -msdata. - (SUBTARGET_OVERRIDE_OPTIONS): Likewise. - (ASM_OUTPUT_ALIGNED_LOCAL): Likewise. - (SUBTARGET_SWITCHES): Indicate -m{,no-}sdata doesn't set any flags. - (ASM_SPEC): Only pass -m{,no-}reg-names if assembling .s/.S files. - (CC1_SPEC): If -msdata, invoke compiler with -msdata=default. - (PROFILE_BEFORE_PROLOGUE): Likewise. - (RS6000_MCOUNT): Define as "_mcount". - (toc_section): Make toc_initialized a global. - -Fri Jun 27 19:01:11 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * config/t-linux-gnulibc1: New file. - * configure.in (i[3456]86-*-linux*): Default thread_file is `posix'. - (i[3456]86-*-linux*gnulibc1): New case. - * config/linux.h (LIB_SPEC): Choose for glibc 1 or 2 depending - on USE_GNULIBC_1. - * i386/linux.h (CPP_SPEC, LINK_SPEC): Likewise. - -Fri Jun 27 19:00:52 1997 Ralf Baechle - - * config/linux.h (PREFERRED_DEBUGGING_TYPE): Undefine before define. - -Fri Jun 27 18:35:04 1997 Alan Modra - - * configure.in: Clean up Make-{host,target,hooks} in all - subdirs, not just '.'. - * Makefile.in (distclean): Delete */Make-{host,target,lang,hooks}. - -Fri Jun 27 18:27:11 1997 Fila Kolodny - - * config/xm-gnu.h (fcntl.h): Only include if not building libgcc.a. - -Fri Jun 27 18:17:44 1997 Doug Evans - - * configure.frag: Rewrite. - - * objc/Make-lang.in (OBJC_CCOMMON): Object files don't go in srcdir. - (OBJC_OBJS): Likewise. - (OBJC_O): Likewise. - (objc-parse.o, objc-act.o): Fix rules. - (objc/libobjc files): Fix rules. - -Fri Jun 27 13:23:38 1997 Andrew Cagney - - * fp-bit.c (float_to_si): Correct return value when Inf. - -Fri Jun 27 10:47:09 1997 Scott Christley - - * Makefile.in (DLLTOOL): Define.e - * objc/Make-lang.in (libobjc_entry.o, libobjc_s.a, libobjc.dll): - New targets. - (objc.install-normal): Install Objective-C runtime as a DLL. - (objc.mostlyclean): Clean up files used to build DLL. - * objc/libobjc.def: New file. - * objc/libobjc_entry.c: New file. - - * objc/sendmsg.c (search_for_method_in_list): No longer static. - - * Makefile.in (GCC_THREAD_FILE): Renamed from OBJC_THREAD_FILE. - * configure.lang (GCC_THREAD_FILE): Likewise. - * configure.in (--enable-threads): New parameter. - * objc/Make-lang.in (OBJC_THREAD_FILE): New definition.e - * objc/config-lang.in: Print message about ObjC thread file. - - * cccp.c (INO_T_EQ): Define for Win32 but not Cygwin32. - * i386/mingw32.h: New file. - * i386/xm-mingw32.h: New file. - * configure.in (i[3456]86-*-mingw32): New target. - * protoize.c (link): Eliminate definition on Win32. - - * objc/thr-posix.c (__objc_thread_yield): Use sched_yield instead. - -Fri Jun 27 10:36:41 1997 J"orn Rennecke - - * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): - Round up when calculating possible end address. - -Wed Jun 25 19:54:29 1997 Jim Wilson - - * unroll.c (final_giv_value): Verify that bl->initial_value is - invariant before trying to use it. - -Wed Jun 25 18:13:05 1997 Michael Meissner - - * rs6000/sysv4.h (WCHAR_TYPE{,_SIZE}): Make wchar_t long as per - ABI spec. - -Wed Jun 25 16:56:16 1997 Jason Merrill - - * sparc.h (INCOMING_RETURN_ADDR_RTX): Define. - (DBX_REGISTER_NUMBER): Fix frame pointer regno for -mflat. - * sol2.h (DBX_REGISTER_NUMBER): Likewise. - * sparc.c (save_regs): Emit dwarf2 frame debug info. - (output_function_prologue, sparc_flat_save_restore, - sparc_flat_output_function_prologue): Likewise. - - * dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_GNU_window_save. - * dwarf2out.c (dwarf_cfi_name, output_cfi): Support it. - (dwarf2out_cfi_label): Make non-static. - (initial_return_save): Support PLUS. - (dwarf2out_window_save, dwarf2out_return_save, - dwarf2out_return_reg): New fns. - - * dwarf2out.c (SECTION_FORMAT): Use PUSHSECTION_FORMAT, if defined. - (DEBUG_INFO_SECTION): Rename from DEBUG_SECTION. - (DEBUG_LINE_SECTION): Rename from LINE_SECTION. - * mips/iris6.h: Likewise. - -Wed Jun 25 16:25:41 1997 Scott Christley - - * Makefile.in (GCC_PASSES): Don't define with $(exeext). - * configure.in ({cc,stage_prefix}_set_by_configure): Eliminate extra - comma and don't pass value to configure.lang. - * objc/Make-lang.in (objc-runtime): Add objc-headers. - - * configure.in: Execute configure.frag in a shell. - - * configure.in (cross_overrides, build_overrides): Default to - /dev/null to help platforms where sed cannot handle empty filenames. - - * Reorganize thread implementation to make a clearly defined - front-end/back-end interface. - * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Completely - rework according to new interface. - * objc/thr-{solaris,win32}.c: Likewise. - * objc/thr.c: Likewise. - * objc/thr.h: Define front-end/back-end interface functions and - structures. - -Wed Jun 25 16:14:10 1997 Ovidiu Predescu - - * Complete implementation of +load. - * objc/init.c (objc_send_load): New function. - (objc_class_tree): New structure. - (create_tree_of_subclasses_inherited_from): New function. - (__objc_tree_insert_class): New function. - (objc_tree_insert_class): New function. - (objc_preorder_traverse): New function. - (objc_postorder_traverse): New function. - (__objc_tree_print): New function. - (__objc_destroy_class_tree_node): New function. - (class_is_subclass_of_class): New function. - (__objc_exec_class): Allocate class tree list and load hash table. - (__objc_send_message_in_list): Rewrite using hash table. - (__objc_send_load): Remove calls to _objc_load_callback. - (objc_send_load): Make static. Create Tree of classes resembling - class hierarchy for all modules. Call __objc_send_load on all of - the modules in __objc_module_list. - (__objc_create_classes_tree): New function. - - * objc/encoding.h (method_get_sizeof_arguments): Fix typo. - * objc/objc-api.h (OBJC_ERR_BAD_STATE): New error code. - On NeXT redefine object_copy and object_dispose to avoid - a conflict with those defined in system library. - * objc/selector.c (__objc_register_instance_methods_to_class): New - function. - * objc/runtime.h: Likewise. Add missing function prototypes. - -Wed Jun 25 15:09:01 1997 Richard Kenner - - * Makefile.in (Makefile): Execute configure.frag from srcdir. - - * Makefile.in (configure): Target is $(srcdir)/configure. - -Tue Jun 24 15:18:14 1997 Jim Wilson - - * m68k.h (LIMIT_RELOAD_CLASS): Define. - - * recog.c (constrain_operands): When checking earlyclobbers, use - operands_match_p instead of rtx_equal_p. - - * dwarfout.c (field_byte_offset): Check for object_offset_in_bits - greater than bitpos_int and recompute object_offset_in_bytes if true. - - * mips.md (movdi_internal): Add x/J alternative. - (movdi_internal2): Add x/J alternative; change a/I to a/J. - (movsi_internal1, movsi_internal2): Change x/I alternative to x/J. - -Tue Jun 24 08:49:56 1997 Jeffrey A Law (law@cygnus.com) - - * pa.h (ASM_OUTPUT_SECTION_NAME): Fix typo. - -Mon Jun 23 22:48:00 1997 Jim Wilson - - * unroll.c (find_splittable_givs): Set splittable_regs_updates to - biv_count for reduced givs. - -Mon Jun 23 10:51:53 1997 Jeffrey A Law (law@cygnus.com) - - * mn10200.c, mn10200.h, mn10200.md: New files for mn10200 port. - * lib1funcs.asm, divmod.c, udivmod.c, udivmodsi4.c: Likewise. - * t-mn10200, xm-mn10200.h, va-mn10200.h: Likewise. - * Makefile.in (USER_H): Add va-mn10200.h. - * varargs.h, stdarg.h: Include va-mn10200.h. - * configure.in (mn10200-*-*): New target. - -Sun Jun 22 06:47:19 1997 Andreas Schwab - - * combine.c (force_to_mode): Don't do anything for ASM_OPERANDS insn. - -Sun Jun 22 06:29:28 1997 J. Kean Johnston - - * ginclude/stdarg.h: Protect va_list definition from SCO headers. - * ginclude/varargs.h: Likewise. - -Sat Jun 21 20:56:23 1997 Scott Christley - - * Make ObjC a front-end language. - * Makefile.in (LANGUAGES, COMPILERS, .PHONY, stmp-int-hdrs): Remove - specific references to ObjC compiler and source files. - ({mostly,dist,maintainer,}clean, install-normal): Likewise - (OBJC_OBJS, OBJC, OBJECTIVE-C, cc1obj, objc-runtime): Rules deleted. - (libobjc.a, sublibobjc.a, objc-parse.{o, c, y}): Rules deleted. - (objc-headers, install-libobjc): Rules deleted. - * objc/Make-lang.in: New file; from rules deleted above. - * objc/config-lang.in: New file. - * objc/Makefile.in: Changes to support ObjC as a front-end language; - renamed from Makefile.in. - * objc-act.{c,h}, objc-parse.{c,y}, objc-tree.def: Moved to objc dir. - -Sat Jun 21 07:54:36 1997 Robert Lipe - - * fixinc.sco (math.h): Correct the collision of "exception". - -Sat Jun 21 06:51:40 1997 Peter Gerwinski - - * rs6000.c (output_epilog): Name is "GNU Pascal", not all caps. - -Sat Jun 21 06:29:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * gcc.c (main): Check for and read ${libdir}/gcc-lib/specs to - override the default specs. - -Fri Jun 20 17:20:15 1997 Jim Wilson - - * mips.c (output_block_move): When loading addresses into registers, - add checks for ABI_N32 and ABI_64. - (mips_expand_prologue): Add check for SImode in code splitting - tsize_rtx when it is large_int. - -Fri Jun 20 09:07:31 1997 Russell King - - * configure.in (arm-*-linuxaout): New target. - * arm/lib1funcs-linux.asm, arm/linux-gas.h: New files. - * arm/linux.h, arm/t-linux, arm/xm-linux.h: New file. - * xm-linux.h: Undef some macros before defining them. - -Thu Jun 19 21:18:20 1997 Jim Wilson - - * dwarf2out.c (output_line_info): Always use DW_LNE_set_address instead - of DW_LNS_fixed_advance_pc for line number addresses. - (size_of_line_info): Adjust size calculation as per above change. - (text_end_label): Make it static. - -Thu Jun 19 14:55:49 1997 Brendan Kehoe - - * toplev.c (xmalloc): Only give the fatal msg if SIZE is non-zero. - -Sun Apr 27 23:19:13 1997 Ulrich Drepper - - * libgcc2.c (__eh_type): Remove `extern' to make this a definition. - -Wed Jun 18 18:10:16 1997 Per Bothner - - * dbxout.c (dbxout_type_fields): Skip field if DECL_IGNORED_P. - -Wed Jun 18 18:04:33 1997 Mike Stump - - * except.c (end_eh_unwinder): If we have a return instruction, we - have to make sure we use it and don't fall off the end of the - function in the unwinder. - -Wed Jun 18 14:27:58 1997 Mike Stump - - * flow.c (find_basic_blocks): Fix end case bug. - -Tue Jun 17 18:35:57 1997 Mike Stump - - * libgcc2.c (__eh_pcnthrow): Add support -fno-sjlj-exceptions - -fPIC exception handling on the SPARC. - * sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. - * libgcc2.c (__eh_ffetmnpc): Remove. - -Mon Jun 16 20:28:51 1997 Jason Merrill - - * collect2.c (extract_string): Null-terminate. - -Mon Jun 16 14:38:44 1997 Michael Meissner - - * combine.c (set_nonzero_bits_and_sign_copies): Use REG_SET macros - instead of doing bit operations directly. - (try_combine,reg_dead_at_p): Ditto. - * caller-save.c (save_call_clobbered_regs): Ditto. - * reload1.c (reload): Ditto. - * local-alloc.c (update_equiv_regs,block_alloc): Ditto. - * sched.c (schedule_block): Dito. - -Sun Jun 15 20:46:12 1997 Jim Wilson - - * dwarf2out.c (dwarf2out_frame_debug): Handle IOR. - (struct limbo_die_struct): Define. - (TYPE_DECL_IS_STUB): Call decl_ultimate_origin if DECL_ABTRACT_ORIGIN - is set. - (limbo_die_count): Delete. - (libmo_die_list): Define. - (new_die): Add die to limbo_die_list instead of incrementing - limbo_die_count. - (add_AT_location_description): Renamed from add_location_attribute. - New parameter attr_kind. - (add_location_or_const_value_attribute, gen_subprogram_die, - add_bound_info): Change call to add_AT_location_description. - (add_bound_info): Add call to contains_placeholder_p. Ignore - MAX_EXPR and VAR_DECL. - (add_subscript_info): Ignore the index type if it is an unnamed - integral type. - (scope_die_for): Move check for function-local tags after code setting - containing_scope, and add check for non-NULL containing_scope - (add_type_attribute): If unnamed type, use TREE_TYPE instead. - (gen_enumeration_type_die, gen_struct_or_union_type_die): Call - add_child_die if die_parent is NULL. - (gen_subprogram_die): Ifdef out DW_AT_static_link code. - (decls_for_scope): Delete decrement of limbo_die_count. - (dwarf2out_finish): Add code to traverse the limbo_die_list, and - call add_child_die if die_parent is NULL. Delete limbo_die_count code. - * mips.c (mips_expand_prologue): If tsize_rtx is large_int, emit two - insns instead of one splitable insn, setting RTX_FRAME_RELATED_P. - -Fri Jun 13 19:33:35 1997 Brendan Kehoe - - * fixincludes: Also fix AIX NULL macro in sys/{dir,param,types}.h. - -Thu Jun 12 22:53:12 1997 Jim Wilson - - * m68k.md (mov[qhs]i): Remove pair of constraints which allow - offsetable memory addresses to be moved to the same for TARGET_5200. - -Thu Jun 12 15:33:01 1997 Jeffrey A Law (law@cygnus.com) - - * pa.h (SELECT_RTX_SECTION): Place symbolic operands into the - data section. - - * pa.c (emit_move_sequence): Rewrite code to handle arithmetic - involving plabels. - -Wed Jun 11 08:57:14 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * tree.c (unsave_expr_now): Avoid recursing into the parts of - the tree that are RTL. - -Thu Jun 12 09:43:55 1997 Jeffrey A Law (law@cygnus.com) - - * reorg.c (emit_delay_sequence): Call set_new_first_and_last_insn - after the new sequence insn has been spliced into the insn chain. - -Wed Jun 11 23:10:49 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (call, call_value): Use "call" instead of "calls" - for calls to named functions. - -Wed Jun 11 00:22:34 1997 Jim Wilson - - * configure, configure.in: Restore changes from Feb 15 to Apr 13 - lost during conversion to autoconf. - -Tue Jun 10 18:23:35 1997 Mike Stump - - * stmt.c (expand_decl_cleanup): Avoid core dumping when exceptions - aren't on. - -Tue Jun 10 18:22:30 1997 Jason Merrill - - * collect2.c (extract_string): New fn. - (main): Use it. - -Tue Jun 10 17:40:15 1997 Jim Wilson - - * expr.c (emit_group_load): Add case using gen_lowpart. - -Tue Jun 10 17:14:58 1997 Michael Meissner - - * rs6000/rs6000.c (rs6000_override_options): If -mcpu=403, set - -mstrict-align as well. - - * rs6000/t-ppc{,gas} (MULTILIB_EXTRA_OPTS): Build libraries with - -mstrict-align. - - * configure.in ({powerpc,rs6000}*-*-*): Add embedded targets to - --with-cpu=n support. - -Tue Jun 10 07:06:12 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * flow.c (mark_used_regs): Fix typo in Jun 4 change. - -Mon Jun 9 20:26:26 1997 Jim Wilson - - * Makefile.in (MAYBE_USE_COLLECT2): Renamed from MAYBE_USE_COLLECT. - -Mon Jun 9 19:42:21 1997 Jason Merrill - - * fold-const.c (fold): Don't do COND_EXPR -> MIN_EXPR folding if it - loses information that might be needed by a later use as an lvalue. - -Mon Jun 9 19:10:50 1997 Alexandre Oliva - - * configure.in: Don't override a user's setting for prefix - on platforms that use the native prefix. - -Mon Jun 9 19:00:49 1997 Brendan Kehoe - - * integrate.c (expand_inline_function): Use the mode of FNDECL's - result rtl, not the result type itself, in setting ARRIVING_MODE. - - * reload1.c (reload): Use xmalloc instead of alloca for the label - offsets in OFFSETS_AT and OFFSETS_KNOWN_AT. - -Mon Jun 9 15:16:52 1997 Mike Stump - - * flow.c (find_basic_blocks): Eliminate more dead code, enables - dead throws to be eliminated. - -Mon Jun 9 17:15:50 1997 Stephen L Moshier - - * alpha.c (check_float_value): Underflow and overflow constants - are different for FLOAT_VAX and default targets. - -Mon Jun 9 16:48:21 1997 Scott Christley - - * Makefile.in (Makefile): Process language fragments. - * configure.frag: New file. - * configure.in: Move language fragment processing to configure.lang.e - - * Makefile.in (GCC_PASSES): Prevent all compilers from being - built when only the C compiler is needed. - - * configure.in (cross_overrides, build_overrides): Use absolute - path to GCC top-level source directory. - - * configure.in: Save target alias for language directories. - - * configure.in (with-gxx-include-dir): New parameter for - setting the g++ header file directory. - * Makefile.in (gxx_include_dir): Use autoconf variable. - - * configure.in: Add parameter for setting local prefix. - - * configure.lang: New file. - * configure.in: Move language subdirectory Makefile processing - into configure.lang. - -Mon Jun 9 16:44:47 1997 Jim Wilson - - * sched.c (attach_deaths): Fix typo in Jun 4 change. - -Mon Jun 9 15:13:00 1997 Marc Lehmann (pcg@goof.com) - - * varasm.c (assemble_end_function): Switch back to function - section after outputting constant pool. - -Mon Jun 9 14:47:22 1997 Paul Eggert - - * tree.c (change_main_variant): Remove unused function. - (build_array_type): Remove obsolete references to - change_main_variant. - * c-decl.c (complete_array_type): Likewise. - - * c-common.c (c_build_type_variant): Don't futz with main type - variant of array since C Standard requires main type variant of - array-of-const also be array-of-const. - - * Makefile.in: Comment out lines containing just formfeeds. - - * Makefile.in (distclean): Remove config.bak. - (maintainer-clean): Output warning. - Do not remove `configure'. - -Mon Jun 9 14:44:17 1997 J.T. Conklin - - * configure.in (*-*-netbsd): Restore changes of Apr 13th lost in - autoconf conversion: tmake_file now t-netbsd; delete xmake_file. - -Mon Jun 9 14:39:29 1997 Richard Kenner - - * expr.c (expand_builtin, case BUILT_IN_FRAME_ADDRESS): - Use correct function name in error message. - - * Makefile.in (diff): Exclude bi-parser.h. - - * i386.h (CC1_CPU_SPEC): Renamed, was CC1_SPEC. - (CC1_SPEC): New macro. - (EXTRA_SPECS): Add "cc1_cpu". - * i386/linux.h (CC1_SPEC): New macro. - -Mon Jun 9 13:23:06 1997 Philippe De Muyter - - * m68k/next.h (TARGET_DEFAULT): Use MASK_68040, - not MASK_68040_ALSO. - * m68k/mot3300.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. - - * m68k.h (MACHINE_STATE_{SAVE,RESTORE}): Test #ifdef __mcf52000__, - not if (TARGET_52000); fixed for mc68000 case. - - * m68k/mot3300.h (CPP_SPEC): Define __mc68020__ if no -m[c]68000 - command-line option given. - -Mon Jun 9 09:19:17 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * Makefile.in (target_alias): Substitute with target_alias. - - * final.c (final_scan_insn): Use single_set to check cc_status.flags. - -Mon Jun 9 09:09:07 1997 Andreas Schwab - - * c-common.c (check_format_info): Correct handling of the 'a' flag - which adds another pointer level. - -Sun Jun 8 00:34:25 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (conditional branch insns): Get length right for branches - to targets which can not be reached with a "bl" instruction. - * pa.c (output_cbranch): Handle branches to targets which can not - be reached with a "bl" instruction. - - * pa.md (alternate dbra pattern): Remove incorrect pattern. - -Sat Jun 7 23:30:25 1997 Jeffrey A Law (law@cygnus.com) - - * pa.c (struct defer_plab): Renamed to struct deferred_plabel. - Remove "symbol" field and replace with "name" field. - (output_function_epilogue): Don't output deferred plabels here. - (output_deferred_labels): New function. Output them here instead. - (output_call): Rewrite long call support. - * pa.h (ASM_FILE_END): Define. - (LEGITIMATE_CONSTANT_P): Never accept a function_label_operand. - * pa.md (HIGH and LO_SUM of function address): Remove patterns. - -Fri Jun 6 16:09:04 1997 Mike Stump - - * libgcc2.c (__eh_ffetmnpc): Add support for machines that cannot - access globals after throw's epilogue when -fno-sjlj-exceptions is - used. - * rs6000.c (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. - * mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. - (INITIAL_ELIMINATION_OFFSET): Fix RETURN_ADDRESS_POINTER_REGNUM - for 64 bit words, with 32 bit pointers and variable endianness. - -Fri Jun 6 17:27:58 1997 Mike Meissner - - * regclass.c (allocate_reg_info): Fix off by one error. - -Fri Jun 6 17:17:41 1997 Doug Evans - - * basic-block.h (EXECUTE_IF_SET_IN_REG_SET): Fix setting of scan_rs_. - (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Likewise. - (EXECUTE_IF_AND_IN_REG_SET): Likewise. - (EXECUTE_IF_AND_COMPL_IN_REG_SET): Likewise. - -Fri Jun 6 15:42:59 1997 Stan Cox - - * i386.c (notice_cc_update): Set CC_FCOMI is this is a float compare. - -Fri Jun 6 15:12:38 1997 Jim Wilson - - * basic-block.h (REG_SET_TO_HARD_REG_SET): Fix typo. - - * sched.c (update_flow_info): When add extra REG_DEAD note for original - dest, handle case where last insn both uses and sets dest. - -Thu Jun 5 22:19:36 1997 Brendan Kehoe - - * fixinc.irix: Add declaration of __vfork to unistd.h. - - * i960/vx960-coff.h (CPP_SPEC): Always define CPU, even if they - use -ansi; the VxWorks headers assume it's always present. - * sparc/vxsparc.h (CPP_SPEC): Define, adding the CPU definition to - what came from sparc.h. - (CPP_PREDEFINES): Don't define it here. - -Thu Jun 5 13:40:33 1997 Mike Meissner - - * basic-block.c (OBSTACK_ALLOC_REG_SET): Rename from - OBALLOC_REG_SET. Add obstack pointer parameter. - - * flow.c (function_obstack): Add declaration. - (life_analysis): Don't allocate the space to hold to vector of - regsets here. - (init_regset_vector): Add pointer parameter and delete space - paramter. Use OBSTACK_ALLOC_REG_SET to allocate. Change callers. - (propagate_block): Use ALLOCA_REG_SET instead of bare alloca. - - * sched.c (schedule_block): Fix typo in yesterday's changes. - * reorg.c (mark_target_live_regs): Ditto. - -Thu Jun 5 09:44:49 1997 Jeffrey A Law (law@cygnus.com) - - * sh.c (trap_exit, sp_switch): New variables. - (print_operand, case '@'): If trap_exit is nonzero, then use - a trapa instead of an rte/rts to exit the current function. - (sh_expand_prologue): Switch stacks at function entry as needed. - (sh_expand_epilogue): Similarly at function exit. - (function_epilogue): Clear trap_exit and sp_switch too. - (sh_valid_machine_decl_attribute): New function. - * sh.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. - (sp_switch): Declare. - * sh.md (sp_switch_1, sp_switch_2): New named patterns. - -Wed Jun 4 18:11:14 1997 Michael Meissner - - * basic-block.h (REGSET_ELT_BITS): Make this explicitly unsigned, so - that division and modulus of REGSET_ELT_BITS uses a pure shift. - (*_REG_SET): New macros to abstract the register set interface. - - * caller-save.c (save_call_clobbered_regs): Use new *_REG_SET - macros. - * flow.c (life_analysis,propagate_block,insn_dead_p): Ditto. - (regno_uninitialized,regno_clobbered_at_setjmp,mark_set_1): Ditto. - (mark_used_regs,dump_flow_info,global_conflicts): Ditto. - global.c (mark_elimination): Ditto. - * reorg.c (mark_target_live_regs): Ditto. - * sched.c (sched_{analyze_{1,insn},note_set}): Ditto. - (birthing_insn_p,attach_deaths,unlink_notes,schedule_block): Ditto. - - * sched.c (sometimes structure): Delete offset, bit fields, replace - with regno. - (new_sometimes_live): Take regno argument, not offset and bit. - Change all callers. - -Tue Jun 3 19:18:36 1997 Brendan Kehoe - - * fixincludes: Fix AIX NULL macro use of void*. - -Tue Jun 3 15:21:04 1997 Jason Merrill - - * sparc.h (ASM_OUTPUT_MI_THUNK): Handle -fpic. - -Mon Jun 2 16:53:53 1997 Michael Meissner - - * loop.c (n_times_{set,used}): Make type int, not short. - (scan_loop): n_times{set,used} are now int pointers. - - * sched.c (sched_reg_n_deaths): Remove unused variable. - (struct sometimes): Make fields int sized, not short. - (schedule_insns): Don't set sched_reg_n_deaths, nobody uses it. - - * regclass.c (allocate_reg_info): Allocate the space for - reg_renumber, but don't set reg_renumber unless new argument - RENUMBER_P is set. If this is the first call for the function and - we need to grow space, use free/xmalloc instead of realloc since we - will be initializing the whole array. If number of registers is < - 0, just free up the space. - (reg_scan): Update allocate_reg_info call. - - * regs.h (allocate_reg_info): Change prototype. - - * flow.c (allocate_for_life_analysis): Update allocate_reg_info - call. - - * local-alloc.c (local_alloc): Call allocate_reg_info to allocate - and initialize the reg_renumber array. - * stupid.c (stupid_life_analysis): Ditto. - -Mon Jun 2 14:50:06 1997 Dave Miller - - * sparc/sparc.md (v9 eq/ne cond move patterns): Add early clobber - constraint to destination. - -Fri May 30 11:00:44 1997 Michael Meissner - - * regs.h (reg_info): New structure to group the arrays indexed by - register number created by reg_scan and flow_analysis that are - globally visiable. - (reg_n_info): Pointer to the register information array. - (reg_n_{refs,sets,deaths,calls_crossed}): Delete variables. - (reg_changes_size): Ditto. - (REG_N_{REFS,SETS,DEATHS,CALLS_CROSSED}): New macros to reference - reg_n_info. - (REG_{CHANGES_SIZE,{FIRST,LAST,LAST_NOTE}_UID}): Ditto. - (allocate_reg_info): Add declaration. - - * basic-block.h (reg_basic_block): Delete. - (REG_BASIC_BLOCK): Use reg_n_info structure. - - * caller-save.c: Change all references to the above arrays to use - the corresponding macro to access the reg_n_info array. - * combine.c, cse.c, flow.c, global.c, jump.c, local-alloc.c: Ditto. - * loop.c, regclass.c, reload1.c, sched.c, stupid.c, unroll.c: Ditto. - - * regclass.c (allocate_reg_info): New function to allocate the - reg_info array and initialize the appropriate fields. - (reg_scan): Call it. - - * flow.c (allocate_for_life_analysis): Call allocate_reg_info to do - the actual allocation. - -Thu May 29 15:42:59 1997 Stan Cox - - * i386.md (movsfcc_1, movdfcc_1, movxfcc_1): Use singlemove_string - for float conditional move when destination and operands all differ. - - * i386.h (ASM_OUTPUT_REG_{PUSH,POP}): add %% before register name. - - * go32.h (ASM_OUTPUT_ALIGN): Use .p2align, not byte alignments. - -Wed May 28 20:44:00 1997 Mike Stump - - * except.c (push_eh_entry): Eliminate start of exception region - label, as it isn't used. Rename end_label to outer_context. - (expand_eh_region_start_for_decl): Likewise. - (expand_leftover_cleanups): Likewise. - (expand_start_all_catch): Likewise. - * except.h (eh_entry): Likewise. - * except.c (expand_eh_region_end): Likewise. Jump around the nop - that we insert, so that we can optimize it away, if it is unused, - also so that flow analysis can tell if we fall through to the end - of a function or not so that it can know if a function that returns - a value, in fact does or not. - -Wed May 28 10:50:09 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (jump): Handle out of range unconditional jump - when not optimizing. - -Thu May 22 00:57:07 1997 Jeffrey A Law (law@cygnus.com) - - * reload1.c (reload_cse_record_set): Ignore values for SREG if - their mode is narrower than DEST_MODE. - - * pa.h (DFMODE_RETURN_STRING): Define. - (SFMODE_RETURN_STRING): Likewise. - (ASM_DECLARE_FUNCTION_NAME): Use them. - -Wed May 21 23:32:02 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (reload_insi): Handle SUBREG properly. - -Tue May 20 22:32:13 1997 Jason Merrill - - * dwarf2out.c (dwarf2out_def_cfa): Set cfa_reg at the top. - -Tue May 20 16:57:50 1997 Brendan Kehoe - - * cplus-dem.c (do_type): Handle `J'. - (demangle_fund_type): Print "complex" for it. - -Mon May 19 21:01:53 1997 Jim Wilson - - * m68k.c (output_move_qimode): Add coldfire support. - * m68k.h (PUSH_ROUNDING): Add coldfire support. - * m68k.md (scc0_di, scc_di, seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, - sle, sleu): Add coldfire support. - -Mon May 19 17:53:34 1997 Mike Meissner - - * rs6000/rs6000.c: (rs6000_pic_func_labelno): New variable to hold - the pic label number for the function's LCL label. - (rs6000_output_load_toc_table): Use it. - (output_prolog): Store current value. - -Sun May 18 16:32:08 1997 Michael Meissner - - * config/dbxcoff.h (ASM_OUTPUT_SOURCE_LINE): Use the macros - ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL to create/output the line - number label. - -Sun May 18 13:55:12 1997 John Vickers (john@rhizik.demon.co.uk) - - * m68k.h (TARGET_SWITCHES): Add new target name, cpu32. - -Sun May 18 13:50:10 1997 Pat Rankin - - * cccp.c (VMS_write, VMS_read): Delete. - (safe_write): If MAX_WRITE_LEN is defined, limit - incremental write attempts to that amount. - (safe_read): Analogous situation for MAX_READ_LEN. - * cpplib.c (safe_read): Likewise. - * vax/xm-vms.h (MAX_WRITE_LEN, MAX_READ_LEN): Define. - - * vax/xm-vms.h (get_dynamic_handler_chain_libfunc): New macro. - (protect_cleanup_actions_with_terminate): New macro. - -Sun May 18 08:50:25 1997 Andreas Schwab - - * m68k/linux.h (ASM_COMMENT_START): Define. - * m68k/linux-aout.h (ASM_COMMENT_START): Define. - - * reload1.c (reload_cse_regno_equal_p): Check for value using more - than one register on a big endian machine. - -Sun May 18 08:39:59 1997 Vince Del Vecchio - - * loop.c (maybe_eliminate_biv_1): In (set (cc0) ) case, - swap compare operands when mult_val < 0 in one additional place. - -Sun May 18 08:33:30 1997 Richard Kenner - - * dwarf2out.c (ASM_COMMENT_START): Add default definition. - - * Makefile.in (maintainer-claean): Delete configure. - -Sun May 18 08:31:59 1997 Scott Christley - - * configure.in: New file. - * Makefile.in: Change to utilize autoconf variables. - * configure: Now an output file. - -Sun May 18 07:48:31 1997 J.T. Conklin - - * m68k.md (mov[qhs]i,movstrict[qs]i, mulsi3): Use 'Q' constraint - for TARGET_5200. - * m68k.h (EXTRA_CONSTRAINT): New macro. - - * m68k.h (TARGET_SWITCHES): Add 68020-60. - Mask out bits which indicate a particular processor when a different - processor is selected. - (MASK_68040_ALSO): Remove. - (MASK_68040): Change to be a single bit. - - * m68k.h (TARGET_ALIGN_INT, MASK_ALIGN_INT): New macros. - (BIGGEST_ALIGNMENT): Determine according to TARGET_ALIGN_INT. - (TARGET_SWITCHES): Add align-int and no-align-int. - - * m68k.md (mov[qhs]i}): Add pair of constraints which allow - offsetable memory addresses to be moved to the same for TARGET_5200. - - * m68k.c (output_move_strict{hi,qi}): New functions. - * m68k.h (output_move_strict{hi,qi}): Declare. - * m68k.md (movstrict*): Changed into define_expands. - Split insns into m68k and coldfire specific versions with appropriate - constraints. - -Sun May 18 07:26:40 1997 Philippe De Muyter - - * libgcc2.c (atexit): Cast malloc and realloc calls. - -Sat May 17 16:26:51 1997 Bernd Schmidt - - * final.c (profile_function): Call function_section, not - text_section. - -Sat May 17 16:01:00 1997 Philippe De Muyter - - * cse.c (notreg_cost): New function, extracted from COST macro. - (COST): Use notreg_cost. - -Sat May 17 15:13:23 1997 Richard Kenner - - * cse.c (cse_insn): Don't record a SRC that's a MEM and the same - as a REG_EQUIV note if DEST is set more than once. - -Fri May 16 14:50:57 1997 Jeffrey A Law (law@cygnus.com) - - * pa.c (output_move_double): Handle loading a general register - from a scaled indexed memory address. - * pa.md (movdf, movdi): Allow scaled loads into general registers. - -Fri May 16 13:31:08 1997 Mike Stump - - * rs6000.c (rs6000_stack_info): Only do eabi setup for "main", - when main is the global main, not some nested routine that - happens to be called main. - -Thu May 15 17:19:50 1997 Mike Stump - - * except.c (expand_start_all_catch): If the machine needs to - perform any actions at the start of an expcetion handler that - hasn't already been done, use gen_exception_receiver to emit it. - (expand_leftover_cleanups): Likewise. - * alpha/alpha.md (exception_receiver): Use it. - * pa/pa.h (exception_receiver): Use it. - -Thu May 15 08:36:59 1997 Jeffrey A Law (law@cygnus.com) - - * dbxout.c (dbxout_function_end): Don't subtract one from - the end of function scoping stab. - -Wed May 14 23:27:09 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (adddi3, subdi3): Remove expanders and patterns. - -Wed May 14 18:51:35 1997 Mike Stump - - * function.c (expand_function_end): Make sure we finish off any - leftover exception handlers. - -Tue May 13 14:07:01 1997 Mike Stump - - * expr.c (expand_builtin_setjmp): Remove setting of - current_function_has_nonlocal_goto, as this isn't a goto. - -Tue May 13 14:47:40 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) - - * arm.h (CPP_SPEC): Fix typo invoking cpp_endian. - * arm/t-semi (LIB2FUNCS_EXTRA): Build fp-bit.c when compiling - with -msoft-float. - * arm.c: Add prototypes for all static functions. - (output_multi_immediate, int_log2): Make static. - - * arm.h (*_SPEC): Remove all references to mle/mbe. - * arm/coff.h (MULTILIB_DEFAULTS): Likewise. - * arm/t-bare (MULTILIB_OPTIONS): Change options mbe/mle to mbig-endian - and mlittle-endian. - (MULTILIB_MATCHES): Nothing matches that matters. - -Mon May 12 20:42:20 1997 Mike Stump - - * except.c (expand_start_all_catch): If the machine needs a - nonlocal_goto_receiver, add one at the start of the exception - handler. - (expand_leftover_cleanups): Likewise. - -Mon May 12 17:36:28 1997 Jeffrey A Law (law@cygnus.com) - - * mips.c (move_operand): Accept any general operand after reload - has started. - -Fri May 9 14:29:33 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (udivmodhi4, divmodhi4): Remove expander, give - corresponding pattern [u]divmodhir4 name. Clear MDR register - in the udivmodhi4 pattern itself. - (clear_mdr): Delete pattern. - -Thu May 8 18:20:30 1997 Richard Earnshaw (rearnshaw@cambridge.arm.com) - - * arm/aout.h (ASM_OUTPUT_LONG_DOUBLE): Delete call to - arm_increase_location. - (ASM_OUTPUT_{DOUBLE,FLOAT,INT,SHORT,CHAR,BYTE,ASCII,SKIP}): Likewise. - (ASM_OUTPUT_ALIGN): Delete all code refering to arm_text_location. - - * arm.c (arm_increase_location, get_prologue_size): Delete. - (arm_naked_function_p): Add declaration. - (arm_pic_register): Define. - (all_procs): Delete entries for arm{60,620,70,7d,7di,700i,710c}; add - entries for arm{7m,7500fe,8}, strongarm and strongarm110. - (arm_override_options): Rework so that configure can properly set - the default processor type. Add a warning that PIC code is not yet - supported. - (legitimate_pic_operand_p, legitimize_pic_address): New functions. - (is_pic, arm_finalize_pic): New functions. - (arm_adjust_cost): New function. - (const_pool_offset, arm_backwards_branch, short_branch): Delete. - (arm_insn_not_targeted): Delete. - (add_constant): If generating AOF syntax, then handle pic specially. - (output_ascii_pseudo_op): Delete calls to arm_increase_location. - (function_really_clobbers_lr): Calls followed by a barrier don't - clobber the link register. - (output_func_prologue): Handle AOF syntax pic code. - (output_func_epilogue): Handle cases where lr_save_eliminated is set. - Delete call to arm_increase_location. - (arm_asm_output_label): Simplify, since we no-longer need to cache the - label's address. - (aof_pic_entry): New function to keep track of pic symbols. - (aof_dump_pic_table): New function. - - * arm.h (TARGET_CPU_arm*, TARGET_CPU_strongarm*, TARGET_CPU_generic): - define. - (CPP_ARCH_DEFAULT_SPEC): Set up based on setting of TARGET_CPU_DEFAULT. - (CPP_SPEC): Split up into sub-rule calls. - (CPP_CPU_SPEC): Add default definition. - (CPP_APCS_PC_SPEC, CPP_APCS_PC_DEFAULT_SPEC): Add definitions. - (CPP_FLOAT_SPEC, CPP_FLOAT_DEFAULT_SPEC): Add definitions. - (CPP_ENDIAN_SPEC, CPP_ENDIAN_DEFAULT_SPEC): Add definitions. - (CC1_SPEC): Map legacy -m[236] onto -mcpu=.. and -mapcs-{26,32} as - appropriate. Similarly for -mbe and -mle to -m{big,little}-endian. - (EXTRA_SPECS): Define. - (enum processor_type): New types for arm8 and strongarm. - (CONDITIONAL_REGISTER_USAGE): Handle flag_pic. - (LEGITIMIZE_ADDRESS): Likewise. - (ADJUST_COST): Define. - (PIC_OFFSET_TABLE_REGNUM): Define. - (FINALIZE_PIC): Define. - (LEGITIMATE_PIC_OPERAND_P): Define. - (OUTPUT_INT_ADDR_CONST): Define. - (ASM_OUTPUT_MI_THUNK): Delete calls to arm_increase_location. - (MASK_RETURN_ADDR): Use TARGET_APCS_32 not TARGET_6. - - * arm.md (attr cpu): Add new cpu types for arm8 and strongarm. - (attr ldsched): New attribute, set if processor has a load_delay slot. - (function_unit core): Rework to handle load delay slots. - (function_unit loader): New function unit. - (movsi): Handle pic. - (pic_load_addr): New expand. - (*pic_load_addr_based_insn, pic_add_dot_plus_eight): New patterns. - (peepholes to cause flow to return to a label after a function call): - Delete, these have been disabled for a while now. - - * arm/riscix.h (CPP_SPEC): Rewrite using new sub-components. - (SUBTARGET_CPU_DEFAULT): Set to TARGET_CPU_arm2. - * arm/riscix1-1.h (CPP_SPEC): Rewrite using new sub-components. - (SUBTARGET_CPU_DEFAULT): Set to TARGET_CPU_arm2. - * arm/semi.h: (CPP_SPEC): Delete. - (PROCESSOR_DEFAULT): Delete. - (CPP_APCS_PC_DEFAULT_SPEC): Define. - * arm/semiaof.h (CPP_SPEC): Delete. - (CPP_APCS_PC_DEFAULT_SPEC): Define. - * arm/t-semi (LIBGCC1_TEST): Don't build it. - (MULTILIB_{OPTIONS,DIRNAMES,EXCEPTIONS}): Build a suitable set of - cross libraries. - (LIBGCC): Set to stmp-multilib. - (INSTALL_LIBGCC): Set to install-multilib. - -Thu May 8 15:20:46 1997 Stan Cox - - * i386.c (output_float_compare): For pentiumpro use fcomip - followed by a float stack pop for "compare;pop;pop" cases. - -Thu May 8 13:20:20 1997 Chris Torek - - * fold-const.c (fold, truth_andor): Disable optimization for - side effects on RHS. - -Wed May 7 15:43:57 1997 Mike Stump - - * except.c (start_dynamic_handler): Fix so that we can use - __builtin_setjmp, and default to using __builtin_setjmp instead of - setjmp. - * expr.c (expand_builtin_setjmp): New routine, split out from - existing inline code from expand_builtin. - (expand_builtin): Split out code into expand_builtin_setjmp. - * expr.h (expand_builtin_setjmp): Add declaration. - * libgcc2.c (__sjthrow): Default to using __builtin_setjmp instead - of setjmp. - (__sjpopnthrow): Likewise. - * optabs.c (init_optabs): Likewise. - -Wed May 7 18:01:24 1997 Samuel Figueroa - - * rs6000.md (insv): Only combine insert with shift if - remaining source bits >= destination field size. - -Tue May 6 15:48:52 1997 Jason Merrill - - * dwarf2out.c (dwarf2out_begin_prologue): Increment - current_funcdef_number here. - (dwarf2out_end_epilogue): Not here. - -Mon May 5 18:52:32 1997 Jeffrey A Law (law@cygnus.com) - - * h8300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. - (shift_one, shift_two): Set CC_NO_CARRY as needed. Remove - references to CC_OVERFLOW_0. - (emit_a_shift): Similarly. - * h8300.h (CC_OVERFLOW_0): Remove. - * h8300.md: Use set_zn and set_znv for cc0 tracking. - (bCC): Restore the comparison is CC_OVERFLOW_UNUSABLE is set and - the comparison needs the overflow bits. - - * mn10300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. - * mn10300.h (CC_NO_CARRY): Define. - * mn10300.md: Use "set_zn" and "set_znv" to more accurately - describe cc0 status. - -Fri May 2 17:00:33 1997 Jason Merrill - - * dwarf2out.c: Reorganize, moving .debug_frame support to the top - of the file, and compile it if INCOMING_RETURN_ADDR_RTX is defined - even if DWARF2_DEBUGGING_INFO isn't. - (EH_FRAME_SECTION): New macro. - (output_call_frame_info): Handle .eh_frame variant. - (dwarf2out_def_cfa): Update cfa_*{reg,offset}. - (dwarf2out_frame_debug): Move cfa_*{reg,offset} to file scope. - (dwarf2out_end_epilogue): Increment current_funcdef_number here. - (dwarf2out_decl): Not here. - (dwarf2out_frame_init, dwarf2out_frame_finish): New fns. - (dwarf2out_init, dwarf2out_finish): Call them. - (output_die): Add missing 'case 8:' - (dwarf2out_decl): Revert other context_die = NULL change. - (add_bound_info): Restore default case. - -Fri May 2 15:30:16 1997 Doug Evans - - * m32r/m32r.h (LIT_NAME_P): New macro. - (SMALL_NAME_P): Use it. - (ASM_OUTPUT_ALIGNED_COMMON): Don't output to scommon if -msdata=none. - * m32r/m32r.c (addr24_operand): Handle literals. - (m32r_output_function_prologue): Use IMMEDIATE_PREFIX. - (m32r_output_function_epilogue): Likewise. Use shorter add insn if - able. - -Fri May 2 14:40:44 1997 David Edelsohn - - * rs6000.h (RS6000_ALIGN): Macro renamed from ALIGN. - * rs6000.c (rs6000_stack_info): Use it. - -Fri May 2 14:15:54 1997 Ian Lance Taylor - - * reload1.c (reload_cse_noop_set_p): When checking the values - equivalent to sreg, make sure the mode is right. - -Fri May 2 12:53:03 1997 Jeffrey A Law (law@cygnus.com) - - * reload1.c (reload_cse_invalidate_regno): Properly set - the mode for invalidate_regno_rtx. - -Thu May 1 14:57:35 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (call_internal_symref): Fix typo. - -Thu May 1 14:44:17 1997 Jim Wilson - - * mips.c (mips_asm_file_start): Use new macro TARGET_FILE_SWITCHING. - (mips_asm_file_end): Likewise. - * mips.h (TARGET_FILE_SWITCHING): Define. - (NO_DBX_FUNCTION_END): Define. - -Thu May 1 09:08:40 1997 Andreas Schwab - - * m68k.c (output_addsi3): Replace "\\;" by "\n\t" in - assembler templates. - -Thu May 1 09:00:42 1997 Richard Kenner - - * integrate.c (subst_constants, case SUBREG): Cancel changes once - done with result. - -Wed Apr 30 19:45:56 1997 Jim Wilson - - * mips.c (override_options): Set mips_split_addresses only if - TARGET_SPLIT_ADDRESSES is set. - * mips.h (MASK_SPLIT_ADDR, TARGET_SPLIT_ADDRESSES): New macros. - (TARGET_SWITCHES): Add -msplit-addresses, -mno-split-addresses. - * configure (mips*-*-ecoff*, mips*-*-elf*): Set MASK_SPLIT_ADDR - bit in target_cpu_default2. - - * flags.h (current_function_is_thunk): Add extern to declaration. - - * dbxout.c (dbxout_function): Test NO_DBX_FUNCTION_END at run time - instead of compile time. - - * unroll.c (set_dominates_use): In second loop, add check for copy_end. - - * mips.md (paradoxical_extendhidi2, paradoxical_extendqidi2): New - patterns. - -Wed Apr 30 02:23:24 1997 Jason Merrill - - * output.h (named_section): Add reloc argument. - (DECL_READONLY_SECTION): New macro. - * varasm.c (named_section): Add reloc argument, pass it to - ASM_OUTPUT_SECTION_NAME. - (UNIQUE_SECTION, UNIQUE_SECTION_P): Provide defaults. - (function_section): Pass reloc argument to named_section. - (variable_section, exception_section): Likewise. - (output_constant_def_contents): Likewise. - (assemble_start_function): Use UNIQUE_SECTION_P. UNIQUE_SECTION is - now a statement. - (assemble_variable): Likewise. - * mips/iris6.h (ASM_OUTPUT_SECTION_NAME): Add reloc arg, - use DECL_READONLY_SECTION. - * psos.h, ptx4.h, a29k.h, alpha/elf.h, arm/coff.h, h8300.h: Likewise. - * i386/go32.h, i386/sco5.h, m68k/coff.h, mips/elf64.h: Likewise. - * mips/netbsd.h, pa.h, rs6000/sysv4.h, sh.h, sparc/sysv4.h: Likewise. - * config/svr4.h (SELECT_SECTION): Use DECL_READONLY_SECTION. - (ASM_OUTPUT_SECTION_NAME): Likewise, add reloc argument. - (MAKE_DECL_ONE_ONLY): Just set DECL_WEAK. - (UNIQUE_SECTION, UNIQUE_SECTION_P): Define. - * i386/cygwin32.h (UNIQUE_SECTION_P): Define. - (SUPPORTS_ONE_ONLY): Define. - (MAKE_DECL_ONE_ONLY): Lose. - (ASM_OUTPUT_SECTION_NAME): Add reloc arg, use DECL_READONLY_SECTION. - * i386/winnt.c (i386_pe_unique_section): Add reloc arg, - use DECL_READONLY_SECTION. - - * mips/iris6.h (CTORS_SECTION_ASM_OP): Change aligment based on ABI. - (DTORS_SECTION_ASM_OP): Likewise. - -Tue Apr 29 16:08:07 1997 Jeffrey A Law (law@cygnus.com) - - * pa/lib1funcs.asm (divnorm, modnorm, exitdiv): Fix code to - negate SImode values. - -Tue Apr 29 12:54:14 1997 Mike Stump - - * except.c (expand_eh_region_start_tree): Add DECL argument so we - can better track why the region was made for error reporting. - * except.h (expand_eh_region_start_tree): Likewise. - * tree.h (expand_dhc_cleanup): Likewise. - (expand_dcc_cleanup): Likewise. - * except.c (expand_eh_region_start_for_decl): New routine. - * except.h (expand_eh_region_start_for_decl): Likewise. - * stmt.c (expand_decl_cleanup): Add DECL to call of - expand_eh_region_start_tree. - (expand_dcc_cleanup): Likewise. - (expand_dhc_cleanup): Likewise. - - (expand_start_case): Switches introduce conditional contexts. - (expand_start_case_dummy): Likewise. - (expand_start_case_dummy): Likewise. - (expand_end_case): Likewise. - -Tue Apr 29 11:45:09 1997 Jason Merrill - - * dwarf2out.c (dwarf2out_decl): Undo earlier change. - (constant_size): Likewise. - (gen_subprogram_die): Handle NULL context_die. - - * mips/iris6.h (ASM_OUTPUT_CONSTRUCTOR): Fix for -mabi=64. - (ASM_OUTPUT_DESTRUCTOR): Likewise. - -Mon Apr 28 09:10:19 1997 Jeffrey A Law (law@cygnus.com) - - * h8300.c (push_order, pop_order): Add missing initializer - entries. - -Fri Apr 25 19:39:43 1997 J"orn Rennecke - - * h8300.c (output_adds_subs): check for adding 0. - -Fri Apr 25 14:52:31 1997 Jim Wilson - - * configure (i[3456]86-*-freebsdelf*, i[3456]86-*-freebsd*): Use - t-freebsd instead of x-freebsd. - * i386/t-freebsd: Renamed from x-freebsd. - -Fri Apr 25 12:16:20 1997 Stan Cox - - * go32.h (DBX_*): Use definitions from config/dbxcoff.h instead. - -Fri Apr 25 11:55:54 1997 Jason Merrill - - * i386/cygwin32.h (MULTIPLE_SYMBOL_SPACES): Define. - -Thu Apr 24 18:32:56 1997 Jason Merrill - - * i386/winnt.c (i386_pe_unique_section): New fn. - * i386/cygwin32.h (UNIQUE_SECTION): Define. - (MAKE_DECL_ONE_ONLY): Define. - (ASM_OUTPUT_SECTION_NAME): Support DECL_ONE_ONLY. - - * c-decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL. - -Thu Apr 24 17:11:23 1997 Jim Wilson - - * m68k.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Add - TARGET_5200 support. - -Thu Apr 24 16:39:25 1997 Richard Kenner - - * stmt.c (pushcase_range): Check for null range first. - -Wed Apr 23 23:06:28 1997 Ian Lance Taylor - - * reload1.c (reload_cse_record_set): Use push_operand to check for - changes to the stack pointer. - -Wed Apr 23 19:56:01 1997 Jason Merrill - - * calls.c (expand_call): If we're in a thunk, pass through invisible - references instead of making a copy. - * flags.h: Add current_function_is_thunk. - * function.c: Likewise. - (init_function_start): Initialize it. - (push_function_context_to): Save it. - (pop_function_context_from): Restore it. - * function.h (struct function): Add is_thunk. - -Wed Apr 23 17:47:25 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (secondary_reload_class): Handle more cases where we - need secondary reloads. - (impossible_plus_operand): Accept anything that involves addition - of the stack pointer. - * mn10300.md (reload_insi): Always load the stack pointer into - the destination (which is always an address register). - * mn10300.h (STORE_FLAG_VALUE): Remove definition. - * xm-mn10300.h: Declare malloc, realloc, calloc and free. - -Wed Apr 23 14:28:30 1997 Mike Stump - - * expr.h (sjthrow_libfunc): Add support for setjmp/longjmp based - exception handling. - (sjpopnthrow_libfunc): Likewise. - (terminate_libfunc): Likewise. - (setjmp_libfunc): Likewise. - (longjmp_libfunc): Likewise. - (get_dynamic_handler_chain_libfunc): Likewise. - * expr.c (expand_expr, case TRY_CATCH_EXPR): Likewise. - (expand_expr, case POPDCC_EXPR): Likewise. - (expand_expr, case POPDHC_EXPR): Likewise. - * stmt.c (mark_block_as_eh_region): Likewise. - (mark_block_as_not_eh_region): Likewise. - (is_eh_region): Likewise. - (conditional_context): Likewise. - (expand_start_bindings): Likewise. - (expand_end_bindings): Likewise. - (expand_decl_cleanup): Likewise. - (expand_dcc_cleanup): Likewise. - (expand_dhc_cleanup): Likewise. - (expand_cleanups): Likewise. - * tree.h (mark_block_as_eh_region): Likewise. - (mark_block_as_not_eh_region): Likewise. - (is_eh_region): Likewise. - (conditional_context): Likewise. - (expand_dhc_cleanup): Likewise. - * except.c (exception_via_longjmp): Likewise. - (protect_cleanup_actions_with_terminate): Likewise. - (current_function_dhc): Likewise. - (current_function_dcc): Likewise. - (add_partial_entry): Likewise. - (get_dynamic_handler_chain): Likewise. - (get_dynamic_cleanup_chain): Likewise. - (start_dynamic_cleanup): Likewise. - (start_dynamic_handler): Likewise. - (expand_eh_region_start_tree): Likewise. - (expand_eh_region_start): Likewise. - (expand_eh_region_end): Likewise. - (emit_throw): Likewise. - (expand_leftover_cleanups): Likewise. - (expand_start_all_catch): Likewise. - (expand_end_all_catch): Likewise. - (protect_with_terminate): Likewise. - (start_eh_unwinder): Likewise. - (end_eh_unwinder): Likewise. - (init_eh_for_function): Likewise. - (save_eh_status): Likewise. - (restore_eh_status): Likewise. - (exception_optimize): Likewise. - * optabs.c (sjthrow_libfunc): Likewise. - (sjpopnthrow_libfunc): Likewise. - (terminate_libfunc): Likewise. - (setjmp_libfunc): Likewise. - (longjmp_libfunc): Likewise. - (get_dynamic_handler_chain_libfunc): Likewise. - (init_optabs): Likewise. - * except.h: Likewise. - * libgcc2.c (__default_terminate): Likewise. - (__terminate): Likewise. - (__get_dynamic_handler_chain): Likewise. - (__sjthrow): Likewise. - (__sjpopnthrow): Likewise. - * toplev.c (f_options): Likewise. - * tree.def (TRY_CATCH_EXPR): Likewise. - (POPDHC_EXPR): Likewise. - (POPDCC_EXPR): Likewise. - * config/pa/pa.h: JMP_BUF_SIZE define. - * config/sparc/sparc.h: JMP_BUF_SIZE define. - - * expr.h (cleanups_this_call): Transform uses of cleanups_this_call - into uses of the cleanups managed by the block code - (expand_start_bindings and friends). Remove defer_cleanups_to and - expand_cleanups_to, and use start_cleanup_deferal and - end_cleanup_deferal instead. Add exception_region, - target_temp_slot_level, conditional_code, - last_unconditional_cleanup and cleanup_ptr to struct nesting to - facilitate conditional cleanups. - * expr.c (cleanups_this_call): Likewise. - (init_expr): Likewise. - (save_expr_status): Likewise. - (restore_expr_status): Likewise. - (store_expr): Likewise. - (expand_expr): Likewise. - (defer_cleanups_to): Likewise. - (expand_cleanups_to): Likewise. - (do_jump, case TRUTH_ANDIF_EXPR): Likewise. - (do_jump, case TRUTH_ORIF_EXPR): Likewise. - (do_jump, case COND_EXPR): Likewise. - * stmt.c (struct nesting): Likewise. - (expand_return): Likewise. - (expand_start_bindings): Likewise. - (expand_end_bindings): Likewise. - (expand_cleanups): Likewise. - (start_cleanup_deferal): Likewise. - (end_cleanup_deferal): Likewise. - * tree.h (start_cleanup_deferal): Likewise. - (end_cleanup_deferal): Likewise. - * calls.c (expand_call): Likewise. - * function.h (struct function): Likewise. - - * except.c (asynchronous_exceptions): Support - -fasynchronous_exceptions. - (can_throw): Likewise. - * toplev.c (f_options): Likewise. - - * flags.h (flag_short_temps): Remove support for short temps. - * calls.c (expand_call): Likewise. - * toplev.c (flag_short_temps): Likewise. - - * stmt.c (expand_start_target_temps): Add for convenience. - (expand_end_target_temps): Likewise. - * except.c (jumpif_rtx): Likewise. - * except.c (jumpifnot_rtx): Likewise. - - * stmt.c: Remove all traces of empty_cleanup_list. - -Wed Apr 23 17:26:40 1997 Ian Lance Taylor - - * reload1.c (reload_cse_mem_conflict_p): Don't assume that a - SUBREG can not conflict with a MEM. - -Wed Apr 23 09:48:58 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.md (cmphi): Fixed when next CC user is unsigned. - (mov[hq]i-[23]): New patterns for mem-indirect moves. - (movhf,movtqf): Corrected. - * 1750a.c (memop_valid): Memory indirection now valid. - (nonindirect_operand): Remove. - (print_operand): Fix the 'J' output modifier. - * 1750a.h (FRAME_POINTER_REQUIRED): Not required. - (INITIAL_FRAME_POINTER_OFFSET,FIX_FRAME_POINTER_ADDRESS): Undefine. - (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Honor -fomit-frame-pointer. - (ELIMINABLE_REGS,CAN_ELIMINATE,INITIAL_ELIMINATION_OFFSET): Defined. - (PREFERRED_RELOAD_CLASS): Corrected. - (CONST_COSTS,ADDRESS_COST,REGISTER_MOVE_COST,MEMORY_MOVE_COST): - Slight adjustments. - (ASM_APP_ON,ASM_APP_OFF): Corrected. - * ms1750.inc (DUCR.M,DUC.M): Defined. - -Wed Apr 23 09:41:35 1997 Andreas Schwab - - * reload.c (push_reload): Fix last argument of the call to - find_dummy_reload. - -Wed Apr 23 09:29:14 1997 Richard Kenner - - * configure (i[3456]86-next-*, m68k-next-nextstep{2,3}*): - Remove out_file and add extra_objs. - * config/nextstep.c: Add includes for config.h, stdio.h, and flags.h. - * {i386,m68k}/t-next (nextstep.o): New rule. - * m68k/next.h: Remove include of machmode.h. - * {i386,m68k}/next.c: Files deleted. - -Tue Apr 22 20:45:29 1997 Jason Merrill - - * sparc.h (DBX_CONTIN_LENGTH): Shrink to 1000. - -Tue Apr 22 18:21:20 1997 Jim Wilson - - * dwarf2out.c (gen_variable_dir): Add test for DW_AT_declaration to - the old_die if statement, and delete assertion for it. - (decl_ultimate_origin): Remove last change. - -Tue Apr 22 10:22:27 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (expand_prologue): End the current sequence before - counting the tst insns in the current function. Start a new - one before emitting any prologue instructions. - - * mn10300.h (REGISTER_MOVE_COST): Bump up cost of moves in the - same class. - - * mn10300.md (untyped_call): New expander. - -Mon Apr 21 16:30:21 1997 Richard Kenner - - * cse.c (fold_rtx, case PLUS): When seeing if negative of constant - is around, make sure not dealing with largest negative. - -Mon Apr 21 13:57:53 1997 Jim Wilson - - * mips/t-ecoff: Set TARGET_LIBGCC2_CFLAGS instead of LIBGCC2_CFLAGS. - - * m68k.c (output_addsi3): New function. From addsi3 pattern. - * m68k.h (output_addsi3): Add declaration. - * m68k.md (movqi+2): Add address registers. - (movxf+1): Disable for TARGET_5200. - (movxf+2): New pattern for TARGET_5200. - (addsi3): Add define_expand. Move code to output_addsi3. - (addsi3_internal): Renamed from addsi3. Disable for TARGET_5200. - (addsi3_5200): New pattern for TARGET_5200. - -Sun Apr 20 10:45:35 1997 Richard Kenner - - * fold-const.c (operand_equal_p): Constants are not equal if there - has been an overflow. - - * toplev.c (compile_file): Shorten "branch-probabilities" in - output of times. - - * alpha/vms.h (MOD[SD]I3_LIBCALL): Call ots$rem, not ots$mod. - (DWARF2_DEBUGGING_INFO): Define. - - * alpha.c (alpha_need_linkage): Call get_identifier. - - * rs6000.c (rs6000_output_load_toc_table): New function. - (output_prolog): Call it instead of doing it directly. - * rs6000.md (nonlocal_goto_receiver): New pattern. - - * dwarf2out.c: Major cleanup; mostly reformatting. - Include expr.h. - Undefine inline ifndef __GNUC__; never define to include static. - Add "static" to header of all inlined functions. - Add declarations for all static functions, with prototypes. - (addr_const_to_string): Use HOST_WIDE_INT_PRINT_* macros. - (add_AT_*, new_{die,loc_descr,cfi): Don't check for xmalloc - returning zero. - (modified_type_die): Add missing parm on recursive call. - ({reg,based}_loc_descriptor): Add missing arg to call to new_loc_descr. - (add_const_value_attribute): Use REAL_VALUE_TYPE for fp calculations. - (output_call_frame_info): Add missing arg to output_cfi call. - (dwarf2out_def_cfa): Local variable OLD_REG must be unsigned long. - * Makefile.in (dwarf2out.o): Includes expr.h. - - * dwarf2out.c: Cast first arg in all calls to bzero to char *. - (decl_ultimate_origin): Return NULL if equal to decl. - (constant_size): Never return more than 4. - (value_format, case 8): New case. - (dwarf2out_frame_debug): Use HARD_FRAME_POINTER_REGNUM. - (based_loc_descr): Likewise. - (add_bound_info): Delete default case. - Add cases for CONVERT_EXPR and NON_LVALUE_EXPR; treat like NOP_EXPR. - Change NOP_EXPR to to recursive call. - (add_type_attribute): Ignore unnamed subtype of integral or FP. - (gen_subprogram_die): Use reg_loc_descriptor. - (dwarf2out_decl): Ignore nested functions. - - * fix-header.c, protoize.c, gcov.c: Use symbolic codes for exit. - - * final.c (profile_function): Only call ASM_OUTPUT_REG_{PUSH,POP} - if defined. - - * expr.c ({move,clear}_by_pieces_1, expand_assignment): Ensure - we have unshared rtx before changing flags. - (store_{constructor,field}): Likewise. - (expand_expr, case COMPONENT_REF): Likewise. - (store_expr): Check if TEMP and TARGET are same with rtx_equal_p. - - * emit-rtl.c (change_address, init_emit): Delete forward references. - (rtl_obstack, stack_depth, max_stack_depth): Delete extern decls. - -Fri Apr 18 18:25:52 1997 Jim Wilson - - * function.c (instantiate_decls): For DECL_INCOMING_RTL, use max - of type size and mode size in instantiate_decl call. - - * fixincludes (sys/lc_core.h): Fix OSF1/4.x namespace pollution. - -Wed Apr 16 19:36:53 1997 Jason Merrill - - * dwarf2out.c (add_bound_info): Use a DIE instead of a location - expression for variable bounds. Trust a MEM rtx even when - optimizing. - (DWARF_FRAME_RETURN_COLUMN): Default to FIRST_PSEUDO_REGISTER. - - * expr.c (expand_expr, case RTL_EXPR): If there is no sequence, - don't set it to const0_rtx. - * tree.c (array_type_nelts): Don't return any SAVE_EXPRs. - -Mon Apr 14 18:12:57 1997 David Edelsohn - - * rs6000.h (RS6000_ITRUNC, RS6000_UITRUNC): Prepend underscores. - (RS6000_MCOUNT): New macro. - (ASM_FILE_START): Use RS6000_MCOUNT. - * rs6000.c (output_function_profiler): Use RS6000_MCOUNT. - * rs6000/aix31.h (RS6000_{ITRUNC,UITRUNC,MCOUNT}): New macros. - -Mon Apr 14 14:37:27 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (can_use_return_insn): Include outgoing argument - area in size computation. - (expand_prologue): Likewise. No longer diddle with sequences. - Put register saves just before outgoing argument area. - (expand_epilogue): Similarly. - (impossible_plus_operand): New function. - * mn10300.h (FRAME_POINTER_REQUIRED): Never require a frame pointer. - (ACCUMULATE_OUTGOING_ARGS, OUTGOING_REG_PARM_STACK_SPACE): Define. - (impossible_plus_operand): Declare. - * mn10300.md (reload_insi): New expander to handle pathological - reload cases. - (addsi3): Fix CC status. - - * mn10300.h (FUNCTION_VALUE): Return addresses in $a0. - (FUNCTION_VALUE_REGNO_P): Corresponding changes. - * mn10300.md (call_value_internal): Allow output to be in an - address register. - - * calls.c (emit_library_call): Handle saving of stack slots when - ACCUMULATE_OUTGOING_ARGS is defined. - (emit_library_call_value): Likewise. - -Mon Apr 14 14:48:15 1997 Jim Wilson - - * sh.md (xtrct_left, xtrct_right): New patterns. - - * combine.c (get_last_value_validate): New argument insn. - Add check for memory reference clobbered by later store. - (record_value_for_reg, get_last_values): Pass in new argument. - -Mon Apr 14 14:03:18 1997 Mike Meissner - - * configure (powerpc --with-cpu=x): Add embedded powerpcs and 604e. - - * rs6000.c (rs6000_override_options): Recognize -mcpu=801, -mcpu=823, - and -mcpu=604e. - -Sun Apr 13 18:43:16 1997 Ian Lance Taylor - - * reload1.c (invalidate_regno_rtx): New static variable. - (reload_cse_invalidate_regno): Check whether any earlier registers - have a multi-register value which includes the register we are - invalidating. - (reload_cse_regs): Initialize invalidate_regno_rtx. - - * reload1.c (reload_cse_record_set): When setting reg_values for a - copy from one register to another, use gen_lowpart_common to - adjust the value correctly if the mode changes. - -Sun Apr 13 17:24:48 1997 Doug Evans - - * expr.c (move_block_from_reg): Try using an integral mov operation - first. - - * calls.c (expand_call): When copying unaligned values into a register, - zero out the register first rather than emitting a clobber. - - * integrate.c (copy_rtx_and_substitute): If FRAME_GROWS_DOWNWARD - and regno == VIRTUAL_STACK_VARS_REGNUM, round size of stack slot up - before calling assign_stack_temp. - -Sun Apr 13 15:29:38 1997 Ulrich Drepper - - * enquire.c (fake_f_rep): Add missing element name in cast. - -Sun Apr 13 15:20:05 1997 J"orn Rennecke - - * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): - Fix sign bug in last change. - -Sun Apr 13 15:03:38 1997 J.T. Conklin - - * m68k.md (movstricthi): Remove extraneous comparisons. - - * configure (*-*-netbsd): tmake_file now t-netbsd; delete xmake_file. - * config/t-netbsd: New file. - * config/x-netbsd: Removed. - -Sun Apr 13 14:51:25 1997 Richard Earnshaw (rearnsha@armltd.co.uk) - - * cse.c (canon_reg, cse_insn): Don't examine insn_n_dups if - recog_memoized fails to find a match. - -Sun Apr 13 14:17:26 1997 Ian Lance Taylor - - * reload1.c (reload_cse_noop_set_p): Add insn parameter. Change - all callers. If deleting the instruction, remove any earlier - REG_DEAD note for DREG. - (reload_cse_simplify_set): If simplifying, remove any earlier - REG_DEAD note for the new source register. - -Sun Apr 13 14:12:08 1997 Pat Rankin - - * libgcc2 (L_bb, L_exit): Use 0 rather than NULL for null pointers. - -Sun Apr 13 12:53:03 1997 Andreas Schwab - - * m68k/linux.h (ASM_SPEC): Define. - (STRUCT_VALUE_REGNUM, STATIC_CHAIN_REGNUM, INITIALIZE_TRAMPOLINE): - Remove definitions, undoing the change of Mar 20 1996. - - * m68k.c (output_move_qimode): Optimize pushing one byte if source - operand does not use stack pointer. - - * m68k.md (rotl[shq]i3, rotl[hq]i3+1): Don't directly modify operand. - - * m68k.md (tstdi): Add missing parallel around the pattern. - -Sun Apr 13 12:51:00 1997 Paul Eggert - - * cccp.c, cpplib.c (do_include): Diagnose #import and - #include_next if pedantic and if not in a system header. - (do_warning): #warning now causes an error if -pedantic-errors - is given; this is needed since #warning isn't ANSI. - - * toplev.c (lang_options): Add -Wundef, -Wno-undef. - * c-decl.c (c_decode_option): Ignore -Wundef, -Wno-undef. - - * cccp.c, cexp.y (warn_undef): New variable. - * cpplib.h (struct cpp_options): New member warn_undef. - (CPP_WARN_UNDEF): New macro. - - * cccp.c (main), cpplib.c (cpp_handle_options): Set warn_undef - from -Wundef and -Wno-undef. - - * cppexp.c (cpp_lex) New arg skip_evaluation. - (cpp_parse_expr): Pass skip_evaluation to cpp_lex. - Abort if cpp_lex returns NAME. - - * cexp.y (exp), cppexp.c (cpp_lex): Optionally warn about undefined - identifiers that evaluate to 0. - -Sun Apr 13 11:43:16 1997 Joel Sherrill - - * configure (hppa1.1-*-rtems*): New target. - * mips/rtems.h: New file. - -Sun Apr 13 09:48:26 1997 Richard Kenner - - * gcov.c (print_usage, open_files): Use FATAL_EXIT_CODE. - * collect2.c (fatal_perror, fatal, collect_wait): Likewise. - - * sparc.c (eligible_for_delay_slot): Clean up and make to agree - precisely with patterns in MD file. - * sparc.md (*return_addsi): Change condition to exclude both ints. - (*return_adddi): Likewise. - (*return_subsi): New pattern. - - * recog.c (validate_replace_rtx_1, case MINUS): New case. - -Sun Apr 13 08:20:24 1997 Thomas Bushnell - - * i386/gnu.h (TARGET_VERSION): Redefine. - -Sun Apr 13 08:15:31 1997 Bernd Schmidt - - * c-typeck.c (lookup_field): Don't recurse unless FIELD is - a RECORD_TYPE or UNION_TYPE. - - * final.c (profile_function): Save the static chain register - around the call to the profiler function. - - * loop.c (invariant_p, case REG): Pointers into frame are not - invariants if function has nonlocal gotos. - * reload1.c (reload): If function has nonlocal label, mark all - caller-saved regs as used. - -Fri Apr 11 16:49:06 1997 Doug Evans - - * m32r.h (REG_ALLOC_ORDER): Restore to original setting. - - * m32r.h (UPPER16_P): Fix calculation. - * m32r.c (two_insn_const_operand): New function. - (m32r_print_operand): Handle 'X'. - * m32r.md (movsi): Tweak. - (*movsi_insn): Output hex value of constants too. - (movsi define_split): Add. - (andsi3,orsi3,xorsi3): Output hex value of constants too. - -Thu Apr 10 18:39:33 1997 Jim Wilson - - * sh.md (sne): Modified to use negc instead of xor. - (sne+1): New define_split for new sne pattern. - * sh.c (output_stack_adjust): Reorganize code for readability. - If size is negative, negate and subtract it instead of adding it. - -Wed Apr 9 13:51:07 1997 J"orn Rennecke - - * sh.c (output_stack_adjust): When splitting an adjustment into two - parts, make sure the stack is aligned at all times. - -Tue Apr 8 12:34:38 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.h (RETURN_ADDR_RTX): Define. - -Mon Apr 7 19:19:57 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (count_tst_insns): New function. - (expand_prologue): Load zero into data and/or address registers - if any are free and the function has optimizable tst insns. - (output_tst): If a suitable register is known to have the - value zero, use it instead of searching for a suitable register. - * mn10300.h (zero_dreg, zero_areg): Declare. - (FRAME_POINTER_NEEDED): Frame pointers are not needed if the - outgoing argument size is zero. - * mn10300.md (movXX): Optimize loading zero into an address - register if possible. Optimize loading a DF/DI mode value - into an address register from a constant memory address. - (addsi3): Provide alternative which doesn't require a matching - inout operand. - (return): Optimize consecutive return instructions. - -Mon Apr 7 17:30:35 1997 J"orn Rennecke - - * mips/iris5.h (SUBTARGET_CC1_SPEC): Define. - (LINK_SPEC, STARTFILE_SPEC): Support -static. - * mips/iris6.h (SUBTARGET_CC1_SPEC): Define. - (STARTFILE_SPEC, LINK_SPEC): Support -static. - * mips.h: (SUBTARGET_CC1_SPEC): Define. - (CC1_SPEC): Add subtarget_cc1_spec. - (EXTRA_SPECS): Add subtarget_cc1_spec. - -Sun Apr 6 12:24:53 1997 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.md (incscc): Use a match_operand with cc_register to match - the condition code register. - (decscc, *condbranch, *condbranch_reversed, *mov_scc): Likewise. - (*mov_negscc, *mov_notscc, *cond_return): Likewise. - (*cond_return_inverted, *ior_scc, *cond_move): Likewise. - (insv): New expand. - (andsi_notsi_si): Renamed from *andsi_notsi_si. - (andsi_not_shiftsi_si): New insn. - (*minmax_arithsi): Don't match this insn if operand1 is an - eliminable register. - ({sin,cos}*): Delete, since the ARM always emulates these its - faster to call a library function. - (movsicc, *movsicc_insn): Make operand0 an s_register_operand, - and operand3 an arm_not_operand. Use cc_register to match the - condition code register. - (mov[sd]fcc*): Make operand[0,2] s_register_operands, and operand3 - the nonmemory_operand. Use cc_register to match the condition - code register. - (*ifcompare_plus_move): Move before *ifcompare_arith_move. Just do - a split for the output. - (*ifcompare_move_plus): Similarly, but relative - to *ifcompare_move_arith. - (*if_plus_move, *if_move_plus): New patterns. - (*ifcompare_arith_arith): Simplify the alternatives down to just one, - and split the insn before output. - (*if_arith_arith, *if_arith_move, *if_move_arith): New patterns. - (*ifcompare_move_not, *ifcompare_not_move): Simplify and split the - insn before output. - (*if_move_not, *if_not_move): New patterns. - (*ifcompare_shift_move, *ifcompare_move_shift): Simplify and split the - insn before output. - (*if_shift_move, *if_move_shift): New patterns. - (*ifcompare_shift_shift): Simplify and split the insn before output. - (*if_shift_shift): New pattern. - (*ifcompare_not_arith, *ifcompare_arith_not): Simplify and split the - insn before output. - (*if_not_arith, *if_arith_not): New patterns. - (*ifcompare_neg_move, *ifcompare_move_neg): Simplify and split the - insn before output. - (*if_neg_move, *if_move_neg): New patterns. - -Sat Apr 5 20:17:43 1997 Michael Meissner - - * rs6000/sol-ci.asm (_environ): Don't make _envrion a common - variable, the lastest assembler doesn't let common variables also - be a weak symbol. - -Fri Apr 4 18:30:12 1997 Jim Wilson - - * rs6000/rs6000.md (adddi3): Use non_short_cint_operand instead of - non_add_cint_operand. - -Thu Apr 3 15:08:39 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (can_use_return_insn): Add size of fixed stack space - for function calls into the size of the frame. */ - (expand_prologue, expand_epilogue): Likewise. - (initial_offset): Corresponding changes.. - * mn10300.h (OUTGOING_REG_PARM_STACK_SPACE): No longer define. - (STACK_POINTER_OFFSET): Define. - * mn10300.md (call, call_value expanders): Don't adjust the stack - pointer here anymore. - - * mn10300.md (ashlsi3): Remove some alternatives which are no longer - needed or desired. - -Thu Apr 3 15:06:53 1997 Jim Wilson - - * local-alloc.c (no_conflict_p): Reject sequences with foreign insns. - - * combine.c (move_deaths): Handle partial REG_DEAD note for - multi-reg hard register. - - * function.c (expand_function_start): Emit queue after expanding - each dynamic parameter type. - - * mips.c (mips_move_2words): Add SIGN_EXTEND support for SYMBOL_REF, - LABEL_REF, and CONST operands. - - * dwarf2out.c: Delete comment referring to README.DWARF. - -Wed Apr 2 17:21:23 1997 Jim Wilson - - * rs6000.md (ashrdi3_power): Mark alternative 0 as early_clobber - output. - - * rs6000.md (abssi3_nopower define_split): Switch operands of MINUS. - (nabssi3_nopower define_split): Likewise. - -Tue Apr 1 19:30:01 1997 Mike Stump - - * libgcc2.c (find_exception_table): Fix to logic to deal with - functions that are in their own section, such as template - instantiations, that cause overlapping EH tables. - -Tue Apr 1 17:16:22 1997 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (USER_H): Add va-mn10300.h - - * ginclude/stdarg.h: Include va-mn10300.h. - * ginclude/varargs.h: Likewise. - * ginclude/va-mn10300.h: New file. - * mn10300.c (expand_prologue): If current_function_varargs is nonzero, - flush d0/d1 back into stack. - (mn10300_builtin_saveregs): New function. - (function_arg, function_arg_partial_nregs): New functions. - (initial_offset): Tweak now that the RP save area is allocated - and deallocated around each call again. - * mn10300.h (FIRST_PARM_OFFSET): Now 4. - (FRAME_POINTER_REQUIRED): Require frame pointer for all non-leaf fcns. - (REG_PARM_STACK_SPACE): Now 8 bytes. - (FUNCTION_ARG_REGNO_P): Update for new parameter passing conventions. - (CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Likewise. - (FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise. - (FUNCTION_ARG_PARTIAL_NREGS): Likewise. - (TRAMPOLINE_TEMPLATE): Don't clobber d0 anymore. - (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes. - (EXPAND_BUILTIN_SAVEREGS): Define. - * mn10300.md (call, call_value patterns): Allocate and deallocate - stack slot for return pointer around each call. - - * mn10300.h (RTX_COSTS): Refine. - (CASE_VALUES_THRESHHOLD, NO_FUNCTION_CSE): Likewise. - * mn10300.c (output_tst): New function. - * mn10300.md (movdi, movdf): Improve code to load constants into regs. - (tst insns): Use output_tst to optimize some cases. Add versions to - encourage more zero extensions instead of sign extensions of HImode - and QImode values. - (divsi3, udivsi3): Remove patterns. Replaced by... - (divmodsi4, udivmodsi4): New expanders/patterns. - (andsi3): Optimize "and" operations with certain constants. - -Tue Apr 1 09:14:29 1997 J"orn Rennecke - - * sh.h: (ADJUST_COSTS): Define. - -Fri Mar 28 17:46:13 1997 Jim Wilson - - * Makefile.in (LANGUAGES): Add gcov. - (OBJS): Add profile.o. - (STAGESTUFF): Add gcov. - (profile.o, gcov.o, gcov): Add rules to build them. - (cpp.info, gcc.info, gcc.dvi): Add gcov.texi. - (install-common): Install gcov. - * combine.c (distribute_notes): Handle REG_BR_PROB and REG_EXEC_COUNT - REG_NOTES. - * sparc.h (OVERRIDE_OPTIONS): Check profile_arc_flag. - * final.c (LONG_TYPE_SIZE): Define. - (count_instrumented_arcs): New variable. - (end_final, profile_after_prologue, leaf_function_p): Add support - for profile_arc_flag. - (add_bb): Only call CC_STATUS_INIT if HAVE_cc0. - * flags.h (profile_arc_flag, flag_test_coverage, - flag_branch_probabilities): Declare. - * function.c (expand_function_end): Output NOTE_REPEATED_LINE_NUMBER - for last line of function. - * integrate.c (expand_inline_function): Output - NOTE_REPEATED_LINE_NUMBER after inlined call. - * jump.c (jump_optimize, follow_jumps, mark_jump_label): Disable some - optimizations when flag_test_coverage and there is a line number note - in the way. - (invert_jump): Add REG_BR_PROB when flag_branch_probabililties. - * libgcc2.c (__bb_exit_func): Support gcov style output. - * reorg.c (mostly_true_jump): Use REG_BR_PROB notes when - flag_branch_probabilities. - * rtl.c (note_insn_name): Add NOTE_REPEATED_LINE_NUMBER. - (reg_note_name): Add REG_BR_PROB and REG_EXEC_COUNT. - * rtl.h (enum reg_note): Add REG_BR_PROB and REG_EXEC_COUNT. - (REG_BR_PROB_BASE): Define. - (NOTE_REPEATED_LINE_NUMBER): Define. - * sched.c (update_flow_info): Handle REG_EXEC_COUNT and REG_BR_PROB - notes. - * toplev.c (branch_prob_dump, profile_arc_flag, flag_test_coverage, - flag_branch_probabilities, branch_prob_dump_file, branch_prob_time): - New variables. - (f_options): Add profile-arcs, test-coverage, and - branch-probabilities. - (compile_file): Set branch_prob_time. Pass flag_test_coverage to - init_emit_once. Handle branch_prob_dump. Call init_branch_prob. - Call end_branch_prob. Call output_func_start_profiler. - (rest_of_compilation): Handle branch_prob_dump. Call new - branch_prob pass. - (main): Set branch_prob_dump. - * gcov.c, profile.c, gcov-io.h, gcov.texi: New files. - -Thu Mar 27 16:52:52 1997 Stan Cox - - * i386.h (CPP_CPU_DEFAULT): Define if TARGET_CPU_DEFAULT is not set. - * i386.h (STACK_BOUNDARY): Define to always be 32. - - From J"orn Rennecke - * i386.md: (zero_extendhisi2+[12]): use true_regnum instead of REGNO for - operand 0. - (zero_extendqisi2+3: use reg_overlap_mentioned_p instead of REGNO - comparison; use true_regnum instead of REGNO for rtx generation. - -Wed Mar 26 12:34:21 1997 Ian Lance Taylor - - * reload1.c (reload): Call reload_cse_regs. - (reg_values): New static variable. - (reload_cse_invalidate_regno): New static function. - (reload_cse_mem_conflict_p): New static function. - (reload_cse_invalidate_mem): New static function. - (reload_cse_invalidate_rtx): New static function. - (reload_cse_regs): New static function. - (reload_cse_regno_equal_p): New static function. - (reload_cse_noop_set_p): New static function. - (reload_cse_simplify_set): New static function. - (reload_cse_check_clobbered): New static variable. - (reload_cse_check_src): New static variable. - (reload_cse_check_clobber): New static function. - (reload_cse_record_set): New static function. - -Wed Mar 26 07:34:06 1997 Ulrich Drepper - - * ginclude/stdarg.h (__va_copy): New definition. - -Tue Mar 25 13:43:36 1997 Michael Meissner - - * gcc.c (init_spec): If -v, print out that the default spec values - were being used. Fix prototype to reflect no arguments. - (set_spec): If specs has not been set, set it up with the default - specs. - (read_specs): Move to later in the file so that startfile_prefixes - has been declared. Process "%include " to include another - specs file, aborting if the file can't be found. Process - "%include_noerr : to include another specs file, giving no - error if the file can't be found. Process "%rename var1 var2" to - rename a specs variable. Take new argument that indicates whether - we are processing the main file. Only process % commands if this - is not the main specs file. Change callers. - (main): Do not call init_spec if a specs file was found. - (set_spec,read_specs,do_spec_1): If DEBUG_SPECS is defined, print - debug information. - -Tue Mar 25 14:43:58 1997 Doug Evans - - * expr.c (emit_push_insn): Delete emission of CLOBBER - when doing partial push, no longer necessary. - - * c-decl.c (grokdeclarator): Pedwarn qualified void function return - type. - -Tue Mar 25 14:28:15 1997 Richard Earnshaw (rearnsha@armltd.co.uk) - - * reload.c (find_dummy_reload): New parameter earlyclobber. If set - then don't use IN for the reload if it also appears elsewhere in - the insn. All callers changed. - -Tue Mar 25 13:20:18 1997 J.T. Conklin - - * m68k/lb1sf68.asm (udivsi3): Fix hunk from previous patch that - did not apply correctly. - - * m68k.md (tablejump): Use extl to explicitly sign extend - index registeron TARGET_5200. - * m68k/{apollo68.h,coff.h,linux.h,mot3300.h,pbb.h} - (ASM_RETURN_CASE_JUMP): Likewise. - - * m68k.md (mulsi3): Changed into define_expand. Split insn into - m68k and coldfire specific versions with appropriate constraints. - - * m68k.md (movqi): Disable use of address registers for - TARGET_5200. - - * m68k/lb1sf68.asm (__modsi3, __umodsi3): Use mulsl instruction - instead of __mulsi3 function call on the coldfire. - - * m68k.md (bne0_di): Fix typo in last change. - - * m68k.md (xorsi3_5200): Correct constraints. - - * m68k.c (output_move_{si,hi,qi}mode): New functions. - * m68k.h (output_move_{si,hi,qi}mode): Declare. - - * m68k.md (move{si,hi,qi,di}): Changed into define_expands. Split - insns into m68k and coldfire specific versions with appropriate - constraints. - -Tue Mar 25 12:18:41 1997 Richard Kenner - - * Makefile.in (GCC_PASSES): Revert previous change; use - cc1$(exeext). - -Mon Mar 24 16:12:20 1997 Doug Evans - - * m32r/*: New files. - * config.sub: Add m32r. - * configure: Add m32r. - * longlong.h: Add m32r support. - * ginclude/{stdarg.h,varargs.h}: Add m32r support. - * ginclude/va-m32r.h: New file. - -Mon Mar 24 15:53:15 1997 Joel Sherrill - - * rs6000/rtems.h: Change to a near clone of the powerpc-eabi target. - * configure (powerpc*-*-rtems): Move before Linux configuration. - -Mon Mar 24 14:26:37 1997 Gavin Koch - - * ginclude/va-mips.h: For little endian, eabi, objects - less than __va_reg_size are passed in registers. - -Fri Mar 21 00:48:02 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (print_operand): Handle 'N'. - - * mn10300.c (expand_epilogue): Correctly handle functions - with large frames, but no callee register saves. - - * mn1300.md (movdf, movdi): Handle overlapping moves. - - * pa.c (compute_movstrsi_length): Handle residuals correctly. - -Thu Mar 20 13:53:30 1997 Michael Meissner - - * rs6000.c (easy_fp_constant): If -mrelocatable, consider all fp - constants to be hard. - -Mon Mar 20 13:53:30 1997 Jim Wilson - - * rs6000.md (movdf/movsf define_splits): Add SUBREG support. - - * rs6000.c (fp_reg_or_mem_operand): Delete. - * rs6000.h (PREDICATE_CODES): Remove fp_reg_or_mem_operand. - (fp_reg_or_mem_operand): Delete declaration. - * rs6000.md (movsf_hardfloat): Use nonimmediate_operand instead - of fp_reg_or_mem_operand. - -Thu Mar 20 08:52:27 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (cmpsi): Handle comparing a register with - itself by adding zero to the reg. Z bit for such an insn is - inverted. - * mn10300.c (notice_update_cc): Handle CC_INVERT. - - * pa.c (emit_move_sequence): Don't lose for a secondary reload - to the SAR register if the input is a MEM with an offset that won't - fit in 14bits. - -Wed Mar 19 17:10:44 1997 Andreas Schwab - - * m68k/linux.h (ASM_OUTPUT_MI_THUNK): Define. - -Wed Mar 19 16:59:34 1997 Paul Eggert - - * cccp.c, cpplib.c (do_error, do_warning): Fix memory leak. - - * cccp.c (output_line_directive): Do not output negative line - numbers when analyzing directives like `#line 0'. - - * cexp.y (parse_number, yylex), cccp.c (rescan), cpplib.c - (cpp_get_token): Unless -lang-c89 is specified, allow C9X-style - hexadecimal floating-point numbers as preprocessor numbers. - * cccp.c (c89): New decl. - (main): Set it to 1 if -lang-c89. - * cpplib.h (struct cpp_options): New member c89. - (CPP_C89): New macro. - * cpplib.c (unsafe_chars): `p' is unsafe before `-' or `+', since it - might generate a C9X-style hexadecimal floating-point number. - (cpp_handle_options): Set c89 option to 1 if -lang-c89. - -Tue Mar 18 17:05:57 1997 Stan Cox - - * i386.h (STACK_BOUNDARY): Determine according to TARGET_ALIGN_DOUBLE. - - * i386.c (override_options) Make the default alignment 4 for 486, - otherwise 2. - - * i386/freebsd-elf.h (CPP_SPEC): Remove TARGET_CPU_DEFAULT reference. - * i386/linux{,-aout,-oldld}.h (CPP_SPEC): Likewise. - - * i386/go32.h (DBX_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE, - NO_STAB_H, ASM_FILE_START, DBX_BLOCKS_FUNCTION_RELATIVE, - DBX_FUNCTION_FIRST, DBX_OUTPUT_MAIN_SOURCE_FILE_END, - ASM_OUTPUT_SOURCE_LINE): Added to support stabs. - (ASM_OUTPUT_SECTION_NAME): Support section attribute. - -Tue Mar 18 16:12:28 1997 Jim Wilson - - * final.c (shorten_branches): Split all insns before computing insn - lengths. - (final_scan_insn, case default): If HAVE_ATTR_length defined, call - abort for any insn that has a '#' output template. - - * expr.c (emit_group_load): Call operand_subword instead of creating - an explicit SUBREG. - - * reload1.c (reload_reg_free_before_p, case - RELOAD_FOR_OPERAND_ADDRESS): Conflicts with RELOAD_FOR_OPADDR_ADDR - reloads. - - * configure (alpha-dec-osf[23456789]*): Use install-headers-cpio - for osf4. - - * gcc.c (init_spec): Delete parameter. Always initialize extra_specs. - (process_command, main): Change all callers. - - * combine.c (if_then_else_cond): Call copy_rtx to prevent sharing. - -Tue Mar 18 14:59:12 1997 Ian Lance Taylor - - * function.c (assign_parms): Add a REG_EQUIV note to the - instruction which copies a parameter into a pseudo-register - whenever there is an associated stack slot, even if the parameter - actually arrived in a register. - -Tue Mar 18 14:24:48 1997 Doug Evans - - * configure (alpha-dec-osf[23]): Separate osf[23] case. - * alpha.h (LIB_SPEC): -lprof1 requires -lpdf for OSF 4. - * alpha/osf2or3.h: New file. - -Tue Mar 18 11:32:10 1997 Jeffrey A Law (law@cygnus.com) - - * m68k.c (m68k_last_compare_had_fp_operands): New variable. - * m68k.h (m68k_last_compare_had_fp_operands): Declare it. - * m68k.md (tst*, cmp*): Turn into define_expand/define_insn pairs. - Keep track of whether test/compare has fp operands. - (seq, sne, sgt, slt, sge, sle): Turn into define_expand/define_insn - pairs. Make expanders FAIL if TARGET_68060 and last comparison/test - had fp operands. - -Tue Mar 18 04:29:29 1997 Richard Earnshaw - - * arm.md (movhi): Handle generation of large constants during - and after reload. - -Mon Mar 17 17:30:24 1997 Brendan Kehoe - - * gmicro.h (RETURN_POPS_ARGS): Make sure FUNDECL is non-nil - before we try to use it. - * m68k.h (RETURN_POPS_ARGS): Likewise. - * ns32k.h (RETURN_POPS_ARGS): Likewise. - * pyr.h (RETURN_POPS_ARGS): Likewise. - -Mon Mar 17 17:13:44 1997 J"orn Rennecke - - * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): - Only add padding if a bit field would otherwise span more units - of alignment than its base type. - -Mon Mar 17 17:03:55 1997 J.T. Conklin - - * m68k.md (beq0_di, bne0_di, bge0_di, blt0_di): Use cmpw #0 - instead of tstl when testing address registers on the 68000. - - * m68k/lb1sf68.asm: Fix prologues/epilogues to deal with the lack - of predecrement/postincrement addressing modes in the coldfire - moveml instruction. - -Mon Mar 17 17:00:14 1997 Scott Christley - - * Fix long standing bug where first method call for a class could - result in a garbled stack or produce an incorrect return value. - * objc/sendmsg.c (__objc_block_return): Remove function. - (__objc_word_return, __objc_double_return): Remove functions. - (__objc_get_forward_imp): New function. - (__objc_init_dispatch_tables): Install zero instead of - __objc_init_install_dtable. - (__objc_init_install_dtable): No longer call the method but - allow objc_msg_lookup return it for normal execution. - (obj_msg_lookup): Differentiate between when a method isn't - implemented and when the dispatch table needs to be installed. - Return the IMP when the dispatch table is installed versus - having __objc_init_install_dtable call it. - (get_imp): Install dispatch table if needed and return IMP - from the newly installed dispatch table. - (__objc_responds_to): Install dispatch table if needed before - checking if method is implemented. - -Mon Mar 17 16:29:38 1997 Richard Kenner - - * tree.c (build_{index,range}_type): Ensure expressions for min - and max value are in same obstack as type. - -Mon Mar 17 15:44:18 1997 Pat Rankin - - * cccp.c [#if VMS] (O_RDONLY, O_WRONLY): Delete (redundant). - (BSTRING): Delete (obsolete; usage occurs prior to definition). - (do_include): Handle old VAX C style includes better. - -Mon Mar 17 13:46:47 1997 Paul Eggert - - * cexp.y, cppexp.c (parse_number): Invalid integer constants are - errors if pedantic. - * cexp.y (yylex): Invalid multibyte characters are errors if pedantic. - * cppexp.c (cpp_lex): Likewise. - * cppexp.c (cpp_parse_escape): Character constants that do not fit are - errors if pedantic. - - * c-parse.in (expr_no_commas): Do not store temporary - skip_evaluation increments on yacc value stack. - -Sun Mar 16 19:54:49 1997 Richard Kenner - - * expr.c (expand_expr, case PLACEHOLDER_EXPR): Refine which - object is picked. - -Sun Mar 16 15:45:45 1997 Jeffrey A Law (law@cygnus.com) - - * loop.c (strength_reduce): Adjust BENEFIT appropriately if an - autoincrement memory reference will eliminate add insns. - -Sun Mar 16 08:41:40 1997 Scott Christley - - * i386.md (untyped_call): Re-enable code. - * objc/sendmsg.c (__objc_block_return): New function. - (__objc_word_return, __objc_double_return): New functions. - (__objc_init_install_dtable): Call appropriate return function - based upon method type. - * objc/thr-pthreads.c: Correct include path. - -Sat Mar 15 07:58:33 1997 Scott Christley - - * objc-act.c (OBJC_VERSION): Increment version. - * objc/init.c (OBJC_VERSION): Likewise. - -Sat Mar 15 07:58:00 1997 Ovidiu Predescu - - * Implement +load. - * objc/init.c (objc_send_load, __objc_send_load): New functions. - (__objc_send_message_in_list): New function. - (__objc_force_linking): New function. - (__objc_exec_class): Don't call _objc_load_callback here. - * objc/linking.m: New file. - * objc/sendmsg.c (class_add_method_list): Check for the +load method - when adding a methods list to a class. - * objc/Makefile (OBJC_O): Add linking.m. - - * Allow methods defined in categories to override methods that are - defined in the class implementation. - * objc/sendmsg.c (__objc_install_methods_in_dtable): New function. - (class_add_method_list): Don't check anymore for duplicate methods. - - * config/nextstep.h (INCLUDE_DEFAULTS): Define to something useful - when cross-compiling. - - * The static instances list moved from the objc_module struct to - objc_symtab struct, at the end of defs array. This now allows the NeXT - gdb to work with binaries generated for the GNU ObjC runtime. - * objc-act.c (build_objc_symtab_template): Make sure - defs in objc_symtab is a NULL terminated array. - (init_def_list): Attach statics to end of def list. - (init_objc_symtab): Take statics list into account. - (init_module_descriptor, build_module_descriptor): Don't add statics. - (generate_static_references): Indicate that statics are used. - (finish_objc): Process statics in the beginning. - * objc/objc-api.h (objc_module): Eliminate statics variable. - * objc/init.c (__objc_exec_class): Access statics from their - new place in the defs variable. - -Sat Mar 15 07:29:15 1997 J"orn Rennecke - - * reload.c: Include expr.h. - (find_reloads_address, find_reloads_address_1): New argument INSN. - (find_reloads_address_1): Reload inside of p{re,ost}_{in,de}c - instead of entire p{re,ost}_{in,de}c where appropriate. - * Makefile.in (reload.o): Added expr.h to dependencies list. - -Sat Mar 15 07:17:12 1997 Richard Henderson - - * reload.h (eliminate_regs): Add STORING arg. - * reload1.c (eliminate_regs): Likewise. - (eliminate_regs, case SET): Pass that we are storing to recursive call. - (eliminate_regs, case SUBREG): If storing and same number of words, - use larger mode. - * caller-save.c, dbxout.c, dwarfout.c, dwarf2out.c, reload.c, sdbout.c: - Change all calls to eliminate_regs. - -Fri Mar 14 14:18:49 1997 Ian Lance Taylor - - * cplus-dem.c: Add prototypes for all static functions. - (mystrstr): Make static. Make arguments and result const. - (cplus_match): Remove; not used. - -Fri Mar 14 10:15:35 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (const_costs): Remove unused function. - * mn10300.h (CONST_COSTS): Rework to generate better code. - - * mn10300.c (print_operand): Handle 'H' and 'L' output - modifers for high/low part of a 64bit value. - * mn10300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Handle 'G' - (LEGITIMATE_CONSTANT_P): Allow any constant. - * mn10300.md (movdi, movdf): Implement. - (adddi3, subdi3): New expanders and patterns. - - * mn10300.c (print_operand): Handle 'A' modifier for an - address which can't be simple register indirect. - * mn10300.h (EXTRA_CONSTRAINT): Handle 'R' for bit ops. - * mn10300.md: Add patterns to test, set and clear bitfields. - - * mn10300.c (can_use_return_insn): New function. - (expand_epilogue): Emit a RETURN insn if possible. - * mn10300.md (return): New pattern. - - * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'N'. - * mn10300.md (andsi3): Catch "and 255,dn" and "and 65535,dn" - which were not turned into zero_extend patterns. - - * mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Handle symbolic - constant as an index/base too. - - * mn10300.md (movsi): Allow SP to be loaded/saved with - reg+d8 addresses. - - * mn10300.md (cmpsi): Allow second operand to be a constant. - (subsi3): Likewise. - - * mn10300.md (sign extension patterns): Fix thinko when - extending from memory. - - * mn10300.md (tst peepholes): Add peepholes for test/branch - based on N bit being set/clear and the data value being tested dies. - -Tue Mar 11 17:07:51 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (expand_prologue): Rework so that eliminating - the frame pointer produces faster/smaller code. - (expand_epilogue): Likewise. - (initial_offset): New function for argument pointer and frame pointer - elimination. - * mn10300.h (FIRST_PSEUDO_REGISTER): Bump to 10. - (FIXED_REGISTERS): Add argument pointer register, it's a fake fixed - register. - (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Corresponding changes. - (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Likewise. - (REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise. - (reg_class, REG_CLASS_NAMES): Delete unwanted DATA_OR_SP_REGS class. - (PREFERRED_OUTPUT_RELOAD_CLASS): Define. - (FIRST_PARM_OFFSET): No longer include register save area in - computation. - (STACK_POINTER_REGNUM): Is now register 9. - (ARG_POINTER_REGNUM): Is now register 8. - (FRAME_POINTER_REQUIRED): Refine. - (ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Define. - (CAN_DEUG_WITHOUT_FP): Define. - * mn10300.md (return_internal): Break into two patterns. - - * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'M' too. - (REGISTER_MOVE_COST): Fix errors and refine. - - * mn10300.c (notice_update_cc): SET_ZN_C0 insns leave the - overflow bit in an unuseable state. Rename CC_SET to CC_TST. - * mn10300.md (cc attributes): "set" is gone, replaced by - "tst". Update attributes on various insns. - - * mn10300.md: Improve sign and zero extension instructions. - (ashlsi3): Improve. Handle address registers too. - (add peephole): Combine two consecutive adjustments of a register - into a single adjustment. - -Tue Mar 11 17:18:40 1997 Brendan Kehoe - - * cplus-dem.c (gnu_special): Call demangled_fund_type for other - __t* symbols. - -Mon Mar 10 16:10:34 1997 Richard Kenner - - * emit-rtl.c (subreg_lowpart_p): Return 0 if SUBREG_REG is VOIDmode. - * combine.c (simplify_rtx, case SUBREG): Fix direction of test when - calling operand_subword; use inline code intead of subreg_lowpart_p. - -Fri Mar 7 09:22:28 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (expand_{pro,epi}logue): Rework to avoid - unnecessary "add" operations. - (expand_epilogue): Likewise. - * mn10300.h (STARTING_FRAME_OFFSET): Is zero after the last - round of prologue/epilogue changes. - (FIRST_PARM_OFFSET): Is now 16 (-4 for REG_PARM_STACK_SPACE + 20 for - register save area). - (REG_PARM_STACK_SPACE): Define as 4 bytes. - (OUTGOING_REG_PARM_STACK_SPACE): Define so caller allocates it. - * mn10300.md (call{,_value} expander): Don't emit insns to adjust the - stack here anymore. - - * mn10300.md (bCC patterns): Just use "bCC target". - -Tue Mar 4 13:21:41 1997 Jim Wilson - - * rs6000.md (movsi): Don't emit a USE insn for LABEL_REFs. - -Thu Mar 6 16:29:13 1997 Jim Wilson - - * dwarf2out.c (modified_type_die): Initialize item_type to NULL. - Move equate_type_number_to_die call before use of sub_die, and move - recursive modified_type_die calls on item_type after it. - - * dwarfout.c (root_type_1, write_modifier_bytes_1): New functions. - (root_type): Call root_type_1. - (write_modifier_bytes): Call write_modifier_bytes_1. - (output_type, case POINTER_TYPE): Set TREE_ASM_WRITTEN before - recursive call. - -Wed Mar 5 14:30:49 1997 Torbjorn Granlund - - Partially undo Jan 11 changes (nor takes only register ops): - * mips.md (*norsi3_const, *nordi3_const): Delete bogus patterns. - * mips.c (complemented_arith_operand): Delete function. - (print_operand): Don't handle `e' for CONST_INT. - * mips.h (PREDICATE_CODES): Delete complemented_arith_operand. - -Tue Mar 4 16:38:13 1997 Brendan Kehoe - - * i386.c (i386_return_pops_args): Make sure FUNDECL is non-nil - before we try to use it. - * i386/isc.h (RETURN_POPS_ARGS): Likewise. - * i386/next.h (RETURN_POPS_ARGS): Likewise. - * i386/sco.h (RETURN_POPS_ARGS): Likewise. - * i386/sco5.h (RETURN_POPS_ARGS): Likewise. - * i386/scodbx.h (RETURN_POPS_ARGS): Likewise. - -Mon Mar 3 20:17:54 1997 Gavin Koch - - * ginclude/va-mips.h: __mips_single_float should have - the same effect on vararg lists as __mips_soft_float. - -Mon Mar 3 18:12:01 1997 Michael Meissner - - * rs6000.h (DBX_CONTIN_LENGTH): Undo 2/26 change. - -Mon Mar 3 13:08:20 1997 Jeffrey A Law (law@cygnus.com) - - * combine.c (simplify_rtx): Do nothing with (truncate:mode) if - mode is a partial integer mode. - -Sun Mar 2 17:41:18 1997 Ulrich Drepper - - * ginclude/varargs.h: Add definition of __va_copy. - * va-alpha.h, va-clipper.h, va-h8300.h, va-i860.h: Likewise. - * va-i960.h, va-m88k.h, va-mips.h, va-pa.h, va-ppc.h: Likewise. - * va-sh.h, va-sparc.h, va-spur.h: Likewise. - -Sun Mar 2 13:25:49 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-typeck.c (process_init_element): Warn and truncate if upper - bound of index is out of range. - -Fri Feb 28 16:08:47 1997 Michael Meissner - - * rs6000/sol-c0.c (_start): Disable loading up r13 and r2 with the - SDA base registers for now. - - * rs6000.md (movsi): Emit a USE insn when putting the - label of constants into the TOC, so that the constant is still - emitted when expensive optimizations are used. - -Thu Feb 27 17:54:42 1997 Karl Heuer - - * fixinc.ptx: Fix sed expression looking for in - pwd.h. - -Thu Feb 27 12:11:16 1997 Dennis Glatting - - * fixincludes: Remove more cases of __const__ from math.h on - NeXT. - -Wed Feb 26 14:52:27 1997 Michael Meissner - - * reload.c (debug_reload): Remove extra argument to fprintf. - - * rs6000.c (output_toc): Make fprintf calls type correct. - - * rs6000.h (DBX_CONTIN_LENGTH): Define as 4000 to avoid AIX - assembler line limit. - -Mon Feb 24 17:56:17 1997 Brendan Kehoe - - * fixincludes: Fix need of prototypes for C++ in rpc/xdr.h on SunOS4. - -Mon Feb 24 17:33:57 1997 Michael Meissner - - * rs6000/xm-sysv4.h (HAVE_STRERROR): Define. - -Sun Feb 23 17:18:28 1997 Jim Wilson - - * rs6000.md (floatsidf2_loadaddr): Correct syntax for cau instruction. - (load_multiple, store_multiple): Call change_address instead of - creating MEM from scratch. - -Thu Feb 20 16:39:15 1997 Jim Wilson - - * unroll.c (unroll_loop): Add check for naive loop that ends with - conditional branch that does not branch back to loop start. - - * reload1.c (reload): Move assign_stack_local call into main loop. - -Thu Feb 20 11:40:46 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (zero extension patterns): Turn into define_expand and - define_insn pair. - -Wed Feb 19 17:05:38 1997 Jeffrey A Law (law@cygnus.com) - - * pa.c (emit_move_sequence): Don't copy 0.0 (double precision) - directly to memory, go through a reg if reload hasn't started. - * pa.md (main movdf pattern): Don't allow 0.0 (double precision) - to be copied directly to memory. - - * pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10. - (MD_STARTFILE_PREFIX): Similarly. - - * pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name - with '$' if not using GAS. - -Wed Feb 19 16:43:47 1997 J"orn Rennecke - - * sched.c (schedule_insns): If there was no first scheduling pass, - split instructions after reload. - (update_flow_info): Tolerate some idiosyncrasies after reload. - -Wed Feb 19 11:13:51 1997 Jeffrey A Law (law@cygnus.com) - - * combine.c (find_split_point): Don't turn a SIGN_EXTEND into - a series of shifts if either mode is a partial integer mode. - -Mon Feb 17 08:06:02 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * rs6000.c ({,non_}short_cint_operand): Use (unsigned HOST_WIDE_INT). - (non_add_cint_operand, includes_rshift_p): Likewise. - * rs6000.h (CONST_OK_FOR_LETTER_P): Likewise. - (LEGITIMATE_ADDRESS_INTEGER_P, LEGITIMIZE_ADDRESS): Likewise. - -Sun Feb 16 07:55:19 1997 J"orn Rennecke (amylaar@cygnus.co.uk) - - * libgcc2.c (__negdi2, __lshrdi3, __ashldi3, __ashrdi3, __ffsdi2): - Use ANSI style definition with full prototype. - (__muldi3, __udiv_w_sdiv, __udivmoddi4, __divdi3, __moddi3) : Likewise. - (__udivmoddi4, __udivdi3, __cmpdi2, __ucmpdi2) : Likewise. - (__fixunstfdi, __fixtfdi, __fixunsxfdi, __fixxfdi) : Likewise. - (__fixunsdfdi, __fixdfdi, __floatdixf, __floatditf) : Likewise. - (__floatdidf, __floatdisf, __fixunsxfsi, __fixunsdfsi) : Likewise. - (__gcc_bcmp, __eprintf, gopen, gclose, __bb_init_file) : Likewise. - (__bb_init_trace_func, __clear_cache, mprotect) : Likewise. - (__enable_execute_stack, cacheflush, exit) : Likewise. - (find_exception_table, __find_first_exception_table_match) : Likewise. - -Sun Feb 16 07:52:02 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.md (mulqihi3): Corrected. - (tst{hf,tqf}): Simplified. - (movqi): Removed redundant alternative. - (addqi-3,addqi-2,addqi-1): Set/Reset Bit patterns by C. Nettleton. - (many patterns): Introduced operand output modifiers d,t,b,B,w. - * 1750a.c (print_operand): New operand output modifiers d,t,b,B,w. - (simple_memory_operand): Removed. - (one_bit_set_p, which_bit): Added from C. Nettleton's m1750 config. - -Sun Feb 16 07:43:37 1997 Paul Eggert - - * cccp.c (special_symbol): Don't treat "L" in "L'...'" as identifier. - (check_macro_name, collect_expansion, rescan): Likewise. - * cpplib.c (special_symbol, check_macro_name, collect_expansion): - Likewise. - - * cexp.y (parse_c_expression): Don't check for null lexptr - or *lexptr == 0. If yyparse returns nonzero value, abort. - - * cexp.y (yylex): Use is_space, not is_hor_space, to find keyword end. - (is_space): New decl. - (is_hor_space): Removed. - * cccp.c (is_space): Now external. - (is_hor_space): Now static. - -Sun Feb 16 04:55:11 1997 Jason Merrill - - * toplev.c, tree.h (decl_printable_name): Change arguments. - * c-common.c (declare_function_name): Reflect above change. - * final.c (final_start_function): Likewise. - * function.c (init_function_start): Likewise. - * toplev.c (decl_name): Likewise. - (announce_function): Likewise. - (v_message_with_decl): Likewise. - * dwarf2out.c (dwarf2_name): New fn, uses decl_printable_name. - (add_pubname): Use it. - (add_name_and_src_coords_attributes): Use it, add - DW_AT_MIPS_linkage_name if appropriate. - (output_aranges): Use DW_AT_MIPS_linkage_name if present. - -Sat Feb 15 18:45:30 1997 J.T. Conklin - - * m68k.md (cmpsi): Added insn with appropriate constraints for - TARGET_5200; changed condition of existing insn to !TARGET_5200. - -Sat Feb 15 18:26:50 1997 Philippe De Muyter - - * m68k/hp320.h (PRINT_OPERAND_FLOAT): Removed. - (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. - (PRINT_OPERAND): Turned off: use default. - * m68k/news.h (PRINT_OPERAND): Turned off: use default. - (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. - * m68k/tower-as.h (PRINT_OPERAND): Turned off: use default. - (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. - * m68k/crds.h (PRINT_OPERAND): Turned off: use default. - (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. - (SGS_NO_LI,STRUCTURE_SIZE_BOUNDARY,IMMEDIATE_PREFIX): Defined. - (NEED_PROBE): Defined instead of HAVE_probe and gen_probe. - (FUNCTION_{PRO,EPI}LOGUE): Do not access FPA registers. - * m68k.c (output_function_prologue): Add CRDS and MOTOROLA probe code. - (print_operand): Do not output '.' if CRDS. - - * gcc.c (set_spec): Fix comment-in-comment typo. - -Sat Feb 15 17:54:23 1997 H.J. Lu (hjl@gnu.ai.mit.edu) - - * Makefile.in (COMPILERS): Moved before GCC_PASSES. - (GCC_PASSES): Use $(COMPILERS) instead of cc1$(exeext). - -Sat Feb 15 17:25:44 1997 Andreas Schwab - - * gcc.c (process_command): Allocate space for terminating null. - -Sat Feb 15 17:21:34 1997 Pat Rankin - - * vax/vax.h (FUNCTION_PROLOGUE): Adjust size by STARTING_FRAME_OFFSET. - * vax/vms.h (FUNCTION_PROLOGUE): Delete. - -Sat Feb 15 08:48:14 1997 Douglas B. Rupp (rupp@gnat.com) - - * configure: Fix setting of CC in no-symlink case. - -Sat Feb 15 08:42:17 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * expmed.c (expand_divmod): Prefer divmod in same mode over div - in wider mode. - -Sat Feb 15 08:27:50 1997 J"orn Rennecke (amylaar@cygnus.co.uk) - - * fold-const.c (fold): Don't assume a nonexplicit constant cannot - equal an explicit one. - - * i386.md (zero_extendqi[hs]i2+3): Ensure operating on REG. - -Sat Feb 15 08:11:04 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (i[3456]86-*-solaris2*): Correct tm.h filename in - stabs case. - - * a29k.h (STORE_FLAG_VALUE): Write so works on both 32 and 64-bit host. - -Fri Feb 14 16:03:37 1997 Robert Lipe - - * i386/t-sco5 (libgcc{1,2}-elf.a): correct target dependencies. - -Fri Feb 14 16:00:23 1997 H.J. Lu - - * config/svr4.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Set - current-section variable to text. - -Wed Feb 12 16:07:34 1997 Brendan Kehoe - - * fixinc.irix: New file. - * configure (mips-sgi-irix[56]): Set fixincludes to fixinc.irix. - -Wed Feb 12 15:40:20 1997 Jim Wilson - - * Makefile.in (LIBGCC2_DEBUG_CFLAGS): New macro. - (LIBGCC2_CFLAGS): Use it. - - * dwarfout.c (output_type): Do early exit only if TYPE_CONTEXT is NULL - or if TYPE_CONTEXT is another type (e.g. a nested type). - -Tue Feb 11 15:53:51 1997 J"orn Rennecke - - * sh.c (calc_live_regs): Exclude RETURN_ADDRESS_POINTER_REGNUM. - - * sh.c (calc_live_regs): Need not save MACL/MACH when not live - or in leaf function. - -Mon Feb 10 14:46:32 1997 Jeffrey A Law (law@cygnus.com) - - * stmt.c (group_case_nodes): Recognize more opportunities to - group case nodes. - -Sun Feb 9 14:05:48 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (assign_stack_temp): Clear MEM flags from reuse. - -Sat Feb 8 17:37:47 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * local-alloc.c (update_equiv_regs): Fix error in last change. - -Fri Feb 7 12:42:34 1997 Mike Stump - - * pa.h (RETURN_ADDR_RTX): Fix to ignore export stubs. - * pa.c (return_addr_rtx): Define. - -Fri Feb 7 13:56:56 1997 Doug Evans - - * cse.c (invalidate_from_clobbers): Delete unnecessary test for - (clobber nil). - - * toplev.c (main): Delete redundant settings of flag_no_inline - and warn_inline if not optimizating. - -Fri Feb 7 10:45:02 1997 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (stmp-multilib-sub): Add missing "else true" - clauses to work around make bug on some systems. - -Fri Feb 7 08:19:43 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (const_binop): Don't call size_int if low < 0. - - * function.c (instantiate_virtual_regs_1, case USE, CLOBBER): - Fix error in last change. - -Thu Feb 6 17:09:17 1997 Mike Stump - - * except.c (find_exception_handler_labels): Initialize label array - with zeroes. - -Wed Feb 5 22:11:55 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (post_ldwm): Fix typos. - -Wed Feb 5 15:57:42 1997 Doug Evans - - * m68k/vxm68k.h (WCHAR_TYPE,WCHAR_TYPE_SIZE,SIZE_TYPE): Fix. - (PTRDIFF_TYPE): Define. - -Wed Feb 5 11:19:13 1997 Ian Lance Taylor - - * reload1.c (alter_reg): Don't ask assign_stack_local to round up - to a multiple of BIGGEST_ALIGNMENT, unless a register appears in a - paradoxical subreg. - -Tue Feb 4 19:29:40 1997 Jim Wilson - - * reload.c (find_reloads_address_1, case POST_INC): Don't use - ADDR_TYPE here. - -Tue Feb 4 12:33:45 1997 Jeffrey A Law (law@cygnus.com) - - * flow.c (life_analysis): Delete obvious no-op moves - which use SUBREGs. - -Mon Feb 3 20:00:35 1997 Jim Wilson - - * jump.c (find_cross_jump): Don't allow old-style and volatile asms - to match. - -Mon Feb 3 15:51:31 1997 Doug Evans - - * sparc/sol2.h (ASM_SHORT,ASM_LONG): Set to .uahalf/.uaword. - * sparc/sysv4.h (ASM_LONG): Define. - (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}): Use ASM_LONG. - -Mon Feb 3 13:01:46 1997 Ian Lance Taylor - - * reload.h (enum reload_type): Add RELOAD_FOR_INPADDR_ADDRESS and - RELOAD_FOR_OUTADDR_ADDRESS. - * reload.c (ADDR_TYPE): New macro. - (push_secondary_reload): Check for new reload types. - (combine_reloads): Likewise. - (find_reloads): Likewise. Convert INPADDR_ADDRESS and - OUTADDR_ADDRESS to OPADDR_ADDR. Check OPADDR_ADDR when looking - for merges. - (find_reloads_address): When reloading an address, use the - ADDR_TYPE macro to get the type of the new reload. - (find_reloads_address_1): Likewise. - (reload_when_needed_name): Add new reload types. - * reload1.c (reload): Add in_addr_addr and out_addr_addr fields to - insn_needs struct. Use them for new reload types, and when - computing in_max and out_max. - (reg_used_in_inpaddr_addr): New static array. - (reg_used_in_outaddr_addr): New static array. - (mark_reload_reg_in_use): Handle new reload types. - (clear_reload_reg_in_use, reload_reg_free_p): Likewise. - (reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise. - (reloads_conflict, merge_assigned_reloads): Likewise. - (emit_reload_insns): Likewise. - (choose_reload_regs): Save arrays for new reload types. - -Sun Feb 2 19:43:17 1997 Scott Christley - - * objc/selector.c (__sel_register_typed_name): Eliminate compiler - warnings with explicit cast. - - * Add condition mutex support to the objc runtime. - * objc/thr-mach.c (objc_condition_{,de}allocate): New functions. - (objc_condition_{wait,broadcast,signal}): New functions. - * objc/thr-pthreads.c (objc_condition_{,de}allocate): New functions. - (objc_condition_{wait,broadcast,signal}): New functions. - * objc/thr-solaris.c (objc_condition_{,de}allocate): New functions. - (objc_condition_{wait,broadcast,signal}): New functions. - * objc/thr.h: Prototypes for new functions. - - * objc/init.c (__objc_runtime_mutex): Eliminate leading underscore - from name of objc mutex and thread structures. - * objc/runtime.h: Likewise. - * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Likewise. - * objc/thr-{solaris,win32}.c: Likewise. - * objc/thr.{c,h}: Likewise. - - * Major reorganization of objc error handling. - * objc/Object.m (-error:): Call objc_error function instead of - using function pointer. - * objc/archive.c: Replace call to abort or __objc_fatal functions - with call to objc_error function throughout the complete file. - * objc/class.c (objc_get_class): Replace call to abort function - with call to objc_error function. - * objc/encoding.c (objc_sizeof_type, objc_alignof_type): Replace - call to abort function with call to objc_error function. - (objc_skip_typespec): Likewise. - * objc/init.c (init_check_module_version): Replace call to - abort function with call to objc_error function. - * objc/misc.c (objc_verror): New function. - (objc_fatal): Remove function. - (objc_set_error_handler): New function. - (_objc_error_handler): New global variable. - (__alpha__): Remove unneeded code. - (objc_error): Allow user specified error handler function to - trap and handle the objc error. Added an error code parameter - which indicates the specific error that occured. - (objc_malloc, objc_atomic_malloc): Replace call to objc_fatal - function with call to objc_error function. - (objc_valloc, objc_realloc, objc_calloc): Likewise. - * objc/objc-api.h: Declare error handling functions and typedef - for user specified error handler function. Define error codes - used by the runtime library. - * objc/runtime.h: Remove error handling declarations. - * objc/sendmsg.c (__objc_forward): Replace call to abort function - with call to objc_error function. - -Sun Feb 2 19:42:52 1997 Thomas Baier - - * objc/hash.c (hash_delete): Step through the hash nodes - versus using hash_next to increase efficiency. - * objc/archive.c (__objc_finish_read_root_object): Use hash - table instead of list. - -Sun Feb 2 08:25:05 1997 Ovidiu Predescu - - * objc-act.c (encode_aggregate_within): New function. - (encode_aggregate): Generates encodings for unions similar - to those for structs except surrounded by parenthesis instead - of braces. - -Sun Feb 2 07:15:54 1997 Mat Hostetter (mat@lcs.mit.edu) - - * c-decl.c (start_function): Fix improper installation of last change. - -Sun Feb 2 06:50:55 1997 Andreas Schwab - - * m68k.c (output_scc_di): Add missing CC_STATUS_INIT. - -Sun Feb 2 06:39:55 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-typeck.c (process_init_element): When popping levels, don't - blow up if constructor_max_index not set due to previous error. - - * combine.c (find_split_point, case SET): Fix error in last change. - -Sun Feb 2 06:28:56 1997 Paul Eggert - - * cccp.c (rescan): Insert a space after `.' as well, - to prevent accidental token-pasting (e.g. `.x' -> `.10'). - -Sun Feb 2 06:08:14 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.c (modregno_adjust): Fixed case when reg_renumber invalid. - -Sat Feb 1 19:11:08 1997 J.T. Conklin - - * m68k.md (movqi): Enable use of clr and st insns on TARGET_5200. - * m68k.c (output_move_simode_const): Likewise. - -Sat Feb 1 18:54:00 1997 Douglas B. Rupp (rupp@gnat.com) - - * gcc.c (process_command): Fix improper use of strncpy. - -Fri Jan 31 15:35:08 1997 Mike Stump - - * libgcc2.c: Remove extern for malloc and realloc. - -Fri Jan 31 17:08:11 1997 Ian Lance Taylor - - * local-alloc.c (update_equiv_regs): If a register which is - equivalent to some value is only used in one place, and we can't - substitute the value for the use, then move the register assignment - to just before the use. - -Fri Jan 31 15:57:25 1997 Stan Cox - - * i386.md (idiv,imul,fpmul): Added new functional units for pentiumpro. - - * i386.c (pentiumpro_cost): Added new cost structure for pentiumpro. - (override_options): Set ix86_cost to appropriate cost structure. - -Thu Jan 30 09:34:26 1997 J.T. Conklin - - * m68k.md (stack adjust peepholes): Use lea instead of - add.w when adding 16 bit constants on all but TARGET_68040. - -Thu Jan 30 08:58:08 1997 Ralf Baechle - - * function.c (TRAMPOLINE_ALIGNMENT): Provide default. - (expand_function_end): Use TRAMPOLINE_ALIGNMENT instead - of FUNCTION_BOUNDARY. - * varasm.c (TRAMPOLINE_ALIGNMENT): Provide default. - (assemble_trampoline_template): Use TRAMPOLINE_ALIGNMENT instead - of FUNCTION_BOUNDARY. - -Wed Jan 29 18:16:02 1997 J"orn Rennecke - - * sh.h (REG_CLASS_CONTENTS): Add rap to GENERAL_REGS and its - superclasses. - - * sh.md (movsi_i, movsi_ie, movhi_i, movhi+1): Use type pcload for - immediate operands where appropriate. - (movsf_ie+1): Fail when loading anything but a MEM into - a floating point reguister. - -Wed Jan 29 16:00:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * varasm.c (force_const_mem): Set MARK instead of clearing it. - (output_constant_pool): Only mark constant pool if -O. - Check mark flag unconditionally. - (mark_constant_pool): Start by clearing all mark flags. - - * tree.c (copy_node): Clear TREE_ASM_WRITTEN. - - * flow.c (regno_uninitialized): Return 0 if reg is used for args. - -Wed Jan 29 15:23:59 1997 Ian Lance Taylor - - * combine.c (try_combine): Clear reg_n_refs if i2dest is not - mentioned in newi2pat. - -Tue Jan 28 16:00:23 1997 Stan Cox (coxs@dg-rtp.dg.com) - - From Robert Lipe - * i386/sco5.h (SCO_DEFAULT_ASM_COFF): Remove bytecode stuff. - (ASM_OUTPUT_ASCII): Use .ascii in both ELF and COFF modes. - (ASM_OUTPUT_SECTION_NAME): Handle alternate sections for COFF. - The OpenServer 5.0.0 assembler gives an error for section - names over 6 characters long, so we catch the "obvious" case - and shorten it. - - * m88k.h (ASM_OUTPUT_SECTION_NAME): Undefine; fails - for exception sections. The 88k ABI specifies 'section' - instead of '.section'. - -Mon Jan 27 13:32:46 1997 J"orn Rennecke - - * sh.c (shl_and_kind): Fix typo. - * sh.md (and_shl_scratch): Fix typo for length 8. - -Mon Jan 27 08:56:03 1997 Jeffrey A Law (law@cygnus.com) - - * fixincludes: Fix incorrect forward structure declaration in - sys/time.h on hpux10.20. - -Mon Jan 27 09:05:35 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (simplify_rtx): Don't do anything with if_then_else_cond - result if both one arm and the input are a comparison. - (simplify_{rtx,if_then_else,logical,shift_const}): Don't - test STORE_FLAG_VALUE with #if; properly test for just sign bit. - (num_sign_bit_copies, if_then_else_cond): Likewise. - * expmed.c (emit_store_flag): Properly test for STORE_FLAG_VALUE - of just sign bit. - * fold-const.c (fold): Don't make COND_EXPR when both expr and - one part are comparisons. - * a29k.h (STORE_FLAG_VALUE): Make negative. - -Fri Jan 24 16:42:26 1997 Ian Lance Taylor - - * varasm.c (struct pool_constant): Add mark field. - (force_const_mem): Clear mark field in new constant pool entry. - (output_constant_pool): Call mark_constant_pool. - (mark_constant_pool, mark_constants): New static functions. - -Thu Jan 23 15:04:17 1997 Ian Lance Taylor - - * cse.c (COST): Get the right cost for a SUBREG of a register when - truncation is free. - -Thu Jan 23 11:19:40 1997 Mike Stump - - * Makefile.in (objc-headers): Don't try and install the headers if - the objc directory has been removed. - -Wed Jan 22 13:26:25 1997 Brendan Kehoe - - * i960.c (process_pragma): Call ungetc on the last character - that was read by the while loop, to make sure the parser sees it. - -Tue Jan 21 17:20:30 1997 Michael Meissner - - * rs6000.c (output_toc): Move STRIP_NAME_ENCODING to common - code, so the test for vt's works with -mminimal-toc. - -Tue Jan 21 16:03:35 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (mark_all_temps_used): Set KEEP as well. - -Tue Jan 21 12:16:15 1997 Doug Evans - - * stor-layout.c (layout_record): Correct test for whether - field spans its unit of alignment in case where - field_size == type_align. - -Mon Jan 20 20:27:54 1997 Ian Lance Taylor - - * mips.md (probe): Comment out. - -Sun Jan 19 20:54:45 1997 John F. Carr - - * integrate.c (expand_inline_function): Handle a PARALLEL containing - a RETURN the same as a RETURN. - -Sun Jan 19 20:35:28 1997 Pat Rankin - - * vmsconfig.com: Change all hardcoded references of "vax" to - use variable expansion instead. - (arch_indx, arch): New variables. - - * vax.c (not_qsort): Don't declare alloca. - * vax/xm-vms.h: Declare alloca here. - Do most of the VAX C-specific set up for DEC C. - #if DEC C, undefine QSORT_WORKAROUND and qsort. - * make-gcc.com, make-cccp.com, make-cc1.com: Support building - with GNU C vs VAX C vs DEC C from the DCL command line. - -Sun Jan 19 17:20:50 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.md (movh[if]-1): Corrected. - (movtqf-1): Deleted. - * 1750a.c (add_1_to_mem): Deleted. - (output_operand_address): Added output modifier 'A'. - -Sun Jan 19 17:17:54 1997 Philippe De Muyter - - * m68k.md (ashrdi_const, ashrdi3): Allow 31 as shift count. - - * m68k.h (CONST_OK_FOR_LETTER_P): Recognize 'N', 'O' and 'P'. - * m68k.md (rotl[shq]i3, strict_low_part rotl): Allow 'N', 'O' - or 'P' operands. - -Sun Jan 19 17:09:17 1997 Andreas Schwab - - * m68k.md (addsi3): Fix previous change: {add,sub}qw should - be {add,sub}ql. For other uses of {add,sub}q don't check for address - register and always use {add,sub}ql. - -Sun Jan 19 15:05:42 1997 Peter Seebach - - * c-decl.c (start_decl): Add code for -Wmain. - (c_decode_option): Add -fhosted, -ffreestanding, and -Wmain. - * toplev.c (lang_options): Likewise. - * c-tree.h (warn_main, flag_hosted): New variables. - -Sun Jan 19 14:35:41 1997 Alex Garthwaite (alex@samwise.cis.upenn.edu) - - * fixinc.svr4: Fix problems with symlinks to ".". - -Sun Jan 19 14:21:46 1997 Craig Burley - - * loop.c (check_final_value): Handle insns with no luid's. - -Sun Jan 19 08:57:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.md (arg_home): Add CLOBBER of MEM and USE of arg regs. - * vms.h (SETUP_INCOMING_VARARGS): Delete duplicate definition. - - * toplev.c (set_float_handler): Set up signal catcher on first call - in case a front end has disabled it. - - * cccp.c, cexp.y: #define __attribute__ to be null if - compiling with GCC older than 2.7, not 2.6. - - * toplev.c (main): If PREFERRED_DEBUGGING_TYPE used and set - to NO_DEBUG, say debugging not supported. - * mips/sni-svr4.h (PREFERRED_DEBUGGING_TYPE): Undefine. - - * i386/xm-cygwin32.h (DIR_SEPARATOR): Define. - - * explow.c (convert_memory_address, case SYMBOL_REF): - Copy CONSTANT_POOL_ADDRESS_P. - * integrate.c (save_constants): Make (address (const ..)) to record - both modes. - (copy_for_inline, copy_rtx_and_substitute, restore_constants): Use - both modes when restoring constant pool entry for ADDRESS. - - * alpha.h (MINIMUM_ATOMIC_ALIGNMENT): New macro. - - * function.c (instantiate_virtual_regs_1, case USE, case CLOBBER): - Properly handle case of shared MEM whose replacement is not valid. - -Sat Jan 18 14:08:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (get_unwidened): Don't crash if FIELD_DECL not layed out. - - * varasm.c (const_hash): Treat NON_LVALUE_EXPR like CONVERT_EXPR. - (compare_constant_1, copy_constant, bc_assemble_integer): Likewise. - (const_hash, compare_constant_1): Use switch, not if-then-else. - -Fri Jan 17 17:10:20 1997 Ian Lance Taylor - - * mips.h (STACK_POINTER_OFFSET): Don't define. - -Thu Jan 16 14:51:03 1997 Bob Manson - - * cplus-dem.c: Fix indenting; note that this file also lives in - libiberty. - (do_type, case 'M'): Check for a template as well as a class. - -Thu Jan 16 15:08:26 1997 Michael Meissner - - * gcc.c (cross_compile): Change to be a char * like all of the - other specs. - (process_command): Change how cross_compile is tested. - (main): Likewise. - (struct spec_list): Merge with the format used by EXTRA_SPECS. - Add name length field to speed up repeated calls to strcmp. Add - flag to say spec was allocated. Add pointer to char * so that - static spec fields can be updated. - (extra_specs): Use struct spec_list as type. - (static_specs): Static list of predefined specs. - (init_specs): New function, initialize the specs list. Link in - the default specs and any specs defined via EXTRA_SPECS. - (set_spec): No longer special case predefined specs. - (process_command,validate_all_switches): Ditto. - (process_command): Call init_specs for -dumpspecs. - (do_spec_1): Use name length field to avoid calling strncmp when - it is going to fail. - (main): Call init_spec. Don't handle EXTRA_SPECS here. - -Thu Jan 16 17:07:54 1997 Eddie C. Dost - - * configure: Add sparc-linux{,aout} support. - * ginclude/va-sparc.h: Likewise. - * sparc/linux.h: New file. - * sparc/linux-aout.h: New file. - * sparc/xm-linux.h: New file. - -Thu Jan 16 16:19:13 1997 Jim Wilson - - * configure (sparc-*-aout*): Add libgloss.h to tm_file. - (sparclite-*-coff*): Change "= to =". - -Thu Jan 16 12:53:15 CST 1997 Joel Sherrill - - * rs6000/rtems.h: Change from being sysv4 based to being eabi based. - -Thu Jan 16 13:40:51 1997 Jim Wilson - - * mips.h (LINKER_ENDIAN_SPEC): Define. - (LINK_SPEC): Add linker_endian_spec. - (EXTRA_SPECS): Add linker_endian_spec. - -Thu Jan 16 08:02:13 1997 Jeffrey A Law (law@cygnus.com) - - * mn10300.md (bCC, inverted bCC): Use bCC .+X instead of bCC 0f. - -Wed Jan 15 14:06:28 1997 Ian Lance Taylor - - * reload.h (reload_address_base_reg_class): Declare. - (reload_address_index_reg_class): Declare. - * reload1.c (reload_address_base_reg_class): Define. - (reload_address_index_reg_class): Define. - (init_reload): Initialize reload_address_{base,index}_reg_class. - * reload.c (find_reloads_address): Use - reload_address_base_reg_class rather than BASE_REG_CLASS. Use - reload_address_index_reg_class rather than INDEX_REG_CLASS. - (find_reloads_address_1): Likewise. - -Tue Jan 14 15:26:33 1997 Ian Lance Taylor - - * reload.c (REGNO_MODE_OK_FOR_BASE_P): Define if not defined. - (REG_MODE_OK_FOR_BASE_P): Define if not defined. - (find_reloads_address): Use REG[NO]_MODE_OK_FOR_BASE_P rather than - REG[NO]_OK_FOR_BASE_P. - (find_reloads_address_1): Likewise. - Add mode parameter; change all callers. - - * reload1.c (eliminate_regs_in_insn): Handle more cases when - eliminating the frame pointer to the hard frame pointer. - - * varasm.c (force_const_mem): Copy a CONST_INT rtx like a CONST rtx. - - * varasm.c (assemble_end_function): Call - output_after_function_constants. - (after_function_constants): New static variable. - (output_after_function_constants): New static function. - (output_constant_def): Check CONSTANT_AFTER_FUNCTION_P. - -Mon Jan 13 16:44:40 1997 David Edelsohn - - * rs6000/aix41.h (CPP_PREDEFINES): Add -D_AIX41. - -Sun Jan 12 20:54:01 1997 Jim Wilson - - * libgloss.h (LINK_SPEC): Delete. - (STARTFILE_SPEC): Delete spurious newline. - -Sat Jan 11 00:13:03 1997 Torbjorn Granlund - - * mips.md (norsi3, nordi3): Use canonical RTL. Prepend `*' to pattern - name. Don't match immediates. - (norsi3_const, nordi3_const): New patterns. - (anddi3, iordi3, xordi3): Test TARGET_64BIT, not mips_isa - in length attribute calculation. - * mips.c (complemented_arith_operand): New function. - (print_operand): Handle `e' for CONST_INT. - * mips.h (PREDICATE_CODES): Add complemented_arith_operand. - -Fri Jan 10 14:11:53 1997 David Edelsohn - - * rs6000/aix41.h (SUBTARGET_SWITCHES): Add threads and pe. - (CPP_SPEC): Add mpe and mthreads cases. - (LIB_SPEC): Add mpe and mthreads cases to variant from rs6000.h. - (STARTFILE_SPEC): Add mpe and mthreads support. - -Fri Jan 10 07:12:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * i386/cygwin32.h (LINK_SPEC): New definition. - - * Makefile.in (FLAGS_TO_PASS): Add STAGE_PREFIX, set by configure. - * configure: Initialize exeext. - Update STAGE_PREFIX in Makefile. - - * dwarfout.c (dwarfout_line): Push to LINE_SECTION after calling - lookup_filename. - -Thu Jan 9 12:06:04 1997 Jim Wilson - - * i386.md (addsidi3_2): Add & to operand 0 of alternative 5. - -Thu Jan 9 12:06:04 1997 Stan Cox - - From Linus Torvalds and Mat Hostetter: - * i386.c (i386_sext16_if_const): Added to sign extend an HImode constant. - (i386_aligned_reg_p): Added to tell if an rtx is aligned. - (i386_cc_probably_useless_p): Don't trust cc bits. - * i386.h (TARGET_ZERO_EXTEND_WITH_AND): Don't do this for p6. - * i386.md (cmpsf_ccfpeq+2): Use SImode test instruction. - (movhi+1): Use movz instead of mov on p6. - (addsi3): Add 128 by subtracting -128. - (zero_extendhisi2): Use SImode move if aligned. - (addhi3): Likewise. - (subhi3): Likewise. - (andhi3): Likewise. - (iorhi3): Likewise. - (xorhi3): Likewise. - -Tue Jan 7 16:58:27 1997 Jason Merrill - - * c-parse.in (extension): New rule for __extension__. - (extdef, unary_expr, decl, component_decl): Use it. - -Mon Jan 6 15:44:37 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.c: Now includes regs.h. - ({movcnt,mod}_regno_adjust): Corrected typos. - * 1750a.md (movhi): Corrected case of moving constant to memory. - -Mon Jan 6 08:00:57 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * mips.h: Delete redundant definitions of compiler and library fns. - - * dwarfout.c (type_attribute): Ignore any subtype for now. - - * fold-const.c (operand_equal_p): Rework to consider two - expressions that have embedded identical SAVE_EXPRs as - equivalent; also handle some more cases. - -Sun Jan 5 23:54:34 1997 Jeffrey A Law (law@cygnus.com) - - * pa.md (pic_load_label): Fix test for using just an - ldo rather than an addil;ldo sequence to load the label's - address. - -Sun Jan 5 07:26:47 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COMPONENT_REF): Fix error in last - change: don't suppress conversion if just EXPAND_SUM. - -Sat Jan 4 18:44:01 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.h (struct tree_decl): saved_insns.i is HOST_WIDE_INT. - - * fold-const.c (const_binop): Rework to only make constants in - one place; always use size_int if small enough and of sizetype. - (size_int): Call force_fit_type. - (fold): Avoid ever changing type of input tree. - - * expr.c (get_inner_reference): Fix type error. - (expand_expr, case COMPONENT_REF): Don't convert if modifier - is EXPAND_CONST_ADDRESS, EXPAND_SUM, or EXPAND_INITIALIZER. - * tree.c (staticp, case COMPONENT_REF, BIT_FIELD_REF): Not - static if bitfield. - - * expr.c (expand_expr, case COMPONENT_REF): If taking value - from a CONSTRUCTOR, must mask/sign-extend if bitfield. - (expand_builtin, case BUILT_IN_LONGJMP): Pass type, not IDENTIFIER, - to second arg of RETURN_POPS_ARGS. - - * expr.c (expand_expr, case COND_EXPR): Add additional cases - to "singleton" cases. - * tree.c (integer_pow2): Mask value to width of type. - (tree_log2): New function. - - * expmed.c (store_fixed_bit_field): If not SLOW_UNALIGNED_ACCESS, - treat everything as maximally aligned. - - * combine.c (find_split_point, case SET): If SET_SRC is NE and - STORE_FLAG_VALUE is -1, see if we can convert into NEG of shift. - (force_to_mode, case NE): Make condition stricter. - - * calls.c (emit_library_call_value): Remove redundant check for - outmode != VOIDmode. - -Sat Jan 4 08:12:16 1997 J.T. Conklin - - * Optimizations from John Vickers (john@rhizik.demon.co.uk): - * m68k.c (output_function_{pro,epi}logue): Use addq/subq when - adjusting stack pointer by small displacements. - * m68k.md (addsi3, addhi3): Use two addqw (or subqw) insns when - adding (or subtracting) small integer constants (8 < N <= 16) to - both address and data registers. - -Sat Jan 4 07:06:07 1997 Kamil Iskra - - * loop.c (basic_induction_var): Return 0 if SUBREG is not a - promoted variable. - -Sat Jan 4 06:22:36 1997 Doug Rupp (rupp@gnat.com) - - * alpha.c (vmskrunch): Try to not chop trailing uppercase letters. - * alpha/vms.h (ENDFILE_SPEC): Use "gnu", not "gnu_cc". - - * cccp.c (PRINTF_PROTO): Use __printf__ in __attribute__, not printf. - * cexp.y (PRINTF_PROTO): Likewise. - -Fri Jan 3 09:01:00 1997 Craig Burley - - * alpha.md (cmov): Fix operand numbers in case involving DF target, - DF comparison, and SF source. - -Fri Jan 3 08:19:46 1997 Paul Eggert - - * cpplib.c (macroexpand): Delete any no-reexpansion marker following - identifier at beginning of an argu concatenated with what precedes it. - -Fri Jan 3 07:59:21 1997 Ken Rose (rose@netcom.com) - - * reorg.c (fill_slots_from_thread): Skip moved insn in all three cases. - -Fri Jan 3 07:51:44 1997 Bob Manson - - * function.c ({push,pop}_function_context_to): Save and restore - current_function_args_info. - * function.h (struct function): New field args_info. - -Fri Jan 3 06:55:09 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * jump.c (rtx_equal_for_thread_p): Return 0 for floating-point. - - * reload.c (find_reloads): If replaced a PLUS or MULT with a - simple operand, start over again. - - * va-alpha.h: Check for __VMS__, not VMS. - -Thu Jan 2 08:52:51 1997 Richard Kenner - - * configure: Finish restoring change of default of objc threads to - "single" for Linux. - -Mon Dec 30 17:03:46 1996 Jeffrey A Law (law@cygnus.com) - - * pa.c (fmpy_operands): Remove. No longer needed. - (combinable_add, combinable_copy, combinable_fmpy): Likewise. - (combinable_fadd, combineable_fsub): Likewise. - (pa_reorg): Call pa_combine_instructions. - (pa_combine_instructions): Combine instructions to make things - like fmpyadd and fmpysub. - (pa_can_combine_p): Helper function for pa_combine_instructions. - * pa.md (pa_combine_type): New attribute. Set it appropriately - for various insns. - (define_delays): Use a separate define_delay for unconditional - branches. - (fmpyadd, fmpysub peepholes): Remove, no longer needed. - (fmpyadd, fmpysub insns): Add variant with fadd/fsub first, - then the fmpy. - -Mon Dec 30 14:43:51 1996 Jim Wilson - - * reg-stack.c (subst_stack_regs_pat): Set src_note explicitly, instead - of using invalid aggregate initialization. - - * print-tree.c (print_node): Don't try to print nonexistent - TYPE_ATTRIBUTES field of a decl node. - -1996-12-30 Richard Stallman - - * config.sub: Handle hiuxmpp as system type. - -Thu Dec 26 13:33:27 1996 Michael Meissner - - * rs6000.md (init_v4_pic): Explicitly set the length. - -Mon Dec 23 19:39:38 1996 Jim Wilson - - * mips.h (FUNCTION_ARG_REGNO_P): Correct for TARGET_SOFT_FLOAT and - TARGET_FLOAT64 cases. - - * integrate.c (function_cannot_inline_p): Reject function with - PARALLEL result. - (expand_inline_function): Abort if function result not handled. - -Sat Dec 21 04:02:46 1996 Jason Merrill - - * mips.c (save_restore_insns): Mark large frame setup insns - as frame-related. - (mips_expand_prologue): Likewise. - - * dwarf2out.c (dwarf2out_frame_debug): Support MIPS large frames. - (add_bound_info): Use default lower bounds. - Handle simple variable bounds with a DIE ref. - Don't generate a NULL loc descr. - (add_subscript_info): Always add lower bound. - (gen_formal_parameter_die): Always equate_decl_number_to_die. - (gen_variable_die): Likewise. Don't use the old die for automatic - variables. - -Wed Dec 18 10:23:46 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (notice_update_cc): Enable this code. - * mn10300.h (CC_OVERFLOW_UNUSABLE): Define. - * mn10300.md (tstsi): Use "set_zn_c0" instead of "set" for cc status. - (addsi3 pattern): Break "inc" into two different alternatives - since "inc dn" sets cc0, but "inc an" does not. - (multiply and divide patterns): Fix cc status. - (bCC, inverted bCC): Restore any comparison which needs the - overflow bits when CC_OVERFLOW_UNUSABLE is set. - (zero and sign extensions): Fix cc status. - (movm_store): Likewise. - -Tue Dec 17 15:02:44 1996 Jim Wilson - - * sched.c (update_flow_info): When add REG_DEAD notes for dest of - last insn, add check for global_regs. - -Tue Dec 17 11:07:26 1996 Michael Meissner - - * rs6000/win-nt.h (HAS_INIT_SECTION): Delete, so that __main is - called from main. - -Mon Dec 16 15:28:44 1996 Jim Wilson - - * combine.c (nonzero_bits): Ifdef out calls to num_sign_bit_copies. - Add dummy define/undef for num_sign_bit_copies. - - * dwarfout.c (location_or_const_value_attribute, case CONCAT): Add. - - * combine.c (simplify_comparison): Use mode_width as shift count - only if it is less than or equal to HOST_BITS_PER_WIDE_INT. - -Mon Dec 16 10:10:11 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.c (expand_epilogue): Restore registers in the - "ret" instruction instead of a separate movm instruction. - Support possible stack deallocation in "ret" instruction too. - * mn10300.md (return_internal): Use "ret" instead of "rets"; - restore registers and deallocate stack as needed. - (load_movm): Delete unused pattern. - - * mn10300.h (SMALL_REGISTER_CLASSES): Define. - -Fri Dec 13 14:46:54 1996 J"orn Rennecke - - * sh.md (dect): Rewrite pattern so that it can be combined. - -Fri Dec 13 13:14:51 1996 Ian Lance Taylor - - * varasm.c (output_constant_pool): If ASM_OUTPUT_POOL_EPILOGUE is - defined, call it. - -Thu Dec 12 20:04:55 1996 Jason Merrill - - * rtl.h (RTX_FRAME_RELATED_P): New macro. - (struct rtx_def): Add frame_related bitfield. - * final.c (final_scan_insn): Call dwarf2out_frame_debug. - Don't call dwarf2out_begin_function. - (final): Initialize dwarf2out_frame_debug. - * dwarf2out.c (dwarf2out_begin_function): Remove. - (dwarf2out_init): Use INCOMING_RETURN_ADDR_RTX. - (DWARF_CIE_DATA_ALIGNMENT): Generalize. - (DWARF_FRAME_REGNUM): Don't add 1. - (decode_cfi_rtl): Lose. - (dwarf2out_def_cfa): Now takes reg and offset directly. - (reg_save): Likewise. - (dwarf2out_reg_save): Now takes offset. - (initial_return_save): Grok INCOMING_RETURN_ADDR_RTX. - Replaces dwarf2out_return_save. - (dwarf2out_cfi_label): New fn. - (add_fde_cfi): Use it. - (dwarf2out_frame_debug): New fn. - * mips.h (DWARF_FRAME_REGNUM): Tweak r31. - (INCOMING_RETURN_ADDR_RTX): Define. - * mips.c (mips_expand_prologue): Set RTX_FRAME_RELATED_P as needed. - (save_restore_insns): Likewise. - * i386.c (ix86_expand_prologue): Likewise. - * i386.h (INCOMING_RETURN_ADDR_RTX): Define. - (DWARF_FRAME_RETURN_COLUMN): Define. - - * dwarf2out.c (add_AT_long_long): Renamed from add_AT_double for - clarity. - (print_die): Adjust. - (add_AT_float): New fn. - (add_const_value_attribute): Support fp values. - (size_of_die): Use blocks for long_long and fp values. - (value_format): Likewise. - (output_die): Likewise. - (output_loc_operands): Don't support DW_OP_const8?. - -Thu Dec 12 19:49:09 1996 Ian Lance Taylor - - * varasm.c (CONSTANT_POOL_BEFORE_FUNCTION): Define if not - defined. - (assemble_start_function): Check CONSTANT_POOL_BEFORE_FUNCTION - to decide whether to call output_constant_pool. - (assemble_end_function): Likewise. - - * calls.c: Check SMALL_REGISTER_CLASSES at run time as well as at - compile time. - * combine.c, cse.c, function.c, jump.c, local-alloc.c: Likewise. - * loop.c, reload.c, reload1.c: Likewise. - * dsp16xx.h (SMALL_REGISTER_CLASSES): Define with value. - * h8300.h (SMALL_REGISTER_CLASSES): Likewise. - * i386.h (SMALL_REGISTER_CLASSES): Likewise. - * pdp11.h (SMALL_REGISTER_CLASSES): Likewise. - * sh.h (SMALL_REGISTER_CLASSES): Likewise. - -Thu Dec 12 15:25:39 1996 Michael Meissner - - * rs6000.md (sysv call insns): If flag_pic add @plt suffix. - - * rs6000.md (fix_truncdfsi2_store): Fix offsets > 32k. - - * rs6000/t-ppccomm: New file for common parts of embedded and - System V target Makefile support. - - * rs6000/t-ppcos: New file for System V OS target Makefile - support. - - * rs6000/t-solaris: Delete, merge into rs6000/t-ppcos. - - * rs6000/t-{ppc,ppcgas}: Only keep the multilib specific parts, - moving the rest to rs6000/t-ppccomm. - - * configure (powerpc*-*-*): For embedded and System V - configurations, add rs6000/t-ppccomm. For Linux and Solaris, use - t-ppcos. - - * ginclude/ppc-asm.h (cr*, f*): Add new macros for register names. - - * rs6000/sol-c0.c (_start): Fix uninitialized data bug. - - * rs6000.md (init_v4_pic): Add @local to call. - (icbi,dcbst,sync,isync): Delete PowerPC cache control insns. - - * rs6000/sysv4.h (ASM_SPEC): On explicit -mcall-solaris, pass - -msolaris to the assembler. - - * rs6000.c (rs6000_sync_trampoline): Delete. - (rs6000_trampoline_template): Aix & System V don't need template now. - (rs6000_initialize_trampoline): For System V, call the function - __trampoline_setup to set up the trampoline. - - * rs6000.h (TRAMPOLINE_TEMPLATE): Delete here. - * rs6000/win-nt.h (TRAMPOLINE_TEMPLATE): Add it here. - - * rs6000/tramp.asm: New file, setup trampolines properly on System - V systems, properly flushing the caches. - -Thu Dec 12 10:53:10 1996 Jeffrey A Law (law@cygnus.com) - - * reorg.c (fill_slots_from_thread): Don't call eligible_for_delay - with an insn with asm operands. - - * expmed.c (emit_store_flag_force): Fix typos/thinkos. - -Thu Dec 12 08:09:20 1996 J"orn Rennecke - - * i386.c (i386_return_pops_args): Libcalls ignore TARGET_RTD. - -Thu Dec 12 07:56:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.h (maybe_get_identifier): New declaration. - - * calls.c (emit_library_call): Don't pass VOIDmode to type_for_mode. - - * va-alpha.h: Add definitions for VMS; they differ from Unix. - - * Makefile.in (stamp-objlist): Handle first character of object - file being a digit. - - * 1750a.h (function_arg, {movcnt,mod}_regno_adjust): Add decls. - (branch_or_jump): Likewise. - (FUNCTION_ARG): Remove cast of function_arg result to rtx. - * 1750a.md: Remove unneeded casts to char *. - -Thu Dec 12 05:55:27 1996 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.c (arm_gen_constant, case [IX]OR): Don't invert constant if - loading into temporary. - -Wed Dec 11 18:57:21 1996 Brendan Kehoe - - * toplev.c (rest_of_compilation): Make sure unwinder RTL is saved. - - * collect2.c (write_c_file): Wrap the ctor/dtor lists and fns - with `extern "C" { ... }'. - -Wed Dec 11 17:46:48 1996 John F. Carr - - * tree.h (tree_decl): Reorder field declarations to reduce size - on 64 bit machines. - - * combine.c (try_combine): When splitting an insn, check for the - new I2 setting a SUBREG. - -Wed Dec 11 17:00:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of - using "%ld". - (output_prolog): Don't print useless comment for VMS. - - * alpha.c (output_prolog): SIZE is now HOST_WIDE_INT. - * alpha.md (mov[hq]i unnamed): Split up for TARGET_BYTE_OPS and not. - - * function.c (fixup_var_refs_1, case ZERO_EXTRACT): Don't call - fixup_memory_subreg if no longer SUBREG of MEM. - -Wed Dec 11 14:10:48 1996 Jeffrey A Law (law@cygnus.com) - - * mn10300.c: New file for Matsushita MN10300 port. - * mn10300.h, mn10300.md, t-mn10300, xm-mn10300.h: Likewise. - * config.sub: Recognize mn10300 as a basic machine type. - * configure: Similarly. - * ginclude/stdarg.h: mn10300 is little endian. - * ginclude/varargs.h: Likewise. - -Wed Dec 11 09:09:10 1996 Nagai Takayuki - - * libgcc2.c (cacheflush): Add SONY NEWS-OS 4.2 version. - -Wed Dec 11 09:01:39 1996 J"orn Rennecke - - * calls.c (emit_library_call, emit_library_call_value): - Don't pass an identifier node as function type for - library functions, but rather build a function type that - has a return type with the correct mode. - * i386.c (i386_return_pops_args): Don't test for IDENTIFIER_NODE. - * i386/isc.h (obsolete RETURN_POPS_ARGS): Test first argument - for IDENTIFIER_NODE. - * i386/next.h (RETURN_POPS_ARGS): Likewise. - * i386/sco.h (RETURN_POPS_ARGS): Likewise. - * i386/sco5.h (RETURN_POPS_ARGS): Likewise. - * i386/scodbx.h (RETURN_POPS_ARGS): Likewise. - * m68k.h (RETURN_POPS_ARGS): Likewise. - * ns32k.h (RETURN_POPS_ARGS): Likewise. - * pyr.h (RETURN_POPS_ARGS): Likewise. - * gmicro.h (RETURN_POPS_ARGS): Likewise; fix typo. - -Tue Dec 10 17:36:47 1996 J.T. Conklin - - * Add optimizations from John Vickers (john@rhizik.demon.co.uk) - * m68k.h (TARGET_CPU32): New macro. - * m68k.md (add[hs]i3): Only use two addq.w or subq.w instructions - when adding or subtracting constants 8 < N < 16 on TARGET_CPU32. - Use lea instead of add.w when adding 16 bit constants to address - registers on all but TARGET_68040. - * m68k.c (output_function_{pro,epi}logue): Use lea instead of add.w - when adjusting stack pointer on all but TARGET_68040. - -Tue Dec 10 15:55:23 1996 Ian Lance Taylor - - * optabs.c (emit_unop_insn): Treat ZERO_EXTEND like SIGN_EXTEND. - -Tue Dec 10 13:47:24 1996 Joern Rennecke - - * combine.c (combinable_i3pat): Bring back to sync with can_combine_p. - - * sh.h (ADJUST_INSN_LENGTH): Don't break from loop when LOOP_BEG found. - Calculate padding in new variable pad. - -Mon Dec 9 18:00:38 1996 Jason Merrill - - * dwarf2out.c (output_uleb128): Output the value in a human-readable - comment. - (output_sleb128): Likewise. - (various): Adjust. - (output_call_frame_info): Only output info if it's interesting. - (add_src_coords_attributes): New fn. - (add_name_and_src_coords_attributes): Split out from here. - (gen_enumeration_type_die): Add src coordinates. - (gen_struct_or_union_type_die): Likewise. - (dwarf2out_finish): Call output_call_frame_info for all targets. - -Thu Dec 5 11:25:30 1996 Jason Merrill - - * dwarf2out.c (add_pure_or_virtual_attribute): Only add - AT_containing_type if -g2 or higher. - - * dwarf2out.c (gen_struct_or_union_type_die): Make sure that - the type for AT_containing_type has been generated. - (gen_decl_die): Likewise. - - * dwarf2out.c (type_tag): Check DECL_IGNORED_P. - (add_pure_or_virtual_attribute): Check DECL_VINDEX instead. - (scope_die_for): Likewise. - * dwarfout.c (type_tag): Likewise. - -Wed Dec 4 22:51:38 1996 Jason Merrill - - * dwarf2out.c (decode_cfi_rtl): Support getting a CONST_INT. - (dwarf2out_begin_function): Adjust. - (reg_save): Divide offset by the alignment. - (output_cfi): Support having more than one advance_loc. - (output_call_frame_info): Re-initialize current_label. - (dwarf2out_begin_prologue): Initialize current_label to NULL. - (lookup_cfa, lookup_cfa_1): New fns. - (dwarf2out_def_cfa): Call lookup_cfa. - (dwarf2out_finish): Don't generate CIE CFIs. - (dwarf2out_init): Generate them here. - (DWARF_FRAME_RETURN_COLUMN): Use PC_REGNUM. - - (add_pure_or_virtual_attribute): Note virtual context. - (gen_formal_parameter_die): Return the die. - (gen_formal_types_die): Set AT_artificial on `this'. - (gen_subprogram_die): Add AT_accessibility. - (gen_variable_die): Likewise. - (gen_field_die): Likewise. Don't generate location attribute for - union members. - (gen_struct_or_union_type_die): Note where our vtable lives. - (gen_decl_die): Handle anonymous union fields. - (dwarf2out_decl): Always output `bool'. - -Mon Dec 2 03:55:15 1996 Jason Merrill - - * final.c (final_end_function): Don't call dwarf2out_end_function. - - * dwarf2out.c (output_line_info): Emit special opcodes for each line - entry, even if the line number doesn't change. - (pend_type, output_pending_types_for_scope): New fns. - (gen_struct_or_union_type_die): Use them to defer generating member - dies if we're in the middle of some other context. - (gen_type_die): Still put nested types in the right place. - (dwarf2out_decl): Call output_pending_types_for_scope. - - * dwarf2out.c (dw_fde_struct): Replace end_prologue, begin_epilogue - with current_label. - (DWARF_CIE_INSN_SIZE, DWARF_CIE_SIZE): Remove. - (DWARF_CIE_HEADER_SIZE): The size without the initial insns. - (size_of_cfi): Revert. - (decode_cfi_rtl, add_fde_cfi, dwarf2out_def_cfa, reg_save, - dwarf2out_reg_save, dwarf2out_return_save): New fns. - (dwarf2out_begin_function): Use them to generate CFIs. - (dwarf2out_finish): Use them to generate E CFIs. - Don't set next_fde_offset. - (calc_fde_sizes): Initialize cie_size. - (output_call_frame_info): Don't generate CIE CFIs. - (dwarf2out_end_function): Remove. - - * tree.c (maybe_get_identifier): New fn. - * varasm.c (assemble_name): Use it instead of get_identifier. - -Fri Nov 29 15:13:39 1996 Stan Cox - - * jump.c (jump_optimize): Don't move initialization if there is a - label between it and the jump for if (foo) bar++ to bar += (foo !=0) - -Wed Nov 27 16:21:14 1996 Stan Cox - - * Remove change of Oct 4. - * i386.h (outer_function_chain): Remove. - (current_function_calls_alloca): Remove. - (rtx_equal_function_value_matters): Remove. - (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Remove. - * i386.md (adddi3_1, subdi3_1): Remove. - (adddi3, subdi3): Revert. - (movsf, movsf_mem, movsf_normal, movdf, movdf_mem, movdf_mem+1): - Likewise. - (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. - (adddi3_1, subsidi3, subdi3_1): Likewise. - (addsidi3_1, addsidi3_2, subsidi3): Likewise. - (addsidi3_1, addsidi3_2, adddi3, subsidi3): Disable the problem - reload alternatives. - -Wed Nov 27 16:21:14 1996 J"orn Rennecke - - * i386.md (ashldi3_non_const_int, ashrdi3_non_const_int): - Use a hidden branch to handle shifts > 32 bit. - (lshrdi3_non_const_int): Likewise. - (floatdixf2): Don't use unnecessary XFmode operation. - -Wed Nov 27 15:23:41 1996 Jason Merrill - - * varasm.c (assemble_variable): Don't emit DWARF. - - * toplev.c (rest_of_type_compilation): Don't emit DWARF. - (main): Just let -gdwarf mean DWARF v1; remove -gdwarf-1. - - * dwarfout.c (decl_class_context): New fn. - (output_global_subroutine_die): Fix declaration case. - (output_global_variable_die): Likewise. - (output_type): Note when we are in a class defn. If we're a nested - type and our context hasn't been written, do that. Do early exit - for nested types. - (output_decl): Output the class context for fns and vars. - Don't emit detailed parm info for a fn declaration. - Use TYPE_DECL_IS_STUB, is_redundant_typedef. - (type_ok_for_scope): Support emitting nested types later. - (is_redundant_typedef): New fn. - (TYPE_DECL_IS_STUB): New macro. - (output_compile_unit_die): Check use_gnu_debug_info_extensions. - (output_local_subroutine_die, output_global_subroutine_die, - dwarfout_begin_function, dwarfout_end_function, dwarfout_line, - generate_macinfo_entry, dwarfout_init, dwarfout_finish): Likewise. - - * dwarf2out.c (decl_class_context): Static. - (lookup_type_die): Use TYPE_SYMTAB_POINTER. - (equate_type_number_to_die): Likewise. - (gen_subprogram_die): If we're in class context, it's a decl. - (gen_variable_die): Likewise. - (gen_decl_die): Output the containing type. - (dwarf2out_init): Lose type_die_table code. - -Wed Nov 27 08:30:54 1996 Brendan Kehoe - - * Makefile.in (DRIVER_DEFINES): New macro, with the macro - definitions for the driver. - (gcc.o): Make rule use $(DRIVER_DEFINES). - * gcc.c (process_command) [LANG_SPECIFIC_DRIVER]: Call - lang_specific_driver, passing along the addr of FATAL for errors - along with our ARGC and ARGV. - -Wed Nov 27 08:21:13 1996 Philippe De Muyter - - * m68k.md (iorsi_zexthi_ashl16): New pattern. - (ashrsi_16): New name for old unnamed pattern. - - * objc/misc.c (stdlib.h): Define __USE_FIXED_PROTOTYPES__ before - including stdlib.h. - -Wed Nov 27 08:17:34 1996 Joern Rennecke - - * i386.md (decrement_and_branch_until_zero+[3-8]): Add missing - CC_STATUS_INIT. - (decrement_and_branch_until_zero+[5-8]): Delete redundant assignment. - -Wed Nov 27 07:56:27 1996 J.T. Conklin - - * m68k.md ({and,ior,xor}si3_internal): Removed !TARGET_5200 from - conditionals now that entire insn is disabled when !TARGET_5200. - -Wed Nov 27 07:52:32 1996 Oliver Kellogg - - * 1750a.md (movhi pattern): Fixed MEM to MEM move problem. - -Tue Nov 26 14:50:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (move_by_pieces): Abort only if length positive at end. - * function.c (frame_offset, get_frame_size): Make HOST_WIDE_INT. - * function.h (struct function): Make frame_offset be HOST_WIDE_INT. - (get_frame_size): Add definition. - * reload1.c (reload): Make starting_frame_size be HOST_WIDE_INT. - -Mon Nov 25 16:55:14 1996 Jason Merrill - - * dwarf2out.c (dwarf2out_finish): Don't emit call frame info - for non-MIPS targets. - (is_redundant_typedef): New fn. - (modified_type_die): Refer to typedef DIEs where appropriate. - (gen_typedef_die): Support DECL_ORIGINAL_TYPE. - (gen_type_die): Likewise. Use is_redundant_typedef. - (gen_subprogram_die): Don't force a spec DIE for local class methods. - -Mon Nov 25 15:09:12 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * gcc.c (handle_braces): Rework last change. - -Mon Nov 25 13:49:51 1996 Jim Wilson - - * configure (build_exeext, exeext): New variables. Use sed to insert - build_exeext value into Makefile exeext rule. - (*-*-cygwin32): Set exeext. - * i386/x-cygwin32 (exeext): Delete. - * rs6000/x-cygwin32 (exeext): Delete. - - * dwarf.h (enum dwarf_location_atom): Add OP_MULT. - * dwarfout.c (output_mem_loc_descriptor, case MULT): Add. - * dwarfout2.c (mem_loc_descriptor, case MULT): Add. - - * dwarfout.c (dwarf_fund_type_name, case FT_unsigned_int64): Fix typo. - -Sun Nov 24 21:42:01 1996 J.T. Conklin - - * m68k.md (andsi3): Changed into define_expand. - (andsi3_internal): Rename from old andsi3, changed condition - to !TARGET_5200. - (andsi2_5200): New insn. - (iorsi3): Change into define_expand. - (iorsi2_internal): Rename from old iorsi3, changed condition - to !TARGET_5200. - (iorsi2_5200): New insn. - (xorsi3): Change into define_expand. - (xorsi2_internal): Rename from old xorsi3, changed condition - to !TARGET_5200. - (xorsi2_5200): New insn. - -Sun Nov 24 21:31:32 1996 John F. Carr - - * i386.h (N_ALLOCATABLE_REGISTERS): Remove extra backslash at - end of macro definition. - - * cpplib.c (LOCAL_INCLUDE_DIR): Remove default definition. - (include_defaults_array): Do not use LOCAL_INCLUDE_DIR or - TOOL_INCLUDE_DIR if they are not defined. - * cccp.c: Likewise. - - * Makefile.in (cppmain.o): New rule. - -Sun Nov 24 19:14:50 1996 Andreas Schwab - - * fold-const.c (merge_ranges): In (+,-) case, if lower bounds are - the same the result is always false. - -Sun Nov 24 18:48:31 1996 Richard Kenner - - * c-typeck.c (build_indirect_ref): Don't give warning for - dereferencing void * if evaluation is being skipped. - - * c-decl.c (poplevel): Don't call output_inline_function if - DECL_SAVED_INSNS is not set. - - * gcc.c (give_switch): Add new arg, INCLUDE_BLANKS. - (handle_braces): All callers changed. - Add support for new construct: %{S*^}. - -Sun Nov 24 18:44:48 1996 Paul Eggert - - * c-parse.in (unary_expr, expr_no_commas): Increment skip_evaluation - when analyzing an expression that is known not to be evaluated. - (sizeof, alignof): New rules. - * c-tree.h (skip_evaluation): New variable. - * c-common.c (skip_evaluation): Likewise. - (overflow_warning, unsigned_conversion_warning): Don't warn about - potential runtime errors when skipping evaluation. - * c-typeck.c (build_binary_op): Likewise. - (build_conditional_expr): op1 now always nonnull. - -Sun Nov 24 17:06:58 1996 Bernd Schmidt (crux@Pool.Informatik.RWTH-Aachen.DE) - - * toplev.c (rest_of_compilation): Call regscan before each - jump threading pass. - -Sun Nov 24 16:37:18 1996 Dave Love - - * configure (objc_thread_file): Set conditionally in each case so - may be overidden with `--enable-objcthreads=posix'. - Change Linux default to `single'. - -Fri Nov 22 17:53:15 1996 Jason Merrill - - * varasm.c (assemble_variable): Output DWARF in the third case, too. - - * dwarf2out.c (decls_for_scope): Only add DIEs with no parents to - our scope. - (gen_subroutine_type_die): Parm types go under the fn type DIE. - - * Makefile.in ($(T)crt{begin,end}.o): Move CRTSTUFF_T_CFLAGS after - general flags. - - * mips/t-iris6 (CRTSTUFF_T_CFLAGS): Define. - * mips.c (compute_frame_size): Fix fp_save_offset. - - * dwarf2out.c (new_die): If we get a NULL parent, inc limbo_die_count. - (decls_for_scope): Decrement limbo_die_count as appropriate. - (dwarf2out_finish): Check for good limbo_die_count. - (size_of_cfi): If regno too big for DW_CFA_offset, use offset_extended - instead. - (output_call_frame_info): Add disabled code for specifying ABI. - (dwarf2out_begin_function): Note all saved regs. - - * dwarf2out.c (gen_subprogram_die): Have a DIE for each fn at - toplevel. - (scope_die_for): Only use the NULL for fns and tags. - -Tue Nov 21 15:53:51 1996 Joern Rennecke - - * sh.c (output_stack_adjust): New argument TEMP. Changed all callers. - If the adjust cannot be done with one, but can be done with two - CONST_OK_FOR_I constants, do it that way. - -Thu Nov 21 14:25:55 1996 Ian Lance Taylor - - * fixincludes: Include in even if not C++ if - stderr needs to be defined. - -Wed Nov 20 15:38:13 1996 Jason Merrill - - * toplev.c (rest_of_type_compilation): Do output function-scope tags - for DWARF 2. - * c-decl.c (pushtag): Set TYPE_CONTEXT on the tag. - * toplev.c, varasm.c: s/dwarf2out_file_scope_decl/dwarf2out_decl/g. - * dwarf2out.c (add_prototyped_attribute): Use a value of 1. - (gen_subprogram_die): Support AT_static_link. - (dwarf2out_decl): Rename from dwarf2out_file_scope_decl. - Give nested fns and tags a die_parent of NULL. - (decls_for_scope): Fix the die_parent for nested fns and tags. - (scope_die_for): If we get a context of NULL, just return it. - -Tue Nov 19 18:21:11 1996 Jason Merrill - - * dwarf2out.c (gen_subprogram_die): Support block extern decls. - (gen_variable_die): Likewise. - (gen_decl_die): Emit block extern function decls. - - * c-decl.c (implicitly_declare): Set DECL_ARTIFICIAL. - -Tue Nov 19 16:50:32 1996 Michael Meissner - - * configure (powerpc*-{sysv,elf,eabi{,aix,sim}}): Set - extra_headers to ppc-asm.h. - (powerpc*-{linux,solaris,rtems,vxworks}): Ditto. - (powerpc*-{winnt,pe,cygwin32}): Ditto. - - * rs6000/t-{ppc,ppcgas,solaris,winnt} (EXTRA_HEADERS): Don't set - it here. - -Mon Nov 18 14:51:46 1996 Jason Merrill - - * dwarf2out.c (DWARF_CIE_INSN_SIZE): New macro. - (DWARF_CIE_HEADER_SIZE): Use it. - (DWARF_FRAME_RETURN_COLUMN, DWARF_FRAME_REGNUM): New macros. - (output_call_frame_info, dwarf2out_begin_function): Use them. - For the MIPS, output the first CFA insn in the CIE. - * dwarf2.h (enum dwarf_call_reg_usage): Lose. - (dwarf_macinfo_record_type): Fix spelling. - * mips/mips.h (DWARF_FRAME_REGNUM, DWARF_FRAME_RETURN_COLUMN): Define. - - * dwarf2out.c (base_type_die): Just generate the DIEs as needed, - rather than building up some table. - (init_base_type_table): Lose. - (add_subscript_info): Use add_type_attribute. Don't give an upper - bound for an array of unknown size. - (gen_unspecified_parameters_die): Remove DWARF-1 kludge. - (dwarf2out_init): Lose call to init_base_type_table. - (is_c_family, is_fortran): New fns. - (gen_compile_unit_die): Recognize GNU F77. - (gen_array_type_die): Use AT_declaration for an array of unknown size. - (modified_type_die): Take TYPE_MAIN_VARIANT before passing it - to build_type_variant, so we ignore named variants. - (dwarf2out_file_scope_decl): Don't generate DIEs for built-in structs, - either; they will be emitted if they are used. - From wilson: - (gen_array_type_die): Force the element type out first on IRIX 6. - -Sun Nov 17 20:23:11 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (get_inner_reference): Fix error in previous change. - -Sat Nov 16 06:08:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * emit-rtl.c (operand_subword): Avoid confusion if sizeof (float) - is less than a full word. - - * alpha.h (MASK_BYTE_OPS): Now define as 1024. - * alpha/vms.h (TARGET_DEFAULT): Use symbolic values. - - * expr.c (get_inner_reference): Add new arg PALIGNMENT and compute it. - (expand_assignment, do_jump): Pass new arg to get_inner_reference. - (expand_expr, case COMPONENT_REF): Likewise. - * fold-const.c (optimize_bit_field_compare, decode_field_reference): - Likewise. - * tree.h (get_inner_reference): Add new arg. - - * Add support for Alpha/VMS, mostly from - Klaus Kaempf (kkaempf@progis.de) - * configure (alpha-dec-vms*): New target. - * alpha.c (override_options): Handle VAX format floating-point. - (print_operand, case ',', '-'): New cases. - (alpha_builtin_saveregs): Handle VMS convention. - (alpha_sa_{mask,size}, alpha_pv_save_size, alpha_using_fp): - New versions for VMS. - (output_{pro,epi}logue, function_arg): Likewise. - (direct_return): Never true on VMS. - (check_float_value): Return 0 for VMS. - (vmskrunch, alpha_{need,write}_linkage): New function. - * alpha.h ({MASK,TARGET}_{OPEN_VMS,FLOAT_VAX}): New macros. - (TARGET_SWITCHES): Add float-vax and float-ieee. - ({FUNCTION,LIBCALL}_VALUE, FUNCTION_VALUE_REGNO_P): R1 and R33 - are also return registers. - (ASM_OUTPUT_DOUBLE): Support both floating-point formats. - (PRINT_OPERAND_FUNCT_VALID_P): Add ',' and '-'. - * alpha.md ({div,mod}[sd]i3): Only for VMS. - (fp operations): Add modifiers for multiple floating-point formats. - (call patterns): Handle new calling sequence for VMS. - (tablejump): Make new pattern for VMS. - (nonlocal_goto_receiver, arg_home): New patterns. - * alpha/t-vms, alpha/vms.h, alpha/xm-vms.h: New files. - -Fri Nov 15 17:38:20 1996 Doug Evans - - * sdbout.c (current_file): New global. - (PUT_SDB_SRC_FILE): New PUT_SDB_FOO macro. - (sdbout_init): Initialize current_file ifdef MIPS_DEBUGGING_INFO. - (sdbout_{start_new,resume_previous}_source_file): New functions. - * toplev.c (debug_{start,end}_source_file): Call them if SDB_DEBUG. - * mips.h (PUT_SDB_SRC_FILE): Define. - -Fri Nov 15 16:11:25 1996 Jason Merrill - - * dwarfout.c (dwarfout_line): Don't emit line number info for - functions outside of .text. - -Fri Nov 15 15:52:42 1996 Stan Cox - - * i386/386bsd.h (COMMENT_BEGIN): Delete. - * i386/freebsd.h (COMMENT_BEGIN): Likewise. - * i386/netbsd.h (COMMENT_BEGIN): Likewise. - * i386/unix.h (COMMENT_BEGIN): Likewise. - -Fri Nov 15 13:22:42 1996 Jim Wilson - - * fold-const.c (unextend): Rewrite type conversions to avoid overflow. - -Fri Nov 15 12:11:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): Properly copy an rtvec. - * emit-rtl.c (gen_rtvec_vv): New function. - (copy_rtx_if_shared): Call it. - * integrate.c (copy_for_inline): Likewise. - * reload1.c (eliminate_regs): Likewise. - * rtl.h (gen_rtvec_vv): Declare. - * genattrtab.c (simplify_cond): Make TESTS an array of rtunions. - * genextract.c (main): Use loop, not bcopy, to set recog_operands - from an rtvec. - * rtl.c (rtvec_alloc): Clear rtwint instead of rtvec. - - * machmode.h (HOST_PTR_PRINTF): Handle char * wider than long. - (HOST_WIDE_INT_PRINT_{DEC,UNSIGNED,HEX,DOUBLE_HEX}): New macros. - * final.c (asm_fprintf): Use "ll" prefix for a long long HOST_WIDE_INT. - (output_{asm_insn,addr_const}): Use HOST_WIDE_INT_PRINT_*. - * print-tree.c (print_node{,_brief}, case INTEGER_CST): Likewise. - * print-rtl.c (print_rtx, case 'w'): Use HOST_WIDE_INT_PRINT_DEC. - - * unroll.c (iteration_info): Fix code so that it knows iteration_var - is a HOST_WIDE_INT, not a long. - - * fold-const.c (operand_equal_p): Do real comparison with - REAL_VALUES_EQUAL. - (make_range): Properly decide when to get TREE_TYPE of arg0. - Handle EXP being an INTEGER_CST at end. - (fold_range_test): Handle return of 0 from make_range. - (fold, case TRUTH_AND_EXPR): Handle first arg of 0. - (fold, case TRUTH_OR_EXPR): Handle first arg of 1. - - * c-common.c (decl_attributes, case A_ALIAS): Add missing parens. - -Fri Nov 15 06:37:54 1996 Andreas Schwab - - * fold-const.c (range_binop): Set SNG1 to zero if ARG1 is a - not a lower or upper bound. - -Thu Nov 14 23:08:25 1996 Jason Merrill - - * flags.h (debug_info_type): Add DWARF2_DEBUG. - * toplev.c (main): Support DWARF2_DEBUG. Add -gdwarf-1, -gdwarf-2 - options. Check debug level after choosing type. - (debug_{start,end}_source_file, debug_{define,undef}): New functions. - (compile_file): Support dwarf2 separately from dwarf1. - (rest_of_type_compilation, rest_of_compilation): Likewise. - * final.c (final_start_function): Likewise. - (final_end_function, final_scan_insn, output_source_line): Likewise. - * varasm.c (assemble_variable): Likewise. - * dwarfout.c: Don't check DWARF_VERSION. - * dwarf2out.c: s/dwarfout/dwarf2out/g. Check DWARF2_DEBUGGING_INFO. - * c-lex.c (check_newline): Use debug_* instead of calling *out - functions directly. - * svr4.h (DWARF2_DEBUGGING_INFO): Define. - * mips/iris6.h (PREFERRED_DEBUGGING_TYPE): DWARF2_DEBUG. - (DWARF2_DEBUGGING_INFO): Define instead of DWARF_DEBUGGING_INFO. - (LINK_SPEC): Pass -w through. - * mips.h (PREFERRED_DEBUGGING_TYPE): Don't check `len'. - -Thu Nov 14 17:25:47 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.c (dosize): Don't clobber static chain reg if needed by - current function. - -Wed Nov 13 17:05:19 1996 Jason Merrill - - * Makefile.in (stage?-start): Keep a copy of EXTRA_MULTILIB_PARTS - in the build directory. - -Tue Nov 12 23:17:17 1996 Jeffrey A Law (law@cygnus.com) - - * pa.c (print_operand, case 'Y'): Fix comparisons to handle - NaNs properly in all cases. - -Tue Nov 12 18:47:24 1996 Jim Wilson - - * expr.c (emit_group_store): For REG case, call gen_lowpart if - modes are different. - -Tue Nov 12 18:24:40 1996 Doug Rupp (rupp@gnat.com) - - * gcc.c (exit): If VMS, define as __posix_exit. - (option_map): Add define-macro and undefine-macro. - -Tue Nov 12 17:55:10 1996 Torbjorn Granlund - - * alpha.c (input_operand): If TARGET_BYTE_OPS accept HImode and QImode. - * alpha.h (MASK_BYTE_OPS): New define. - (TARGET_BYTE_OPS): New define. - (TARGET_SWITCHES): Handle -mbyte. - (LOAD_EXTEND_OP): When MODE is not SImode, return ZERO_EXTEND. - * alpha.md (zero_extendqidi2): Handle TARGET_BYTE_OPS. - (zero_extendhidi2): Likewise. - (zero_extendqisi2): Likewise. - (zero_extendhisi2): Likewise. - (extendqisi2): Use extendqidi2x if TARGET_BYTE_OPS. - (extendqidi2): Likewise. - (extendqidi2x): New pattern. - (extendhisi2): Use extendhidi2x if TARGET_BYTE_OPS. - (extendhidi2): Likewise. - (extendhidi2x): New pattern. - (movhi): Handle TARGET_BYTE_OPS. - (movhi matcher): Output ldwu and stw. - (movqi): Handle TARGET_BYTE_OPS. - (movqi matcher): Output ldbu and stb. - -Tue Nov 12 16:53:37 1996 Rob Savoye - - * configure (hppa1.1-pro*, i960-*-coff*,m68k-*-aout*): Add libgloss.h. - (m68k-*-coff*, mips*-*-elf*, sparc*-*-aout*, sparc*-*-coff*): Likewise. - * config/libgloss.h: New file. - -Tue Nov 12 16:21:45 1996 Joern Rennecke - - * jump.c (jump_optimize): Fix bug in Sep 23 change. - -Tue Nov 12 16:15:31 1996 Andrew Cagney (cagney@tpgi.com.au) - - * global.c (prune_references): Add missing symmetic CONFLICTP call. - -Tue Nov 12 14:34:40 1996 Philippe De Muyter - - * m68k.c (output_function_{pro,epi}logue): Save and restore - fp-registers only if TARGET_68881. - - * m68k/mot3300.h (ASM_OUTPUT_INTERNAL_LABEL): Prefix labels with "L%". - (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_CASE_LABEL): Likewise. - (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. - - * m68k/mot3300.h (TARGET_DEFAULT): Use MASK_68040_ALSO, not MASK_68040. - * m68k/next.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. - - * fixproto (std_files): Add sys/socket.h. - - * m68k.md (movqi): Emit 'st' for INTVAL & 255 == 255, not INTVAL == -1. - (seq,sne,sgt,sgtu,slt,sltu,sge,sgeu,sle,sleu): Allow "m" as operand 0. - -Tue Nov 12 14:17:45 1996 Paul Eggert - - * c-decl.c (grokdeclarator): Generate a warning if -Wimplicit, - unless a warning was already generated by -Wreturn-type. - -Tue Nov 12 14:11:02 1996 Pat Rankin - - * Make qsort callback routines conform to the ANSI/ISO standard. - * c-decl.c (field_decl_cmp): Use `const void *' arguments. - * global.c (allocno_compare): Likewise. - * reload1.c (hard_reg_use_compare, compare_spill_regs): Likewise. - (reload_reg_class_lower): Likewise. - * stupid.c (stupid_reg_compare): Likewise. - * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise. - (QTY_CMP_PRI, QTY_CMP_SUGG): New macros. - (qty_compare_1, qty_sugg_compare_1): Use them. - -Tue Nov 12 13:20:25 1996 Jim Wilson - - * fold-const.c (merge_ranges): In (+,-) case, treat subset specially - if lower bounds are the same. - -Tue Nov 12 13:10:01 1996 J.T. Conklin - - * m68k.md (addsi3): If TARGET_5200, use the lea insn to add small - constants to address registers. - (negsi2): Change into define_expand. - (negsi2_internal): Rename from old negsi2, changed condition - to !TARGET_5200. - (negsi2_5200): New insn. - (one_cmplsi2): Change into define_expand. - (one_cmplsi2_internal): Rename from old one_cmplsi2, changed - condition to !TARGET_5200. - (one_cmplsi2_5200): New insn. - (negdi2_5200): Corrected constraints. - (one_cmpldi2): Changed condition to !TARGET_5200. - - * m68k.c (m68k_align_loops_string, m68k_align_jumps_string): New vars. - (m68k_align_funcs_string, m68k_align_loops): Likewise. - (m68k_align_jumps, m68k_align_funcs): Likewise. - (override_options): New function. - * m68k.h (TARGET_OPTIONS): Added alignment options. - (MAX_CODE_ALIGN, ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE): - New macros. - (FUNCTION_BOUNDARY): Use value derrived from m68k_align_funcs - instead of constant. - - * m68k.c (output_function_{pro,epi}logue): Fix typo in last change. - -Tue Nov 12 09:26:51 1996 Torbjorn Granlund - - * i386.md (parallel inc/dec and branch-if-zero/nonzero): Use `+' in - constraint. - -Mon Nov 11 15:12:22 1996 Jason Merrill - - * libgcc2.c: Also define WEAK_ALIAS if ASM_OUTPUT_WEAK_ALIAS. - * mips/iris6.h (ASM_OUTPUT_WEAK_ALIAS): Define. - * varasm.c (assemble_alias): Use ASM_OUTPUT_WEAK_ALIAS. - - * dwarf2out.c (TYPE_USED_FOR_FUNCTION): Lose. - (gen_compile_unit_die): Only append -g with -g2 or better. - (scope_die_for): Don't emit any type info with -g1. - (gen_subprogram_die): Likewise. - (gen_decl_die): Likewise. - (dwarfout_file_scope_decl): Likewise. - (dwarfout_init): Likewise. - - * mips/iris6.h (TYPE_ASM_OP): Define. - (SIZE_ASM_OP): Define. - (ASM_WEAKEN_LABEL): Define. - (BSS_SECTION_ASM_OP): Define. - (ASM_OUTPUT_ALIGNED_LOCAL): Don't use ASM_DECLARE_OBJECT_NAME. - (ASM_OUTPUT_ALIGNED_BSS): Define. - (ASM_DECLARE_OBJECT_NAME): Redefine to emit .size directive. - (ASM_FINISH_DECLARE_OBJECT): Define. - (ASM_OUTPUT_DEF): Don't define. - -Fri Nov 8 20:38:51 1996 Jim Wilson - - * function.c (expand_function_end): Handle BLKmode structures returned - in registers. - -Fri Nov 8 20:27:07 1996 Jason Merrill - - * stor-layout.c (layout_record): Check for VAR_DECL instead - of TREE_STATIC. - - * varasm.c (assemble_variable): Do write out DWARF for - record-scope variables. - * toplev.c (rest_of_type_compilation): Do write out DWARF for - record-scope types. - - * dwarf2out.c (gen_enumeration_type_die): Set TREE_ASM_WRITTEN on a - complete enum type. - (gen_struct_or_union_type_die): Don't recurse between nested classes. - (gen_type_die): Write out nested classes by writing out their context. - -Fri Nov 8 17:40:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * emit-rtl.c (change_address): If MEMREF isn't changing, - return the old one. - - * expr.c (expand_assignment): Remove bogus resetting of alignment - to inner alignment. - (expand_expr, case COMPONENT_REF): Likewise. - -Fri Nov 8 16:31:31 1996 Stan Cox - - * reg-stack.c (compare_for_stack_reg, subst_stack_regs_pat): - Add support for float conditional move. - -Thu Nov 7 07:46:07 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (layout_record): Treat constant size as variable if - it overflows. - * fold-const.c (const_binop, case *_DIV_EXPR): Don't do special - sizetype case if a constant overflows. - (size_binop): Use integer_{zero,one}p instead of explicit test. - * tree.c (integer_{zero,one,all_ones,pow2}p, real_{zero,one,two}p): - Return 0 if TREE_CONSTANT_OVERFLOW. - -Wed Nov 6 17:53:33 1996 Torbjorn Granlund - - * i386.md (parallel inc and branch-if-zero/nonzero): Add two - new pattern variants. Change incrementing pattern to use incl/jnz. - -Wed Nov 6 09:46:10 1996 Stan Cox - - * i386.c (override_options): Set defaults for -march and -mcpu. - (output_float_compare): Use cc_status.flags to mark if this - comparison can be done with fcomi. - (output_fp_cc0_set): A conditional move may be in a PARALLEL. - - * i386.h (CC_FCOMI): Define - - * i386.md (sgt,sgtu,sge,sle,bgt,blt,bge,ble): Use CC_FCOMI - (movsicc_1,movhicc_1): Use correct size suffix. - (movsfcc_1,movdfcc_1): Cleanup default move case. - -Wed Nov 6 09:46:10 1996 J"orn Rennecke - - * i386.h (HARD_REGNO_MODE_OK): If long double isn't XFmode, can't - allow XFmode. - -Tue Nov 5 22:49:56 1996 J"orn Rennecke - - * sh.md (define_split for and_shl_scratch): - Use rtx_equal_p on the operands to find out which alternative is used. - * sh.c (gen_shl_and): Try to generate shorter constant for and. - -Mon Nov 4 19:13:52 1996 Jason Merrill - - * dwarf2out.c: Clean up unused variables. - Use ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL, shorten label names. - (loc_descriptor): Use reg_loc_descriptor. - (TYPE_DECL_IS_STUB): New macro. - (gen_decl_die): Use it. - (dwarfout_file_scope_decl): Use it. - -Mon Nov 4 10:23:46 1996 Michael Meissner - - * ginclude/va-ppc.h (__va_regsave_t,va_start,va_end): Wrap macro - and structures inside #ifndef __VA_PPC_H__ to allow reinclusion. - - * rs6000/rs6000.h (LEGITIMATE_SMALL_DATA_P): Don't allow -fpic or - TARGET_TOC. - (LEGITIMATE_LO_SUM_ADDRESS_P): Ditto. - (LEGITIMIZE_ADDRESS): Ditto. - - * rs6000/rs6000.md (movsi): Don't call elf_{high,low} if -fpic. - - * rs6000/cygwin32.h (STARTFILE_SPEC): Eliminate empty %{}. - -Sun Nov 3 15:56:35 1996 Michael Meissner - - * rs6000/sysv4.h (TARGET_TOC): Plain -fpic does not require a TOC. - ({MINIMAL_TOC,CONST}_SECTION_ASM_OP): -fpic should be treated like - -mrelocatable in these cases. - (ASM_OUTPUT_INT): Ditto. - (ASM_OUTPUT_SECTION_NAME): Ditto. - (ASM_OUTPUT_ALIGNED_LOCAL): Use sdata_section, not sbss_section. - -Fri Nov 1 19:57:13 1996 Jason Merrill - - * dwarf2out.c (based_loc_descr): Use DBX_REGISTER_NUMBER. The - "frame base" is just the frame or stack reg without an offset. - (gen_subprogram_die): Likewise. - (dwarfout_begin_function): Use DBX_REGISTER_NUMBER. - -Fri Nov 1 09:50:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (make_range): Don't merge unsigned case with range - containing upper bound; instead merge just with zero and convert - a range with no upper bound to opposite one with no lower bound. - (merge_ranges): In (+,-) case, don't treat subset specially if - the upper bounds are the same; fix typo in others case here. - -Thu Oct 31 20:12:13 1996 Jeffrey A Law (law@cygnus.com) - - * fold-const.c (make_range, case PLUS_EXPR): Correct - normalization of an unsigned range that wraps around zero. - -Thu Oct 31 21:06:37 1996 Jason Merrill - - * mips/t-iris6 (EXTRA_MULTILIB_PARTS): Define. - (EXTRA_PARTS): Don't define. - - * dwarf2out.c (gen_struct_or_union_type_die): Use AT_specification - for nested types defined outside their containing class. Lose - is_complete. - (gen_enumeration_type_die): Lose is_complete. - (gen_type_die): Lose is_complete. - (add_name_and_src_coords_attributes): Tweak. - (gen_subroutine_type_die): Use scope_die_for. - (gen_ptr_to_mbr_type_die): Likewise. - (gen_subprogram_die): Support AT_artificial. - (gen_variable_die): Likewise. - (dwarfout_file_scope_decl): Lose finalizing. - -Thu Oct 31 18:43:18 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * pa.c (emit_move_sequence): Refine previous change. - -Thu Oct 31 13:25:32 1996 Jim Wilson - - * crtstuff.c: Put HAS_INIT_SECTION ifdefs around Irix6 support. - - * tree.c (decl_function_context): Handle QUAL_UNION_TYPE. - - * calls.c (expand_call): Disable special handling for const calls - that return a PARALLEL rtx. - * expr.c (expand_expr, case CONSTRUCTOR): Don't use a PARALLEL - target. - -Thu Oct 31 11:45:00 1996 Michael Meissner - - * rs6000/t-{ppcgas,ppc,solaris} (EXTRA_MULTILIB_PARTS): Add - {e,s}crt{i,n,0}.o. - ({stmp,install}-crt): Delete, no longer used. - ({,INSTALL_}LIBGCC): Remove {stmp,install}-crt rule. - -Thu Oct 31 02:49:58 1996 Torbjorn Granlund - - * i386.md (parallel inc and branch-if-zero/nonzero): - Check for -1, not zero. - -Wed Oct 30 15:50:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (range_binop): Strip NOPs from result and - verify it's an INTEGER_CST. - (make_range, case BIT_NOT_EXPR): Fix typo in constant for PLUS_EXPR. - - * stor-layout.c (layout_record): Use HOST_WIDE_INT for size. - - * stmt.c (expand_asm_operands): Disallow matching constraints - on output and validate the numbers on inputs. - -Tue Oct 29 16:21:59 1996 Michael Meissner - - * gcc.c (process_command,main): Process -specs=file and -specs - file after reading the main specs file to allow the user to - override the default. - (DEFAULT_WORD_SWITCH_TAKES_ARG): Add specs to list. - (option_map): Ditto. - -Tue Oct 29 15:49:18 1996 Jason Merrill - - * Makefile.in (stmp-multilib): Pass $flags to s-m-sub in - MULTILIB_CFLAGS. - (stmp-multilib-sub): Build EXTRA_MULTILIB_PARTS. - ($(T)crt*.o): Add $(T), lose stamp-crt rule, use MULTILIB_CFLAGS. - (install-multilib): Install EXTRA_MULTILIB_PARTS. - -Mon Oct 28 20:09:39 1996 J"orn Rennecke - - * sh.md (shl_sext_ext): Don't accept simple left/right shift - variant. - * sh.c (EXT_SHIFT_SIGNED): New macro. - (shl_sext_kind, gen_shl_sext): try left shift - sign extend - - left shift - arithmetic right shift in case 2. - -Mon Oct 28 14:55:42 1996 Jim Wilson - - * configure (sh-*-*): Set float_format to sh. - * config/float-sh.h: New file. - -Mon Oct 28 14:26:08 1996 Ian Lance Taylor - - * mips/mips.h (RTX_COSTS): Add cases for SIGN_EXTEND and - ZERO_EXTEND. - - * m68k/lb1sf68.asm: Change # to IMM in udivsi3 __mcf5200__. - - * combine.c (simplify_rtx): Add some optimizations for TRUNCATE. - (expand_compound_operation): Add some optimizations for - ZERO_EXTEND. - -Mon Oct 28 14:11:20 1996 Gavin Koch - - * varasm.c (make_decl_rtl,assemble_variable): - Allow named sections for uninitialized variables. - -Mon Oct 28 13:08:51 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * pa.c (emit_move_sequence): If reload in progress, replace - reference to pseudo with reference to corresponding MEM. - - * c-typeck.c ({un,}signed_type): If can't do anything, call - signed_or_unsigned_type. - (signed_or_unsigned_type): If already right signedness, return. - -Mon Oct 28 13:05:26 1996 Stephen Williams (steve@icarus.com) - - * i960.h: Add specification for -Jx types. - * i960/t-960bare: Include multilib support for Jx types. - -Mon Oct 28 10:06:00 1996 Michael Meissner - - * rs6000/t-{ppc{,gas},solaris} (install-crt): Depend on - installdirs, not install-dir. - - * rs6000/sysv4.h (TARGET_TOC): -fpic does not use a TOC area. - -Mon Oct 28 09:07:42 1996 J"orn Rennecke - - * reload1.c (delete_output_reload): Don't use delete_insn - when deleting all stores into a replaced pseudo. - - * sh.md (movsf_ieq, movsf_ie): Merged the former into the latter. - Changed matching define_split appropriately. - (movsf): Changed appropriately. - (reload_insf) Define. - * sh.h (SECONDARY_INPUT_RELOAD_CLASS): Define. - -Mon Oct 28 08:38:23 1996 J"orn Rennecke - - * dsp16xx.h (ASM_OUTPUT_BYTE): adjust definition to actual type of - VALUE, which is HOST_WIDE_INT. - -Mon Oct 28 07:36:07 1996 Ulrich Drepper - - * ginclude/stddef.h: Make sure file is processed if some of the - known __need_* macros is defined. - -Sun Oct 27 21:37:59 1996 J.T. Conklin - - * m68k.c (output_function_prologue): Adjust SP then use movmel with - plain address indirect mode for TARGET_5200. - (output_function_epilogue): Disable moveml and use several movel's - instead for TARGET_5200. - (output_function_{pro,epi}logue): Use lea instruction to adjust - stack pointer for short displacements for TARGET_5200. - -Sun Oct 27 15:27:45 1996 Jeffrey A Law (law@cygnus.com) - - * fold-const.c (merge_ranges): Fix thinko/typo. - -Sat Oct 26 22:07:04 1996 Ian Lance Taylor - - * expr.c (convert_modes): Before returning a const_double for a - large unsigned value, zero extend an integer value if necessary. - -Sat Oct 26 15:24:55 1996 Philippe De Muyter - - * m68k/x-mot3300 (XCFLAGS): Disable native assembler's jump - optimization for expr.o and cp/decl.o. - -Sat Oct 26 14:04:09 1996 Ben Harris - - * m68k.c (output_function_prologue): Add REGISTER_PREFIX to stack - probe instruction. - -Sat Oct 26 13:59:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * explow.c (allocate_dynamic_stack_space): Delete reference to - nonexistant macro ALLOCATE_OUTGOING_ARGS. - - * next.h (CPP_PREDEFINES): Add -D_NEXT_SOURCE. - -Sat Oct 26 13:50:49 1996 Mark Mitchell (mitchell@centerline.com) - - * configure (i486-ncr-sysv4*): Use i386/sysv4gdb if stabs and gas. - -Sat Oct 26 12:20:35 1996 John F. Carr - - * configure: Support --with-cpu=* for SPARC. Or target default - values instead of adding them. - * sparc.c (cpu_default): Add entries for v8 and supersparc. - * sparc.h: Define TARGET_CPU values for v8 and supersparc. - -Sat Oct 26 11:38:01 1996 Kamil Iskra - - * collect2.c (dump_file): Call fclose() for opened files. - -Sat Oct 26 11:29:29 1996 J"orn Rennecke (amylaar@cygnus.co.uk) - - * jump.c (jump_optimize): Fix second error in last change. - - * svr3.h: Fix typo which makes comment text be non-comment. - -Fri Oct 25 16:18:39 1996 Michael Meissner - - * rs6000/t-winnt (LIBGCC1): Don't build libgcc1. - (EXTRA_PARTS): Build crti.o, crtn.o. - (stmp-crt): Remove old multilib support. - -Thu Oct 24 15:09:14 1996 Jim Wilson - - * fold-const.c (make_range, case PLUS_EXPR): Normalize an unsigned - range that wraps around 0. - -Thu Oct 24 14:37:17 1996 Ian Lance Taylor - - * mips.md: Change predicates for 64 bit arithmetic operations - so that they accept sign extended registers as operands. - (extendsidi2): Accept hi or lo as input. - * mips.c (movdi_operand, se_register_operand, - se_reg_or_0_operand, se_uns_arith_operand, se_arith_operand, - se_nonmemory_operand, se_nonimmediate_operand): New functions. - (mips_move_2words): Handle a SIGN_EXTEND source. - (print_operand): Handle a SIGN_EXTEND operand. - (mips_secondary_reload_class): Handle a SIGN_EXTEND rtx. - * mips.h: Declare new mips.c functions. - (PREDICATE_CODES): Add new functions. - -Thu Oct 24 07:41:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (make_range, comparison cases): When making range - for unsigned to merge in, use full range. - - * stor-layout.c (GET_MODE_ALIGNMENT): Delete definition; duplicate. - -Thu Oct 24 07:28:53 1996 J"orn Rennecke - - * reload1.c (emit_reload_insns): Check for second_reloadreg - in SECONDARY_OUTPUT_RELOAD_CLASS / PRESERVE_DEATH_INFO_REGNO_P case. - -Wed Oct 23 14:27:43 1996 Mike Stump - - * crtstuff.c (__do_global_dtors_aux): Allow finalization code to - be run more than once. - * libgcc2.c (__do_global_dtors): Ditto. - -Wed Oct 23 20:42:23 1996 Joern Rennecke - - * sh.c (dump_table): handle SFmode and DFmode. - (broken_move): handle simple PARALLEL. - (machine_dependent_reorg, pc-relative move generation): Likewise. - * sh.h (CONST_DOUBLE_OK_FOR_LETTER_P): always true for 'F' . - (LEGITIMATE_CONSTANT_P): accept SFmode and DFmode. - * sh.md (movdf_k, movsf_i, movsf_ie): new alternative for - pc-relative load. - (movsf_ieq): new define_insn with matching define_split. - (movsf): use it where appropriate. - (consttable_sf, consttable_df): new define_insns. - -Wed Oct 23 17:48:32 1996 Andreas Schwab - - * svr4.h (MAKE_DECL_ONE_ONLY): Fix typo in use of macro parameter. - -Wed Oct 23 17:46:13 1996 Pat Rankin - - * cexp.y (yylex): Cast string literal to U_CHAR* for lookup() call. - -Wed Oct 23 14:50:04 1996 Jason Merrill - - * stmt.c (expand_return): Expand cleanups. Make sure we get a - pseudo-reg and provide a target in the non-BLKmode case. Get return - type of fn properly. - -Wed Oct 23 14:16:06 1996 Ian Lance Taylor - - * reload.c (find_reloads): Handle any unary operator. - * recog.c (constrain_operands): Likewise. - - * mips.md: Remove extendsidi2 define_expand. - Rename extendsidi2_internal define_insn to extendsidi2, and add a - register to register case. - -Wed Oct 23 14:08:31 1996 Jim Wilson - - * a29k.c (a29k_makes_calls): New global variable. - (compute_regstack_size, a29k_compute_reg_names): New functions. - (output_prolog): Much code moved to two new functions. Use - a29k_makes_calls instead of makes_calls. - * a29k.h (ASM_DECLARE_FUNCTION_NAME): Call a29k_compute_reg_names. - - * calls.c (expand_call): In target code, move PARALLEL case above - target != case. - - * mips.c (block_move_load_store, block_move_sequence): Delete. - (block_move_loop): New parameter orig_dest. Call change_address to - create new MEM instead of gen_rtx. - (expand_block_move): New local orig_dest. Pass it to block_move_loop. - Call change_address to create new MEM instead of gen_rtx. - -Wed Oct 23 10:30:32 1996 J"orn Rennecke - - * loop.c (combine_givs): When combining a DEST_REG giv with its - only use, always set the benefit of the combined giv to that of - the DEST_REG giv. - - * emit-rtl (gen_lowpart_common): When converting a floating - point value into an integer, use WORD as (first) word. - - * combine.c (can_combine_p): When SMALL_REGISTER_CLASSES is defined, - avoid substituting a return register into I3. - - * optabs.c (emit_libcall_block): Before adding an REG_EQUAL note, - check that it will really apply to a single instruction. - (expand_binop, expand_fix): Likewise. - -Wed Oct 23 10:20:52 1996 Stephen L Moshier (moshier@world.std.com) - - * real.c (exact_real_inverse): New function, if REAL_ARITHMETIC. - * fold-const.c (exact_real_inverse): Likewise, if no REAL_ARITHMETIC. - (fold, case RDIV_EXPR): Turn divide by constant into multiplication - by the reciprocal, if optimizing and result is exact. - * real.h (exact_real_inverse): Declare. - -Wed Oct 23 00:12:52 1996 Torbjorn Granlund - - * expr.h (emit_store_flag_force): Declare. - -Tue Oct 22 18:32:20 1996 Jim Wilson - - * unroll.c (unroll_loop): Always reject loops with unbalanced blocks. - -Tue Oct 22 18:27:06 1996 Ian Lance Taylor - - * config/fp-bit.c (float_to_usi): Correct thinko: avoid a negative - shift. - (df_to_sf): Remember any discarded nonzero bits in the low order - guard bit. - - * ginclude/va-mips.h: Add support for -mips1 and -msoft-float when - using -mabi=eabi. - * mips/abi64.h (SETUP_INCOMING_VARARGS): When MIPS EABI, handle - TARGET_SINGLE_FLOAT or ! TARGET_FLOAT64 correctly when saving - floating point registers to the stack. - * mips/mips.c (mips_function_value): If TARGET_SINGLE_FLOAT, use - GP_RETURN for floating point types larger than 4 bytes. - -Tue Oct 22 09:43:49 1996 Geoffrey Noer - - * rs6000/cygwin32.h (LIB_SPEC): Add -lkernel32 all of the time, - and {user,gdi,comdlg}32 if -mwindows. - -Tue Oct 22 05:24:05 1996 Jason Merrill - - * dwarf2out.c (scope_die_for): Don't skip lexical blocks. - (gen_lexical_block_die): Call push_decl_scope. - (gen_subprogram_die): Never refer to the function symbol. - (dwarfout_begin_prologue): Likewise. - -Mon Oct 21 20:22:49 1996 Torbjorn Granlund - - * expmed.c (emit_store_flag_force): New function. - * optabs.c (expand_binop): Use it. - - * expr.c (do_store_flag): Don't check if target is 0 in code - emitting store flag as compare-branch. - -Mon Oct 21 17:58:33 1996 Ian Lance Taylor - - * mips.c (override_options): Correct typo (MASK_64BIT should - have been TARGET_64BIT). - -Mon Oct 21 13:58:54 1996 Jim Wilson - - * unroll.c (loop_comparison_code): New static variable. - (unroll_loop): Add check for loop_comparison_code - (loop_iterations): Set loop_comparison_code. - - * sh.c (gen_shl_sext): Add missing parameter to shl_sext_kind call. - - * mips.h (INITIAL_FRAME_POINTER_OFFSET): Delete. - - * loop.c (strength_reduce): Add check for ! bl->reversed to - auto_inc_opt code. - -Mon Oct 21 12:28:15 1996 J"orn Rennecke - - jump.c (jump_optimize): Fix bug in Oct. 14 change. - -Mon Oct 21 07:59:16 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (store_expr): Disable optimization of using convert - if exp's type is a subtype. - - * c-typeck.c (build_array_ref): If -Wchar-subscripts, also warn - in case when pointer is being indexed. - -Mon Oct 21 07:39:31 1996 J"orn Rennecke - - * jump.c (jump_optimize): Use emit_store_flag even if branches - are cheap, if the store is even cheaper. - -Sun Oct 20 20:01:09 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * reload1.c (reload_reg_free_p, reloads_conflict): RELOAD_OTHER - and RELOAD_FOR_OTHER_ADDRESS conflict. - - * i386.md (ffs[sh]i2): Add missing CC_STATUS_INIT. - -Fri Oct 18 13:32:13 1996 Michael Meissner - - * rs6000.md (float conversion insns): Generate correct code - if the bit 15 of rs6000_fpmem_offset is non-zero. - -Thu Oct 17 23:22:03 1996 Jason Merrill - - * dwarfout.c (data_member_location_attribute): Support binfos. - (output_inheritance_die): New fn. - (output_type): Use it. - - * dwarf2out.c (value_format): Split out from... - (output_value_format): Here. - (build_abbrev_table): Use value_format. - (size_of_locs): New fn. - (size_of_die): Don't assume a loc needs a 2-byte length. - (value_format): Likewise. - (output_die): Likewise. - -Thu Oct 17 14:46:14 1996 Ian Lance Taylor - - * mips.c (override_options): In 64 bit EABI mode, set TARGET_LONG64. - -Thu Oct 17 11:34:51 1996 Bob Manson - - * expr.c (do_jump): Conditionalize cleanups for the COND_EXPR case, - similarly to the way TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR are - handled. - -Thu Oct 17 01:20:16 1996 Jim Wilson - - * m68k.h (MASK_68040_ALSO): New macro. - (TARGET_SWITCHES): Option -m68020-40 includes MASK_68040_ALSO. - -Wed Oct 16 16:25:38 1996 Jason Merrill - - * dwarf2out.c (scope_die_for): Also support decls, add asserts. - (modified_type_die): Modified types all go under comp_unit_die. - (add_type_attribute): Just pass context_die through. - (various): Revert useless lookup_type_die change. - (gen_subprogram_die): Use scope_die_for. Call push_decl_scope. - (gen_inlined_subroutine_die): Call push_decl_scope. - (gen_struct_or_union_type_die): Likewise. - (gen_decl_die): Don't call push_decl_scope. - - * mips/iris6.h (*_SPEC): Replace enumeration of !mabi= with !mabi*. - (ASM_OUTPUT_{CON,DE}STRUCTOR): Enable. - (STARTFILE_SPEC): Support -mips4, -shared. - (ENDFILE_SPEC): Likewise. - (LIB_SPEC): Support -shared, avoid warning 84. - (LIBGCC_SPEC): Define. - (LINK_SPEC): Support -shared, remove -woff 84. - * mips/t-iris6 (EXTRA_PARTS): Add crtstuff. - * crtstuff.c: Support Irix 6. - * configure: Don't use collect2 for Irix 6. - * libgcc2.c (__main): Don't use any of this stuff if HAS_INIT_SECTION. - -Wed Oct 16 11:46:37 1996 Mike Stump - - * elxsi.h (CHECK_FLOAT_VALUE): Removed. - -Wed Oct 16 14:19:38 1996 Jim Wilson - - * iris6.h (CPP_PREDEFINES): Add -D_LONGLONG. - (CPP_SPECS): Remove -D_LONGLONG. - -Wed Oct 16 03:34:42 1996 Torbjorn Granlund - - * i386.md (parallel inc/dec and branch-if-zero/nonzero): New patterns. - -Tue Oct 15 22:28:11 1996 Ian Lance Taylor - - * mips.h (enum mips_abi_type): Add ABI_EABI. - (CPP_SPEC): Define __mips_soft_float if -msoft-float, and - __mips_eabi if -mabi=eabi. - (INITIAL_ELIMINATION_OFFSET, CUMULATIVE_ARGS, - GO_IF_LEGITIMATE_ADDRESS, CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT, - LEGITIMIZE_ADDRESS): Add support for MIPS EABI. - * mips/abi64.h (STACK_BOUNDARY, MIPS_STACK_ALIGN, - FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, SETUP_INCOMING_VARARGS): - Add support for MIPS EABI. - (FUNCTION_ARG_PASS_BY_REFERENCE): Define. - (FUNCTION_ARG_CALLEE_COPIES): Define. - * mips.c (mips_const_double_ok, function_arg_advance, - function_arg, function_arg_partial_nregs, override_options, - compute_frame_size): Add support for MIPS EABI. - (function_arg_pass_by_reference): New function. - * ginclude/va-mips.h: Add support for MIPS EABI. - -Tue Oct 15 19:10:08 1996 Jason Merrill - - * toplev.c (rest_of_type_compilation): Don't write out - DWARF for function-scope types yet. - (compile_file): Do send vars with no RTL to the DWARF code. - -Tue Oct 15 17:54:43 1996 Doug Evans - - * loop.c (strength_reduce): Avoid taking PATTERN of a label. - -Tue Oct 15 16:52:33 1996 Ian Lance Taylor - - * mips/iris6.h: (SUBTARGET_CPP_SIZE_SPEC): Define. - (SUBTARGET_CPP_SPEC): Remove definitions of __SIZE_TYPE__ and - __PTRDIFF_TYPE__, now in SUBTARGET_CPP_SIZE_SPEC. - -Tue Oct 15 11:19:17 1996 Lee Iverson - - * mips.h (CPP_SPEC): Restore -D_LANGUAGE_C for Objective C. - -Mon Oct 14 18:03:35 1996 Jason Merrill - - * dwarf2out.c (gen_decl_die): Do generate dies for classes with -g1. - (dwarfout_file_scope_decl): Likewise. - -Mon Oct 14 16:31:44 1996 Joern Rennecke - - * jump.c (jump_optimize): Check for if (...) { x = a; goto l; } x = b; - -Mon Oct 14 14:19:49 1996 Jason Merrill - - * dwarf2out.c (modified_type_die): Don't bother with AT_address_class. - (add_data_member_location_attribute): Handle getting a binfo. - (add_location_or_const_value_attribute): Handle a decl with no RTL. - (add_pure_or_virtual_attribute): Add AT_vtable_elem_location. - (add_name_and_src_coords_attributes): Only use DECL_ASSEMBLER_NAME - for staticp things. - (gen_subprogram_die): Set up AT_inline for abstract decls. - (gen_inheritance_die): New fn. - (gen_member_die): Also emit info for base classes. - -Sat Oct 12 00:07:00 1996 Doug Evans - - * fold-const.c (make_range): Handle NULL operand 0 - (like in BIND_EXPRs). - -Fri Oct 11 15:42:22 1996 Jason Merrill - - * toplev.c (rest_of_compilation): If we did a - save_for_inline_copying, reset DECL_ABSTRACT_ORIGIN for the - function when we're done. - - * toplev.c (main): DWARF works with C++ now. - - * dwarf2out.c (gen_subprogram_die): Disable MIPS_AT_has_inline - support for now. - -Fri Oct 11 14:31:10 1996 Torbjorn Granlund - - * dwarfout.c: (output_bound_representation): Fix typo in prototype. - -Fri Oct 11 12:19:21 1996 Ian Lance Taylor - - * mips.h (MIPS_AS_ASM_SPEC): Define. - (SUBARGET_MIPS_AS_ASM_SPEC): Define. - (GAS_ASM_SPEC): Define. - (TARGET_ASM_SPEC): Define. - (SUBTARGET_ASM_OPTIMIZING_SPEC): Define. - (SUBTARGET_ASM_DEBUGGING_SPEC): Define. - (SUBTARGET_ASM_SPEC): Define. - (ASM_SPEC): Rewrite to use above specs. - (SUBTARGET_CPP_SIZE_SPEC): Define. - (SUBTARGET_CPP_SPEC): Define. - (CPP_SPEC): Use above specs. Don't define _LANGUAGE_C if C++ or - Objective C. - (EXTRA_SPECS): Define. - (SUBTARGET_EXTRA_SPECS): Define. - * mips/dec-bsd.h (ASM_SPEC): Don't define. - (CPP_SPEC): Don't define. - * mips/dec-osf1.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SIZE_SPEC): Define. - * mips/elf64.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SPEC): Define. - * mips/gnu.h (TARGET_DEFAULT): Define. - (ASM_SPEC): Don't define. - * mips/iris3.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SPEC): Define. - * mips/iris4loser.h (ASM_SPEC): Don't define. - (SUBTARGET_MIPS_AS_ASM_SPEC): Define. - (SUBTARGET_ASM_OPTIMIZING_SPEC): Define. - * mips/iris5.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SPEC): Define. - * mips/iris6.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SPEC): Define. - (ASM_SPEC): Don't define. - (SUBTARGET_ASM_SPEC): Define. - (SUBARGET_MIPS_AS_ASM_SPEC): Define. - (SUBTARGET_ASM_DEBUGGING_SPEC): Define. - * mips/netbsd.h (ASM_SPEC): Don't define. - (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SPEC): Define. - * mips/osfrose.h (ASM_SPEC, ASM_FINAL_SPEC): Don't define. - (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SIZE_SPEC): Define. - (SUBTARGET_CPP_SPEC): Define. - * mips/sni-svr4.h (CPP_SPEC): Don't define. - (SUBTARGET_CPP_SIZE_SPEC): Define. - -Thu Oct 10 17:58:49 1996 Jason Merrill - - * mips/iris6.h (ASM_OUTPUT_SECTION_NAME): Define. - (DWARF_OFFSET_SIZE): Define. - - * dwarf2out.c (most everywhere): Support SGI/MIPS -mabi=64 by fixing - code which assumed that pointers are 4 bytes long, parameterizing - many sizes on DWARF_OFFSET_SIZE and using DELTA instead of DELTA4, - DATA instead of DATA4, FORM_ref instead of FORM_ref4. (DWARF_ROUND, - UNALIGNED_DOUBLE_INT_ASM_OP, UNALIGNED_WORD_ASM_OP, - ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_DATA, DW_FORM_data, - DW_FORM_ref): New macros. - (gen_variable_die): Only equate_decl_number_to_die if - decl is TREE_STATIC. - (get_AT): Fix thinko. - - * dwarf2out.c (constant_size): New fn. - (size_of_die): Use it instead of assuming 4 bytes; - usually we only need one. - (output_value_format, output_die): Likewise. - (build_abbrev_table): We need a new abbrev if the size - of the constant differs. - (dwarf_attr_name): Add new SGI/MIPS extensions. - (gen_subprogram_die): Support DW_AT_MIPS_has_inlines. - (gen_inlined_subroutine_die): Likewise. - -Thu Oct 10 16:38:58 1996 Ian Lance Taylor - - * mips.md (mov[sd]fcc): Use register_operand, not reg_or_0_operand, - for source predicates. - -Thu Oct 10 15:19:38 1996 Michael Meissner - - * rs6000.md (floatsidf2_load): For large stack frames, do not - generate an illegal memory reference. - (movdi, movdf define_splits): Fix code so that it works for either - big or little endian hosts generating code for either big or - little endian targets. - - (from Jim Wilson) - * rs6000.c (rs6000_save_toc_p): Delete global variable. - (rs6000_{save,restore}_machine_status): Do not save/restore it. - (rs6000_init_expanders): Do not initialize it. - (rs6000_stack_info): Always create TOC save space. - - * rs6000.md (NT indirect call insns): Do not set - rs6000_save_toc_p. - - * rs6000.h (rs6000_save_toc_p): Delete declaration. - -Wed Oct 9 18:06:54 1996 Ian Lance Taylor - - * mips.h (EMPTY_FIELD_BOUNDARY): Define as 32. - * mips/abi64.h (EMPTY_FIELD_BOUNDARY): Don't define. - - * mips/abi64.h (TARGET_DEFAULT, TARGET_LONG64, CPP_PREDEFINES, - CPP_SPEC): Move from here... - * mips/iris6.h: ...to here. - -Wed Oct 9 16:43:51 1996 Jim Wilson - - * configure (i[3456]86-dg-dgux): Use install-headers-cpio. - - * expr.c (store_constructor): Delete unnecessary increment. - -Wed Oct 9 16:29:22 1996 Gavin Koch - - * cccp.c (do_include): Treat ENOTDIR like ENOENT when an open fails. - -Wed Oct 9 16:26:57 1996 Paul Eggert - - * gcc.c (default_compilers): -ansi no longer implies -$ to cpp. - * c-lex.c (yylex): Treat `$' just like `_', except issue a - diagnostic if !dollars_in_ident or if pedantic. - * c-decl.c (dollars_in_ident): DOLLARS_IN_IDENTIFIERS is now Boolean. - (c_decode_option): -fdollars-in-identifiers is now independent - of -ansi, of -traditional, and of DOLLARS_IN_IDENTIFIERS. - * cexp.y (initialize_random_junk): Ignore DOLLARS_IN_IDENTIFIERS. - * cccp.c (dollars_in_ident): Remove; replaced by is_idchar['$']. - (main): Initialize is_idchar and is_idstart directly when given -$. - Ignore DOLLARS_IN_IDENTIFIERS. - (rescan): Diagnose $ in identifier if pedantic. - (initialize_char_syntax): Assume $ is allowed in identifier; - `main' will change this if -$ is given. - * cpplib.h (DOLLARS_IN_IDENTIFIERS): Remove. - * cpplib.c (cpp_options_init): Ignore DOLLARS_IN_IDENTIFIERS. - (parse_name): Diagnose $ in identifier if pedantic. - (cpp_handle_options): -traditional no longer messes with - dollars_in_ident. - * i386/dgux.h, m68k/apollo68.h (DOLLARS_IN_IDENTIFIERS): Remove. - * m88k.h, mips.h, nextstep.h, pa.h (DOLLARS_IN_IDENTIFIERS): Remove. - * vax/ultrix.h, vax/vms.h (DOLLARS_IN_IDENTIFIERS): Remove. - * convex.h (OVERRIDE_OPTIONS): Don't need to set - dollars_in_ident any more, since -ansi doesn't change it. - -Wed Oct 9 07:35:47 1996 Doug Evans - - * Allow prefix attributes in more places. - * c-parse.in: Update number of shift/reduce conflicts. - ({typed_declspecs,reserved_declspecs,declmods}_no_prefix_attr): New. - (current_declspecs): Initialize to NULL_TREE. - (fndef): Pass current_declspecs, not $1, to start_function. - (old_style_parm_decls): Renamed from xdecls. - (datadecl, declmods): Add references to new rules. - (setspecs): Call split_specs_attrs. - (absdcl1): Remove case with setattrs. - * c-common.c (split_specs_attrs): New function. - -Wed Oct 9 05:48:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * sdbout.c: Include defaults.h. - * Makefile.in (sdbout.o): Make dependency list match included files. - - * fold-const.c (range_test): Function deleted. - (range_binop, make_range, build_range_check): New functions. - (merge_ranges, fold_range_test): Likewise. - (fold_truthop): No longer call range_test. - (fold, case TRUTH_{AND,OR}{,IF}_EXPR): Call fold_range_test. - -Tue Oct 8 22:03:32 1996 Torbjorn Granlund - - * configure: Set cpu_type for pyramid. - -Tue Oct 8 21:54:04 1996 Jason Merrill - - * final.c (final_start_function): Call dwarfout_begin_prologue. - - * dwarf2out.c (pubname_*, arange_*): New data for .debug_pubnames - and .debug_aranges sections. - (add_pubname): New fn. - (size_of_pubnames): Reimplement. - (output_pubnames): Likewise. - (add_arange): New fn. - (size_of_aranges): Include function sections. - (output_aranges): Likewise. - (gen_variable_die): Call add_pubname. - (add_name_and_src_coords_attributes): Use DECL_ASSEMBLER_NAME for now. - (decl_start_label): Renamed from function_start_label. - (gen_subprogram_die): If weak or one_only, use a local label for - AT_low_pc. Call add_pubname and add_arange. - (dwarfout_begin_prologue): New fn. Start up FDE here. - (dwarfout_begin_function): Not here. - (get_AT): Split out. Look in specification and abstract_origin DIEs. - (get_AT_low_pc, get_AT_string, get_AT_flag, get_AT_unsigned, - get_AT_hi_pc): Use it. - (dwarfout_finish): Variables can produce pubnames, too. - -Tue Oct 8 19:35:40 1996 Torbjorn Granlund - - * m88k/dgux.h (CPP_SPEC): Avoid newline in the string. - - * final.c (final): Update insn_current_address before calling - final_scan_insn. - -Tue Oct 8 17:52:02 1996 Jim Wilson - - * unroll.c (unroll_loops): Set local_regno only if set_dominates_use - returns true. - (set_dominates_use): New function. - -Tue Oct 8 16:01:37 1996 Doug Evans - - * c-typeck.c (decl_constant_value): Delete test for ! TREE_PUBLIC. - -Tue Oct 8 10:36:44 1996 Jeffrey A Law (law@cygnus.com) - - * pa.c (hppa_legitimize_address): Remove test code accidentally left - in during last change. - -Mon Oct 7 19:55:02 1996 Jim Wilson - - * sched.c (schedule_block): Before scheduling, add code to make all - call used regs that are not fixed or global live when we see a - CALL_INSN. During scheduling, change existing code to use same test. - - * varasm.c (bss_section): Delete unused parameters. - -Mon Oct 7 16:24:21 1996 Jason Merrill - - * dwarf2.h: Add new SGI/MIPS attributes. - - * dwarf2out.c (*_separate_line_info_*): Parallel line number - information for functions defined in sections other than .text. - (size_of_line_info): Support it. - (output_line_info): Likewise. - (dwarfout_line): Likewise. - (gen_compile_unit_die): Don't add high/low_pc or stmt_list - attributes here. - (dwarfout_finish): Add them here if appropriate. - (remove_AT): free removed attribute properly. - (gen_type_die): Don't assume a nested type is complete. - (dwarfout_finish): Don't emit line info if it would be empty. - - * dwarfout.c (output_block): Don't emit a DIE for a body block. - (output_decls_for_scope): Don't increment next_block_number for the - outer block. - (output_decl): Start from the outer block, not - the first inner block since there can be more than one in C++. - (type_tag): Handle C++ TYPE_NAME. - (output_type): Fix handling of TYPE_METHODS. - (output_decl): Don't output a DIE for artificial typedefs. - -Mon Oct 7 15:47:29 1996 Michael Meissner - - * rs6000.md (movdi define_splits): Fix previous change to work - on both little and big endian hosts. - -Sun Oct 6 16:52:34 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (combinable_fsub): Don't return without a value. - -Sun Oct 6 14:05:39 1996 Michael Meissner - - * rs6000.md (mov{df,di} define_splits): Use split_double to - properly split CONST_DOUBLEs. - (movdi): Likewise. - -Sat Oct 5 08:43:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * i386/cygwin32.h (LIB_SPEC): Add support for -mwindows. - Always pass -lkernel32. - (LIBGCC_SPEC): Don't delete. - (STARTFILE_SPEC): Remove always-true conditionalization. - (LONG_DOUBLE_TYPE_SIZE): Use default. - -Fri Oct 4 17:22:53 1996 Jason Merrill - - * toplev.c (rest_of_type_compilation): Don't emit DWARF for member - types of a type we haven't emitted yet. - (compile_file): Still emit DWARF for pending tagged types. - - * final.c (final_scan_insn): Do emit DWARF labels for level 1 blocks. - - * dwarf2out.c (gen_subprogram_die): Start from the outer block, not - the first inner block since there can be more than one in C++. - (gen_lexical_block_die): Keep track of the block depth. - (gen_block_die): Don't emit a DIE for a body block. - (gen_inlined_subroutine_die): Don't emit anything for an - abstract instance. - (decls_for_scope): Don't increment next_block_number for the - outer block. - -Fri Oct 4 15:27:55 1996 J"orn Rennecke - - * sh.h (PRESERVE_DEATH_INFO_REGNO_P): Define. - - * sh.c (sfunc_uses_reg): New function. - (noncall_uses_reg, machine_dependent_reorg, final_prescan_insn): - Handle special functions like function calls for purposes of relaxing. - (noncall_uses_reg): Added some missing cases of registers - being used in non-call instructions. - -Fri Oct 4 10:51:40 1996 Jason Merrill - - * dwarf2out.c: Tear out backchaining brain damage. - (remove_AT, remove_children): New functions. - (modified_type_die): Call gen_type_die instead of backchaining. - (gen_subprogram_die): Don't generate a new specification DIE for - member functions defined in the class; use the declaration DIE instead. - (gen_struct_or_union_type_die): Support DW_AT_declaration. - (gen_type_die): Don't set TREE_ASM_WRITTEN on incomplete structs. - (gen_decl_die): Revert previous change; it's much simpler to emit - the class from rest_of_type_compilation. - -Fri Oct 4 09:54:21 1996 J"orn Rennecke - - * Make sure we have enough registers for the insns we recognize. - * i386.h (flag_omit_frame_pointer, outer_function_chain): Declare. - (current_function_calls_alloca): Likewise - (rtx_equal_function_value_matters): Likewise - (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Define. - - * i386.md (adddi3_1, subdi3_1): Insns renamed from adddi3 and subdi3; - added missing earlyclobbers. - (adddi3_1): Removed duplicates from commutativity. - (adddi3, subdi3): New define_expands. - (movsf, movsf_mem, movsf_normal, movdf, movdf_mem , movdf_mem+1): Take - number of used vs. available registers into account. - (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. - (adddi3_1, subsidi3, subdi3_1): Likewise. - (addsidi3_1, addsidi3_2, subsidi3): Need no generate function. - - * i386.c (asm_output_function_prefix): Don't use - ASM_DECLARE_FUNCTION_NAME if it is not defined. - -Fri Oct 4 07:01:55 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (layout_decl): Don't turn off DECL_BIT_FIELD - if DECL's alignment is less than its type. - -Thu Oct 3 19:42:30 1996 Jason Merrill - - * toplev.c (rest_of_type_compilation): Also do this for DWARF. - (compile_file): Don't try to write out DWARF for vars with no RTL. - -Thu Oct 3 18:31:28 1996 Doug Evans - - * ginclude/{stdarg.h,varargs.h}: Use #include "", not #include <>. - -Wed Oct 2 17:29:53 1996 Ian Lance Taylor - - * fixincludes: Add a hack to the big sed script to work around a - bug in the sed implementation on HP/UX 10.20. - -Wed Oct 2 16:53:56 1996 Jason Merrill - - * dwarf2out.c (modified_type_die): Don't generate redundant DIEs. - (gen_{array,pointer,reference,ptr_to_mbr}_type_die): Likewise. - (gen_{subroutine,string,set}_type_die): Likewise. - - * dwarf2out.c: Undo text_end_label, add_src_coords changes. - (addr_const_to_string): Fix typos. - (decl_class_context): New fn. - (get_AT_unsigned): New fn. - (gen_subprogram_die): Only emit src coords info for a specification - if they changed. - (gen_variable_die): Support DW_AT_declaration and DW_AT_specification. - (gen_decl_die): Avoid generating redundant DIEs for member functions - and variables. - -Wed Oct 2 11:22:50 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (EXTRA_CONSTRAINT): Loosen conditions for match of - 'Q' and 'T' while reload is running. - * pa.c (hppa_legitimize_address): Rework to generate more - indexed and scaled indexed addressing. - * pa.md (scaled indexed store): Add define_splits to undo - pessimizations created by hppa_legitimize_address for integer - stores. - - * pa.c (remove_useless_addtr_insns): New function. - (pa_reorg): Delete code to remove useless add,tr insns. - Instead call remove_useless_addtr_insns. - (output_function_prologue): Call remove_useless_addtr_insns - to catch any add,tr insns created by reorg. - - * pa.c (secondary_reload_class): Remove duplicate/useless code. - - * pa.h (PARSE_LDD_OUTPUT): Handle output from hpux10.20 "chatr". - -Tue Oct 1 17:23:32 1996 Jason Merrill - - * dwarf2out.c (text_end_label): New static. - (size_of_line_info): The final entry is smaller. - (output_aranges): Use TEXT_SECTION instead of TEXT_BEGIN_LABEL and - text_end_label instead of TEXT_END_LABEL. - (gen_compile_unit_die): Likewise. - (output_line_info): Likewise. Use a fixed advance for the last entry. - (dwarfout_init): Don't output starting labels. - (dwarfout_finish): Set up text_end_label. Don't output ending labels. - - (add_pure_or_virtual_attribute): Don't say pure virtual for now. - (type_tag): Handle C++ TYPE_NAME. - (gen_formal_parameter_die): Support DW_AT_artificial. - (gen_formal_types_die): Do emit the type for 'this'. - (gen_member_die): Fix handling of TYPE_METHODS. - (gen_decl_die): Do output a DIE for member function declarations. - Don't output a DIE for artificial typedefs. - - (add_member_attribute): Remove, not in DWARF-II. - (gen_array_type_die): Remove ref to add_member_attribute. - (gen_set_type_die, gen_entry_point_die, gen_enumeration_type_die, - gen_subprogram_die, gen_variable_die, gen_field_die, - gen_pointer_type_die, gen_reference_type_die, gen_ptr_to_mbr_type_die, - gen_string_type_die, gen_struct_or_union_type_die, - gen_subroutine_type_die, gen_typedef_die): Likewise. - - (get_AT_flag): New fn. - (add_src_coords_attributes): Split out... - (add_name_and_src_coords_attributes): From here. - (gen_subprogram_die): Support DW_AT_declaration and - DW_AT_specification. - - (gen_compile_unit_die): Don't emit full pathname for source file; - comment claimed that SGI required it, but they don't emit it either. - Append -g to producer rather than replacing it. - -Tue Oct 1 14:19:23 1996 Jim Wilson - - * gcc.c (used_arg): When call xmalloc for mswitches, pass 1 if - n_switches is zero. - -Mon Sep 30 17:46:26 1996 J"orn Rennecke - - * sh.c (gen_shl_and, gen_shl_sext): Use gen_lowpart to - generate rtx in the appropriate mode for zero/sign-extension. - Don't generate a zero bit shift. - (gen_shl_sext) Directly use gen_ashift instead of gen_ashrsi3. - -Mon Sep 30 17:17:56 1996 Ian Lance Taylor - - * fixinc.svr4: In math.h, redefine exception to __math_exception - for C++, to avoid conflict with . - * fixincludes: Likewise. - Fix check for class in math.h to not match fp_class. - -Mon Sep 30 17:15:19 1996 Jim Wilson - - * iris6.h (ASM_SPEC): Add -w. - (STARTFILE_SPEC): Add mips3 to n32 pathnames. - Add -L/usr/lib32/mips for n32 cases. - (ENDFILE_SPEC): Add mips3 to n32 pathnames. - -Mon Sep 30 13:20:31 1996 Ian Lance Taylor - - * genopinit.c (gen_insn): Look through the modes in reverse order, - to avoid stopping early on CC when EXTRA_CC_MODES is used. - - * fixincludes: Add extern "C" to on HP/UX. - -Sun Sep 29 12:39:18 1996 Michael Meissner - - * c-typeck.c (pointer_diff): Do not do default conversions when - doing the minus expression, in case restype is a short type. - -Sun Sep 29 11:22:10 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (build_complex): Add new argument, TYPE. - * tree.h (build_complex): Likewise. - * c-lex.c (yylex): Add new arg, TYPE, to call to build_complex. - * fold-const.c (const_binop): Likewise. - (fold, case CONJ_EXPR, COMPLEX_EXPR): Likewise. - * varasm.c (copy_constant, case COMPLEX_CST): Likewise. - * expr.c (expand_expr, case COMPONENT_REF): Don't try to directly - load a complex. - * recog.c (register_operand): Don't reject subreg of complex mode. - * emit-rtl.c (mark_user_reg): New function. - * function.c (assign_parms): Use it. - * stmt.c (expand_decl): Likewise, and simplify code. - - * tree.c (contains_placeholder): Return 1 for PLACEHOLDER_EXPR. - - * expr.c (store_expr): memset/bzero gets ptr_mode, not Pmode. - - * stmt.c (expand_asm_operands): Fix errors in previous patches. - - * x-linux: Simplify, but ensure headers aren't changed. - - * getpwd.c: No longer include direct.h for _WIN32. - - * configure (i[3456]86-*-isc*): Remove bogus echo. - (m68k-apple-aux*): a-ux.h renamed from aux.h. - (CC): Escape "$" char in "no-symlink" case for bash/cygwin32 bug. - - * Makefile.in (installdirs): Renamed from install-dir. - Create $(prefix) and $(exec_prefix) if doesn't exist. - (install-float): Reflect new name for installdirs. - (install-{common,info,man,libgcc,multilib,libobjc}): Likewise. - (install-{include-dir,assert-h,collect2}): Likewise. - - * reload1.c (gen_reload): Handle SUBREG in PLUS specially too. - Change calls to emit_move_insn to recursive calls. - - * stmt.c (fixup_gotos): When running undefined labels, if no cleanup - actions for this block, don't clear BEFORE_JUMP. - -Fri Sep 27 13:48:21 1996 Michael Meissner - - * c-decl.c (init_decl_processing): Create short int types before - creating size_t in case a machine description needs to use - unsigned short for size_t. - -Fri Sep 27 12:28:54 1996 Stan Cox - - * gcc.c (do_spec_1): Allow -A in %[Spec]. - - * i386.h (CPP_CPU_SPEC): New. Added for defining the submodel. - - * i386.c (asm_output_function_prefix, function_prologue, - ix86_expand_prologue): Make the routine that sets the GOT (when pic - is enabled) a function, to assist debugging. - - * i386.md (gen_prologue_get_pc): Call the function created above. - (divdf3): Added. - - * i386/dgux.h (CPP_PREDEFINES, CPP_SPEC): Reference CPP_CPU_SPEC. - Use svr4 assembler directive .backalign instead of .align. - (align to x bytes if it takes no more than y bytes to do so.) - - * i386/{aix386ng.h,dgux.h} (CPP_SPEC): Use %[cpp_cpu]. - * i386/{freebsd-elf,gas,isc,linux-aout}.h: Likewise. - * i386/{linux-oldld,linux,osfelf,osfrose,sco,sco4}.h: Likewise. - * i386/{sco4dbx,sco5,sol2,sysv3}.h: Likewise. - -Thu Sep 26 17:58:34 1996 Torbjorn Granlund - - * m68k.md (mulsidi3 matcher): Change predicate const_int_operand - to const_sint32_operand. Get rid of bogus range condition. - -Thu Sep 26 17:12:00 1996 Jim Wilson - - * Makefile.in (stmp-int-hdrs): Don't cd to srcdir before copying - header files to objdir. - -Wed Sep 25 21:22:57 1996 Jeffrey A Law (law@cygnus.com) - - * h8300.h (FIRST_PSEUDO_REGISTER): Bump up by one. - (ARG_POINTER_REGNUM): Likewise. - (FIXED_REGISTERS): Add entry for MAC register. - (CALL_USED_REGISTERS< REG_ALLOC_ORDER): Likewise. - (HARD_REGNO_NREGS): Handle MAC register. - (HARD_REGNO_MODE_OK< REGNO_OK_FOR_BASE_P): LIkewise. - (REGISTER_NAMES): Likewise. - (enum reg_class): New MAC_REGS register class. - (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Corresponding changes. - (REG_CLASS_FROM_LETTER): LIkewise. - (REGISTER_MOVE_COST): Make copies to/from the MAC register - expenseive. - (CONDITIONAL_REGISTER_USAGE): Define. - * h8300.md (movsi_h8300hs): Renamed from movsi_h8300h. - Handle moves to/from the MAC register. - (mac): Two new patterns to use the mac instruction. - - * h8300.c (notice_update_cc): Fix CC_SET case. - (restore_compare_p): Remove unused function. - * h8300.md: Handle "set" vs "set_zn_c0" correctly. - (bCC patterns): No longer need to call restore_compare_p. - - * h8300.c (get_shift_alg): Fix HImode ASHIFTRT by 13 or 14 bits. - -Wed Sep 25 18:52:19 1996 Joern Rennecke - - * sh.md (insv): New pattern. - -Wed Sep 25 16:47:26 1996 Doug Evans - - * sparc/t-sunos41 (MULTILIB_{OPTIONS,DIRNAMES,MATCHES}): Create - multilib versions of -fpic and -fPIC. - (TARGET_LIBGCC2_CFLAGS): Comment out. - - * sparc.c (print_operand): Handle new codes H/L. - * sparc.md (lo_sum_di_sp32): Add little endian support. - (adddi3_sp32,subdi3_sp32,mulsidi3_sp32,const_mulsidi3): Likewise. - (umulsidi3_sp32,const_umulsidi3,smacdi,umacdi,anddi3_sp32): Likewise. - (iordi3_sp32,xordi3_sp32,negdi2_sp32): Likewise. - -Wed Sep 25 15:32:35 1996 Jim Wilson - - * expmed.c (store_bit_field): Don't make flag_force_mem disable insv - for memory operands. - - * function.c (instantiate_decl): Always store addr back into x. - -Tue Sep 24 19:37:00 1996 Jim Wilson - - * reload.c (push_secondary_reload): Do strip paradoxical SUBREG - even if reload_class is CLASS_CANNOT_CHANGE_SIZE. Change reload_mode - to mode in SECONDARY_MEMORY_NEEDED and get_secondary_mem calls. - - * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, - emit after RELOAD_FOR_OUTPUT, in reverse order of reload number, - but not separately. - -Tue Sep 24 18:13:07 1996 Michael Meissner - - * expr.c (emit_group_load): Allow target to be smaller than source. - -Tue Sep 24 17:40:39 1996 Doug Evans - - * m68k/a-ux.h: Renamed from aux.h because of MSDOS. - -Tue Sep 24 08:33:53 1996 David S. Miller (davem@caip.rutgers.edu) - - * tree.c (copy_node): Fix error in last change. - -Tue Sep 24 08:29:03 1996 James G. Smith - - * gcc.c (used_arg): Fix multilib_matches parsing to not corrupt - entry parameter. - -Tue Sep 24 08:22:18 1996 J"orn Rennecke - - * loop.c (get_condition): Use rtx_equal_p to compare rtx. - -Tue Sep 24 08:14:01 1996 Christian Iseli - - * integrate.c (expand_inline_function): Avoid creating paradoxical - subreg wider than BITS_PER_WORD as inlined function result. - -Tue Sep 24 08:00:15 1996 Paul Eggert - - * cccp.c (struct directive, directive_table, handle_directive): - pass_thru now 1 for #define and 2 for #pragma. - (handle_directive): When deciding whether to suppress comment at end - of directive, ignore tabs and spaces after comment. Remove redundant - limit test. With -dD -C, copy comment when isolating definition. - (skip_to_end_of_comment): With -C, don't copy newline at end - of C++ comment. - - * fixinc.ptx, fixinc.svr4, fixincludes: Insert newlines just before - end of 'sed' command strings if last 'sed' command is 'a' or 'i'. - -Tue Sep 24 07:28:58 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * toplev.c (PREFERRED_DEBUGGING_TYPE): If no debugging formats are - supported, set to NO_DEBUG. - (main): Don't do setting of PREFERRED_DEBUGGING_TYPE here. - -Mon Sep 23 22:45:15 1996 Sean McNeil - - * rs6000/vxppc.h, sparc/vxsim.h: New files. - * configure (powerpc-*-vxworks*, sparc-*-vxsim*): New targets. - * objc/objc.h (BOOL): Define BOOL as int for VxWorks. - -Mon Sep 23 21:23:27 1996 Klaus K"ampf (kkaempf@progis.de) - - * explow.c (promote_mode, case REFERENCE_TYPE): New case. - -Mon Sep 23 21:15:43 1996 Andreas Schwab - - * c-decl.c (finish_struct): Check PCC_BITFIELD_TYPE_MATTERS value. - - * dbxout.c (dbxout_symbol): Fix forgotten case in last change: - check DECL_ARTIFICIAL also when using the short cut way. - -Mon Sep 23 15:55:24 1996 David S. Miller (davem@caip.rutgers.edu) - - * tree.c (copy_node): Abort if don't know size of node. - - * tree.c (build1): Clean up initialization of OBSTACK. - -Mon Sep 23 15:35:33 1996 Jason Merrill - - * Makefile.in (stmp-multilib): Depend on $(LANG_LIB2FUNCS). - - * dbxout.c (dbxout_function): Don't check DECL_SECTION_NAME before - calling dbxout_function_end. - -Mon Sep 23 14:41:12 1996 J"orn Rennecke - - * combine.c (can_combine_p): Even if SMALL_REGISTER_CLASSES, - know lifetime not extended if all_adjacent set. - - * stmt.c (expand_asm_operands): Handle '+' constraint. - * cse.c (fold_rtx): Fold inside ASM_OPERANDS. - - * expr.c (expand_increment): If postincrement for MEM can't use add - directly, load address in reg and enqueue increment and store of reg. - - * loop.c (check_dbra_loop): Don't assume label must be second part of - if_then_else in condjump. - - * jump.c (jump_optimize): In no-nop move deletion, don't - test PRESERVE_DEATH_INFO_REGNO_P; instead test if optimization is - performed. - Check for REG_UNUSED note on to-be deleted insn before searching for - preceding instruction to delete note from. - If PRESERVE_DEATH_INFO_REGNO_P is true for SREG, replace INSN with USE. - - * reload1.c (reload): Initialize the previous_offset fields - in reg_eliminate before calling setup_save_areas. - - * reload1.c (emit_reload_insns): Declare and set this_reload_insn. - - * expr.c (var_rtx): New function. - (expand_expr, case COND_EXPR): Also use target if same as singleton. - -Mon Sep 23 14:22:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * recog.c (constrain_operands): Don't test clobbered constraints. - - * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, - put in front of anything previous for that output, but not separately. - -Sun Sep 22 21:06:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-common.c (decl_attribtes, case A_SECTION): Allow for static - local variable. - -Sun Sep 22 11:30:27 1996 Christian Iseli (christian.iseli@di.epfl.ch) - - * expr.c (convert_move): Replace explicit checks for FP extend ops - with use of can_extend_p. - Add missing tests for FP trunc operations. - -Sun Sep 22 11:20:02 1996 Pat Rankin - - * dwarfout.c (DWARF_VERSION): Define as 1 if not already defined. - * dwarf2out.c (DWARF_VERSION): Likewise. - -Sun Sep 22 11:12:20 1996 Joern Rennecke - - * c-decl.c (pushdecl): Check new declaration actually conflicts before - warning about implicit external vs. static declarations. - - * loop.c (combine_givs): Improve combining DEST_REG giv with - its only use. - -Sun Sep 22 10:50:03 1996 Scott Christley - - * Create consistent mechanism for memory allocation and release - so that garbage collection routines can be easily subsititued - for the ANSI standard malloc, realloc, free, etc. - * objc/archive.c: Replace use of __objc_xmalloc and free - with objc_malloc and objc_free. - * objc/hash.c: Replace use of __objc_xcalloc and free - with objc_calloc and objc_free. - * objc/init.c: Replace use of free with objc_free. - * objc/misc.c (objc_malloc): Renamed from __objc_xmalloc. - (objc_realloc): Renamed from __objc_realloc. - (objc_atomic_malloc): New function. - (objc_valloc): New function. - (objc_calloc): Renamed from __objc_calloc. - (objc_free): New function. - * objc/objc-api.h (_objc_malloc): New function pointer. - (_objc_atomic_malloc, _objc_valloc): Likewise. - (_objc_realloc, _objc_calloc, _objc_free): Likewise - * objc/objc-list.h: Replace use of __obj_xmalloc and free - with objc_malloc and objc_free. - * objc/objects.c: Likewise. - * objc/sarray.c: Replace use of __objc_xmalloc and free - with objc_malloc and objc_free. - * objc/sarray.h (__objc_xmalloc, __objc_xrealloc): Delete. - * objc/selector.c: Replace use of __objc_xcalloc, __objc_xrealloc, - and __objc_xmalloc with objc_calloc, objc_realloc, and objc_malloc. - * objc/thr-decosf1.c: Replace use of __objc_xmalloc and free - with objc_malloc and objc_free. - * objc/thr-irix.c, objc/thr-mach.c, objc/thr-os2.c: Likewise. - * objc/thr-posix.c, objc/thr-pthreads, objc/thr-single: Likewise. - * objc/thr-solaris.c, objc/thr-win32.c, objc/thr.c: Likewise. - -Sun Sep 22 05:26:01 1996 Jason Merrill - - * configure: Set up LANG_LIB2FUNCS and LANG_EXTRA_HEADERS. - * Makefile.in (libgcc2.a): Include LANG_LIB2FUNCS. - (USER_H): Add LANG_EXTRA_HEADERS. - (LANG_LIB2FUNCS): New macro. - (LANG_EXTRA_HEADERS): New macro. - (stmp-int-hdrs): Don't hardwire ginclude. - (stamp-objlist): Don't depend on Makefile. - -Sat Sep 21 18:00:10 1996 Stephen L Moshier (moshier@world.std.com) - - * alpha.md (alpha_swapped_comparison_operator pattern): Fix asm - operand typo in last change. - -Sat Sep 21 07:11:51 1996 J"orn Rennecke - - * defaults.h (ASM_OUTPUT_LABELREF): Provide default definition - if not already defined. - * 1750a.h (USER_LABEL_PREFIX): Define instead of ASM_OUTPUT_LABELREF. - * a29k.h, alpha.h, convex.h, dsp16xx.h, elxsi.h, fx80.h: Likewise. - * gmicro.h, h8300.h, i386/sun386.h, i860.h, i960.h, ns32k.h: Likewise. - * pdp11.h, pyr.h, romp.h, sh.h, sparc.h, spur.h, tahoe.h: Likewise. - * vax.h, we32k.h: Likewise. - * i386/att.h (USER_LABEL_PREFIX): Redefine, not ASM_OUTPUT_LABELREF. - * i386/bsd.h, i386/lynx.h, i386/sco5.h, i860/fx2800.h: Likewise. - * m68k/3b1.h, m68k/mot3300.h, m68k/tower-as.h, m68k/tower.h: Likewise. - * ptx4.h, sparc/pbd.h, svr3.h, svr4.h: Likewise. - * i386/osfrose.h, m88k.h (USER_LABEL_PREFIX): Redefine. - * nextstep.h (USER_LABEL_PREFIX): Redefine. - (ASM_OUTPUT_LABELREF) Use USER_LABEL_PREFIX. - * arm/aout.h, mips.h (ASM_OUTPUT_LABELREF): Delete. - * rs6000/lynx.h (USER_LABEL_PREFIX): Undefine. - * rs6000.h, rs6000/win-nt.h (USER_LABEL_PREFIX): Define. - -Thu Sep 19 00:05:53 1996 Jason Merrill - - * configure: Move i[3456]86-*-gnu* case after linux and don't - treat linux-gnu like other gnu systems. - -Wed Sep 18 20:51:09 1996 Jason Merrill - - * cplus-dem.c (demangle_template): Fix handling of address args. - (gnu_special): Handle type_info stuff. - -Wed Sep 18 17:57:55 1996 Patrik Lantto (patrik@opq.se) - - * jump.c (jump_optimize): Insert conditional move after jump - insn instead of before. - -Wed Sep 18 17:33:36 1996 Richard Henderson - - * alpha.h (PREDICATE_CODES): Add alpha_swapped_comparison_operator. - * alpha.c (alpha_swapped_comparison_operator): New function. - (print_operand): Support unsigned codes for %D, %c, and %d. - * alpha.md: Add pattern for b%c with swapped comparisons with 0. - Delete three unnamed cmp patterns that are strict subsets of it. - - * alpha.c (alpha_emit_set_long_const): Save one instruction - when -O2 and high word == low word. - -Tue Sep 17 22:46:15 1996 Jason Merrill - - * i386/unix.h (ASM_OUTPUT_MI_THUNK): Handle functions - returning an aggregate. - - * varasm.c (supports_one_only): New function. - (make_decl_one_only): Likewise. - * svr4.h (MAKE_DECL_ONE_ONLY): Define. - * tree.h (DECL_ONE_ONLY): New macro. - - * varasm.c (assemble_variable): Fix setting of - first_global_object_name. - (assemble_start_function): Likewise. - -Tue Sep 17 19:42:39 1996 Doug Evans - - * i386/t-cygwin32 (winnt.o): Compile properly. - -Tue Sep 17 15:47:20 1996 Ian Lance Taylor - - * Add support for VR5000, and finish MIPS4 support. - * mips.h (enum processor_type): Add PROCESSOR_R5000. - (gen_conditional_move): Declare. - (CONDITIONAL_REGISTER_USAGE): Mark ST_REGS as fixed if not - HARD_FLOAT, or if mips_isa < 4. - (FIRST_PSEUDO_REGISTER): Change to 76. - (FIXED_REGISTERS): Add condition code registers. - (CALL_USED_REGISTERS): Likewise. - (ST_REG_LAST): Change to 74. - (RAP_REG_NUM): Change to 75. - (ST_REG_P): Look for any condition code register. - (REG_CLASS_CONTENTS): Update for new condition code registers. - (RTX_COSTS): Add cases for R5000. - (REGISTER_MOVE_COST): Add cases for condition code registers. - (PREDICATE_CODES): Add "const_float_1_operand". - (EXTRA_CC_MODES): Remove. - (EXTRA_CC_NAMES): Remove. - (SELECT_CC_MODE): Remove. - (REGISTER_NAMES): Add entries for new condition code registers. - (DEBUG_REGISTER_NAMES): Likewise. - (ADDITIONAL_REGISTER_NAMES): Remove FPSW_REGNUM. - * mips.md (cpu attribute): Add R5000. - (function units): Add cases for the R5000. - (madd.d): Only available if TARGET_DOUBLE_FLOAT. - (msub.d, nmadd.d, nmsub.d): Likewise. - (recip.d, recip.s, rsqrt.d, rsqrt.s): New define_insn patterns. - (movcc): New pattern to move condition code values. - (reload_incc, reload_out_cc): New define_expand patterns. - (lwxc1, ldxc1, swxc1, sdxc1): Several new define_insn patterns. - (various): Replace CC_FP with CC. - (branch_fp_ne, branch_fp_eq): Match any condition code register. - (branch_fp_ne_rev, branch_fp_eq_rev): Remove. - (seq_df, slt_df, sle_df): Match any condition code register. - (sgt_df, sge_df, seq_sf, slt_sf, sle_sf): Likewise. - (sgt_sf, sge_sf): Likewise. - (sne_df, sne_sf): Remove. - (FP conditional moves): Match any condition code register. - Require TARGET_HARD_FLOAT and, if appropriate, - TARGET_DOUBLE_FLOAT. - (movsicc): Just call gen_conditional_move. - (movdicc, movsfcc, movdfcc): New define_expand patterns. - * mips.c (mips_reg_names): Add condition code registers. - (mips_sw_reg_names): Likewise. - (mips_regno_to_class): Likewise. - (const_float_1_operand): New function. - (mips_move_1word): Treat CCmode as SImode. Handle move from - ST_REG to GR_REG if mips_isa >= 4. Only permit move from GR_REG - to ST_REG is mips_isa < 4. - (gen_conditional_branch): Rewrite. Just use CCmode, not extra - condition modes. - (gen_conditional_move): New function. - (override_options): Recognize vr5000. Look for just CCmode, not - extra condition modes. If mips_isa >= 4, permit CCmode in GR_REGS - and FP_REGS. - (print_operand): Handle %Z. - (mips_secondary_reload_class): Require a data register to copy a - value out of a condition code register. Require a floating point - register to copy a value into a condition code register. - -Tue Sep 17 15:10:29 1996 Joern Rennecke - - * sh.md: New define_splits to recombine output from LEGITIMIZE_ADDRESS. - * sh.h (LEGITIMIZE_ADDRESS): Typo fixes (x -> X). - -Mon Sep 16 23:00:35 1996 Jim Wilson - - * configure (build_broken_install): Renamed from host_broken_install. - Set from build not host. - (build_install_headers): Renamed from host_install_headers. Set from - build not host. - -Mon Sep 16 22:38:55 1996 Stu Grossman (grossman@critters.cygnus.com) - - * configure (m68k-*-coff*): Use dbx debug format by default. - * gcc.c (link_command_spec): Move -T to end of link command line. - * m68k/m68kemb.h (LINK_SPEC, SUBTARTGET_SWITCHES): Delete. - (LIB_SPEC): Define to just -lc. - (STARTFILE_SPEC): Define to empty. - -Mon Sep 16 13:12:27 1996 J"orn Rennecke - - * sh.c (ext_shift_insns, ext_shift_amounts): new arrays. - (gen_ashift_hi, gen_shifty_hi_op, shl_and_kind): new functions. - rtx_equal_function_value_matters: declare. - (shl_and_length, shl_and_src_length, gen_shl_and): new functions. - (shl_sext_kind, shl_sext_length, gen_shl_sext): new functions. - * sh.md (ashlhi3_k, lshrhi3_m): new insn pattern. - (lshrhi3, shl_sext_ext, shl_sext_sub): - new insn pattern with matching define_split. - (and_shl_scratch): Likewise, but also with unnamed variants. - -Sat Sep 14 17:05:07 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * gcc.c (convert_filename): Don't start looking for '.' until - after last directory separator. - - * i386.md (clrstrsi): Correct check for constant size. - - * Based on code by sac@cygnus.com. - * i386/cygwin32.h (CHECK_STACK_LIMIT): Make consistent with MD file. - * i386.c ({function,ix86_expand}_prologue): Use __alloca to allocate - stack if desired and beyond CHECK_STACK_LIMIT in size. - * i386.h ({MASK,TARGET}_STACK_PROBE): New macros. - (TARGET_SWITCHES): Add -mstack-arg-probe. - * i386.md (allocate_stack{,_worker}): New patterns. - -Fri Sep 13 18:23:18 1996 Joel Sherrill - - * sparc/lb1spc.asm (.div, .rem): Fixed typo so sign is returned - correctly. TOPBITS was 2 and should have been 4. - -Thu Sep 12 21:51:56 1996 Jim Wilson - - * mips.md (call_value_multiple_internal0): Change from define_insn to - define_expand. - -Thu Sep 12 19:22:14 1996 Doug Evans - - * sparc.md (move_pic_label_si): Operand one is label_ref now. - * sparc.c (emit_move_sequence): Pass label_ref to - gen_move_pic_label_si to not lose flags. - -Wed Sep 11 12:10:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * Makefile.in (GCC_PASSES): Add $(exeext) to names. - (FLAGS_TO_PASS): Add CLIB. - (c-pragma.o): Add dependencies on except.h, function.h, defaults.h. - -Tue Sep 10 22:25:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (i[3456]86-*-cygwin32): Use xm-cygwin32.h and xm-i386.h. - Set fixincludes to Makefile.in and objc_thread_file to win32. - * i386/xm-cywin32.h: Don't include xm-i386.h. - * i386/x-cygwin32, rs6000/x-cygwin32 (STMP_FIXPROTO, exeext): New defs. - - * gcc.c (HAVE_EXECUTABLE_SUFFIX): New macro. - (convert_filename): New function. - (process_command, case 'o'): Call it. - (process_command, default case): Likewise; delete old code. - -Tue Sep 10 21:08:43 1996 Torbjorn Granlund - - * i386.md (decrement_and_branch_until_zero matcher): Fix typo. - -Tue Sep 10 19:04:19 1996 Jim Wilson - - * mips.c (mips_move_2words): Rewrite 32 bit shifts as 16 bit shifts. - -Tue Sep 10 10:39:07 1996 Jeffrey A Law (law@cygnus.com) - - * pa/pa-gas.h (DBX_DEBUGGING_INFO): Remove all #define - and #undef statements related to debugging information. - * pa/pa-hpux.h, pa-hpux7.h: Likewise - * pa.c (override_options): Disable "-g" and issue a warning - if it's used when !TARGET_GAS. - -Mon Sep 9 17:57:49 1996 Doug Evans - - * sparc.h ({MASK,TARGET}_FPU_SET): Define. - (TARGET_SWITCHES): Record if -m{,no-}fpu passed. - * sparc.c (sparc_override_options): Don't clobber explicit - -m{,no-}fpu setting with cpu default. - -Mon Sep 9 15:57:57 1996 Joel Sherrill - - * configure (mips64orion-*-rtems*): New target. - * mips/rtems64.h: New file. - -Sat Sep 7 22:07:53 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (store_field): If storing a record on big endian targets, - set up so we store the high-order bits. - (expand_expr, case COMPONENT_REF): Likewise for loads. - -Thu Sep 5 14:59:47 1996 J"orn Rennecke - - * sh.h (LEGITIMIZE_ADDRESS): Define nonempty. - -Thu Sep 5 10:43:36 1996 Jeffrey A Law (law@cygnus.com) - - * pa.md (movsi, movdi, movsf patterns): Handle - 'R' constraints as needed. - -Wed Sep 4 17:13:28 1996 Bob Manson - - * except.c: (add_partial_entry): New routine. - (expand_start_try_stmts): Moved from cp/except.c. - (expand_start_all_catch): Move functionality of expand_end_try_stmts - here. - -Wed Sep 4 12:30:02 1996 Mike Stump - - * except.c (emit_unwinder): Ensure that CLOBBER and USE insns come - last, if present. - -Tue Sep 3 12:01:43 1996 Ian Lance Taylor - - * configure (sh-*-elf*): New target. - * sh/elf.h: New file. - -Fri Aug 30 17:52:26 1996 Jim Wilson - - * dwarf2out.c (gen_formal_types_die): Delete extra argument from - gen_type_die call. - -Fri Aug 30 15:40:40 1996 James G. Smith - - * mips/elf64.h: Allow MULTILIB_DEFAULTS to be defined - before this file is included. - -Fri Aug 30 15:00:06 1996 Stan Cox - - * i386.md: (movsicc,movhicc): Allow reload from memory. - - * i386.c (override_options): Don't thread the prologue if profiling. - -Fri Aug 30 15:00:06 1996 James Hawtin - - * i386/t-sol2 (gcrt1.o): Added for profiling Solaris 2 - * i386/sol2.h (STARTFILE_SPEC): New. - * i386/gmon-sol2.c, i386/sol2-gc1.asm: New files. - -Thu Aug 29 22:08:03 1996 Jim Wilson - - * except.c (add_eh_table_entry): Multiply realloc size by sizeof int. - -Thu Aug 29 15:15:31 1996 Jeffrey A Law (law@cygnus.com) - - * pa.md (fcmp patterns): Don't try to eliminate useless add,tr - insns here. - * pa.c (pa_reorg): Do elimination of useless add,tr insns here instead. - (print_operand, case 'y'): Remove this code. - -Wed Aug 28 16:19:34 1996 Doug Evans - - * toplev.c (print_single_switch): Ultrix fprintf returns 0 for success. - - * toplev.c (main): Rewrite -g parsing. - -Mon Aug 26 16:15:49 1996 Fred Fish - - * Makefile.in (objc-parse.y): Fix typo in name of temp file. - -Mon Aug 26 14:08:37 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (mark_all_temps_used): Fix error in last change. - -Sun Aug 25 22:27:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (mark_all_temps_used): New function. - -Fri Aug 23 11:34:57 1996 Michael Meissner - - * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Fixes to make -fPIC - really the same as -mrelocatable. - (ASM_SPEC): Pass -K PIC to the assembler if -fpic/-fPIC. - - * rs6000/sol2.h (ASM_CPU_SPEC): Remove passing -K PIC to the - assembler if -fpic/-fPIC. - - * bi-{arity,opcode,opname}.c (fancy_abort): Define, so that - -Dabort=fancy_abort works again. - -Thu Aug 22 11:39:34 1996 Michael Meissner - - * rs6000/t-ppcgas ({stmp,install}-crt): Only build and install the - eabi ecrt[in].o object files in eabi multilib directories, only - build and install the solaris scrt[in0].o object files in solaris - directories. - (MULTILIB_MATCHES): Remove matches for solaris, linux to other - switches. - -Tue Aug 20 18:49:55 1996 Michael Meissner - - * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): If -mrelocatable or - -mrelocatable-lib, don't make read-only sections, since if there - are pointers to be fixed up, the assembler complains. - -Mon Aug 19 18:42:13 1996 Doug Evans - - * sparc.h ({MASK,TARGET}_LITTLE_ENDIAN): Define. - (LIBGCC2_WORDS_BIG_ENDIAN): Add little endian support. - * sparc/sp64-elf.h ({CPP,ASM,LINK}_SPEC): Add little endian support. - (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. - ({BYTES,WORDS}_BIG_ENDIAN): Likewise. - * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. - ({CPP,ASM,LINK}_SPEC): Add little endian support. - ({BYTES,WORDS}_BIG_ENDIAN): Likewise. - * sparc/t-splet (MULTILIB_{OPTIONS,DIRNAMES}): Likewise. - - * sparc/lynx-ng.h (CPP_SPEC): Use %(cpp_cpu). - -Sat Aug 17 15:23:39 1996 Geoffrey Noer - - * i386/cygwin32.h (CPP_PREDEFINES): Define _WIN32, not WIN32. - Define only __CYGWIN32__, not CYGWIN32 or __CYGWIN32. - * rs6000/cygwin32.h (CPP_PREDEFINES): Likewise. - * cccp.c (absolute_filename): Drive specifiers make the pathname - absolute in cygwin32. - * choose-temp.c: Delete !defined(_WIN32) condition when including - sys/file.h (NO_SYS_FILE_H is still used). - * gcc.c: Change ifndef _WIN32 to ifndef NO_SYS_FILE_H when deciding - whether to include sys/file.h. - (execute): -pipe is supported for cygwin32. - * getopt.c: Change win32 test from WIN32 to _WIN32. - * pexecute.c: Update test for win32 (&& ! cygwin32). - * protoize.c: Likewise. - (kill): Delete decl. - * toplev.c: Update test for win32 (&& ! cygwin32). - * ginclude/stdarg.h: Change __WIN32__ to _WIN32. - * ginclude/varargs.h: Likewise. - * ginclude/va-ppc.h: Likewise. - -Fri Aug 16 16:02:09 1996 Michael Meissner - - * rs6000.c (rs6000_got_register): Make sure pic_offset_table_rtx - allocated, even if current_function_uses_pic_offset_table set. - -Fri Aug 16 15:56:04 1996 J. Kean Johnston - - * i386/sco5.h (CLASS_LIKELY_SPILLED_P): Deleted. - (STARTFILE_SPEC): Insert crtbegin.o in correct place, and correct - versions of values-X?.o. - (SWITCH_TAKES_ARG): Extend DEFAULT_SWITCH_TAKES_ARG, not replace. - (CPP_SPEC): Add -Di386, and correctly include extra directories. - Define HAVE_ATEXIT in ELF mode for global destructors. - -Thu Aug 15 16:42:44 1996 Doug Evans - - * sparc.c (label_ref_operand): New function. - (emit_move_sequence): Pass label_ref to gen_move_label_di to not - lose flags. - * sparc.md (move_label_di): Operand one is label_ref now. - * genattrtab.c (write_test_expr): Allow label_ref in match_dup. - - * sys-protos.h (gethostid): Make return type `int' ifdef __alpha__. - * gen-protos.c: Delete support for SYS_PROTO_OVERRIDES. - * alpha.h (SYS_PROTO_OVERRIDES): Delete. - -Thu Aug 15 17:36:09 1996 Mike Stump - - * libgcc2.c (__throw): New routine. - (__eh_pc): New data object for exception handling. - - * except.c (eh_saved_pc): New object so we can call - assemble_external. - (expand_internal_throw_indirect): Call assemble_external for __eh_pc. - (end_eh_unwinder): Likewise. - (init_eh): Initialize eh_saved_pc. - -Thu Aug 15 13:02:42 1996 Mike Stump - - * arm.h (RETURN_ADDR_RTX): Define. - - * expr.c (expand_builtin_return_addr): Fix order of parameters. - -Wed Aug 14 19:48:00 1996 Torbjorn Granlund - - * stmt.c (expand_return): In code for doing scc with jumps, - stick to default handling if we have corresponding scc pattern. - -Wed Aug 14 10:31:28 1996 Jeffrey A Law (law@cygnus.com) - - * pa.c (override_options): Treat TARGET_FAST_INDIRECT_CALLS - just like TARGET_NO_SPACE_REGS. - (output_millicode_call): Likewise. - * pa.h (TARGET_FAST_INDIRECT_CALLS): Define. - (TARGET_SWITCHES): Add "fast-indirect-calls". - * pa.md: Treat TARGET_FAST_INDIRECT_CALLS just like - TARGET_NO_SPACE_REGS in various call/millicode call patterns. - - * pa.c (print_operand): Use the right comparison operator - for reversed EQ and NE comparisons. - - * pa.h (OUTPUT_MI_THUNK): Define. - -Wed Aug 14 11:40:49 1996 Michael Meissner - - * ginclude/va-ppc.h: Add Windows NT support. - * ginclude/{varargs,stdarg}.h: For PowerPC Windows NT, include - va-ppc.h, instead of using the default handling. - -Tue Aug 13 18:30:10 1996 Ian Lance Taylor - - * fixincludes: Remove duplicate volatile from sig_atomic_t in AIX - sys/signal.h - -Tue Aug 13 16:51:37 1996 Jim Wilson - - * i960-coff.h (LIB_SPEC): Undef. - - * sh.h (PROFILE_BEFORE_PROLOGUE): Define. - -Tue Aug 13 11:36:02 1996 Michael Meissner - - * gcc.c (set_spec,process_command): Dump and load the compiler - version number in the specs file. - - * rs6000.c (output_toc): Fix last change, so that it doesn't use - an uninitialized variable if -mminimal-toc. - (output_prolog): Increment probe_labelno after last use. - - * rs6000/t-ppcgas (MULTILIB_*): Build far fewer multilib - libraries. Build all libraries with -mrelocatable-lib and - -mno-eabi. Build special Linux and Solaris libraries. - * rs6000/eabi{,aix,le}.h (MULTILIB_DEFAULTS): Adapt to changes in - t-ppcgas. - * rs6000/(linux,sol2).h (MULTILIB_DEFAULTS): Ditto. - * rs6000/{sysv4,sysv4le} (MULTILIB_DEFAULTS): Ditto. - -Tue Aug 13 11:36:02 1996 Jeffrey A Law (law@cygnus.com) - - * rs6000.c (handle_mac_pragma): Initialize "psize". - -Mon Aug 12 18:14:35 1996 Jim Wilson - - * gcc.c (used_arg): Initialize cnt to zero. - -Mon Aug 12 14:03:16 1996 Jim Wilson - - From Mike Stump: - * sh.c (regno_reg_class): Change entry 23 from NO_REGS to GENERAL_REGS. - (initial_elimination_offset): New variable live_regs_mask. Add - code to handle RETURN_ADDRESS_POINTER_REGNUM. - * sh.h (RAP_REG, RETURN_ADDRESS_POINTER_REGNUM): Define. - (ELIMINABLE_REGS): Add RETURN_ADDRESS_POINTER_REGNUM support. - (RETURN_ADDR_RTX): Define. - (REGISTER_NAMES): Add rap. - - * iris5.h (DOLLARS_IN_IDENTIFIERS): Undefine. - - * m68kemb.h (LIB_SPEC): Always emit -lc. - -Mon Aug 12 12:30:25 1996 Michael Meissner - - * rs6000.c (rs6000_got_register): Test variable - current_function_uses_pic_offset_table to see whether or not a GOT - register has been created already. - - * Makefile.in (multilib.h): Move to stamp-mlib. - (stamp-mlib): Use move-if-change to conditionally update - multilib.h. Pass MULTILIB_EXTRA_OPTS to genmultilib. - (STAGESTUFF): Add stamp-mlib. - (mostlyclean): Delete tmp-mlib.h. - - * genmultilib: Take a fifth argument to add options to pass on to - all multilib builds. Restructure output so that we pass the - synonym switches and extra arguments separately, and not - exponentially slow down genmultilib. - - * gcc.c (toplevel): Rearrange multilib support so that we support - passing the synonyms separately from the normal switches. Add - support for passing additional switches to be used on all multilib - builds. Dump and restore the value of MULTILIB_DEFAULTS so that - gcc cover programs for other targets will correctly chose the - appropriate multilib directory. - (setspec,process_command,main): Ditto - (used_arg,default_arg,print_multilib_info): Ditto. - -Mon Aug 12 07:46:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_builtin, case BUILT_IN_SETJMP): Add test - and call for nonlocal_goto_receiver pattern. - * stmt.c (expand_end_bindings): Likewise. - - * stmt.c (expand_asm_operands): Fix off-by-one error when - scanning constraints. - -Sun Aug 11 22:48:02 1996 Jason Merrill - - * expr.c (store_expr): Handle COND_EXPR cleanups like expand_expr. - -Sun Aug 11 22:42:36 1996 J"orn Rennecke - - * optabs.c (expand_abs): When OP0 and TARGET are the same - pseudo register, it is safe to use TARGET. - - * local-alloc.c (reg_equiv_replace): New variable. - (update_equiv_regs): Set reg_equiv_replacement for all REG_EQUIV - notes encountered or generated. - -Sun Aug 11 22:27:14 1996 Scott Christley - - * objc/hash.c (hash_is_key_in_hash): Function somehow got lost. - -Sun Aug 11 21:43:15 1996 Andreas Schwab - - * ginclude/stddef.h (__need_wint_t): Move #undef to right place. - -Sun Aug 11 17:46:22 1996 J"orn Rennecke - - * c-decl.c (finish_struct): If pedantic, also warn if struct/union - has no named members. - -Sun Aug 11 17:32:52 1996 Joel Sherrill - - * i386/rtems.h: Renamed from i386/i386-rtems.h - * i960/rtems.h: Renamed from i960/i960-rtems.h - * m68k/rtems.h: Renamed from m68k/m68k-rtems.h - * rs6000/rtems.h: Renamed from rs6000/powerpc-rtems.h - * sparc/rtems.h: Renamed from sparc/sparc-rtems.h - * config/t-rtems: New file. - * configure (i386-*-rtems*): Added t-rtems to tmake_file. - Renamed i386/i386-rtems.h to i386/rtems.h. - (i960-*-rtems*): Added t-rtems to tmake_file. - Renamed i960/i960-rtems.h to i960/rtems.h. - Added original tm.h file and dbxcoff.h. - (m68k-*-rtems*): Added t-rtems to tmake_file. - Renamed m68k/m68k-rtems.h to m68k/rtems.h. - (powerpc-*-rtems*): Added t-rtems to tmake_file. - Renamed rs6000/powerpc-rtems.h to rs6000/rtems.h. - (sparc-*-rtems*): Added t-rtems to tmake_file. - Renamed sparc/sparc-rtems.h to sparc/rtems.h. - -Fri Aug 9 16:05:13 1996 Stan Cox - - * i386.md: (untyped_call) Avoid SIGFPE. - - * i386.c (output_float_compare): Don't try to initialize - aggregate local variable; use assignment statements instead. - - * i386.h (RTX_COSTS): rtx_cost should pass two parameters. - - * i386/go32.h (ASM_OUTPUT_SECTION_NAME): New. - -Fri Aug 9 16:00:11 1996 Jim Wilson - - * winnt.c (gen_stdcall_suffix): Round parameter size to PARM_BOUNDARY. - -Thu Aug 8 17:42:35 1996 Michael Meissner - - * rs6000.c (output_toc): If we are emitting a reference to a - vtable, don't put in the section name, just use the symbol. - -Wed Aug 7 19:03:36 1996 Jim Wilson - - * sh.md (casesi_jump): New pattern. - (casesi): Generate RTL to match it. - -Wed Aug 7 14:10:07 1996 Jason Merrill - - * ginclude/stddef.h (NULL): Use __null for G++. - -Tue Aug 6 17:37:53 1996 Michael Meissner - - * rs6000/sysv4.h (STACK_BOUNDARY): Always define as 64. - (ABI_STACK_BOUNDARY): Define as 64/128 based on the -mno-eabi - switch. - - * rs6000.c (rs6000_stack_info): Use ABI_STACK_BOUNDARY, not - STACK_BOUNDARY. Define ABI_STACK_BOUNDARY as STACK_BOUNDARY #ifndef. - -Tue Aug 6 14:29:43 1996 Doug Evans - - * gen-protos.c (overrides): New static local. - (add_hash,parse_fn_proto): New static functions. - (main): Add prototypes from SYS_PROTO_OVERRIDES to hash table before - parsing sys-protos.h. Reserve entry 0 in std_protos. - * alpha.h (SYS_PROTO_OVERRIDES): Define. - -Mon Aug 5 16:53:36 1996 Doug Evans - - * sparc/t-splet (MULTILIB_OPTIONS): Add mbroken-saverestore. - (MULTILIB_DIRNAMES): Add brknsave. - - * stor-layout.c (layout_record): Correct overflow test for 0 sized - fields. - -Mon Aug 5 16:12:19 1996 Jim Wilson - - * alpha.c (alpha_output_filename): When emitting stabs, don't - disable them if using GNU as. - (alpha_output_lineno): Likewise, when not using GNU as. - - * sh.c (arith_reg_operand): Reject SUBREG of an invalid hard reg. - - * sparc/lite.h (aoutos.h): Don't include it. - * configure (sparclite-*-aout*): Add aoutos.h to tm_file. - -Sat Aug 3 23:13:55 1996 Jeffrey A Law (law@cygnus.com) - - * combine.c (rtx_equal_for_field_assignment_p): Check for - get_last_value returning (CLOBBER (CONST_INT 0)). - -Sat Aug 3 20:19:14 1996 Jim Wilson - - * i960.md (subsi3+1): Handle case where first operand is constant - but second operand is not. - - * m68k/vxm68k.h (WCHAR_TYPE_SIZE): Undef, then define to 16. - -Fri Aug 2 15:46:19 1996 Jeffrey A Law (law@cygnus.com) - - * pa/pa-hpux.h (LINK_SPEC): Don't link in PA1.1 specific - libraries when creating shared libraries. - * pa/pa-hpux9.h, pa/pa-hpux10.h: Likewise. - -Fri Aug 2 13:36:42 1996 Stan Cox - - * i386.c (output_float_compare): fcomi should be followed by the - correct conditional jump instead of fcom/pfstsw/and/jne - (override_options): Added -mbranch-cost to set BRANCH_COST. - - * i386.md (sgt+1,slt+1,sge+1,sle+1,bgt+1,blt+1,bge+1,ble+1,bleu+4) - Added TARGET_CMOVE check for fcomi. - (movsicc_1+1,movhicc_1+1): Added to handle the general case. - - * i386.h (i386_branch_cost, i386_branch_cost_string): Added. - -Fri Aug 2 11:53:55 1996 Brendan Kehoe - - * sparc/vxsparc.h (CPP_PREDEFINES): Add `-DCPU=SPARC'. - -Thu Aug 1 23:56:01 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (ASM_OUTPUT_INT): Remove all hacks for exception table. - -Thu Aug 1 10:08:14 1996 Torbjorn Granlund - - * m68k.h (RTX_COSTS, case PLUS): Get operand order right. - -Wed Jul 31 15:06:46 1996 Doug Evans - - * sparc.md (negtf2,abstf2): Fix v9 case. - -Wed Jul 31 09:49:25 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (ASM_OUTPUT_INT): Use an 'E%' prefix for items in - the exception table if TARGET_GAS && ! TARGET_PORTABLE_RUNTIME. - -Tue Jul 30 15:37:31 1996 Jim Wilson - - * i386/cygwin32.h (dbxcoff.h): Include. - (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): - Move definitions before include of dbxcoff.h. - (ASM_OUTPUT_SOURCE_LINE, DBX_OUTPUT_MAIN_SOURCE_FILE_END): Delete. - (DBX_BLOCKS_FUNCTION_RELATIVE, DBX_FUNCTION_FIRST): Delete. - -Tue Jul 30 15:03:53 1996 Torbjorn Granlund - - * i960.md (eq reg (const_int 0)): New pattern. - -Tue Jul 30 11:15:44 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (RETURN_ADDR_RTX): Offset is -20 from the frame, not +20! - -Mon Jul 29 12:16:17 1996 Jeffrey A Law (law@cygnus.com) - - * pa.h (GO_IF_LEGITIMATE_ADDRESS): Fix thinko in last change. - -Fri Jul 26 18:19:47 1996 Doug Evans - - * dwarfout.c (output_bound_representation): Fix typo. - -Thu Jul 25 16:00:10 1996 Mike Stump - - * expr.c (do_jump, case TRUTH_ORIF_EXPR): Ensure end of an - exception region comes after its start. - (do_jump, case TRUTH_ANDIF_EXPR): Likewise. - -Thu Jul 25 13:36:42 1996 Stan Cox - - * i386.c (output_float_compare): Added support for Pentium Pro - fcomi instruction which sets EFLAGS instead of FPU Status Word. - -Wed Jul 24 21:48:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cse.c (canon_hash, cse_insn): MEM is not unchanging if it is - in the frame (since the temp slot might be reused). - -Wed Jul 24 17:34:06 1996 J"orn Rennecke (amylaar@cygnus.com) - - * sh.md (branch_true, branch_false, inverse_branch_true): Express - tests of the T bit as comparisons against zero, rather than one. - (inverse_branch_false, beq, bne, bgt, blt, ble, bge, bgtu): Likewise. - (bltu, bgeu, bleu, casesi): Likewise. - -Wed Jul 24 15:58:06 1996 Stan Cox - - * i386.md: (mov{sf,df,xf}cc{,_1}): New patterns for P6 FP cmove. - * i386.c (put_condition_code, print_operand, output_fp_cc0_set): - Support fcmov suffixes. - -Wed Jul 24 10:53:38 1996 Jeffrey A Law (law@cygnus.com) - - * pa.c (move_operand): Relax "mode" test. Allow scaled - indexed addressing modes. - (output_fp_move_double): Tweak output strings to work with updated - 'F' and 'M' output modifiers. - (print_operand): Collapse 'F' and 'M' into a single hunk of code. - For auto-increment modes output "s,ma" and "s,mb". - For scaled indexing modes output "x,s" - For other addresses, output nothing for 'M' and "s" for 'F'. - * pa.h (EXTRA_CONSTRAINT): Don't accept scaled indexed addresses - for 'Q' and 'T'. Do accept scaled indexed addresses for 'R'. - (GO_IF_LEGITIMATE_ADDRESS): Accept scaled indexed addresses - for SFmode and DFmode. - * pa.md: Remove all scaled indexed load patterns. - (movsi patterns): Accept scaled indexed addresses in some - cases. Update output strings for updated 'M' and 'F' output modifiers. - (movhi, movqi, movsf, movdf, movdi patterns): Likewise. - -Tue Jul 23 23:10:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.h (struct tree_int_cst): Add field for TREE_CST_RTL. - * varasm.c (decode_addr_const, output_constant_def): AllowINTEGER_CST. - -Tue Jul 23 16:42:09 1996 Jim Wilson - - * sh.c (reg_unused_after): Handle JUMP_INSN inside a sequence. - -Tue Jul 23 16:33:25 1996 Mike Stump - - * Make exception handling work better when optimizations are on. - * except.c, except.h: New files. - * Makefile.in (OBJS): Add except.o. - (except.o): Add. - (stmt.o, final.o): Add except.h. - * rtl.c (note_insn_name): Add NOTE_INSN_EH_REGION_{BEG,END}. - * rtl.h: Likewise. - * arm.h (MASK_RETURN_ADDR): Define. - * pa.h (MASK_RETURN_ADDR, RETURN_ADDR_RTX): New macros. - * sparc.h (DOESNT_NEED_UNWINDER): Define if not doing a flat function. - * mips.h (RETURN_ADDR_RTX): Improve. - * vax.h (RETURN_ADDR_RTX): Improve. - * toplev.c (rest_of_compilation): Use find_handler_labels. - (main, interim_eh{,_hook}): Remove interim_eh_hook support. - (flag_exceptions): New flag; also add to table. - (compile_file): Emit the exception table in the backend now. - * final.c (final_scan_insn): Support ASM_OUTPUT_EH_REGION_{BEG,END}. - (final_scan_insn): Redo handler labels, implement - NOTE_INSN_EH_REGION_BEG and NOTE_INSN_EH_REGION_END and use them - instead of CODE_LABELs. - (final): Add call to check_handler_labels. - * libgcc2.c (L_eh): Add support for EH_TABLE_LOOKUP. - * sparc.md (return): Add a reference to the return address register. - * flow.c (find_basic_blocks): Add support for handler_labels. - * loop.c (find_and_verify_loops): Likewise. - * jump.c (jump_optimize): Likewise. - Add call to check_handler_labels. Add call to exception_optimize. - * sched.c (sched_analyze): Smuggle exception region notes around. - (unlink_notes, reemit_notes, schedule_block): Likewise. - (sched_analyze): Add extra element since we remove two at a time. - * integrate.c (save_for_inline_copying): Add support for exception - regions. - (expand_inline_function): Likewise. - (function_cannot_inline_p): Don't inline functions that have EH - regions before NOTE_INSN_FUNCTION_BEG. - (finish_inline): Use FIRST_FUNCTION_INSN, not NEXT_INSN. - * function.c (expand_start_all_catch): New function. - * function.h: Add exception handling support information. - * expr.c (expand_expr, {defer,expand}_cleanups_to, do_jump): Transform - interim_eh_hook into calls to expand_ehregion_{start,end}. - * stmt.c (expand_{decl_cleanup,cleanups}): Likewise. - (init_stmt_for_function): Call init_eh. - (save_stmt_status): Call save_eh_status. - (restore_stmt_status): Call restore_eh_status. - * expr.h (throw_libfunc): Add. - * optabs.c (throw_libfunc): Initialize. - * print-rtl.c (print_rtx): Add support for exception regions. - * rs6000.c (EXCEPTION_SECTION): Define. - * output.h (exception_section): Declare. - * varasm.c (exception_section): Define. - * i386.c, i960.c, rs6000.c: Include except.h for function.h. - * c-pragma.c, emit-rtl.c, expr.c, final.c, flow.c: Include except.h. - * function.c, integrate.c, jump.c, loop.c, objc-act.c: Likewise. - * stmt.c, stor-layout.c, toplev.c, tree.c, varasm.c: Likewise. - -Tue Jul 23 12:32:54 1996 Michael Meissner - - * rs6000.c (rs6000_replace_regno): Set pic_offset_table_rtx so - that other phases will use the PIC register instead of the - placeholder. - - * rs6000.md (movsi_got*): Eliminate -fPIC code, keep -fpic code. - (movsi): Only call movsi_got if -fpic, not -fPIC. - - * sysv4.h (OVERRIDE_OPTIONS): Improve error messages. Always set - -msdata=data by default, even if -fpic/-fPIC/-mrelocatable. Treat - -fPIC the same as -mrelocatable-lib and vica versa. - - * t-ppcgas: (MULTILIB_*): Use -mreloctable-lib, instead of - -mrelocatable. Map Solaris into mcall-sysv-noeabi case. Build - -mrelocatable-lib libraries under non-eabi case. When linking, if - -fpic, -fPIC, or -shared, link in the -mrelocatable-lib libraries. - -Mon Jul 22 19:34:20 1996 Jim Wilson - - * iris6.h (ASM_SPEC): Change {% to %{. - - * dwarf2out.c (output_call_frame_info): Change FDE CIE offset to - be section name rather than 0. - (gen_subprogram_die): Only emit DW_AT_external if origin is NULL. - Only call equate_decl_number_to_die if origin is NULL. - (dwarfout_begin_function): In code that computes offset of frame - pointer, change 4 to UNITS_PER_WORD. - - * combine.c (undo_all): Clear previous_undos field. - -Mon Jul 22 19:10:45 1996 Ian Lance Taylor - - * configure: Don't change target_alias to target in Makefile. - -Sat Jul 20 09:28:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * dwarfout.c (output_bound_representation): Treat default case - as variable bounds, then look inside for SAVE_EXPR. - - * mips.h (INITIALIZE_TRAMPOLINE): Use `_flush_cache'; flush data - cache too. - -Sat Jul 20 09:24:13 1996 Marco Walther (Marco.Walther@mch.sni.de). - - * configure (mips-sni-sysv4): New target. - * mips/sni-gas.h, mips/sni-svr4.h, mips/x-sni-svr4: New files. - -Fri Jul 19 17:44:13 1996 Stan Coxs - - * i386.md: (leave): Clobbers esp and ebp. - - * i386.h: (TARGET_USE_Q_REG): Support inline strlen on PentiumPro - -Fri Jul 19 15:56:18 1996 Ian Lance Taylor - - * m68k/t-m68kbare (MULTILIB_OPTIONS): Add m5200. - (MULTILIB_EXCEPTIONS): Define. - * m68k/lb1sf68.asm: Add MCF5200 support. - * m68k.md (adddi_sexthishl32): Set condition to !TARGET_5200. - (subdi_sexthishl32, ashrdi3, ashrhi3): Likewise. - (negdi2): Change into define_expand. - (negdi2_internal): Rename from old negdi2; condition now !TARGET_5200. - (negdi2_5200): New insn. - * m68k.c (output_function_prologue): Don't use add.w if TARGET_5200. - (output_function_epilogue): Likewise. - - * m68k.md (movqi): Remove complex cases which move between address reg - and memory; rely on secondary reloads instead. - -Fri Jul 19 12:22:50 1996 Brendan Kehoe - - * fixproto (std_files): Add utime.h. - -Fri Jul 19 10:59:46 1996 Jeffrey A Law (law@cygnus.com) - - * m68k/m68kemb.h: Remove '\' at EOF. - -Fri Jul 19 09:59:00 1996 Joel Sherrill - - * m68k/coff.h (STARTFILE_SPEC): Add #undef before definition. - -Fri Jul 19 09:44:45 1996 J.T. Conklin - - * m68k.h (LEGITIMATE_INDEX_P): Coldfire does not have scale - by 8 addressing modes. - - * m68k-none.h: Use MASK_* macros instead of explicit constants. - -Fri Jul 19 09:08:53 1996 Philippe De Muyter - - * m68k.md (negdi2): Undo last change: don't apply neg to address regs. - -Fri Jul 19 09:03:01 1996 Robert Wilhelm (rwilhelm@Physik.TU-Muenchen.DE) - - * toplev.c (main): Correct typo in error message. - -Thu Jul 18 20:29:33 1996 Jim Wilson - - * Makefile.in (OBJS): Add dwarf2out.o. - (dwarf2out.o): New rule. - * dwarf2.h, dwarf2out.c: New files. - * dwarfout.c: Check DWARF_VERSION macro. - - * mips/iris6.h (DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): - Move after header files are included. - (iris5.h): Include instead of iris5gas.h. - (MACHINE_TYPE): Change 5.x to 6.x. - (DEBUG_SECTION, LINE_SECTION): Add debug_ to name, fix attributes. - (SFNAMES_SECTION, SRCINFO_SECTION, MACINFO_SECTION, PUBNAMES_SECTION, - ARANGES_SECTION): Fix attributes. - (DWARF_VERSION, MIPS_DEBUGGING_INFO, ASM_DECLARE_FUNCTION_NAME, - ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED, - FRAME_SECTION, ABBREV_SECTION): Define. - (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, MIPS_DEBUGGING_INFO, - DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_INFO): Delete undefs at - end of file. - * mips/mips.c (function_prologue): Use FUNCTION_NAME_ALREADY_DECLARED. - (function_epilogue): Likewise. - -Thu Jul 18 19:24:19 1996 David Mosberger-Tang - - * alpha/elf.h (INT_ASM_OP): Change from ".long" to ".quad". - -Thu Jul 18 19:20:58 1996 Ulrich Drepper - - * stddef.h: Undefine __need_wint_t. - -Thu Jul 18 19:06:35 1996 J.T. Conklin - - * longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd - for the '020, '030, '040, and '332. Define count_leading_zeros - for the '020, '030, '040, and '060. - - * m68k.md: Add TARGET_5200 to conditions which determine whether - the extbl instruction is emitted. - (mulsi3): Enable pattern with TARGET_5200. - - * m68k.md (add patterns): Don't use two addqw instructions when - adding small (8 < N <= 16) integers to address registers on 68040. - -Thu Jul 18 18:06:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure: Write target_alias in Makefile. - (i[3456]86-*-sco3.2v4*): Set truncate_target. - * Makefile.in (target_alias): New and used for all current uses - of `target'. - -Thu Jul 18 17:46:02 1996 Dave Love - - * gcc.c (default_compilers): Extra Fortran extensions. - -Wed Jul 17 10:28:10 1996 Torbjorn Granlund - - * expmed.c (expand_mult_highpart): Revert last change. - -Tue Jul 16 12:51:59 1996 Doug Evans - - * sparc/sparc-rtems.h: #include "sparc/sparc-aout.h" -> sparc/aout.h. - -Mon Jul 15 14:42:06 1996 Jim Wilson - - * mips/iris6.h (LINK_SPEC): Add -woff 84. - -Fri Jul 12 17:34:01 1996 Michael Meissner - - * rs6000/eabi.asm (__eabi): Convert pointers in the Global Offset - Table if -mrelocatable. Move loops into separate subroutines for - ease of debugging. Reorganize code somewhat. - - * rs6000/rs6000.c (small_data_operand): Allow small data under - Solaris. - - * rs6000/sol-c0.c (_start): Initialize r13 to point to the small - data operand. - - * rs6000/sol-c{i,n}.asm (_init, _fini): Enable shared library - support. - - * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Default to - -msdata=data, even if -fpic or -mrelocatable. Allow -mrelocatable - and -mno-eabi. - (CPP_SYSV_SPEC): If -fpic, define __PIC__ and __pic__ to 1. If - -fPIC, define them to 2. - (CPP_ENDIAN_SPEC): Push definition of macros for specific endian - targets to new specs. - (CPP_ENDIAN_DEFAULT_SPEC): Define to use CPP_ENDIAN_BIG_SPEC. - (CPP_ENDIAN_{LITTLE,BIG,SOLARIS}_SPEC): New specs for little - endian mode, big endian mode, and Solaris, which can't define - _LITTLE_ENDIAN. Define __LITTLE_ENDIAN__ in all cases for little - endian systems. Define __BIG_ENDIAN__ in all cases for big endian - systems. - (SUBTARGET_EXTRA_SPECS): Add new specs. - - * rs6000/{eabile,sysv4le}.h (CPP_ENDIAN_DEFAULT_SPEC): Define to - use CPP_ENDIAN_LITTLE_SPEC. - - * rs6000/sol2.h (CPP_ENDIAN_LITTLE_SPEC): Define as - CPP_ENDIAN_SOLARIS_SPEC so that _LITTLE_ENDIAN is not define. - -Fri Jul 12 17:34:01 1996 David Edelsohn - - * rs6000.c (function_arg): Add IBM AIX XL compiler broken FP arg - passing compatibility mode. - * rs6000.h (TARGET_XL_CALL): Define default. - * aix3newas.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. - * aix41.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. - -Fri Jul 12 15:04:43 1996 Doug Evans - - * arm/arm.h (ASM_OUTPUT_MI_THUNK): Handle fns returning structures. - - * ptx4.h ({ASM,LINK}_SPEC): %{V} %{v:%{!V:-V}} -> %{v:-V}. - * svr4.h ({ASM,LINK}_SPEC): Likewise. - * dsp16xx/dsp16xx.h ({ASM,LINK}_SPEC): Likewise. - * i386/dgux.h (LINK_SPEC): Likewise. - * i386/sol2.h (LINK_SPEC): Likewise. - * m88k/dgux.h ({LINK,ASM_CPU}_SPEC): Likewise. - * sparc/sol2.h ({ASM,LINK}_SPEC): Likewise. - * sparc/sp64-elf.h ({ASM,LINK}_SPEC): Likewise. - * sparc/sysv4.h (ASM_SPEC): Likewise. - -Thu Jul 11 17:29:33 1996 Michael Meissner - - * rs6000.h (GOT_TOC_REGNUM): New macro for r2, which is used as a - marker for the GOT/TOC register to be allocated later. - (MACHINE_DEPENDENT_REORG): Call rs6000_reorg. - (rs6000_reorg): Add declaration. - - * rs6000.c (rs6000_got_register): Return REG 2, not a pseudo - register in order to work with inlined functions. - (rs6000_replace_regno): New function to replace a register with a - new pseudo register. - (rs6000_finalize_pic): Loop through all of the insns, replacing - any GOT_TOC_REGNUM registers with a new pseudo register, and - adding the initialization of of the GOT register if it was - created. - (rs6000_reorg): New function to check whether the GOT_TOC register - marker was removed. - -Thu Jul 11 10:12:50 1996 Jeffrey A Law (law@cygnus.com) - - * h8300/h8300.h (OK_FOR_U): If generating H8/S code, accept - SYMBOL_REF and SYMBOL_REF + CONST_INT. - - * h8300/h8300.c (shift_one): Emit tabs between opcode and - operands to be consistent with the rest of the compiler. - (rotate_one): Likewise. - (shift_two, rotate_two): Define. - (get_shift_alg): Accept new argument "assembler2_p" for - rotate/shift by two insns. All callers changed. Rework - to generate more efficient code on the H8/300, H8/300H, and - H8/S. Try to simplify somewhat. - (emit_a_shift): Use shift-by-two insns when they're available. - Emit tabs between opcode and operands to be consistent with - the rest of the compiler. - -Wed Jul 10 19:32:17 1996 Jim Wilson - - * mips/iris6.h (ASM_SPEC): Correct typos in Jun 18 change. - -Wed Jul 10 18:56:38 1996 Ian Lance Taylor - - * sh/sh.c (machine_dependent_reorg): When looking for the - instruction that sets a register in LOG_LINKS, skip the link if - REG_NOTE_KIND is not zero. - -Wed Jul 10 15:02:18 1996 Michael Meissner - - * rs6000.c (rs6000_got_register): New function to return a pseudo - register to hold the pic register. Abort if reload is in progress - or done. - (num_insns_constant): Allow SFmode and DFmode. - - * rs6000.h (CONST_DOUBLE_OK_FOR_LETTER_P): Redo 'G' so that it - means a constant that takes exactly two insns. - (rs6000_got_register): Add declaration. - - * rs6000.md (movsi_got): Move setup of pic register to - rs6000_got_register. - (movsf): If -msoft-float, don't force constants to memory. - (mov{sf,df} insns): If soft floating point, allow any constant to - be loaded. Add define_splits that allow the 604 to use both - integer units for loading constants. Make sure insn length is - correct. - -Tue Jul 9 17:05:10 1996 Michael Meissner - - * rs6000.c (easy_fp_constant): All FP constants are considered - hard for -fpic and hardware floating point, so that the GOT - register is created. - -Tue Jul 9 15:21:27 1996 Jim Wilson - - * x-iris6 (FIXPROTO_DEFINES): Add -D_SGI_SOURCE. - -Mon Jul 8 18:00:33 1996 Jim Wilson - - * sh/sh.h (enum reg_class): Add new class GENERAL_FP_REGS. - (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. - - * cse.c (note_mem_written): Varying structure memory access with - AND address can alias scalars. - * sched.c (true_dependence, anti_dependence, output_dependence): - Likewise. - - * sh.c (calc_live_regs): For pragma_interrupt case, exclude call - clobbered regs that are fixed, explicitly add MACH_REG and MACL_REG. - - * calls.c (expand_call): For assign_stack_temp call in PARALLEL case, - get mode from type instead of using BLKmode. - * function.c (aggregate_value_p): If hard_function_value returns - a non-REG, then return 0. - - * mips/mips.c (function_arg): Add explicit checks for FIELD_DECLs. - (mips_function_value): Add explicit checks for FIELD_DECLs, and save - them in the array FIELDS. When returning structure with 1 float field, - enclose it in a PARALLEL and set the PARALLEL mode correctly. - * mips/mips.md (call_value): Call gen_call_value_multiple_internal0 - only if there are multiple return values. Strip the PARALLEL off - if there there is only one return value. - -Mon Jul 8 16:27:33 1996 Jeffrey A. Law - - * First cut at support for the H8/S. - * h8300/h8300.c (h8300_init_once): Handle the H8/S (treat it - like the H8/300H). - (dosize, adds_subs_operand, one_insn_adds_subs_operand): Likewise. - (output_adds_subs, const_costs, print_operand): Likewise. - (output_simode_bld, h8300_adjust_insn_length): Likewise. - (push_order, pop_order): Reverse. - (function_prologue): Try to use ldm.l and stm.l insns - on the H8/S. Minor cleanups. - (function_epilogue): Likewise. - (asm_file_start): Emit ".h8300s" when compiling for the H8/S. - * h8300/h8300.h (CPP_SPEC): Handle the H8/S. - (TARGET_H8300S): New target. - (TARGET_SWITCHES): Add "-ms" and "-mno-s". - (BITS_PER_WORD): Handle the H8/S (treat it like the H8/300H). - (UNITS_PER_WORD, POINTER_SIZE, PARM_BOUNDARY): Likewise. - (BIGGEST_ALIGNMENT, BIGGEST_FIELD_ALIGNMENT): Likewise. - (INITIALIZE_TRAMPOLINE, MOVE_MAX, Pmode): Likewise. - * h8300/h8300.md: Handle H8/S just like H8/300H - throughout the entire file. - * h8300/t-h8300 (MULTILIB_OPTIONS): Build "-ms" libraries - too. - (MULTILIB_DIRNAMES): Put H8/S libraries in "h8300s" directory. - * h8300/lib1funcs.asm: Emit ".h8300s" pseudo-op when generating - h8300s object files. Otherwise treat the H8/S just like the H8/300H. - * ginclude/stdarg.h: Handle the H8/S. - * ginclude/varargs.h: Likewise. - -Mon Jul 8 14:50:58 1996 Doug Evans - - * sparc/sol2.h (LINK_SPEC): Don't pass `-z text' if - -shared -mimpure-text. - -Sun Jul 7 18:03:46 1996 Torbjorn Granlund - - * m68k/lb1sf68.asm (__udivsi3): Use faster tstw instead of btst. - -Thu Jul 4 11:44:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (get_inner_reference): Delete using alternate mode for - bitfield; we don't make bitfields anymore if not needed. - -Wed Jul 3 18:23:17 1996 Stephen L Moshier (moshier@world.std.com) - - * c-common.c (record_function_format): Define as static. - - * collect2.c (at SUNOS4_SHARED_LIBRARIES): Fix reference to unistd.h. - -Wed Jul 3 17:35:20 1996 Gavin Koch - - * c-typeck.c (default_conversion): Add bitfield promotions. - -Wed Jul 3 17:09:22 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * gcc.c (default_compilers): Add null entries for languages we - heard of. - (main): If found one of those entries, say compiler not installed. - -Wed Jul 3 12:52:53 1996 Jeffrey A. Law - - * pa.c (fmpy_operands): Define. - (combinable_fmpy): New function. - (combinable_fadd, combinable_fsub): Likewise. - * pa.md (parallel_addb, parallel_movb): New patterns. - (fmpyadd, fmpysub): New patterns. - - * pa.c (fmpyaddoperands): Tighten checks. Allow SFmode. - (fmpysuboperands): Similarly. - -Tue Jul 2 18:57:15 1996 Jeffrey A. Law - - * pa.c (ireg_or_int5_operand): New function. - (output_parallel_movb, output_parallel_addb): Likewise. - (combinable_copy, combinable_add, following_call): Likewise. - (pa_adjust_insn_length): Handle parallel unconditional branches. - (output_movb): Handle case were destination is %sar. - * pa.h: Declare new functions. - * pa.md (parallel_branch): New "type" attribute. - (delay slot descriptions): Don't allow "parallel_branches" in - delay slots. Fill "parallel_branches" like "branch" insns. - (movb patterns): Handle %sar as destination register. - - * expr.c (compare): If function pointers need canonicalization - before comparisons, canonicalize them. - (do_store_flag): Do not use an sCC insn for a function pointer - comparison if function pointers need canonicalization before - comparing. - -Tue Jul 2 17:56:37 1996 Michael Meissner - - * rs6000/sysv4.h ({START,END}FILE_LINUX_SPEC): If -mnewlib is not - used, use the crtbegin/crtend that 2.7.2 used. - -Sat Jun 29 07:10:02 1996 Michael Meissner - - * rs6000.h (INIT_EXPANDERS): Define, call rs6000_init_expanders. - (RS6000_VARARGS_OFFSET): fpmem area no longer next to outgoing - argument area. - (STARTING_FRAME_OFFSET): Ditto. - (STACK_DYNAMIC_OFFSET): Ditto. - (frame_pointer_needed): Add external declaration. - (rs6000_{save,restore}_machine_status): Ditto. - (rs6000_init_expanders): Ditto. - - * rs6000.c (rs6000_{save,restore}_machine_status): New functions - to save and restore the globals needed on a per function basis. - (rs6000_init_expanders): Initialize globals needed on a per - function basis, and set up so the above save/restore functions are - called when processing nested functions. - (output_epilog): Don't initialize per function globals here. - (rs6000_stack_info): Change where the fpmem save area is to below - the local variables, and not just below the outgoing argument - area. - - * rs6000.md (floatsidf2*, fix_truncdfsi2*): Rewrite conversion - routines to track new location of the fpmem save area. Allocate a - new base register temp for the routines in case the stack frame is - more than 32k in size. - -Sat Jun 29 05:44:37 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * explow.c (convert_memory_address, case PLUS): Fix error in - last change. - -Fri Jun 28 23:30:48 1996 Jeffrey A. Law - - * reload1.c (choose_reload_regs): Properly mark spill registers - as in use for inherited reloads. - -Fri Jun 28 18:37:20 1996 Stephen L Moshier - - * objc/sarray.c (ifdef __alpha__): Don't declare `free'. - * objc/thr-decosf1.c (objc_thread_id): Use pthread_getunique_np - to obtain a thread ID value. - (objc_mutex_allocate): Cast mutex->owner to _objc_thread_t. - (objc_mutex_deallocate): Likewise. - (objc_mutex_unlock): Likewise. - (objc_mutex_trylock): Declare thread_id as _objc_thread_t. - (objc_mutex_lock): Likewise. - (objc_mutex_unlock): Likewise. - - * real.c (asctoeg): `0.0eX' is zero, regardless of the exponent X. - -Fri Jun 28 18:33:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * vax.md (rotl): Remove extraneous `$'. - - * combine.c (previous_num_undos): Deleted variable. - (MAX_UNDO): Deleted macro. - (struct undo): New field, next. - (struct undobuf): Deleted num_undos and undo. - New fields undos, frees, and previous_undos. - (SUBST, SUBST_INT): Rework to allocate memory and chain undo entries. - (combine_instructions): Initialize undobuf.{undos,previous_undos}, - not undobuf.num_undo and previous_num_undos. - (try_combine): Likewise. - (undo_all, gen_rtx_combine): Rework to use new data structures. - -Fri Jun 28 16:48:25 1996 Scott Christley - - * objc/sendmsg.c (__objc_block_forward): New function. - (get_imp, objc_msg_lookup): Use different forwarding function - when the returning a floating point value. - -Fri Jun 28 16:25:25 1996 Andreas Schwab - - * configure: Allow multiple makefile frags. - (i[3456]86-*-linux*oldld*): Add i386/t-crtstuff as target frag. - (i[3456]86-*-linux*aout*, i[3456]86-*-linux*): Likewise. - (m68k-*-linux*aout*): Add t-linux-aout as target frag. - (m68k-*-linux*): Add t-linux as target frag. - * Makefile.in (Makefile): xmake_file and tmake_file now already - contain the $(srcdir)/config prefix. - - * config/t-linux (BOOT_CFLAGS): Removed, no longer necessary. - (CRTSTUFF_T_CFLAGS): Don't define. - (CRTSTUFF_T_CFLAGS_S): Define this instead. - * config/t-linux-aout (BOOT_CFLAGS): Removed. - * m68k/t-linux: Remove variables now in t-linux. - -Fri Jun 28 15:06:05 1996 John F. Carr - - * alpha.c (alpha_emit_conditional_move): Emit correct code when - incoming comparison code is NE. - -Fri Jun 28 14:35:45 1996 J.T. Conklin - - * c-decl.c (init_decl_processing): Register __builtin_memset - and memset as builtin functions. - * expr.c (expand_builtin, case BUILTIN_MEMSET): Open code memset - where val == 0. - -Fri Jun 28 14:10:03 1996 Richard Henderson - - * alpha/linux.h (FUNCTION_PROFILER): _mcount has non-standard linkage. - * alpha/elf.h (LINK_SPEC): Bring emulation name into sync - with Cygnus snapshot. - - * alpha.h ({MASK,TARGET}_BUILD_CONSTANTS): New macros. - (TARGET_SWITCHES): New target option build-constants. - * alpha.c (alpha_emit_set_long_const): New function. - * alpha.md (movdi): Call it. - * expmed.c (expand_mult_highpart): Use op1 not wide_op1 in - expansion of mul_highpart. - - * alpha.c (output_{pro,epi}log): Flag_inhibit_size_directive - should supress .ent, .end, and accompanying directives. - (alpha_output_lineno): Fix polarity on GAS test. - * alpha.h (NO_DBX_FUNCTION_END): New macro. - * dbxout.c (dbxout_function): Respect NO_DBX_FUNCTION_END. - * alpha/elf.h: New file. - * alpha/linux.h (INITIALIZE_TRAMPOLINE): New definition. - * alpha/xm-linux.h (HAVE_STRERROR): Define. - * configure (alpha*-linux*ecoff*): New target, was alpha-*-linux*. - (alpha-*-linux*): Use elf.h. - * crtstuff.c (init_dummy): Only i386-linux (at most) - needs ___brk_addr hack. - -Thu Jun 27 20:23:30 1996 Jon Buller (jonb@metronet.com) - - * ns32k.c (split_di): New; from i386.c. - * ns32k.md (adddi3, subdi3, negdi3): New patterns. - -Thu Jun 27 19:42:50 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (force_to_mode, case NE): Fix typo and logical error. - (simplify_comparison): Don't swap args if op1 is CONST_INT. - -Thu Jun 27 18:49:35 1996 Jim Wilson - - * expmed.c (extract_bit_field): Check TRULY_NOOP_TRUNCATION before - making a SUBREG of a REG. - -Thu Jun 27 11:03:59 1996 Ian Lance Taylor - - * mips/mips.h (CC1_SPEC): Put spaces between the -mips* cases. - * mips/osfrose.h (CC1_SPEC): Likewise. - - * sh/sh.c (output_branch): Don't call ADJUST_INSN_LENGTH if the - insn is inside a sequence. - -Wed Jun 26 19:09:43 1996 Jeffrey A. Law - - * pa/pa.h (CMP_PSI): Delete. - (FUNCTION_POINTER_COMPARISON_MODE): Likewise. - * pa/pa.md (cmppsi); Delete expander. - (canonicalize_funcptr_for_compare): Renamed from plabel_dereference, - turned into an expander + anonymous pattern. - -Tue Jun 25 22:36:11 1996 Doug Evans - - * gcc.c (PEXECUTE_VERBOSE): Define. - (execute): Pass PEXECUTE_VERBOSE to pexecute if -v. - -Tue Jun 25 12:23:54 1996 Michael Meissner - - * rs6000.h (FINALIZE_PIC): Define to call rs6000_finalize_pic. - (rs6000_finalize_pic): Add declaration. - (svr4_traceback): Delete unused declaration. - - * rs6000.md (movsi_got): Don't emit gen_init_v4_pic insn. - (V.4 call insns): Do not use @plt for PIC calls. - - * rs6000.c (print_operand_address): Handle LABEL_REF just like - SYMBOL_REF. - (rs6000_finalize_pic): Define, emit the gen_init_v4_pic insn - before all other insns if needed for V.4 PIC calls. - - * eabi-ci.asm (_GLOBAL_OFFSET_TABLE_): Do not provide a default - definition, since it interferes with the linker generated version. - -Tue Jun 25 01:17:50 1996 Jeffrey A. Law - - * h8300/h8300.c (function_prologue): Update "monitor" prologues. - (function_epilogue): Similarly. - - * pa/pa.h (PARSE_LDD_OUTPUT): Handle dynamic libraries that are - loaded "statically". - -Mon Jun 24 19:48:36 1996 Joel Sherrill - - * configure ({i386,i960,m68k,powerpc,sparc}-rtems): New targets. - * i386/go32-rtems.h, i386/i386-rtems.h: New files. - * i960/i960-rtems.h: New file. - * m68k/m68k-rtems.h: New file. - * rs6000/powerpc-rtems.h: New file. - * sparc/sparc-rtems.h: New file. - -Mon Jun 24 23:09:22 1996 Paul Eggert - - * cccp.c: (create_definition): Diagnose `#define #' only once. - -Mon Jun 24 11:42:58 1996 Jim Wilson - - * i386/cygwin32.h, rs6000/cygwin32.h (CPP_PREDEFINES): For consistency, - change to define WIN32, WINNT, and CYGWIN32. - -Mon Jun 24 10:46:50 1996 Michael Meissner - - * rs6000.md (floatsidf2*): Move the xor of the argument into the - define_insn, since it confuses inline function expands. - -Fri Jun 21 20:40:17 1996 Jim Wilson - - * mips.md (call_internal1, call_value_internal1): Delete obsolete code. - (call_internal2, call_value_internal2, call_value_multiple_internal2): - Delete obsolete code. Explicitly load SYMBOL_REF into register. - (call_value): Change Pmode to SImode in gen_call_value_internal0 call. - -Thu Jun 20 12:20:33 1996 Michael Meissner - - * configure (*-aix*): If building a cross compiler, use t-xnewas - instead of t-newas. - - * rs6000.c (num_insns_constant_wide): Fix typo if HOST_WIDE_INT - has more than 32 bits. - -Wed Jun 19 17:50:33 1996 Richard Henderson - - * combine.c (move_deaths): New parameter maybe_kill_insn. - Don't move note if reg killed by maybe_kill_insn. - (try_combine): Pass new arg to move_deaths. - -Wed Jun 19 10:44:47 1996 Brendan Kehoe - - * toplev.c (flag_keep_static_consts): Define. - (f_options): Add "keep-static-consts" entry. - (compile_file): Check it in addition to !optimize for emitting - static const variables. - -Tue Jun 18 23:37:20 1996 Doug Evans - - * i386/cygwin32.h (ASM_OUTPUT_SOURCE_LINE): Local symbols begin with L. - -Tue Jun 18 12:00:11 1996 Jason Merrill - - * varasm.c (asm_output_aligned_bss): Don't emit a skip of size 0. - -Tue Jun 18 06:24:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * integrate.c (expand_inline_function): Add missing call to - force_operand when getting structure_value_addr into reg. - - * alpha.c (override_options): Allow EV4/5 or 21064/21164 for cpu. - Clean up handling of floating-point options. - * alpha.h (TARGET_SWITCHES): Have all -mieee options turn - on MASK_IEEE_CONFORMANT. - (TARGET_DEFAULT): Use symbolic value. - * alpha.md: When not involving named pattern, update condition - to include alpha_tp != ALPHA_TP_INSN. - Don't do float_extend as part of other pattern when ALPHA_TP_INSN. - (extendsfsd2): Split into two patterns, depending on - value of alpha_tp. - - * mips/iris6.h (ASM_SPEC): Treat -o32 as -32 and -n64 same as -64. - * mips.c (override_options): Likewise. - - * genattrtab.c (fatal): Declare A1 and A2 as char *. - - * function.c (find_temp_slot_from_address): Check for overlap - from BASE_OFFSET if X is PLUS of virtual_stack_vars_rtx and const. - - * flow.c (flow_analysis): Fix typo in last change. - - * expr.c (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly - handle case when ptr_mode != Pmode. - - * combine.c (try_combine): Don't use split if dest of new I2 - is used between I2 and I3. - - * c-typeck.c (pointer_int_sum): Convert integer to both signedness - and precision of sizetype. - * explow.c (convert_memory_address, case PLUS, MULT): Don't commute - operation with extension if not adding small integer. - - * Makefile.in (BOOT_LANGUAGES): New variable. - (bootstrap): Use it to select languages for stage1. - * configure (extra_host_objs): New variable. - Separate files needed for target and host and concatenate list. - (extra_gcc_objs): Use setting for host, not target. - (objc_thread_file): Start with it as null, then don't include "thr-". - Print name of file after others and in same format. - (alpha-*-winnt*, i[3456]86-*-winnt): oldnames.o is in extra_host_objs. - (all_boot_languages): New variable. - Set from boot_language variable in config-lang.in. - Defines value of BOOT_LANGUAGES in Makefile. - (Makefile): Set target to the canonical form of target. - -Mon Jun 17 22:37:07 1996 Mike Meissner - - * rs6000/win-nt.h (ASM_DECLARE_FUNCTION_NAME): Put function - descriptor in .reldata, not .text. - -Mon Jun 17 16:05:34 1996 Brendan Kehoe - - * ginclude/stddef.h (wint_t): Don't wrap with #ifndef __cplusplus. - -Mon Jun 17 15:03:20 1996 Jim Wilson - - * mips.c (mips_split_addresses): New variable. - (simple_memory_operand): Add comment about mode check. Add check - for LO_SUM. - (call_insn_operand): OP is now an addresses instead of a MEM. - (move_operand, mips_check_split): New functions. - (mips_count_memory_refs): Add check for LO_SUM. - (mips_move_1word): Add HIGH support. - (mips_address_cost): Delete check for HIGH. - (output_block_move): Handle LO_SUM addresses. - (override_options): Set mips_split_addresses. - (print_operand_address): Add LO_SUM support. - * mips.h (mips_split_addresses, mips_check_split, move_operand): - New declarations - (GO_IF_LEGITIMATE_ADDRESS): Reject constant addresses when - mips_split_addresses is TRUE. Add LO_SUM support. - (LEGITIMIZE_ADDRESS): Add LO_SUM support. - (PREDICATE_CODES): Modify call_insn_operand support. Add - move_operand. - * mips.md (memory): Change r4100/r4300 support. - (imuldiv): Add r4300 support. - (high, low): New patterns. - (movsi, movdi): Add LO_SUM support. - (movsi_internal1, movsi_internal2): Use move_operand instead of - general_operand. - (movstrsi_internal, movstrsi_internal2): Delete R constraint. - (call, call_value): Pass address instead of MEM to call_insn_operand. - Call gen_call_{value_}internal0 instead of internal1. - (call_internal0, call_value_internal0, call_multiple_internal0): - New patterns. - (call_internal1, call_internal2, call_value_internal1, - call_value_internal2, call_value_multiple_internal2): Add explicit - MEM before target address. - -Sun Jun 16 23:05:16 1996 Jeffrey A. Law - - * configure (hppa*-hp-hpux10*): Use new pa-hpux10 configuration file. - (hppa*-hp-hpux*): Use hpux9 configuration files by default. - * pa/pa-hpux10.h: New file. - * pa/pa-ghpux9.h: Deleted. No longer used. - -Sat Jun 15 04:35:51 1996 Roland McGrath - - * i386/gnu.h (LINK_SPEC): Remove -rpath /lib/ option. - Ignore -ibcs option. - -Thu Jun 13 14:49:41 1996 Jim Wilson - - * gen-protos.c (main): Change argv[i] to argv[0][i]. - -Thu Jun 13 10:46:24 1996 Doug Evans - - * gcc.c (pfatal_pexecute): Delete code to check errno < sys_nerr. - -Wed Jun 12 21:47:10 1996 Eliot Dresselhaus - - * alpha.c (alpha_cpu, alpha_cpu_string): New variables. - (override_options): Process -mcpu= value. - (alpha_adjust_cost): Handle adjustments for EV5. - * alpha.h (enum processor_type): New enum. - (alpha_cpu, alpha_cpu_string): New declarations. - (target_options): Add "cpu=". - (RTX_COSTS): Adjust values for EV5. - * alpha.md: Add scheduling rules for EV5. - -Tue Jun 11 17:51:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-common.c (check_format_info): Change text of message about use - of `0' with precision. - -Tue Jun 11 15:14:10 1996 Stan Cox - - * i386.h (TARGET_SCHEDULE_PROLOGUE): New. Allows prologue to - be emitted as asm or rtl. - - * i386.c (function_prologue): Emit prologue as asm. - (override_options): Don't emit rtl for prologue if -fpic. - -Tue Jun 11 14:41:01 1996 Michael Meissner - - * rs6000/eabi.asm (__eabi): Fix normal code so that it properly - loads up r2/r13 if needed again. - - * rs6000/sysv4.h (CPP_ENDIAN_SPEC): Call cpp_endian_default, not - cpp_endian_default_spec. - -Mon Jun 10 15:10:56 1996 Jeffrey A. Law - - * local-alloc.c (update_equiv_regs): Ignore insns that read or - write registers that are likely to be spilled. - - * pa.h (cmp_type): Add CMP_PSI. - (FUNCTION_POINTER_COMPARISON_MODE): Define. - * pa.md (cmppsi): New expander. - (plabel_dereference): New pattern - -Mon Jun 10 14:56:14 1996 Michael Meissner - - * rs6000/sol2.h (SKIP_ASM_OP): Delete, Solaris accepts .space, - like rest of PowerPC V4 ports. - - * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Emit .lcomm if not - using the .sbss area. If using the .sbss area, put out - appropriate .size directive. - -Mon Jun 10 14:53:38 1996 Doug Evans - - Move fork/exec/wait handling into file of its own. - * pexecute.c: New file. - * Makefile.in (pexecute.o): Add rule. - (xgcc): Link in pexecute.o. - (protoize,unprotoize): Likewise. - * gcc.c (_WIN32): Don't include process.h or declare spawnv{,p}. - (pexecute,pwait): Add prototypes. - (PEXECUTE_{FIRST,LAST,SEARCH}): Define. - (execv,execvp): Delete decls. - (perror_exec): Delete. - (pfatal_pexecute): New function. - (pexecute support): Delete. - (execute): -pipe not supported if _WIN32 or OS2. - Update call to pexecute. Fatal error if pexecute fails. Call pwait. - * protoize.c: Include gansidecl.h. - (my_execvp): Delete. - (choose_temp_base,pexecute,pwait): Declare. - (PEXECUTE_{FIRST,LAST,SEARCH}): Define. - (execvp): Delete decl. - (usage): Fix typo. - (gen_aux_info_file): Rewrite to use pexecute/pwait. - - * gcc.c (do_spec_1): Allow leading text in version string. - Delete support for default minor number = 0. - -Mon Jun 10 11:49:53 1996 Scott Christley - - * objc/Makefile (libobjc.a): Don't delete the library. - - * objc/thr.h (objc_set_thread_callback): New function. - (objc_thread_callback): Typedef for the hook function. - * objc/thr.c (__objc_thread_detach_function): Clear thread storage. - Call the thread hook function when first becoming multi-threaded. - (objc_set_thread_callback): New function. - - * objc/selector.c (__sel_register_typed_name): Additional parameter - that indicates whether name and type parameters are constant or not. - * objc/runtime.h (__sel_register_typed_name): Likewise. - * objc/init.c (__sel_register_typed_name): Likewise. - - * objc/init.c (__objc_init_protocols): Need to unlock mutex. - -Mon Jun 10 11:44:44 1996 Kaveh R. Ghazi - - * sparc/t-sol2 (gmon.o): Depend on stmp-int-hdrs. - (crt1.o, crti.o, crtn.o, gcrt1.o): Depend on $(GCC_PASSES). - -Mon Jun 10 11:29:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * flow.c (flow_analysis, find_basic_blocks): Ignore - nonlocal_label_list for CALL_INSN that has a REG_RETVAL. - - * c-common.c (decl_attributes, case A_T_UNION): Don't look at fields - of union if there aren't any. - -Sat Jun 8 22:13:33 1996 Stan Cox - - * i386.c (ix86_expand_prologue): Keep pic register load ahead - of reference which may use a pic register. - -Sat Jun 8 22:13:33 1996 Jim Wilson - - * i386.md (strlensi_unroll4, strlensi_unroll5): Use + not =& for - constraint for input/output operand 2. - -Sat Jun 8 22:13:33 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * i386.h (CONST_COSTS): Even integer constants have a cost. - (RTX_COSTS): Take costs of subexpressions into account. - If a multiply is actually a shift, use the cost of the shift. - * i386/unix.h (SHIFT_DOUBLE_OMITS_COUNT): New macro. - * i386/{gas, next, seq-gas}.h (SHIFT_DOUBLE_OMITS_COUNT): Redefine - as zero. - * i386.c (print_operand): new letter 's'. - -Sat Jun 8 15:13:33 1996 Jim Wilson - - * mips/mips.c (override_options): Add vr4100 and vr4300 support. - * mips/mips.h (enum processor_type): Likewise. - (MASK_4300_MUL_FIX, TARGET_4300_MUL_FIX): New macros. - (TARGET_SWITCHES): Add -mfix4300 option. - * mips/mips.md (cpu, memory, imuldiv, adder, mult, divide): Add - vr4100 and vr4300 support. - (muldf3, mulsf3): Add vr4300 support. - (muldf3_internal, muldf_r4300, mulsf3_internal, mulsf_r4300): New - patterns. - -Sat Jun 8 14:35:23 1996 David Edelsohn - - * toplev.c (main): Re-enable -gxcoff+. - -Sat Jun 8 14:20:14 1996 J.T. Conklin - - * m68k/lb1sf68.asm (__{eq,ne,gt,lt,ge,le}{df,sf}2): Removed - extraneous comments, constants, labels, etc. - - * m68k/altos3068.h (TARGET_DEFAULT): Use MASK_* macros - instead of explicit constants in definitions or conditionals. - * m68k/{apollo68, aux, ccur-GAS, dpx2, hp320, hp3bsd}.h: Likewise. - * m68k/{hp3bsd44, isi-nfp, isi, linux-aout, linux}.h): Likewise. - * m68k/{lynx-ng, lynx, m68k-none, m68k-psos, m68kv4}.h): Likewise. - * m68k/{mot3300, netbsd, news, next, pbb, plexus, sun2o4}.h): Likewise. - * m68k/{sun3, sun3n, tower}.h): Likewise. - -Sat Jun 8 13:55:23 1996 Matthias Pfaller (leo@marco.de) - - * ns32k.md (define_insns for ffs[qhs]i2): Deleted. - (define_expand for ffssi2): New pattern. - -Sat Jun 8 13:44:14 1996 Stephen L Moshier (moshier@world.std.com) - - * reload.c (find_equiv_reg): Set need_stable_sp if GOAL is the - stack pointer. - -Sat Jun 8 13:36:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (fixup_var_refs_1, case SIGN_EXTEND): Handle - paradoxical SUBREGs as first operand. - (fixup_var_regs_1, case SET): Handle paradoxical SUBREGs as - first operand of a ZERO_EXTRACT in SET_DEST. - - * c-common.c (enum attrs): Add A_FORMAT_ARG. - (init_attribute): Initialize it. - (decl_attributes, case A_FORMAT): Clean up error messages. - (decl_attributes, case A_FORMAT_ARG): New case. - (struct international_format_info): New structure and typedef. - (international_format_list): New variable. - (record_international_format): New function. - (init_format_info): Call it for gettext, dcgettext, and dcgettext. - (check_format_info): See if format arg is call to - internationalization function. - -Fri Jun 7 20:04:40 1996 Jim Wilson - - * gcc.c (MULTILIB_SELECT): Delete definition. - (multilib_select): Delete static initializer. - (multilib_obstack, multilib_raw): New global variables. - (multilib.h): Include inside multilib_raw definition. - (main): Set multilib_select from multilib_raw. - * genmultilib: Change output to be a sequence of short strings - separated by commas rather than a single long macro definition. - - * cse.c (simplify_binary_operation, case MULT): Check for case - where width is larger than HOST_BITS_PER_WIDE_INT, and upper most - bit is set. We can not generate a simple shift in this case. - - * gsyms.h (enum sdb_type): Add T_LNGDBL if EXTENDED_SDB_BASIC_TYPES. - (enum sdb_masks): Add EXTENDED_SDB_BASIC_TYPES masks. - * sdbout.c (gsyms.h): Include if CROSS_COMPILE is defined. - (plain_type_1): Use TYPE_PRECISION instead of TYPE_SIZE. - Add check for LONG_DOUBLE_TYPE_SIZE if EXTENDED_SDB_BASIC_TYPES. - * i960/i960.h (EXTENDED_SDB_BASIC_TYPES): Define. - (PUT_SDB_TYPE): Delete now unnecessary shifting and masking. - - * i960/i960.h (i960_output_move_{double,quad}): Declare. - -Fri Jun 7 19:22:09 1996 Scott Christley - - * Makefile.in (OBJC_THREAD_FILE): New variable. - * configure (objc_thread_file): Set new variable to appropriate - values based upon target operating system; default is `thr-single'. - * objc/Makefile (OBJC_THREAD_FILE): Add target and dependency. - (thr.o): Remove OS specific thread files as dependencies. - * objc/thr-decosf1.c: Now compiles as a separate source file, so - include appropriate Objective-C headers. - * objc/thr-{mach,os2,posix,irix,single,solaris,win32}.c: Likewise. - * objc/thr.c: Remove inclusion of source files. - * objc/thr.h (__objc_thread_exit_status): Declare global variable. - * objc/thr-pthreads.c: New file. - -Fri Jun 7 19:04:04 1996 J.T. Conklin - - * m68k.h (TARGET_SWITCHES): Treat -m68302 like -m68000 and -m68332 - like -m68020; remove -mno-68302 and -mno-68332. - -Fri Jun 7 12:06:12 1996 Per Bothner - - * expr.c (safe_from_p): Allow Chill-style variable-sized arrays. - -Thu Jun 6 23:11:11 1996 Jeffrey A. Law - - * h8300.c (h8300_monitor_function_p): New function. - (h8300_os_task_function_p): Likewise. - (os_task, monitor): Variables to note if the current - function is an os_task or monitor. - (function_prologue): Set monitor and/or os_task as needed. Handle - os_task and monitor functions. - (function_epilogue): Clear monitor and os_task. Handle os_task and - monitor functions. - (h8300_valid_machine_decl_attribute): Accept "OS_Task" and - "monitor". - -Thu Jun 6 20:01:54 1996 Per Bothner - - * gen-protos.c (progname): New variable (needed by cppalloc.c). - (main): Set progname. - - * cpplib.h (struct parse_file): Removed. - (CPP_FATAL_LIMIT, CPP_FATAL_ERRORS, CPP_OUT_BUFFER): New macros. - * cpphash.c (cpp_lookup): Change struct parse_file -> cpp_reader. - - * cpplib.c (init_parse_option): Renamed to cpp_options_init. - (push_parse_file): Renamed to ... - (cpp_start_read): Change to return 1 on success, 0 on failure. - (init_parse_file): Renamed to cpp_reader_init. - * cppmain.c (main): Use CPP_SET_WRITTEN and cpp_fatal. - Use renamed function names, and return protocols. - * fix-header.c (read_scan_file): Likewise. - - * cpperror.c (cpp_message): Generalize for "fatal" errors. - (cpp_fatal): New function (just calls cpp_message). - * cpplib.c (cpp_start_read, cpp_handle_options, cpp_finish, - parse_goto_mark, parse_move_mark): Use cpp_fatal rather than fatal. - - * fix-header.c (check_macro_names): Fix struct parse_file->cpp_reader. - * cpplib.c (newline_fix): Remove unused function. - -Thu Jun 6 19:47:26 1996 Jim Wilson - - Changes to support parameters and return values in multiple - non-contiguous locations. - * calls.c (expand_call): Handle NIL in PARALLEL. Handle PARALLEL - parameter in REG. Handle PARALLEL return value in VALREG. - (emit_library_call, emit_library_call_value): Abort for PARALLEL. - (store_one_arg): Delete code for handling EXPR_LIST. - * expr.c (emit_group_load, emit_group_store): New functions. - (use_group_regs): New function. - (emit_push_insn): Handle PARALLEL parameter in REG. - (expand_assignment): Handle PARALLEL to_rtx. - (store_expr): Handle PARALLEL target. - * expr.h (emit_group_load, emit_group_store, use_group_regs): New - declarations. - * function.c (assign_parms): Handle PARALLEL parameter in ENTRY_PARM. - * stmt.c (expand_value_return): Handle PARALLEL return_reg. - - * mips/abi64.h (TYPE_DEPENDENT_REG): Delete. - * mips/mips.c (function_arg): Return PARALLEL for structure with - aligned double fields. - (type_dependent_reg): Delete. - (mips_function_value): Return PARALLEL for structure - with two floating point fields. - * mips/mips.md (call_value): Handle PARALLEL in operands[0]. - (call_value_multiple_internal2): New pattern. - * pa/pa.h (FUNCTION_ARG): General PARALLEL instead of EXPR_LIST. - * rs6000/rs6000.c (init_cumulative_args): Change EXPR_LIST to PARALLEL - in comments. - (function_arg): Generate PARALLEL instead of EXPR_LIST. - -Thu Jun 6 18:21:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (assign_parms): Tighten up code that makes REG_EQUIV - notes for parms. - - * fold-const.c (fold): Don't do anything with evaluated SAVE_EXPR. - -Thu Jun 6 17:54:07 1996 J.T. Conklin - - * m68k.h (TARGET_SWITCHES): Group all floating point options. - When an fp option is selected, unset bits used for other mutually - exclusive fp options. - (OVERRIDE_OPTIONS): Remove special case for SUPPORT_SUN_FPA; - bits used for 68881 and SKY are now cleared by TARGET_SWITCHES. - - * m68k.md (movsi_const0, movhi): Favor clr with TARGET_5200. - (add[qhs]3): Don't use two addqw/subqw insns to add small integers to - an address register with TARGET_68060. - (stack push peephole): Use moveq.l with TARGET_5200 (when appropriate). - - * m68k.h (MASK_5200, TARGET_5200): New macros. - (TARGET_SWITCHES): Add "m5200". - (LEGITIMATE_INDEX_P): Add TARGET_5200 to conditional expression. - * m68k.c (const_method): Do not synthesize long constants - with byte or word operations with TARGET_5200. - * m68k.md: Disable byte and word arithmetic, rotate, integer - divide, dbcc, etc. insns for TARGET_5200. - * m68k-none.h: (CPU_FPU_SPEC, CPP_SPEC, ASM_SPEC): Support m5200. - -Thu Jun 6 17:32:32 1996 Paul Eggert - - * fixproto (subdirs): Work around Solaris 2.5 - /usr/xpgr/bin/sed problem with \+\+. - -Thu Jun 6 15:06:27 1996 Jim Wilson - - * c-decl.c (grokdeclarator): Call pop_obstacks after creating - TYPE_DECL. - - * loop.c (strength_reduce): If HAVE_cc0 defined, disable auto_inc_opt - if it would put an insn between a cc0 setter/user pair. - -Thu Jun 6 13:06:54 1996 Michael Meissner - - * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): If __sun__ is - defined, treat that as little endian. - -Wed Jun 5 20:04:53 1996 Jim Wilson - - * i960/i960.h (ROUND_TYPE_ALIGN): Add check for TYPE_PACKED. - - * sh/sh.h (SHORT_IMMEDIATES_SIGN_EXTEND): Define. - * sh/sh.md (branch_true): Add comment about T-bit compares. - -Tue Jun 4 23:08:34 1996 Per Bothner - - * cpplib.h, cpplib.c: Remove support for !STATIC_BUFFERS. - * cpplib.h: Use unsigned char rather than U_CHAR. - * cpplib.h (cpp_reader): Add destructor #ifdef __cplusplus. - (cpp_cleanup): New prototype. - * cpplib.c (special_symbol, do_once, do_include, cpp_get_token): - Compare cpp_buffer against CPP_NULL_BUFFER, not NULL. - - * cpplib.c (dump_special_to_buffer): New function. - (initialize_builtins): Use it. - -Wed Jun 5 19:10:22 1996 Jeffrey A. Law - - * pa/pa.h (TEXT_SPACE_P): Fix thinko in last change. - -Wed Jun 5 16:25:51 1996 Michael Meissner - - * rs6000.h (ASM_DEFAULT_SPEC): Default to "", not -mpwr. - - * sysv4.h (SUBTARGET_SWITCHES): Add -mshlib. - (LINK_PATH_SPEC): Add -compat-bsd support from Solaris. - (LINK_SPEC): Eliminate %{b} and %{G}, since they conflict with GCC - switches. Defer shared library support to LINK_SHLIB_SPEC. Defer - target selection to LINK_TARGET_SPEC. - (LINK_SHLIB_SPEC): Provide two different versions, depending on - whether shared libraries are default or not. Make shared - libraries not default until linker is fixed. - (LINK_OS_*_SPEC): New specs for OS specific linker switches. - (SUBTARGET_EXTRA_SPECS): Add new specs. - - * {sol2,sysv4}.h (LINK_SPEC): Move Solaris link into the general - link spec. - - * {sysv4,sysv4le,eabile}.h (LINK_TARGET_SPEC): Only pass -oformat - to the linker if the user is changing the default endian format. - - * {sol2,linux,eabisim,eabilesim}.h (LINK_OS_DEFAULT_SPEC): Define - to use the appropriate OS link spec. - -Wed Jun 5 16:35:10 1996 Ian Lance Taylor - - * ginclude/stddef.h: Fix typo: TYPE_ptrdiff_t to _TYPE_ptrdiff_t. - -Wed Jun 5 15:52:57 1996 Per Bothner - - * varasm.c (output_constructor): Handle RANGE_EXPR in array index. - -Wed Jun 5 13:45:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * sparc.md (*call_{address,symbolic}_struct_value_sp32): Allow - operand 2 to be const0_rtx. - -Tue Jun 4 16:43:44 1996 Jason Merrill - - * varasm.c (make_decl_rtl): Don't update DECL_ASSEMBLER_NAME for - local statics. - - * c-decl.c (start_decl): Always set DECL_COMMON on statics. - * varasm.c (assemble_variable): Only treat vars with DECL_COMMON - as common. - -Tue Jun 4 14:55:49 1996 Jeffrey A. Law - - * pa.c (reloc_needed): New function. - * pa.h (TEXT_SPACE_P): Variables/constants with initializers - requiring relocs never live in the text space. - -Tue Jun 4 14:10:46 1996 Ian Lance Taylor - - * sh.c (fp_zero_operand): Do not accept minus zero. - - * sh.h (ASM_OUTPUT_LOOP_ALIGN): Define. - (ASM_OUTPUT_ALIGN_CODE): Define. - (ADJUST_INSN_LENGTH): Add in bytes that may be added by - alignment. - * sh.c (output_branch): Run ADJUST_INSN_LENGTH in reverse to get - correct length. Just call abort rather than returning "bad". - (find_barrier): Adjust limits for possible alignment. - -Tue Jun 4 09:35:05 1996 Michael Meissner - - * rs6000/t-solaris: New target config file for PowerPC Solaris - without gas. - - * rs6000/t-ppc: Eliminate all multilib varients except for - software floating point. - - * configure (powerpcle-*-solaris*): If not --with-gnu-as, use - t-solaris, not t-ppc. - - * rs6000/sol2.h (MULTILIB_DEFAULTS): Add correct defaults for - Solaris. - - * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): Clone from svr4.h, omit - @progbits, since Solaris assembler doesn't like it. - (LIB_SOLARIS_SPEC): If -msolaris-cclib, add libabi.a. - ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use explicit - pathnames for the Solaris compiler start/end files. - (ASM_SPEC): Pass -mno-regnames to the assembler. - -Mon Jun 3 19:40:10 1996 Jim Wilson - - * mips/abi64.h (CPP_SPEC): Make -mabi=n32 the default. - * mips/iris6.h (MIPS_ISA_DEFAULT, MIPS_ABI_DEFAULT, MULTILIB_DEFAULTS, - ASM_SPEC, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): Likewise. - * mips.md (tablejump_internal4+1): Fix typo in condition. - * mips/x-iris6 (CC, OLDCC): Define to be `cc -32'. - -Mon Jun 3 07:57:35 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.def ([LR]SHIFT_EXPR): Remove `a' from printed names. - - * sparc.md (call): Mask unimp operand to 12 bits, just like Sun. - - * expr.c (store_field): Fix typo in last change; update TARGET addr. - - * c-decl.c (start_struct): Set TYPE_PACKED from flag_pack_struct. - (start_enum): Likewise but from flag_short_enums. - (finish_enum): Test TYPE_PACKED, not flag_short_enums. - * stor-layout.c (layout_decl): Test DECL_PACKED and TYPE_PACKED - instead of flag_pack_struct. - (layout_record): Likewise. - -Sun Jun 2 19:41:14 1996 Jim Wilson - - * mips.md (tablejump_internal3, tablejump_internal4): New patterns. - (tablejump): Use them for PIC code. - -Fri May 31 17:26:53 1996 Stan Cox - - * i386.c (ix86_expand_epilogue): Don't generate references to an - exposed vacated stack. - * i386.md (epilogue_set_stack_ptr): New. - -Fri May 31 15:07:49 1996 Jim Wilson - - * mips/abi64.h: Add -mabi=n32 support. - (ABI_64BIT): Delete. - (TARGET_LONG64, CPP_SPEC, STACK_BOUNDARY, MIPS_STACK_ALIGN, - GP_ARG_LAST, FP_ARG_LAST, SUBTARGET_CONDITIONAL_REGISTER_USAGE, - MAX_ARGS_IN_REGISTER, FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, - SETUP_INCOMING_VARARGS): Modify. - (REG_PARM_STACK_SPACE): Ifdef out. - (TARGET_DEFAULT, SUBTARGET_TARGET_OPTIONS): Define. - * mips/iris6.h: Add -mabi=n32 support. - (TARGET_DEFAULT, ASM_OUTPUT_INTERNAL_LABEL, - ASM_GENERATE_INTERNAL_LABEL): Delete. - (MULTILIB_DEFAULTS, ASM_SPEC, EXTRA_SECTION_FUNCTIONS, - ASM_OUTPUT_ALIGNED_LOCAL, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): - Modify. - (MIPS_ABI_DEFAULT, LOCAL_LABEL_PREFIX): Define. - * mips/mips.c: Add -mabi=n32 support. - (mips_const_double_ok, mips_move_1word, mips_move_2words, - function_arg, override_options, mips_asm_file_start, - compute_frame_size, save_restore_insns, function_prologue, - mips_expand_prologue, function_epilogue, mips_function_value): Modify. - (mips_abi, mips_abi_string): Define - * mips/mips.h: Add -mabi=n32 support. - (ABI_64BIT): Delete. - (TARGET_OPTIONS, INITIAL_ELIMINATION_OFFSET, GO_IF_LEGITIMATE_ADDRESS, - CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT_P, LEGITIMIZE_ADDRESS, - ASM_OUTPUT_ADDR_DIFF_ELT): Modify. - (enum mips_abi_type, SUBTARGET_TARGET_OPTIONS): Define. - (mips_abi, mips_abi_string): Declare. - * mips/mips.md (jump, tablejump_internal1, tablejump_internal2): Add - -mabi=n32 support. - * mips/t-iris6 (MULTILIB_OPTIONS): Add -mabi=n32 support. - * mips/xm-irix6.h (HOST_BITS_PER_LONG): Use _MIPS_SZLONG not 64. - * ginclude/va-mips.h (va_start): Add -mabi=n32 support. - -Fri May 31 14:45:30 1996 Michael Meissner - - * rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -msolaris-cclib to use - the Sun compiler's crt files instead of ours. - ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use the Sun - compiler's crt files instead of ours. - (SUBTARGET_OVERRIDE_OPTIONS): Don't set -msdata=data for Solaris. - (SBSS_SECTION_ASM_OP): For Solaris, don't use @nobits. - (CPP_OS_SOLARIS_SPEC): Remove -Asystem(unix) and -Asystem(svr4). - - * rs6000/t-ppc{,gas} (MULTILIB*): Add Solaris specific multilibs. - - * rs6000/eabi{,le}sim.h (*_DEFAULT_SPEC): Rather than using - duplicate definitions, just use %(...) so that there is only one - place in the specs file where the switches are defined. - * rs6000/{linux,sol2}.h (*_DEFAULT_SPEC): Ditto. - - * rs6000/sol2.h (CPP_PREDEFINES): Use the standard one in sysv4.h. - (RS6000_ABI_NAME): Default is solaris. - (ASM_OUTPUT_ALIGNED_LOCAL): Don't redefine. - - * rs6000/sol-c{i.asm,n.asm,c0.c}: Provide more things that Solaris - needs for program startup. - -Thu May 30 21:57:34 1996 Mike Stump - - * tree.def (OFFSET_REF): Remove. - * expr.c (expand_expr, case OFFSET_REF): Likewise. - * tree.c (substitute_in_expr): Remove OFFSET_REF code. - -Wed May 29 14:54:44 1996 Michael Meissner - - * rs6000/eabi.asm (__eabi): If not -mrelocatable, don't assemble - relocatable functions, so that it can be assembled with the - Solaris assembler. - - * rs6000/sysv4.h (CPP_SYSV_SPEC): Define _RELOCATABLE if - -mrelocatable-lib as well as -mrelocatable. - - * rs6000.c (rs6000_file_start): New function to print some more - information to the asm file. - * rs6000/{sysv4,win-nt,rs6000}.h (ASM_FILE_START): Call it. - -Tue May 28 15:21:24 1996 Michael Meissner - - * rs6000.h (FIRST_PSEUDO_REGISTER): Bump to 77. The new fpmem - register represents the memory location used for float/int - conversions. - ({FIXED,CALL_USED}_REGISTERS): Add support for the fpmem pseudo - register. - (REG_ALLOC_ORDER): Ditto. - (HARD_REGNO_{NREGS,MODE_OK}): Ditto. - (REGISTER_MOVE_COST): Ditto. - (reg_class): Ditto. - (REG_CLASS_{NAMES,CONTENTS}): Ditto. - (REGNO_REG_CLASS): Ditto. - (PREFERRED_RELOAD_CLASS): Ditto. - (CLASS_{MAX_NREGS,CANNOT_CHANGE_SIZE,MAX_NREGS}): Ditto. - (rs6000_stack): Ditto. - ({,DEBUG_}REGISTER_NAMES): Ditto. - (FPMEM_{REGNO_P,REGNUM}): New macros for fpmem register. - (rs6000_fpmem_{offset,size}): New global variables. - (RS6000_VARARGS_OFFSET): Fpmem temporary storage is located - between outgoing arg area and varargs save area. - (STARTING_FRAME_OFFSET): Ditto. - (STACK_DYNAMIC_OFFSET): Ditto. - (PREDICATE_CODES): Add fpmem_operand. - ({count_register,fpmem}_operand): Add declarations. - - * rs6000.c ({rs6000,alt}_reg_names): Add support for fpmem - 'register'. - (rs6000_fpmem_{offset,size}): New global variables. - (fpmem_operand): Return true for fpmem registers. - (gpc_reg_operand): The fpmem register is not general purpose. - (includes_rshift_p): Add casts to silence warnings from Solaris - PowerPC host compiler. - (print_operand): Add 'v' operand type for the upper 16 bits of - signed constants, to placate the Solaris assembler. - ({rs6000,debug}_stack_info): Add support for fpmem 'register'. - (output_epilog): Ditto. - - * rs6000.md (addsi3,movsi,movsf,movdi): Use %v for constants with - the upper 16 bits, to get the sign correct for PowerPC Solaris. - (float{,uns}sidf2,fix_truncdfsi2): Rewrite to use 'register' 76 - for the memory location used to convert between float and integer. - - * sysv4.h (ASM_OUTPUT_{CON,DE}STRUCTOR): Use code laid down in - .init and .fini for making constructors and destructors under - Solaris. - (ASM_SPEC): Do not pass -u to the assembler. - (CC1_SPEC): -mrelocatable implies -meabi. - - * sol2.h (RS6000_ABI_NAME): Default ABI is Solaris, not System - V.4. - (ASM_OUTPUT_ALIGNED_LOCAL): Don't define a Solaris specific - method. - -Mon May 27 06:39:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_builtin, case BUILT_IN_{LONG,SET}JMP): - Convert block address from ptr_mode to Pmode. - -Sun May 26 20:05:43 1996 Doug Evans - - * gcc.c (MSDOS pexecute): Call xmalloc, not malloc. - -Sun May 26 08:31:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (vax-*-{sysv}): tm_file and xm_file now list. - (vax-*-ultrix): tm_file is now list. - (we32k-att-sysv*): xm_file now list. - * vax/xm-netbsd.h: Deleted. - * vax/netbsd.h: No longer include vax.h and config/netbsd.h. - * vax/ultrix.h, vax/vaxv.h: No longer include vax.h. - * vax/xm-vaxv.h: No longer include xm-vax.h. - * xm-we32k.h: No longer include xm-svr3.h. - - * configure: Separately set target_cpu_default for two - case statements and then combine if both set. - (alpha-*-winnt3): tm_file and xm_file are now list. - Set target_cpu_default to 64. - * winnt/config-nt.bat: Make .h files properly for Alpha. - * alpha.h (WINDOWS_NT): No longer defined and used. - (MASK_WINDOWS_NT, TARGET_WINDOWS_NT): New macros. - (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_WINDOWS_NT. - * alpha.c (output_prolog): Test TARGET_WINDOWS_NT, not WINDOWS_NT. - * alpha.md: Likewise. - * alpha/config-nt.sed: Properly set tm_file and {build,host}_xm_file. - * alpha/win-nt.h: Don't include alpha.h - (WINDOWS_NT): No longer define. - * alpha/xm-winnt.h: Don't include xm-alpha.h and winnt/xm-winnt.h. - -Fri May 24 12:34:22 1996 Doug Evans - - * configure (cpu_type): Add case for arm. - (sparclet-*-aout*): Delete extra_headers. - - * varasm.c (asm_output_bss): New argument DECL. - Use ASM_DECLARE_OBJECT_NAME if defined. - (asm_output_aligned_bss): Likewise. - (assemble_variable): Pass DECL to ASM_OUTPUT{,_ALIGNED}_BSS. - * arm/aout.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * h8300/h8300.h (ASM_OUTPUT_BSS): Update. - * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * i386/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * m68k/coff.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * m68k/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * m68k/m68k-aout.h (ASM_OUTPUT_BSS): Update. - * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * rs6000/win-nt.h (ASM_OUTPUT_ALIGNED_BSS): Update. - * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. - -Thu May 23 19:55:52 1996 Jim Wilson - - * combine.c (set_nonzero_bits_and_sign_copies): Set - reg_sign_bit_copies to one not zero to indicate that the value - is unknown. - -Thu May 23 18:39:24 1996 J.T. Conklin - - * config/netbsd.h (SWITCH_TAKES_ARG): Add -R. - (LINK_SPEC): Add %{R*}. - - * m68k/lb1sf68.asm: Construct exception masks at compile time - instead of or'ing in bits at run time. - -Thu May 23 15:53:06 1996 Ian Lance Taylor - - * sh/sh.md: Add new instruction types fp and fpdiv. Set new - instruction types where appropriate. Add function unit fp. - Claim that store instructions use function unit memory. - -Thu May 23 00:36:19 1996 Jeffrey A. Law - - * h8300/h8300.h (CONSTANT_ADDRESS_P): Don't accept CONST or HIGH - on the H8/300H. - * h8300/h8300.md: Use "m" rather than "o" constraint everywhere - appropriate. Cleanup use of "i" and "n" constraints. - -Wed May 22 17:43:37 1996 Jim Wilson - - * fixincludes (pthread.h): Add extern to __page_size* declarations - for AIX 4.1.x. - - * combine.c (nonzero_bits): Don't assume arg pointer has same - alignment as stack pointer. - -Wed May 22 16:09:05 1996 Michael Meissner - - * rs6000/sysv4.h (LINK_START_DEFAULT_SPEC): Spell macro correctly. - (LIB_DEFAULT_SPEC): Provide default version. - -Wed May 22 11:23:57 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * i386.md (return_pop_internal): new pattern. - (pop): disable emitting of bogus move instruction. - * i386.c (ix86_expand_epilogue): use gen_return_pop_internal to - simultanously return and pop args; removed stray semicolon. - * config/linux-aout.h, config/linux.h (SET_ASM_OP): Added for - __attribute__ ((alias ())) support. - -Wed May 22 08:06:42 1996 Richard Kenner - - * combine.c (init_reg_last_arrays, setup_incoming_promotions): - Correct prototypes. - -Tue May 21 13:42:17 1996 Jeffrey A. Law - - * h8300/h8300.md (div patterns): Rewrite. - (mod patterns): Likewise. - - * pa/pa.c (basereg_operand): Never accept a CONST_INT. - -Tue May 21 12:26:40 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * pa/pa-hpux9.h, pa-osf.h (LINK_SPEC): Provide version for Snake. - -Tue May 21 07:20:48 1996 Pat Rankin - - * vax.h (TARGET_NAME): Define unless already defined. - (TARGET_VERSION): Print TARGET_NAME. - * vax/vms.h (TARGET_NAME): Always redefine. - (TARGET_VERSION): Delete; retain vax.h definition. - -Mon May 20 14:00:44 1996 Jim Wilson - - * sh.c (output_file_start): Delete misplaced semicolon. - -Mon May 20 11:58:15 1996 Jeffrey A. Law - - * reorg.c (relax_delay_slots): Call update_block before - redirecting a branch past a redundant insn. - -Sun May 19 16:40:53 1996 Philippe De Muyter - - * Makefile.in (libobjc.a, sublibobjc.a): 'specs' added to - dependencies. - -Sun May 19 12:25:48 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure: Add new switch to provide default for cpu_type; - delete numerous settings of it in main switch. - (hppa): Reflect rerrangements below; use new configure features. - * pa/pa-gas.h, pa/pa-pro-end.h: New files. - * pa/pa1.h, pa/pa1-osf.h, pa/pa1-ghpux.h, pa/pa1-oldas.h: Deleted. - * pa/pa1-ghpux9.h, pa/pa1-hpux9.h, pa/pa1-hpux.h: Deleted. - * pa/pa1-ghiux.h, pa/pa1-hiux.h, pa/pa-ghpux.h: Deleted. - * pa/pa-gux7.h, pa/pa-ghiux.h: Deleted. - * pa/pa-hiux.h: No longer include pa-hpux.h. - * pa/pa-hpux.h: No longer include pa.h. - (TARGET_DEFAULT): Unset before setting. - (LINK_SPEC): Provide option for pa1. - * pa/pa-hpux7.h: No longer include pa.h. - (HP_FP_ARG_DESCRIPTOR_REVERSED): Don't define here. - * pa/pa-hpux9.h, pa/pa-oldas.h: No longer include pa-hpux.h. - (TARGET_DEFAULT): Don't need to set here. - * pa/pa-osf.h: No longer include pa.h. - (TARGET_DEFAULT): Don't define; identical to default. - * pa/pa-pro.h: No longer include pa.h. - Move definitions after include to new file pa-pro-end.h. - * pa.h (TARGET_SWITCHES): Include TARGET_CPU_DEFAULT. - (TARGET_CPU_DEFAULT): Provide default value. - (CPP_SPEC): Test TARGET_CPU_DEFAULT too. - - * Makefile.in (function.o): Includes bc-emit.h. - (reg-stack.o): Includes insn-flags.h. - * expr.h (function_value): Deleted; no such function. - (bc_build_calldesc, bc_runtime_type_code): New declarations. - * c-decl.c: Add prototypes for all static functions. - * c-iterate.c: Likewise. - * dbxout.c: Likewise. - (adspath): Delete; never used and has numerous parse errors. - * dwarfout.c: If not GNUC, make `inline' null; otherwise, leave alone. - Add `static' to inline functions. - Add prototypes for static function. - * expr.c (bc_runtime_type_code): Delete redundant declaration. - * function.c: Include bc-emit.h. - ({save,restore}_machine_status): Add prototype for args. - (bc_runtime_type_code, bc_build_calldesc): Delete redundant decls. - (bc_emit_trampoline, bc_end_function): Likewise. - * reg-stack.c: Include insn-flags.h. - Add prototypes for static functions. - (gen_jump, gen_movdf, gen_movxf): Delete redundant declarations. - (find_regno_note, emit_jump_insn_before, emit_label_after): Likewise. - (swap_rtx_condition): Now static. - * sdbout.c: Add prototypes for static functions. - (sdbout_parms, sdbout_reg_parms): Delete extra parm to plain_type. - -Sun May 19 11:50:10 1996 John Carr - - * alpha.c (alpha_emit_conditional_move): Compare to 0 in correct mode. - -Sat May 18 20:17:27 1996 Jim Wilson - - * sh.c (prepare_move_operands): If source is r0, and dest is reg+reg - MEM, then copy source to a pseudo-reg. - * sh.md (untyped_call): New pattern. - - * unroll.c (copy_loop_body): When update split DEST_ADDR giv, - check to make sure it was split. - (find_splittable_givs): Fix reversed test of verify_addresses result. - -Sat May 18 10:26:04 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (unsave_expr_now): Avoid use of NULL_RTX since no rtl.h. - - * configure: Set cpu_default, tm_file, and xm_file early. - Remove redundant settings of those, tmake_file, and xmake_file. - Use ${tm_file} and ${xm_file} to refer to the main files. - Sort some entries for consistency and reformat some others. - (rs6000, powerpc): Remove bogus test on host == target. - (alpha-*-linux): xm-linux.h no longer includes xm-alpha. - (alpha-*-osf*): Remove redundant setting of target_cpu_default. - (*-convex-*): Use target_cpu_default instead of separate .h files. - (clipper-intergraph-clix*): clix.h no longer includes any files. - (i860, i960, pdp11): Reflect removal of includes listed below. - * alpha/xm-linux.h: No longer include xm-alpha.h. - * clipper/clix.h: No longer include clipper.h and svr3.h. - * convex.h: Provide a default for TARGET_DEFAULT. - Take "or" of TARGET_DEFAULT and TARGET_CPU_DEFAULT everywhere. - * convex/convex{1,2,32,34,38}.h: Deleted. - * i860/bsd-gas.h: No longer include bsd.h. - * i860/bsd.h: No longer include i860.h. - * i860/fx2800.h: No longer include i860/sysv4.h. - (OUTPUT_TDESC): No longer define. - (ASM_FILE_END): Move redefinition to here. - * i860/mach.h: No longer include i860.h. - * i860/paragon.h, i860/sysv3.h: No longer include i860.h and svr3.h. - * i860/sysv4.h: No longer include i860.h and svr4.h. - (ASM_FILE_END): Delete redefinition from here. - * i860/xm-fx2800.h: No longer include xm-i860.h. - * i860/xm-paragon.h, i860/xm-sysv{3,4}.h: Deleted. - * i960/i960-coff.h: No longer include i960.h and dbxcoff.h. - * i960/vx960-coff.h: No longer include i960-coff.h. - * i960/vx960.h: No longer include i960.h. - * pdp11/2bsd.h: No longer include pdp11.h. - - * i370/i370.h: Renamed from mvs.h. - * i370/i370.c: Renamed from mvs370.c. - * i370/t-i370: Renamed from t-mvs. - * i370/xm-i370.h: Renamed from xm-mvs.h. - * configure (i370-*-mvs*): Use default names for all files. - - * c-parse.in: Update number of shift/reduce conflicts for objc. - -Sat May 18 08:20:17 1996 Dennis Glatting (dennisg@plaintalk.bellevue.wa.us) - - * m68k/next.h (FINALIZE_TRAMPOLINE): Add missing backslashes. - -Fri May 17 19:57:20 1996 Pat Rankin - - * vax/xm-vms.h (dbxout_resume_previous_source_file): New macro. - -Fri May 17 14:20:13 1996 Mike Stump - - * expr.c (expand_expr, cond TARGET_EXPR): Make TARGET_EXPRs - redoable for UNSAVE_EXPR. - * stmt.c (expand_decl_cleanup): Wrap the cleanup in an UNSAVE_EXPR - to that we can redo it. - * tree.c (unsave_expr_now): Handle TARGET_EXPRs fully now. - * tree.def (TARGET_EXPR): Add a fourth field so that TARGET_EXPRs - are redoable. - - * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++ - frontend to the backend where it belongs. - * tree.c (unsave_expr): Likewise. - (unsave_expr_now): Likewise. - * tree.def (UNSAVE_EXPR): Likewise. - * tree.h (unsave_expr): Likewise. - (unsave_expr_now): Likewise. - -Fri May 17 15:04:40 1996 Michael Meissner - - * rs6000.md (lshrsi3 insns): Add special case code for shifting by - 0 to avoid bad code generated with no optimization. - -Fri May 17 13:50:55 1996 Jason Merrill - - * i386/unix.h (ASM_OUTPUT_MI_THUNK): Define. - * i386/{att.h,bsd.h,sun386.h} (ASM_OUTPUT_MI_THUNK): Delete. - -Fri May 17 13:34:28 1996 Ian Lance Taylor - - * config/fp-bit.c (_fpdiv_parts): Correct sign handling when - dividing zero or infinity by something. - -Fri May 17 12:36:36 1996 Doug Evans - - Standardize option output in assembler files. - * Makefile.in (toplev.o): Pass -DTARGET_NAME. - * arm/aout.h (ASM_OUTPUT_OPTIONS): Delete. - (ASM_FILE_START): Delete option output support. - * arm/arm.c (output_option, output_options, m_options): Delete. - * m88k/m88k.c (output_file_start): Delete option output support. - * m88k/m88k.h (ASM_COMMENT_START): Define. - * mips/mips.c (target_switches, print_options): Delete. - (mips_asm_file_start): Put output of -G,Cpu,ISA here. - * mips/mips.h (ASM_COMMENT_START): Change from "\t\t#" to " #". - * rs6000/rs6000.c (output_option, m_options, output_options): Delete. - * rs6000/rs6000.h (ASM_OUTPUT_OPTIONS): Delete. - (ASM_COMMENT_START): Define. - (ASM_FILE_START): Delete option output support. - * rs6000/sysv4.h (ASM_FILE_START): Likewise. - * rs6000/win-nt.h (ASM_FILE_START): Likewise. Delete duplicate. - * sh/sh.c (output_option, m_options, output_options): Delete. - (output_file_start): Delete option output support. - * sh/sh.h (ASM_FILE_START): Likewise. - (ASM_COMMENT_START): Define. - * dwarfout.c (*): flag_verbose_asm renamed to flag_debug_asm. - * flags.h (flag_debug_asm): Declare. - * toplev.c (print_version): New function. - (print_single_switch): New arguments pos, max, indent, sep, term. - (print_switch_values): New arguments pos, max, indent, sep, term. - Update call to print_single_switch. Output options passed and - options enabled. - (MAX_LINE): New macro. - (flag_debug_asm): Define. - (compile_file): Output options to assembler file. - (main): Recognize -dA. Call print_version. Update call to - print_switch_values. - (line_position): Deleted. - -Fri May 17 10:50:44 1996 Stan Cox (coxs@dg-rtp.dg.com) - - * i386.c (function_prologue, ix86_expand_prologue, - function_epilogue, ix86_expand_epilogue): Generate prologue and - epilogue as RTL (prior to scheduling) instead of emitting asm. - (override_options): If only -march is given, make it the default -mcpu. - * i386.h (FUNCTION_BEGIN_EPILOGUE): Renamed from FUNCTION_EPILOGUE. - * i386.md (return, return_internal, prologue, prologue_set_got, - prologue_get_pc, epilogue, leave, pop): New patterns for emitting - asm from prologue and epilogue RTL. - * m88k/t-dgux (T_CFLAGS): Delete. - * m88k/x-dgux (X_CFLAGS): New. - -Fri May 17 09:54:23 1996 Jim Meyering (meyering@asic.sc.ti.com) - - * Makefile.in (stamp-crt{,S}): Use -o to avoid conflicts if - both of these are built in parallel. - -Fri May 17 08:55:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expmed.c (store_split_bit_field): Don't assume the alignment - of VALUE is the same as the record. - - * configure: Write #define TARGET_CPU_DEFAULT into tm.h - instead of defining MAYBE_TARGET_DEFAULT in Makefile. - (alpha-*-linux): Set target_cpu_default to 4 and xmake_file to none. - (alpha-*-osf*): Set target_cpu_default to 4 if --gas. - * Makefile.in (gcc.o, toplev.o, $(out_object_file)): - Remove MAYBE_TARGET_DEFAULT. - - * combine.c (insn_cuid): New function. - (INSN_CUID): Sometimes call it. - -Fri May 17 08:12:37 1996 Scott Christley - - * objc/sendmsg.c (objc_get_uninstalled_dtable): New function. - * objc/objc-api.h (objc_get_uninstalled_dtable): New declaration. - - * objc/thr-os2.c, objc/thr-posix.c, objc/thr-mach.c: New files. - * objc/THREADS.MACH: New file. - - * objc/sendmsg.c (nil_method): Deleted from here. - * objc/nil_method.c: New file. - * Makefile (OBJC_O): Add dependency for nil_method.c. - - * objc/hash.c (hash_is_key_in_hash): New function. - * objc/hash.h: Include objc/objc.h here instead of in objc/hash.c - to get BOOL typedef. - -Fri May 17 08:01:48 1996 Doug Rupp (rupp@gnat.com) - - * msdos/configur.bat: If Ada subdirectory present, adjust Makefile. - -Fri May 17 07:40:04 1996 Ulrich Drepper (drepper@cygnus.com) - - * stddef.h: If need_wint_t defined, nothing in this file is needed. - (_WINT_T, __WINT__TYPE__, wint_t): Define under certain circumstances. - -Thu May 16 18:53:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (fold, case EQ_EXPR): When folding VAR++ = CONST, - mask the new const if VAR is a bitfield reference; also for VAR--. - -Thu May 16 18:29:03 1996 Doug Evans - - * varasm.c (function_section): Delete flag_function_sections support. - (assemble_start_function): Put it here. Use UNIQUE_SECTION if defined. - -Wed May 15 13:35:11 1996 Michael Meissner - - * rs6000.{h,c,md} (rs6000_pic_register): Delete all uses, use - pic_offset_table_rtx instead. - - * rs6000.md (move_to_float): Rewrite so that it uses the register - allocator to allocate the stack temp, instead of calling - rs6000_stack_temp. - (fix_truncdfsi2): Ditto. - - * rs6000.c (rs6000_stack_temp): Delete, no longer used. - -Wed May 15 10:39:27 1996 Jeffrey A. Law - - * h8300/h8300.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Define. - -Sat May 11 07:42:59 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (store_field): Support BLKmode bitfield if aligned on - byte boundary using emit_block_move. - (expand_expr, case COMPONENT_REF): Likewise. - -Fri May 10 18:33:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (alpha-*-linux): Reverse order in tm_file list. - Delete xmake_file. - * alpha/x-linux: Deleted. - * alpha/linux.h (ASM_FINAL_SPEC): Add #undef. - * alpha/xm-linux.h: Remove bogus trailing #endif. - - * loop.c (maybe_eliminate_biv_1): Disable all but two cases - of biv elimination with givs and restrict those two cases to - an ADD_VAL that is an address. - - * flow.c (mark_set_1, mark_used_regs): Clean up usages - of ALL_NEEDED; change to SOME_NOT_NEEDED and set properly. - -Fri May 10 11:37:38 1996 Jason Merrill - - * toplev.c (compile_file): Don't warn about artificial functions - declared static and not defined. - -Thu May 9 22:03:28 1996 Doug Evans - - * varasm.c (assemble_start_function): ASM_DECLARE_FUNCTION_NAME - needn't consider bytecodes. - (assemble_variable): ASM_DECLARE_OBJECT_NAME needn't - consider bytecodes. - * toplev.c (rest_of_decl_compilation): Likewise with - ASM_FINISH_DECLARE_OBJECT. - * arm/aof.h (ASM_DECLARE_{FUNCTION,OBJECT}_NAME): Delete bytecode - support. - * vax/vms.h (ASM_DECLARE_OBJECT_NAME): Likewise. - -Thu May 9 19:36:13 1996 Jim Wilson - - * sh.h (SET_ASM_OP): Define. - -Thu May 9 13:31:58 1996 Michael Meissner - - * rs6000/sysv4.h (SUBTARGET_{SWITCHES,OPTIONS}): Add support for - finer grain control on -msdata, so that eabi people can specify to - compile sdata code to only use r13 instead of r2/r13. Make - -mrelocatable-lib turn off -msdata, just like -m relocatable does. - (SUBTARGET_OVERRIDE_OPTIONS): Ditto. - (ENCODE_SECTION_INFO): Move to rs6000.c. - (ASM_SPEC): -msdata=eabi sets -memb also. - (CC1_SPEC): -mno-sdata gets converted to -msdata=none. - - * rs6000.c (rs6000_sdata{,_name}): Add support for finer grain - control on -msdata. - (output_options): Ditto. - (small_data_operand): Ditto. - (print_operand): Ditto. - (rs6000_select_section): Ditto. - (rs6000_encode_section_info): Move here from sysv4.h, section - names are stored as STRING nodes, not IDENTIFIER. - -Wed May 8 21:04:49 1996 Doug Evans - - * function.c (aggregate_value_p): Return 1 if TREE_ADDRESSABLE. - * pa/pa.h (RETURN_IN_MEMORY): No longer test for TREE_ADDRESSABLE. - -Tue May 7 13:42:57 1996 Jeffrey A. Law - - * h8300/h8300.c: Include obstack.h. - (bit_memory_operand): New function. - (print_operand): Append ":16" to a memory reference to - the tiny data area. - (h8300_tiny_data_p): New function. - (h8300_valid_machine_decl_attribute): Accept "tiny_data". Fix - typo. - (h8300_encode_label): New function. - (h8300_adjust_insn_length): References to the tiny data section - are two bytes shorter than normal accesses on the H8/300H. - * h8300/h8300.h (OK_FOR_U): Fix thinko. - (ENCODE_SECTION_INFO): Encode info for tiny data variables. - (STRIP_NAME_ENCODING): Define. - * h8300/h8300.md (movqi insn): Fix length for a constant load. - (movstrictqi): Likewise. - (movhi, movstricthi): Likewise. - (memory btst patterns): Add register to the constraints to keep - reload happy. - - * h8300/h8300.h (OK_FOR_U): (const (plus (symbol_ref) (const_int))) - is a valid U operand if SYMBOL_REF_FLAG is set on the - SYMBOL_REF. - * h8300/h8300.md (memory btst patterns): New patterns. - - * h8300/h8300.c (h8300_eightbit_data_p): Renamed from - h8300_tiny_data_p. - (h8300_eightbit_data_p): Check for the "eightbit_data" - attribute instead of "tiny_data". - (h8300_valid_machine_decl_attribute): Likewise. - * h8300/h8300.h (ENCODE_SECTION_INFO): Call h8300_eightbit_data_p - instead of h8300_tiny_data_p. - - * h8300/h8300.h (READONLY_DATA_SECTION): Define. - (EXTRA_SECTIONS): Add in_readonly_data. - (READONLY_DATA_SECTION_ASM_OP): Define. - (EXTRA_SECTION_FUNCTINOS): Add readonly_data. - -Tue May 7 09:26:24 1996 Jason Merrill - - * varasm.c (make_decl_rtl): Update DECL_ASSEMBLER_NAME for local - statics. Remove reference to flag_no_common. - -Mon May 6 21:38:36 1996 Paul Eggert - - * cpplib.c (skip_comment, handle_directive): Don't use uninit vars. - -Mon May 6 18:47:36 1996 Doug Evans - - * dbxout.c (dbxout_function): When deciding to call dbxout_function_end - change test from flag_function_sections to DECL_SECTION_NAME != NULL. - - * varasm.c (named_section): Accept any decl. - -Mon May 6 16:41:08 1996 Stan Cox (coxs@dg-rtp.dg.com) - - * final.c (final_scan_insn): Modify conditional moves whose cc is - nonstandard. - - * c-common.c (decl_attributes): Chain multiple attributes correctly. - -Mon May 6 15:41:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stmt.c (expand_decl): Don't deduce alignment of SIZE from - DECL_ALIGN; use TYPE_ALIGN instead. - - * function.c (assign_parms): Set RTX_UNCHANGING_P in stack_parm - if parm is read-only. - - * c-common.c (truthvalue_conversion, case ADDR_EXPR): Don't - treat address of external decl as always nonzero. - -Mon May 6 11:33:57 1996 Jason Merrill - - * c-decl.c (start_decl): Check -fno-common here. - * varasm.c (assemble_variable): Instead of here. - * final.c (end_final): Likewise. - * c-common.c (init_attributes, decl_attributes): Add A_COMMON. - -Mon May 6 11:12:39 1996 Mike Stump - - * expr.c (expand_increment): Add third parameter to know when to - ignore the result value. - (store_constructor): Likewise - (expand_expr, case {PRE,POST}{INC,DEC}REMENT_EXPR): Likewise. - * tree.c (stabilize_reference): Always ignore the first operand of - COMPOUND_EXPRs. - -Mon May 6 13:14:45 1996 Jim Wilson - - * sh.c (gen_shifty_op): Truncate VALUE to avoid out of bounds array - access. - - * expr.c (expand_expr, case INDIRECT_REF): Delete obsolete code - to special case a SAVE_EXPR operand. - -Mon May 6 10:00:12 1996 Pat Rankin - - * vax.h (ASM_OUTPUT_MI_THUNK): Define. - -Mon May 6 09:49:10 1996 Andreas Schwab - - * m68k/linux.h: Use the new trampoline definition. - (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Deleted. - (INITIALIZE_TRAMPOLINE): Changed. - (FINALIZE_TRAMPOLINE, CLEAR_INSN_CACHE): New. - -Mon May 6 09:43:55 1996 Patrick J. LoPresti (patl@lcs.mit.edu) - - * rtlanal.c (rtx_addr_varies_p): Scan operands of type `E'. - -Mon May 6 09:04:40 1996 H.J. Lu (hjl@gnu.ai.mit.edu) - - * x-linux{,-aout} (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): Deleted. - * config/t-linux (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): New, - moved from x-linux. - * t-linux-aout: New file. - * configure (i[3456]86-*-linux*oldld*, i[3456]86-*-linux*aout*): - Set tmake_file to t-linux-aout. - -Sun May 5 22:13:22 1996 H.J. Lu (hjl@gnu.ai.mit.edu) - - * Makefile.in (gxx_include_dir): Change to $(prefix)/include/g++. - (old_gxx_include_dir): New - defined as $(libdir)/g++-include. - (cccp.o, cpplib.o): Also pass OLD_GPLUSPLUS_INCLUDE_DIR (set - from $(old_gxx_include_dir)). - * cccp.c (include_defaults_array): For C++, also search - OLD_GPLUSPLUS_INCLUDE_DIR. - * cpplib.c (default_include): Likewise. - * configure: Remove no-longer-needed support for --gxx-include-dir. - -Sun May 5 21:59:53 1996 Andreas Schwab - - * c-lex.c (check_newline): Fix #pragma parsing; issue error message - for directive that starts with `p' but isn't `pragma'. - -Sun May 5 13:13:40 1996 Jeremy Bettis - - * objc/hash.c (hash_value_for_key): Prevent endless loop when 0 was - stored in a hashtable. - -Sun May 5 13:09:54 1996 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) - - * m68k/newsgas.h (SET_ASM_OP, ASM_WEAKEN_LABEL): Define. - -Sun May 5 12:48:08 1996 Stephen L Moshier (moshier@world.std.com) - - * tree.c (build_real_from_int_cst): Remove spurious test for - REAL_IS_NOT_DOUBLE. - -Sat May 4 12:17:58 1996 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.h (ASM_OUTPUT_MI_THUNK): Moved here from aout.h. Rewrite to be - independent of the selected assembler, and to use optimal number of - instructions. - * arm/aout.h (ASM_OUTPUT_MI_THUNK): Delete. - - * arm/aout.h (ASM_OUTPUT_OPTIONS): Define. - (ASM_FILE_START): Call ASM_OUTPUT_OPTIONS. - (BSS_SECTION_OP): Define. - (ASM_OUTPUT_ALIGN): Don't output anything if byte alignment is wanted. - (ASM_OUTPUT_ALIGNED_BSS): Define. - * arm.h (target_cpu_name): Delete. - (TARGET_SWITCHES): Delete "be" and "le". - (TARGET_OPTIONS): Delete "cpu-", add "tune=". - (struct arm_cpu_select): New struct. - (PROCESSOR_DEFAULT, TARGET_CPU_DEFAULT): Define. - (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Cmode. - (CANONICALIZE_COMPARISON): Define. - * arm.c (arm_select): Declare and initialize. - (all_procs): Add arm7100. - (arm_override_options): Parse arm_select structure to determine - selected architecture and tuning parameters. - (output_option, output_options): New functions. - (arm_canonicalize_comparison): New function. - (arm_gen_movstrqi): Don't add a writeback of the index registers for - the last instructions. - (arm_select_cc_mode): Detect case where mode is carry out of unsigned - arithmetic. - (output_lcomm_directive): Use bss_section (), and use alignment - rather than rounding. - (get_arm_condition_code): Handle CC_Cmode. - (final_prescan_insn): Avoid boundary case where we would occasionally - inline MAX_INSNS_SKIPPED+1 insns. Allow call_insns to be inlined in - APCS_32 mode if they are the last insn in the block. - * arm.md (*addsi3_compareneg): Delete potentially unsafe insn. - (*addsi3_compare_op[12]): New insns. - (*compare_addsi2_op[01]): New insns. - (*addsi3_carryin, *addsi3_carryin_alt[12]): New insns. - (*cmp_ite1): Use arm_add_operand instead of arm_rhs_operand. - * semi.h (PROCESSOR_DEFAULT): Default to PROCESSOR_ARM6. - -Fri May 3 10:52:11 1996 1996 Stan Cox (coxs@dg-rtp.dg.com) - - * i386.md (movesicc, movehicc) Pentium Pro conditional move insns. - - * i386.h (TARGET_PENTIUMPRO, TARGET_CMOVE, BRANCH_COST, - ASM_OUTPUT_FUNCTION_PREFIX): New macros for conditional move. - - * i386.c (asm_output_function_prefix, function_prologue): Setup - pic on Pentium Pro so a return will match the call. - (print_operand, put_condition_code): Output conditional move suffixes. - -Fri May 3 10:52:11 1996 Jason Merrill - - * i386/{att.h,gas.h,bsd.h,sub386.h} (ASM_OUTPUT_MI_THUNK): Define. - -Wed May 1 17:54:51 1996 Doug Evans - - * sparc.h (ASM_OUTPUT_MI_THUNK): Fix for sparc64, optimize. - -Wed May 1 13:28:32 1996 Jason Merrill - - * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Define. - * i386/sysv4.h: Likewise. - * sparc/sysv4.h: Likewise. - -Wed May 1 01:44:47 1996 Jeffrey A. Law - - * h8300/h8300.c (h8300_adjust_insn_length): Adjust the cost of - shifts by small constant values. - * h8300/h8300.md: Refine comments. Remove names from many - patterns which don't need them. - (compare insns): Don't underestimate lengths. - (andqi3 expander): Remove constrains. - (andhi3): Don't underestimate length. - (andsi3): Don't underestimate length. Improve code when upper - or lower half of destination is being cleared. - (indirect_jump_h8300, indirect_jump_h8300h): Simplify. - (shift insns): Remove useless "I" constraint. - - * h8300/h8300.md (bcs type): Remove "bcs" type attribute and - all references. - (bcs insns): Delete. No longer needed. - (setcc from bitfield): Rewrite to use zero_extract. Provide - QImode, HImode and SImode variants. - -Tue Apr 30 18:13:09 1996 Jason Merrill - - * svr4.h (SELECT_SECTION): If RELOC is true, put it in data. - -Tue Apr 30 17:26:30 1996 Jason Merrill - - * fold-const.c (fold): Don't call convert to recreate tree nodes - we already have. - -Tue Apr 30 16:52:41 1996 Jeffrey A. Law - - * h8300/h8300.c (one_insn_adds_subs_operand): New function. - (h8300_adjust_insn_length): New function. - * h8300/h8300.h (ADJUST_INSN_LENGTH): Define. - * h8300/h8300.md: Remove obsolete comments. - (move patterns): Tweak constraints. - (tst patterns): Use "register_operand" for predicate. - (adds pattern): Use one_insn_adds_subs_operand to get length - computation correct. - (subs pattern): Similarly. - (movstrhi): Remove unused expander. - (fancy*, pxor, and-not patterns): Remove. No longer needed. - -Tue Apr 30 13:35:06 1996 Michael Meissner - - * rs6000/sol-c0.c (_start): Temporarily display calling - __do_global_ctors, since the Solaris linker doesn't handle the - relocations properly. - -Mon Apr 29 13:03:12 1996 Doug Evans - - * sparc/vxsparc.h: sparc-aout.h renamed to aout.h. - -Mon Apr 29 00:35:15 1996 Jeffrey A. Law - - * h8300/h8300.c (names_small): Remove "BAD" postfix from - %r7 byte registers. - (rtx_equal_function_value_matters): Remove extra declaration. - (output_simode_bld): New function. - * h8300/h8300.h (NO_FUNCTION_CSE): Do define this. Register - pressure makes cse-ing function addresses rarely a win. - (reg_class): Remove unnecessary register classes LONG_REGS, - SP_REG, SP_AND_G_REGS. - (REG_CLASS_NAMES): Corresponding changes. - (REG_CLASS_CONTENTS): Corresponding changes. - (REGNO_REG_CLASS): Corresponding changes. - (REG_CLASS_FROM_LETTER): Corresponding chagnes. - (output_simode_bld): Declare. - * h8300/h8300.md: Nuke comments for stuff which has been fixed. - (all patterns): Remove references to register class "a" (SP_REGS) - which no longer exists. - (many patterns): Accept auto-inc auto-dec addresses in more cases. - (zero_extendqisi2): New pattern for the H8/300. - (zero_extendhisi2): Only use zero_extendhisi2_h8300 when not optimizing. - (extendhisi2): Only use extendhisi2_h8300 when not optimizing. - (extendqisi2): New pattern for the H8/300. - (bitfield related patterns): Completely rewrite. - (fancy_bclr, fancy_btst): Deleted. Redundant with new bitfield - patterns. - (addhi3 pattern for h8300): Handle case where we can't make matching - constraints (works around hard to fix reload problem). - (stack_pointer_manip): Delete. - (and not patterns): New combiner patterns. - - * pa/pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Make sure the - final $CODE$ subspace is in the $TEXT$ space. - -Sun Apr 28 14:52:21 1996 Jason Merrill - - * svr4.h (ASM_OUTPUT_SECTION_NAME): If no decl is specified, - make the section read/write data. - -Sat Apr 27 10:28:59 1996 Michael Meissner - - * rs6000/t-ppcgas (MULTILIB_EXCEPTIONS): Don't allow -mrelocatable - and -mcall-sysv-noeabi. - - * rs6000/sysv.h (SUBTARGET_OVERRIDE_OPTIONS): The -mcall-aix - option sets -meabi. Don't allow -mrelocatable without -meabi. - -Fri Apr 26 16:10:46 1996 Doug Evans - - * sparc/sparc.md (*smacsi,*smacdi,*umacdi): Fix constraint on - operand 0. - -Fri Apr 26 14:36:33 1996 Michael Meissner - - * gcc/config/i960/t-{960bare,vxworks960} (MULTILIB*): Add - soft-float multilib support. - -Fri Apr 26 06:38:56 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (layout_decl): Turn off DECL_BIT_FIELD for BLKmode - that's properly aligned and a multiple of a byte. - -Thu Apr 25 22:43:19 1996 Doug Evans - - * i386/gas.h (ASM_OUTPUT_ALIGN): #if 0 out again. - Undoes change of Apr. 9. - * i386/go32.h (ASM_OUTPUT_ALIGN): Define. - -Thu Apr 25 14:05:33 1996 Richard Kenner (kennervlsi1.ultra.nyu.edu) - - * calls.c (expand_call): In inlining case, if BEFORE_CALLS is - zero, start looking at first insn (one more place). - - * expr.c (expand_builtin, case BUILT_IN_SETJMP): CLOBBER the - static chain after label at setjmp point. - -Thu Apr 25 09:02:24 1996 Michael Meissner - - * rs6000.c (print_operand{,_address}): Correct compile error if - TARGET_EABI is not defined. Also, just call small_data_operand, - without testing the ABI. - (rs6000_select_section): Ditto. - - * rs6000/sysv4.h (CC1_SPEC): For -mcall-solaris, don't pass - -mno-main-init. - -Wed Apr 24 18:26:48 1996 Brendan Kehoe - - * collect2.c (handler): Delete export_file when we get a signal. - -Wed Apr 24 14:54:44 1996 Jeffrey A. Law - - * pa/pa1-ghpux.h (LINK_SPEC): Define. Link in PA1.1 libraries - by default. - * pa/{pa1-ghpux9.h, pa1-hpux.h, pa1-hpux9.h}: Likewise. - -Wed Apr 24 11:12:06 1996 Michael Meissner - - * configure (powerpc{,le}-*-eabi*): Use t-ppc{,gas}, instead of - t-eabi{,gas}. - (powerpc-*-linux,powerpcle-*-solaris): Add definitions. - (MULTILIB_DIRNAMES): Pick shorter names for the multilib - directories. - (MULTILIB_*): Do not build -msdata versions of the library. Build - both system V and eabi versions of the libraries. - - * rs6000/t-ppc{,gas} (MULTILIB*): Don't build -msdata versions of - the libraries. Split -mcall-sysv libraries into - -mcall-sysv-{eabi,noeabi} varients. - (LIB2FUNCS_EXTRA): Add eabi.S, eabi-ctors.c. - (eabi.S): Use eabi.S, not eabi.s for eabi.asm. - (crt files): Add support for Solaris crt files. - - * rs6000/sol{2.h,-c0.c,-ci.asm,-cn.asm}: New files for Solaris - support. - - * rs6000/linux.h: New file for Linux support. - - * rs6000/eabi-ci.asm (ppc-asm.h): Include. - (.got section): Correct attribute. - - * rs6000/eabi-c{i,n}.asm (.init,.finit): Add support for System V - style .init/.fini sections, that constructors and destructors - place a bl in the appropriate section. - - * rs6000/eabi-ctors.c (__do_global_{c,d}tors): Call __init, and - __fini to handle constructors/destructors in the .init, .fini - sections. - - * rs6000/{eabi,sysv}.h: Move most eabi configuration stuff from - eabi.h to sysv.h. - - * rs6000/sysv.h (TARGET_*): Convert -mcall-xxx from a switch into - an option. Add -mcall-{solaris,linux,sysv-eabi,sysv-noeabi} - options. Add -m{,no-}eabi options to control whether we adhere to - the System V spec or the EABI spec. Add -m{,no-}regnames to - control whether registers are printed out as %r0 instead of 0. - (SUBTARGET_OVERRIDE_OPTIONS): Add support for new -mcall options. - (FP_ARG_MAX_REG): Use new macros for ABI conformance. - (RS6000_REG_SAVE): Ditto. - (STACK_BOUNDARY,BIGGEST_ALIGNMENT): If eabi, align to 8 byte - boundary, otherwise 16 byte. - (EXTRA_SECTIONS): Add .init, .fini sections. - (*_SPEC): Reorganize so that the different targets all have sub - specs that go in the specs file. Add support for linux and - Solaris targets. - - * rs6000/{sysv4,eabi}*.h (*_SPECS): Only override the default - spec, all other specs moved to sysv4.h. - (RS6000_ABI_NAME): Use RS6000_ABI_NAME to set the default ABI - name, not TARGET_DEFAULTS. - - * rs6000/xm-sysv4.h (alloca): Properly declare alloca if compiler - is not GCC. - (DONT_DECLARE_SYS_SIGLIST): Define. - - * rs6000.c (rs6000_abi_name): New global for getting the results - of -mcall-xxx. - (rs6000_reg_names): New global for holding the normal register - names. - (alt_reg_names): Alternate register names for -mregnames. - (rs6000_override_options): If -mregnames, copy alt_reg_names into - rs6000_reg_names. - (input_operand): Recognize ABI_SOLARIS. - (small_data_operand): Ditto. - (init_cumulative_args): Ditto. - (function_arg{,_boundary,_advance,_partial_nregs}): Ditto. - (function_arg_pass_by_reference): Ditto. - (setup_incoming_varargs): Ditto. - ({rs6000,debug}_stack_info): Ditto. - (output_{prolog,epilog}): Ditto. - (print_operand): %$ prints '.' on Solaris, '$' elsewhere. - (print_operand{,_address}): If not eabi, use @sdarel for small - data references. - (rs6000_stack_info): Only emit __eabi call if TARGET_EABI. - - * rs6000.h (*_SPECS): Move the System V specs to svr4.h. - (ABI_SOLARIS): New ABI, mostly like System V. - (EXTRA_CONSTRAINT): Use ABI_SOLARIS like ABI_V4. - (RETURN_ADDRESS_OFFSET): Ditto. - (LEGITIMATE_SMALL_DATA_P): Ditto. - (RETURN_IN_MEMORY): On Solaris, small structures are returned in - registers. - (REGISTER_NAMES): Use rs6000_reg_names array, instead of string - literals. - (DEBUG_REGISTER_NAMES): Define. - (ADDITIONAL_REGISTER_NAMES): Add sp, toc aliases. - (PRINT_OPERAND_PUNCT_VALID_P): Recognize $ as a punctuation char. - - * rs6000.md (got & call patterns): Use ABI_SOLARIS to mean the - same as ABI_V4. - (branch patterns): Use %$ for the current location, not just $. - - * va-ppc.h: Add Solaris support. - -Tue Apr 23 20:02:13 1996 Doug Evans - - * sparc/sparc.c (output_function_prologue): In -mbroken-saverestore - case, %sp = %fp - size. - * sparc/t-splet (TARGET_LIBGCC2_CFLAGS): Delete. - * sparc/sparc.md (isa attribute): Add sparclet. - (*smacsi,*smacdi,*umacdi): Use match_operand, not match_dup - for third arg. - (*mulsidi3_sp32,const_mulsidi3,*umulsidi3_sp32,const_umulsidi3): Use - smuld,umuld for sparclet. - -Tue Apr 23 16:28:28 1996 Michael Meissner - - * config/m68k/m68kemb.h: Add {LINK,STARTFILE,LIB,SUBTARGET}_SPEC, so - gcc will use libgloss for supported target boards {idp,mvme,bcc}. - -Tue Apr 23 16:00:28 1996 Per Bothner - - * expr.c (store_constructor): Fix test for missing array elements. - -Tue Apr 23 11:21:09 1996 Stephen L Moshier (moshier@world.std.com) - - * config/i386/sco5.h (BSS_SECTION_ASM_OP): Use `data' directive. - (ASM_OUTPUT_ALIGNED_LOCAL): Generate an `lcomm' directive. - (TARGET_DEFAULT): Include TARGET_IEEE_FP. - (CPP_PREDEFINES): Include Di386. - -Mon Apr 22 12:00:46 1996 David Edelsohn - - * rs6000.h (BIGGEST_FIELD_ALIGNMENT): Delete. - (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Define. - * sysv4.h (BIGGEST_FIELD_ALIGNMENT): Delete. - (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. - * win-nt.h (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. - -Sun Apr 21 17:52:36 1996 Jim Wilson - - * m68k/coff.h (ASM_OUTPUT_SECTION): Test DECL before - dereferencing it. - - * cse.c (cse_process_notes): Handle SUBREG like ZERO_EXTEND. - -Sun Apr 21 12:57:12 1996 Doug Evans - - * arm/aout.h (ASM_OUTPUT_MI_THUNK): Define. - -Sun Apr 21 09:50:09 1996 Stephen L Moshier (moshier@world.std.com) - - * choose-temp.c: Include sys/types.h before sys/file.h for sco3.2v5. - -Sun Apr 21 08:42:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (check_float_value): Cast args of bcopy to avoid warnings. - -Sat Apr 20 21:22:21 1996 David Edelsohn - - * stor-layout.c (layout_record): Use ADJUST_FIELD_ALIGN to modify - alignment of fields within records. - -Sat Apr 20 19:55:33 1996 Niels Moller - - * c-parse.in (typespec): Made equivalent - to (id ). - (non_empty_protocolrefs): New nonterminal. - -Sat Apr 20 08:34:02 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * stmt.c (check_for_full_enumeration_handling): Call case_tree2list - before checking for case expressions not corresponding to enumerators. - (mark_seen_cases): If SPARSENESS == 2, exploit AVL order. - Else, convert tree to list. - Set xlo to -1 if SPARSENESS == 1 search failed. - (expand_end_case): Avoid calling case_tree2list on list. - -Fri Apr 19 16:54:57 1996 Michael Meissner - - * rs6000/win-nt.h (BIGGEST_FIELD_ALIGNMENT): Set to 64, not - 32 that AIX uses. - -Fri Apr 19 16:40:38 1996 Stan Cox - - * i386.md (movqi): Handle QImode values in %si and %di. - -Thu Apr 18 20:56:56 1996 Jim Wilson - - * sh.md (lshrsi3): Change gen_ashlsi3_d to gen_lshrsi3_d. - -Thu Apr 18 15:49:28 1996 Per Bothner - - * sparc.h (ASM_OUTPUT_MI_THUNK): Define. - -Thu Apr 18 15:19:26 1996 Jeffrey A. Law - - * h8300.md: Remove "type" attribute from all patterns - except those which have varying length branches. Eliminate - obsolete "type" attributes. Add additional comments about insn - length computation problems and further optimizations. Add - "length" and "cc" attributes to insns without them, fix a few - length computations. Remove patterns which are commented out. - - * h8300.md (zero extension expanders and insns): Simplify, fix various - length problems, provide optimized versions for the h8300 and h8300h. - (sign extension expanders and insns): Likewise. Make them - nearly identical to zero_extension patterns and insns. - -Wed Apr 17 18:50:16 1996 Jeffrey A. Law - - * pa.h (SELECT_SECTION): Define. Never place a something - into the read-only data section if it requires a reloc. - - * pa.md (rotlsi3): Delete unnecessary and incorrect pattern. - -Wed Apr 17 17:15:40 1996 Michael Meissner - - * rs6000.md (movdi): Never FAIL, even if operand[1] is not a - general operand, due to being in volatile memory. - -Wed Apr 17 15:20:10 1996 Brendan Kehoe - - * c-lex.c (check_newline): Rewrite to use tokens. - (handle_sysv_pragma): Take a token instead of a character. - * i960.c (process_pragma): Take the IDENTIFIER_POINTER tree - node instead of a character. - * sh.c (handle_pragma): Likewise. - * config/nextstep.c (handle_pragma): Likewise. - * h8300.c (handle_pragma): Likewise. - * i960.h (HANDLE_PRAGMA): Expect/pass 2nd arg of NODE, not CH. - * sh.h (HANDLE_PRAGMA): Likewise. - * config/nextstep.h (HANDLE_PRAGMA): Likewise. - * h8300.h (HANDLE_PRAGMA): Likewise. - -Wed Apr 17 14:28:43 1996 Doug Evans - - * choose-temp.c: Don't include sys/file.h ifdef NO_SYS_FILE_H. - #include . - (choose_temp_base): Make tmp,usrtmp, static locals. - -Wed Apr 17 08:41:02 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (alpha_emit_conditional_move): Fix some bugs in previous - change and do some cleanup. - -Tue Apr 16 18:53:05 1996 Jim Wilson - - * reload.c (push_reload): Add extra reload for inside of SUBREG if - it is CONSTANT_P. - - * expr.c (do_store_flag): Rewrite last change to avoid compiler - warnings. - - * reload.c (push_reload): When reuse an old reload, set the modes - to be the larger of the old and new modes. - - * i960/t-960bare (xp-bit.c): Fix typo in source file name. - -Tue Apr 16 18:09:16 1996 Jeffrey A. Law - - * h8300/h8300.md (andhi3): If 2nd operand is a CONST_INT that - meets the 'J' constraint, then only two bytes are needed for - this insn. Improve code generated for the h8300h when both - operands are registers. - (iorhi3, xorhi3): Likewise. Rework to be nearly identical to andhi3. - (andsi3): If 2nd operand is a CONST_INT that meets the 'J' - constraint, then only two bytes are need for this insn. - Improve code generated for the h8300h regardless of the - type of the 2nd operand. Make this pattern work on the h8300 too. - (iorsi3, xorsi3): Likewise. Rework to be nearly identical to andsi3. - (iorqi3_internal): Make this pattern look more like andqi3_internal. - (one_cmplhi2, one_cmplsi2): Fix length computation for H8300H. - -Tue Apr 16 17:43:25 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * i386.md (addsidi3_2): Handle non-MEM overlap case. - -Tue Apr 16 16:59:49 1996 Richard Henderson - - * function.c (expand_function_end): Allow TRAMPOLINE_TEMPLATE - to be omitted on systems for which it is not cost effective. - * varasm.c (assemble_trampoline_template): No such function - if no TRAMPOLINE_TEMPLATE. - * m68k.h: Greatly simplify the run-time trampoline code: - (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): Delete define. - (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Changed. - (TRAMPOLINE_ALIGN): No point aligning to cache line. - (FINISH_INIT_TRAMPOLINE): New define. - * m68k/next.h: Instead of redefining INITIALIZE_TRAMPOLINE, - make use of the new FINISH_INIT_TRAMPOLINE. - * m68k/{m68k.h,next.h,aux.h} (FINISH_INIT_TRAMPOLINE): - Rename to FINALIZE_TRAMPOLINE. - * m68k/{linux.h,m68kv4.h}: Override trampoline macros. - -Tue Apr 16 16:02:50 1996 David Edelsohn - - * combine.c (make_field_assignment): Allow XOR in final case. - -Tue Apr 16 11:33:53 1996 J.T. Conklin - - * m68k.h (TARGET_SWITCHES): Don't remove MASK_68060 with -msoft-float. - - * m68k.h (MULL_COST, MULW_COST, RTX_COSTS): Add costs for TARGET_68060. - * m68k.md (ashlsi_16, lshrsi_16): Disable pattern for TARGET_68060; - this special case is not faster for that cpu. - -Tue Apr 16 10:54:55 1996 Eliot Dresselhaus - - * alpha.c (alpha_emit_conditional_move): New function. - * alpha.h (alpha_emit_conditional_move): Declare it. - * alpha.md (cmov* define_expands): Use it. - -Tue Apr 16 09:06:17 1996 Andreas Schwab - - * function.h (struct function): New field returns_pointer. - * function.c (push_function_context_{to,from}): Save and restore - current_function_returns_pointer. - - * config/svr4.h (ENDFILE_SPEC): Add missing `%s'. - - * configure (m68k-*-linux*aout*): Set tmake_file to m68k/t-linux-aout. - (m68k-*-linux*): Set extra_parts. - * m68k/t-linux (INSTALL_ASSERT_H): New definition. - (CRTSTUFF_T_CFLAGS_S, TARGET_LIBGCC2_CFLAGS): New definitions. - * m68k/t-linux-aout: New file. - * m68k/linux.h (LIB_SPEC): Deleted. - (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS): Define. - - * m68k.h (TRAMPOLINE_ALIGNMENT): Specify alignment in bits, not bytes. - -Tue Apr 16 08:53:17 1996 Philippe De Muyter - - * final.c (final_scan_insn): Allow removal of redundant test and - compare instructions that use clobbers. - -Tue Apr 16 06:22:00 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-decl.c (clear_limbo_values): New function. - (pushdecl): Call it for function body blocks. - - * objc/thr-decosf1.c (_objc_thread_id): Correct return type from - int to _objc_thread_id. - - * expr.c (expand_builtin, case BUILT_IN_LONGJMP): Make a decl - for __dummy, so we can call make_function_rtl on it. - - * expr.c (expand_assignment): Don't pre-evaluate RHS if a CALL_EXPR - with a variable-size return. - -Mon Apr 15 17:38:45 1996 Ian Lance Taylor - - * fixincludes: Fix undefined VOIDFUNCPTR in VxWorks 5.2 . - -Mon Apr 15 15:12:16 1996 Jim Wilson - - * expr.c (do_store_flag): Before calling exact_log2, remove any - sign extension bits. - - * reload1.c (emit_reload_insns): Call reload_reg_reaches_end_p for - every reg of multi-reg spill register. Invalidate old info for multi - reg spill registers when only part survives to the end. - -Mon Apr 15 14:49:12 1996 Mike Stump - - * function.c (preserve_temp_slots): Only preserve temporaries that - happen to be at the current level. - -Mon Apr 15 14:08:12 1996 Doug Evans - - * gansidecl.h: New file. - * choose-temp.c: New file. - * Makefile.in (xgcc): Depend on and link in choose-temp.o. - (collect2): Likewise. - (choose-temp.o): Add rule for. - * collect2.c: #include "gansidecl.h". - (const,PROTO): Delete. - (P_tmpdir): Delete. - (choose_temp_base): Declare as extern, delete internal copy. - (main): Update call to choose_temp_base. - * cpphash.c: #include "gansidecl.h". - (NULL,const,volatile): Delete. - * demangle.h: #include "gansidecl.h". - (PROTO,PTR,const): Delete. - * expr.h (const): Delete. - * fix-header.c: #include "gansidecl.h". - (const): Delete. - * gcc.c: #include "gansidecl.h". - (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,NULL): Delete. - (GENERIC_PTR,NULL_PTR,P_tmpdir): Delete. - (choose_temp_base): Declare as extern, delete internal copy. - (concat): Rewrite to take a variable number of arguments. - (choose_temp_base_try,concat[346]): Delete. - (translate_options,set_spec,process_command,do_spec_1, - is_directory,main): Always use concat, not concat[346]. Pass - NULL_PTR as trailing arg to concat. - * genattr.c (main): Delete printing of "#define PROTO". - * machmode.h: #include "gansidecl.h". - (PROTO): Delete. - (HAVE_MACHINE_MODES): Move definition to standard place. - * recog.h: #include "gansidecl.h". - (PROTO,const): Delete. - * rtl.h: #include "gansidecl.h". - (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,STDIO_PROTO): Delete. - (NULL,GENERIC_PTR,NULL_PTR): Delete. - * tree.h: Likewise. - -Mon Apr 15 08:49:20 1996 Tom May (ftom@netcom.com) - - * cse.c (invalidate_skipped_set): Ignore CLOBBER after calling - note_mem_written, not before. - -Mon Apr 15 08:22:03 1996 Philippe De Muyter - - * m68k.md (tstdi): Optimized for "d" case. - (movqi): Allow moving "i" into "a". - (zero_extendsidi2): Alternatives merged. - (extendplussidi): Fixed when operands 0 and 1 share a register. - (adddi_sexthishl32): Constraints reordered for better reload. - (adddi3,subdi_sexthishl32,subdi3,negdi2): Likewise. - (ashldi_sexthi): Accept "m" as operand 0. - (ashldi_const32): Alternatives merged. - (ashift patterns): Output "lsl" instead of "asl". - (beq0_di): If condition codes already set, output only branch insn. - (bne0_di,bge0_di,blt0_di): Likewise. - * m68k.c (notice_update_cc, case ASHIFT{,RT}, LSHIFTRT, ROTATE{,RT}): - Don't set CC_NO_OVERFLOW. - * m68k.h (TARGET_SWITCHES): Fix typo in "c68000" entry. - -Mon Apr 15 08:06:17 1996 Stephen L Moshier (moshier@world.std.com) - - * real.c (eadd1): Check for overflow on X plus X. - -Mon Apr 15 08:02:24 1996 J.T. Conklin - - * i386/netbsd.h (HAVE_SYSV_PRAGMA): Removed definition. - * config/netbsd.h (HAVE_SYSV_PRAGMA): Define. - (SET_ASM_OP): Define. - -Mon Apr 15 07:28:54 1996 Fila Kolodny - - * configure: Add definition for host= into Makefile. - * build-make (CC): Pass -b $(host), not target. - -Mon Apr 15 05:12:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (bc_expand_increment): Change declaration to return void. - - * toplev.c (max_label_num_after_reload): New variable. - (rest_of_compilation): Set it. - * reorg.c (find_dead_or_set_registers): Only kill spill regs after - label made before jump2. - - * combine.c (expand_field_assignment): Take SUBREG_WORD into - account when have STRICT_LOW_PART. - (make_extraction): Make a STRICT_LOW_PART at any low-order word. - -Mon Apr 15 03:43:11 1996 Jeffrey A. Law - - * flags.h (flag_function_sections): Declare. - * toplev.c (flag_function_sections): Define. - (compile_file): Add warnings when -ffunction-sections is - used with -g, or profiling. Disable -ffunction-sections - when profiling is used. Add warning when -ffunction-sections - is used on a target that doesn't support it. - * varasm.c (named_section): Make a copy of the section name - in case the original is in temporary storage. - (function_section): Set DECL_SECTION_NAME for each function - if flag_function_sections is on and the target supports it. - * dbxout.c (dbxout_function_end): New function. - (dbxout_function): Call dbxout_function_end if using extensions - and flag_function_sections is on. - * sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Prefix a function - section's name with ".text%" when -ffunction-sections. - -Sun Apr 14 19:37:43 1996 Doug Evans - - * toplev.c (main): Delete redundant test for -p used with -fbytecode. - -Sun Apr 14 19:01:59 1996 John F. Carr - - * c-decl.c (finish_enum): Don't crash if no type can represent all - enumeration values. - -Sun Apr 14 18:56:40 1996 J.T. Conklin - - * m68k.md (ftruncdf2): Enable for m68060 systems. - -Sun Apr 14 18:49:30 1996 David L. Reese (david.reese@east.sun.com) - - * fold-const.c (range_test): Don't convert hi_cst or lo_cst - to unsigned when folding signed range tests. - -Sun Apr 14 08:56:27 1996 Stephen L Moshier - - * real.h (ereal_from_{int,uint}): Add new arg, MODE. - (REAL_VALUE_FROM{,_UNSIGNED}_INT): New arg, MODE. - * real.c (ereal_from_{int,uint}): New arg, MODE. - * cse.c (simplify_unary_operation): Add new arg to REAL_VALUE_FROM_INT. - * fold-const.c (fold_convert): Likewise. - * tree.c (real_value_from_int_cst): New arg, TYPE. - Pass mode to REAL_VALUE_FROM_INT. - (build_real_from_int_cst): Properly deal with truncation. - -Sun Apr 14 08:21:29 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): When substituting in output of I2, - ensure dest isn't clobbered in I2. - - * combine.c (combine_instructions): In initial scan of insns, - handle a REG_INC note's affect on sign bit copies and nonzero bits. - (set_nonzero_bits_and_sign_copies): Treat a zero SET arg as a CLOBBER. - -Sun Apr 14 07:52:28 1996 Manor Askenazi - - * objc/encoding.c (objc_skip_typespec): Don't abort for _C_UNDEF. - -Sat Apr 13 20:35:36 1996 Richard Henderson (richard@atheist.tamu.edu) - - * configure (m68k-apple-aux*): Rework to take advantange - of list of tm.h files and support all four gas/gld options. - * m68k/auxas.h, m68k/auxgas.h, m68k/auxgld.h, m68k/auxld.h: New files. - * m68k/auxstd.h, m68k/auxgnu.h: Deleted. - -Sat Apr 13 20:18:11 1996 Stephen L Moshier - - * alpha.c (check_float_value): New function. - * alpha.h (CHECK_FLOAT_VALUE): Define. - (ASM_OUTPUT_FLOAT): Print the value in hex. - -Sat Apr 13 15:08:45 1996 Doug Evans - - * configure: New target arm{,el}-*-coff*. - (cpu_default): Sort alphabetically. - * arm/coff.h: New file. - * arm/t-bare: New file. - * arm/arm.c (use_return_insn): Don't use return for naked functions. - (arm_valid_machine_decl_attribute): New function. - (arm_naked_function_p): New function. - (output_func_prologue): Naked functions don't have prologues. - (arm_expand_prologue): Likewise. - (output_func_epilogue): Likewise with epilogues. - -Sat Apr 13 11:31:32 1996 Jeffrey A. Law - - * h8300.c (adds_subs_operand): Fix thinko in last change. - - * h8300.md (subhi3): Turn into a define_expand. - (subhi3 using adds_subs): New pattern. - (H8300 subhi): Derived from old subhi pattern. Simplified. - (H8300H subhi): Likewise. - (subsi using adds_subs): New pattern. Only used on H8300H. - (subsi_h8300): Allow "a" registers as destination. - (subsi_h8300h): Allow "a" registers as destination. Simplify. - - * h8300.md (bcs_qiqi, bcs_hihi, bs_hiqi): Fix thinkos - in last change. - -Sat Apr 13 08:59:48 1996 Fila Kolodny - - * i370/mvs.h (ASM_DECLARE_FUNCTION_NAME): Don't write anything to - asm file, because everything is handled in FUNCTION_PROLOGUE. - -Sat Apr 13 07:55:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (alpha_emit_set_const_1): Renamed from - alpha_emit_set_const and static. - Remove change of Nov 26; again use normal mechanism for SImode. - (alpha_emit_set_const): New function. - -Fri Apr 12 18:19:39 1996 Jeffrey A. Law - - * h8300.c (adds_subs_operand, output_adds_subs): New functions. - * h8300.md (addhi3): Turn into a define_expand. - (addhi3 using adds_subs): New pattern. - (H8300 addhi): Derived from old addhi pattern. Simplified. - (H8300H addhi): Likewise. - (addsi using adds_subs): New pattern. Only used on H8300H. - (addsi_h8300): Allow "a" registers as destination. - (addsi_h8300h): Simplify. Allow "a" registers as destination. - - * h8300.md (bcs): New attribute type. - (default_length): Compute correct length for bcs insns. - (bcs_qiqi, bcs_hihi, bs_hiqi): Use new type and update - to account for correct length computation. - - * h8300/h8300.md (movhi_internal): Demand at least one operand to - be a register. - (movsi_h8300): Optimize loading certain constants. - (movsi_h8300h): Likewise. - - * h8300.h (NO_FUNCTION_CSE): Comment out. - (FUNCTION_ARG_REGNO_P): Properly define for TARGET_QUICKCALL. - (RETURN_IN_MEMORY): Don't return small structs in regs. - - * h8300.c (const_costs): -4 and 4 are cheap on the h8300h. - (notice_update_cc): Remove references to "value2" field. - - * h8300.c (dosize): Remove unused "fped" argument. All callers - changed. Handle add/sub of 5-8 bytes efficiently on the h8300h. - - * h8300.c (print_operand): Handle new 'R' case for accessing - the 8-bit area. Make code for 'Y' fall into code for 'R' when - operand is not a register. Update some comments. - (h8300_tiny_data_p): New function. - (h8300_valid_machine_decl_attribute): Handle "tiny_data" attribute. - * h8300.h (OK_FOR_U): Handle memory references into the - 8-bit area. - (ENCODE_SECTION_INFO): Mark SYMBOL_REFs which refer to 8-bit area. - * h8300.md (many patterns): Use 'R' rather than 'X' for - operands that may be memory accesses into the 8-bit area. - (btst pattern): New pattern to set the cc0 (zbit) based on - data in the 8-bit area. - - * h8300.md (one_cmplsi2): Fix length computation for h8300h. - -Fri Apr 12 14:34:39 1996 Doug Evans - - * arm.md (*ldmsi,*stmsi): Use (mem (match_operand ...)) - to avoid using indirect_operand (reload problems). - * arm/semi.h (CPP_PREDEFINES): Define __semi__ instead of semi. - * arm/aout.h (ASM_GENERATE_INTERNAL_LABEL): Use LOCAL_LABEL_PREFIX. - (ASM_OUTPUT_ADDR_{VEC,DIFF_ELT}): Likewise. - -Fri Apr 12 09:43:30 1996 Jason Merrill - - * dbxout.c (dbxout_typedefs): Don't emit incomplete types yet. - (dbxout_symbol): Use DECL_ARTIFICIAL to recognize C++ implicit - typedefs. - -Thu Apr 11 21:56:26 1996 Doug Evans - - * i386/t-winnt (winnt.o): Rewrite based on .c.o rule. - (oldnames.o,spawnv.o): Add rules for. - -Thu Apr 11 07:25:06 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * calls.c (expand_call): In inlining case, if BEFORE_CALLS is - zero, start looking at first insn. - - * expr.c (preexpand_calls, case CALL_EXPR): Rework to properly - avoid expanding functions returning variable size objects. - - * integrate.c (expand_inline_function): When comparing types - of formal and actual, use TYPE_MAIN_VARIANT. - -Thu Apr 11 00:48:29 1996 Jeffrey A. Law - - * h8300/lib1funcs.asm (modnorm): New function(s). Like divnorm, - but gets the sign bit right for modulo operations. - (__modhi3, modsi3): Use modnorm. - - * h8300/h8300.c (dosize): On the h8300h, do 4 byte adjustments - using adds and subs. - * h8300/h8300.h (LONG_LONG_TYPE_SIZE): Always make this 32bits. - Reverses change from Apr 2, 1996. - -Wed Apr 10 18:39:52 1996 Doug Evans - - * sparc.h (ASM_OUTPUT_INTERNAL_LABELREF): Delete. - (FUNCTION_PROFILER): Use ASM_GENERATE_INTERNAL_LABEL instead. - - * sparc.c (sparc_override_options): 90c701 renamed to tsc701. - (eligible_for_epilogue_delay_slot): Don't allow anything if - -mbroken-saverestore. - (output_function_prologue): Only use trivial save's if - -mbroken-saverestore. - * sparc.h (CPP_SPEC): Handle -mcpu={sparclet,tsc701}. - (ASM_SPEC): Likewise. - ({MASK,TARGET}_BROKEN_SAVERESTORE): Define. - (enum processor_type): 90C701 renamed to TSC701. - * sparc.md (attr cpu): 90c701 renamed to tsc701. - * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -mbroken-saverestore. - -Wed Apr 10 17:56:02 1996 Stan Cox - - * m88k/dgux.h (EXTRA_SPECS): Define. - (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. - * m88k/dguxbcs.h (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. - * m88k/m88k.c (output_ascii) Output literal HT. - -Wed Apr 10 17:28:37 1996 James Carlson (carlson@xylogics.com) - - * configure: Work around AIX bug when defining SUBDIRS. - -Wed Apr 10 17:22:42 1996 Paul Eggert - - * cexp.y (parse_number): Don't reject long long constants unless - pedantic. - -Wed Apr 10 17:19:56 1996 Stephen L. Moshier (moshier@world.std.com) - - * real.c (e64toe): Properly distinguish between NaN and infinity - bit patterns for real-words-big-endian targets. - -Wed Apr 10 17:17:26 1996 Richard Earnshaw (rearnsha@armltd.co.uk) - - * real.c (endian): Add two explicit casts. - (e64toe): Support ARM extended precision fp format. - Check negative infinities properly for NaNs. - (toe64): Support ARM extended precision fp format. - -Tue Apr 9 12:53:31 1996 Doug Evans - - * i386/gas.h (ASM_OUTPUT_ALIGN): Define and use .balign. - -Tue Apr 9 12:48:45 1996 Stephen L Moshier (moshier@world.std.com) - - * sparc.c (fp_zero_operand): Exclude -0.0. - -Tue Apr 9 07:11:24 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c: Fix typo in last change. - - * tree.c (substitute_in_expr): Don't return new expression if - nothing changed. - (substitute_in_type): Deleted, not used. - * tree.h (substitute_in_type): Delete declaration. - -Mon Apr 8 16:30:18 1996 Jeffrey A. Law - - * flow.c (find_auto_inc): Also make sure there aren't - any sets of the incremented register between the memory - reference and increment insn. - -Mon Apr 8 15:41:14 1996 John Polstra (jdp@polstra.com) - - * configure (i[3456]86-*-freebsdelf*): New target. - * i386/freebsd-elf.h: New file. - * i386/x-freebsd (USER_H): New define; to null. - -Mon Apr 8 14:44:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-decl.c (finish_function): Always warn if main doesn't return int. - -Mon Apr 8 13:01:37 1996 Michael Meissner - - * rs6000.c (got_operand): New function, returns true if the - operand can go in V.4's GOT. - (rs6000_pic_register): New variable. - (output_epilog): Reset rs6000_pic_register. - - * rs6000.h (rs6000_pic_register,got_operand,flag_pic): Add - declarations. - (PREDICATE_CODES): Add got_operand. - - * rs6000.md (movsi): Add support for V.4's -fpic and -FPIC. - (init_v4_pic): Initialize the V4 pic register if needed. - (call patterns): If -fpic/-fPIC, call function with @plt suffix. - - * t-eabigas (MULTILIB_DIRNAMES): Remove errant pic directory. - - * rs6000.c (output_prolog): Correctly store & restore the - arguments to main in their correct save location, when calling the - start function. - -Mon Apr 8 13:01:37 1996 David Reese - - * rs6000.c (print_operand): Use reg_names to print registers. - -Fri Apr 5 00:40:19 1996 Jeffrey A. Law - - * h8300.c (h8300_valid_machine_decl_attribute): Use underscores, - not dashes in attributes. - (h8300_funcvec_function_p): Corresponding changes. - (h8300_interrupt_function_p): Likewise. - - * pa.h (INIT_CUMULATIVE_INCOMING_ARGS): Initialize "indirect" - field to zero. - -Thu Apr 4 12:52:11 1996 Jim Wilson - - * loop.c (combine_givs): Use new macro GIV_SORT_CRITERION. - New variable giv_array. Loop over giv_array instead of following - next_iv links. - (giv_sort): New function. - * sh.h (GIV_SORT_CRITERION): Define. - - * c-typeck.c (push_init_level): When output alignment for structure - field, add check to verify it is the next field to be output. - -Thu Apr 4 12:19:26 1996 David Mosberger-Tang - - * alpha.c: Don't include stamp.h for Linux. - -Thu Apr 4 12:17:08 1996 Richardg Kenner (kenner@vlsi1.ultra.nyu.edu) - - * objc/Makefile: Rename thread* to thr*. - * objc/thread.c: Rename thread-* to thr-*. - * objc/thr-decosf1.c: Renamed from thread-decosf1.c - * objc/thr-irix.c: Renamed from thread-irix.c. - * objc/thr-single.c: Renamed from thread-single.c. - * objc/thr-solarius.c: Renamed from thread-solaris.c. - * objc/thr-win32.c: Renamed from thread-win32.c. - * objc/objc-api.h: Include thr.h, not thread.h. - * objc/runtime.h, objc/sarray.h: Likewise. - - * i386.md (ashldi3_const_int): Don't recognize if won't match - constraint of operand 2. - -Thu Apr 4 11:40:55 1996 Michael Meissner - - * config/fp-bit.c (EXTENDED_FLOAT_STUBS): If EXTENDED_FLOAT_STUBS - is defined, define all of the XF/TF functions that might be - generated that we don't have code for yet. - - * i960/t-(vxworks960,960bare): (LIB2FUNCS_EXTRA): Make and - compile xp-bits.c that defines EXTENDED_FLOAT_STUBS. - - From: steve chamberlain - * i386/x-cygwin32 (LANGUAGES): Delete. - * i386/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. - * rs6000/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. - -Wed Apr 3 14:10:16 1996 Jim Wilson - - * expr.c (emit_push_insn): Clobber register only if it is non-zero. - -Wed Apr 3 11:31:55 1996 Jeffrey A. Law - - * h8300.h (h8300_funcvec_function_p): Declaration moved here. - * h8300.c (h8300_funcvec_function_p): Declaration removed from here. - * h8300.md (tstqi): Tweak to work like other tstXX patterns. - (cmphi): Turn into a define_expand. Add two anonymous - matterns to match the output of the cmphi expander. - (cmpsi): Accept constants as the second input operand. - -Tue Apr 2 13:52:30 1996 Jeffrey A. Law - - * h8300.md (movqi_internal): Remove useless alternative(s). Fix - lengths and simplify by reordering remaining alternatives. - (movstrictqi, movhi_internal, movstricthi): Likewise. - (movsi_h8300h, movsf_h8300h): Likewise. - - * h8300/h8300.c (extra_pop): Remove unused variable. - (current_function_anonymous_args): Likewise. - (function_prologue): Remove incorrect varargs/stdarg - related code. - (function_epilogue): Likewise. - (function_arg): Never pass unnamed arguments in registers. - * h8300.h (LONG_LONG_TYPE_SIZE): Use 64bits when ints are 32bits. - (SETUP_INCOMING_VARARGS): Remove definition. - -Mon Apr 1 16:59:48 1996 Ian Lance Taylor - - * fixincludes: Fix signal prototype on SunOS to avoid pedantic C++ - error. - -Mon Apr 1 16:16:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (get_inner_reference): When finding mode to access bitfield - that ends up properly aligned, use mode class of its type unless - type's mode was BLKmode. - -Mon Apr 1 13:45:30 1996 Jeffrey A. Law - - * h8300.c (interrupt_handler): Renamed from pragma_interrupt. - All references changed. - (function_prologue): Set interrupt_handler if the current - function has the "interrrupt-handler" attribute. - (small_call_insn_operand): New function. - (h8300_interrrupt_function_p): New function. - (h8300_funcvec_function_p): New function. - (h8300_valid_machine_decl_attribute): New function. - * h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. - * h8300.md (call insns): Handle calls through the - function vector. Indirect calls and calls through - the function vector have a length of two bytes. - -See ChangeLog.10 for earlier changes. diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c deleted file mode 100644 index 977305d9a82..00000000000 --- a/gcc/gengenrtl.c +++ /dev/null @@ -1,287 +0,0 @@ -/* Generate code to allocate RTL structures. - Copyright (C) 1997 Free Software Foundation, Inc. - -This file is part of GNU CC. - -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - - -#include "hconfig.h" -#include - -#include "obstack.h" -#define obstack_chunk_alloc xmalloc -#define obstack_chunk_free free - -#define NO_GENRTL_H -#include "rtl.h" - - -struct rtx_definition -{ - const char *enumname, *name, *format; -}; - -#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) { # ENUM, NAME, FORMAT }, - -struct rtx_definition defs[] = -{ -#include "rtl.def" /* rtl expressions are documented here */ -}; - -const char *formats[NUM_RTX_CODE]; - -static const char * -type_from_format (char c) -{ - switch (c) - { - case 'i': - return "int"; - case 'w': - return "HOST_WIDE_INT"; - case 's': - return "char *"; - case 'e': - case 'u': - return "rtx"; - case 'E': - return "rtvec"; - default: - abort (); - } -} - -static const char * -accessor_from_format (char c) -{ - switch (c) - { - case 'i': - return "XINT"; - case 'w': - return "XWINT"; - case 's': - return "XSTR"; - case 'e': - case 'u': - return "XEXP"; - case 'E': - return "XVEC"; - default: - abort (); - } -} - -static int -special_format (fmt) - const char *fmt; -{ - return (strchr (fmt, '*') != 0 - || strchr (fmt, 'V') != 0 - || strchr (fmt, 'S') != 0 - || strchr (fmt, 'n') != 0); -} - -static int -special_rtx (idx) - int idx; -{ - return (strcmp (defs[idx].enumname, "CONST_INT") == 0 - || strcmp (defs[idx].enumname, "REG") == 0); -} - -static void -find_formats () -{ - int i; - - for (i = 0; i < NUM_RTX_CODE; ++i) - { - const char **f; - - if (special_format (defs[i].format)) - continue; - - for (f = formats; *f ; ++f) - if (!strcmp(*f, defs[i].format)) - break; - - if (!*f) - *f = defs[i].format; - } -} - -static void -gendecl (f, format) - FILE *f; - const char *format; -{ - const char *p; - int i; - - fprintf (f, "extern rtx gen_rtx_fmt_%s PROTO((RTX_CODE, enum machine_mode mode", - format); - for (p = format, i = 0; *p ; ++p) - if (*p != '0') - fprintf (f, ", %s arg%d", type_from_format (*p), i++); - fprintf (f, "));\n"); -} - -static void -genmacro (f, idx) - FILE *f; - int idx; -{ - const char *p; - int i; - - fprintf (f, "#define gen_rtx_%s%s(mode", - (special_rtx (idx) ? "raw_" : ""), defs[idx].enumname); - - for (p = defs[idx].format, i = 0; *p ; ++p) - if (*p != '0') - fprintf (f, ", arg%d", i++); - fprintf (f, ") "); - - fprintf (f, "gen_rtx_fmt_%s(%s,(mode)", defs[idx].format, defs[idx].enumname); - for (p = defs[idx].format, i = 0; *p ; ++p) - if (*p != '0') - fprintf (f, ",(arg%d)", i++); - fprintf (f, ")\n"); -} - -static void -gendef (f, format) - FILE *f; - const char *format; -{ - const char *p; - int i, j; - - fprintf (f, "rtx\ngen_rtx_fmt_%s (code, mode", format); - for (p = format, i = 0; *p ; ++p) - if (*p != '0') - fprintf (f, ", arg%d", i++); - - fprintf (f, ")\n RTX_CODE code;\n enum machine_mode mode;\n"); - for (p = format, i = 0; *p ; ++p) - if (*p != '0') - fprintf (f, " %s arg%d;\n", type_from_format (*p), i++); - - /* See rtx_alloc in rtl.c for comments. */ - fprintf (f, "{\n"); - fprintf (f, " register int length = sizeof (struct rtx_def)"); - fprintf (f, " + %d * sizeof (rtunion);\n", strlen (format) - 1); - fprintf (f, " rtx rt = (rtx)obstack_alloc (rtl_obstack, length);\n"); - - fprintf (f, " if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(int))\n"); - fprintf (f, " *(int *)rt = 0;\n"); - fprintf (f, " else if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(HOST_WIDE_INT))\n"); - fprintf (f, " *(HOST_WIDE_INT *)rt = 0;\n"); - fprintf (f, " else\n"); - fprintf (f, " bzero(rt, sizeof(struct rtx_def) - sizeof(rtunion));\n\n"); - - fprintf (f, " PUT_CODE (rt, code);\n"); - fprintf (f, " PUT_MODE (rt, mode);\n"); - - for (p = format, i = j = 0; *p ; ++p, ++i) - if (*p != '0') - { - fprintf (f, " %s (rt, %d) = arg%d;\n", - accessor_from_format (*p), i, j++); - } - - fprintf (f, "\n return rt;\n}\n\n"); -} - -static void -genlegend (f) - FILE *f; -{ - fprintf (f, "/* Generated automaticaly by the program `gengenrtl'\n"); - fprintf (f, " from the RTL description file `rtl.def' */\n\n"); -} - -static void -genheader (f) - FILE *f; -{ - int i; - const char **fmt; - - for (fmt = formats; *fmt; ++fmt) - gendecl (f, *fmt); - - fprintf(f, "\n"); - - for (i = 0; i < NUM_RTX_CODE; i++) - { - if (special_format (defs[i].format)) - continue; - genmacro (f, i); - } -} - -static void -gencode (f) - FILE *f; -{ - const char **fmt; - - fprintf(f, "#include \"config.h\"\n"); - fprintf(f, "#include \"obstack.h\"\n"); - fprintf(f, "#include \"rtl.h\"\n\n"); - fprintf(f, "extern struct obstack *rtl_obstack;\n\n"); - - for (fmt = formats; *fmt; ++fmt) - gendef (f, *fmt); -} - -int -main(argc, argv) - int argc; - char **argv; -{ - FILE *f; - - if (argc != 3) - exit (1); - - find_formats (); - - f = fopen (argv[1], "w"); - if (f == NULL) - { - perror(argv[1]); - exit (1); - } - genlegend (f); - genheader (f); - fclose(f); - - f = fopen (argv[2], "w"); - if (f == NULL) - { - perror(argv[2]); - exit (1); - } - genlegend (f); - gencode (f); - fclose(f); - - exit (0); -} diff --git a/gcc/getopt.h b/gcc/getopt.h index fb30719a860..c4adc30bbba 100644 --- a/gcc/getopt.h +++ b/gcc/getopt.h @@ -2,7 +2,7 @@ Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/intl/cat-compat.c b/gcc/intl/cat-compat.c deleted file mode 100644 index 867d901b8ff..00000000000 --- a/gcc/intl/cat-compat.c +++ /dev/null @@ -1,262 +0,0 @@ -/* Compatibility code for gettext-using-catgets interface. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - 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. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#ifdef STDC_HEADERS -# include -# include -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include -# endif -#endif - -#ifdef HAVE_NL_TYPES_H -# include -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - -/* XPG3 defines the result of `setlocale (category, NULL)' as: - ``Directs `setlocale()' to query `category' and return the current - setting of `local'.'' - However it does not specify the exact format. And even worse: POSIX - defines this not at all. So we can use this feature only on selected - system (e.g. those using GNU C Library). */ -#ifdef _LIBC -# define HAVE_LOCALE_NULL -#endif - -/* The catalog descriptor. */ -static nl_catd catalog = (nl_catd) -1; - -/* Name of the default catalog. */ -static const char default_catalog_name[] = "messages"; - -/* Name of currently used catalog. */ -static const char *catalog_name = default_catalog_name; - -/* Get ID for given string. If not found return -1. */ -static int msg_to_cat_id PARAMS ((const char *msg)); - -/* Substitution for systems lacking this function in their C library. */ -#if !_LIBC && !HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -#endif - - -/* Set currently used domain/catalog. */ -char * -textdomain (domainname) - const char *domainname; -{ - nl_catd new_catalog; - char *new_name; - size_t new_name_len; - char *lang; - -#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ - && defined HAVE_LOCALE_NULL - lang = setlocale (LC_MESSAGES, NULL); -#else - lang = getenv ("LC_ALL"); - if (lang == NULL || lang[0] == '\0') - { - lang = getenv ("LC_MESSAGES"); - if (lang == NULL || lang[0] == '\0') - lang = getenv ("LANG"); - } -#endif - if (lang == NULL || lang[0] == '\0') - lang = "C"; - - /* See whether name of currently used domain is asked. */ - if (domainname == NULL) - return (char *) catalog_name; - - if (domainname[0] == '\0') - domainname = default_catalog_name; - - /* Compute length of added path element. */ - new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) - + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 - + sizeof (".cat"); - - new_name = (char *) malloc (new_name_len); - if (new_name == NULL) - return NULL; - - strcpy (new_name, PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - /* NLSPATH search didn't work, try absolute path */ - sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, - PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - free (new_name); - return (char *) catalog_name; - } - } - - /* Close old catalog. */ - if (catalog != (nl_catd) -1) - catclose (catalog); - if (catalog_name != default_catalog_name) - free ((char *) catalog_name); - - catalog = new_catalog; - catalog_name = new_name; - - return (char *) catalog_name; -} - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ -#if HAVE_SETENV || HAVE_PUTENV - char *old_val, *new_val, *cp; - size_t new_val_len; - - /* This does not make much sense here but to be compatible do it. */ - if (domainname == NULL) - return NULL; - - /* Compute length of added path element. If we use setenv we don't need - the first byts for NLSPATH=, but why complicate the code for this - peanuts. */ - new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - - old_val = getenv ("NLSPATH"); - if (old_val == NULL || old_val[0] == '\0') - { - old_val = NULL; - new_val_len += 1 + sizeof (LOCALEDIR) - 1 - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - } - else - new_val_len += strlen (old_val); - - new_val = (char *) malloc (new_val_len); - if (new_val == NULL) - return NULL; - -# if HAVE_SETENV - cp = new_val; -# else - cp = stpcpy (new_val, "NLSPATH="); -# endif - - cp = stpcpy (cp, dirname); - cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); - - if (old_val == NULL) - { -# if __STDC__ - stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); -# else - - cp = stpcpy (cp, LOCALEDIR); - stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); -# endif - } - else - stpcpy (cp, old_val); - -# if HAVE_SETENV - setenv ("NLSPATH", new_val, 1); - free (new_val); -# else - putenv (new_val); - /* Do *not* free the environment entry we just entered. It is used - from now on. */ -# endif - -#endif - - return (char *) domainname; -} - -#undef gettext -char * -gettext (msg) - const char *msg; -{ - int msgid; - - if (msg == NULL || catalog == (nl_catd) -1) - return (char *) msg; - - /* Get the message from the catalog. We always use set number 1. - The message ID is computed by the function `msg_to_cat_id' - which works on the table generated by `po-to-tbl'. */ - msgid = msg_to_cat_id (msg); - if (msgid == -1) - return (char *) msg; - - return catgets (catalog, 1, msgid, (char *) msg); -} - -/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries - for the one equal to msg. If it is found return the ID. In case when - the string is not found return -1. */ -static int -msg_to_cat_id (msg) - const char *msg; -{ - int cnt; - - for (cnt = 0; cnt < _msg_tbl_length; ++cnt) - if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) - return _msg_tbl[cnt]._msg_number; - - return -1; -} - - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/gcc/intl/intl-compat.c b/gcc/intl/intl-compat.c deleted file mode 100644 index 503efa0fa9c..00000000000 --- a/gcc/intl/intl-compat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* intl-compat.c - Stub functions to call gettext functions from GNU gettext - Library. - Copyright (C) 1995 Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -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. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - - -#undef gettext -#undef dgettext -#undef dcgettext -#undef textdomain -#undef bindtextdomain - - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ - return bindtextdomain__ (domainname, dirname); -} - - -char * -dcgettext (domainname, msgid, category) - const char *domainname; - const char *msgid; - int category; -{ - return dcgettext__ (domainname, msgid, category); -} - - -char * -dgettext (domainname, msgid) - const char *domainname; - const char *msgid; -{ - return dgettext__ (domainname, msgid); -} - - -char * -gettext (msgid) - const char *msgid; -{ - return gettext__ (msgid); -} - - -char * -textdomain (domainname) - const char *domainname; -{ - return textdomain__ (domainname); -} diff --git a/gcc/intl/linux-msg.sed b/gcc/intl/linux-msg.sed deleted file mode 100755 index 5918e720a9a..00000000000 --- a/gcc/intl/linux-msg.sed +++ /dev/null @@ -1,100 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# 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. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# Mitch's old catalog format does not allow comments. -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { - s/msgid[ ]*"// -# -# This does not work now with the new format. -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/# \1/ -# Clear substitution flag. - tb -# Append the next line. - :b - N -# Look whether second part is continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that D includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/gcc/intl/po2tbl.sed.in b/gcc/intl/po2tbl.sed.in deleted file mode 100755 index b3bcca4d730..00000000000 --- a/gcc/intl/po2tbl.sed.in +++ /dev/null @@ -1,102 +0,0 @@ -# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# 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. -# -1 { - i\ -/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ -\ -#if HAVE_CONFIG_H\ -# include \ -#endif\ -\ -#include "libgettext.h"\ -\ -const struct _msg_ent _msg_tbl[] = { - h - s/.*/0/ - x -} -# -# Write msgid entries in C array form. -# -/^msgid/ { - s/msgid[ ]*\(".*"\)/ {\1/ - tb -# Append the next line - :b - N -# Look whether second part is continuation line. - s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ -# Yes, then branch. - ta -# Because we assume that the input file correctly formed the line -# just read cannot be again be a msgid line. So it's safe to ignore -# it. - s/\(.*\)\n.*/\1/ - bc -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ -# Some buggy seds do not clear the `successful substitution since last ``t''' -# flag on `N', so we do a `t' here to clear it. - tb -# Not reached - :c - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)\n\([0-9]*\)/\1, \2},/ - s/\(.*\)"$/\1/ - p -} -# -# Last line. -# -$ { - i\ -};\ - - g - s/0*\(.*\)/int _msg_tbl_length = \1;/p -} -d diff --git a/gcc/intl/xopen-msg.sed b/gcc/intl/xopen-msg.sed deleted file mode 100755 index b19c0bbd0ec..00000000000 --- a/gcc/intl/xopen-msg.sed +++ /dev/null @@ -1,104 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# 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. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# We copy all comments into the .msg file. Perhaps they can help. -# -/^#/ s/^#[ ]*/$ /p -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { -# Does not work now -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ - p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/\1/ - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x -# Bring the line in the format ` ' - G - s/^[^\n]*$/& / - s/\(.*\)\n\([0-9]*\)/\2 \1/ -# Clear flag from last substitution. - tb -# Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/gcc/move-if-change b/gcc/move-if-change deleted file mode 100755 index 66d8b8adc7f..00000000000 --- a/gcc/move-if-change +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Like mv $1 $2, but if the files are the same, just delete $1. -# Status is 0 if $2 is changed, 1 otherwise. -if -test -r $2 -then -if -cmp -s $1 $2 -then -echo $2 is unchanged -rm -f $1 -else -mv -f $1 $2 -fi -else -mv -f $1 $2 -fi diff --git a/gcc/obstack.c b/gcc/obstack.c index bc318b37790..fb66d0c95cb 100644 --- a/gcc/obstack.c +++ b/gcc/obstack.c @@ -1,9 +1,10 @@ /* obstack.c - subroutines used implicitly by object stack macros Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. + the C library, however. The master source lives in /gd/gnu/lib. NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/obstack.h b/gcc/obstack.h index 38e96777660..c056f11f806 100644 --- a/gcc/obstack.h +++ b/gcc/obstack.h @@ -1,9 +1,10 @@ /* obstack.h - object stack macros Copyright (C) 1988,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. + the C library, however. The master source lives in /gd/gnu/lib. NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/regmove.c b/gcc/regmove.c deleted file mode 100644 index 639059b3686..00000000000 --- a/gcc/regmove.c +++ /dev/null @@ -1,983 +0,0 @@ -/* Move registers around to reduce number of move instructions needed. - Copyright (C) 1987, 88, 89, 92-5, 1996, 1997 Free Software Foundation, Inc. - -This file is part of GNU CC. - -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -/* This module looks for cases where matching constraints would force - an instruction to need a reload, and this reload would be a register - to register move. It then attempts to change the registers used by the - instruction to avoid the move instruction. */ - -#include "config.h" -#ifdef __STDC__ -#include -#else -#include -#endif - -/* Must precede rtl.h for FFS. */ -#include - -#include "rtl.h" -#include "insn-config.h" -#include "recog.h" -#include "output.h" -#include "reload.h" -#include "regs.h" - -static int stable_but_for_p PROTO((rtx, rtx, rtx)); - -#if defined (HAVE_POST_INCREMENT) || defined (HAVE_POST_DECREMENT) \ - || defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) - -/* INC_INSN is an instruction that adds INCREMENT to REG. - Try to fold INC_INSN as a post/pre in/decrement into INSN. - Iff INC_INSN_SET is nonzero, inc_insn has a destination different from src. - Return nonzero for success. */ -static int -try_auto_increment (insn, inc_insn, inc_insn_set, reg, increment, pre) - rtx reg, insn, inc_insn ,inc_insn_set; - HOST_WIDE_INT increment; - int pre; -{ - enum rtx_code inc_code; - - rtx pset = single_set (insn); - if (pset) - { - /* Can't use the size of SET_SRC, we might have something like - (sign_extend:SI (mem:QI ... */ - rtx use = find_use_as_address (pset, reg, 0); - if (use != 0 && use != (rtx) 1) - { - int size = GET_MODE_SIZE (GET_MODE (use)); - if (0 -#ifdef HAVE_POST_INCREMENT - || (pre == 0 && (inc_code = POST_INC, increment == size)) -#endif -#ifdef HAVE_PRE_INCREMENT - || (pre == 1 && (inc_code = PRE_INC, increment == size)) -#endif -#ifdef HAVE_POST_DECREMENT - || (pre == 0 && (inc_code = POST_DEC, increment == -size)) -#endif -#ifdef HAVE_PRE_DECREMENT - || (pre == 1 && (inc_code = PRE_DEC, increment == -size)) -#endif - ) - { - if (inc_insn_set) - validate_change - (inc_insn, - &SET_SRC (inc_insn_set), - XEXP (SET_SRC (inc_insn_set), 0), 1); - validate_change (insn, &XEXP (use, 0), - gen_rtx (inc_code, - Pmode, - reg), 1); - if (apply_change_group ()) - { - REG_NOTES (insn) - = gen_rtx (EXPR_LIST, REG_INC, - reg, REG_NOTES (insn)); - if (! inc_insn_set) - { - PUT_CODE (inc_insn, NOTE); - NOTE_LINE_NUMBER (inc_insn) = NOTE_INSN_DELETED; - NOTE_SOURCE_FILE (inc_insn) = 0; - } - return 1; - } - } - } - } - return 0; -} -#endif /* defined (HAVE_POST_INCREMENT) || defined (HAVE_POST_DECREMENT) */ - -void -regmove_optimize (f, nregs, regmove_dump_file) - rtx f; - int nregs; - FILE *regmove_dump_file; -{ -#ifdef REGISTER_CONSTRAINTS - rtx insn; - int matches[MAX_RECOG_OPERANDS][MAX_RECOG_OPERANDS]; - int modified[MAX_RECOG_OPERANDS]; - int early_clobber[MAX_RECOG_OPERANDS]; - int commutative; - int pass; - - /* A forward/backward pass. Replace output operands with input operands. */ - - for (pass = 0; pass < 2; pass++) - { - if (regmove_dump_file) - fprintf (regmove_dump_file, "Starting %s pass...\n", - pass ? "backward" : "forward"); - - for (insn = pass ? get_last_insn () : f; insn; - insn = pass ? PREV_INSN (insn) : NEXT_INSN (insn)) - { - if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') - { - int insn_code_number = recog_memoized (insn); - int operand_number, match_number; - - if (insn_code_number < 0) - continue; - - insn_extract (insn); - if (! constrain_operands (insn_code_number, 0)) - continue; - - commutative = -1; - - /* Must initialize this before the loop, because the code for - the commutative case may set matches for operands other than - the current one. */ - bzero (matches, sizeof (matches)); - - for (operand_number = 0; - operand_number < insn_n_operands[insn_code_number]; - operand_number++) - { - int output_operand = 0; - int matching_operand = operand_number; - char *p, c; - int i = 0; - - modified[operand_number] = 0; - early_clobber[operand_number] = 0; - - p = insn_operand_constraint[insn_code_number][operand_number]; - - if (*p == '=') - modified[operand_number] = 2; - else if (*p == '+') - modified[operand_number] = 1; - - for (;*p && i < which_alternative; p++) - if (*p == ',') - i++; - - while ((c = *p++) != '\0' && c != ',') - switch (c) - { - case '=': - break; - case '+': - break; - case '&': - early_clobber[operand_number] = 1; - break; - case '%': - commutative = operand_number; - break; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c -= '0'; - matches[operand_number][c] = 1; - if (commutative >= 0) - { - if (c == commutative || c == commutative + 1) - { - int other = c + (c == commutative ? 1 : -1); - matches[operand_number][other] = 1; - } - if (operand_number == commutative - || operand_number == commutative + 1) - { - int other = (operand_number - + (operand_number == commutative - ? 1 : -1)); - matches[other][c] = 1; - } - } - break; - } - } - - /* Now scan through the operands looking for a source operand - which is supposed to match the destination operand. - Then scan forward for an instruction which uses the dest - operand. - If it dies there, then replace the dest in both operands with - the source operand. */ - - for (operand_number = 0; - operand_number < insn_n_operands[insn_code_number]; - operand_number++) - { - for (match_number = 0; - match_number < insn_n_operands[insn_code_number]; - match_number++) - { - rtx set, p, src, dst, src_subreg; - rtx post_inc = 0, post_inc_set = 0, search_end = 0; - rtx src_note, dst_note; - int success = 0; - int num_calls = 0; - enum rtx_code code = NOTE; - HOST_WIDE_INT insn_const, newconst; - rtx overlap = 0; /* need to move insn ? */ - - /* Nothing to do if the two operands aren't supposed to - match. */ - if (matches[operand_number][match_number] == 0) - continue; - - src = recog_operand[operand_number]; - dst = recog_operand[match_number]; - - if (GET_CODE (src) != REG - || REGNO (src) < FIRST_PSEUDO_REGISTER) - continue; - - src_subreg = src; - if (GET_CODE (dst) == SUBREG - && GET_MODE_SIZE (GET_MODE (dst)) - >= GET_MODE_SIZE (GET_MODE (SUBREG_REG (dst)))) - { - src_subreg - = gen_rtx(SUBREG, GET_MODE (SUBREG_REG (dst)), - src, SUBREG_WORD (dst)); - dst = SUBREG_REG (dst); - } - if (GET_CODE (dst) != REG - || REGNO (dst) < FIRST_PSEUDO_REGISTER) - continue; - - /* If the operands already match, then there is nothing - to do. */ - if (operands_match_p (src, dst)) - continue; - - set = single_set (insn); - if (! set) - continue; - - /* operand_number/src must be a read-only operand, and - match_operand/dst must be a write-only operand. */ - if (modified[match_number] != 2) - continue; - - if (early_clobber[match_number] == 1) - continue; - - if (modified[operand_number] != 0) - continue; - - /* Make sure match_operand is the destination. */ - if (recog_operand[match_number] != SET_DEST (set)) - continue; - - src_note = find_reg_note (insn, REG_DEAD, src); - - if (! src_note) - { - /* Look for (set (regX) (op regA constX)) - (set (regY) (op regA constY)) - and change that to - (set (regA) (op regA constX)). - (set (regY) (op regA constY-constX)). - This works for add and shift operations, if - regA is dead after or set by the second insn. */ - - code = GET_CODE (SET_SRC (set)); - if ((code == PLUS || code == LSHIFTRT - || code == ASHIFT || code == ASHIFTRT) - && XEXP (SET_SRC (set), 0) == src - && (GET_CODE (XEXP (SET_SRC (set), 1)) - == CONST_INT)) - insn_const = INTVAL (XEXP (SET_SRC (set), 1)); - else if (! stable_but_for_p (SET_SRC (set), src, dst)) - continue; - else - /* We might find a src_note while scanning. */ - code = NOTE; - } - - if (regmove_dump_file) - fprintf (regmove_dump_file, - "Could fix operand %d of insn %d matching operand %d.\n", - operand_number, INSN_UID (insn), match_number); - - /* ??? If src is set once, and is set equal to a - constant, then do not use it for this optimization, - as this would make it no longer equivalent to a - constant? */ - - /* Scan forward to find the next instruction that - uses the output operand. If the operand dies here, - then replace it in both instructions with - operand_number. */ - - for (p = NEXT_INSN (insn); p; p = NEXT_INSN (p)) - { - if (GET_CODE (p) == CODE_LABEL - || GET_CODE (p) == JUMP_INSN - || (GET_CODE (p) == NOTE - && ((NOTE_LINE_NUMBER (p) - == NOTE_INSN_LOOP_BEG) - || (NOTE_LINE_NUMBER (p) - == NOTE_INSN_LOOP_END)))) - break; - - if (GET_RTX_CLASS (GET_CODE (p)) != 'i') - continue; - - if (reg_set_p (src, p) || reg_set_p (dst, p) - || (GET_CODE (PATTERN (p)) == USE - && reg_overlap_mentioned_p (src, - XEXP (PATTERN (p), - 0)))) - break; - - /* See if all of DST dies in P. This test is - slightly more conservative than it needs to be. */ - if ((dst_note - = find_regno_note (p, REG_DEAD, REGNO (dst))) - && (GET_MODE (XEXP (dst_note, 0)) - == GET_MODE (dst))) - { - if (! src_note) - { - rtx q; - rtx set2; - - /* If an optimization is done, the value - of SRC while P is executed will be - changed. Check that this is OK. */ - if (reg_overlap_mentioned_p (src, - PATTERN (p))) - break; - for (q = p; q; q = NEXT_INSN (q)) - { - if (GET_CODE (q) == CODE_LABEL - || GET_CODE (q) == JUMP_INSN - || (GET_CODE (q) == NOTE - && ((NOTE_LINE_NUMBER (q) - == NOTE_INSN_LOOP_BEG) - || (NOTE_LINE_NUMBER (q) - == NOTE_INSN_LOOP_END)))) - { - q = 0; - break; - } - if (GET_RTX_CLASS (GET_CODE (q)) != 'i') - continue; - if (reg_overlap_mentioned_p (src, - PATTERN (q)) - || reg_set_p (src, q)) - break; - } - if (q) - set2 = single_set (q); - if (! q || ! set2 - || GET_CODE (SET_SRC (set2)) != code - || XEXP (SET_SRC (set2), 0) != src - || (GET_CODE (XEXP (SET_SRC (set2), 1)) - != CONST_INT) - || (SET_DEST (set2) != src - && !find_reg_note (q, REG_DEAD, src))) - { - /* If this is a PLUS, we can still save - a register by doing - src += insn_const; - P; - src -= insn_const; . - This also gives opportunities for - subsequent optimizations in the - backward pass, so do it there. */ - if (code == PLUS && pass == 1 -#ifdef HAVE_cc0 - /* We man not emit an insn directly - after P if the latter sets CC0. */ - && ! sets_cc0_p (PATTERN (p)) -#endif - ) - - { - search_end = q; - q = insn; - set2 = set; - newconst = -insn_const; - code = MINUS; - } - else - break; - } - else - { - newconst - = (INTVAL (XEXP (SET_SRC (set2), 1)) - - insn_const); - /* Reject out of range shifts. */ - if (code != PLUS - && (newconst < 0 - || (newconst - >= GET_MODE_BITSIZE (GET_MODE (SET_SRC (set2)))))) - break; - if (code == PLUS) - { - post_inc = q; - if (SET_DEST (set2) != src) - post_inc_set = set2; - } - } - /* We use 1 as last argument to - validate_change so that all changes - are accepted or rejected together by - apply_change_group when it is called - by validate_replace_rtx . */ - validate_change (q, &XEXP (SET_SRC (set2), 1), - GEN_INT (newconst), 1); - } - validate_change (insn, - recog_operand_loc[match_number], - src, 1); - if (validate_replace_rtx (dst, src_subreg, p)) - success = 1; - break; - } - - if (reg_overlap_mentioned_p (dst, PATTERN (p))) - 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. */ - overlap = p; - src_note = find_reg_note (p, REG_DEAD, src); - } - - /* If we have passed a call instruction, and the - pseudo-reg SRC is not already live across a call, - then don't perform the optimization. */ - if (GET_CODE (p) == CALL_INSN) - { - num_calls++; - - if (REG_N_CALLS_CROSSED (REGNO (src)) == 0) - break; - } - } - - if (success) - { - /* Remove the death note for DST from P. */ - remove_note (p, dst_note); - if (code == MINUS) - { - post_inc - = emit_insn_after (copy_rtx (PATTERN (insn)), - p); -#if defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) - if (search_end - && try_auto_increment (search_end, post_inc, - 0, src, newconst, 1)) - post_inc = 0; -#endif - validate_change (insn, &XEXP (SET_SRC (set), 1), - GEN_INT (insn_const), 0); - REG_N_SETS (REGNO (src))++; - } - if (overlap) - { - /* The lifetime of src and dest overlap, - but we can change this by moving insn. */ - rtx pat = PATTERN (insn); - if (src_note) - remove_note (overlap, src_note); -#if defined (HAVE_POST_INCREMENT) || defined (HAVE_POST_DECREMENT) - if (code == PLUS - && try_auto_increment (overlap, insn, 0, - src, insn_const, 0)) - insn = overlap; - else -#endif - { - emit_insn_after_with_line_notes - (pat, PREV_INSN (p), insn); - PUT_CODE (insn, NOTE); - NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; - NOTE_SOURCE_FILE (insn) = 0; - /* emit_insn_after_with_line_notes - has no return value, so search - for the new insn. */ - for (insn = p; PATTERN (insn) != pat; ) - insn = PREV_INSN (insn); - } - } - /* Sometimes we'd generate src = const; src += n; - if so, replace the instruction that set src - in the first place. */ - - if (! overlap && (code == PLUS || code == MINUS)) - { - rtx note - = find_reg_note (insn, REG_EQUAL, NULL_RTX); - rtx q, set2; - int num_calls2 = 0; - - if (note && CONSTANT_P (XEXP (note, 0))) - { - for (q = PREV_INSN (insn); q; - q = PREV_INSN(q)) - { - if (GET_CODE (q) == JUMP_INSN) - { - q = 0; - break; - } - if (GET_RTX_CLASS (GET_CODE (q)) != 'i') - continue; - if (reg_set_p (src, q)) - { - set2 = single_set (q); - break; - } - if (reg_overlap_mentioned_p (src, - PATTERN (q))) - { - q = 0; - break; - } - if (GET_CODE (p) == CALL_INSN) - num_calls2++; - } - if (q && set2 && SET_DEST (set2) == src - && CONSTANT_P (SET_SRC (set2)) - && validate_change (insn, &SET_SRC (set), - XEXP (note, 0), 0)) - { - PUT_CODE (q, NOTE); - NOTE_LINE_NUMBER (q) = NOTE_INSN_DELETED; - NOTE_SOURCE_FILE (q) = 0; - REG_N_SETS (REGNO (src))--; - REG_N_CALLS_CROSSED (REGNO (src)) - -= num_calls2; - insn_const = 0; - } - } - } - if (0) ; -#if defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) - else if ((code == PLUS || code == MINUS) - && insn_const - && try_auto_increment (p, insn, 0, - src, insn_const, 1)) - insn = p; -#endif -#if defined (HAVE_POST_INCREMENT) || defined (HAVE_POST_DECREMENT) - else if (post_inc - && try_auto_increment (p, post_inc, - post_inc_set, src, - newconst, 0)) - post_inc = 0; -#endif -#if defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) - /* If post_inc still prevails, try to find an - insn where it can be used as a pre-in/decrement. - If code is MINUS, this was already tried. */ - if (post_inc && code == PLUS - /* Check that newconst is likely to be usable - in a pre-in/decrement before starting the - search. */ - && (0 -#if defined (HAVE_PRE_INCREMENT) - || (newconst > 0 && newconst <= MOVE_MAX) -#endif -#if defined (HAVE_PRE_DECREMENT) - || (newconst < 0 && newconst >= -MOVE_MAX) -#endif - ) && exact_log2 (newconst)) - { - rtx q, inc_dest; - - inc_dest - = post_inc_set ? SET_DEST (post_inc_set) : src; - for (q = post_inc; q = NEXT_INSN (q); ) - { - if (GET_CODE (q) == CODE_LABEL - || GET_CODE (q) == JUMP_INSN - || (GET_CODE (q) == NOTE - && ((NOTE_LINE_NUMBER (q) - == NOTE_INSN_LOOP_BEG) - || (NOTE_LINE_NUMBER (q) - == NOTE_INSN_LOOP_END)))) - break; - if (GET_RTX_CLASS (GET_CODE (q)) != 'i') - continue; - if (src != inc_dest - && (reg_overlap_mentioned_p (src, - PATTERN (q)) - || reg_set_p (src, q))) - break; - if (reg_set_p (inc_dest, q)) - break; - if (reg_overlap_mentioned_p (inc_dest, - PATTERN (q))) - { - try_auto_increment (q, post_inc, - post_inc_set, - inc_dest, - newconst, 1); - break; - } - } - } -#endif /* defined (HAVE_PRE_INCREMENT) || defined (HAVE_PRE_DECREMENT) */ - /* Move the death note for DST to INSN if it is used - there. */ - if (reg_overlap_mentioned_p (dst, PATTERN (insn))) - { - XEXP (dst_note, 1) = REG_NOTES (insn); - REG_NOTES (insn) = dst_note; - } - - if (src_note) - { - /* Move the death note for SRC from INSN to P. */ - if (! overlap) - remove_note (insn, src_note); - XEXP (src_note, 1) = REG_NOTES (p); - REG_NOTES (p) = src_note; - - REG_N_CALLS_CROSSED (REGNO (src)) += num_calls; - } - - REG_N_SETS (REGNO (src))++; - REG_N_SETS (REGNO (dst))--; - - REG_N_CALLS_CROSSED (REGNO (dst)) -= num_calls; - - /* ??? Must adjust reg_live_length, and reg_n_refs for - both registers. Must keep track of loop_depth in - order to get reg_n_refs adjustment correct. */ - - if (regmove_dump_file) - fprintf (regmove_dump_file, - "Fixed operand %d of insn %d matching operand %d.\n", - operand_number, INSN_UID (insn), - match_number); - - goto done_forwards; - } - } - } - done_forwards: - ; - } - } - } - - /* A backward pass. Replace input operands with output operands. */ - - if (regmove_dump_file) - fprintf (regmove_dump_file, "Starting backward pass...\n"); - - for (insn = get_last_insn (); insn; insn = PREV_INSN (insn)) - { - if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') - { - int insn_code_number = recog_memoized (insn); - int operand_number, match_number; - - if (insn_code_number < 0) - continue; - - insn_extract (insn); - if (! constrain_operands (insn_code_number, 0)) - continue; - - commutative = -1; - - /* Must initialize this before the loop, because the code for - the commutative case may set matches for operands other than - the current one. */ - bzero (matches, sizeof (matches)); - - for (operand_number = 0; - operand_number < insn_n_operands[insn_code_number]; - operand_number++) - { - int output_operand = 0; - int matching_operand = operand_number; - char *p, c; - int i = 0; - - modified[operand_number] = 0; - early_clobber[operand_number] = 0; - - p = insn_operand_constraint[insn_code_number][operand_number]; - - if (*p == '=') - modified[operand_number] = 2; - else if (*p == '+') - modified[operand_number] = 1; - - for (; *p && i < which_alternative; p++) - if (*p == ',') - i++; - - while ((c = *p++) != '\0' && c != ',') - switch (c) - { - case '=': - break; - case '+': - break; - case '&': - early_clobber[operand_number] = 1; - break; - case '%': - commutative = operand_number; - break; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c -= '0'; - matches[c][operand_number] = 1; - if (commutative >= 0) - { - if (c == commutative || c == commutative + 1) - { - int other = c + (c == commutative ? 1 : -1); - matches[other][operand_number] = 1; - } - if (operand_number == commutative - || operand_number == commutative + 1) - { - int other = (operand_number - + (operand_number == commutative - ? 1 : -1)); - matches[c][other] = 1; - } - } - break; - } - } - - /* Now scan through the operands looking for a destination operand - which is supposed to match a source operand. - Then scan backward for an instruction which sets the source - operand. If safe, then replace the source operand with the - dest operand in both instructions. */ - - for (operand_number = 0; - operand_number < insn_n_operands[insn_code_number]; - operand_number++) - { - for (match_number = 0; - match_number < insn_n_operands[insn_code_number]; - match_number++) - { - rtx set, p, src, dst; - rtx src_note, dst_note; - int success = 0; - int num_calls = 0; - - /* Nothing to do if the two operands aren't supposed to - match. */ - if (matches[operand_number][match_number] == 0) - continue; - - dst = recog_operand[operand_number]; - src = recog_operand[match_number]; - - if (GET_CODE (src) != REG - || REGNO (src) < FIRST_PSEUDO_REGISTER) - continue; - - if (GET_CODE (dst) != REG - || REGNO (dst) < FIRST_PSEUDO_REGISTER) - continue; - - /* If the operands already match, then there is nothing - to do. */ - if (operands_match_p (src, dst)) - continue; - - set = single_set (insn); - if (! set) - continue; - - /* operand_number/dst must be a write-only operand, and - match_operand/src must be a read-only operand. */ - if (modified[match_number] != 0) - continue; - - if (early_clobber[operand_number] == 1) - continue; - - if (modified[operand_number] != 2) - continue; - - /* Make sure operand_number is the destination. */ - if (recog_operand[operand_number] != SET_DEST (set)) - continue; - - if (! (src_note = find_reg_note (insn, REG_DEAD, src))) - continue; - - /* Can not modify an earlier insn to set dst if this insn - uses an old value in the source. */ - if (reg_overlap_mentioned_p (dst, SET_SRC (set))) - continue; - - if (regmove_dump_file) - fprintf (regmove_dump_file, - "Could fix operand %d of insn %d matching operand %d.\n", - operand_number, INSN_UID (insn), match_number); - - /* ??? If src is set once, and is set equal to a constant, - then do not use it for this optimization, as this would - make it no longer equivalent to a constant? */ - - /* Scan backward to find the first instruction that uses - the input operand. If the operand is set here, then - replace it in both instructions with operand_number. */ - - for (p = PREV_INSN (insn); p; p = PREV_INSN (p)) - { - rtx pset; - - if (GET_CODE (p) == CODE_LABEL - || GET_CODE (p) == JUMP_INSN - || (GET_CODE (p) == NOTE - && (NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_BEG - || NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END))) - break; - - if (GET_RTX_CLASS (GET_CODE (p)) != 'i') - continue; - - /* ??? See if all of SRC is set in P. This test is much - more conservative than it needs to be. */ - pset = single_set (p); - if (pset && SET_DEST (pset) == src) - { - /* We use validate_replace_rtx, in case there - are multiple identical source operands. All of - them have to be changed at the same time. */ - if (validate_replace_rtx (src, dst, insn)) - { - if (validate_change (p, &SET_DEST (pset), - dst, 0)) - success = 1; - else - { - /* Change all source operands back. - This modifies the dst as a side-effect. */ - validate_replace_rtx (dst, src, insn); - /* Now make sure the dst is right. */ - validate_change (insn, - recog_operand_loc[operand_number], - dst, 0); - } - } - break; - } - - if (reg_overlap_mentioned_p (src, PATTERN (p)) - || reg_overlap_mentioned_p (dst, PATTERN (p))) - break; - - /* If we have passed a call instruction, and the - pseudo-reg DST is not already live across a call, - then don't perform the optimization. */ - if (GET_CODE (p) == CALL_INSN) - { - num_calls++; - - if (REG_N_CALLS_CROSSED (REGNO (dst)) == 0) - break; - } - } - - if (success) - { - /* Remove the death note for SRC from INSN. */ - remove_note (insn, src_note); - /* Move the death note for SRC to P if it is used - there. */ - if (reg_overlap_mentioned_p (src, PATTERN (p))) - { - XEXP (src_note, 1) = REG_NOTES (p); - REG_NOTES (p) = src_note; - } - /* If there is a REG_DEAD note for DST on P, then remove - it, because DST is now set there. */ - if (dst_note = find_reg_note (p, REG_DEAD, dst)) - remove_note (p, dst_note); - - REG_N_SETS (REGNO (dst))++; - REG_N_SETS (REGNO (src))--; - - REG_N_CALLS_CROSSED (REGNO (dst)) += num_calls; - REG_N_CALLS_CROSSED (REGNO (src)) -= num_calls; - - /* ??? Must adjust reg_live_length, and reg_n_refs for - both registers. Must keep track of loop_depth in - order to get reg_n_refs adjustment correct. */ - - if (regmove_dump_file) - fprintf (regmove_dump_file, - "Fixed operand %d of insn %d matching operand %d.\n", - operand_number, INSN_UID (insn), match_number); - - goto done_backwards; - } - } - } - done_backwards: - ; - } - } -#endif /* REGISTER_CONSTRAINTS */ -} - -/* return nonzero if X is stable but for mentioning SRC or mentioning / - changing DST . If in doubt, presume it is unstable. */ -static int -stable_but_for_p (x, src, dst) - rtx x, src, dst; -{ - RTX_CODE code = GET_CODE (x); - switch (GET_RTX_CLASS (code)) - { - case '<': case '1': case 'c': case '2': case 'b': case '3': - { - int i; - char *fmt = GET_RTX_FORMAT (code); - for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) - if (fmt[i] == 'e' && ! stable_but_for_p (XEXP (x, i), src, dst)) - return 0; - return 1; - } - case 'o': - if (x == src || x == dst) - return 1; - /* fall through */ - default: - return ! rtx_unstable_p (x); - } -} diff --git a/gcc/system.h b/gcc/system.h deleted file mode 100644 index 920e5128c68..00000000000 --- a/gcc/system.h +++ /dev/null @@ -1,188 +0,0 @@ -/* system.h - Get common system includes and various definitions and - declarations based on autoconf macros. - Copyright (C) 1998 Free Software Foundation, Inc. - - */ - -#ifndef __GCC_SYSTEM_H__ -#define __GCC_SYSTEM_H__ - -#include -#include - -/* Jim Meyering writes: - - "... Some ctype macros are valid only for character codes that - isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when - using /bin/cc or gcc but without giving an ansi option). So, all - ctype uses should be through macros like ISPRINT... If - STDC_HEADERS is defined, then autoconf has verified that the ctype - macros don't need to be guarded with references to isascii. ... - Defining isascii to 1 should let any compiler worth its salt - eliminate the && through constant folding." - - Bruno Haible adds: - - "... Furthermore, isupper(c) etc. have an undefined result if c is - outside the range -1 <= c <= 255. One is tempted to write isupper(c) - with c being of type `char', but this is wrong if c is an 8-bit - character >= 128 which gets sign-extended to a negative value. - The macro ISUPPER protects against this as well." */ - -#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) -#endif - -#ifdef isblank -# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank (c)) -#else -# define ISBLANK(c) ((c) == ' ' || (c) == '\t') -#endif -#ifdef isgraph -# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isgraph (c)) -#else -# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint (c) && !isspace (c)) -#endif - -#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) -#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) -#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c)) -#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) -#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (c)) -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) -#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) -#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) - -/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: - - Its arg may be any int or unsigned int; it need not be an unsigned char. - - It's guaranteed to evaluate its argument exactly once. - - It's typically faster. - Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that - only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless - it's important to use the locale's definition of `digit' even when the - host does not conform to Posix. */ -#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) - - -#include -#include -#include - -#ifndef errno -extern int errno; -#endif - -#ifdef HAVE_STRING_H -# include -#else -# ifdef HAVE_STRINGS_H -# include -# endif -#endif - -#ifdef HAVE_STDLIB_H -# include -#endif - -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifdef HAVE_SYS_PARAM_H -# include -#endif - -#if HAVE_LIMITS_H -# include -#endif - -#ifdef TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -#endif -#endif - -#ifdef HAVE_FCNTL_H -# include -#else -# include -#endif - -#ifndef SEEK_SET -# define SEEK_SET 0 -# define SEEK_CUR 1 -# define SEEK_END 2 -#endif -#ifndef F_OK -# define F_OK 0 -# define X_OK 1 -# define W_OK 2 -# define R_OK 4 -#endif - - - -#ifndef bcopy -# ifdef HAVE_BCOPY -# ifdef NEED_DECLARATION_BCOPY -void bcopy (); -# endif -# else /* ! HAVE_BCOPY */ -# define bcopy(src,dst,len) memcpy ((dst),(src),(len)) -# endif -#endif - -#ifndef bcmp -# ifdef HAVE_BCMP -# ifdef NEED_DECLARATION_BCMP -void bcmp (); -# endif -# else /* ! HAVE_BCMP */ -# define bcmp(left,right,len) memcmp ((left),(right),(len)) -# endif -#endif - -#ifndef bzero -# ifdef HAVE_BZERO -# ifdef NEED_DECLARATION_BZERO -void bzero (); -# endif -# else /* ! HAVE_BZERO */ -# define bzero(dst,len) memset ((dst),0,(len)) -# endif -#endif - -#ifndef index -# ifdef HAVE_INDEX -# ifdef NEED_DECLARATION_INDEX -extern char *index (); -# endif -# else /* ! HAVE_INDEX */ -# define index strchr -# endif -#endif - -#ifndef rindex -# ifdef HAVE_RINDEX -# ifdef NEED_DECLARATION_RINDEX -extern char *rindex (); -# endif -# else /* ! HAVE_RINDEX */ -# define rindex strrchr -# endif -#endif - -#ifdef NEED_DECLARATION_FREE -extern void free (); -#endif - -#endif /* __GCC_SYSTEM_H__ */ diff --git a/gcc/texinfo.tex b/gcc/texinfo.tex deleted file mode 100644 index 37c1bf3b7b5..00000000000 --- a/gcc/texinfo.tex +++ /dev/null @@ -1,4977 +0,0 @@ -% texinfo.tex -- TeX macros to handle Texinfo files. -% $Id: texinfo.tex,v 2.226 1998/02/25 20:48:50 karl Exp karl $ -% -% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98 -% Free Software Foundation, Inc. -% -% This texinfo.tex file is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License as -% published by the Free Software Foundation; either version 2, or (at -% your option) any later version. -% -% This texinfo.tex file is distributed in the hope that it will be -% useful, but WITHOUT ANY WARRANTY; without even the implied warranty -% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -% General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this texinfo.tex file; see the file COPYING. If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. -% -% In other words, you are welcome to use, share and improve this program. -% You are forbidden to forbid anyone else to use, share and improve -% what you give them. Help stamp out software-hoarding! -% -% Please try the latest version of texinfo.tex before submitting bug -% reports; you can get the latest version from: -% ftp://ftp.cs.umb.edu/pub/tex/texinfo.tex -% /home/gd/gnu/doc/texinfo.tex on the GNU machines. -% -% Send bug reports to bug-texinfo@gnu.org. -% Please include a precise test case in each bug report, -% including a complete document with which we can reproduce the problem. -% -% Texinfo macros (with @macro) are *not* supported by texinfo.tex. You -% have to run makeinfo -E to expand macros first; the texi2dvi script -% does this. - - -% Make it possible to create a .fmt file just by loading this file: -% if the underlying format is not loaded, start by loading it now. -% Added by gildea November 1993. -\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi - -% This automatically updates the version number based on RCS. -\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 2.226 $ -\message{Loading texinfo package [Version \texinfoversion]:} - -% If in a .fmt file, print the version number -% and turn on active characters that we couldn't do earlier because -% they might have appeared in the input file name. -\everyjob{\message{[Texinfo version \texinfoversion]}\message{} - \catcode`+=\active \catcode`\_=\active} - -% Save some parts of plain tex whose names we will redefine. - -\let\ptexb=\b -\let\ptexbullet=\bullet -\let\ptexc=\c -\let\ptexcomma=\, -\let\ptexdot=\. -\let\ptexdots=\dots -\let\ptexend=\end -\let\ptexequiv=\equiv -\let\ptexexclam=\! -\let\ptexi=\i -\let\ptexlbrace=\{ -\let\ptexrbrace=\} -\let\ptexstar=\* -\let\ptext=\t - -% Be sure we're in horizontal mode when doing a tie, since we make space -% equivalent to this in @example-like environments. Otherwise, a space -% at the beginning of a line will start with \penalty -- and -% since \penalty is valid in vertical mode, we'd end up putting the -% penalty on the vertical list instead of in the new paragraph. -{\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } -} - - -\message{Basics,} -\chardef\other=12 - -% If this character appears in an error message or help string, it -% starts a new line in the output. -\newlinechar = `^^J - -% Set up fixed words for English. -\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi% -\def\putwordInfo{Info}% -\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi% -\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi% -\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi% -\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi% -\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi% -\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi% -\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi% -\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi% -\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi% - -% Ignore a token. -% -\def\gobble#1{} - -\hyphenation{ap-pen-dix} -\hyphenation{mini-buf-fer mini-buf-fers} -\hyphenation{eshell} -\hyphenation{white-space} - -% Margin to add to right of even pages, to left of odd pages. -\newdimen \bindingoffset -\newdimen \normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% Sometimes it is convenient to have everything in the transcript file -% and nothing on the terminal. We don't just call \tracingall here, -% since that produces some useless output on the terminal. -% -\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% -\def\loggingall{\tracingcommands2 \tracingstats2 - \tracingpages1 \tracingoutput1 \tracinglostchars1 - \tracingmacros2 \tracingparagraphs1 \tracingrestores1 - \showboxbreadth\maxdimen\showboxdepth\maxdimen -}% - -% For @cropmarks command. -% Do @cropmarks to get crop marks. -% -\newif\ifcropmarks -\let\cropmarks = \cropmarkstrue -% -% Dimensions to add cropmarks at corners. -% Added by P. A. MacKay, 12 Nov. 1986 -% -\newdimen\cornerlong \newdimen\cornerthick -\newdimen\topandbottommargin -\newdimen\outerhsize \newdimen\outervsize -\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks -\outerhsize=7in -%\outervsize=9.5in -% Alternative @smallbook page size is 9.25in -\outervsize=9.25in -\topandbottommargin=.75in - -% Main output routine. -\chardef\PAGE = 255 -\output = {\onepageout{\pagecontents\PAGE}} - -\newbox\headlinebox -\newbox\footlinebox - -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. -\def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% - \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% - % - {% - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \escapechar = `\\ % use backslash in output files. - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - \shipout\vbox{% - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingxxx.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 2\baselineskip - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \turnoffactive - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi -} - -\newinsert\margin \dimen\margin=\maxdimen - -\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} -{\catcode`\@ =11 -\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi -% marginal hacks, juha@viisa.uucp (Juha Takala) -\ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1 \unvbox#1 -\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi -\ifr@ggedbottom \kern-\dimen@ \vfil \fi} -} - -% Here are the rules for the cropmarks. Note that they are -% offset so that the space between them is truly \outerhsize or \outervsize -% (P. A. MacKay, 12 November, 1986) -% -\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} -\def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} -\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} -\def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - -% Parse an argument, then pass it to #1. The argument is the rest of -% the input line (except we remove a trailing comment). #1 should be a -% macro which expects an ordinary undelimited TeX argument. -% -\def\parsearg#1{% - \let\next = #1% - \begingroup - \obeylines - \futurelet\temp\parseargx -} - -% If the next token is an obeyed space (from an @example environment or -% the like), remove it and recurse. Otherwise, we're done. -\def\parseargx{% - % \obeyedspace is defined far below, after the definition of \sepspaces. - \ifx\obeyedspace\temp - \expandafter\parseargdiscardspace - \else - \expandafter\parseargline - \fi -} - -% Remove a single space (as the delimiter token to the macro call). -{\obeyspaces % - \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} - -{\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - % - % First remove any @c comment, then any @comment. - % Result of each macro is put in \toks0. - \argremovec #1\c\relax % - \expandafter\argremovecomment \the\toks0 \comment\relax % - % - % Call the caller's macro, saved as \next in \parsearg. - \expandafter\next\expandafter{\the\toks0}% - }% -} - -% Since all \c{,omment} does is throw away the argument, we can let TeX -% do that for us. The \relax here is matched by the \relax in the call -% in \parseargline; it could be more or less anything, its purpose is -% just to delimit the argument to the \c. -\def\argremovec#1\c#2\relax{\toks0 = {#1}} -\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} - -% \argremovec{,omment} might leave us with trailing spaces, though; e.g., -% @end itemize @c foo -% will have two active spaces as part of the argument with the -% `itemize'. Here we remove all active spaces from #1, and assign the -% result to \toks0. -% -% This loses if there are any *other* active characters besides spaces -% in the argument -- _ ^ +, for example -- since they get expanded. -% Fortunately, Texinfo does not define any such commands. (If it ever -% does, the catcode of the characters in questionwill have to be changed -% here.) But this means we cannot call \removeactivespaces as part of -% \argremovec{,omment}, since @c uses \parsearg, and thus the argument -% that \parsearg gets might well have any character at all in it. -% -\def\removeactivespaces#1{% - \begingroup - \ignoreactivespaces - \edef\temp{#1}% - \global\toks0 = \expandafter{\temp}% - \endgroup -} - -% Change the active space to expand to nothing. -% -\begingroup - \obeyspaces - \gdef\ignoreactivespaces{\obeyspaces\let =\empty} -\endgroup - - -\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - -%% These are used to keep @begin/@end levels from running away -%% Call \inENV within environments (after a \begingroup) -\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} -\def\ENVcheck{% -\ifENV\errmessage{Still within an environment. Type Return to continue.} -\endgroup\fi} % This is not perfect, but it should reduce lossage - -% @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Type to continue.} - -\outer\def\begin{\parsearg\beginxxx} - -\def\beginxxx #1{% -\expandafter\ifx\csname #1\endcsname\relax -{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else -\csname #1\endcsname\fi} - -% @end foo executes the definition of \Efoo. -% -\def\end{\parsearg\endxxx} -\def\endxxx #1{% - \removeactivespaces{#1}% - \edef\endthing{\the\toks0}% - % - \expandafter\ifx\csname E\endthing\endcsname\relax - \expandafter\ifx\csname \endthing\endcsname\relax - % There's no \foo, i.e., no ``environment'' foo. - \errhelp = \EMsimple - \errmessage{Undefined command `@end \endthing'}% - \else - \unmatchedenderror\endthing - \fi - \else - % Everything's ok; the right environment has been started. - \csname E\endthing\endcsname - \fi -} - -% There is an environment #1, but it hasn't been started. Give an error. -% -\def\unmatchedenderror#1{% - \errhelp = \EMsimple - \errmessage{This `@end #1' doesn't have a matching `@#1'}% -} - -% Define the control sequence \E#1 to give an unmatched @end error. -% -\def\defineunmatchedend#1{% - \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% -} - - -% Single-spacing is done by various environments (specifically, in -% \nonfillstart and \quotations). -\newskip\singlespaceskip \singlespaceskip = 12.5pt -\def\singlespace{% - % Why was this kern here? It messes up equalizing space above and below - % environments. --karl, 6may93 - %{\advance \baselineskip by -\singlespaceskip - %\kern \baselineskip}% - \setleading \singlespaceskip -} - -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt \char '100}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt \char '173}} -\def\myrbrace {{\tt \char '175}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce actual \{ & \} command in an index. - \catcode`\{ = 12 \catcode`\} = 12 - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\@ = 0 \catcode`\\ = 12 - @gdef@lbracecmd[\{]% - @gdef@rbracecmd[\}]% -@endgroup - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown -% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% @: forces normal size whitespace following. -\def\:{\spacefactor=1000 } - -% @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} - -% @. is an end-of-sentence period. -\def\.{.\spacefactor=3000 } - -% @! is an end-of-sentence bang. -\def\!{!\spacefactor=3000 } - -% @? is an end-of-sentence query. -\def\?{?\spacefactor=3000 } - -% @w prevents a word break. Without the \leavevmode, @w at the -% beginning of a paragraph, when TeX is still in vertical mode, would -% produce a whole line of output instead of starting the paragraph. -\def\w#1{\leavevmode\hbox{#1}} - -% @group ... @end group forces ... to be all on one page, by enclosing -% it in a TeX vbox. We use \vtop instead of \vbox to construct the box -% to keep its height that of a normal line. According to the rules for -% \topskip (p.114 of the TeXbook), the glue inserted is -% max (\topskip - \ht (first item), 0). If that height is large, -% therefore, no glue is inserted, and the space between the headline and -% the text is small, which looks bad. -% -\def\group{\begingroup - \ifnum\catcode13=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - % - % The \vtop we start below produces a box with normal height and large - % depth; thus, TeX puts \baselineskip glue before it, and (when the - % next line of text is done) \lineskip glue after it. (See p.82 of - % the TeXbook.) Thus, space below is not quite equal to space - % above. But it's pretty close. - \def\Egroup{% - \egroup % End the \vtop. - \endgroup % End the \group. - }% - % - \vtop\bgroup - % We have to put a strut on the last line in case the @group is in - % the midst of an example, rather than completely enclosing it. - % Otherwise, the interline space between the last line of the group - % and the first line afterwards is too small. But we can't put the - % strut in \Egroup, since there it would be on a line by itself. - % Hence this just inserts a strut at the beginning of each line. - \everypar = {\strut}% - % - % Since we have a strut on every line, we don't need any of TeX's - % normal interline spacing. - \offinterlineskip - % - % OK, but now we have to do something about blank - % lines in the input in @example-like environments, which normally - % just turn into \lisppar, which will insert no space now that we've - % turned off the interline space. Simplest is to make them be an - % empty paragraph. - \ifx\par\lisppar - \edef\par{\leavevmode \par}% - % - % Reset ^^M's definition to new definition of \par. - \obeylines - \fi - % - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment -} -% -% TeX puts in an \escapechar (i.e., `@') at the beginning of the help -% message, so this ends up printing `@group can only ...'. -% -\newhelp\groupinvalidhelp{% -group can only be used in environments such as @example,^^J% -where each line of input produces a line of output.} - -% @need space-in-mils -% forces a page break if there is not space-in-mils remaining. - -\newdimen\mil \mil=0.001in - -\def\need{\parsearg\needx} - -% Old definition--didn't work. -%\def\needx #1{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000 -%\prevdepth=-1000pt -%}} - -\def\needx#1{% - % Go into vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % Don't add any leading before our big empty box, but allow a page - % break, since the best break might be right here. - \allowbreak - \nointerlineskip - \vtop to #1\mil{\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak -} - -% @br forces paragraph break - -\let\br = \par - -% @dots{} output an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in a typewriter -% font as three actual period characters. -% -\def\dots{\hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil -}} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \hbox to 2em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - \spacefactor=3000 -} - - -% @page forces the start of a new page - -\def\page{\par\vfill\supereject} - -% @exdent text.... -% outputs text on separate line in roman font, starting at standard page margin - -% This records the amount of indent in the innermost environment. -% That's how much \exdent should take out. -\newskip\exdentamount - -% This defn is used inside fill environments such as @defun. -\def\exdent{\parsearg\exdentyyy} -\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} - -% This defn is used inside nofill environments such as @example. -\def\nofillexdent{\parsearg\nofillexdentyyy} -\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount -\leftline{\hskip\leftskip{\rm#1}}}} - -% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. - -\def\inmargin#1{% -\strut\vadjust{\nobreak\kern-\strutdepth - \vtop to \strutdepth{\baselineskip\strutdepth\vss - \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} -\newskip\inmarginspacing \inmarginspacing=1cm -\def\strutdepth{\dp\strutbox} - -%\hbox{{\rm#1}}\hfil\break}} - -% @include file insert text of that file as input. -% Allow normal characters that we make active in the argument (a file name). -\def\include{\begingroup - \catcode`\\=12 - \catcode`~=12 - \catcode`^=12 - \catcode`_=12 - \catcode`|=12 - \catcode`<=12 - \catcode`>=12 - \catcode`+=12 - \parsearg\includezzz} -% Restore active chars for included file. -\def\includezzz#1{\endgroup\begingroup - % Read the included file in a group so nested @include's work. - \def\thisfile{#1}% - \input\thisfile -\endgroup} - -\def\thisfile{} - -% @center line outputs that line, centered - -\def\center{\parsearg\centerzzz} -\def\centerzzz #1{{\advance\hsize by -\leftskip -\advance\hsize by -\rightskip -\centerline{#1}}} - -% @sp n outputs n lines of vertical space - -\def\sp{\parsearg\spxxx} -\def\spxxx #1{\vskip #1\baselineskip} - -% @comment ...line which is ignored... -% @c is the same as @comment -% @ignore ... @end ignore is another way to write a comment - -\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other% -\parsearg \commentxxx} - -\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 } - -\let\c=\comment - -% @paragraphindent is defined for the Info formatting commands only. -\let\paragraphindent=\comment - -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% -\let\chapter=\relax -\let\unnumbered=\relax -\let\top=\relax -\let\unnumberedsec=\relax -\let\unnumberedsection=\relax -\let\unnumberedsubsec=\relax -\let\unnumberedsubsection=\relax -\let\unnumberedsubsubsec=\relax -\let\unnumberedsubsubsection=\relax -\let\section=\relax -\let\subsec=\relax -\let\subsubsec=\relax -\let\subsection=\relax -\let\subsubsection=\relax -\let\appendix=\relax -\let\appendixsec=\relax -\let\appendixsection=\relax -\let\appendixsubsec=\relax -\let\appendixsubsection=\relax -\let\appendixsubsubsec=\relax -\let\appendixsubsubsection=\relax -\let\contents=\relax -\let\smallbook=\relax -\let\titlepage=\relax -} - -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -\def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \relax - \let\deffn = \relax - \let\deffnx = \relax - \let\defindex = \relax - \let\defivar = \relax - \let\defmac = \relax - \let\defmethod = \relax - \let\defop = \relax - \let\defopt = \relax - \let\defspec = \relax - \let\deftp = \relax - \let\deftypefn = \relax - \let\deftypefun = \relax - \let\deftypevar = \relax - \let\deftypevr = \relax - \let\defun = \relax - \let\defvar = \relax - \let\defvr = \relax - \let\ref = \relax - \let\xref = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\settitle = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\everyheading = \relax - \let\evenheading = \relax - \let\oddheading = \relax - \let\everyfooting = \relax - \let\evenfooting = \relax - \let\oddfooting = \relax - \let\headings = \relax - \let\include = \relax - \let\lowersections = \relax - \let\down = \relax - \let\raisesections = \relax - \let\up = \relax - \let\set = \relax - \let\clear = \relax - \let\item = \relax -} - -% Ignore @ignore ... @end ignore. -% -\def\ignore{\doignore{ignore}} - -% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. -% -\def\ifinfo{\doignore{ifinfo}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifnottex{\doignore{ifnottex}} -\def\html{\doignore{html}} -\def\menu{\doignore{menu}} -\def\direntry{\doignore{direntry}} - -% Also ignore @macro ... @end macro. The user must run texi2dvi, -% which runs makeinfo to do macro expansion. Ignore @unmacro, too. -\def\macro{\doignore{macro}} -\let\unmacro = \comment - - -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory = \comment - -% Ignore text until a line `@end #1'. -% -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - \long\def\doignoretext##1\end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode32 = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % And now expand that command. - \doignoretext -} - -% What we do to finish off ignored text. -% -\def\enddoignore{\endgroup\ignorespaces}% - -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{***WARNING*** for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue - \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the change of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook: make the current font be a dummy font. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because not all sites - % might have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont - \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont - \let\tensf = \nullfont - % Similarly for index fonts (mostly for their use in - % smallexample) - \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont - \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont - \let\indsf = \nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex - \def\tex{\doignore{tex}}% -} - -% @set VAR sets the variable VAR to an empty value. -% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. -% -% Since we want to separate VAR from REST-OF-LINE (which might be -% empty), we can't just use \parsearg; we have to insert a space of our -% own to delimit the rest of the line, and then take it out again if we -% didn't need it. Make sure the catcode of space is correct to avoid -% losing inside @example, for instance. -% -\def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -% -\def\value{\begingroup - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \valuexxx} -\def\valuexxx#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {\{No value for ``#1''\}}% - \else - \csname SET#1\endcsname - \fi -\endgroup} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -\def\ifset{\parsearg\ifsetxxx} -\def\ifsetxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifsetfail - \else - \expandafter\ifsetsucceed - \fi -} -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} - -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\ifclearxxx} -\def\ifclearxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifclearsucceed - \else - \expandafter\ifclearfail - \fi -} -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text -% following, through the first @end iftex (etc.). Make `@end iftex' -% (etc.) valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\def\ifnothtml{\conditionalsucceed{ifnothtml}} -\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} -\defineunmatchedend{iftex} -\defineunmatchedend{ifnothtml} -\defineunmatchedend{ifnotinfo} - -% We can't just want to start a group at @iftex (for example) and end it -% at @end iftex, since then @set commands inside the conditional have no -% effect (they'd get reverted at the end of the group). So we must -% define \Eiftex to redefine itself to be its previous value. (We can't -% just define it to fail again with an ``unmatched end'' error, since -% the @ifset might be nested.) -% -\def\conditionalsucceed#1{% - \edef\temp{% - % Remember the current value of \E#1. - \let\nece{prevE#1} = \nece{E#1}% - % - % At the `@end #1', redefine \E#1 to be its previous value. - \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% - }% - \temp -} - -% We need to expand lots of \csname's, but we don't want to expand the -% control sequences after we've constructed them. -% -\def\nece#1{\expandafter\noexpand\csname#1\endcsname} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math means output in math mode. -% We don't use $'s directly in the definition of \math because control -% sequences like \math are expanded when the toc file is written. Then, -% we read the toc file back, the $'s will be normal characters (as they -% should be, according to the definition of Texinfo). So we must use a -% control sequence to switch into and out of math mode. -% -% This isn't quite enough for @math to work properly in indices, but it -% seems unlikely it will ever be needed there. -% -\let\implicitmath = $ -\def\math#1{\implicitmath #1\implicitmath} - -% @bullet and @minus need the same treatment as @math, just above. -\def\bullet{\implicitmath\ptexbullet\implicitmath} -\def\minus{\implicitmath-\implicitmath} - -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -\def\donoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\setref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\unnumbnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\appendixnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi -\global\let\lastnode=\relax} - -% @refill is a no-op. -\let\refill=\relax - -% @setfilename is done at the beginning of every texinfo file. -% So open here the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \readauxfile - \opencontents - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. -} - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - -% \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx} -% \def\macroxxx#1#2 \end macro{% -% \expandafter\gdef\macrotemp#1{#2}% -% \endgroup} - -%\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx} -%\def\linemacroxxx#1#2 \end linemacro{% -%\let\parsearg=\relax -%\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}% -%\expandafter\xdef\macrotemp{\parsearg\macrotempx}% -%\expandafter\gdef\macrotempx#1{#2}% -%\endgroup} - -%\def\butfirst#1{} - - -\message{fonts,} - -% Font-change commands. - -% Texinfo supports the sans serif font style, which plain TeX does not. -% So we set up a \sf analogous to plain's \rm, etc. -\newfam\sffam -\def\sf{\fam=\sffam \tensf} -\let\li = \sf % Sometimes we call it \li, not \sf. - -% We don't need math for this one. -\def\ttsl{\tenttsl} - -% Use Computer Modern fonts at \magstephalf (11pt). -\newcount\mainmagstep -\mainmagstep=\magstephalf - -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). -% #3 is the font's design size, #4 is a scale factor -\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} - -% Use cm as the default font prefix. -% To specify the font prefix, you must define \fontprefix -% before you read in texinfo.tex. -\ifx\fontprefix\undefined -\def\fontprefix{cm} -\fi -% Support font families that don't use the same naming scheme as CM. -\def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold -\def\bfshape{b} -\def\bxshape{bx} -\def\ttshape{tt} -\def\ttbshape{tt} -\def\ttslshape{sltt} -\def\itshape{ti} -\def\itbshape{bxti} -\def\slshape{sl} -\def\slbshape{bxsl} -\def\sfshape{ss} -\def\sfbshape{ss} -\def\scshape{csc} -\def\scbshape{csc} - -\ifx\bigger\relax -\let\mainmagstep=\magstep1 -\setfont\textrm\rmshape{12}{1000} -\setfont\texttt\ttshape{12}{1000} -\else -\setfont\textrm\rmshape{10}{\mainmagstep} -\setfont\texttt\ttshape{10}{\mainmagstep} -\fi -% Instead of cmb10, you many want to use cmbx10. -% cmbx10 is a prettier font on its own, but cmb10 -% looks better when embedded in a line with cmr10. -\setfont\textbf\bfshape{10}{\mainmagstep} -\setfont\textit\itshape{10}{\mainmagstep} -\setfont\textsl\slshape{10}{\mainmagstep} -\setfont\textsf\sfshape{10}{\mainmagstep} -\setfont\textsc\scshape{10}{\mainmagstep} -\setfont\textttsl\ttslshape{10}{\mainmagstep} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep - -% A few fonts for @defun, etc. -\setfont\defbf\bxshape{10}{\magstep1} %was 1314 -\setfont\deftt\ttshape{10}{\magstep1} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} - -% Fonts for indices and small examples (9pt). -% We actually use the slanted font rather than the italic, -% because texinfo normally uses the slanted fonts for that. -% Do not make many font distinctions in general in the index, since they -% aren't very useful. -\setfont\ninett\ttshape{9}{1000} -\setfont\indrm\rmshape{9}{1000} -\setfont\indit\slshape{9}{1000} -\let\indsl=\indit -\let\indtt=\ninett -\let\indttsl=\ninett -\let\indsf=\indrm -\let\indbf=\indrm -\setfont\indsc\scshape{10}{900} -\font\indi=cmmi9 -\font\indsy=cmsy9 - -% Fonts for title page: -\setfont\titlerm\rmbshape{12}{\magstep3} -\setfont\titleit\itbshape{10}{\magstep4} -\setfont\titlesl\slbshape{10}{\magstep4} -\setfont\titlett\ttbshape{12}{\magstep3} -\setfont\titlettsl\ttslshape{10}{\magstep4} -\setfont\titlesf\sfbshape{17}{\magstep1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} - -% Chapter (and unnumbered) fonts (17.28pt). -\setfont\chaprm\rmbshape{12}{\magstep2} -\setfont\chapit\itbshape{10}{\magstep3} -\setfont\chapsl\slbshape{10}{\magstep3} -\setfont\chaptt\ttbshape{12}{\magstep2} -\setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{17}{1000} -\let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3} -\font\chapi=cmmi12 scaled \magstep2 -\font\chapsy=cmsy10 scaled \magstep3 - -% Section fonts (14.4pt). -\setfont\secrm\rmbshape{12}{\magstep1} -\setfont\secit\itbshape{10}{\magstep2} -\setfont\secsl\slbshape{10}{\magstep2} -\setfont\sectt\ttbshape{12}{\magstep1} -\setfont\secttsl\ttslshape{10}{\magstep2} -\setfont\secsf\sfbshape{12}{\magstep1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2} -\font\seci=cmmi12 scaled \magstep1 -\font\secsy=cmsy10 scaled \magstep2 - -% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. -% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. -% \setfont\ssecsl\slshape{10}{\magstep1} -% \setfont\ssectt\ttshape{10}{\magstep1} -% \setfont\ssecsf\sfshape{10}{\magstep1} - -%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. -%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than -%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. -%\setfont\ssectt\ttshape{10}{1315} -%\setfont\ssecsf\sfshape{10}{1315} - -%\let\ssecbf=\ssecrm - -% Subsection fonts (13.15pt). -\setfont\ssecrm\rmbshape{12}{\magstephalf} -\setfont\ssecit\itbshape{10}{1315} -\setfont\ssecsl\slbshape{10}{1315} -\setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{1315} -\setfont\ssecsf\sfbshape{12}{\magstephalf} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{\magstep1} -\font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled 1315 -% The smallcaps and symbol fonts should actually be scaled \magstep1.5, -% but that is not a standard magnification. - -% In order for the font changes to affect most math symbols and letters, -% we have to define the \textfont of the standard families. Since -% texinfo doesn't allow for producing subscripts and superscripts, we -% don't bother to reset \scriptfont and \scriptscriptfont (which would -% also require loading a lot more fonts). -% -\def\resetmathfonts{% - \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy - \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf - \textfont\ttfam = \tentt \textfont\sffam = \tensf -} - - -% The font-changing commands redefine the meanings of \tenSTYLE, instead -% of just \STYLE. We do this so that font changes will continue to work -% in math mode, where it is the current \fam that is relevant in most -% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam -% \tenbf}, for example. By redefining \tenbf, we obviate the need to -% redefine \bf itself. -\def\textfonts{% - \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl - \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl - \resetmathfonts} -\def\titlefonts{% - \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl - \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc - \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy - \let\tenttsl=\titlettsl - \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} -\def\chapfonts{% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl - \resetmathfonts \setleading{19pt}} -\def\secfonts{% - \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl - \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl - \resetmathfonts \setleading{16pt}} -\def\subsecfonts{% - \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl - \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl - \resetmathfonts \setleading{15pt}} -\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? -\def\indexfonts{% - \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl - \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc - \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl - \resetmathfonts \setleading{12pt}} - -% Set up the default fonts, so we can use them for creating boxes. -% -\textfonts - -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} - -% Count depth in font-changes, for error checks -\newcount\fontdepth \fontdepth=0 - -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000} -\setfont\shortcontbf\bxshape{12}{1000} -\setfont\shortcontsl\slshape{12}{1000} - -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic - -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx} - -\let\i=\smartitalic -\let\var=\smartitalic -\let\dfn=\smartitalic -\let\emph=\smartitalic -\let\cite=\smartitalic - -\def\b#1{{\bf #1}} -\let\strong=\b - -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } - -\def\t#1{% - {\tt \rawbackslash \frenchspacing #1}% - \null -} -\let\ttfont=\t -\def\samp#1{`\tclose{#1}'\null} -\setfont\smallrm\rmshape{8}{1000} -\font\smallsy=cmsy9 -\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - -\let\file=\samp - -% @code is a modification of @t, -% which makes spaces the same size as normal in the surrounding text. -\def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \frenchspacing - #1% - }% - \null -} - -% We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overfull hboxes -% in the Emacs manual, the Library manual, etc. - -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -% -- rms. -{ -\catcode`\-=\active -\catcode`\_=\active -\catcode`\|=\active -\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} -% The following is used by \doprintindex to insure that long function names -% wrap around. It is necessary for - and _ to be active before the index is -% read from the file, as \entry parses the arguments long before \code is -% ever called. -- mycroft -% _ is always active; and it shouldn't be \let = to an _ that is a -% subscript character anyway. Then, @cindex @samp{_} (for example) -% fails. --karl -\global\def\indexbreaks{% - \catcode`\-=\active \let-\realdash -} -} - -\def\realdash{-} -\def\codedash{-\discretionary{}{}{}} -\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} -\def\codex #1{\tclose{#1}\endgroup} - -%\let\exp=\tclose %Was temporary - -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\def\kbdinputstyle{\parsearg\kbdinputstylexxx} -\def\kbdinputstylexxx#1{% - \def\arg{#1}% - \ifx\arg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is kbdinputdistinct. (Too much of a hassle to call the macro, -% the catcodes are wrong for parsearg to work.) -\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} - -\def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} - -% @url. Quotes do not seem necessary, so use \code. -\let\url=\code - -% @uref (abbreviation for `urlref') takes an optional second argument -% specifying the text to display. First (mandatory) arg is the url. -% Perhaps eventually put in a hypertex \special here. -% -\def\uref#1{\urefxxx #1,,\finish} -\def\urefxxx#1,#2,#3\finish{% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \unhbox0\ (\code{#1})% - \else - \code{#1}% - \fi -} - -% rms does not like the angle brackets --karl, 17may97. -% So now @email is just like @uref. -%\def\email#1{\angleleft{\tt #1}\angleright} -\let\email=\uref - -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of -% @dmn{}pt. -% -\def\dmn#1{\thinspace #1} - -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - -\def\r#1{{\rm #1}} % roman font -% Use of \lowercase was suggested. -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - -% @pounds{} is a sterling sign. -\def\pounds{{\it\$}} - - -\message{page headings,} - -\newskip\titlepagetopglue \titlepagetopglue = 1.5in -\newskip\titlepagebottomglue \titlepagebottomglue = 2pc - -% First the title page. Must do @settitle before @titlepage. -\newif\ifseenauthor -\newif\iffinishedtitlepage - -\def\shorttitlepage{\parsearg\shorttitlepagezzz} -\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - -\def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm -% I deinstalled the following change because \cmr12 is undefined. -% This change was not in the ChangeLog anyway. --rms. -% \let\subtitlerm=\cmr12 - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefonts\rm ##1} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% -% \def\page{\oldpage \hbox{}} -} - -\def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - \HEADINGSon -} - -\def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} - -%%% Set up page headings and footings. - -\let\thispage=\folio - -\newtoks \evenheadline % Token sequence for heading line of even pages -\newtoks \oddheadline % Token sequence for heading line of odd pages -\newtoks \evenfootline % Token sequence for footing line of even pages -\newtoks \oddfootline % Token sequence for footing line of odd pages - -% Now make Tex use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} -\let\HEADINGShook=\relax - -% Commands to set those variables. -% For example, this is what @headings on does -% @evenheading @thistitle|@thispage|@thischapter -% @oddheading @thischapter|@thispage|@thistitle -% @evenfooting @thisfile|| -% @oddfooting ||@thisfile - -\def\evenheading{\parsearg\evenheadingxxx} -\def\oddheading{\parsearg\oddheadingxxx} -\def\everyheading{\parsearg\everyheadingxxx} - -\def\evenfooting{\parsearg\evenfootingxxx} -\def\oddfooting{\parsearg\oddfootingxxx} -\def\everyfooting{\parsearg\everyfootingxxx} - -{\catcode`\@=0 % - -\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} -\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} -\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - -\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} -\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} -\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\pageheight by -\baselineskip - \global\advance\vsize by -\baselineskip -} - -\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} -% -}% unbind the catcode of @. - -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. -% @headings singleafter turns on single-sided headings after this page. -% By default, they are off at the start of a document, -% and turned `on' after @end titlepage. - -\def\headings #1 {\csname HEADINGS#1\endcsname} - -\def\HEADINGSoff{ -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff -% When we turn headings on, set the page number to 1. -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} -\let\contentsalignmacro = \chappager - -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} -\def\HEADINGSon{\HEADINGSdouble} - -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} -\let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} - -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} - -% Subroutines used in generating headings -% Produces Day Month Year style of output. -\def\today{\number\day\space -\ifcase\month\or -January\or February\or March\or April\or May\or June\or -July\or August\or September\or October\or November\or December\fi -\space\number\year} - -% Use this if you want the Month Day, Year style of output. -%\def\today{\ifcase\month\or -%January\or February\or March\or April\or May\or June\or -%July\or August\or September\or October\or November\or December\fi -%\space\number\day, \number\year} - -% @settitle line... specifies the title of the document, for headings -% It generates no output of its own - -\def\thistitle{No Title} -\def\settitle{\parsearg\settitlezzz} -\def\settitlezzz #1{\gdef\thistitle{#1}} - - -\message{tables,} - -% @tabs -- simple alignment - -% These don't work. For one thing, \+ is defined as outer. -% So these macros cannot even be defined. - -%\def\tabs{\parsearg\tabszzz} -%\def\tabszzz #1{\settabs\+#1\cr} -%\def\tabline{\parsearg\tablinezzz} -%\def\tablinezzz #1{\+#1\cr} -%\def\&{&} - -% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). - -% default indentation of table text -\newdimen\tableindent \tableindent=.8in -% default indentation of @itemize and @enumerate text -\newdimen\itemindent \itemindent=.3in -% margin between end of table item and start of table text. -\newdimen\itemmargin \itemmargin=.1in - -% used internally for \itemindent minus \itemmargin -\newdimen\itemmax - -% Note @table, @vtable, and @vtable define @item, @itemx, etc., with -% these defs. -% They also define \itemindex -% to index the item name in whatever manner is desired (perhaps none). - -\newif\ifitemxneedsnegativevskip - -\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - -\def\internalBitem{\smallbreak \parsearg\itemzzz} -\def\internalBitemx{\itemxpar \parsearg\itemzzz} - -\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} -\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} - -\def\internalBkitem{\smallbreak \parsearg\kitemzzz} -\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} - -\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% - \itemzzz {#1}} - -\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% - \itemzzz {#1}} - -\def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemfont{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % Be sure we are not still in the middle of a paragraph. - %{\parskip = 0in - %\par - %}% - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue. - \nobreak - \endgroup - \itemxneedsnegativevskipfalse - \else - % The item text fits into the space. Start a paragraph, so that the - % following text (if any) will end up on the same line. Since that - % text will be indented by \tableindent, we make the item text be in - % a zero-width box. - \noindent - \rlap{\hskip -\tableindent\box0}\ignorespaces% - \endgroup% - \itemxneedsnegativevskiptrue% - \fi -} - -\def\item{\errmessage{@item while not in a table}} -\def\itemx{\errmessage{@itemx while not in a table}} -\def\kitem{\errmessage{@kitem while not in a table}} -\def\kitemx{\errmessage{@kitemx while not in a table}} -\def\xitem{\errmessage{@xitem while not in a table}} -\def\xitemx{\errmessage{@xitemx while not in a table}} - -%% Contains a kludge to get @end[description] to work -\def\description{\tablez{\dontindex}{1}{}{}{}{}} - -\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} -{\obeylines\obeyspaces% -\gdef\tablex #1^^M{% -\tabley\dontindex#1 \endtabley}} - -\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} -{\obeylines\obeyspaces% -\gdef\ftablex #1^^M{% -\tabley\fnitemindex#1 \endtabley -\def\Eftable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} -{\obeylines\obeyspaces% -\gdef\vtablex #1^^M{% -\tabley\vritemindex#1 \endtabley -\def\Evtable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\dontindex #1{} -\def\fnitemindex #1{\doind {fn}{\code{#1}}}% -\def\vritemindex #1{\doind {vr}{\code{#1}}}% - -{\obeyspaces % -\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% -\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} - -\def\tablez #1#2#3#4#5#6{% -\aboveenvbreak % -\begingroup % -\def\Edescription{\Etable}% Necessary kludge. -\let\itemindex=#1% -\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % -\ifnum 0#4>0 \tableindent=#4\mil \fi % -\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % -\def\itemfont{#2}% -\itemmax=\tableindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \tableindent % -\exdentamount=\tableindent -\parindent = 0pt -\parskip = \smallskipamount -\ifdim \parskip=0pt \parskip=2pt \fi% -\def\Etable{\endgraf\afterenvbreak\endgroup}% -\let\item = \internalBitem % -\let\itemx = \internalBitemx % -\let\kitem = \internalBkitem % -\let\kitemx = \internalBkitemx % -\let\xitem = \internalBxitem % -\let\xitemx = \internalBxitemx % -} - -% This is the counter used by @enumerate, which is really @itemize - -\newcount \itemno - -\def\itemize{\parsearg\itemizezzz} - -\def\itemizezzz #1{% - \begingroup % ended by the @end itemsize - \itemizey {#1}{\Eitemize} -} - -\def\itemizey #1#2{% -\aboveenvbreak % -\itemmax=\itemindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \itemindent % -\exdentamount=\itemindent -\parindent = 0pt % -\parskip = \smallskipamount % -\ifdim \parskip=0pt \parskip=2pt \fi% -\def#2{\endgraf\afterenvbreak\endgroup}% -\def\itemcontents{#1}% -\let\item=\itemizeitem} - -% Set sfcode to normal for the chars that usually have another value. -% These are `.?!:;,' -\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 - \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } - -% \splitoff TOKENS\endmark defines \first to be the first token in -% TOKENS, and \rest to be the remainder. -% -\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - -% Allow an optional argument of an uppercase letter, lowercase letter, -% or number, to specify the first label in the enumerated list. No -% argument is the same as `1'. -% -\def\enumerate{\parsearg\enumeratezzz} -\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} -\def\enumeratey #1 #2\endenumeratey{% - \begingroup % ended by the @end enumerate - % - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a . - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi -} - -% An @enumerate whose labels are integers. The starting integer is -% given in \thearg. -% -\def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% -} - -% The starting (lowercase) letter is in \thearg. -\def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% -} - -% The starting (uppercase) letter is in \thearg. -\def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% -} - -% Call itemizey, adding a period to the first argument and supplying the -% common last two arguments. Also subtract one from the initial value in -% \itemno, since @item increments \itemno. -% -\def\startenumeration#1{% - \advance\itemno by -1 - \itemizey{#1.}\Eenumerate\flushcr -} - -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - -% Definition of @item while inside @itemize. - -\def\itemizeitem{% -\advance\itemno by 1 -{\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{In hmode at itemizeitem}\fi -{\parskip=0in \hskip 0pt -\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% -\vadjust{\penalty 1200}}% -\flushcr} - -% @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. -% -% For those who want to use more than one line's worth of words in -% the preamble, break the line within one argument and it -% will parse correctly, i.e., -% -% @multitable {Column 1 template} {Column 2 template} {Column 3 -% template} -% Not: -% @multitable {Column 1 template} {Column 2 template} -% {Column 3 template} - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab, @multitable or @end multitable do not need to be on their -% own lines, but it will not hurt if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt - -% Macros used to set up halign preamble: -% -\let\endsetuptable\relax -\def\xendsetuptable{\endsetuptable} -\let\columnfractions\relax -\def\xcolumnfractions{\columnfractions} -\newif\ifsetpercent - -% 2/1/96, to allow fractions to be given with more than one digit. -\def\pickupwholefraction#1 {\global\advance\colcount by1 % -\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% -\setuptable} - -\newcount\colcount -\def\setuptable#1{\def\firstarg{#1}% -\ifx\firstarg\xendsetuptable\let\go\relax% -\else - \ifx\firstarg\xcolumnfractions\global\setpercenttrue% - \else - \ifsetpercent - \let\go\pickupwholefraction % In this case arg of setuptable - % is the decimal point before the - % number given in percent of hsize. - % We don't need this so we don't use it. - \else - \global\advance\colcount by1 - \setbox0=\hbox{#1 }% Add a normal word space as a separator; - % typically that is always in the input, anyway. - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% - \fi% - \fi% -\ifx\go\pickupwholefraction\else\let\go\setuptable\fi% -\fi\go} - -% multitable syntax -\def\tab{&\hskip1sp\relax} % 2/2/96 - % tiny skip here makes sure this column space is - % maintained, even if it is never used. - -% @multitable ... @end multitable definitions: - -\def\multitable{\parsearg\dotable} -\def\dotable#1{\bgroup - \vskip\parskip - \let\item\crcr - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% - % - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. - \everycr{\noalign{% - % - % \filbreak%% keeps underfull box messages off when table breaks over pages. - % Maybe so, but it also creates really weird page breaks when the table - % breaks over pages. Wouldn't \vfil be better? Wait until the problem - % manifests itself, so it can be fixed for real --karl. - \global\colcount=0\relax}}% - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup&\global\advance\colcount by 1\relax - \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt - \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively marking - % characters. - \noindent\ignorespaces##\unskip\multistrut}\cr -} - -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. -\ifdim\multitablelinespace=0pt -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. -\else -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi} - - -\message{indexing,} -% Index generation facilities - -% Define \newwrite to be identical to plain tex's \newwrite -% except not \outer, so it can be used within \newindex. -{\catcode`\@=11 -\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} - -% \newindex {foo} defines an index named foo. -% It automatically defines \fooindex such that -% \fooindex ...rest of line... puts an entry in the index foo. -% It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. -% The name of an index should be no more than 2 characters long -% for the sake of vms. - -\def\newindex #1{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#1}} -} - -% @defindex foo == \newindex{foo} - -\def\defindex{\parsearg\newindex} - -% Define @defcodeindex, like @defindex except put all entries in @code. - -\def\newcodeindex #1{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#1}} -} - -\def\defcodeindex{\parsearg\newcodeindex} - -% @synindex foo bar makes index foo feed into index bar. -% Do this instead of @defindex foo if you don't want it as a separate index. -\def\synindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#2}}% -} - -% @syncodeindex foo bar similar, but put all entries made for index foo -% inside @code. -\def\syncodeindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#2}}% -} - -% Define \doindex, the driver for all \fooindex macros. -% Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. - -% \doindex just uses \parsearg; it calls \doind for the actual work. -% This is because \doind is more useful to call from other macros. - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} -\def\singleindexer #1{\doind{\indexname}{#1}} - -% like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} -\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} - -\def\indexdummies{% -% Take care of the plain tex accent commands. -\def\"{\realbackslash "}% -\def\`{\realbackslash `}% -\def\'{\realbackslash '}% -\def\^{\realbackslash ^}% -\def\~{\realbackslash ~}% -\def\={\realbackslash =}% -\def\b{\realbackslash b}% -\def\c{\realbackslash c}% -\def\d{\realbackslash d}% -\def\u{\realbackslash u}% -\def\v{\realbackslash v}% -\def\H{\realbackslash H}% -% Take care of the plain tex special European modified letters. -\def\oe{\realbackslash oe}% -\def\ae{\realbackslash ae}% -\def\aa{\realbackslash aa}% -\def\OE{\realbackslash OE}% -\def\AE{\realbackslash AE}% -\def\AA{\realbackslash AA}% -\def\o{\realbackslash o}% -\def\O{\realbackslash O}% -\def\l{\realbackslash l}% -\def\L{\realbackslash L}% -\def\ss{\realbackslash ss}% -% Take care of texinfo commands likely to appear in an index entry. -% (Must be a way to avoid doing expansion at all, and thus not have to -% laboriously list every single command here.) -\def\@{@}% will be @@ when we switch to @ as escape char. -%\let\{ = \lbracecmd -%\let\} = \rbracecmd -\def\_{{\realbackslash _}}% -\def\w{\realbackslash w }% -\def\bf{\realbackslash bf }% -%\def\rm{\realbackslash rm }% -\def\sl{\realbackslash sl }% -\def\sf{\realbackslash sf}% -\def\tt{\realbackslash tt}% -\def\gtr{\realbackslash gtr}% -\def\less{\realbackslash less}% -\def\hat{\realbackslash hat}% -%\def\char{\realbackslash char}% -\def\TeX{\realbackslash TeX}% -\def\dots{\realbackslash dots }% -\def\result{\realbackslash result}% -\def\equiv{\realbackslash equiv}% -\def\expansion{\realbackslash expansion}% -\def\print{\realbackslash print}% -\def\error{\realbackslash error}% -\def\point{\realbackslash point}% -\def\copyright{\realbackslash copyright}% -\def\tclose##1{\realbackslash tclose {##1}}% -\def\code##1{\realbackslash code {##1}}% -\def\dotless##1{\realbackslash dotless {##1}}% -\def\samp##1{\realbackslash samp {##1}}% -\def\,##1{\realbackslash ,{##1}}% -\def\t##1{\realbackslash t {##1}}% -\def\r##1{\realbackslash r {##1}}% -\def\i##1{\realbackslash i {##1}}% -\def\b##1{\realbackslash b {##1}}% -\def\sc##1{\realbackslash sc {##1}}% -\def\cite##1{\realbackslash cite {##1}}% -\def\key##1{\realbackslash key {##1}}% -\def\file##1{\realbackslash file {##1}}% -\def\var##1{\realbackslash var {##1}}% -\def\kbd##1{\realbackslash kbd {##1}}% -\def\dfn##1{\realbackslash dfn {##1}}% -\def\emph##1{\realbackslash emph {##1}}% -\def\value##1{\realbackslash value {##1}}% -\unsepspaces -} - -% If an index command is used in an @example environment, any spaces -% therein should become regular spaces in the raw index file, not the -% expansion of \tie (\\leavevmode \penalty \@M \ ). -{\obeyspaces - \gdef\unsepspaces{\obeyspaces\let =\space}} - -% \indexnofonts no-ops all font-change commands. -% This is used when outputting the strings to sort the index by. -\def\indexdummyfont#1{#1} -\def\indexdummytex{TeX} -\def\indexdummydots{...} - -\def\indexnofonts{% -% Just ignore accents. -\let\,=\indexdummyfont -\let\"=\indexdummyfont -\let\`=\indexdummyfont -\let\'=\indexdummyfont -\let\^=\indexdummyfont -\let\~=\indexdummyfont -\let\==\indexdummyfont -\let\b=\indexdummyfont -\let\c=\indexdummyfont -\let\d=\indexdummyfont -\let\u=\indexdummyfont -\let\v=\indexdummyfont -\let\H=\indexdummyfont -\let\dotless=\indexdummyfont -% Take care of the plain tex special European modified letters. -\def\oe{oe}% -\def\ae{ae}% -\def\aa{aa}% -\def\OE{OE}% -\def\AE{AE}% -\def\AA{AA}% -\def\o{o}% -\def\O{O}% -\def\l{l}% -\def\L{L}% -\def\ss{ss}% -\let\w=\indexdummyfont -\let\t=\indexdummyfont -\let\r=\indexdummyfont -\let\i=\indexdummyfont -\let\b=\indexdummyfont -\let\emph=\indexdummyfont -\let\strong=\indexdummyfont -\let\cite=\indexdummyfont -\let\sc=\indexdummyfont -%Don't no-op \tt, since it isn't a user-level command -% and is used in the definitions of the active chars like <, >, |... -%\let\tt=\indexdummyfont -\let\tclose=\indexdummyfont -\let\code=\indexdummyfont -\let\file=\indexdummyfont -\let\samp=\indexdummyfont -\let\kbd=\indexdummyfont -\let\key=\indexdummyfont -\let\var=\indexdummyfont -\let\TeX=\indexdummytex -\let\dots=\indexdummydots -\def\@{@}% -} - -% To define \realbackslash, we must make \ not be an escape. -% We must first make another character (@) an escape -% so we do not become unable to do a definition. - -{\catcode`\@=0 \catcode`\\=\other -@gdef@realbackslash{\}} - -\let\indexbackslash=0 %overridden during \printindex. - -\let\SETmarginindex=\relax %initialize! -% workhorse for all \fooindexes -% #1 is name of index, #2 is stuff to put there -\def\doind #1#2{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% - \fi - {% - \count255=\lastpenalty - {% - \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ - {% - \let\folio=0% We will expand all macros now EXCEPT \folio. - \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - % First process the index-string with all font commands turned off - % to get the string to sort by. - {\indexnofonts \xdef\indexsorttmp{#2}}% - % - % Now produce the complete index entry, with both the sort key and the - % original text, including any font commands. - \toks0 = {#2}% - \edef\temp{% - \write\csname#1indfile\endcsname{% - \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% - }% - \temp - }% - }% - \penalty\count255 - }% -} - -\def\dosubind #1#2#3{% -{\count10=\lastpenalty % -{\indexdummies % Must do this here, since \bf, etc expand at this stage -\escapechar=`\\% -{\let\folio=0% -\def\rawbackslashxx{\indexbackslash}% -% -% Now process the index-string once, with all font commands turned off, -% to get the string to sort the index by. -{\indexnofonts -\xdef\temp1{#2 #3}% -}% -% Now produce the complete index entry. We process the index-string again, -% this time with font commands expanded, to get what to print in the index. -\edef\temp{% -\write \csname#1indfile\endcsname{% -\realbackslash entry {\temp1}{\folio}{#2}{#3}}}% -\temp }% -}\penalty\count10}} - -% The index entry written in the file actually looks like -% \entry {sortstring}{page}{topic} -% or -% \entry {sortstring}{page}{topic}{subtopic} -% The texindex program reads in these files and writes files -% containing these kinds of lines: -% \initial {c} -% before the first topic whose initial is c -% \entry {topic}{pagelist} -% for a topic that is used without subtopics -% \primary {topic} -% for the beginning of a topic that is used with subtopics -% \secondary {subtopic}{pagelist} -% for each subtopic. - -% Define the user-accessible indexing commands -% @findex, @vindex, @kindex, @cindex. - -\def\findex {\fnindex} -\def\kindex {\kyindex} -\def\cindex {\cpindex} -\def\vindex {\vrindex} -\def\tindex {\tpindex} -\def\pindex {\pgindex} - -\def\cindexsub {\begingroup\obeylines\cindexsub} -{\obeylines % -\gdef\cindexsub "#1" #2^^M{\endgroup % -\dosubind{cp}{#2}{#1}}} - -% Define the macros used in formatting output of the sorted index material. - -% @printindex causes a particular index (the ??s file) to get printed. -% It does not print any chapter heading (usually an @unnumbered). -% -\def\printindex{\parsearg\doprintindex} -\def\doprintindex#1{\begingroup - \dobreak \chapheadingskip{10000}% - % - \indexfonts \rm - \tolerance = 9500 - \indexbreaks - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 11 - \openin 1 \jobname.#1s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % and it loses the chapter title and the aux file entries for the - % index. The easiest way to prevent this problem is to make sure - % there is some text. - (Index is nonexistent) - \else - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \temp - \ifeof 1 - (Index is empty) - \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\rawbackslashxx}% - \catcode`\\ = 0 - \escapechar = `\\ - \begindoublecolumns - \input \jobname.#1s - \enddoublecolumns - \fi - \fi - \closein 1 -\endgroup} - -% These macros are used by the sorted index file itself. -% Change them to control the appearance of the index. - -% Same as \bigskipamount except no shrink. -% \balancecolumns gets confused if there is any shrink. -\newskip\initialskipamount \initialskipamount 12pt plus4pt - -\def\initial #1{% -{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt -\ifdim\lastskip<\initialskipamount -\removelastskip \penalty-200 \vskip \initialskipamount\fi -\line{\secbf#1\hfill}\kern 2pt\penalty10000}} - -% This typesets a paragraph consisting of #1, dot leaders, and then #2 -% flush to the right margin. It is used for index and table of contents -% entries. The paragraph is indented by \leftskip. -% -\def\entry #1#2{\begingroup - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % Do not fill out the last line with white space. - \parfillskip = 0in - % - % No extra space above this paragraph. - \parskip = 0in - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent=2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % Start a ``paragraph'' for the index entry so the line breaking - % parameters we've set above will have an effect. - \noindent - % - % Insert the text of the index entry. TeX will do line-breaking on it. - #1% - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#2}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd\ \else% - % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 - \null\nobreak\indexdotfill % Have leaders before the page number. - % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. - \ #2% The page number ends the paragraph. - \fi% - \par -\endgroup} - -% Like \dotfill except takes at least 1 em. -\def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} - -\def\primary #1{\line{#1\hfil}} - -\newskip\secondaryindent \secondaryindent=0.5cm - -\def\secondary #1#2{ -{\parfillskip=0in \parskip=0in -\hangindent =1in \hangafter=1 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par -}} - -% Define two-column mode, which we use to typeset indexes. -% Adapted from the TeXbook, page 416, which is to say, -% the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 - -\newbox\partialpage -\newdimen\doublecolumnhsize - -\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % Grab any single-column material above us. - \output = {\global\setbox\partialpage = \vbox{% - % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case, we must prevent the second \partialpage from - % simply overwriting the first, causing us to lose the page. - % This will preserve it until a real output routine can ship it - % out. Generally, \partialpage will be empty when this runs and - % this will be a no-op. - \unvbox\partialpage - % - % Unvbox the main output page. - \unvbox255 - \kern-\topskip \kern\baselineskip - }}% - \eject - % - % Use the double-column output routine for subsequent pages. - \output = {\doublecolumnout}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. (We don't need a separate register here, - % since nobody clobbers \vsize.) - \vsize = 2\vsize -} -\def\doublecolumnout{% - \splittopskip=\topskip \splitmaxdepth=\maxdepth - % Get the available space for the double columns -- the normal - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 - \penalty\outputpenalty -} -\def\pagesofar{% - % Re-output the contents of the output page -- any previous material, - % followed by the two boxes we just split. - \unvbox\partialpage - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% -} -\def\enddoublecolumns{% - \output = {\balancecolumns}\eject % split what we have - \endgroup % started in \begindoublecolumns - % - % Back to normal single-column typesetting, but take account of the - % fact that we just accumulated some stuff on the output page. - \pagegoal = \vsize -} -\def\balancecolumns{% - % Called at the end of the double column material. - \setbox0 = \vbox{\unvbox255}% - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {\vbadness=10000 \loop - \global\setbox3=\copy0 - \global\setbox1=\vsplit3 to\dimen@ - \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt - \repeat}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% - \pagesofar -} -\catcode`\@ = \other - - -\message{sectioning,} -% Define chapters, sections, etc. - -\newcount\chapno -\newcount\secno \secno=0 -\newcount\subsecno \subsecno=0 -\newcount\subsubsecno \subsubsecno=0 - -% This counter is funny since it counts through charcodes of letters A, B, ... -\newcount\appendixno \appendixno = `\@ -\def\appendixletter{\char\the\appendixno} - -\newwrite\contentsfile -% This is called from \setfilename. -\def\opencontents{\openout\contentsfile = \jobname.toc } - -% Each @chapter defines this as the name of the chapter. -% page headings and footings can use it. @section does likewise - -\def\thischapter{} \def\thissection{} -\def\seccheck#1{\ifnum \pageno<0 - \errmessage{@#1 not allowed after generating table of contents}% -\fi} - -\def\chapternofonts{% - \let\rawbackslash=\relax - \let\frenchspacing=\relax - \def\result{\realbackslash result}% - \def\equiv{\realbackslash equiv}% - \def\expansion{\realbackslash expansion}% - \def\print{\realbackslash print}% - \def\TeX{\realbackslash TeX}% - \def\dots{\realbackslash dots}% - \def\result{\realbackslash result}% - \def\equiv{\realbackslash equiv}% - \def\expansion{\realbackslash expansion}% - \def\print{\realbackslash print}% - \def\error{\realbackslash error}% - \def\point{\realbackslash point}% - \def\copyright{\realbackslash copyright}% - \def\tt{\realbackslash tt}% - \def\bf{\realbackslash bf}% - \def\w{\realbackslash w}% - \def\less{\realbackslash less}% - \def\gtr{\realbackslash gtr}% - \def\hat{\realbackslash hat}% - \def\char{\realbackslash char}% - \def\tclose##1{\realbackslash tclose{##1}}% - \def\code##1{\realbackslash code{##1}}% - \def\samp##1{\realbackslash samp{##1}}% - \def\r##1{\realbackslash r{##1}}% - \def\b##1{\realbackslash b{##1}}% - \def\key##1{\realbackslash key{##1}}% - \def\file##1{\realbackslash file{##1}}% - \def\kbd##1{\realbackslash kbd{##1}}% - % These are redefined because @smartitalic wouldn't work inside xdef. - \def\i##1{\realbackslash i{##1}}% - \def\cite##1{\realbackslash cite{##1}}% - \def\var##1{\realbackslash var{##1}}% - \def\emph##1{\realbackslash emph{##1}}% - \def\dfn##1{\realbackslash dfn{##1}}% -} - -\newcount\absseclevel % used to calculate proper heading level -\newcount\secbase\secbase=0 % @raise/lowersections modify this count - -% @raisesections: treat @section as chapter, @subsection as section, etc. -\def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name - -% @lowersections: treat @chapter as section, @section as subsection, etc. -\def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name - -% Choose a numbered-heading macro -% #1 is heading level if unmodified by @raisesections or @lowersections -% #2 is text for heading -\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \chapterzzz{#2} -\or - \seczzz{#2} -\or - \numberedsubseczzz{#2} -\or - \numberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \chapterzzz{#2} - \else - \numberedsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses appendix heading levels -\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \appendixzzz{#2} -\or - \appendixsectionzzz{#2} -\or - \appendixsubseczzz{#2} -\or - \appendixsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \appendixzzz{#2} - \else - \appendixsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses numberless heading levels -\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \unnumberedzzz{#2} -\or - \unnumberedseczzz{#2} -\or - \unnumberedsubseczzz{#2} -\or - \unnumberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \unnumberedzzz{#2} - \else - \unnumberedsubsubseczzz{#2} - \fi -\fi -} - - -\def\thischaptername{No Chapter Title} -\outer\def\chapter{\parsearg\chapteryyy} -\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{\seccheck{chapter}% -\secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}% -\chapmacro {#1}{\the\chapno}% -\gdef\thissection{#1}% -\gdef\thischaptername{#1}% -% We don't substitute the actual chapter name into \thischapter -% because we don't want its macros evaluated now. -\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec -}} - -\outer\def\appendix{\parsearg\appendixyyy} -\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{\seccheck{appendix}% -\secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \appendixno by 1 \message{Appendix \appendixletter}% -\chapmacro {#1}{\putwordAppendix{} \appendixletter}% -\gdef\thissection{#1}% -\gdef\thischaptername{#1}% -\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash chapentry{\the\toks0}% - {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\global\let\section = \appendixsec -\global\let\subsection = \appendixsubsec -\global\let\subsubsection = \appendixsubsubsec -}} - -% @centerchap is like @unnumbered, but the heading is centered. -\outer\def\centerchap{\parsearg\centerchapyyy} -\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} - -\outer\def\top{\parsearg\unnumberedyyy} -\outer\def\unnumbered{\parsearg\unnumberedyyy} -\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{\seccheck{unnumbered}% -\secno=0 \subsecno=0 \subsubsecno=0 -% -% This used to be simply \message{#1}, but TeX fully expands the -% argument to \message. Therefore, if #1 contained @-commands, TeX -% expanded them. For example, in `@unnumbered The @cite{Book}', TeX -% expanded @cite (which turns out to cause errors because \cite is meant -% to be executed, not expanded). -% -% Anyway, we don't want the fully-expanded definition of @cite to appear -% as a result of the \message, we just want `@cite' itself. We use -% \the to achieve this: TeX expands \the only once, -% simply yielding the contents of the . -\toks0 = {#1}\message{(\the\toks0)}% -% -\unnumbchapmacro {#1}% -\gdef\thischapter{#1}\gdef\thissection{#1}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\global\let\section = \unnumberedsec -\global\let\subsection = \unnumberedsubsec -\global\let\subsubsection = \unnumberedsubsubsec -}} - -\outer\def\numberedsec{\parsearg\secyyy} -\def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{\seccheck{section}% -\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % -\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash secentry % -{\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} - -\outer\def\appendixsection{\parsearg\appendixsecyyy} -\outer\def\appendixsec{\parsearg\appendixsecyyy} -\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{\seccheck{appendixsection}% -\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % -\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash secentry % -{\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} - -\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} -\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{\seccheck{unnumberedsec}% -\plainsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} - -\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} -\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{\seccheck{subsection}% -\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % -\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash subsecentry % -{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} - -\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} -\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{\seccheck{appendixsubsec}% -\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % -\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash subsecentry % -{\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} - -\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} -\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% -\plainsubsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} - -\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} -\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{\seccheck{subsubsection}% -\gdef\thissection{#1}\global\advance \subsubsecno by 1 % -\subsubsecheading {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash subsubsecentry{\the\toks0} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} - {\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} - -\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} -\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}% -\gdef\thissection{#1}\global\advance \subsubsecno by 1 % -\subsubsecheading {#1} - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash subsubsecentry{\the\toks0}% - {\appendixletter} - {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} - -\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} -\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% -\plainsubsubsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} - -% These are variants which are not "outer", so they can appear in @ifinfo. -% Actually, they should now be obsolete; ordinary section commands should work. -\def\infotop{\parsearg\unnumberedzzz} -\def\infounnumbered{\parsearg\unnumberedzzz} -\def\infounnumberedsec{\parsearg\unnumberedseczzz} -\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} -\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} - -\def\infoappendix{\parsearg\appendixzzz} -\def\infoappendixsec{\parsearg\appendixseczzz} -\def\infoappendixsubsec{\parsearg\appendixsubseczzz} -\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} - -\def\infochapter{\parsearg\chapterzzz} -\def\infosection{\parsearg\sectionzzz} -\def\infosubsection{\parsearg\subsectionzzz} -\def\infosubsubsection{\parsearg\subsubsectionzzz} - -% These macros control what the section commands do, according -% to what kind of chapter we are in (ordinary, appendix, or unnumbered). -% Define them by default for a numbered chapter. -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec - -% Define @majorheading, @heading and @subheading - -% NOTE on use of \vbox for chapter headings, section headings, and -% such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. -% 3) Likewise, headings look best if no \parindent is used, and -% if justification is not attempted. Hence \raggedright. - - -\def\majorheading{\parsearg\majorheadingzzz} -\def\majorheadingzzz #1{% -{\advance\chapheadingskip by 10pt \chapbreak }% -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -\def\chapheading{\parsearg\chapheadingzzz} -\def\chapheadingzzz #1{\chapbreak % -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -% @heading, @subheading, @subsubheading. -\def\heading{\parsearg\plainsecheading} -\def\subheading{\parsearg\plainsubsecheading} -\def\subsubheading{\parsearg\plainsubsubsecheading} - -% These macros generate a chapter, section, etc. heading only -% (including whitespace, linebreaking, etc. around it), -% given all the information in convenient, parsed form. - -%%% Args are the skip and penalty (usually negative) -\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - -\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} - -%%% Define plain chapter starts, and page on/off switching for it -% Parameter controlling skip before chapter headings (if needed) - -\newskip\chapheadingskip - -\def\chapbreak{\dobreak \chapheadingskip {-4000}} -\def\chappager{\par\vfill\supereject} -\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} - -\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} - -\def\CHAPPAGoff{ -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} - -\def\CHAPPAGon{ -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager -\global\def\HEADINGSon{\HEADINGSsingle}} - -\def\CHAPPAGodd{ -\global\let\contentsalignmacro = \chapoddpage -\global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage -\global\def\HEADINGSon{\HEADINGSdouble}} - -\CHAPPAGon - -\def\CHAPFplain{ -\global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain -\global\let\centerchapmacro=\centerchfplain} - -% Plain chapter opening. -% #1 is the text, #2 the chapter number or empty if unnumbered. -\def\chfplain#1#2{% - \pchapsepmacro - {% - \chapfonts \rm - \def\chapnum{#2}% - \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak -} - -% Plain opening for unnumbered. -\def\unnchfplain#1{\chfplain{#1}{}} - -% @centerchap -- centered and unnumbered. -\let\centerparametersmaybe = \relax -\def\centerchfplain#1{{% - \def\centerparametersmaybe{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt - }% - \chfplain{#1}{}% -}} - -\CHAPFplain % The default - -\def\unnchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 10000 % -} - -\def\chfopen #1#2{\chapoddpage {\chapfonts -\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% -\par\penalty 5000 % -} - -\def\centerchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 % -} - -\def\CHAPFopen{ -\global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen -\global\let\centerchapmacro=\centerchfopen} - - -% Section titles. -\newskip\secheadingskip -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} -\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} -\def\plainsecheading#1{\sectionheading{sec}{}{#1}} - -% Subsection titles. -\newskip \subsecheadingskip -\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} -\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} -\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} - -% Subsubsection titles. -\let\subsubsecheadingskip = \subsecheadingskip -\let\subsubsecheadingbreak = \subsecheadingbreak -\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} -\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} - - -% Print any size section title. -% -% #1 is the section type (sec/subsec/subsubsec), #2 is the section -% number (maybe empty), #3 the text. -\def\sectionheading#1#2#3{% - {% - \expandafter\advance\csname #1headingskip\endcsname by \parskip - \csname #1headingbreak\endcsname - }% - {% - % Switch to the right set of fonts. - \csname #1fonts\endcsname \rm - % - % Only insert the separating space if we have a section number. - \def\secnum{#2}% - \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% - % - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 % zero if no section number - \unhbox0 #3}% - }% - \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak -} - - -\message{toc printing,} -% Finish up the main text and prepare to read what we've written -% to \contentsfile. - -\newskip\contentsrightmargin \contentsrightmargin=1in -\def\startcontents#1{% - % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund - \contentsalignmacro - \immediate\closeout \contentsfile - \ifnum \pageno>0 - \pageno = -1 % Request roman numbered pages. - \fi - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \unnumbchapmacro{#1}\def\thischapter{}% - \begingroup % Set up to handle contents files properly. - \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - % We can't do this, because then an actual ^ in a section - % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. - %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi - \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. -} - - -% Normal (long) toc. -\outer\def\contents{% - \startcontents{\putwordTableofContents}% - \input \jobname.toc - \endgroup - \vfill \eject -} - -% And just the chapters. -\outer\def\summarycontents{% - \startcontents{\putwordShortContents}% - % - \let\chapentry = \shortchapentry - \let\unnumbchapentry = \shortunnumberedentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\secentry ##1##2##3##4{} - \def\unnumbsecentry ##1##2{} - \def\subsecentry ##1##2##3##4##5{} - \def\unnumbsubsecentry ##1##2{} - \def\subsubsecentry ##1##2##3##4##5##6{} - \def\unnumbsubsubsecentry ##1##2{} - \input \jobname.toc - \endgroup - \vfill \eject -} -\let\shortcontents = \summarycontents - -% These macros generate individual entries in the table of contents. -% The first argument is the chapter or section name. -% The last argument is the page number. -% The arguments in between are the chapter number, section number, ... - -% Chapter-level things, for both the long and short contents. -\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} - -% See comments in \dochapentry re vbox and related settings -\def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}% -} - -% Typeset the label for a chapter or appendix for the short contents. -% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. -% We could simplify the code here by writing out an \appendixentry -% command in the toc file for appendices, instead of using \chapentry -% for both, but it doesn't seem worth it. -\setbox0 = \hbox{\shortcontrm \putwordAppendix } -\newdimen\shortappendixwidth \shortappendixwidth = \wd0 - -\def\shortchaplabel#1{% - % We typeset #1 in a box of constant width, regardless of the text of - % #1, so the chapter titles will come out aligned. - \setbox0 = \hbox{#1}% - \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi - % - % This space should be plenty, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - \advance\dimen0 by 1.1em - \hbox to \dimen0{#1\hfil}% -} - -\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} -\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}} - -% Sections. -\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} -\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} - -% Subsections. -\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} -\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} - -% And subsubsections. -\def\subsubsecentry#1#2#3#4#5#6{% - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} -\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} - -% This parameter controls the indentation of the various levels. -\newdimen\tocindent \tocindent = 3pc - -% Now for the actual typesetting. In all these, #1 is the text and #2 is the -% page number. -% -% If the toc has to be broken over pages, we want it to be at chapters -% if at all possible; hence the \penalty. -\def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - \chapentryfonts - \tocentry{#1}{\dopageno{#2}}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip -} - -\def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno{#2}}% -\endgroup} - -\def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno{#2}}% -\endgroup} - -\def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno{#2}}% -\endgroup} - -% Final typesetting of a toc entry; we use the same \entry macro as for -% the index entries, but we want to suppress hyphenation here. (We -% can't do that in the \entry macro, since index entries might consist -% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -\def\tocentry#1#2{\begingroup - \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - % Do not use \turnoffactive in these arguments. Since the toc is - % typeset in cmr, so characters such as _ would come out wrong; we - % have to do the usual translation tricks. - \entry{#1}{#2}% -\endgroup} - -% Space between chapter (or whatever) number and the title. -\def\labelspace{\hskip1em \relax} - -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - -\def\chapentryfonts{\secfonts \rm} -\def\secentryfonts{\textfonts} -\let\subsecentryfonts = \textfonts -\let\subsubsecentryfonts = \textfonts - - -\message{environments,} - -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% Furthermore, these definitions must come after we define our fonts. -\newbox\dblarrowbox \newbox\longdblarrowbox -\newbox\pushcharbox \newbox\bullbox -\newbox\equivbox \newbox\errorbox - -%{\tentt -%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} -%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} -%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} -%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} -% Adapted from the manmac format (p.420 of TeXbook) -%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex -% depth .1ex\hfil} -%} - -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% Adapted from the TeXbook's \boxit. -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} - -\global\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{ - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} - -% The @error{} command. -\def\error{\leavevmode\lower.7ex\copy\errorbox} - -% @tex ... @end tex escapes into raw Tex temporarily. -% One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. - -\def\tex{\begingroup - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie - \catcode `\%=14 - \catcode 43=12 % plus - \catcode`\"=12 - \catcode`\==12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \escapechar=`\\ - % - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\{=\ptexlbrace - \let\}=\ptexrbrace - \let\*=\ptexstar - \let\t=\ptext - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% -\let\Etex=\endgroup} - -% Define @lisp ... @endlisp. -% @lisp does a \begingroup so it can rebind things, -% including the definition of @endlisp (which normally is erroneous). - -% Amount to narrow the margins by for @lisp. -\newskip\lispnarrowing \lispnarrowing=0.4in - -% This is the definition that ^^M gets inside @lisp, @example, and other -% such environments. \null is better than a space, since it doesn't -% have any width. -\def\lisppar{\null\endgraf} - -% Make each space character in the input produce a normal interword -% space in the output. Don't allow a line break at this space, as this -% is used only in environments like @example, where each line of input -% should produce a line of output anyway. -% -{\obeyspaces % -\gdef\sepspaces{\obeyspaces\let =\tie}} - -% Define \obeyedspace to be our active space, whatever it is. This is -% for use in \parsearg. -{\sepspaces% -\global\let\obeyedspace= } - -% This space is always present above and below environments. -\newskip\envskipamount \envskipamount = 0pt - -% Make spacing and below environment symmetrical. We use \parskip here -% to help in doing that, since in @example-like environments \parskip -% is reset to zero; thus the \afterenvbreak inserts no space -- but the -% start of the next paragraph will insert \parskip -% -\def\aboveenvbreak{{\advance\envskipamount by \parskip -\endgraf \ifdim\lastskip<\envskipamount -\removelastskip \penalty-50 \vskip\envskipamount \fi}} - -\let\afterenvbreak = \aboveenvbreak - -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. -\let\nonarrowing=\relax - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \cartouche: draw rectangle w/rounded corners around argument -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle -% -\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth -\def\ctr{{\hskip 6pt\circle\char'010}} -\def\cbl{{\circle\char'012\hskip -6pt}} -\def\cbr{{\hskip 6pt\circle\char'011}} -\def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} -\def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} -% -\newskip\lskip\newskip\rskip - -\long\def\cartouche{% -\begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip -\def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup -\endgroup -}} - - -% This macro is called at the beginning of all the @example variants, -% inside a group. -\def\nonfillstart{% - \aboveenvbreak - \inENV % This group ends at the end of the body - \hfuzz = 12pt % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \singlespace - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - \parindent = 0pt - \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \let\exdent=\nofillexdent - \let\nonarrowing=\relax - \fi -} - -% To ending an @example-like environment, we first end the paragraph -% (via \afterenvbreak's vertical glue), and then the group. That way we -% keep the zero \parskip that the environments set -- \parskip glue -% will be inserted at the beginning of the next paragraph in the -% document, after the environment. -% -\def\nonfillfinish{\afterenvbreak\endgroup}% - -\def\lisp{\begingroup - \nonfillstart - \let\Elisp = \nonfillfinish - \tt - % Make @kbd do something special, if requested. - \let\kbdfont\kbdexamplefont - \rawbackslash % have \ input char produce \ char from current font - \gobble -} - -% Define the \E... control sequence only if we are inside the -% environment, so the error checking in \end will work. -% -% We must call \lisp last in the definition, since it reads the -% return following the @example (or whatever) command. -% -\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} -\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp} -\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp} - -% @smallexample and @smalllisp. This is not used unless the @smallbook -% command is given. Originally contributed by Pavel@xerox. -% -\def\smalllispx{\begingroup - \nonfillstart - \let\Esmalllisp = \nonfillfinish - \let\Esmallexample = \nonfillfinish - % - % Smaller fonts for small examples. - \indexfonts \tt - \rawbackslash % make \ output the \ character from the current font (tt) - \gobble -} - -% This is @display; same as @lisp except use roman font. -% -\def\display{\begingroup - \nonfillstart - \let\Edisplay = \nonfillfinish - \gobble -} - -% This is @format; same as @display except don't narrow margins. -% -\def\format{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eformat = \nonfillfinish - \gobble -} - -% @flushleft (same as @format) and @flushright. -% -\def\flushleft{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushleft = \nonfillfinish - \gobble -} -\def\flushright{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushright = \nonfillfinish - \advance\leftskip by 0pt plus 1fill - \gobble} - -% @quotation does normal linebreaking (hence we can't use \nonfillstart) -% and narrows the margins. -% -\def\quotation{% - \begingroup\inENV %This group ends at the end of the @quotation body - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \singlespace - \parindent=0pt - % We have retained a nonzero parskip for the environment, since we're - % doing normal filling. So to avoid extra space below the environment... - \def\Equotation{\parskip = 0pt \nonfillfinish}% - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \let\nonarrowing = \relax - \fi -} - -\message{defuns,} -% Define formatter for defuns -% First, allow user to change definition object font (\df) internally -\def\setdeffont #1 {\csname DEF#1\endcsname} - -\newskip\defbodyindent \defbodyindent=.4in -\newskip\defargsindent \defargsindent=50pt -\newskip\deftypemargin \deftypemargin=12pt -\newskip\deflastargmargin \deflastargmargin=18pt - -\newcount\parencount -% define \functionparens, which makes ( and ) and & do special things. -% \functionparens affects the group it is contained in. -\def\activeparens{% -\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active -\catcode`\[=\active \catcode`\]=\active} - -% Make control sequences which act like normal parenthesis chars. -\let\lparen = ( \let\rparen = ) - -{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) - -% Be sure that we always have a definition for `(', etc. For example, -% if the fn name has parens in it, \boldbrax will not be in effect yet, -% so TeX would otherwise complain about undefined control sequence. -\global\let(=\lparen \global\let)=\rparen -\global\let[=\lbrack \global\let]=\rbrack - -\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } -\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} -% This is used to turn on special parens -% but make & act ordinary (given that it's active). -\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} - -% Definitions of (, ) and & used in args for functions. -% This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested - \global\advance\parencount by 1 -} -% -% This is the definition of ( when already inside a level of parens. -\gdef\opnested{\char`\(\global\advance\parencount by 1 } -% -\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. - % also in that case restore the outer-level definition of (. - \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi - \global\advance \parencount by -1 } -% If we encounter &foo, then turn on ()-hacking afterwards -\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } -% -\gdef\normalparens{\boldbrax\let&=\ampnr} -} % End of definition inside \activeparens -%% These parens (in \boldbrax) actually are a little bolder than the -%% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } -\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } -\def\ampnr{\&} -\def\lbrb{{\bf\char`\[}} -\def\rbrb{{\bf\char`\]}} - -% First, defname, which formats the header line itself. -% #1 should be the function name. -% #2 should be the type of definition, such as "Function". - -\def\defname #1#2{% -% Get the values of \leftskip and \rightskip as they were -% outside the @def... -\dimen2=\leftskip -\advance\dimen2 by -\defbodyindent -\dimen3=\rightskip -\advance\dimen3 by -\defbodyindent -\noindent % -\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% -\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations -\parshape 2 0in \dimen0 \defargsindent \dimen1 % -% Now output arg 2 ("Function" or some such) -% ending at \deftypemargin from the right margin, -% but stuck inside a box of width 0 so it does not interfere with linebreaking -{% Adjust \hsize to exclude the ambient margins, -% so that \rightline will obey them. -\advance \hsize by -\dimen2 \advance \hsize by -\dimen3 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}% -% Make all lines underfull and no complaints: -\tolerance=10000 \hbadness=10000 -\advance\leftskip by -\defbodyindent -\exdentamount=\defbodyindent -{\df #1}\enskip % Generate function name -} - -% Actually process the body of a definition -% #1 should be the terminating control sequence, such as \Edefun. -% #2 should be the "another name" control sequence, such as \defunx. -% #3 should be the control sequence that actually processes the header, -% such as \defunheader. - -\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2{\begingroup\obeylines\activeparens\spacesplit#3}% -\parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup % -\catcode 61=\active % 61 is `=' -\obeylines\activeparens\spacesplit#3} - -\def\defmethparsebody #1#2#3#4 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% -\parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\activeparens\spacesplit{#3{#4}}} - -\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 ##2 {\def#4{##1}% -\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% -\parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\activeparens\spacesplit{#3{#5}}} - -% These parsing functions are similar to the preceding ones -% except that they do not make parens into active characters. -% These are used for "variables" since they have no arguments. - -\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2{\begingroup\obeylines\spacesplit#3}% -\parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup % -\catcode 61=\active % -\obeylines\spacesplit#3} - -% This is used for \def{tp,vr}parsebody. It could probably be used for -% some of the others, too, with some judicious conditionals. -% -\def\parsebodycommon#1#2#3{% - \begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% - \parindent=0in - \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines -} - -\def\defvrparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{#3{#4}}% -} - -% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the -% type is just `struct', because we lose the braces in `{struct -% termios}' when \spacesplit reads its undelimited argument. Sigh. -% \let\deftpparsebody=\defvrparsebody -% -% So, to get around this, we put \empty in with the type name. That -% way, TeX won't find exactly `{...}' as an undelimited argument, and -% won't strip off the braces. -% -\def\deftpparsebody #1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{\parsetpheaderline{#3{#4}}}\empty -} - -% Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does. -% -\def\removeemptybraces\empty#1\relax{#1} - -% After \spacesplit has done its work, this is called -- #1 is the final -% thing to call, #2 the type name (which starts with \empty), and #3 -% (which might be empty) the arguments. -% -\def\parsetpheaderline#1#2#3{% - #1{\removeemptybraces#2\relax}{#3}% -}% - -\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % -\medbreak % -% Define the end token that this defining construct specifies -% so that it will exit this group. -\def#1{\endgraf\endgroup\medbreak}% -\def#2##1 ##2 {\def#4{##1}% -\begingroup\obeylines\spacesplit{#3{##2}}}% -\parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent -\exdentamount=\defbodyindent -\begingroup\obeylines\spacesplit{#3{#5}}} - -% Split up #2 at the first space token. -% call #1 with two arguments: -% the first is all of #2 before the space token, -% the second is all of #2 after that space token. -% If #2 contains no space token, all of it is passed as the first arg -% and the second is passed as empty. - -{\obeylines -\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% -\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% -\ifx\relax #3% -#1{#2}{}\else #1{#2}{#3#4}\fi}} - -% So much for the things common to all kinds of definitions. - -% Define @defun. - -% First, define the processing that is wanted for arguments of \defun -% Use this to expand the args and terminate the paragraph they make up - -\def\defunargs #1{\functionparens \sl -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -\hyphenchar\tensl=0 -#1% -\hyphenchar\tensl=45 -\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% -\interlinepenalty=10000 -\advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% -} - -\def\deftypefunargs #1{% -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Use \boldbraxnoamp, not \functionparens, so that & is not special. -\boldbraxnoamp -\tclose{#1}% avoid \code because of side effects on active chars -\interlinepenalty=10000 -\advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% -} - -% Do complete processing of one @defun or @defunx line already parsed. - -% @deffn Command forward-char nchars - -\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} - -\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% -\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defun == @deffn Function - -\def\defun{\defparsebody\Edefun\defunx\defunheader} - -\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Function}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @deftypefun int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} - -% #1 is the data type. #2 is the name and args. -\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} -% #1 is the data type, #2 the name, #3 the args. -\def\deftypefunheaderx #1#2 #3\relax{% -\doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}% -\deftypefunargs {#3}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} - -% \defheaderxcond#1\relax$$$ -% puts #1 in @code, followed by a space, but does nothing if #1 is null. -\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} - -% #1 is the classification. #2 is the data type. #3 is the name and args. -\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} -% #1 is the classification, #2 the data type, #3 the name, #4 the args. -\def\deftypefnheaderx #1#2#3 #4\relax{% -\doind {fn}{\code{#3}}% Make entry in function index -\begingroup -\normalparens % notably, turn off `&' magic, which prevents -% at least some C++ text from working -\defname {\defheaderxcond#2\relax$$$#3}{#1}% -\deftypefunargs {#4}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defmac == @deffn Macro - -\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} - -\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Macro}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% @defspec == @deffn Special Form - -\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} - -\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Special Form}% -\defunargs {#2}\endgroup % -\catcode 61=\other % Turn off change made in \defparsebody -} - -% This definition is run if you use @defunx -% anywhere other than immediately after a @defun or @defunx. - -\def\deffnx #1 {\errmessage{@deffnx in invalid context}} -\def\defunx #1 {\errmessage{@defunx in invalid context}} -\def\defmacx #1 {\errmessage{@defmacx in invalid context}} -\def\defspecx #1 {\errmessage{@defspecx in invalid context}} -\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}} -\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} - -% @defmethod, and so on - -% @defop {Funny Method} foo-class frobnicate argument - -\def\defop #1 {\def\defoptype{#1}% -\defopparsebody\Edefop\defopx\defopheader\defoptype} - -\def\defopheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index -\begingroup\defname {#2}{\defoptype{} on #1}% -\defunargs {#3}\endgroup % -} - -% @deftypemethod foo-class return-type foo-method args -% -\def\deftypemethod{% - \defmethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} -% -% #1 is the class name, #2 the data type, #3 the method name, #4 the args. -\def\deftypemethodheader#1#2#3#4{% - \deftypefnheaderx{Method on #1}{#2}#3 #4\relax -} - -% @defmethod == @defop Method - -\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} - -\def\defmethodheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% entry in function index -\begingroup\defname {#2}{Method on #1}% -\defunargs {#3}\endgroup % -} - -% @defcv {Class Option} foo-class foo-flag - -\def\defcv #1 {\def\defcvtype{#1}% -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} - -\def\defcvarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{\defcvtype{} of #1}% -\defvarargs {#3}\endgroup % -} - -% @defivar == @defcv {Instance Variable} - -\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} - -\def\defivarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{Instance Variable of #1}% -\defvarargs {#3}\endgroup % -} - -% These definitions are run if you use @defmethodx, etc., -% anywhere other than immediately after a @defmethod, etc. - -\def\defopx #1 {\errmessage{@defopx in invalid context}} -\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}} -\def\defcvx #1 {\errmessage{@defcvx in invalid context}} -\def\defivarx #1 {\errmessage{@defivarx in invalid context}} - -% Now @defvar - -% First, define the processing that is wanted for arguments of @defvar. -% This is actually simple: just print them in roman. -% This must expand the args and terminate the paragraph they make up -\def\defvarargs #1{\normalparens #1% -\interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000} - -% @defvr Counter foo-count - -\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} - -\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% -\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} - -% @defvar == @defvr Variable - -\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} - -\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{Variable}% -\defvarargs {#2}\endgroup % -} - -% @defopt == @defvr {User Option} - -\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} - -\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{User Option}% -\defvarargs {#2}\endgroup % -} - -% @deftypevar int foobar - -\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} - -% #1 is the data type. #2 is the name, perhaps followed by text that -% is actually part of the data type, which should not be put into the index. -\def\deftypevarheader #1#2{% -\dovarind#2 \relax% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% -\interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 -\endgroup} -\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} - -% @deftypevr {Global Flag} int enable - -\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} - -\def\deftypevrheader #1#2#3{\dovarind#3 \relax% -\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} -\interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 -\endgroup} - -% This definition is run if you use @defvarx -% anywhere other than immediately after a @defvar or @defvarx. - -\def\defvrx #1 {\errmessage{@defvrx in invalid context}} -\def\defvarx #1 {\errmessage{@defvarx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}} - -% Now define @deftp -% Args are printed in bold, a slight difference from @defvar. - -\def\deftpargs #1{\bf \defvarargs{#1}} - -% @deftp Class window height width ... - -\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} - -\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% -\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} - -% This definition is run if you use @deftpx, etc -% anywhere other than immediately after a @deftp, etc. - -\def\deftpx #1 {\errmessage{@deftpx in invalid context}} - - -\message{cross reference,} -% Define cross-reference macros -\newwrite \auxfile - -\newif\ifhavexrefs % True if xref values are known. -\newif\ifwarnedxrefs % True if we warned once that they aren't known. - -% @inforef is simple. -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - -% \setref{foo} defines a cross-reference point named foo. - -\def\setref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ysectionnumberandtype}} - -\def\unnumbsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ynothing}} - -\def\appendixsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Yappendixletterandtype}} - -% \xref, \pxref, and \ref generate cross-references to specified points. -% For \xrefX, #1 is the node name, #2 the name of the Info -% cross-reference, #3 the printed node name, #4 the name of the Info -% file, #5 the name of the printed manual. All but the node name can be -% omitted. -% -\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} -\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} -\def\ref#1{\xrefX[#1,,,,,,,]} -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \def\printedmanual{\ignorespaces #5}% - \def\printednodename{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual}% - \setbox0=\hbox{\printednodename}% - \ifdim \wd0 = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% - \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1>0pt% - % It is in another manual, so we don't have it. - \def\printednodename{\ignorespaces #1}% - \else - \ifhavexrefs - % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printednodename{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' in \cite{\printedmanual}% - \else - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\turnoffactive \refx{#1-snt}{}}% - \space [\printednodename],\space - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - \fi -\endgroup} - -% \dosetq is the interface for calls from other macros - -% Use \turnoffactive so that punctuation chars such as underscore -% work in node names. -\def\dosetq #1#2{{\let\folio=0 \turnoffactive -\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% -\next}} - -% \internalsetq {foo}{page} expands into -% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} -% When the aux file is read, ' is the escape character - -\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} - -% Things to be expanded by \internalsetq - -\def\Ypagenumber{\folio} - -\def\Ytitle{\thissection} - -\def\Ynothing{} - -\def\Ysectionnumberandtype{% -\ifnum\secno=0 \putwordChapter\xreftie\the\chapno % -\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % -\else \ifnum \subsubsecno=0 % -\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % -\else % -\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % -\fi \fi \fi } - -\def\Yappendixletterandtype{% -\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% -\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % -\else \ifnum \subsubsecno=0 % -\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % -\else % -\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % -\fi \fi \fi } - -\gdef\xreftie{'tie} - -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Non-3.0. -\else - \def\linenumber{\the\inputlineno:\space} -\fi - -% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. -% If its value is nonempty, SUFFIX is output afterward. - -\def\refx#1#2{% - \expandafter\ifx\csname X#1\endcsname\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \else - % It's defined, so just use it. - \csname X#1\endcsname - \fi - #2% Output the suffix in any case. -} - -% This is the macro invoked by entries in the aux file. -% -\def\xrdef#1{\begingroup - % Reenable \ as an escape while reading the second argument. - \catcode`\\ = 0 - \afterassignment\endgroup - \expandafter\gdef\csname X#1\endcsname -} - -% Read the last existing aux file, if any. No error if none exists. -\def\readauxfile{\begingroup - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - \catcode`\@=\other - \catcode`\^=\other - % It was suggested to define this as 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - % `\+ does not work, so use 43. - \catcode43=\other - % Make the characters 128-255 be printing characters - {% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi - }% - }% - % The aux file uses ' as the escape (for now). - % Turn off \ as an escape so we do not lose on - % entries which were dumped with control sequences in their names. - % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ - % Reference to such entries still does not work the way one would wish, - % but at least they do not bomb out when the aux file is read in. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\%=\other - \catcode`\'=0 - \catcode`\\=\other - % - \openin 1 \jobname.aux - \ifeof 1 \else - \closein 1 - \input \jobname.aux - \global\havexrefstrue - \global\warnedobstrue - \fi - % Open the new aux file. TeX will close it automatically at exit. - \openout\auxfile=\jobname.aux -\endgroup} - - -% Footnotes. - -\newcount \footnoteno - -% The trailing space in the following definition for supereject is -% vital for proper filling; pages come out unaligned when you do a -% pagealignmacro call if that space before the closing brace is -% removed. (Generally, numeric constants should always be followed by a -% space to prevent strange expansion errors.) -\def\supereject{\par\penalty -20000\footnoteno =0 } - -% @footnotestyle is meaningful for info output only. -\let\footnotestyle=\comment - -\let\ptexfootnote=\footnote - -{\catcode `\@=11 -% -% Auto-number footnotes. Otherwise like plain. -\gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \footnotezzz -}% - -% Don't bother with the trickery in plain.tex to not require the -% footnote text as a parameter. Our footnotes don't need to be so general. -% -% Oh yes, they do; otherwise, @ifset and anything else that uses -% \parseargline fail inside footnotes because the tokens are fixed when -% the footnote is read. --karl, 16nov96. -% -\long\gdef\footnotezzz{\insert\footins\bgroup - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - % Hang the footnote text off the number. - \hang - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - \futurelet\next\fo@t -} -\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else\let\next\f@t\fi \next} -\def\f@@t{\bgroup\aftergroup\@foot\let\next} -\def\f@t#1{#1\@foot} -\def\@foot{\strut\egroup} - -}%end \catcode `\@=11 - -% Set the baselineskip to #1, and the lineskip and strut size -% correspondingly. There is no deep meaning behind these magic numbers -% used as factors; they just match (closely enough) what Knuth defined. -% -\def\lineskipfactor{.08333} -\def\strutheightpercent{.70833} -\def\strutdepthpercent {.29167} -% -\def\setleading#1{% - \normalbaselineskip = #1\relax - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% -} - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt} - -% @image. We use the macros from epsf.tex to support this. -% If epsf.tex is not installed and @image is used, we complain. -% -% Check for and read epsf.tex up front. If we read it only at @image -% time, we might be inside a group, and then its definitions would get -% undone and the next image would fail. -\openin 1 = epsf.tex -\ifeof 1 \else - \closein 1 - \def\epsfannounce{\toks0 = }% do not bother showing banner - \input epsf.tex -\fi -% -\newif\ifwarnednoepsf -\newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from ftp://ftp.tug.org/tex/epsf.tex.} -% -% Only complain once about lack of epsf.tex. -\def\image#1{% - \ifx\epsfbox\undefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,\finish - \fi -} -% -% Arguments to @image: -% #1 is (mandatory) image filename; we tack on .eps extension. -% #2 is (optional) width, #3 is (optional) height. -% #4 is just the usual extra ignored arg for parsing this stuff. -\def\imagexxx#1,#2,#3,#4\finish{% - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% -} - -% End of control word definitions. - - -\message{and turning on texinfo input format.} - -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} - -% Set some numeric style parameters, for 8.5 x 11 format. - -\hsize = 6in -\hoffset = .25in -\newdimen\defaultparindent \defaultparindent = 15pt -\parindent = \defaultparindent -\parskip 3pt plus 2pt minus 1pt -\setleading{13.2pt} -\advance\topskip by 1.2cm - -\chapheadingskip = 15pt plus 4pt minus 2pt -\secheadingskip = 12pt plus 3pt minus 2pt -\subsecheadingskip = 9pt plus 2pt minus 2pt - -% Prevent underfull vbox error messages. -\vbadness=10000 - -% Following George Bush, just get rid of widows and orphans. -\widowpenalty=10000 -\clubpenalty=10000 - -% Use TeX 3.0's \emergencystretch to help line breaking, but if we're -% using an old version of TeX, don't do anything. We want the amount of -% stretch added to depend on the line length, hence the dependence on -% \hsize. This makes it come to about 9pt for the 8.5x11 format. -% -\ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% -\else - \emergencystretch = \hsize - \divide\emergencystretch by 45 -\fi - -% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) -\def\smallbook{ - \global\chapheadingskip = 15pt plus 4pt minus 2pt - \global\secheadingskip = 12pt plus 3pt minus 2pt - \global\subsecheadingskip = 9pt plus 2pt minus 2pt - % - \global\lispnarrowing = 0.3in - \setleading{12pt} - \advance\topskip by -1cm - \global\parskip 2pt plus 1pt - \global\hsize = 5in - \global\vsize=7.5in - \global\tolerance=700 - \global\hfuzz=1pt - \global\contentsrightmargin=0pt - \global\deftypemargin=0pt - \global\defbodyindent=.5cm - % - \global\pagewidth=\hsize - \global\pageheight=\vsize - % - \global\let\smalllisp=\smalllispx - \global\let\smallexample=\smalllispx - \global\def\Esmallexample{\Esmalllisp} -} - -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{ -\global\tolerance=700 -\global\hfuzz=1pt -\setleading{12pt} -\global\parskip 15pt plus 1pt - -\global\vsize= 53\baselineskip -\advance\vsize by \topskip -%\global\hsize= 5.85in % A4 wide 10pt -\global\hsize= 6.5in -\global\outerhsize=\hsize -\global\advance\outerhsize by 0.5in -\global\outervsize=\vsize -\global\advance\outervsize by 0.6in - -\global\pagewidth=\hsize -\global\pageheight=\vsize -} - -\bindingoffset=0pt -\normaloffset=\hoffset -\pagewidth=\hsize -\pageheight=\vsize - -% Allow control of the text dimensions. Parameters in order: textheight; -% textwidth; voffset; hoffset; binding offset; topskip. -% All require a dimension; -% header is additional; added length extends the bottom of the page. - -\def\changepagesizes#1#2#3#4#5#6{ - \global\vsize= #1 - \global\topskip= #6 - \advance\vsize by \topskip - \global\voffset= #3 - \global\hsize= #2 - \global\outerhsize=\hsize - \global\advance\outerhsize by 0.5in - \global\outervsize=\vsize - \global\advance\outervsize by 0.6in - \global\pagewidth=\hsize - \global\pageheight=\vsize - \global\normaloffset= #4 - \global\bindingoffset= #5} - -% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin -% 29mm, hence bottom margin 28mm, nominal side margin 3cm. -\def\afourlatex - {\global\tolerance=700 - \global\hfuzz=1pt - \setleading{12pt} - \global\parskip 15pt plus 1pt - \advance\baselineskip by 1.6pt - \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm} - } - -% Use @afourwide to print on European A4 paper in wide format. -\def\afourwide{\afourpaper -\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}} - -% Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} - -% This macro is used to make a character print one way in ttfont -% where it can probably just be output, and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi} - -% Turn off all special characters except @ -% (and those which the user can use as if they were ordinary). -% Most of these we simply print from the \tt font, but for some, we can -% use math or other variants that look better in normal text. - -\catcode`\"=\active -\def\activedoublequote{{\tt \char '042}} -\let"=\activedoublequote -\catcode`\~=\active -\def~{{\tt \char '176}} -\chardef\hat=`\^ -\catcode`\^=\active -\def^{{\tt \hat}} - -\catcode`\_=\active -\def_{\ifusingtt\normalunderscore\_} -% Subroutine for the previous macro. -\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} - -\catcode`\|=\active -\def|{{\tt \char '174}} -\chardef \less=`\< -\catcode`\<=\active -\def<{{\tt \less}} -\chardef \gtr=`\> -\catcode`\>=\active -\def>{{\tt \gtr}} -\catcode`\+=\active -\def+{{\tt \char 43}} -%\catcode 27=\active -%\def^^[{$\diamondsuit$} - -% Set up an active definition for =, but don't enable it most of the time. -{\catcode`\==\active -\global\def={{\tt \char 61}}} - -\catcode`+=\active -\catcode`\_=\active - -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have \everyjob (or @setfilename) turn them on. -% \otherifyactive is called near the end of this file. -\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - -\catcode`\@=0 - -% \rawbackslashxx output one backslash character in current font -\global\chardef\rawbackslashxx=`\\ -%{\catcode`\\=\other -%@gdef@rawbackslashxx{\}} - -% \rawbackslash redefines \ as input to do \rawbackslashxx. -{\catcode`\\=\active -@gdef@rawbackslash{@let\=@rawbackslashxx }} - -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\rawbackslashxx}} - -% Say @foo, not \foo, in error messages. -\escapechar=`\@ - -% \catcode 17=0 % Define control-q -\catcode`\\=\active - -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{@let"=@normaldoublequote -@let\=@realbackslash -@let~=@normaltilde -@let^=@normalcaret -@let_=@normalunderscore -@let|=@normalverticalbar -@let<=@normalless -@let>=@normalgreater -@let+=@normalplus} - -@def@normalturnoffactive{@let"=@normaldoublequote -@let\=@normalbackslash -@let~=@normaltilde -@let^=@normalcaret -@let_=@normalunderscore -@let|=@normalverticalbar -@let<=@normalless -@let>=@normalgreater -@let+=@normalplus} - -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive - -% If a .fmt file is being used, we don't want the `\input texinfo' to show up. -% That is what \eatinput is for; after that, the `\' should revert to printing -% a backslash. -% -@gdef@eatinput input texinfo{@fixbackslash} -@global@let\ = @eatinput - -% On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix -% that, assuming it is called before the first `\' could plausibly occur. -% Also back turn on active characters that might appear in the input -% file name, in case not using a pre-dumped format. -% -@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi - @catcode`+=@active @catcode`@_=@active} - -%% These look ok in all fonts, so just make them not special. The @rm below -%% makes sure that the current font starts out as the newly loaded cmr10 -@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other - -@textfonts -@rm - -@c Local variables: -@c page-delimiter: "^\\\\message" -@c End: -- cgit v1.2.3