* fold-const.c (const_binop): Avoid performing the FP operation at
compile-time, if either operand is NaN and we honor signaling NaNs,
or if we're dividing by zero and either flag_trapping_math is set
or the desired mode doesn't support infinities.
(fold_initializer): New function to fold an expression ignoring any
potential run-time exceptions or traps.
* tree.h (fold_initializer): Prototype here.
* c-typeck.c (build_binary_op): Move to the end of the file so
that intializer_stack is in scope. If constructing an initializer,
i.e. when initializer_stack is not NULL, use fold_initializer to
fold expressions.
* simplify-rtx.c (simplify_binary_operation): Likewise, avoid
performing FP operations at compile-time, if they would raise an
exception at run-time.
From-SVN: r69533
* c-opts.c (this_input_filename): New.
(finish_options): Take new parameter, name of file being compiled.
Update callers. Set this_input_filename.
(push_command_line_include): Use this_input_filename not
main_input_filename.
From-SVN: r69526
* c-decl.c: Fix typos in several comments. Remove all
#if 0 blocks; reindent as needed. Remove unused argument
to declare_parm_level; all callers changed.
* c-parse.in: Update calls to declare_parm_level. Avoid
issuing a double warning in some circumstances.
* c-typeck.c: Update calls to declare_parm_level.
* c-tree.h: Update prototype of declare_parm_level.
* c-pragma.c (apply_pragma_weak): Don't complain about a
redundant #pragma weak.
* objc/objc-act.c (forward_declare_categories,
build_selector_reference_decl, build_class_reference_decl,
build_objc_string_decl, synth_forward_declarations,
build_protocol_reference): Set TREE_PUBLIC on synthetic
forward decl to 0, consistent with eventual definition.
Correct comments to match.
cp:
* pt.c (get_bindings): Make definition consistent with
forward declaration.
From-SVN: r69519
* fixinc/inclhack.def (solaris_mutex_init_2): Escape braces
in regexp that don't form a range expression.
* fixinc/fixincl.def: Regenerate.
From-SVN: r69517
PR target/10907
* config/ia64/ia64.c (ia64_epilogue_uses): GP is live at end
even with !TARGET_CONST_GP.
(ia64_function_ok_for_sibcall): Reject non-local functions.
From-SVN: r69515
PR other/11466
* doc/invoke.texi (SPARC Options): Document "-mlittle-endian"
and its restrictions for the SPARC64 port.
Move the entry of "-mimpure-text" before that of "-mv8".
From-SVN: r69497
* doc/install.texi (*-*-solaris2*): Document the step-by-step
procedure to bootstrap and install.
Document the preference for the legacy Sun tools in /usr/bin
over the POSIX tools in /usr/xpg4/bin for the build process.
Co-Authored-By: Phil Edwards <phil@jaj.com>
From-SVN: r69495
* loop.c (check_ext_dependent_givs): Pass const struct loop *
instead of struct loop_info * as argument. Accept BIVs with
increment +/- 1 provided there is a friendly exit test against
a loop-invariant value.
(strength_reduce): Adapt call to check_ext_dependent_givs.
From-SVN: r69489
2003-07-16 J"orn Rennecke <joern.rennecke@superh.com>
Con Bradley <con.bradley@superh.com>
* sh-protos.h (sh_get_pr_initial_val): Declare.
* sh.c (regno_reg_class): Make its elements type enum reg_class.
(output_stack_adjust): Remove emit_fn argument. Add epilogue_p
and live_regs_mask arguments. Changed all callers.
(save_schedule_s): New structure.
(save_schedule): New typedef.
(scavenge_reg, sh5_schedule_saves, sh5_schedule_saves): New functions.
(calc_live_regs): For TARGET_SHMEDIA, use leaf_function_p.
In interrupts handlers, also save registers that are usually
partially saved, and make sure there is at least one general purpose
register saved if a target register needs saving.
Add casts in comparisons to avoid warnings.
(sh_media_register_for_return): return -1 for interrupt handlers.
(MAX_SAVED_REGS, MAX_TEMPS): New defines.
(sh_expand_prologue): Use sh5_schedule_saves. Check that any temp
registers used are available.
Set RTX_FRAME_RELATED_P where appropriate.
Add an REG_FRAME_RELATED_EXPR for r0 + offset addressing.
(sh_expand_epilogue, sh_set_return_address): Use sh5_schedule_saves.
(initial_elimination_offset): Likewise.
* sh.h (DWARF_CIE_DATA_ALIGNMENT): Set to -4.
(LOCAL_ALIGNMENT, GENERAL_REGISTER_P): Add casts to avoid warnings.
(FP_REGISTER_P): Add casts to fix broken handling of unsigned REGNO.
(XD_REGISTER_P, TARGET_REGISTER_P): Likewise.
(HARD_REGNO_CALL_PART_CLOBBERED): Also yield nonzero for r15,
and for target registers.
(RETURN_IN_MEMORY): Add parentheses to avoid warnings.
(regno_reg_class): Make its elements type enum reg_class.
(CONSTRAINT_LEN): Don't use isdigit.
(FUNCTION_ARG_REGNO_P): Add casts to avoid warnings.
(FUNCTION_ARG): Add parentheses to avoid warnings.
(RETURN_ADDR_RTX): Use sh_get_pr_initial_val.
(RETURN_ADDR_OFFSET): Define to -1 for TARGET_SH5.
(SH_DBX_REGISTER_NUMBER): Add casts to avoid warnings.
(EH_RETURN_DATA_REGNO): Use unsigned constants to avoid warnings.
* sh.md (xordi3+1): Remove unused variable regno.
(return_media): Check that tr0 is available before using it.
Co-Authored-By: Con Bradley <con.bradley@superh.com>
From-SVN: r69480
2003-07-17 Andrew Pinski <pinskia@physics.uc.edu>
Partial Fix PR/10129
* config/darwin.c (machopic_function_base_name): Only Return "<pic base>".
(machopic_output_function_base_name): New; print the true pic label.
(machopic_classify_ident): Pic Base is always a defined data.
* config/darwin.h (ASM_OUTPUT_LABELREF): Support the pic base label.
* config/darwin-proto.h (machopic_output_function_base_name): Prototype.
From-SVN: r69472
2003-05-02 Andrew Pinski <pinskia@physics.uc.edu>
* gcse.c (gcse_constant_p): COMPARE of the same registers is a constant
if they are not floating point registers.
From-SVN: r69471
2003-07-16 Andrew Pinski <pinskia@physics.uc.edu>
ChangeLog:
PR c/10962
* ggc.h: Add header guards.
* c-decl.c (finish_struct): Sort fields if
number greater than 15 and there are no
anonymous structs/unions.
* c-common.h: Include ggc.h.
(sorted_fields_type): New struct.
(field_decl_cmp): New prototype.
(resort_sorted_fields): New prototype.
(DECL_DECLARES_TYPE_NON_TEMPLATE_P): New macro.
* c-tree.h: (lang_type): Use pointer to sorted_fields_type
as s, removing other fields.
* c-typeck.c (lookup_field): Use s in lang_type.
These were mostly moved from cp/class.c:
* c-common.c (field_decl_cmp): New static function.
(field_decl_cmp): New function.
(resort_sorted_fields): New function.
cp/ChangeLog:
* class.c (field_decl_cmp): Remove.
(resort_field_decl_cmp): Remove.
(resort_sorted_fields): Remove.
(add_fields_to_vec): Rename to ...
(add_fields_to_record_type): this.
(finish_struct_1): Change to be using
sorted_fields_type's fields.
* cp-tree.h (lang_decl): In lang_decl_u3
change sorted_fields to be a pointer to
sorted_fields_type.
(resort_sorted_fields): Remove prototype.
* search.c (lookup_field_1): Change to be using
sorted_fields_type's fields.
From-SVN: r69470
* config/mmix/mmix-protos.h: Convert prototypes to ISO C90.
* config/mmix/mmix.c: Convert functions to ISO C90.
(mmix_eh_return_handler_rtx, mmix_output_shifted_value): Tweak
formatting.
(mmix_get_hard_reg_initial_val): Tweak section head comment.
From-SVN: r69466
PR c++/5421
* decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend
is a member of other class.
* friend.c (do_friend): Don't build TEMPLATE_DECL if friend
is a specialization of function template.
* g++.dg/template/friend21.C: New test.
From-SVN: r69457
* unwind-dw2.c (MD_FROB_UPDATE_CONTEXT): Define.
(uw_update_context_1): Use it.
* config/rs6000/rs6000.c (insn_after_throw): Remove.
(rs6000_aix_emit_builtin_unwind_init): Save $r2 to its location
in parent frame if _Unwind_* called directly instead of through
.plt.
(rs6000_emit_eh_toc_restore): Remove.
(rs6000_emit_prologue): Update stack pointer before doing any saving
if current_function_calls_eh_return. Generate unwind info for $r2.
(rs6000_emit_epilogue): Restore stack pointer after doing all
restoring if current_function_calls_eh_return. Restore $r2.
* config/rs6000/rs6000-protos.h (rs6000_emit_eh_toc_restore): Remove.
* config/rs6000/rs6000.md (eh_return): Remove call to
rs6000_emit_eh_toc_restore.
* config/rs6000/linux64.h (MD_FROB_UPDATE_CONTEXT): Define.
* config/rs6000/aix.h (MD_FROB_UPDATE_CONTEXT): Define.
* gcc.dg/cleanup-8.c: New test.
* gcc.dg/cleanup-9.c: New test.
From-SVN: r69450
* expr.c (emit_block_move): Don't move anything if size is const 0.
(clear_storage): Test against const0_rtx instead of comparing INTVAL
against 0.
From-SVN: r69441
2003-07-15 David S. Miller <davem@redhat.com>
* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Only
emit nop if the last real insn is CALL_INSN.
From-SVN: r69440