Andrew MacLeod [Thu, 26 Jul 2001 13:59:22 +0000 (13:59 +0000)]
params.def (PARAM_MAX_PENDING_LIST_LENGTH): Add parameter to limit length of dependancy flush list.
2001-07-26 Andrew MacLeod <amacleod@redhat.com>
* params.def (PARAM_MAX_PENDING_LIST_LENGTH): Add parameter to
limit length of dependancy flush list.
* params.h (MAX_PENDING_LIST_LENGTH): Define.
* sched-int.h (struct deps): Add pending_flush_length field.
* sched-deps.c (flush_pending_lists): Last_pending_memory_flush now
has 1 element in it.
(sched_analyze_1): Use MAX_PENDING_LIST_LENGTH.
(sched_analyze): After a jump, if the pending memory flush list is too
large, flush the pending lists.
(init_deps): Initialize pending_flush_length to 0.
* doc/invoke.texi (max_pending_list_length): Document parameter.
* java/util/Calendar.java (set): Never recompute fields here. They
will already be set if someone set time explicitly, and it can cause
problems to do so. Don't invalidate AM_PM setting if HOUR is set.
* java/util/GregorianCalendar.java (computeTime): Don't ignore an
HOUR setting if AM_PM is set. Don't try to ensure the HOUR value is
sane.
* java/text/SimpleDateFormat.java (defaultCentury): New field.
(readObject): Call set2DigitYearStart if appropriate so that
defaultCentury is calculated.
(SimpleDateFormat): Don't bother clearing calendar here. Call
computeCenturyStart().
(set2DigitYearStart): Calculate and set defaultCentury.
(format): Don't clone the calendar. Use "calendar" not "theCalendar"
everywhere.
(parse): Likewise. If the pattern is "y" or "yy" and it found exactly
2 numeric digits, use the 80-20 heuristic to parse the value into a
default century based on defaultCenturyStart.
(computeCenturyStart): Rewritten. Call set2DigitYearStart().
PR c++/3152
* decl.c (grokdeclarator): Detect when a function typedef is
declaring a function, and create last_function_parms correctly.
testsuite:
* g++.old-deja/g++.other/crash42.C: New test.
Richard Kenner [Wed, 25 Jul 2001 22:03:03 +0000 (18:03 -0400)]
dbxout.c: Consistently use putc instead of fputc.
* dbxout.c: Consistently use putc instead of fputc.
(print_wide_int): New function; call instead of direct fprintf.
(dbxout_type_index): Adjust calls of CHARS to be more accurate.
(dbxout_type_fields, dbxout_type_method_1): Likewise.
(dbxout_type_methods, dbxout_range_type, dbxout_type): Likewise.
(print_int_cst_octal): Likewise.
(print_octal): Show we wrote characters.
(dbxout_type): Set have_used_extensions in more places.
Jason Merrill [Wed, 25 Jul 2001 15:04:32 +0000 (11:04 -0400)]
call.c (joust): Only prefer a non-builtin candidate to a builtin one if...
* call.c (joust): Only prefer a non-builtin candidate to a builtin
one if they have the same signature.
* cvt.c (build_up_reference): Take DECL parm. Check TREE_STATIC on
it rather than toplevel_bindings_p. Give it a mangled name if static.
(convert_to_reference): Adjust.
* decl2.c (get_temp_name): Lose.
* mangle.c (mangle_ref_init_variable): New fn.
(mangle_guard_variable): Strip the ref-init header.
* cp-tree.h: Adjust.
* decl.c (cp_finish_decl): Add the DECL_STMT after processing the
initializer.
(grok_reference_init): Always use DECL_INITIAL.
Jeffrey A Law [Wed, 25 Jul 2001 14:23:08 +0000 (14:23 +0000)]
ssa-ccp.c (visit_expression): Handle CALL_INSNs that can throw an exception.
* ssa-ccp.c (visit_expression): Handle CALL_INSNs that can
throw an exception.
(visit_expression): When attempting to simplify an expression,
retrieve any modes for arguments before they are simplified
to constants.
Andrew MacLeod [Wed, 25 Jul 2001 13:33:17 +0000 (13:33 +0000)]
stmt.c (expand_goto): A nonlocal goto can be a call too.
2001-07-25 Andrew MacLeod <amacleod@redhat.com>
Janis Johnson <janis@us.ibm.com>
* stmt.c (expand_goto): A nonlocal goto can be a call too.
* builtins.c (expand_builtin_longjmp): Reverse label and static chain
pointer parameters to match documented usage of nonlocal_goto.
* config/ia64/ia64.md (nonlocal_goto): Revert label and static chain
parameters to their correct order.
* config/sparc/sparc.md (nonlocal_goto): Revert label and static chain
parameters to their correct order.
Co-Authored-By: Janis Johnson <janis@us.ibm.com>
From-SVN: r44353
re PR c++/3543 (gcc-3.0 Internal error #56 in resolve_offset_ref, at cp/init.c:1963)
cp:
PR c++/3543
* typeck.c (condition_conversion): Resolve an OFFSET_REF.
* expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
testsuite:
* g++.old-deja/g++.other/optimize4.C: New test.
class.c (build_vbase_offset_vbtl_entries): Look for non-primary base of which we are a sub vtable.
cp:
* class.c (build_vbase_offset_vbtl_entries): Look for
non-primary base of which we are a sub vtable.
testsuite:
* g++.old-deja/g++.abi/vbase8-5.C: New test.
Jan Hubicka [Wed, 25 Jul 2001 08:30:36 +0000 (10:30 +0200)]
flow.c (find_sub_basic_blocks): Fix handling of the last BB in the sequence.
* flow.c (find_sub_basic_blocks): Fix handling of the last BB in
the sequence.
(make_edges): New argument update_p; populate the edge cache if set.
(find_basic_blocks): Update make_edges invocation.
Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r44335
Joel Sherrill [Wed, 25 Jul 2001 01:53:26 +0000 (01:53 +0000)]
rtems.h (CPP_PREDEFINES): Remove redundant -Acpu and -Amachine.h.
* config/sparc/rtems.h (CPP_PREDEFINES): Remove redundant
-Acpu and -Amachine.h.
* config/sparc/rtemself.h (CPP_PREDEFINES): Likewise.
Corrected header to say ELF not a.out.
* config/sparc/sparc.h (CPP_CPU_SPEC): Define _SOFT_FLOAT
when given -msoft-float.
Joel Sherrill [Wed, 25 Jul 2001 01:49:45 +0000 (18:49 -0700)]
config.gcc (arm*-*-rtems*): Include crtinit.o and crtfini.o as extra multilib parts like arm-elf.
* config.gcc (arm*-*-rtems*): Include crtinit.o and crtfini.o as
extra multilib parts like arm-elf.
(i960-*-coff*, i960-*-rtems): Should not use collect2.
(m68020-*-elf*, m68k-*-elf*, m68k-*-rtems*): Include crtinit.o and
crtfini.o as extra multilib parts.
2001-07-24 David Billinghurst <David.Billinghurst@riotinto.com>
* g77.f-torture/execute/intrinsic-unix-bessel.f: New test
* g77.f-torture/execute/intrinsic-unix-erf.f: New test
* g77.f-torture/execute/intrinsic-vax-cd.f: New test
* g77.f-torture/execute/intrinsic-f2c-z.f: New test
h8300-protos.h: Add a prototype for general_operand_dst_push.
* config/h8300/h8300-protos.h: Add a prototype for
general_operand_dst_push.
* config/h8300/h8300.c (general_operand_dst_push): New.
* config/h8300/h8300.h (OK_FOR_T): New.
(EXTRA_CONSTRAINT): Use it.
* config/h8300/h8300.md (movqi_push): Remove and integrate into
the existing movqi pattern.
(movhi_push): Likewise.
Andrew Haley [Mon, 23 Jul 2001 16:00:06 +0000 (16:00 +0000)]
tm.texi (MD_CAN_REDIRECT_BRANCH): New macro.
2001-07-13 Andrew Haley <aph@redhat.com>
* doc/tm.texi (MD_CAN_REDIRECT_BRANCH): New macro.
* config/sh/sh.h (MD_CAN_REDIRECT_BRANCH): New macro.
* config/sh/sh.c (sh_can_redirect_branch): New function.
* config/sh/sh-protos.h (sh_can_redirect_branch): Declare.
* reorg.c (steal_delay_list_from_target): Use
MD_CAN_REDIRECT_BRANCH to see if redirection is possible.
Jan Hubicka [Mon, 23 Jul 2001 14:08:12 +0000 (16:08 +0200)]
basic-block.h (find_sub_basic_block): Declare.
* basic-block.h (find_sub_basic_block): Declare.
* flow.c (make_edges): New arguments MIN and MAX;
(find_sub_basic_blocks): Revamp to use make_edges
and purge_dead_edges.
(find_basic_blocks): Update call of find_sub_basic_block.
* recog.c (split_all_insns): Always expect CFG to be consistent;
call find_sub_basic_blocks in case something has changed.
* toplev.c (rest_of_compilation): Always call split_all_insns once CFG
has been built.
* basic-block.h (delete_noop_moves): Declare.
* combine.c (combine_instructions): Call it.
(recog_for_combine): Tolerate noop moves
(distribute_notes): Force refresh when register dies at noop move.
* flow.c (delete_noop_moves): Use BB structure; delete JUMP insns
too.
(life_analysis): Update delete_noop_moves call.
(set_noop_p): Move too ...
* rtlanal.c (noop_move_p): ... here.
* rtl.h (noop_move_p): Declare.
* basic-block.h (purge_all_dead_edges, purge_dead_edges): New functions.
* toplev.c (rest_of_compilation): Conditionally call purge_all_dead_edges
after combine.
* gcse.c (cprop_cc0_jump, cprop_insn): New argument "basic_block".
(cprop_jump): Likewise; call purge_dead_edges if substitution suceeded.
flow.c: Grammar check and clarify a lot of comments.
* flow.c: Grammar check and clarify a lot of comments.
(try_simplify_condjump): Rename variables to be clearer.
(try_forward_edges): Skip complex and fallthru edges.
Rearrange tests to avoid duplicate checks.
(flow_find_cross_jump): Likewise.
(outgoing_edges_match): Allow match if neither branch has
probability data. Loosen probability match to 5%.
(try_crossjump_to_edge): Hoist repeated indirection into
local variables.
(try_crossjump_bb): Don't check complex edges. Eliminate
redundant crossjump tests.
(try_optimize_cfg): Fix use of bool. Reorganize cheaper
checks before more expensive checks.
* basic-block.h (redirect_edge_and_branch_force,
redirect_edge_and_branch, block_label, forwarder_block_p): Declare.
* flow.c (redirect_edge_and_branch_force,
redirect_edge_and_branch, block_label, forwarder_block_p): Make global.
(redirect_edge_and_branch_force): Fix copying of lifeness information.
(block_label): Handle EXIT_BLOCK_PTR by returning NULL.
* ifcvt.c (dead_or_predictable): Take BB as an new destionation
instead of label; update CFG after transformation.
(find_if_case_1): Update call, use redirect_edge_and_branch_force
for finishing the transformation; handle even case where ELSE
does not follow THEN.
(find_if_case_2): Update call of dead_or_predictable; simplify
CFG update.
* emit-rtl.c (split_branch_probability): New global variable.
(try_split): Take care to set split_branch_probability and
create REG_BR_PROB note for new jump insns.
* md.texi (define_split): Document new feature.
* i386.c (ix86_split_fp_branch): Redistribute branch probability notes.