blob: 9617dcfeeab32b236ff81650ee1a19b4a6717e2b [file] [log] [blame]
Fri Dec 31 19:10:31 1999 Richard Kenner <>
* function.c (update_temp_slot_address): Handle case where sum of
temporary address plus offset in register is a valid address.
1999-12-30 Herman A.J. ten Brugge <>
* genrecog.c (change_state) Corrected typo.
1999-12-30 Kaveh R. Ghazi <>
* system.h (bcopy, bcmp, bzero, index, rindex, atof, atol, free,
getcwd, getenv, getwd, sbrk, strstr, malloc, calloc, realloc,
strerror, getrlimit, setrlimit, abort): Add prototype arguments.
1999-12-30 Bernd Schmidt <>
* i386.c (ix86_expand_fp_compare): In non-sahf non-TARGET_IEEE
case, expand GT comparisons correctly. Fix a comment before this
part of the code.
1999-12-30 Gabriel Dos Reis <>
* dwarfout.c: Include "frame.h"
* dwarf2out.c: Likewise.
* (dwarfout.o): Depend on frame.h
(dwarf2out.o): Likewise.
1999-12-29 "Martin v. Löwis" <>
Restore i386 binary compatibility in Dwarf EH info.
* config/i386/i386.h (DWARF_FRAME_REGISTERS): Define as 17, the old
(struct frame_state): Use DWARF_FRAME_REGISTERS.
* dwarfout.c (output_reg_number): Ditto.
* dwarf2out.c (reg_number, expand_builtin_init_dwarf_reg_sizes): Ditto.
1999-12-29 Bruce Korb <>
* fixinc/fixincl.c(wait_for_pid): sometimes a WSTOPSIG of zero is OK
* fixinc/fixincl.tpl(<hack>TEST_CT): Just do the existence test once
(<hack>_RE_CT): not needed
* fixinc/fixlib.c(is_cxx_header): moved from fixtests.c
rewritten to scan the file text once only
"template<..." test added
* fixinc/fixlib.h(apply_fix_p_t): moved from fixtests.c
(is_cxx_header): declaration added
* fixinc/fixtests.c(is_cxx_header): removed
(apply_fix_p_t): removed
(double_slash_test): is_cxx_header is only called once now
* fixinc/hackshell.tpl: indexing the fixes is now done under DEBUG
* fixinc/inclhack.def(FIXINC_DEBUG): added for testing DEBUG state
within the templates.
The borken spelling of "broken" was fixed.
* fixinc/inclhack.tpl: The $VERBOSE level is used on various messages
The default level depends on FIXINC_DEBUG.
1999-12-29 Kaveh R. Ghazi <>
* crtstuff.c: If !inhibit_libc, include stdlib.h/unistd.h.
Otherwise provide a declaration for atexit.
(init_dummy): Make sure dummy call to atexit is nevertheless
called with correct number of args.
* frame.c: Update comments referring to other files.
* libgcc2.c: Likewise.
1999-12-29 Kaveh R. Ghazi <>
* cse.c (free_element, get_element): Remove unused prototypes.
* fold-const.c (extract_muldiv): Initialize variables `op0' and
* jump.c (invert_exp): Add explicit braces to avoid ambiguous
`else' clauses.
Wed Dec 29 12:44:54 1999 Donald Lindsay <>
*,configure: case arm for mn10200-*-* now sets
float_format=i32 so that float.h will correctly claim "double"
to be 32 bits. Ran autoconf to generate configure from .in file.
Wed Dec 29 10:53:21 1999 Jeffrey A Law (
* (conditional zero): If op1 is a register, force it into
the same register as op0.
1999-12-28 Mark Mitchell <>
* tree.h (BINFO_BASETYPES): Improve documentation.
1999-12-28 Kaveh R. Ghazi <>
* (--enable-checking): Use a more portable `for'
loop syntax.
1999-12-28 Kaveh R. Ghazi <>
* (AC_DECL_SYS_SIGLIST, xm-siglist.h,
arm/xm-netbsd.h, NO_SYS_SIGLIST): Don't use.
* xm-siglist.h, arm/xm-netbsd.h, mips/xm-news.h, mips/xm-sysv4.h:
Delete files.
* gcc.texi (NO_SYS_SIGLIST, sys_siglist, SYS_SIGLIST_DECLARED):
Delete descriptions.
* i386/osf1elf.h, i386/xm-cygwin.h, i386/xm-mingw32.h, m68k/3b1.h,
m68k/a-ux.h, m68k/dpx2.h, m68k/plexus.h, m68k/xm-hp320.h,
m88k/xm-m88k.h, mips/x-sni-svr4, pa/xm-pa.h, pa/xm-pahpux.h,
pa/xm-papro.h, we32k/xm-we32k.h, winnt/xm-winnt.h, xm-interix.h,
xm-svr4.h: Remove all instances of sys_siglist handling.
1999-12-27 Jakub Jelinek <>
* config/sparc/ (cmp_zero_qi,
cmp_zero_extendqisi2_andcc_set, cmp_zero_qi_sp64,
cmp_zero_extendqidi2_andcc_set): New patterns.
1999-12-28 Manfred Hollstein <>
* m68k/t-mot3300-gald (CROSS_LIBGCC1): Define to libgcc1-asm.a.
(fpgnulib.c, xfgnulib.c): Add rules.
* m68k/t-mot3300-gas: Likewise.
1999-12-27 Ian Lance Taylor <>
* Avoid [[ by using test and changequote. Add
changequote required by 1999-12-14 change.
* configure: Rebuild.
1999-12-27 Clinton Popetz <>
* config/mips/mips.h: Fix typo from 12/17/99 libgcc2 fix.
1999-12-27 Christophe Jaillet <>
* alias.c (nonlocal_reference_p): Add else for disjoint ifs.
* flow.c (find_use_as_address): Likewise.
* function.c (fixup_var_refs_1): Likewise.
(walk_fixup_memory_subreg, fixup_stack_1): Likewise.
* jump.c (invert_exp, redirect_exp): Likewise.
* loop.c (replace_call_address): Likewise.
(count_nonfixed_reads): Likewise.
* rtlanal.c (modified_between_p): Likewise.
(modified_in_p, volatile_insn_p, volatile_refs_p): Likewise.
(side_effects_p, replace_regs, jmp_uses_reg_or_mem): Likewise.
* unroll.c (remap_split_bivs): Likewise.
1999-12-27 Kaveh R. Ghazi <>
* diagnostic.c (v_message_with_decl): Use .* format specifier
instead of building the format specifier width manually.
* system.h (strsignal): Don't check HAVE_STRSIGNAL when
determining whether to provide a prototype. Remove the
sys_siglist clause in the conditional.
1999-12-23 Martin v. Löwis <>
* fold-const.c (operand_equal_p): Use memcmp to compare string
Suggested by D. J. Bernstein
1999-12-17 Jakub Jelinek <>
* config/h8300/h8300.h (TARGET_H8300H, TARGET_H8300S): Make sure
UNITS_PER_WORD and BITS_PER_WORD are compile time constants when
compiling libgcc2.
* config/mips/mips.h (TARGET_64BIT): Likewise.
* config/rs6000/rs6000.h (TARGET_POWERPC64): Likewise.
* libgcc2.c: Use {,U}{HW,W,DW}type and DWunion everywhere instead
of {SI,DI}type and DIunion. Define these types to QI/HI modes on
dsps. Give routines proper names if SI/DI modes are not used.
* longlong.h: Use DWunion instead of DIunion.
1999-12-26 Zack Weinberg <>
* acconfig.h: New ENABLE flags: TREE_CHECKING, RTL_CHECKING,
* Allow --enable-checking with an argument
listing check modes to enable.
*, configure: Rebuilt.
* ggc-page.c, ggc-simple.c: Define GGC_POISON (and
GGC_ALWAYS_VERIFY for ggc-simple.c) only if
* tree.h, tree.c: Change ENABLE_CHECKING to
Sun Dec 26 07:48:20 1999 Richard Kenner <>
* fold-const.c (fold_truthop): Properly check for FP RHS.
1999-12-24 Mark Mitchell <>
* toplev.h (note_deferall_of_defined_inline_function): Declare.
* toplev.c (note_deferral_of_defined_inline_function): New
function, split out from ...
(rest_of_compilation): ... here. Use it.
Fri Dec 24 12:34:26 1999 Richard Kenner <>
* expr.c (store_constructor): Don't call clear_storage if size is
1999-12-24 Kaveh R. Ghazi <>
* (toplev.o): Depend on loop.h.
* dwarfout.c: Include tm_p.h.
* emit-rtl.c (restore_emit_status): Mark parameter with
* final.c (final_scan_insn): Likewise.
* flow.c (flow_nodes_print, flow_exits_print, flow_loops_cfg_dump,
flow_loop_nested_p, flow_loop_exits_find, flow_loop_nodes_find,
flow_depth_first_order_compute, flow_loop_pre_header_find,
flow_loop_tree_node_add, flow_loops_tree_build,
flow_loop_level_compute, flow_loops_level_compute,
flow_loop_outside_edge_p): Add prototypes.
(recompute_reg_usage): Mark parameters with ATTRIBUTE_UNUSED.
* ggc-callbacks.c (lang_mark_tree, lang_mark_false_label_stack):
* hash.c (hash_newfunc): Mark parameter with ATTRIBUTE_UNUSED.
* local-alloc.c (no_conflict_p): Likewise.
* loop.c (insert_bct): Hide definitions of variables with hidden
(note_reg_stored): Mark parameter with ATTRIBUTE_UNUSED.
* regclass.c (memory_move_secondary_cost): Mark variable `mem'
(record_reg_classes): Mark parameter with ATTRIBUTE_UNUSED.
(reg_scan): Likewise.
* reload.c (find_reloads): Remove unused variables `changed'.
* reload1.c (reload_reg_class_lower): Don't unnecessarily cast
away const-ness.
(allocate_reload_reg): Mark parameter with ATTRIBUTE_UNUSED.
Remove unused variable `insn'.
* toplev.c: Include loop.h.
(report_file_and_line): Remove unnecessary prototype.
* tree.c (build_block): Mark parameter with ATTRIBUTE_UNUSED.
* unroll.c (biv_total_increment): Likewise.
Thu Dec 23 23:15:22 1999 J"orn Rennecke <>
* reload1.c (emit_input_reload_insns): Restore old behavior
wrt. 'special' reloads.
1999-12-23 Zack Weinberg <>
* (ggc-simple.c, ggc-page.c): Don't depend on
hash.h. (cse.c): Don't depend on hashtab.h.
* cse.c: Don't include hashtab.h.
(hash_cse_reg_info, cse_reg_info_equal_p): Delete prototypes
of dead functions.
* ggc-simple.c: Don't include hash.h.
1999-12-22 Jason Merrill <>
* dwarf2out.c (add_abstract_origin_attribute): Call
gen_abstract_function on our function context.
Thu Dec 23 03:57:10 1999 Hans-Peter Nilsson <>
1999-12-23 Michael Hayes <>
* config/c4x/c4x.c (c4x_address_cost): Add statement to default
case in switch.
1999-12-22 Michael Hayes <>
* config/c4x/ (*addqi3_noclobber_reload): Change operand 0
constraints to "a!r".
1999-12-21 Mark Mitchell <>
* (calls.o): Depend on function.h.
(alias.o): Likewise.
1999-12-21 Bernd Schmidt <>
* reload1.c (emit_reload_insns): Break out code and variables into...
(input_reload_insns, other_input_address_reload_insns,
other_input_reload_insns, input_address_reload_insns,
inpaddr_address_reload_insns, output_reload_insns,
output_address_reload_insns, outaddr_address_reload_insns,
operand_reload_insns, other_operand_reload_insns,
other_output_reload_insns): ... new static variables, and...
(emit_input_reload_insns, emit_output_reload_insns, do_input_reload,
do_output_reload): ... new functions.
Tue Dec 21 07:06:36 1999 Richard Kenner <>
* pa.h (FUNCTION_ARG_BOUNDARY): Never return 0.
1999-12-21 Michael Hayes <>
* md.texi: Add c4x constraints documentation.
1999-12-21 Martin v. Löwis <>
* config/i386/dgux.c (struct option): Rename to
(struct m_options): Add description field.
(output_options): Rename option type, add sep declaration, output
ix86_cpu_string and ix86_arch_string only if set.
(output_file_start): Rename option type.
Mon Dec 20 23:15:36 1999 Mike Stump <>
* (crtbegin.o, crtend.o, s-crtS): Depend on
(libgcc2.a): Similarly.
Mon Dec 20 23:06:47 1999 David Edelsohn <>
* longlong.h (_ARCH_PPC): Only protect add_ssaaaa and sub_ddmmss
with W_TYPE_SIZE == 32. Do not fall through to POWER architecture
for umul_ppmm and smul_ppmm if !_ARCH_PPC and !_ARCH_POWER.
Mon Dec 20 23:02:03 1999 Jeffrey A Law (
* fold-const.c (real_hex_to_f): Remove unused "isldouble" variable.
Remove redundant initialization of "frexpon" and "expon".
Mon Dec 20 15:00:04 1999 Richard Kenner <>
* tree.c (real_value_from_int_cst): Clear REAL_VALUE_TYPE object first.
* expr.c (store_constructor): New argument SIZE; pass to clear_storage.
(store_constructor_field, expand_expr): Pass new arg.
1999-12-20 Mark Mitchell <>
* (explow.o): Depend on function.h.
* stor-layout.c (set_sizetype): Fix typo.
1999-12-20 Bernd Schmidt <>
* function.c (cfun): Renamed from current_function. All users
* function.h (cfun): Rename declaration as well.
* reload.h (struct insn_chain): Change live_throughout and dead_or_set
to be of type regset_head, not regset. All users changed by adding
address operator.
* reload1.c (new_insn_chain): Don't allocate regsets, just clear them.
1999-12-20 Michael Hayes <>
* config/c4x/rtems.h: New file.
1999-12-19 Bernd Schmidt <>
* reload1.c (spill_failure): Take class of failed reload as argument
and print it. Caller changed.
Sun Dec 19 07:50:42 1999 Richard Kenner <>
* rs6000.h (SUBTARGET_DEFAULT): New macro.
(TARGET_SWITCHES): Allow subtargets to default switches.
* rs6000/vxppc.h (SUBTARGET_DEFAULT): New macro.
1999-12-18 Mark Mitchell <>
* crtstuff.c (__do_global_ctors_aux): Do not call __cxa_finalize
in a main program.
Sat Dec 18 20:42:43 1999 Richard Henderson <>
* cccp.c (main): Define __STDC_VERSION__ as necessary.
* cppinit.c (cpp_handle_option): Likewise.
* ginclude/stdarg.h (va_copy): Use __STDC_VERSION__ to
determine when to define.
Sat Dec 18 20:34:00 1999 Richard Henderson <>
* alpha.c (alpha_emit_conditional_move): If TARGET_FIX, handle
cmove with mismatched test and data modes.
Sat Dec 18 20:30:15 1999 Richard Henderson <>
* c-typeck.c (c_expand_start_case): Don't warn for long switch
in system headers.
Sat Dec 18 16:28:43 1999 Richard Kenner <>
* alias.c: Minor reformatting.
* flow.c: Likewise.
* regs.h: Likewise.
* stor-layout.c: Likewise.
* fold-const.c: Likewise.
(OVERFLOW_SUM_SIGN): Renamed from overflow_sum_sign.
(struct cb_args, const_binop_1, const_binop): Pass type of arg,
not arg itself.
(size_int_wide): Cache nodes even if garbage collecting.
(twoval_comparison_p): Reenable SAVE_EXPR case if operand
of SAVE_EXPR has no side effects.
* cse.c: Move a comment.
* tree.c: Minor reformatting.
(int_size_in_bytes): Return -1 if constant overflows.
Sat Dec 18 18:30:20 1999 J"orn Rennecke <>
* unroll.c (copy_loop_body): Don't treat a REG like a PLUS.
1999-12-18 10:42 -0800 Zack Weinberg <>
* objc/objc-parse.c: Regenerate. This file must be rebuilt
after any change to, even if objc-parse.y didn't
change. Oops.
1999-12-18 David S. Miller <>
* toplev.c (rest_of_compilation): Restore BLOCK tree
reconstruction and branch shortening changes lost in
December 18th change.
Sat Dec 18 05:29:29 1999 Scott Bambrough <>
* config/arm/linux-elf.h: Change all instances of
* config/arm/uclinux-elf.h: Likewise.
1999-12-18 Gabriel Dos Reis <>
* toplev.c (notice, vmessage, v_message_with_file_and_line,
v_message_with_decl, file_and_line_for_asm,
v_error_with_file_and_line, v_error_with_decl, v_error_for_asm,
verror, vfatal, v_warning_with_file_and_line, v_warning_with_decl,
v_warning_for_asm, vwarning, vpedwarn, v_pedwarn_with_decl,
v_pedwarn_with_file_and_line, vsorry, vnotice, count_error,
pfatal_with_name, fatal_io_error, need_error_newline,
last_error_function, last_error_tick, announce_function,
default_print_error_function, print_error_function,
report_error_function, fnotice, error_with_file_and_line,
error_with_decl, error_for_asm, error, set_fatal_function, fatal,
_fatal_insn, _fatal_insn_not_found, warning_with_file_and_line,
warning_with_decl, warning_for_asm, warning, pedwarn,
pedwarn_with_decl, pedwarn_with_file_and_line, sorry): Move to
(compile_file): Use fnotice instead of notice. Adjust call.
* diagnostic.c: New file.
* (OBJS): Include diagnostic.o
(diagnostic.o): Define dependence.
1999-12-18 Michael Hayes <>
* config/c4x/c4x.h (ASM_OUTPUT_XXX): Wrap in do-while(0).
Tweak formatting.
1999-12-18 Michael Hayes <>
* config/c4x/ (rpts_top, rptb_top): Add clobbers for rs and re.
1999-12-17 13:21 -0800 Zack Weinberg <>
* fixtests.c (is_cxx_header): New fn, split out of
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* (string action): Do not warn about ANSI string
concatenation in system headers. Affects C parser only.
* c-parse.y, c-parse.c, c-parse.h: Rebuild.
1999-12-16 Jakub Jelinek <>
* config/sparc/sparc.h (TARGET_ARCH32): Exchange ifdefs so that if
compiling libgcc2 the macro depends always on arch cpp defines.
Fri Dec 17 10:34:16 1999 Richard Earnshaw <>
* loop.c (insert_loop_mem): Don't record MEMs from inside
Fri Dec 17 12:08:11 MET 1999 Jan Hubicka <>
* regclass.c (regclass): Do not use flowgraph when not optimizing.
* gcse.c (try_replace_reg): Do replacements in REG_EQUAL/REG_EQUIV
notes too, create one when replacement failed, attempt to simplify
resulting notes.
(cprop_insn): Propagate even to registers mentioned only in REG_EQUAL
or REG_EQUIV notes.
1999-12-16 Mark Mitchell <>
* crtstuff.c (__dso_handle): Declare.
(__cxa_finalize): Likewise.
(do_global_dtors_aux): Call __cxa_finalize if __dso_handle is
* invoke.texi: Document -fuse-cxa-atexit.
* tree.h (ptr_type_node): Document.
(const_ptr_type_node): Likewise.
Fri Dec 17 01:32:38 MET 1999 Jan Hubicka <>
* regmove.c (optimize_reg_copy_1): Ignore LOOP notes.
(optimize_reg_copy_2): Likewise.
(optimize_reg_copy_3): Likewise.
(fixup_match_2): Likewise.
(regmove_optimize): Likewise.
(fixup_match_1): Liekwise.
* (HI to SImode promoting splitters): Rewrite.
(pushsf mem peep2): New.
(testhi to andhi peep2): Remove.
* i386.h (x86_promote_QImode): New.
(PREDICATE_CODES): Add promotable_binary_operator.
* i386.c (x86_promote_QImode0: New.
(promotable_binary_operator): New.
* i386-protos.h (promotable_binary_operator): New.
* (test?i_1): Use "nonmemory_operand" predicate, simplify
(one_cmpl?i*): Pass "NOT" to unary_operator_ok.
1999-12-16 Mark Mitchell <>
* function.c (insert_block_after_note): Remove.
(retrofit_block): Likewise.
(identify_blocks): Fix indentation.
(reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a
* function.h (insert_block_after_note): Remove prototype.
(retrofit_block): Likewise.
* integrate.c (expand_inline_function): Don't call
find_loop_tree_blocks. Use expand_start_bindings_and_block, not
just expand_start_bindings. Use the block_map to remap old
NOTE_BLOCKs to new ones.
(integrate_decl_tree): Keep track of remapped blocks.
* integrate.h (struct inline_remap): Add block_map.
* stmt.c (expand_fixup): Don't try to retrofit_blocks. Just set
NOTE_BLOCK on the notes.
(expand_start_bindings): Rename to ...
(expand_start_bindings_and_block): Add parameter. Set NOTE_BLOCK.
(expand_end_bindings): Set NOTE_BLOCK.
* toplev.c (rest_of_compilation): In function-at-a-time-mode,
reconstruct the BLOCK tree.
* tree.h (expand_start_bindings): Macroize. Call ...
(expand_start_bindings_and_block): New function.
1999-12-16 Jakub Jelinek <>
* config/sparc/sparc.c (print_operand): Cast fprintf arguments
to match the format.
1999-12-16 David S. Miller <>
* expr.c (emit_move_insn_1): Only emit clobbers if one of
the outputs is a SUBREG.
* rtlanal.c (reg_overlap_mentioned_p): Revert December 15th
* config/sparc/sparc.c (epilogue_renumber): Add default case
to switch stmt.
Thu Dec 16 11:33:57 MET 1999 Jan Hubicka <>
* toplev.c (rest_of_compilation): Run branch shortening after
* regclass.c (loop_depth): Remove
(scan_one_insn): Do not handle LOOP_NOTE insns.
(regclass): Go through basic blocks and set loop_cost
Thu Dec 16 02:56:25 1999 Zack Weinberg <>
Thu Dec 16 10:43:35 MET 1999 Jan Hubicka <>
* (movqi): Use "nonimmediate_operand" for output operand.
(movstrictqi, movdi, movsf, movdf, movxf): Likewise.
(adddi, addqi, addhi, subdi, subqi, subhi, ffs): Likewise.
Thu Dec 16 02:41:26 1999 Richard Henderson (
* loop.c (insert_loop_mem): Ignore memory clobbers.
* combine.c (simplify_comparison): Reduce (OP (MINUS A B) 0)
to (OP A B).
Thu Dec 16 02:26:11 1999 Jeffrey A Law (
* profile.c: Remove redundant #include "output.h".
* (HImode preinc peephole): Fix typo.
1999-12-15 Jason Merrill <>
* function.c (retrofit_block): Abort if we don't find a suitable insn.
(insert_block_after_note): Abort if we don't have a previous block.
Remove FN parameter.
* function.h: Adjust.
1999-12-15 Mark Mitchell <>
* builtins.c (expand_builtin_mathfn): Make sure not to expand the
argument more than once.
1999-12-15 Jason Merrill <>
* stmt.c (expand_decl): Expand upper bound of a dynamic array.
1999-12-15 Jakub Jelinek <>
* expr.c (emit_group_load): Use dst mode if src is VOIDmode.
Wed Dec 15 16:11:55 MET 1999 Jan Hubicka <>
* function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
(assign_stack_local_1): Limit alignment to PREFERRED_STACK_BOUNDARY,
update stack_alignment_needed.
(prepare_function_start): Initialize stack_alignment_needed
* function.h (struct function): Add field stack_alignment_needed.
Wed Dec 15 14:55:24 1999 J"orn Rennecke <>
* caller-save.c (insert_one_insn): Returns struct insn_chain *.
Handle live_throughout / dead_or_set instead of live_before /
(save_call_clobbered_regs): Get register livenessinformation from
(add_stored_regs): New function.
(insert_restore, insert_save): Add restored / saved registers to
* global.c (reg_dies): New parameter chain.
(reg_becomes_live): Third parameter is regs_set now.
Changed all callers.
(reg_dies): New parameter chain. Changed all callers.
(build_insn_chain): Set live_throughout instead of
live_before / live_after.
* reload.h (struct insn_chain): Replace members live_before /
live_after with live_throughout / dead_or_set.
* reload1.c (new_insn_chain): Handle live_throughout / dead_or_set
instead of live_before / live_after.
(maybe_fix_stack_asms, find_reload_regs, finish_spills): Likewise.
(order_regs_for_reload, find_reg, finish_spills): Likewise.
(choose_reload_regs_init): Likewise.
* stupid.c (current_chain, find_clobbered_regs): Delete.
(stupid_life_analysis): Set chain->live_throughout chain->dead_or_set
instead of chain->live_before / chain->live_after.
(mark_hard_ref): New function.
(stupid_mark_refs): Call mark_hard_ref. Clear chain->live_throughout.
1999-12-15 David S. Miller <>
* rtlanal.c (reg_overlap_mentioned_p): Handle CONCAT.
Wed Dec 15 15:05:30 MET 1999 Jan Hubicka <>
* flow.c (calculate_loop_depth): Make global, remove prototype,
rewrite to use new loop infrastructure.
(find_basic_block): Remove calculate_loop_depth call.
* toplev.c (rest_of_compilation): Call find_basic_block.
* output.h (calculate_loop_depth): Declare.
* flow.c (dump_flow_info): Dump loop_depth.
(flow_loops_nodes_find): Increase loop_depth for basic block in the
(flow_loops_find): Initialize the loop_depth for each basic block.
1999-12-15 Jason Merrill <>
* tree.c (decl_function_context): Handle virtual functions.
* tlink.c (scan_linker_output): Don't look in demangled name when
looking for linker output keywords.
* dwarfout.c (output_type): We can defer namespace-scope classes.
Wed Dec 15 01:23:29 1999 Jeffrey A Law (
* regclass.c (record_reg_classes): Update comment for merging
register class preferences in reg->reg copies. Tighten conditions
for merging register class preferences in reg->reg copies.
Wed Dec 15 02:19:32 1999 David Edelsohn <>
* (tablejumpdi): Generate DImode LABEL_REF.
1999-12-14 Geoff Keating <>
* config/m68k/m68020-elf.h (ENDFILE_SPEC): Delete.
(STARTFILE_SPEC): Define to hold just crtbegin.o.
1999-12-14 Jason Merrill <>
* dwarf2out.c (add_abstract_origin_attribute): Do call abort if
the abstract origin wasn't emitted.
* dwarf2out.c (class_scope_p): New fn.
(gen_subprogram_die): Use it.
(gen_variable_die): Use it. Tweak logic.
(gen_struct_or_union_type_die): Check context_die to determine
if we're function-local.
(dwarf2out_decl): Check DECL_BUILT_IN, not DECL_FUNCTION_CODE.
1999-12-14 Bernd Schmidt <>
* loop.c (check_dbra_loop): Can't reverse a biv that has
maybe_multiple set.
1999-12-14 Nick Clifton <>
* config/arm/arm.c: Add support for -mcpu=arm720 command line
Tue Dec 14 18:13:32 1999 J"orn Rennecke <>
* loop.c (strength_reduce): Fix sign of giv lifetime calculation
for givs made from biv increments.
Tue Dec 14 08:11:27 1999 Richard Henderson <>
* (alpha-osf, alpha-linux): Handle ev6[78].
* alpha.c (override_options): Recognize -mcpu=ev67.
* alpha.h (CPP_CPU_EV67_SPEC): New.
(EXTRA_SPECS): Update.
Tue Dec 14 08:04:28 1999 Richard Henderson <>
* cppp.c (main): Set trigraphs and __STRICT_ANSI__ as
appropriate for -lang-c89 and -std=*.
* cppinit.c (cpp_handle_option): Likewise.
(new_pending_define): New, split out from cpp_handle_option.
* gcc.c (default_compilers): Don't define __STRICT_ANSI__
or enable trigraphs for -ansi/-std=*.
* ginclude/stdarg.h (__va_copy): New.
(va_copy): Don't define for C89.
Tue Dec 14 08:37:27 CST 1999 Clinton Popetz <>
* config/arm/ (mulsidi3adddi, umulsidi3adddi): New patterns
for long long multiply-accumulate.
Tue Dec 14 13:51:38 MET 1999 Jan Hubicka <>
* regclass.c (scan_one_insn): Set loop_cost to 1 when
optimizing for size.
1999-12-14 Bernd Schmidt <>
* reload1.c (reload): Can't avoid select_reload_regs/finish_spills
if something changed. Back out that part of yesterday's changes.
* loop.c (loop_max_reg): New static variable.
(loop_optimize): Initialize it. Eliminate one unnecessary call to
(scan_loop): Call reg_scan_update whenever we may have added new
registers, and update loop_max_reg.
Tue Dec 14 12:07:29 MET 1999 Jan Hubicka <>
* regclass.c (record_reg_classes): Do not do the copying preferrencing
when source does not die.
* regclass.c (record_reg_classes): Handle INOUT operands properly.
1999-12-14 Jakub Jelinek <>
* config/sparc/linux64.h (TARGET_LIVE_G0,
variants on Linux.
* config/sparc/linux.h (TARGET_LIVE_G0,
* config/sparc/linux-aout.h (TARGET_LIVE_G0,
* config/sparc/sparc.h (SPARC_DEFAULT_CMODEL): Default to CM_32.
(CONDITIONAL_REGISTER_USAGE): For block profiling fix %g4 on sparc64,
not %g2.
as sparc64 block profiling register.
* config/sparc/sparc.c (sparc_override_options): Allow block
profiling with -m32.
(sparc_block_profiler): Use %g4 instead of %g2 as sparc64 block
profiling register.
* config/sparc/linux64.h (MACHINE_STATE_*): Only provide these
macros on TARGET_ARCH32. sparc.h has macros good enough for sparc64.
* config/sparc/sol2.h (MACHINE_STATE_*): Likewise.
* config/sparc/xm-sp64.h: Avoid using __sparc_v9__ when testing
for sparc64.
* config/sparc/sparc.h: Likewise.
* config/sparc/xm-sysv4-64.h: Likewise.
* config/float-sparc.h: Likewise.
* glimits.h: Likewise.
* longlong.h: Likewise.
* config/sparc/linux64.h (DEFAULT_VTABLE_THUNKS): Define to 1.
1999-12-14 Bernd Schmidt <>
* combine.c (combine_simplify_rtx): Don't make shared rtl.
(simplify_logical): Likewise.
1999-12-14 Mumit Khan <>
* cccp.c (INO_T_EQ): Disable inode-based optimization for Cygwin.
* cppfiles.c (INO_T_EQ): Likewise.
1999-12-14 Mumit Khan <>
* i386/crtdll.h (STARTFILE_SPEC): Add -pg profiling support.
* i386/mingw32.h (LIB_SPEC): Likewise.
* i386/uwin.h (LIB_SPEC): Likewise.
* i386/mingw32.h (SUBTARGET_PROLOGUE): Override Cygwin definition.
* i386/uwin.h (SUBTARGET_PROLOGUE): Likewise.
Mon Dec 13 20:25:29 1999 Jeffrey A Law (
* combine.c (combine_simplify_rtx): Fix order of checks for
(ashiftrt foo C) -> (lt foo (const_int 0)) simplification.
1999-12-13 Clinton Popetz <>
* config/arm/ (*mulsidi3adddi, *umulsidi3adddi) Backed out
12/10/99 change, reapplied to merged-arm-thumb-backend-branch.
1999-12-10 Bernd Schmidt <>
* hard-reg-set.h (inv_reg_alloc_order): Declare if REG_ALLOC_ORDER is
* regclass.c (inv_reg_alloc_order): New array.
(regclass_init): If REG_ALLOC_ORDER is defined, initialize it.
* reload.h (struct insn_chain): Delete fields group_size, group_mode,
counted_for_groups, counted_for_nongroups. Add fields rld and
* reload.c (push_secondary_reload): Don't set nongroup field of
new reloads.
(push_reload): Likewise.
(find_reloads): Delete code to compute nongroup fields.
* reload1.c (reload_insn_firstobj): New static variable.
(pseudos_counted, spilled_pseudos): Now of type regset_head. All
users changed.
(calculate_needs, find_tworeg_group, find_group, possible_group_p,
count_possible_groups, modes_equiv_for_class_p, new_spill_reg,
dump_needs, maybe_mark_pseudo_spilled, hard_reg_use_compare): Delete
(count_pseudo, select_reload_regs, copy_reloads, find_reg): New
(struct hard_reg_n_uses): Deleted.
(potential_reload_regs): Deleted.
(init_reload): Initialize spilled_pseudos and pseudos_counted.
(reload): Don't try to allocate reload registers if we already know
we have to make another pass. Call select_reload_regs. Free memory
starting with reload_firstobj when starting another pass.
Don't allocate spilled_pseudos.
(calculate_needs_all_insns): Call copy_reloads for an insn that
needs reloads; don't call calculate_needs.
(spill_cost): New static array.
(used_spill_regs_local): New static variable.
(order_regs_for_reload): Rewrite to lose hard_reg_n_uses and the code
to compute potential_reload_regs.
(find_reload_regs): Completely rewritten to use find_reg.
(allocate_reload_reg): Don't test counted_for_groups or
counted_for_nongroups. Lose NOERROR arg and code to give an error;
all cllers changed.
(choose_reload_regs): Add fallback code that uses the existing
register allocation from find_reload_regs.
Mon Dec 13 00:54:14 1999 Philippe De Muyter <>
* flow.c (create_edge_list): Cast xmalloc return value.
Mon Dec 13 00:47:58 1999 Jeffrey A Law (
* doprnt.c: Remove incorrect comment closure.
* cse.c: Fix a few minor whitespace goofs.
1999-12-13 Don Bowman <>
* mips/vxworks.h: Fix problem with comment termination.
(EXTRA_SECTIONS): Add in_sbss.
(EXTRA_SECTION_FUNCTIONS): Corresponding changes.
1999-12-12 David S. Miller <>
* cse.c (struct cse_reg_info): Add hash_next member,
reorder rest of struct for better packing on 64-bit
(cse_reg_info_tree): Kill.
REGHASH_FN): New custom pow2 hash mechanism.
use a pow2 hash table.
(get_cse_reg_info): Rework to use new REGHASH.
(new_basic_block): Likewise, use HASH_SIZE, and inline
free_element call.
(remove_from_table): Rework to use HASH_SIZE/HASH_MASK,
and inline free_element call.
(lookup_as_function, insert, flush_hash_table, invalidate,
remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg,
invalidate_for_call, use_related_value, find_comparison_args,
fold_rtx, equiv_constant, cse_insn, invalidate_memory): Likewise.
(hash_cse_reg_info, cse_reg_info_equal_p, free_element,
get_element): Kill.
Sun Dec 12 21:31:44 1999 Jeffrey A Law (
* cse.c (cse_basic_block): Free qty_table consistently.
1999-12-12 David S. Miller <>
Jakub Jelinek <>
* config/sparc/ (movtf reg/reg split): Don't generate
SUBREGs by hand, gen the appropriate hard reg directly.
(movtf reg/mem split): Likewise and alter_subreg on destination
if necessary.
(movtf mem/reg split): Similarly.
(movdf_cc_sp64): Rename from hidden pattern.
(movtf_cc_hq_sp64): Renamed from movtf_cc_sp64.
(movtf_cc_sp64, following split): New pattern and splitter.
(movdf_cc_reg_sp64): Rename from hidden pattern.
(movtf_cc_reg_hq_sp64): Renamed from movtf_cc_reg_sp64, require
(movtf_cc_reg_sp64, following split): New pattern and splitter.
1999-12-12 Stephen L Moshier <>
* loop.c (load_mems): Don't hoist written floating point mem
if -ffloat-store.
1999-12-12 Mark Mitchell <>
* except.h (struct eh_queue): Add `next' pointer.
(struct eh_status): Make x_ehqueue a pointer.
(push_ehqueue): Declare.
(pop_ehqueue): Likewise.
* except.c (expand_eh_region_end): Adjust now that ehqueue is a
(expand_fixup_region_end): Likewise.
(expand_leftover_cleanups): Likewise.
(push_ehqueue): Define.
(pop_ehqueue): Likewise.
(emit_cleanup_handler): Use push_ehqueue and pop_ehqueue rather
than doing it inline.
(expand_start_all_catch): Adjust now that ehqueue is a
(mark_eh_queue): Mark all level of the queue.
(mark_eh_status): Adjust now that ehqueue is a
(init_eh_for_function): Allocate ehqueue.
(free_eh_status): Free it.
* stmt.c (expand_cleanups): Save the ehqueue around the cleanup
expansion for a fixup.
1999-12-12 Kaveh R. Ghazi <>
* gthr-single.h (__gthread_active_p): Add prototype arguments.
* libgcc2.c (__udivmoddi4): Remove unnecessary decls.
(__dummy, __builtin_saveregs, __bb_exit_trace_func, __bb_init_prg,
__bb_trace_func, __bb_trace_func_ret, __bb_trace_ret,
function_ptr, getpagesize, __enable_execute_stack,
__enable_execute_stack, __clear_insn_cache,
__enable_execute_stack, __do_global_dtors, __do_global_ctors,
_cleanup, _exit, __default_terminate, __terminate_func,
__terminate, __empty, __throw, new_eh_context,
eh_context_initialize, eh_context_static, eh_context_specific,
get_eh_context, __get_eh_context, __get_eh_info,
init_reg_size_table, eh_threads_initialize,
__get_dynamic_handler_chain, __sjthrow, __sjpopnthrow,
__unwinding_cleanup, throw_helper, __throw, __rethrow,
__pure_virtual): Add prototype arguments.
(__bb_exit_func): Cast a sizeof to long when comparing against one.
Cast a signed value to unsigned long when comparing against one.
(new_eh_context): Wrap in _GTHREADS macro.
(__sjthrow, __sjpopnthrow): Initialize variable `cleanup' at
(in_reg_window): Mark parameters with __attribute__ ((__unused__)).
(throw_helper): Initialize variables `handler_p' and `pc_p'.
1999-12-11 Kaveh R. Ghazi <>
* combine.c (record_promoted_value): Remove unused variable
* emit-rtl.c (renumber_insns): Likewise for `old_max_uid'.
* global.c (record_conflicts): Likewise for `j'.
* genoutput.c (output_insn_data): Don't unnecessarily cast away
1999-12-11 Kaveh R. Ghazi <>
* i386-protos.h (output_387_binary_op, output_fix_trunc,
output_fp_compare): Constify a char*.
* i386.c (ix86_split_to_parts, ix86_safe_length_prefix): Add
static prototypes.
(override_options, ix86_comp_type_attributes, print_operand,
output_387_binary_op, output_fix_trunc, output_fp_compare):
Constify a char*.
(ix86_sched_reorder): Mark parameter `clock_var' with
* i386.h (DEBUG_PRINT_REG): Constify a char*.
Fri Dec 10 16:12:13 1999 Alexandre Petit-Bianco <>
* tree.def (EXPR_WITH_FILE_LOCATION): Temporarily add a third
operand, for use in the Java front-end.
1999-12-10 Ben Collins <>
* Fix typo for "-64" in 64bit as check.
* configure: Rebuilt.
1999-12-10 Jakub Jelinek <>
* longlong.h (__sparc_v9__): Use %rDIGIT instead of %DIGIT where
1999-12-10 Kaveh R. Ghazi <>
* (string): With -Wtraditional, warn if ANSI string
concatenation is utilized.
* invoke.texi (-Wtraditional): Document it.
1999-12-10 Kaveh R. Ghazi <>
* flow.c (flow_loops_dump): Avoid ANSI string concatenation.
Cast a ptrdiff_t to long and pass it to printf with %ld.
1999-12-10 Geoff Keating <>
* config/m68k/m68k.h (CONDITIONAL_REGISTER_USAGE): If we have no
68881, we have no 68881 registers at all.
(HARD_REGNO_MODE_OK): It is always OK to put a MODE_FLOAT
value in a 68881 register if it is available.
1999-12-10 Clinton Popetz <>
* config/arm/ (*mulsidi3adddi, *umulsidi3adddi): New patterns
for long long multiply-accumulate.
1999-12-10 Bernd Schmidt <>
* loop.c (insert_loop_mem): Undo last change.
1999-12-10 David S. Miller <>
* config/sparc/sparc.c (fp_sethi_p, fp_mov_p, fp_high_losum_p):
New functions.
* config/sparc/sparc-protos.h: Add them.
* config/sparc/sparc.h: Add them to PREDICATE_CODES.
(EXTRA_CONSTRAINT_BASE): New macro, handling Q, R, and S
constraints which use those helpers.
(EXTRA_CONSTRAINT): Use this new macro.
* md.texi: Update sparc target constraints documentation.
* config/sparc/ (clear_sf, clear_sfp, movsf_const_intreg,
movsf_const_high, movsf_const_lo, movsf_insn): Delete.
(movsf_insn_novis_liveg0, movsf_insn_novis_noliveg0,
movsf_insn_vis, movsf_lo_sum, movsf_high): New patterns.
(movsf high/lo_sum split): Rework for new patterns.
(movsf expander): Allow storing fp_zero to memory if ! live_g0.
1999-12-09 Gavin Romig-Koch <>
* c-common.c (c_common_nodes_and_builtins):
Create __builtin_ptrdiff_t and __builtin_size_t.
Thu Dec 9 18:05:48 1999 Jeffrey A Law (
* pa/elf.h (MAX_OFILE_ALIGNMENT): Define.
Fri Dec 10 00:53:10 1999 J"orn Rennecke <>
* regclass.c (globalize_reg): Re-instate test that allows
fixed registers to be declared as a variable even after functions
are defined.
Fri Dec 10 00:52:13 MET 1999 Jan Hubicka <>
* (cpu attribute): Add "athlon".
(athlon_decode): New attribute.
(Athlon scheduling units definitions): New.
(fcmp and shld patterns): Set athlon_decode to "vector".
* i386.c (athlon_cost): New.
(m_ATHLON): New.
(x86_use_leave, x86_push_memory, x86_movx, x86_cmove, x86_deep_branch,
x86_use_sahf): Set for Athlon.
(x86_use_fiop): Unset for Athlon.
(override_options): Define Athlon alignments and "athlon" name.
(x86_adjust_cost): Penalize AGI and delayed latencies for Athlon.
* i386.h (TARGET_ATHLON): New.
(enum processor_type): Add PROCESSOR_ATHLON.
(TARGET_CPU_DEFAULT_SPEC): Set to "-D__tune_athlon__"
(TARGET_CPP_CPU_SPECS): Set -D__tune_athlon__ for Athlon.
1999-12-09 Andreas Jaeger <>
* loop.c (record_biv): Declare parameter as int.
* config/i386/i386-protos.h: Declare long_memory_operand.
1999-12-09 Mark Mitchell <>
* tree.c (copy_node): Do zero the TREE_CHAIN, even for an
Thu Dec 9 11:36:24 MET 1999 Jan Hubicka <>
* (neg??, abs?f, one_cmpl?i): Use nonimmediate_operand
in expander.
* flow.c (recompute_reg_usage): Use basic block info to get loop_depth.
* combine.c (try_combine, distribute_notes): Remove REG_N_REFS
updating code.
1999-12-09 Jakub Jelinek <>
* config/sparc/linux64.h (TARGET_DEFAULT): Make -mapp-regs
default on linux64 again.
* config/sparc/t-linux64: Add mno-app-regs and non-medlow code
models for multilibing.
* genmultilib: Accept | as alternative separator within a set in
* config/sparc/sparc.h (PROMOTE_FOR_CALL_ONLY): Define.
* calls.c (precompute_arguments): Make sure initial_value contains
value pseudo which CSE expects.
* cse.c (struct set): New entry orig_src.
(cse_insn): Set it early on entry, use it for libcall EQUIV note
Wed Dec 8 22:24:15 1999 Richard Henderson <>
* flow.c (count_basic_blocks): Don't add (use (const_int 0)) insns.
1999-12-08 Bernd Schmidt <>
* loop.c (insert_loop_mem): Don't hoist volatile mems out of loops.
1999-12-08 Jakub Jelinek <>
* config/sparc/sparc.c (ultra_cmove_results_ready_p,
ultra_fpmode_conflict_exists, ultra_flush_pipeline): Typo fix.
* config/sparc/sparc.h (SPARC_SETHI_P): Don't look at topmost 32 bits
* longlong.h: Merge in changes from glibc.
Also don't clobber %g2 register in 32bit SPARC assembly, so that
-mno-app-regs libgcc can be compiled.
* libgcc2.c: Add defines so that the updated longlong.h
can be used in libgcc2.a. Also, make sure on most architectures
(at least on all which have optimized code in longlong.h defined
for) {SI,W}_TYPE_SIZE is suitable for preprocessor tests.
1999-12-08 Alexandre Oliva <>
* config/sparc/sol2-64.h: Same as sol2-sld-64.h, except that
`-m EMULATION' is added to non-default LINK_ARCH_SPECs.
* Use sol2-64.h instead of sol2-sld-64.h if linker
is GNU ld.
* configure: Rebuilt.
Wed Dec 8 03:45:40 1999 Richard Henderson <>
* alpha.c (secondary_reload_class): For !BWX, sub-simode
outputs require a register.
1999-12-08 Brendan Kehoe <>
* (FPBIT_FUNCS, DPBIT_FUNCS): Add _sf_to_usi
_df_to_usi. Required by some targets, so US_SOFTWARE_GOFAST calls to
functions like dptoul will be resolved.
(libgcc2.a): Make sure that the object files from DPBIT are named
differently (prefix `_dp') from those that would be coming from
1999-12-08 Alexandre Oliva <>, Jakub Jelinek <>
* When target is sparc* and tm_file contains 64,
test for 64bit support in assembler. If not supported, remove
sparc/t-sol2-64 from target-dependent Makefile fragments.
(AS_SPARC64_FLAG): Define to the assembler flag for 64bit.
(HAVE_AS_OFFSETABLE_LO10): Rework test to use these flags.
(HAVE_AS_REGISTER_PSEUDO_OP): Use config.cache.
* acconfig.h (AS_SPARC64_FLAG): Added.
* configure, Rebuilt.
* config/sparc/sol2-sld-64.h: Same as sol2.h, if without 64bit
support. Use AS_SPARC64_FLAG.
1999-12-07 Jakub Jelinek <>
* config/sparc/sparc.c (hard_32bit_mode_classes): Mark registers
suitable for holding OFmode values so that gcc works with complex
quad long doubles.
(hard_64bit_mode_classes): Likewise.
* config/sparc/ (sethi_di_medlow_embmedany_pic): Fix pattern
so that it is actually matched.
(sethi_di_medlow): Likewise.
* config/sparc/sparc.h (LEGITIMATE_CONSTANT_P): Consider TFmode 0.0L
as legitimate constant if -mvis.
* config/sparc/ (movtf): Likewise.
(clear_sf): Use const_double_operand.
(clear_sfp, clear_dfp, clear_tf, clear_tfp): New patterns.
* config/sparc/sparc.c (sparc_emit_float_lib_cmp): New function.
* config/sparc/sparc-protos.h (sparc_emit_float_lib_cmp): Prototype.
* config/sparc/sparc.h (*_LIBCALL): Only use for _Q_*
routines, _Qp_* cannot be handled like that now.
* config/sparc/ (cmptf): Accept soft float ARCH64.
(seq, sne, sgt, sge, slt, sle, beq, bne, bgt, bge, blt, ble): Call
sparc_emit_float_lib_cmp if ARCH64 and soft float.
(extendsftf2, extenddftf2, trunctfsf2, trunctfdf2, floatsitf2,
floatditf2, fix_trunctfsi2, fix_trunctfdi2, addtf3, subtf3, multf3,
divtf3, sqrttf3): New expanders.
(extendsftf2_hq, extenddftf2_hq, trunctfsf2_hq, trunctfdf2_hq,
floatsitf2_hq, floatditf2_hq, fix_trunctfsi2_hq, fix_trunctfdi2_hq,
addtf3_hq, subtf3_hq, multf3_hq, divtf3_hq, sqrttf3_hq): Rename from
non-_hq patterns.
* (sparc64-*-linux*): Use posix threads if enabled.
* configure: Rebuilt.
* config/sparc/linux64.h: Default to -mcpu=ultrasparc if no
-mcpu is given and we're doing 64bit compiles.
Tue Dec 7 19:22:06 1999 Richard Henderson <>
* loop.h (struct induction): Add multi_insn_incr.
* loop.c (basic_induction_var): New multi_insn_incr argument.
Set it if we search back through previous insns for the biv.
(record_biv): New multi_insn_incr argument; fill in struct induction.
(strength_reduce): Discard an iv with multiple bivs, any of
which require multiple insns to increment.
1999-12-07 Martin v. Löwis <>
* invoke.texi (C Dialect Options): Remove -flang-c9x, add -std
1999-12-06 David S. Miller <>
* combine.c (check_promoted_subreg): Do not conditionalize this upon
Mon Dec 6 15:12:14 1999 Jim Wilson <>
* regmove.c (optimize_reg_copy_1): If no REG_DEAD note, check for
and handle REG_UNUSED note on insn.
* combine.c (force_to_mode, case LSHIFTRT): New local inner_mask. Set
inner_mask instead of mask.
1999-12-06 Brendan Kehoe <>
* dwarf2out.c (field_byte_offset): As with dwarfout.c, size can be
zero if there was an error.
1999-12-06 Jakub Jelinek <>
* config/sparc/ (return_losum_di): Fix typo in asm
output string.
* longlong.h: Fix clobbers in SPARC asm statements.
* config/sparc/sparc.c (input_operand): Allow HImode and QImode
valid sethi operations when TARGET_ARCH64.
* calls.c (save_fixed_argument_area): If save_mode is BLKmode,
always use move_by_pieces to avoid infinite recursion.
(restore_fixed_argument_area): Likewise.
* combine.c (check_promoted_subreg, record_promoted_value): New
(combine_instructions): Use them to retain nonzero and sign bit
information after SUBREGs are eliminated by optimizations in
* config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Document
.register declaration. Don't use variables with __ prefixes.
Mon Dec 6 12:24:52 1999 Richard Kenner <>
* fold-const.c (optimize_bit_field_compare): Only use one mode
for both RHS and LHS in non-constant case.
1999-12-06 Nathan Sidwell <>
* frame.c (start_fde_sort): Only allocate erratic array, if
linear one was allocated. Return allocated flag.
(fde_insert): Only insert, if there's a valid array.
(fde_end_sort): Split, sort and merge if linear and erratic
arrays exist, else just sort linear one.
(search_fdes): New function. Linear search through original fde
(frame_init): Permit multiple initializations. Cope with
memory shortages.
(find_fde): Fallback on linear search, if failed to sort array.
(__deregister_frame_info): Only free sorted array, if we
allocated it.
1999-12-06 Jakub Jelinek <>
* config/sparc/sparc.h (MUST_PASS_IN_STACK): New macro.
1999-12-05 Jakub Jelinek <>
* config/sparc/sparc.c (sparc64_initialize_trampoline): Use gen_flushdi.
1999-12-05 Mark Mitchell <>
* tree.h (special_function_p): Declare.
* calls.c (special_function_p): Make it global. Don't take `name'
as a parameter. Fix typo in 1999-11-28 change.
(expand_cal): Adjust.
1999-12-04 Mark Mitchell <>
* tree.def (EXPR_WITH_FILE_LOCATION): Fix comment formatting.
* tree.h (EXPR_WFL_FILENAME): Define in terms of
(EXPR_WFL_FILENAME_NODE): Use the second operand slot rather than
* print-tree.c (print_note): Print TREE_PRIVATE and
* dwarf2out.c (add_abstract_origin_attribute): Don't abort when
the original die cannot be found.
* varray.h (varray_head_tag): Add elements_used.
(VARRAY_PUSH): New macro.
(VARRAY_POP): Likewise.
(VARRAY_TOP): Likewise.
Add variants of VARRAY_PUSH and VARRAY_POP for all varray element
* varray.c (varray_init): Initialize elements_used.
* (BASIC_BLOCK_H): Add varray.h.
(INTEGRATE_H): New variable.
(integrate.o): Depend on INTEGRATE_H.
(unroll.o): Likewise.
* function.h (insert_block_after_note): Declare.
* function.c (insert_block_after_note): Split out from ...
(retrofit_block): ... here.
* stmt.c (expand_fixup): Fix typo in comment.
Sat Dec 4 14:13:38 MET 1999 Jan Hubicka <>
* regmove.c (copy_src_to_dest): Remove loop_depth parameter.
(optimize_reg_copy_1): Remove REG_N_REFS updating code.
(optimize_reg_copy_2, copy_src_to_dest, fixup_match_2): Likewise.
(regmove_optimize, fixup_match_1): Likewise.
1999-12-05 Michael Hayes <>
* flow.c (flow_loops_dump): Add missing argument when calling
1999-12-04 Geoffrey Keating <>
Greg McGary <>
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
(init_attributes): Add A_NO_LIMIT_STACK.
(decl_attributes): Handle A_NO_LIMIT_STACK.
* c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
* explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
Handle stack bounds checking.
* flags.h (flag_stack_check): Use the word 'probe' rather than
'check', because the flag doesn't actually cause any checking to
be done.
* function.c (expand_function_start): Set
* function.h (struct function): Add limit_stack.
(current_function_limit_stack): Define.
* invoke.texi (Code Gen Options): Document new options.
* rtl.h: Declare stack_limit_rtx.
* toplev.c (stack_limit_rtx): New variable.
(decode_f_option): Handle new options -fstack-limit-register=REG,
-fstack-limit-symbol=IDENT, -fno-stack-limit.
(main): Add stack_limit_rtx as GC root.
* tree.h (DECL_NO_LIMIT_STACK): New macro.
(struct tree_decl): New member no_limit_stack.
* config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
* config/rs6000/ (allocate_stack): Handle stack_limit_rtx.
(conditional_trap+1): Get new mnemonic correct.
(conditional_trap+2): New pattern for DImode traps.
* config/m68k/m68k.c (output_function_prologue): Handle
* config/m68k/ (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
* config/i960/ (trap): New insn.
(conditional_trap): New expander.
(conditional_trap+1, conditional_trap+2): New insns for signed
and unsigned cases.
* config/i960/i960.c (i960_function_prologue): Use
STARTING_FRAME_OFFSET. Handle stack_limit_rtx.
Thu Dec 2 21:22:45 1999 Greg McGary <>
Geoffrey Keating <>
* flags.h (warn_padded, warn_packed): Add global var decls.
* toplev.c (warn_padded, warn_packed): Add global var defns.
(W_options): Add warnings `-Wpacked' and `-Wpadded'.
* stor-layout.c (layout_record): Add local variable `type'
to hold often-used TREE_TYPE (field). Add local variable
`unpacked_align' to hold alignment that would be in force
if no `packed' attribute were present. Warn if `packed' attribute
is unnecessary, or even harmful. Warn when gcc inserts padding
to satisfy alignment requirements of members. Use NULL_TREE
when checking whether var_size is set.
* invoke.texi: Document new flags.
1999-12-03 Nathan Sidwell <>
* frame.c (fde_split): Reimplement to avoid variable sized array.
Thu Dec 2 18:59:48 1999 J"orn Rennecke <>
* combine.c (try_combine): Before fixing up LOG_LINKS for the
i3_subst_into_i2 case, check that GET_CODE (PATTERN (i2)) == PARALLEL.
1999-12-02 Gavin Romig-Koch <>
* invoke.texi: Document the mips option -mno-crt0
1999-12-02 Mike Karr <>
* cccp.c (argdata): Added free_ptr member.
(macroexpand): Initialize free_ptr of each argument. When an
argument's buffers are freed, if the argument's free_ptr corresponds
to a buffer on the input stack, then return the free_ptr to that stack
frame, otherwise, free it.
(macarg): If an argument begins and ends on the same input stack level,
then transfer the free_ptr of that buffer to the argument in case
the stack is popped during the processing of a subsequent argument.
1999-12-02 Bernd Schmidt <>
* loop.c (note_reg_stored): New function.
(struct note_reg_stored_arg): New structure.
(try_copy_prop): Change to be more conservative; only replace within
one extended basic block and stop replacing if a store to the
replacement reg is seen.
1999-12-02 Nick Clifton <>
* config/fp-bit.c: Initialize all fields of the NAN
* c-lex.c (check_newline): Pass pragma_getc and pragma_ungetc
Wed Dec 1 18:16:38 1999 Jan Hubicka <>
* (extend?f?f2): Force the input into a register, not
the output.
1999-12-01 Jakub Jelinek <>
* config/sparc/ (movsf_const_intreg): Add constraints for
regclass' sake.
(movdf_const_intreg_sp32): Likewise. Prefer the memory load
alternative because setting up 64bit constant is usually costly,
especially when reload is in progress or completed.
(movdf_const_intreg_sp64): Likewise.
(movdf_const_intreg split): Fix building up constants when
HOST_BITS_PER_WIDE_INT is 64 yet long is 32bit.
Wed Dec 1 16:51:22 1999 Jeffrey A Law (
* combine.c (if_then_else_cond): Use const_true_rtx instead of
const1_rtx for return values in EQ/NE comparison against (const_int 0)
* mn10300.c (REG_SAVE_BYTES): Allocate space for AM33 registers.
(asm_file_start): Emit .am33 into assembly file when compiling for
the AM33.
(print_operand_address): Handle POST_INC addresses.
(can_use_return_insn, initial_offset): Check AM33 registers too.
(expand_prologue): Check & save AM33 registers too.
(expand_epilogue): Similarly.
(secondary_reload_class): Handle AM33 specific secondary reloads.
(output_tst): Emit efficient code for the AM33 too.
* mn10300.h (CPP_SPEC, TARGET_AM33): Define.
(TARGET_SWITCHES): Add -mam33 switch.
(FIRST_PSEUDO_REGISTER): Handle new AM33 registers.
(enum reg_class, REG_CLASS_NAMES): Likewise.
(GO_IF_LEGITIMATE_ADDRESS): Allow POST_INC addresses for the AM33.
(GO_IF_MODE_DEPENDENT_ADDRESS): POST_INC is a mode dependent address.
* (movqi, movhi, addsi, subsi): Add AM33 variants.
(mulsi, andsi, iorsi, xorsi, notsi): Likewise.
(ashiftsi, lshiftrtsi, ashiftrtsi): Likewise.
(zero_extend to SI from QI/HI): Likewise.
(sign_extend to SI from QI/HI): Likewise.
(mulsidi3, umulsidi3): New patterns for the AM33.
(tstsi with zero extension from QI/HI): Add AM33 variants.
(movsi, movsf, movdi, movdf): Generate efficient code for the AM33 too.
(return_internal_regs, store_movm): Handle new AM33 registers.
* invoke.texi: Document new flags.
Fri Nov 26 10:59:12 CET 1999 Jan Hubicka <>
* (addsi3_cc): Add "binary_operator_ok" to the condition.
(addsi3_carry): Likewise.
(sbbsi3_cc): Add "binary_operator_ok" to the condition.
(sbbsi3_carry): Likewise.
(mulsi3): Rewrite to expander, ensure that only one operand is memory.
(mulhi3): Likewise.
(test?i_1): Ensure that only one operand is memory.
(conditional move patterns): likewise.
(shift and rotate patterns): Rewrite to expander, add
"binary_operator_ok" to the condition.
* (QImode patterns): Remove '*' before the 'r' constraints.
* i386.h (procesor_costs): Add movzbl_load field.
non-Q registers, accept DImode registers anywhere.
(Q_CLASS_P): New.
(MEMORY_MOVE_COST): Calculate QImode moves correctly.
* i386.c (*_cost): Set value for movxbl_load field.
* (addsi): New add to lea splitter.
(ashlsi): Likewise.
(lea to add/shift peep2): New.
1999-12-01 Mark Salter <>
* config/mips/elf.h (STARTFILE_SPEC): Add no-crt0.
* config/mips/elf64.h (STARTFILE_SPEC): Add no-crt0.
* config/mips/mips.h (TARGET_SWITCHES): Add no-crt0.
Tue Nov 30 15:20:52 MET 1999 Jan Hubicka <>
* i386.c (ix86_expand_move): Never add clobbers to move patterns.
* (movsi_xor): New.
(movsi_or): New.
(movsi_1, movhi_1, movqi_1): Remove.
(movsi_2): Rename to movsi_1.
(movhi_2): Rename to movhi_1.
(movqi_2): Rename to movqi_1.
(movdi_1): Remove; remove splitter.
(movdi_2): Rename to movdi_1.
(divmodsi4 splitter): Do not emit clobbers for move patterns.
(long move peep2): Do not create QI or HI mode mov0s
(mov -1,reg -> or peep2s): Enable again, rewrite to single peephole.
* (zero_extend?i?i2): Rewrite to expanders; new patterns,
rewrite splitters.
* (neg?f2_if): Split "r" and "f" to separate alternatives.
(abs?f2_if): Likewise.
1999-11-30 Alex Samuel <>
* ggc.h (ggc_test_and_set_mark): New macro.
(ggc_mark_rtx): Use ggc_test_and_set_mark.
(ggc_mark_tree): Likewise.
(ggc_mark_rtvec): Likewise.
* ggc-common.c (ggc_mark_rtx_children): Reduce recursion.
1999-11-30 Jason Merrill <>
* dwarf2out.c (scope_die_for): Only handle types. Only search for
containing types.
(decl_scope_table): Just an array of trees now.
(push_decl_scope): Simplify.
(dwarf2out_init): Adjust.
(local_scope_p): New fn.
(gen_inlined_enumeration_type_die): Don't call scope_die_for.
(gen_inlined_union_type_die, gen_inlined_structure_type_die): Likewise.
(gen_typedef_die): Likewise.
(gen_lexical_block_die): Don't call push/pop_decl_scope.
(gen_inlined_subroutine_die): Likewise.
(gen_abstract_function): Set current_function_decl temporarily.
(gen_subprogram_die): Don't check DECL_ABSTRACT to set declaration.
Handle block extern declarations. Don't call push/pop_decl_scope.
(gen_decl_die): Fix logic for block externs.
1999-11-30 Kaveh R. Ghazi <>
* calls.c (special_function_p): Remove `realloc' and add `strdup'
to the list of functions which have attribute malloc by default.
1999-11-30 Kaveh R. Ghazi <>
* c-lex.c (yylex): With -Wtraditional, when the ANSI type of an
integer constant does not match the traditional type, limit the
warnings to cases where the base of the type is ten.
* invoke.texi (-Wtraditional): Document it.
Tue Nov 30 15:18:35 1999 Franz Sirl <>
* combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST
* Only access a CONST_INT with INTVAL
Tue Nov 30 14:21:00 1999 Richard Henderson <>
* lcm.c (compute_laterin): Cast bb->aux to size_t not int.
(compute_nearerout): Likewise.
* ggc-page.c (ggc_page_print_statistics): Explicitly cast
size_t to unsigned long for formatting.
1999-11-30 Jakub Jelinek <>
Allow the user to override call-used/fixed state of %g2-5
registers from the command line (with the exception of %g4 for
embedded model).
(REG_LEAF_ALLOC_ORDER): Move %g1 and %g4-7 registers to front, so that
there is a higher chance of having a leaf function.
for ARCH64 which has %ccr register.
* config/sparc/ (return_losum_si, return_losum_di): New
* config/sparc/sparc.c (eligible_for_epilogue_delay): For the return
insn accept into delay slot any insn which does not use %[ol]
registers. Accept some LO_SUM and shift left by 1 for the normal
restore case.
(output_function_epilogue): Likewise.
(epilogue_renumber): Added argument which inhibits any renumbering
and just tests if the rtx does not use any %[ol] registers.
(output_return): Reflect above change.
1999-11-30 Jakub Jelinek <>
* config/sparc/sparc.c (sparc_va_arg): Fix sparc64 va_arg
aggregate passing for sizes <= 16 bytes.
1999-11-30 Bernd Schmidt <>
* cse.c (FIXED_REGNO_P): Delete tests for OVERLAPPING_REGNO_P.
* global.c (global_alloc): Delete [OVERLAPPING_REGNO_P] code.
* reload.c (find_dummy_reload): Likewise.
(find_equiv_reg): Likewise; also for INSN_CLOBBERS_REGNO_P.
* reload1.c (reload_as_needed): Likewise.
* stupid.c (stupid_find_reg): Likewise.
* tm.texi (Obsolete Register Macros): Delete section.
* gmicro.h: Remove all traces of the two macros.
* i386.h: Likewise.
* m88k.h: Likewise.
* mips.h: Likewise.
1999-11-30 Brendan Kehoe <>
(TARGET_SWITCHES): Add -mfaster-structs/-mno-faster-structs flags.
(ROUND_TYPE_ALIGN): Use better value if -mfaster-structs.
* (sparclite86x_branch, sparclite86x_shift): New function
units for the sparclite86x chip.
(flush): Revert October 14th change; add SImode specifically.
(flushdi): Copy of flush, but DImode, to avoid genrecog warnings.
* invoke.texi: Document it.
Tue Nov 30 14:58:14 1999 Nick Clifton <>
* config/mn10200/mn10200.h (PREDICATE_CODES): Add
* config/mn10200/mn10200.c (psimode_truncation_operand): New
function. Return true if the operand is either a MEM valid
for a PSImode address or not a MEM at all.
* config/mn10200/ (truncsipsi2): Use
1999-11-30 Michael Hayes <>
* flow.c (flow_nodes_print, flow_loops_cfg_dump): New functions.
(flow_loop_nested_p, flow_loops_dump, flow_loops_free): Likewise.
(flow_loop_exits_find, flow_loop_nodes_find): Likewise.
(flow_depth_first_order_compute, flow_loop_pre_header_find): Likewise.
(flow_loop_tree_node_add, flow_loops_tree_build): Likewise.
(flow_loop_level_compute, low_loops_level_compute): Likewise.
(flow_loops_find, flow_loop_outside_edge_p): Likewise.
* basic-block.h: Protect from multiple inclusion.
(flow_loops_find, flow_loops_free, flow_loop_dump): Add protoypes.
(struct loops, struct loop): Define structures.
* sbitmap.c (sbitmap_a_subset_b_p): New function.
* sbitmap.h: Protect from multiple inclusion.
(sbitmap_a_subset_b_p): Add prototype.
* (LOOP_H): New macro.
(stmt.o, integrate.o, loop.o, unroll.o): Replace loop.h with LOOP_H.
Tue Nov 30 01:34:47 1999 Philippe De Muyter <>
* cppinit.c (CAT): The argument list of this macro may not contain
spaces !
1999-11-29 David S. Miller <>
Move quantity tables and register equivalence chains into
per-qty and per-register structure arrays respectively.
* cse.c (qty_first_reg, qty_last_reg, qty_mode, qty_const,
qty_const_insn, qty_comparison_code, qty_comparison_const,
qty_comparison_qty): Delete, replace with...
(qty_table): this structure table.
(reg_next_eqv, reg_prev_eqv): Delete, replace with...
(reg_eqv_table): this structure table.
(make_new_qty): Add argument MODE. Caller updated.
Update to use qty_table and reg_eqv_table.
(make_regs_eqv, delete_reg_equiv, insert_regs,
insert, exp_equiv_p, cse_rtx_varies_p, canon_reg,
fold_rtx, equiv_constant, record_jump_cond, cse_insn,
cse_process_notes, cse_main, cse_basic_block): Likewise.
Mon Nov 29 16:56:42 1999 Richard Kenner <>
* fold-const.c (extract_muldiv, case {MIN,MAX}_EXPR): Reverse
operation if C is negative.
(extract_muldiv, case SAVE_EXPR): Supresss if arg has side effects.
(extract_muldiv, case {PLUS,MINUS}_EXPR): Don't apply distributive
law for some divisions if constant is negative and change other
divisions to the opposite rounding.
* expr.c (store_constructor_field): If bit position is not multiple
of alignment of TARGET's mode, use BLKmode.
* expr.c (expand_expr_unaligned): Add more code from full case
that is needed when OP0 is in a register.
Mon Nov 29 18:09:39 1999 J"orn Rennecke <>
* dwarfout.c (field_byte_offset): Size can be zero if there was
an error.
1999-11-29 Bernd Schmidt <>
* fold-const.c (split_tree): Delete unused vars ORIG_IN and TYPE.
(associate_trees): Delete unused var TEM.
(extract_muldiv): Delete unused var CANCEL_P.
(target_isinf, target_isnan, target_negative): Add return types to
function definitions.
1999-11-29 Bruce Korb <>
* fixinc/fixincl.c(process): don't skip GLIBC files any more.
* fixinc/hackshell.tpl: ditto
* fixinc/fixtests.c(double_slash_test): more C++ header testing
* fixinc/inclhack.def(AAB_fd_zero_glibc*): corrected spelling of mach
1999-11-29 Bernd Schmidt <>
* reload.c (push_reload): When looking for a register to put into
reg_rtx, make sure all hard regs in a multi-reg register are in the
right class and nonfixed.
* haifa-sched.c (reg_last_uses, reg_last_sets, reg_last_clobbers,
pending_read_insns, pending_write_insns, pending_read_mems,
pending_write_mems, pending_list_length, last_pending_memory_flush,
last_function_call, sched_before_next_call): Move static variables
into a structure.
(bb_ prefixed versions): Replace with single array bb_deps.
(struct deps): New structure.
(add_insn_mem_dependence, flush_pending_lists, sched_analyze_1,
sched_analyze_2, sched_analyze_insn, sched_analyze): Accept new
argument of type "struct deps *"; use that instead of global
variables. All callers changed.
(init_rgn_data_dependencies): Delete function.
(init_rtx_vector): Delete function.
(init_deps): New function.
(free_pending_lists): Simplify, we always use the bb_deps array even
if only one basic block.
(compute_block_backward_dependences): Likewise.
(schedule_region): Likewise.
(propagate_deps): New function, broken out of
(compute_block_backward_dependences): Use it.
* Delete useless patterns that tried to work around
register elimination problems.
* unroll.c (loop_iterations): Don't abort if iteration variable
was made by loop.
From Joern Rennecke:
* reload1.c (reloads_conflict): Reverse test comparing operand
numbers when testing for conflict between output/outaddr reloads.
1999-11-29 David S. Miller <>
* config/sparc/sparc.c (init_cumulative_args): Fix type of third
* config/sparc/sparc-protos.h: Update proto, move into RTX_CODE.
1999-11-28 Robert Lipe <>
* i386/sco5.h (FINI_SECTION_ASM_OP_COFF): Move destructor fn
table from .fini into .dtor.
1999-11-28 Anthony Green <>
* tree.h (struct tree_decl): Add malloc_flag.
* c-common.c (attrs): Add A_MALLOC attribute.
(init_attributes): Add this attribute to the table.
(decl_attributes): Handle malloc attribute.
* calls.c (special_function_p): Check for the malloc attribute.
* extend.texi (Function Attributes): Document malloc attribute.
Sun Nov 28 13:21:00 1999 Jeffrey A Law (
* (reload shift-add patterns): Remove.
1999-11-28 Herman A.J. ten Brugge <>
* reorg.c (dbr_schedule) Print more statistics. Corrected
problem when printing info when 3 delay slots are filled.
1999-11-28 Jakub Jelinek <>
* combine.c (setup_incoming_promotions): Pass an outgoing
regno to FUNCTION_ARG_REGNO_P which it expects.
1999-11-28 Andreas Jaeger <>
* mips/linux.h (CPP_PREDEFINES): Undefine before redefining.
Sun Nov 28 00:48:15 1999 Philippe De Muyter <>
* cccp.c (do_include): Avoid initialization of automatic variable.
* integrate.c (mark_stores): Function definition made void, to match
previous declaration.
* regclass.c (dump_regclass): Ditto.
* (WARN_CFLAGS): Macro augmented by `-Wtraditional'.
Sat Nov 27 08:38:26 1999 Richard Kenner <>
* expr.c (store_constructor): Use EXACT_DIV_EXPR when dividend is
known to be multiple of divisor.
* expr.c (store_constructor): Don't clobber TARGET if CLEARED.
* combine.c (try_combine): Add code to try to merge a set of a
two-word pseudo to a constant with a setting of one of those words
to a constant.
* fold-const.c (negate_expr, associate_trees, extract_muldiv): New.
(split_tree): Completely rework to make more general.
(make_range, fold): Call negate_expr.
(fold, case NEGATE_EXPR): Simplify -(a-b) is -ffast-math.
(fold, associate): Call new split_tree and associate_trees.
(fold, case MULT_EXPR, case *_{DIV,MOD}_EXPR): Call extract_muldiv.
1999-11-26 Bernd Schmidt <>
* loop.c (try_copy_prop): Avoid GNU C extension.
1999-11-25 Mark Mitchell <>
* except.c (init_eh_for_function): Still zero eh_return_context,
eh_return_stack_adjust, and eh_return_handler.
* except.h (eh_status): Adjust documentation for x_protect_list.
(begin_protect_partials): New function.
* except.c (enqueue_eh_entry): Fix formatting.
(get_first_handler): Add consistency check.
(add_partial_entry): Adjust usage of protect_list.
(emit_cleanup_handler): Save and restore ehqueue.
(expand_start_all_catch): Add comment.
(begin_protect_partials): New function.
(end_protect_partials): Adjust usage of protect_list.
(init_eh_for_function): Use xcalloc.
1999-11-25 Kaveh R. Ghazi <>
* c-common.c (check_format_info): Don't call a variadic function
with a non-literal format string.
* c-decl.c (grokdeclarator, start_struct, finish_struct): Likewise.
* c-typeck.c (build_component_ref, build_unary_op, lvalue_or_else,
pedantic_lvalue_warning, error_init, pedwarn_init, warning_init):
* cccp.c (check_macro_name, do_xifdef, vwarning_with_line):
* collect2.c (collect_wait): Likewise.
* dbxout.c (dbxout_type): Likewise.
* gcc.c (do_spec_1): Likewise.
* genemit.c (gen_insn, gen_expand): Likewise.
* genrecog.c (write_switch, write_subroutine): Likewise.
* mips-tfile.c (catch_signal, botch): Likewise.
* print-rtl.c (print_rtx): Likewise.
* toplev.c (default_print_error_function, report_error_function,
_fatal_insn): Likewise.
1999-11-25 Mark Mitchell <>
* tree.c (unsave_expr_now): Handle NULL_TREE as input.
Wed Nov 24 17:08:09 MET 1999 Jan Hubicka <>
* reg-stack.c (subst_stack_regs_pat): Swap operands in commutative
operations when needed.
* (fop_?f_comm): New.
(fop_?f_1): Do not accept commutative operands.
1999-11-25 Andreas Jaeger <>
* config/mips/ (casesi_internal): Add missing brace.
1999-11-25 Jason Merrill <>
* dwarf2out.c (pend_type, output_pending_types_for_scope): Lose.
(splice_child_die): Handle moving a child DIE from the declaration
DIE of a class to its specification.
(gen_struct_or_union_type_die): Use 'complete' consistently.
(gen_decl_die): Generate the virtual context DIE first.
Use decl_ultimate_origin instead of DECL_ABSTRACT_ORIGIN.
1999-11-24 Gavin Romig-Koch <>
* config/mips/ (call_value_multiple_interanal1): New.
1999-11-24 Jason Merrill <>
* dwarf2out.c (free_AT, free_die): New fns.
(remove_children): Call them.
(output_line_info): Disable removal of duplicate notes.
Generate minimal debug info for types with TYPE_DECL_SUPPRESS_INFO set.
* dwarf2out.c (gen_struct_or_union_type_die): TYPE_DECL_SUPPRESS_INFO
means pretend the type isn't defined.
Don't defer emitting types.
(gen_type_die_for_member): New fn.
(gen_decl_die): Call it.
(splice_child_die): New fn.
(gen_member_die): Call it rather than generate duplicate dies.
Defer emitting information for the abstract instance of an inline
until we either inline it or emit an out-of-line copy.
* dwarf2out.c (decl_ultimate_origin): Ignore DECL_ABSTRACT_ORIGIN
from output_inline_function if DECL_ABSTRACT is also set.
(block_ultimate_origin): Likewise.
(gen_abstract_function): New fn.
(gen_decl_die, gen_inlined_subroutine_die): Call it.
(gen_subprogram_die): An abstract instance is not a declaration
just because it doesn't match current_function_decl. Don't abort
because DECL_DEFER_OUTPUT isn't set. Do abort if a declaration
has an abstract origin.
* toplev.c (rest_of_compilation): Don't emit dwarf2 info for the
abstract instance here.
Wed Nov 24 18:39:18 1999 Andrew Haley <>
* config/sh/sh.h (SECONDARY_OUTPUT_RELOAD_CLASS): Add the case
where we need to reload fpul from a system register.
1999-11-24 Andreas Jaeger <>
* config/mips/linux.h (CPP_PREDEFINES): Added.
(LINK_SPEC): Remove -Y since this is only needed on sparc.
1999-11-24 Andreas Jaeger <>
* config/mips/linux.h (TARGET_VERSION): Added.
Wed Nov 24 14:12:15 MET 1999 Jan Hubicka <>
* local-alloc.c (qty): New structure and static variable.
(qty_phys_reg): Remove, all references changed to qty.
(qty_n_refs): Likewise.
(qty_min_class): Likewise.
(qty_birth): Likewise.
(qty_death): Likewise.
(qty_size): Likewise.
(qty_mode): Likewise.
(qty_n_calls_crossed): Likewise.
(qty_alternate_class): Likewise.
(qty_changes_size): Likewise.
(qty_first_reg): Likewise.
(alloc_qty): Rename variable QTY to QTYNO.
(finf_free_reg): Likewise.
(local_alloc): Allocate qty, do not allocate the removed variables.
Wed Nov 24 17:26:05 1999 Geoffrey Keating <>
* config/mips/mips.h (ASM_SPEC): Don't pass -G to the assembler
when -membedded-pic is passed.
* config/mips/ (casesi): Handle 64-bit case too.
(casesi_internal_di): New insn.
* config/mips/mips.c (embedded_pic_offset): Always make the
embedded-pic subtractions relative to the name of the current
function by use of the magic string "..CURRENT_FUNCTION".
* config/mips/mips.h (ASM_OUTPUT_LABELREF): Make the magic happen.
1999-11-24 Geoffrey Keating <>
* config/mips/ (div_trap_normal): Don't ask for the REGNO
of (const_int 0), when what we really care about is
whether it's a zero constant anyway.
(div_trap_mips16): Likewise.
1999-11-23 Mark Mitchell <>
* loop.c (loop_optimize): Always find_loop_tree_blocks and
unroll_block_trees when generating debuggable code.
* tree.h (unsave_expr_1): New function.
(lang_unsave): New variable.
(get_callee_fndecl): New function.
* tree.c (unsave_expr_now_r): New function.
(lang_unsave): Define.
(unsave_expr_1): Likewise.
(unsave_expr_now_r): Split out from unsave_expr_now.
(unsave_expr_now): Call lang_unsave if it is non-NULL. Otherwise,
call unsave_expr_now_r.
(get_callee_fndecl): Define.
* (gencheck): Don't depend on lang_tree_files.
(gencheck.o): Do depend on lang_tree_files.
* integrate.h (copy_decl_for_inlining): New declaration.
* integrate.c (copy_and_set_decl_abstract_origin): Remove.
(copy_decl_for_inlining): New function.
(integrate_parm_decls): Use it.
(integrate_decl_tree): Likewise.
1999-11-23 Gavin Romig-Koch <>
* config/mips/mips.h (ISA_HAS_FP4,ISA_HAS_CONDMOVE,ISA_HAS_8CC): Split
the second two from the first.
* config/mips/ (movcc,reload_incc,reload_outcc,
conditional move): Use ISA_HAS_CONDMOVE or ISA_HAS_8CC rather than
* config/mips/mips.c (mips_move_1word,gen_conditional_branch,
override_options): Use ISA_HAS_CONDMOVE or ISA_HAS_8CC rather than
Tue Nov 23 11:15:04 1999 Jeffrey A Law (
* (call_internal_symref, call_value_internal_symref): No mode
needed on the address operand.
* pa.c (call_operand_address): Check for the correct mode.
1999-11-23 Bernd Schmidt <>
* loop.c: Include "basic-block.h".
(try_copy_prop, replace_loop_reg): New functions.
(load_mems): Detect registers that just hold copies of the hoisted
mem, and call try_copy_prop to eliminate them.
* (loop.o): Update dependencies.
Tue Nov 23 01:03:29 1999 Hans-Peter Nilsson <>
* (gencheck.o): Depend on gencheck.h.
(insn-emit.o): Depend on flags.h, hard-reg-set.h and resource.h.
(insn-peep.o): Depend on except.h and function.h.
(insn-attrtab.o): Depend on RECOG_H.
(insn-output.o): Depend on toplev.h and flags.h.
(gengenrtl.o): Depend on real.h.
(gen-protos.o): Depend on cpplib.h and cpphash.h.
Unify all dependencies to be on RECOG_H rather than recog.h.
Tue Nov 23 00:57:10 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
From Casper H.S. Dik on comp.unix.solaris, 23 Oct 1998:
* Try building a bi-arch 32/64-bit compiler on
sparc-*-solaris2.7 and higher.
* configure: Rebuild.
Mon Nov 22 23:09:44 1999 David O'Brien <>
* config/freebsd.h: New, FreeBSD architecture independent file.
* config/i386/freebsd-elf.h: removed FreeBSD architecturally
independent pieces.
* config/i386/freebsd.h: include i386/perform.h via tm.h rather than
directly by i386/freebsd.h.
* (*-*-freebsdelf): Include new FreeBSD architecturally
independent configuration file.
(*-*-freebsdelf): Include i386/perform.h via tm.h rather than
directly by i386/freebsd.h.
* configure: Rebuilt.
* xm-i386.h: Define `__i386__' if not defined, rather than `i386'
which is in the user's namespace.
* libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs.
`i386' which is not in our namespace.
Mon Nov 22 22:58:01 1999 "R. Kelley Cook" <>
* invoke.texi (ARM Options): Add in -mno-alignment-traps
1999-11-22 Jason Merrill <>
* dwarf2out.c (die_struct): Remove die_attr_last and die_child_last.
(add_dwarf_attr, add_child_die): Just push onto the front.
(reverse_die_lists): New fn.
(add_sibling_attributes): Use it.
(push_decl_scope): Reorganize.
(add_name_and_src_coords_attributes): Don't set file and line for
an artificial decl.
(gen_subprogram_die): An artificial function doesn't need to match
file and line.
(gen_compile_unit_die): Return the generated die. Only add
AT_comp_dir if the filename is relative.
(remove_AT): Simplify loop. Also free string values.
(output_die): A DIE ref can't be null.
(output_value_format, value_format): Take a dw_attr_ref.
(dwarf_last_decl, is_extern_subr_die, sibling_offset): Remove.
(AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
AT_addr, AT_lbl): New fns.
(various): Use them.
(various): Constify.
Mon Nov 22 23:53:50 1999 J"orn Rennecke <>
* combine.c (combine_simplify_rtx): When handling a SUBREG,
take SUBREG_WORD into account.
(if_then_else_cond): Likewise.
1999-11-22 Jason Merrill <>
* gmon.c, i386/gmon-sol2.c, sparc/gmon-sol2.c: Remove advertising
clause from BSD license, pursuant with
1999-11-22 Bernd Schmidt <>
* loop.c (load_mems): Reformat slightly.
* basic-block.h (regset_head): New typedef.
(INIT_REG_SET): New macro.
1999-11-22 Bruce Korb <
* fixinc/*-linux): disable script, run fixincl exe
(mips-dec-bsd*): non-functional code
(alpha*-*-linux-gnu*): redundant, duplicated by "*-*-linux-gnu*"
* fixinc/inclhack.def(AAB_fd_zero_glibc_*):
added three replacement fixes
(no_double_slash): removed comments that are not (any longer) pertinent
(bad_lval): this fix currently runs against many files.
The comment seems to indicate that we should select for files
containing 'pragma extern_prefix'.
* fixinc/fixinc.x86-linux-gnu: deleted
* fixinc/ regen
* fixinc/fixincl.x: regen
* fixinc/ regen
Fri Nov 12 14:08:40 1999 Andrew Haley <>
* emit-rtl.c (gen_sequence): Only return the pattern of an insn if
its code is INSN and it has no notes.
1999-11-22 Andrew Haley <>
* varasm.c (function_defined): Remove.
(make_function_rtl): Don't set function_defined.
(make_decl_rtl): Remove global register warning.
* regclass.c (no_global_reg_vars): New variable.
(globalize_reg): Warn if function has already been defined.
(regclass_init): Set no_global_reg_vars.
Mon Nov 22 14:42:22 MET 1999 Jan Hubicka <>
* regclass.c (reg_pref): New structure and static variable
(prefclass): Delete.
(altclass): Delete.
(all uses of prefclass and altclass): Use reg_pref instead.
1999-11-21 Nick Clifton <>
* invoke.texi (ARM Options): Replace -mshort-load-bytes with
(arm.h): Replace -mshort-load-bytes with -malignment-traps.
Sun Nov 21 17:11:13 1999 Geoffrey Keating <>
* varasm.c (output_constructor): Solve problem with long long
bitfields, even on BYTES_BIG_ENDIAN machines (testcase 991118-1).
Fri Nov 19 05:48:45 CET 1999 Jan Hubicka <>
* global.c (allocno): New structure and static variable.
(allocno_reg): Remove, all references replaced by allocno.
(allocno_size): Likewise.
(hard_reg_conflicts): Likewise.
(hard_reg_preferences): Likewise.
(hard_reg_copy_preferences): Likewise.
(hard_reg_full_preferences): Likewise.
(regs_someone_prefers): Likewise.
(allocno_calls_crossed): Likewise.
(allocno_n_refs): Likewise.
(allocno_live_length): Likewise.
(find_reg): Rename ALLOCNO to NUM.
* regclass.c (may_move_in_cost): Rename from may_move_cost, all
references updated.
(may_move_out_cost): New variable.
(init_reg_sets_1): Initialize may_move_out_cost.
(record_reg_classes): Use may_move_out_cost.
* regclass.c (dump_regclass): New function.
(regclass): New parameter DUMP, call DUMP_REGCLASS.
* toplev.c (rest_of_compilation): Open lreg dump file before regclass,
pass rtl_dump_file to regclass.
* rtl.h (regclass): Update prototype.
Fri Nov 19 06:32:19 CET 1999 Jan Hubicka <>
* (neg, not and abs patterns): Revmap to use
ix86_expand_unary_operator and ix86_unary_operator_ok.
(add?f and sub?f expanders): Force operand 1 to register.
* i386.c (ix86_expand_unary_operator): Rewrite.
(ix86_unary_operator_ok): Ensure that memory operands
match real opcode.
(ix86_binary_operator_ok): Do not allow operand 1 to
come into memory and operand 0 not.
(ix86_expand_binary_operator): Ensure that
src1 is not non-matching memory.
* (negs?2): Rewrite to expanders, new patterns and splitters
to support integer registers and memory.
(abss?2_integer): Likewise.
* i386.h (enum reg_class): Add FLOAT_INT_REGS.
(REG_CLASS_NAMES): Likewise.
* (pushsf): Do not preferre FLOAT_REGS over GENERAL_REGS.
(movsf): Likewise; unify 4th and 5th alternative.
(pushdf): Likewise.
(movdf_1): Likewise; rename to movdf_integer.
(pushxf): Likewise; rename to pushxf_integer; fix output template;
remove redundant splitter.
(movxf_1): Likewise; rename to movxf_integer; fix splitter's condition.
(movdf_nointeger): New.
(movxf_nointeger): New.
(pushxf_nointeger): New.
* (extend?f?f): Split to expander and pattern, refuse two
memory operands in patterns.
(fop*): Refuse two memory operands.
* (ashrsi3_31): Allow cltd when optimizing for size even
Fri Nov 19 10:41:15 GMT 1999 Nathan Sidwell <>
* extend.texi: Document C++ restricted pointers and references.
1999-11-19 Bernd Schmidt <>
* cse.c (addr_affects_sp): No longer conditional on AUTO_INC_DEC.
(invalidate_skipped_set): Call it unconditionally.
(cse_set_around_loop): Likewise.
Thu Nov 18 17:29:34 MST 1999 Diego Novillo <>
* rtl.texi (mem): Add documentation for alias-set argument
to RTX `mem'.
Fri Nov 18 13:39:22 CET 1999 Jan Hubicka <>
* i386.h (struct_processor_costs): New fields int_load, int_store,
fp_move, fp_load and fp_store
(REGISTER_MOVE_COST): Fix comment, calculate exactly the cost of
fp->int moves
(MEMORY_MOVE_COST): New macro.
* i386.c (386_cost): Define new fields.
(i486_cost): Likewise.
(pentium_cost): Likewise.
(pentiumpro_cost): Likewise.
(k6_cost): Likewise.
Fri Nov 19 11:11:55 1999 Greg McGary <>
Geoffrey Keating <>
* config/m68k/m68kelf.h: Suppress '/* within comment' warning.
* config/m68k/m68k.h (MASK_PCREL): Don't use same value as
* config/m68k/m68k.h (MASK_NO_STRICT_ALIGNMENT): New macro.
(TARGET_SWITCHES): Add "strict-align" and "no-strict-align".
* invoke.texi (M680x0 Options): Document -mstrict-align.
Thu Nov 18 11:10:03 1999 Jan Hubicka <>
Richard Henderson <>
* i386-protos.h (split_xf, ix86_split_movdi): Remove.
(ix86_split_long_move): Declare.
* i386.c (split_xf, ix86_split_movdi): Remove.
(ix86_split_to_parts, ix86_split_long_move): New.
* (dimode move splitters): Use ix86_split_long_move.
(dfmode move splitters): Likewise.
(xfmode move splitters): Likewise.
(movsf_1): Allow F->r.
(movdf_1, movxf_1): Allow F->ro.
1999-11-17 Mark Mitchell <>
* except.h (struct eh_entry): Add goto_entry_p.
(eh_region_from_symbol): Remove prototype.
* except.c (find_func_region_from_symbol): New function.
(emit_cleanup_handler): Likewise.
(eh_region_from_symbol): Make it static.
(add_new_handler): Verify the argument.
(find_func_region): Update comment.
(expand_eh_region_end): Expand handlers here, rater than waiting
until expand_leftover_cleanups or start_all_catch.
(expand_leftover_cleanups): Don't expand here.
(expand_start_all_catch): Or here.
(expand_rethrow): Check the return value from find_func_region.
* function.c (expand_function_end): Emit the catch_clauses.
1999-11-18 Gavin Romig-Koch <>
* integrate.c (expand_inline_function): Add necessary check for NULL.
1999-11-18 Nick Clifton <>
* toplev.c (main): Correctly detect an unrecognized option.
* cppinit.c (cpp_handle_option): Do not claim to have consumed
a -f option if it has not been recognized.
Thu Nov 18 00:59:11 1999 Michael Gschwind <>
* basic-block.h (update_life_extent): Remove trailing comma on
enumeration type list.
1999-11-18 Herman A.J. ten Brugge <>
* varasm.c (output_constructor) Solved problem with long long
bitfields. Corrected calculating this_time and shift. Also
corrected calculating mask when BITS_PER_UNIT == 32 (c4x).
Wed Nov 17 23:46:14 1999 Jeffrey A Law (
* flow.c (split_edge): Take looping structure into account when
determining where to put the new block note.
Wed Nov 17 20:42:43 1999 Jeff Holcomb <>
* (ggc-none.o): Provide host specific version if
Wed Nov 17 16:51:23 1999 Richard Henderson <>
* cse.c (delete_trivially_dead_insns): Identify no-op insns
containing subregs too.
Wed Nov 17 17:39:48 MST 1999 Diego Novillo <>
* invoke.texi: Add documentation for -muninit-const-in-rodata.
* config/mips/mips.h (MASK_UNINIT_CONST_IN_RODATA): Define.
(text_section): Add switches -munint-const-in-rodata and
(ASM_OUTPUT_ALIGNED_DECL_COMMON): Define. Check if uninitialized
const objects should be placed in read-only data. Otherwise declare
them in common.
Wed Nov 17 16:38:32 1999 Richard Henderson <>
* jump.c (jump_optimize_1): Revert last change.
Wed Nov 17 15:18:30 1999 Richard Henderson <>
* jump.c (jump_optimize_1): Don't try to duplicate the loop exit
test if optimizing for size.
1999-11-17 Mark Mitchell <>
* (toplev.o): Depend on except.h.
(dwarf2out.o,loop.o,flow.o,haifa-sched.o): Likewise.
Mon Nov 15 22:45:39 CET 1999 Jan Hubicka <>
* (divmodsi4): Rewrite to expander.
(*divmodsi4_nocltd): New.
(*divmodsi4_cltd): New.
(divmodsi4 splitter): Handle the case when input comes in edx.
(udivmodhi4): Do not use constraints in exander.
(ashrsi3_31): Conditionize by TARGET_USE_CLTD.
1999-11-17 Jason Merrill <>
* dwarf2out.c (push_decl_scope): Still use decl_scope_depth - 1
for the common case.
1999-11-16 Jakub Jelinek <>
* explow.c (hard_function_value): Add outgoing argument.
* expr.h (hard_function_value): Declare it.
* calls.c (expand_call, emit_library_call_value): Update callers.
* function.c (aggregate_value_p): Ditto.
(diddle_return_value): Must look at the outgoing registers
on archs with register windows.
Mon Nov 15 20:46:45 1999 Richard Henderson <>
* alpha.c (alpha_build_va_list): Use make_lang_type and
initialize TYPE_NAME for the va_list record.
* flow.c (calculate_global_regs_live): Zero bb->aux to begin.
* ggc-common.c (ggc_print_statistics): Cast size_t to unsigned long
for printing.
* ggc.h (struct ggc_statistics): Rearrange elements for better
packing on 64-bit hosts.
* lcm.c (compute_laterin): Store a size_t not an int in bb->aux.
(compute_nearerout): Likewise.
Tue Nov 16 14:37:52 1999 Geoffrey Keating <>
* config/rs6000/rs6000.c (first_reg_to_save): Save
PIC_OFFSET_TABLE_REGNUM when -fpic even though it is fixed.
1999-11-15 Jason Merrill <>
* dwarf2out.c (scope_die_for): Don't rely on the decl_scope_table
notion of nesting to find the DIE for a type or function.
DIEs can go in limbo even if we got a context_die.
(push_decl_scope): Our context doesn't need to be in decl_scope_table.
(gen_struct_or_union_type_die): Don't use TREE_PERMANENT to test
for local type.
(gen_decl_die): Ignore NAMESPACE_DECLs for now.
(gen_type_die): Writing out the context doesn't cause member class
template instantiations to be written out as well.
Mon Nov 15 15:33:18 1999 Richard Henderson <>
* rs6000.h (ASM_OUTPUT_DEF): New.
Based on proposed addition from David Edelsohn.
1999-11-15 Robert Lipe <>
Bruce Korb <>
* fixinc/inclhack.def
(AAB_svr4_replace_byteorder): added. Takes advantage of GCC features
(unixware7_byteorder_fix): added. Removes conflicts for new defs
in net/inet.h.
(svr5_mach_defines): added. Like svr4_mach_defines, with new syntax
(svr4_endian): enabled with SVR5
(svr4_mkdev): simplified syntax and enabled with SVR5
Sun Nov 14 18:49:37 1999 David O'Brien <>
* Handle libgcc2 threads support on FreeBSD platforms.
* configure: Rebuilt.
* config/t-freebsd-thread: New file.
Sun Nov 14 23:11:05 1999 Jeffrey A Law (
* i386.c (ix86_decompose_address): Verify the base is a REG
before trying to examine its register number.
* basic-block.h: Remove all #defines and prototypes related to
integer lists.
(free_bb_mem, compute_preds_succs): Remove prototype.
* rtl.h (free_bb_mem): Remove prototype.
* flow.c (alloc_int_list_node); Remove function.
(add_inst_list_node, free_int_list, add_pred_succ): Likewise.
(compute_preds_succs, free_bb_mem): Likewise.
* gcse.c (gcse_main): Do not call free_bb_mem anymore.
* toplev.c (rest_of_compilation): Likewise.
* haifa-sched.c (build_control_flow): Use flow generated edge
list to build the haifa specific edge list.
(find_rgns): Use new CFG data structures instead of pred/succ lists.
(schedule_insns): Do not build pred/succ lists anymore. Instead
build the edge table.
* basic-block.h (dump_bb_data): Remove declaration.
* flow.c (dump_bb_data): Remove function.
* sbitmap.c (sbitmap_intersect_of_predsucc): Delete function.
(sbitmap_union_of_predsucc): Likewise.
* gcse.c (delete_null_pointer_checks_1): Kill unused s_preds
argument. All callers changed.
(delete_null_pointer_checks_1): No longer need to compute the
pred/succ lists.
* gcse.c (pre_expr_reaches_here_p): Kill CHECK_PRE_COM argument.
All callers changed.
(pre_expr_reaches_here_p_work): Likewise.
(pre_edge_insert): No longer call pre_expr_reaches_here_p.
* lcm.c (compute_laterin): Fix initialization of LATER.
(compute_nearerout): Similarly for NEARER.
Sun Nov 14 12:41:57 1999 Bernd Schmidt <>
* cse.c (set_nonvarying_address_components): Delete unused function.
(refers_to_p): Likewise.
Fri Nov 12 20:53:22 1999 Jeffrey A Law (
* function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as
Sat Nov 13 16:20:09 1999 Michael Hayes <>
* defaults.h (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Wrap macro
definition in do while (0).
Fri Nov 12 16:26:25 1999 Jim Wilson <>
* stmt.c (pushcase, pushcase_range): Partially revert Oct 28 change.
Fri Nov 12 12:43:49 1999 Richard Henderson <>
* unroll.c (unroll_loop): Make temp an unsigned HOST_WIDE_INT.
Fri Nov 12 15:14:19 1999 Vladimir Makarov <>
* i960.h (CAN_DEBUG_WITHOUT_FP): Don't define it.
(FRAME_POINTER_REQUIRED): Don't worry about nonlocal goto.
* i960.c (i960_function_prologue): Don't allocate space for g8-g11
saved on the stack. Output more accurate stack frame statistics
into assembler file.
1999-11-12 11:47 -0800 Zack Weinberg <>
* genextract.c (record_insn_name): New function.
(get_insn_name): No longer a stub.
(main): Call record_insn_name for each insn. After each label
written, print the insn name in a comment.
Fri Nov 12 13:45:02 1999 Kaveh R. Ghazi <>
* output.h (const_section, init_section, fini_section): Add
* alpha/elf.h (const_section): Delete declaration.
* svr4.h (const_section): Likewise.
Fri Nov 12 08:54:22 1999 Mark Mitchell <>
* tree.h (SAVE_EXPR_PERSISTENT_P): New macro.
* tree.c (array_type_nelts): Don't handle SAVE_EXPRs specially.
(unsave_expr_now): Don't unsave SAVE_EXPR_PERSISTENT_P
* stor-layout.c (variable_size): Set SAVE_EXPR_PERSISTENT_P on
variable-sized array bounds.
Fri Nov 12 08:04:45 1999 Catherine Moore <>
Fri Nov 12 13:31:54 1999 Bernd Schmidt <>
* config/arm/arm.h (LEGITIMIZE_RELOAD_ADDRESS): Treat QImode
addresses the same way GO_IF_LEGITIMATE_INDEX does.
Fri Nov 12 12:36:04 1999 Bernd Schmidt <>
* cse.c (hash_arg_in_struct): Delete.
(struct table_elt): Delete elt in_struct.
(struct set): Delete elt src_in_struct.
(merge_equiv_classes): Don't set either hash_arg_in_struct or
the corresponding in_struct elts.
(canon_hash): Likewise.
(safe_hash): Likewise.
(find_best_addr): Likewise.
(record_jump_cond): Likewise.
(cse_insn): Likewise.
Thu Nov 11 19:45:24 1999 Jim Wilson <>
* loop.c (invariant_p, case MEM): Put MEM_VOLATILE_P check back.
* dbxout.c (dbxout_type, case INTEGER_TYPE): Handle too large
unsigned types.
Thu Nov 11 18:54:24 1999 Jeffrey A Law (
* function.c (diddle_return_value): Put back check that the DECL_RTL
for the function is a register.
* function.c (diddle_return_value): Use hard_function_value to
get an rtx suitable for use in the USE/CLOBBER insn.
* global.c (global_conflicts): Update comments.
(record_conflicts): No need to record conflicts between pseudos here.
1999-11-11 Bruce Korb <>
* fixinc/fixincl.c: Added verbose levels for status messages
Thu Nov 11 13:23:04 1999 Bernd Schmidt <>
* jump.c (jump_optimize_1): Avoid passing an rtx that is not an
operand as argument to expand_and or expand_binop.
Thu Nov 11 02:21:16 1999 Rodney Brown <>
* xcoffout.c (xcoffout_source_file): Change ggc_add_root to
Wed Nov 10 21:24:19 1999 Jason Eckhardt <>
* config/pa/pa.h (MASK_RETURN_ADDR): Change 0xfffffffc to -4.
Wed Nov 10 15:56:16 1999 Jeffrey A Law (
* flow.c (compute_flow_dominators): Initially put all blocks on
the worklist.
* lcm.c (compute_antinout_edge, compute_available): Similarly.
* gcse.c (compute_cprop_avinout): Remove.
(compute_cprop_data): Use compute_available.
(delete_null_pointer_checks_1): Use compute_available.
* basic-block.h (compute_available): Returns a void now.
* gcse.c (one_classic_gcse_pass): Do not expect compute_available
to return a value anymore.
* lcm.c (compute_available, compute_antinout_edge): Revamp to use
worklists. Fix boundary cases. Compute maximal solutions.
(compute_laterin, compute_nearerout): Similarly.
* dwarf2out.c (add_AT_location_description): Allow
(mem (plus (pseudo) (...)) too.
Wed Nov 10 10:52:42 1999 Tom Tromey <>
* gcc.c (do_spec_1): Support text between `%u' and `%O'.
Wed Nov 10 12:43:21 1999 Philippe De Muyter <>
Kaveh R. Ghazi <>
* cppinit.c: Test `GCC_VERSION', not `HAVE_GCC_VERSION'.
* gansidecl.h: Likewise.
* rtl.c: Likewise.
* rtl.h: Likewise.
* toplev.h: Likewise.
* tree.c: Likewise.
* tree.h: Likewise.
* varray.c: Likewise.
* varray.h: Likewise.
Wed Nov 10 10:57:22 1999 Clinton Popetz <>
* gcov.c (struct arcdata): Add hits and total, remove prob.
(output_branch_counts): New.
(process_args): Set output_branch_counts if -c.
(calculate_branch_probs): Store hits and total instead of
(output_data): Emit counts if output_branch_counts is true.
* gcov.texi (Invoking Gcov): Document -c switch..
Wed Nov 10 01:10:41 1999 Philippe De Muyter <>
* genoutput.c (output_insn_data): Cast `INSN_OUTPUT_FORMAT_MULTI' and
Wed Nov 10 00:51:41 1999 Hans-Peter Nilsson <>
* invoke.texi (C Dialect Options): Add missing builtins from
c-common.c to list.
* extend.texi (Other Builtins): Copy to this list.
Wed Nov 10 04:58:09 1999 Alexandre Oliva <>
* (recog.o): Use BASIC_BLOCK_H macro.
(print-rtl.o, $(HOST_PREFIX_1)print-rtl.o): Likewise. Remove
redundant bitmap.h.
Wed Nov 10 00:02:53 1999 Jeffrey A Law (
* flow.c (compute_flow_dominators): No longer treat basic block 0
or (n_basic_blocks - 1) specially. Clear the AUX field before
starting computation of doms/pdoms. Fix initial state for pdoms.
Wed Nov 10 03:58:08 1999 Alexandre Oliva <>
* ($(HOST_PREFIX_1)rtl.o): Update dependencies to
match rtl.o's: added ggc.h and toplev.h
($(HOST_PREFIX_1)print-rtl.o): Likewise: added system.h.
($(HOST_PREFIX_1)rtlanal.o): Likewise: added system.h.
($(HOST_PREFIX_1)obstack.o): Likewise: added $(CONFIG_H).
Tue Nov 9 10:30:08 1999 Tom Tromey <>
* config/i386/xm-djgpp.h (HAVE_DOS_BASED_FILE_SYSTEM): Renamed
* gcc.c (find_a_file): Use HAVE_DOS_BASED_FILE_SYSTEM, not
(main): Likewise.
(split_directories): Only special-case DOS file names if
instead of explicit tests. Conditionalize on !VMS.
(make_relative_prefix): Use IS_DIR_SEPARATOR instead of explicit
tests. Conditionalize on !VMS.
(process_command): Only use make_relative_prefix if !VMS.
(free_split_directories): Conditionalize on !VMS.
(DIR_UP): Conditionalize on !VMS.
Wed Jun 9 16:57:11 1999 Mumit Khan <>
* gcc.c (STANDARD_BINDIR_PREFIX): Provide default.
Fri Feb 5 14:22:01 1999 Mumit Khan <>
* gcc.c (make_relative_prefix): Handle the HAVE_EXECUTABLE_SUFFIX
Mon Nov 8 14:16:57 1999 Michael Meissner <>
* invoke.texi (Environment Variables): Document relative path
* gcc.c (DIR_UP): If not defined, define as "..".
(standard_bindir_prefix): New static, holds target location to
install binaries.
(split_directories): New function to split a filename into
component directories.
(free_split_directories): New function, release memory allocated
by split_directories.
(make_relative_prefix): New function, make a relative pathname if
the compiler is not in the expected location.
(process_command): If GCC_EXEC_PREFIX was not specified, see if we
can figure out an appropriate prefix from argv[0].
* (DRIVER_DEFINES): Use unlibsubdir in definition of
Wed Nov 10 11:47:54 1999 Michael Hayes <>
* config/c4x/c4x-protos.h: New file. Prototypes for functions defined
in c4x.c.
* config/c4x/c4x.h: Moved prototypes to c4x.h.
* config/c4x/c4x.c (c4x_preferred_reload_class, c4x_limit_reload_class,
c4x_secondary_memory_needed) Delete.
(fp_zero_operand): Add mode argument.
Thu Nov 4 15:52:35 1999 Andrew Haley <>
* reload1.c (reload_reg_free_for_value_p): Don't use a register
that is in reload_reg_used.
Tue Nov 9 16:43:00 1999 Nick Clifton <>
* config/arm/arm-protos.h: New file: Prototypes for functions
defined in arm.c and pe.c.
* config/arm/arm.h: Fix compile time warnings.
* config/arm/arm.c: Fix compile time warnings.
* config/arm/pe.h: Fix compile time warnings.
* config/arm/aout.h: Fix compile time warnings.
Tue Nov 9 14:55:44 1999 Nick Clifton <>
* config/m32r/m32r-protos.h: New file: Prototypes for functions
defined in m32r.c
* config/m32r/m32r.h: Move prototypes to m32r-protos.h
Add support for subtargets.
Add prototypes for new predicates.
Add scheduling macros.
* config/m32r/m32r.c: Fix compile time warnings.
(int8_operand): New predicate function.
(reg_or_cmp_int16_operand): New predicate function.
(extend_operand): New predicate function.
(m32r_adjust_code): New scheduling function.
(m32r_adjust_priority): New scheduling function.
(m32r_sched_init): New scheduling function.
(m32r_sched_reorder): New scheduling function.
(m32r_sched_variable_issue): New scheduling function.
(direct_return): New codegen function.
(m32r_not_same_reg): New rtl testsing function.
* config/m32r/ Fix compile time warnings.
Add support for pre decrement and post increment memory
Add S<cc> patterns.
Add fabs patterns.
Mon Nov 8 22:20:13 1999 J"orn Rennecke <>
* global.c (EXECUTE_IF_CONFLICT): Don't define.
(prune_preferences): Use EXECUTE_IF_SET_IN_ALLOCNO_SET instead.
(find_reg): Likewise.
Mon Nov 8 13:16:46 1999 Jason Eckhardt <>
* config/pa/ (fmpynfadd,{sgl,dbl} insns): Use %fr0 rather than 0
to avoid assembler errors.
Mon Nov 8 15:38:41 1999 Nick Clifton <>
* config/v850/v850-protos.h: New file: Prototypes for functions
defined in v850.c
* config/v850/v850.h: Move prototypes to v850-protos.h
* config/v850/v850.c: Move prototypes to v850-protos.h
* config/v850/ Fix compile time warnings.
* config/fr30/fr30-protos.h: New file: Prototypes for functions
defined in fr30.c
* config/fr30/fr30.h: Move prototypes to fr30-protos.h
* config/fr30/fr30.c: Fix compile time warnings.
* config/fr30/ Fix compile time warnings.
Mon Nov 8 07:25:37 1999 Mark Mitchell <>
* tree.h (get_containing_scope): Declare it.
* tree.c (get_containing_scope): New fucntion.
(decl_function_context): Use it.
* toplev.c (rest_of_compilation): Use get_containing_scope.
aMon Nov 8 03:03:07 1999 Alexandre Oliva <>
* (rtl.o): Depend on toplev.h.
Sun Nov 7 20:55:14 1999 Mark Mitchell <>
* cse.c (delete_trivially_dead_insns): Replace alloca with
* except.c (update_rethrow_references): Likewise.
(init_eh_nesting_info): Likewise.
* function.c (identify_blocks): Likewise.
* gcse.c (dump_hash_table): Likewise.
* graph.c (print_rtl_graph_with_bb): Likewise.
* loop.c (combine_movables): Likewise.
(move_movables): Likewise.
(count_loop_regs_set): Likewise.
(strength_reduce): Likewise.
* profile.c (compute_branch_probabilities): New function, split
out from ...
(branch_prob): Here. Replace alloca with xmalloc/xcalloc.
* regclass.c (regclass): Likewise.
* regmove.c (regmove_optimize): Likewise.
* toplev.c (compile_file): Likewise.
(main): Don't mess with the stack rlimit.
Sun Nov 7 19:41:17 1999 Catherine Moore <>
* config/elfos.h (ASM_DECLARE_FUNCTION_NAME): Conditionally define.
(ASM_DECLARE_FUNCTION_SIZE): Conditionally define.
Sun Nov 7 10:23:28 1999 Mark P. Mitchell <>
* integrate.c (save_for_inline_nocopy): Clear in_nonparm_insns.
Sun Nov 7 02:58:48 1999 Jeffrey A Law (
* global.c (EXECUTE_IF_CONFLICT): Undo Robert's change.
(EXECUTE_IF_SET_IN_ALLOCNO_SET): Put curleys around CODE in
macro expansion.
Sat Nov 6 23:48:30 1999 Robert Lipe (
* global.c (EXECUTE_IF_CONFLICT): Correct quoting typo.
Sat Nov 6 17:34:39 1999 Jeffrey A Law (
* gcse.c (post_dominators): Kill.
(alloc_code_hoist_mem, free_code_hoist_mem); Kill post_dominators.
(compute_code_hoist_data): Use compute_flow_dominators. Do not
pass in a pdom array since we do not need pdoms.
* haifa-sched.c (schedule_insns): Similarly.
* flow.c (compute_dominators): Remove dead function.
(compute_flow_dominators): Do not compute doms or pdoms if the
caller does not request them. Split up loop to build doms and
pdoms. Use a worklist to compute doms and pdoms.
* basic-block.h (compute_dominators): Remove prototype.
Sat Nov 6 11:38:39 1999 Richard Henderson <>
* haifa-sched.c (struct haifa_insn_data, h_i_d): New.
(insn_luid, insn_priority, insn_costs, insn_units): Remove.
(insn_reg_weight, insn_depend, insn_dep_count): Remove.
(insn_blockage, insn_ref_count, line_note, insn_tick): Remove.
(cant_move, fed_by_spec_load, is_load_insn): Remove.
(schedule_region): Remove unused variable.
(schedule_insns): Allocate h_i_d, and not all the separate arrays.
Sat Nov 6 10:00:34 1999 Mark Mitchell <>
* local-alloc.c (local_alloc): Use xmalloc/xcalloc, not alloca.
(update_equiv_regs): Likewise.
(block_alloc): Likewise.
* reg-stack.c (reg_to_stack): Likewise.
(convert_regs_2): Likewise.
* reload1.c (reload_as_needed): Likewise.
Sat Nov 6 09:57:59 1999 Mark Mitchell <>
* (dbxout.o): Depend on ggc.h.
(dwarf2out.o): Likewise.
(xcoffout.o): Likewise.
* dbxout.c: Include ggc.h.
(dbxout_init): Register lastfile as a root.
* dwarf2out.c: Include ggc.h.
(dwarf2out_line): Register lastfile as a root.
* xcoffout.c: Include ggc.h.
(xcoffout_source_line): Register xcoff_lastfile as a root.
Sat Nov 6 09:52:09 1999 Richard Henderson <>
* (movdf_1, movxf_1): Earlyclobber general regs destination.
Sat Nov 6 07:48:59 1999 Catherine Moore <>
* config/svr4.h (ASM_DECLARE_FUNCTION): Check if already
Fri Nov 5 18:33:39 1999 J"orn Rennecke <>
* global.c (EXECUTE_IF_SET_IN_ALLOCNO_SET): New macro.
(ALLOCNO_LIVE_P): Avoid signed division.
(prune_preferences, find_reg): Use EXECUTE_IF_CONFLICT.
(record_one_conflict): Use EXECUTE_IF_SET_IN_ALLOCNO_SET.
Fri Nov 5 12:04:02 1999 Richard Henderson <>
* haifa-sched.c (schedule_block): Don't crash if there's no
next insn for an interblock movement.
(add_branch_dependences): Don't allow clobber insns to move either.
Fri Nov 5 10:18:11 1999 Richard Henderson <>
* i386.c (split_xf): New.
* i386-protos.h: Declare it.
* (movxf_1): Add general regs alternatives.
(movxf_1+1): New splitter for same.
Fri Nov 5 12:05:52 1999 Nick Clifton <>
* function.c (purge_addressof_1): Add missing return values.
Fri Nov 5 10:07:25 1999 Nick Clifton <>
* function.c (is_addressof): New function. Returns true if
the given piece of RTL is an ADDRESSOF.
(purge_addressof_1): Make boolean. Return false if the
ADDRESSOFs could not be purged.
(purge_addressof): If ADDRESSOFs could not be purged from the
notes attached to an insn, remove the offending note(s),
unless they are attached to a libcall.
1999-11-05 Andreas Jaeger <>
* genoutput.c (null_operand =): Initialize all fields.
* errors.h: Add extern to prototypes.
Fri Nov 5 01:44:09 1999 Jeffrey A Law (
* (m68k-next-nextstep4): Handle Openstep 4.2.
* configure: Rebuilt.
Fri Nov 5 01:24:37 1999 J"orn Rennecke <>
* global.c (CONFLICTP, SET_CONFLICT): Avoid signed division.
(mirror_conflicts): New function.
(global_alloc): Call it.
(expand_preferences): Remove redundant CONFLICTP test.
(find_reg, dump_conflicts): Likewise.
(prune_preferences): Process conflicts one word at a time.
Fri Nov 5 01:05:21 1999 Richard Henderson <>
* global.c (build_insn_chain): Use EXECUTE_IF_SET_IN_BITMAP
instead of an explicit loop.
Thu Nov 4 23:07:14 1999 Jim Wilson <>
* cse.c (cse_insn): Revert Oct 31 change. When computing src_elt,
if REG_RETVAL check succeeds, then put classp in src_elt.
Thu Nov 4 23:48:14 1999 Jeffrey A Law (
* function.c (pad_to_arg_alignment): Only update argument_pad
if the argument's alignment is greater than STACK_BOUNDARY.
Thu Nov 4 16:44:53 1999 Richard Henderson <>
* bitmap.h (BITMAP_XFREE): New.
* flow.c (life_analysis): Use it.
(life_analysis_1): Free blocks.
* combine.c (undo_commit): New.
(try_combine): Use it. Don't zap undobuf.undos.
(combine_instructions): Don't zap undobuf.undos; free the
undobuf.frees list.
* local-alloc.c (local_alloc): Free qty_phys_num_sugg.
* stmt.c (cost_table_): New.
(estimate_case_costs): Use it instead of xmalloc.
* toplev.c (compile_file): Reuse dumpname memory instead
of strdup'ing it.
Thu Nov 4 16:36:44 1999 Richard Henderson <>
* reg-stack.c (convert_regs_1): Initialize target_stack->top
after verifying an EH edge.
* haifa-sched.c (init_rgn_data_dependences): Correctly
size bb_pending_lists_length when zeroing.
Thu Nov 4 16:36:36 1999 Richard Henderson <>
* function.c (diddle_return_value): New.
(expand_function_end): Use it.
* stmt.c (expand_null_return): Likewise.
(expand_value_return): Likewise.
* reg-stack.c (subst_stack_regs_pat): Handle clobbers at top-level.
* reload1.c (reload): Don't remove return value clobbers.
Thu Nov 4 13:33:46 1999 Richard Henderson <>
* rtl.c (read_rtx): Use fatal_with_file_and_line not fatal.
Thu Nov 4 12:49:52 1999 Richard Henderson <>
* cse.c (cse_main): Use xmalloc, not alloca.
(cse_basic_block): Likewise.
* local-alloc.c (local_alloc): Likewise.
Thu Nov 4 14:22:12 1999 David Billinghurst <>
Alexandre Oliva <>
* rtl.c: Include toplev.h.
(fatal): Remove declaration.
Thu Nov 4 06:39:47 1999 Jeffrey A Law (
* haifa-sched.c (schedule_block): Fix thinko.
1999-11-03 James McKelvey <>
* fixinc/fixincl.c(create_file): Allow for systems that do not have
S_IR* defined values
1999-11-03 Philippe De Muyter <>
* fixlib.c (load_file_data): Do not call `realloc' with a NULL pointer;
call `malloc' instead.
Wed Nov 3 23:05:14 1999 Mark Mitchell <>
* flags.h (flag_renumber_insns): Declare.
* emit-rtl.c (renumber_insns): Check flag_renumber_insns. Print
renumbering table.
* rtl.h (renumber_insns): Change prototype.
* toplev.c (flag_renumber_insns): Define.
(rest_of_compilation): Pass rtl_dump_file to flag_renumber_insns.
Wed Nov 3 15:11:27 1999 David S. Miller <>
* config/sparc/ Remove insn type fpsqrt, add fpsqrts
and fpsqrtd. Use them and create fdiv function unit to more
accurately represent fpu sqrt pipeline semantics on UltraSPARC.
* config/sparc/sparc.c: Account for fpsqrt{s,d} changes.
Wed Nov 3 15:11:27 1999 Matteo Frigo <>
* config/sparc/ Adjust FADD/FMUL result latencies to
3 on UltraSPARC.
* config/sparc/sparc.c (ultra_schedule_insn): Insert launched
insn into ready list, do not use just a raw swap.
Wed Nov 3 14:51:59 1999 Mark P. Mitchell <>
* rtl.h (renumber_insns): New function.
(remove_unnecessary_notes): Likewise.
* emit-rtl.c (renumber_insns): Define.
(remove_unnecessary_notes): Likewise.
* toplev.c (rest_of_compilation): Remove dead code.
Use renumber_insns and remove_unnecessary_notes.
* gcse.c (struct null_pointer_info): New type.
(get_bitmap_width): New function.
(current_block): Remove.
(nonnull_local): Likewise.
(nonnull_killed): Likewise.
(invalidate_nonnull_info): Take a null_pointer_info as input.
(delete_null_pointer_checks_1): New function.
(delete_null_pointer_checks): Use it.
* haifa-sched.c (find_rgns): Replace uses of alloca with xmalloc.
(split_edges): Likewise.
(schedule_block): Likewise.
(compute_block_backward_dependencies): Likewise.
(schedule_region): Likewise.
(schedule_insns): Likewise.
Wed Nov 3 15:40:23 1999 Catherine Moore <>
* defaults.h (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Provide default.
* emit-rtl.c (gen_label_rtx): Support LABEL_ALTERNATE_NAME.
* final.c (final_scan_insn): Emit LABEL_ALTERNATE_NAME.
* ggc-common.c (ggc_mark_rtx_children): Mark LABEL_ALTERNATE_NAME.
* jump.c (delete_unreferenced_labels): Don't delete if
* print-rtl.c (print_rtx): Dump alternate name.
* rtl.def (CODE_LABEL): Change format to "iuuis00s".
* rtl.h (LABEL_ALTERNATE_NAME): Define.
* rtl.texi (LABEL_ALTERNATE_NAME): Document.
Wed Nov 3 15:39:19 1999 Kaveh R. Ghazi <>
* fix-header.c (recognized_extern, recognized_function): Constify
a char*.
* lcm.c (compute_laterin): Remove unused variable `temp_bitmap'.
(pre_edge_lcm): Mark parameter `file' with ATTRIBUTE_UNUSED.
(compute_available): Remove unused variable `last'.
(compute_nearerout): Remove unused variable `temp_bitmap'.
(pre_edge_rev_lcm): Mark parameter `file' with ATTRIBUTE_UNUSED.
Remove unused variable `x'.
* scan.h (recognized_function, recognized_extern): Constify a
* simplify-rtx.c (simplify_rtx): Remove unused variable `new'.
Wed Nov 3 10:40:53 1999 Franz Sirl <>
* varasm.c (decode_rtx_const): Use XSTR to access the string
Wed Nov 3 10:10:58 1999 Richard Henderson <>
* c-decl.c (duplicate_decls): Copy DECL_MODE too.
Wed Nov 3 12:12:59 1999 Bernd Schmidt <>
* reload1.c (eliminate_regs_in_insn): If copying insn, also copy notes.
Wed Nov 3 03:26:28 1999 Jeffrey A Law (
* pa.c (ireg_operand): New function.
* pa.h (PREDICATE_CODES): Handle ireg_operand.
* (parallel_addb, parallel_movb): Use ireg_operand.
Fix out of date comment.
* (negdi2): Turn into expander + anonymous pattern.
* reload.c (find_reloads): Fix typos in recent change.
* dwarf2out.c: Do not include ctype.h.
Tue Nov 2 21:53:44 1999 Richard Kenner <>
* regclass.c (record_reg_classes): Always use may_move_cost when
seeing how operand fits with various register classes.
Tue Nov 2 15:38:17 1999 Richard Henderson <>
* resource.c: Revert Oct 26 20:42 and Oct 27 00:56 changes.
* toplev.c: Revert Nov 1 13:22 change.
Tue Nov 2 14:21:37 1999 Jason Eckhardt <>
* config/pa/ (height reduction patterns): Add checks for
overlapping operands to avoid semantic-destroying splits for
height reduction patterns.
Tue Nov 2 15:27:31 1999 Alexandre Oliva <>
* (m68k-hp-hpux*, xm_alloca.h): The underscore should
have been an hyphen, fixed.
* configure: Rebuilt.
Tue Nov 2 17:04:36 1999 Nick Clifton <>
* config/arm/tpe.h: Add prototypes for exported functions.
* config/arm/pe.c: Fix compile time warnings.
* config/arm/semi.h: Fix compile time warnings.
* config/arm/arm.c: Fix compile time warnings.
* config/arm/arm.h: Fix compile time warnings.
* config/arm/ Fix compile time warnings.
* config/arm/thumb.c: Fix compile time warnings.
* config/arm/thumb.h: Fix compile time warnings.
* config/arm/ Fix compile time warnings.
Tue Nov 2 04:10:24 1999 Jan Hubicka <>
* jump.c (jump_optimize_1): Swap the incscc and the conditional mode
detection code
* unroll.c (unroll_loop): Remove LOOP notes when loop is
completely unrolled.
Tue Nov 2 16:57:22 1999 Bernd Schmidt <>
* cse.c (simplify_plus_minus, check_fold_const): Delete declarations.
Tue Nov 2 09:43:00 1999 Catherine Moore <>
* (genattrtab): Don't use (HOST_RTLANAL).
* rtl.h (rtx_equal_p): Move prototype.
* rtl.c (rtx_equal_function_value_matters): Move from
(rtx_equal_p): Likewise.
* rtlanal.c (rtx_equal_function_value_matters): Delete.
(rtx_equal_p): Likewise.
Mon Nov 1 23:21:17 1999 Jason Merrill <>
* libgcc2.c (__do_global_dtors): Only do EH frame stuff if
Mon Nov 1 23:37:38 1999 Jeffrey A Law (
* gcc.1 (PA options): Remove obsolete -mshared-libs options.
* pa.h (ADDR_VEC_ALIGN): Define.
* jump.c (jump_optimize_1): Also move LOOP_VTOP and LOOP_CONT
notes when presented with "if (foo) break; end_of_loop" and
the break sequence gets moved out of the loop.
* unroll.c (unroll_loop): Allocate memory for MAP using xcalloc.
Remove explicit zero initializations of entries within MAP.
Mon Nov 1 18:09:14 1999 Richard Henderson <>
* reg-stack.c (convert_regs_1): Handle EH edges specially.
Mon Nov 1 15:41:01 1999 Mark P. Mitchell <>
* bitmap.h (BITMAP_XMALLOC): New macro.
* flow.c (CLEAN_ALLOCA): Remove.
(delete_unreachable_blocks): Use xmalloc/xcalloc instead of alloca.
(life_analysis): Likewise.
(update_life_info): Don't use CLEAN_ALLOCA.
(life_analysis_1): Use xmalloc/xcalloc instead of alloca.
(calculate_global_regs_live): Likewise.
(print_rtl_with_bb): Likewise.
(verify_flow_info): Likewise.
* global.c (global_alloc): Likewise.
(global_conflicts): Likewise.
* integrate.c (save_for_inline_nocopy): Likewise.
(expand_inline_function): Likewise.
* jump.c (jump_optimize_1): Likewise.
(duplicate_loop_exit_test): Likewise.
(thread_jumps): Likewise.
* loop.c (loop_optimize): Likewise.
(combine_givs): Likewise.
(recombine_givs): Likewise.
* reorg.c (dbr_schedule): Likewise.
* unroll.c (unroll_loop): Likewise.
* combine.c (combine_instructions): Use xmalloc instead of alloca.
Mon Nov 1 13:22:30 1999 Richard Henderson <>
* toplev.c (rest_of_compilation): Don't optimize the CFG
when rebuilding, just before dbr.
Mon Nov 1 14:35:50 1999 Kaveh R. Ghazi <>
* output.h (assemble_end_function, assemble_destructor,
assemble_constructor, assemble_gc_entry, assemble_global,
assemble_label, output_constant_pool) Constify a char*.
* varasm.c (assemble_destructor, assemble_constructor,
assemble_gc_entry, assemble_end_function, assemble_global,
assemble_label, output_constant_pool): Likewise.
Mon Nov 1 14:22:51 1999 Nick Clifton <>
* config/arm/thumb.c (thumb_expand_prologue): Add comments
explaining what is goin on in this function.
Mon Nov 1 08:03:15 1999 Richard Kenner <>
* regclass.c (record_reg_classes): In matching case, recompute
costs since the direction of movement is different.
Sun Oct 31 21:59:34 MST 1999 Diego Novillo <>
* resource.c (mark_target_live_regs): For unconditional branches,
the resources found at the branch target should be added to the
resources found so far, not intersected.
Sun Oct 31 15:48:49 1999 Philippe De Muyter <>
* fixinc/fixtests.c, fixinc/fixfixes.c : Keep `#' in first column for
old cpp's.
* fixinc/fixincl.c (fcntl.h) : Do not include this file twice.
(sys/mman.h): Include this file only if #HAVE_MMAP.
(run_compiles): Initialize `esac_fmt' with one old KR string, not
with automatically concatenated ANSI strings.
Sun Oct 31 23:57:07 1999 Mark Mitchell <>
* ggc-page.c (struct page_entry): Remove save_num_free_objects.
(DIV_ROUND_UP): Robustify.
(ggc_recalculate_in_use_p): New function.
(release_pages): Don't inline it.
(ggc_alloc_obj): Don't refuse to allocate objects on pages for
outer contexts.
(ggc_pop_context): Use ggc_recalculate_in_use_p.
(clear_marks): Always save in_use_p.
(sweep_pages): Use ggc_recalculate_in_use_p.
(ggc_page_print_statistics): Avoid signed/unsigned comparisons.
Release pages before counting statistics.
Sun Oct 31 23:42:37 1999 Mark Mitchell <>
* toplev.c (rest_of_compilation): Fix thinko in this change:
Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>
(rest_of_compilation): If inside an inlined external function,
pretend we are just being declared.
Sun Oct 31 23:03:25 1999 Jeffrey A Law (
* flow.c (calculate_global_regs_live): Fix thinko.
* integrate.c (expand_inline_function): Fix bugs in previous
change from Oct 28, 1999.
Sun Oct 31 20:27:45 1999 Mark Mitchell <>
* stmt.c (expand_value_return): Fix typo in this change:
Thu Oct 28 18:06:50 1999 Richard Kenner <>
(expand_value_return): Correctly convert VAL when promoting function
return; support RETURN_REG being a PARALLEL.
Sun Oct 31 20:25:42 1999 Mark P. Mitchell <>
* expr.c (readonly_fields_p): Ignore everything except FIELD_DECLs.
Sun Oct 31 20:42:17 1999 Kaveh R. Ghazi <>
* hard-reg-set.h (reg_names): Constify a char*.
* regclass.c (reg_names): Likewise.
* regs.h (reg_names): Likewise
* a29k/a29k.c (reg_names): Delete declaration.
* a29k/a29k.h (CONDITIONAL_REGISTER_USAGE): Constify a char*.
* arc/arc.c (arc_save_restore, arc_output_function_prologue,
arc_output_function_epilogue): Likewise.
* elxsi/elxsi.c (reg_names): Likewise.
* gmicro/gmicro.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Likewise.
* m32r/m32r.c (m32r_output_function_epilogue, emit_cond_move):
* m88k/m88k.c (output_function_profiler): Likewise.
* sparc/sparc.c (sparc_flat_output_function_prologue,
sparc_flat_output_function_epilogue): Likewise.
Sun Oct 31 13:32:15 CET 1999 Marc Lehmann <>
* toplev.c (rest_of_compilation): Separate the setjmp/vfork clobber
warning from -Wuninitialized and put it under -W.
* function.c (uninitialized_vars_warning): Warn only when the
corresponding flag is set.
Sun Oct 31 01:53:30 1999 Jeffrey A Law (
* cse.c (cse_insn): If an insn has only a single set, SRC_EQV
is nonzero and the single set does not have an elt, then assign
it an elt.
* simplify-rtx.c: New file.
* (OBJS): Add simplify-rtx.o
(simplify-rtx.o): Add dependencies.
* rtl.h (simplify_gen_binary, simplify_rtx): Add prototypes.
* cse.c: Use simplify_gen_binary intead of cse_gen_binary.
(cse_gen_binary, simplify_unary_operation): Delete.
(simplify_binary_operation, simplify_plus_minus): Likewise.
(check_fold_consts, simplify_relation_operation): Likewise.
(simplify_ternary_operation): Likewise.
(delete_trivially_dead_insns): Simplify the contents of the
REG_EQUAL note before trying to substitute it into the source
of the reg-reg copy at the end of a libcall sequence.
* combine.c (combine_simplify_rtx): Renamed from simplify_rtx. All
references/callers changed.
* mn10200.c (mn10200_va_arg): Force the return value into a
* fr30.h (EXTRA_CC_NAMES): Remove obsolete macro.
* cccp.c (macroexpand): Avoid out of range accesses for omitted
Sat Oct 30 22:42:50 1999 Stephen L Moshier <>
* c-lex.c (yylex): Accept 'f' in mantissa of hex float constant.
Sat Oct 30 22:19:26 1999 Jeffrey A Law (
* fold-const.c (fold): Fix thinko when optimizing comparisons
against -0.0.
Sat Oct 30 21:32:17 1999 David Starner <>
* gcc.texi (Passes): Update front-end files to their current
Sat Oct 30 14:41:40 1999 Richard Henderson <>
* alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Call secondary_reload_class.
(PREDICATE_CODES): Add addition_operation.
* alpha-protos.h (addition_operation): Declare.
(secondary_reload_class): Likewise.
* alpha.c (addition_operation): New.
(secondary_reload_class): New, from old SECONDARY_INPUT_RELOAD_CLASS.
* (adddi3): Turn into expander.
(*lda, *adddi_2): New.
(movsf, movdf patterns): Don't preference integer regs.
(movsi, movdi patterns): Don't preference fp regs.
Sat Oct 30 14:38:22 1999 Richard Henderson <>
* genrecog.c (write_switch): Check for duplicate CODE cases.
Sat Oct 30 14:31:48 1999 Richard Henderson <>
* ggc-common.c: Update pre-function commentary.
* ggc-page.c: Likewise.
(poison): Remove.
(poison_pages): Use memset directly.
(ggc_alloc_obj): Likewise. Use a different pattern than poison_pages.
(ggc_collect): Poison before sweeping.
* ggc-simple.c: Update pre-function commentary.
(ggc_alloc_obj): Poison nonzeroed memory.
Sat Oct 30 14:28:52 1999 Mark Mitchell <>
* ggc-common.c (ggc_print_statistics): Make arguments to fprintf
match format string, even on 64-bit hosts.
* gcc-page.c (ggc_page_print_statistics): Likewise.
Sat Oct 30 14:38:04 1999 Catherine Moore <>
* config/i386/i386.c (ix86_cpu): Revert last patch.
* config/i386/i386.h (ix86_cpu): Ditto.
Fri Oct 29 17:00:42 1999 Jim Wilson <>
* stor-layout.c (layout_type): When compute TYPE_SIZE_UNIT from
TYPE_SIZE, convert type of result to sizetype.
Fri Oct 29 14:34:17 1999 Richard Henderson <>
* flow.c (count_or_remove_death_notes): Equate NULL with the
universal set.
* jump.c, reg-stack.c, toplev.c: Revert Oct 27 change.
* toplev.c (rest_of_compilation): Rebuild CFG immediately before
* i386.c (pic_label_no): Delete.
(ix86_attr_length_default): Don't use single_set to peek
inside a parallel.
* recog.c (peephole2_optimize): Allow recog_next_insn to index
the first insn after bb->end.
* (push mem peeps): Scratch is live after evaluation
of the memory.
(cmp mem peep): Similarly.
Fri Oct 29 11:50:11 1999 Catherine Moore <>
* calls.c (emit_library_call_value): Fix declaration of alignment_pad.
* function.c (pad_to_arg_alignment): Add missing braces.
Fri Oct 29 13:53:48 1999 Kaveh R. Ghazi <>
* alpha/alpha-protos.h (literal_section): Add prototype.
(alpha_need_linkage, alpha_start_function,alpha_end_function):
Constify a char*.
* alpha/alpha.c (alpha_ra_ever_killed, set_frame_related_p): Add
(alpha_start_function, alpha_end_function, float_strings,
alpha_need_linkage): Constify a char*
* alpha/alpha.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_MI_THUNK): Likewise.
* alpha/alpha32.h (ASM_OUTPUT_MI_THUNK): Likewise.
* alpha/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.
* alpha/vms.h (ASM_OUTPUT_SECTION_NAME): Likewise.
Fri Oct 29 13:49:39 1999 Kaveh R. Ghazi <>
* flow.c (debug_flow_info): Add prototype.
* gcc.c (main): Likewise.
* gcse.c (expr_reaches_here_p_work, pre_expr_reaches_here_p_work):
* reload1.c (failed_reload, set_reload_reg): Likewise.
* mips-tfile.c (main): Likewise.
(pfatal_with_name, fancy_abort, botch, fatal, catch_signal): Mark
Fri Oct 29 18:16:03 1999 Andrew Haley <>
* config/i386/i386.h (ENCODE_SECTION_INFO): Don't do anything if
DECL is not a memory ref.
Fri Oct 29 09:05:34 1999 Catherine Moore <>
* config/i386/i386.h (ix86_cpu): Remove extern attribute.
* config/i386/i386.c (ix86_cpu): Add extern attribute.
Fri Oct 29 16:30:04 1999 Andrew Haley <>
* config/mips/elf.h: remove NAME__MAIN and SYMBOL__MAIN.
* config/mips/elf64.h: ditto.
Fri Oct 29 08:03:57 1999 Catherine Moore <>
* expr.c (emit_push_insn): New argument alignment_pad.
Update all callers. Adjust stack pointer based on alignment pad.
* function.c (pad_to_arg_alignment): New argument alignment_pad.
Update all callers. Track alignment_pad if boundary > PARM_BOUNDARY.
(locate_and_pad_parm): New argument alignment_pad. Update all
* expr.h (emit_push_insn): Update prototype.
(locate_and_pad_parm): Update prototype.
* calls.c (arg_data): Add new field alignment_pad.
(initialize_argument_information): Initialize alignment_pad.
Fri Oct 29 02:51:35 1999 Mark Mitchell <>
* except.c (free_eh_nesting_info): Free the info itself.
* function.c (free_after_compilation): Don't free NULL.
* gcse.c (alloc_pre_mem): Free the temp_bitmap, too.
(pre_edge_insert): Free inserted.
* stmt.c (free_stmt_status): Don't free NULL.
Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>
* gcov.c (DIR_SEPARATOR): Provide default.
(output_data): Add test for MS-DOS format absolute filename.
(fancy_abort): Correct program name.
(open_files): Open all files in binary mode.
* libgcc2.c (__bb_exit_func): Likewise.
* profile.c (init_branch_prob): Specify binary when opening files.
* flags.h (flag_unwind_tables): New decl.
* toplev.c (flag_unwind_table): New definition.
(f_options): Add -funwind-tables.
(decode_g_option): Clarify warning when unknown -g option is given.
(rest_of_compilation): If inside an inlined external function,
pretend we are just being declared.
* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
(dwarf2out_frame_finish): Likewise.
Fri Oct 29 07:44:26 1999 Vasco Pedro <>
* fold-const.c (merge_ranges): If not in0, but in1, handle
upper bounds equal like subset case.
Thu Oct 28 19:22:24 1999 Douglas Rupp <>
* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
passed in a register but moved to the stack.
Thu Oct 28 19:12:57 1999 Sam Tardieu <>
* gcc.c (pass_exit_codes, greatest_status): New variables.
(struct option_map): Add entry for "--pass-exit-codes".
(execute): Update greatest_status if error.
(display_help): Add documentation for -pass-exit-codes.
(process_command): Handle -pass-exit-codes.
(main): Look at pass_exit_codes and greatest_status on call to exit.
Thu Oct 28 18:06:50 1999 Richard Kenner <>
* reload.c (find_reloads): Refine test for no input reload
case to not includes reloads emitted after insn.
* function.c (find_temp_slots_from_address): Handle sum involving
a register that points to a temp slot.
(update_temp_slot_address): Make recursive call if both old and
new are PLUS with a common operand.
* calls.c (expand_call): Mark temp slot for result as having
address taken.
* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.
* gcc.c (process_command): Add standard_exec_prefix with "GCC"
component as well as "BINUTILS".
* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
* integrate.c (copy_rtx_and_substitute): Likewise.
(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
All callers changed.
* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.
* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
gdb extensions, write size of type; also be more consistent
in using references when this is a subtype.
* (extv, extzv, insv): Use define_expand to reject constant
that is out of range.
* loop.c (unknown_constant_address_altered): New variable.
(prescan_loop): Initialize it.
(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
(invariant_p, case MEM): Remove handling for volatile and readonly;
check new variable if readonly.
(check_dbra_loop): Chdeck unknown_constant_address_altered.
* cse.c (canon_hash, case MEM): Do not record if BLKmode.
(addr_affects_sp_p): Removed from note_mem_written and only
define #ifdef AUTO_INC_DEC.
* alpha.c (input_operand, case ADDRESSOF): Treat as REG.
* regclass.c (record_reg_classes): Properly handle register move
* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
Don't think valid if both operands are invalid.
(struct constant_descriptor): New field RTL.
(mark_const_hash_entry): Mark it.
(record_constant{,_rtx}): Initialize it.
(output_constant_def): Allocate RTL in permanent obstack and
save in table.
({record,compare}_constant_1): Modes must match for
* c-common.h (initializer_constant_valid_p): Delete decl from here.
* output.h (initializer_constant_valid_p): Move decl to here.
* c-common.c (initializer_constant_valid_p): Delete function from here.
* varasm.c (initializer_constant_valid_p): Move function to here.
* tree.h (STRIP_SIGN_NOPS): New macro.
* fold-const.c (optimize_minmax_comparison): New function.
(invert_truthvalue, case WITH_RECORD_EXPR): New case.
(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
widening conversions.
(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
to look at size of mode, not precision of type; also add missing cases.
(optimize_bit_field_compare, decode_field_reference): Don't try to
* dwarf2out.c (ctype.h): Include.
(dwarf2out_set_demangle_name_func): New function.
(size_of_line_info): Deleted.
(output_line_info): Compute size of line info table from difference
of labels.
(base_type_die, add_name_attribute): Call demangle function, if any.
(field_byte_offset): Use bits per word for variable length fields.
(gen_array_type_die): Add array name.
(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
(dwarf2out_add_library_unit_info): New function.
* explow.c (set_stack_check_libfunc): New function.
(stack_check_libfunc): New static variable.
(probe_stack_range): Allow front-end to set up a libfunc to call.
* combine.c (simplify_comparison): When making comparison in wider
mode, check for having commuted an AND and a SUBREG.
(contains_muldiv): New function.
(try_combine): Call it when dividing a PARALLEL.
(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
use one of the CLOBBERs instead.
(if_then_else_cond): If comparing against zero, just return thing
being compared.
* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
Don't generate shifts and subtract if have conditional arithmetic.
* rtl.h (delete_barrier): New declaration.
* jump.c (jump_optimize): Set up to handle conditional call.
In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
(delete_barrier): New function.
* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.
* recog.c (nonmemory_operand): Accept ADDRESSOF.
* tree.c (build_type_attribute_variant): Push to obstack of
ttype around type_hash_canon call.
* expr.c (placeholder_list): Move decl to file scope.
(expand_expr): Don't force access to volatile just because its
address is taken.
If ignoring reference operations, just expand the operands.
(expand_expr, case COMPONENT_REF): Propagate
EXPAND_CONST_ADDRESS to recursive call when expanding inner.
Refine test for using bitfield operations vs pointer punning.
(expand_expr, case CONVERT_EXPR): If converting to
BLKmode UNION_TYPE from BLKmode, just return inner object.
Use proper mode in store_field call.
Properly set sizes of object to store and total size in store_field
call for convert to union.
(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
memory (like for ADDR_EXPR). Also, don't put constant in register if
we'll want it in memory.
(readonly_fields_p): New function.
(expand_expr, case INDIRECT_REF): Call it if LHS.
(expand_assignment): Handle a RESULT_DECL where
(do_jump, case WITH_RECORD_EXPR): New case.
(get_inner_reference): Always go inside a CONVERT_EXPR
and NOP_EXPR if both modes are the same.
(store_field): Use bitfield operations if size of bitsize is not same
as size of RHS's type.
Check for bitpos not a multiple of alignment in BLKmode case.
Do block move in largest possible alignment.
(store_constructor): Set BITSIZE to -1 for variable size and properly
in case of array of BLKmode.
(expand_expr_unaligned): New function.
(do_compare_and_jump): Call it.
* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
does not include 'o'.
* function.c (instantiate_virtual_regs_1, case SET): Handle case where
both SET_DEST and SET_SRC reference a virtual register.
(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.
* integrate.c (expand_inline_function): Handle case of setting
virtual stack vars register (from built in setjmp); when parameter
lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
(subst_constant): Add new parm, MEMONLY.
(expand_inline_function, integrate_parm_decls): Pass new parm.
(integrate_decl_tree): Likewise.
(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
(copy_rtx_and_substitute, case SET): Add explicit calls to
copy_rtx_and_substitute for both sides.
* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
within INDEX_TYPE, instead of before.
(fixup_gotos): Use f->target_rtl, not the next insn,
since latter may be from a later fixup.
(expand_value_return): Correctly convert VAL when promoting function
return; support RETURN_REG being a PARALLEL.
(expand_return): When checking for result in regs and having
cleanup, consider PARALLEL in DECL_RTL as being in regs.
1999-10-28 21:27 -0700 Zack Weinberg <>
* cpplib.h (struct cpp_buffer: fname, nominal_fname,
last_nominal_fname): Mark const.
(struct include_hash: name, nshort, control_macro): Mark
(struct macrodef: symnam): Mark const.
(struct if_stack: fname): Mark const.
(is_idchar, is_idstart, is_hor_space, trigraph_table): Delete.
(IStable): New character-syntax array which encompasses all
the old is_foo arrays.
(is_idchar, is_numchar, is_idstart, is_numstart, is_hspace,
is_space): New macros for interrogating IStable.
(check_macro_name): Kill last argument. All callers changed.
* cppinit.c (initialize_char_syntax): Delete.
(is_idchar, is_idstart, is_hor_space, is_space,
trigraph_table): Delete.
(IStable): New. Initialize with clever macros to avoid
information duplication.
(builtin_array): Table of builtins to get rid of explicit list
in initialize_builtins.
(initialize_builtins): Use builtins_array.
(cpp_start_read): Call init_IStable, and set IStable['$'] if
* cppexp.c: Change all refs to is_xyz[] arrays to use new
is_xyz() macros.
(cpp_parse_expr): Avoid 'format string is not constant'
warning. Use ISGRAPH to identify printable chars.
* cppfiles.c: Change all refs to is_xyz[] arrays to use new
is_xyz() macros.
(read_and_prescan): Map trigraphs to chars with open-coded
if-else-if-... sequence, not a lookup table.
* cpphash.c: Change all refs to is_xyz[] arrays to use new
is_xyz() macros.
* cpplib.c: Change all refs to is_xyz[] arrays to use new
is_xyz() macros. Kill SKIP_ALL_WHITE_SPACE (unused).
(check_macro_name): Remove ability to report an invalid
assertion name, which is never used.
(do_line): Constify a couple of char *'s.
* cppmain.c (main): Call cpp_cleanup before returning.
Thu Oct 28 21:16:35 1999 Mark Mitchell <>
* ggc.h (struct ggc_statistics): New type.
(ggc_get_size): New function.
(ggc_print_statistics): Likewise.
* ggc-common.c (ggc_stats): New variable.
(ggc_mark_rtx_children): Keep statistics.
(ggc_mark_tree_children): Likewise.
(ggc_print_statistics): New function.
* ggc-page.c (struct globals): Add bytes_mapped field.
(alloc_anon): Update it.
(release_pages): Likewise.
(ggc_get_size): New function.
(ggc_page_print_statistics): New function.
* ggc-simple.c (ggc_get_size): New function.
Fri Oct 29 06:32:44 1999 Geoffrey Keating <>
* flow.c (propagate_block): When the last reference to a label
before an ADDR_VEC is deleted because the reference is a dead
store, delete the ADDR_VEC.
Thu Oct 28 12:28:50 1999 Richard Henderson <>
* resource.c (find_free_register): Don't use the frame pointer
if frame_pointer_needed.
Thu Oct 28 10:02:00 1999 Jim Wilson <>
* config/mips/mips.c (mips_va_arg): Delete gen_jump as emit_jump arg.
(function_arg_pass_by_reference): Check for a NULL pointer in cum.
* config/i960/i960.c (i960_va_start): New locals base, num.
Use INDIRECT_REF instead of ARRAY_REF on valist.
(i960_va_arg): Use INDIRECT_REF instead of ARRAY_REF on valist.
Thu Oct 28 09:45:48 1999 Mark Mitchell <>
* gcse.c (delete_null_pointer_checks): Fix typo in previous change.
Thu Oct 28 03:37:50 1999 Peter Gerwinski <>
* tree.def (PLACEHOLDER_EXPR): Update comments.
Thu Oct 28 06:47:32 1999 Kaveh R. Ghazi <>
* c-common.c (check_format_info): Avoid non-literal format string
warnings when `first_arg_num' is zero.
Thu Oct 28 12:28:48 1999 Bernd Schmidt <>
* rtl.texi: Delete explicit Prev, Up and Next entries in "@node"s.
Thu Oct 28 11:05:13 1999 Richard Earnshaw <>
* (casesi_insn): Add a clobber of the condition code
Mon Oct 18 21:16:06 1999 Fred Fish <>
* tm.texi (CC1PLUS_SPEC): Make it clear in the docs that CC1_SPEC is
used by both cc1 and cc1plus.
Thu Oct 28 10:00:48 1999 Nick Clifton <>
* config/arm/arm.c: Initialize arm_structure_size_boundary to
* config/arm/arm.h (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define
to the value 32 if it has not already been defined.
* config/arm/netbsd.h (DEFAULT_STRUCTURE_SIZE_BOUNDARY):
Override definition in arm.h with a value of 8.
Thu Oct 28 03:12:02 1999 David Starner <>
* c-pragma.c (push_alignment): Don't check the return value
of xmalloc.
Thu Oct 28 03:08:38 1999 Matteo Frigo <>
* sparc.h (ADJUST_COST): Fix thinko.
Thu Oct 28 02:44:03 1999 Glen Nakamura <>
* cccp.c (rescan): Fixed obp pointer handling around call to
check_expand subroutine.
Thu Oct 28 02:15:22 1999 Jeffrey A Law (
* gcse.c (delete_null_pointer_checks): Only record non-null info
for pseudos when examining stores.
* (adddi3, adddi_sesidi_di, adddi_sesidi_di): Add
splitters for these patterns. Use "#" for output templates.
(addsi3_carryin_shift): New pattern.
Thu Oct 28 10:20:02 1999 Geoffrey Keating <>
* config/rs6000/ (movsf): Don't convert a SUBREG
of the function return register into a plain REG until
after function inlining is done.
Wed Oct 27 15:21:46 1999 Richard Henderson <>
* jump.c (jump_optimize_1): If we did cross-jumping, and
the data will matter, rebuild the CFG.
* reg-stack.c (reg_to_stack): Only (re)build the CFG if
not optimizing. Don't run shorten_branches.
* toplev.c (rest_of_compilation): Run shorten_branches after
Wed Oct 27 12:33:40 1999 Mark Mitchell <>
* rtl.h (note_stores): Add additional parameter.
* rtlanal.c (reg_set_p_1): Take additional parameter.
(reg_set_last_1): Likewise.
(reg_set_p): Adjust call to note_stores.
(reg_set_last): Likewise.
(note_stores): Pass data parameter to worker function.
* alias.c (record_set): Take additional parameter.
(init_alias_analysis): Pass it.
* caller-save.c (mark_set_regs): Take additional parameter.
(save_call_clobbered_regs): Pass NULL to note_stores.
* combine.c (set_nonzero_bits_and_sign_copies): Take additional
(record_dead_and_set_regs_1): Likewise.
(reg_dead_at_p_1): Likewise.
(combine_instructions): Adjust calls to note_stores.
(try_combine): Likewise.
(record_dead_insn): Remove.
(record_dead_and_set_regs): Adjust calls to note_stores.
(reg_dead_at_p): Likewise.
* cse.c (invalidate_skipped_set): Take additional parameter.
(cse_check_loop_start): Likewise.
(cse_check_loop_start_value): Remove.
(cse_set_around_loop): Adjust calls to note_stores.
* flow.c (notice_stack_pointer_modification): Take additional
parameter. Remove duplicate declaration.
(record_volatile_insns): Adjust calls to note_stores.
* gcse.c (record_set_info): Take additional parameter.
(record_last_set_info): Likewise.
(invalidate_nonnull_info): Likewise.
(record_set_insn): Remove.
(compute_sets): Adjust calls to note_stores.
(last_set_insn): Remove.
(compute_hash_table): Adjust calls to note_stores.
(insert_insn_end_bb): Likewise.
(delete_null_pointer_checks): Likewise.
* global.c (mark_reg_store): Take additional parameter.
(mark_reg_clobber): Likewise.
(reg_becomes_live): Likewise.
(global_conflicts): Adjust calls to note_stores.
(build_insn_chain): Likewise.
* integrate.c (note_modified_parmregs): Take additional parameter.
(mark_stores): Likewise. Make it static.
(save_for_inline_nocopy): Adjust calls to note_stores.
(try_constants): Likewise.
* integrate.h (mark_stores): Remove declaration.
* jump.c (mark_modified_reg): Take additional parameter.
(thread_jumps): Adjust calls to note_stores.
* local-alloc.c (validate_equiv_mem_from_store): Take additional
(no_equiv): Likewise.
(reg_is_set): Likewise.
(validate_equiv_mem): Adjust calls to note_stores.
(update_equiv_regs): Likewise.
(block_alloc): Likewise.
* loop.c (note_set_pseudo_multiple_uses_retval): Remove.
(note_addr_stored): Take additional parameter.
(note_set_pseudo_multiple_uses): Likewise.
(record_initial): Likewise.
(prescan_loop): Adjust calls to note_stores.
(strength_reduce): Likewise.
(check_dbra_loop): Likewise.
* regmove.c (flags_set_1): Take additional parameter.
(mark_flags_life_zones): Adjust calls to note_stores.
* reload1.c (mark_not_eliminable): Take additional parameter.
(forget_old_reloads_1): Likewise.
(reload_cse_invalidate_rtx): Likewise.
(reload_cse_check_clobber): Likewise.
(reload_combine_note_store): Likewise.
(move2add_note_store): Likewise.
(reload): Adjust calls to note_stores.
(reload_as_needed): Likewise.
(emit_reload_insns): Likewise.
(reload_cse_regs_1): Likewise.
(reload_cse_record_set): Adjust calls to reload_cse_invalidate_rtx.
(reload_combine): Adjust calls to note_stores.
* resource.c (update_live_status): Take additional parameter.
(mark_target_live_regs): Adjust calls to note_stores.
* stupid.c (find_clobbered_regs): Take additional parameter.
(stupid_life_analysis): Adjust calls to note_stores.
Wed Oct 27 19:26:12 1999 Nick Clifton <>
* config/arm/coff.h (STRUCTURE_SIZE_BOUNDARY): Delete
* config/arm/elf.h (STRUCTURE_SIZE_BOUNDARY): Delete
* config/arm/arm.h (STRUCTURE_SIZE_BOUNDARY): Define in terms
of the variable arm_structure_size_boundary.
Wed Oct 27 02:05:58 1999 Mark P. Mitchell <>
* alias.c (init_alias_analysis): Allocate reg_known_value and
reg_known_equiv_p on the heap. Likewise for new_reg_base_value
and reg_seen.
(end_alias_analysis): Free reg_known_value and reg_known_equiv_p.
* cse.c (cse_main): Call end_alias_analysis.
* haifa-sched.c (schedule_insns): Likewise.
* local-alloc. (update_equiv_regs): Likewise.
* reload1.c (reload_cse_regs): Likewise.
Wed Oct 27 01:49:17 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* sparc/sparc.c (sparc_override_options): Clear MASK_FPU_SET.
* sparc/sparc.h (TARGET_SWITCHES): Add "fpu" entry for reverse
mapping from MASK_FPU.
Wed Oct 27 01:42:26 1999 Scott Christley <>
* (call): Don't bound structure return size to 0xfff.
Wed Oct 27 00:56:59 1999 Richard Henderson <>
* resource.c (mark_target_live_regs): Check that the target
insn wasn't created after compute_bb_for_insn.
Tue Oct 26 23:15:03 1999 Mark Mitchell <>
* ggc-page.c (poison_pages): Don't be overzealous.
Tue Oct 26 23:29:18 1999 Jeffrey A Law (
* alias.c: Update comments for ADDRESS.
(nonlocal_reference_p): Look inside the ADDRESS to determine if
it is a local memory reference.
* c-typeck.c (build_function_call): Check that the built-in
function is of class BUILT_IN_NORMAL before trying to recongize
* calls.c (calls_function_1): Similarly for BUILT_IN_ALLOCA.
* stmt.c (expand_end_cae): Similarly for BUILT_IN_CLASSIFY_TYPE.
Wed Oct 27 00:14:13 1999 Robert Lipe <>
* gcse.c (expr_reaches_here_p): Use xcalloc and explit free instead
of alloca.
(pre_gcse): Likewise.
(hoist_expr_reaches_here_p): Likewise.
(hoist_code): Likewise.
(pre_expr_reaches_here_p): Replace alloca with xcalloc. Move core
code to ...
(pre_expr_reaches_here_p_work): ... here.
(expr_reaches_here_p): Replace alloca with xcalloc. Move core
code to ...
(expr_reaches_here_p_work): ... here.
Tue Oct 26 20:42:45 1999 Richard Henderson <>
* resource.c (find_basic_block): Delete.
(mark_target_live_regs, incr_ticks_for_insn): Use BLOCK_NUM instead.
(init_resource_info): Call compute_bb_for_insn.
Tue Oct 26 20:21:02 1999 Richard Henderson <>
* flow.c (merge_blocks_move_predecessor_nojumps): Cope
with already adjacent blocks, but no fallthru.
(merge_blocks_move_successor_nojumps): Simplify.
(debug_flow_info): New.
* toplev.c (rest_of_compilation): Open jump1 dump file before
jump and close after, as opposed to just using dump_rtl.
Wed Oct 27 03:09:23 1999 J"orn Rennecke <>
* reload.h (earlyclobber_operand_p): Declare.
* reload.c (earlyclobber_operand_p): Don't declare. No longer static.
* reload1.c (reload_reg_free_for_value_p): RELOAD_OTHER reloads with
an earlyclobbered output conflict with RELOAD_INPUT reloads - handle
case where the RELOAD_OTHER reload is new. Use earlyclobber_operand_p.
Tue Oct 26 18:23:38 1999 Jan Hubicka <>
Richard Henderson <>
* emit-rtl.c (emit_block_insn_before): New.
(emit_block_insn_after): New.
* basic-block.h: Declare them.
* bitmap.h: Protect from multiple inclusion.
* recog.c (scratch_operand): Handle VOIDmode correctly.
* builtins.c (expand_builtin_apply_args_1): Remove STACK_REGS hack.
* function.c (assign_parms): Likewise.
* global.c (global_conflicts): Clarify STACK_REGS commentary.
* reg-stack.c (max_uid): Remove.
(blocks, block_begin, block_end, block_drops_in): Remove.
(block_stack_in, block_out_reg_set, block_number): Remove.
(struct block_info_def, BLOCK_INFO): New.
(enum emit_where): New.
(current_block): New.
(BLOCK_NUM): Remove.
(mark_regs_pat, record_label_references): Remove.
(record_reg_life_pat, record_reg_life, find_blocks): Remove.
(nan): New.
(goto_block_pat, print_blocks, dump_stack_info): Remove.
(reg_to_stack): Simplified test for existence of fp code. Use
flow.c code. Call shorten_branches after cross-jump opt.
(check_asm_stack_operands): Renamed from record_asm_reg_life.
Return false if the asm doesn't use stack regs. Don't do life
analysis on the asm.
(emit_pop_insn): Replace function pointer arg `when' with
enum `where'. Update all callers.
(change_stack): Likewise. Update basic block end.
(emit_swap_insn): Use current_block->head to limit reverse search
for start of block. Use emit_block_insn_after.
(subst_stack_regs_pat): Handle USE and CLOBBER patterns.
(subst_asm_stack_regs): Use check_asm_stack_operands. Use direct
structure assignment instead of bcopy.
(print_stack): New.
(convert_regs_entry, convert_regs_exit): New.
(convert_regs_1, convert_regs_2): Split out from convert_regs.
Work on basic blocks and the CFG.
(convert_regs): Use them.
* i386.c (output_fix_trunc): Remove code for DImode input operand
not at top-of-stack.
* i386.c (fix_truncdfdi2, fix_truncsfdi2): Use scratch with
appropriate mode.
(fix_truncdi_1): Allow any mode scratch.
Tue Oct 26 13:30:35 1999 Richard Henderson <>
* alpha.h (TARGET_MEM_FUNCTIONS): Define here.
* linux.h, netbsd.h, vms.h: Not here.
1999-10-26 Gavin Romig-Koch <>
* config/mips/mips.h (ISA_HAS_64BIT_REGS,ISA_HAS_BRANCHLIKELY,
* config/mips/mips.c (mips_move_1word,mips_move_2words,
gen_conditional_branch,override_options) : Use them.
* config/mips/ : Use them.
Tue Oct 26 13:09:23 1999 Richard Henderson <>