* 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
structure.
(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.
From-SVN: r30799
* splay-tree.h (struct splay_tree_node): Rename to ...
(struct splay_tree_node_s): ... this.
(struct splay_tree): Rename to ...
(struct splay_tree_s): ... this.
* splay-tree.c (splay_tree_new): Use struct splay_tree_node_s
rather than struct splay_tree_node.
(splay_tree_insert): Use struct splay_tree_s rather than struct
splay_tree.
From-SVN: r30790
* 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.
From-SVN: r30788
* optimize.c (expand_call_inline): Wrap the expanded call in an
EXPR_WITH_FILE_LOCATION node to get correct line numbers for
inlined functions.
From-SVN: r30784
* tree.def (EXPR_WITH_FILE_LOCATION): Fix comment formatting.
* tree.h (EXPR_WFL_FILENAME): Define in terms of
EXPR_WFL_FILENAME_NODE.
(EXPR_WFL_FILENAME_NODE): Use the second operand slot rather than
the TREE_CHAIN.
* print-tree.c (print_note): Print TREE_PRIVATE and
TREE_PROTECTED.
From-SVN: r30783
* optimize.c (inline_data): Remove fns_top. Add scope_stmt. Add
in_target_cleanup_p.
(remap_decl): New function.
(remap_block): Likewise.
(copy_scope_stmt): Likewise.
(copy_body_r): Use remap_decl and copy_scope_stmt.
(copy_body): Use VARRAY_TOP_TREE.
(initialize_inlined_parameters): Likewise.
(declare_return_variable): Likewise.
(inlinable_function_p): Check flag_inline_trees.
(expand_call_inline): Handle SCOPE_STMTs and TARGET_EXPRs
specially. Use VARRAY_PUSH_TREE. Create a BLOCK for the
parameters of the inlined function.
(optimize_function): Prevent recursion into partially complete
functions.
From-SVN: r30781
* cp-tree.def (SCOPE_STMT): Take one operand.
* cp-tree.h (SCOPE_STMT_BLOCK): New macro.
(SCOPE_NULLIFIED_P): Redefine.
(SCOPE_NO_CLEANUPS_P): New macro.
(add_scope_stmt): Change prototype.
* decl.c (poplevel): Tidy. Warn about unused variables here.
Record SCOPE_STMT_BLOCKs.
(finish_function): Keep DECL_INITIAL for functions that might be
inlined.
* ir.texi: Document SCOPE_NO_CLEANUPS_P.
* semantics.c: Include rtl.h.
(add_scope_stmt): Return the new scope statement and, for an
end-of-scope statement, its matching begin statement. Don't set
SCOPE_NULLIFIED_P.
(do_pushlevel): Simplify, now that we are always
function-at-a-time.
(do_poplevel): Likewise. Record SCOPE_STMT_BLOCKs.
(expand_stmt): Don't call expand_start_bindings or
expand_end_bindings for a scope with SCOPE_NO_CLEANUPS_P set.
* tree.c (copy_tree_r): Clear SCOPE_STMT_BLOCK rather than setting
SCOPE_NULLIFIED_P.
* Makefile.in (semantics.o): Depend on RTL_H.
From-SVN: r30780
* cp-tree.def (SCOPE_STMT): Take one operand.
* cp-tree.h (SCOPE_STMT_BLOCK): New macro.
(SCOPE_NULLIFIED_P): Redefine.
(SCOPE_NO_CLEANUPS_P): New macro.
(add_scope_stmt): Change prototype.
* decl.c (poplevel): Tidy. Warn about unused variables here.
Record SCOPE_STMT_BLOCKs.
(finish_function): Keep DECL_INITIAL for functions that might be
inlined.
* ir.texi: Document SCOPE_NO_CLEANUPS_P.
* semantics.c: Include rtl.h.
(add_scope_stmt): Return the new scope statement and, for an
end-of-scope statement, its matching begin statement. Don't set
SCOPE_NULLIFIED_P.
(do_pushlevel): Simplify, now that we are always
function-at-a-time.
(do_poplevel): Likewise. Record SCOPE_STMT_BLOCKs.
(expand_stmt): Don't call expand_start_bindings or
expand_end_bindings for a scope with SCOPE_NO_CLEANUPS_P set.
* tree.c (copy_tree_r): Clear SCOPE_STMT_BLOCK rather than setting
SCOPE_NULLIFIED_P.
From-SVN: r30779
* decl2.c (pending_statics_used): Make it a macro.
(saved_inlines_used): Likewise.
(finish_static_data_member_decl): Use VARRAY_PUSH_TREE.
(mark_inline_for_output): Likewise.
(ssdf_decls_used): Remove.
(start_static_storage_duration_function): Use VARRAY_PUSH_TREE.
(generate_ctor_or_dtor_function): Adjust accordingly.
From-SVN: r30778
* 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
current_function_limit_stack.
* 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
stack_limit_rtx.
* config/rs6000/rs6000.md (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
stack_limit_rtx.
* config/m68k/m68k.md (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
`conditional_trap'.
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
function.
* config/i960/i960.md (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.
Co-Authored-By: Greg McGary <gkm@gnu.org>
From-SVN: r30771
* 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.
Co-Authored-By: Geoff Keating <geoffk@cygnus.com>
From-SVN: r30770
* java/lang/natString.cc (equalsIgnoreCase): return false if
anotherString is null.
* java/lang/Boolean.java (valueOf): return FALSE if argument is
null.
From-SVN: r30763
1999-12-02 Mike Karr <mkarr@mathworks.com>
* 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.
From-SVN: r30760
1999-12-02 Bryce McKinlay <bryce@albatross.co.nz>
* libjava/java/net/ServerSocket.java (ServerSocket): Bind to any
interface if bindAddr is null.
From-SVN: r30755