aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
AgeCommit message (Collapse)AuthorFilesLines
2001-05-14libgcc2.c, libgcc2.h: Restore __eprintf.Zack Weinberg1-0/+22
* libgcc2.c, libgcc2.h: Restore __eprintf. Label as used for binary backward compat only. * Makefile.in (LIB2FUNCS_ST): New. Put _eprintf here, not in LIB2FUNCS. Pass it to mklibgcc. * mklibgcc.in: Handle LIB2FUNCS_ST. * Makefile.in (installdirs): Don't create $(gcc_tooldir). From-SVN: r42057
2001-05-11Makefile.in: Exterminate all references to assert.h.Zack Weinberg1-18/+0
* Makefile.in: Exterminate all references to assert.h. * cross-make: Likewise. * assert.h: Delete. * configure.in: Correct commentary. * configure: Regenerate. * po/POTFILES.in: Remove assert.h. * libgcc-std.ver, libgcc2.c, libgcc2.h, sys-protos.h: Remove __eprintf. * config/t-freebsd, config/t-linux, config/t-linux-aout, config/t-netbsd, config/t-rtems, config/x-linux, config/i386/t-beos, config/mcore/t-mcore, config/mcore/t-mcore-pe: No need to override INSTALL_ASSERT_H. * fixinc/fixinc.dgux, fixinc/fixinc.interix, fixinc/fixinc.ptx, fixinc/fixinc.svr4, fixinc/fixinc.winnt, fixinc/fixinc.wrap, fixinc/fixincl.sh: Don't install assert.h into objdir/include. From-SVN: r41972
2001-04-25Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.Zack Weinberg1-228/+0
* Makefile.in (LIB2FUNCS): Remove _varargs and __dummy. * libgcc-std.ver: Remove __builtin_saveregs, __dummy, and __empty. * libgcc2.c: Remove __dummy and __builtin_saveregs. * libgcc2.h: Don't prototype __builtin_saveregs or __dummy. * config/i860/varargs.asm: New file - preserve i860 __builtin_saveregs for future reference. From-SVN: r41529
2001-03-29* libgcc2.c [L__main]: Include unwind-dw2-fde.h instead of frame.h.Richard Henderson1-1/+1
From-SVN: r40957
2001-03-28IA-64 ABI Exception Handling.Richard Henderson1-1218/+0
From-SVN: r40924
2001-02-08improve commentsJason Merrill1-5/+15
From-SVN: r39537
2001-01-31libgcc2.h (Wtype_MAX, Wtype_MIN): Define.Alexandre Oliva1-8/+8
* libgcc2.h (Wtype_MAX, Wtype_MIN): Define. * libgcc2.c (__fixunssfSI, __fixunsdfSI, __fixunsxfSI): Use Wtype_MIN instead of LONG_MIN. From-SVN: r39365
2001-01-28configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.Kaveh R. Ghazi1-1/+0
* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h. * Makefile.in: Remove all dependencies on defaults.h. * builtins.c: Don't include defaults.h. * c-common.c: Likewise. * c-decl.c: Likewise. * c-pragma.c: Likewise. * c-typeck.c: Likewise. * combine.c: Likewise. * i386.c: Likewise. * frame-ia64.c: Likewise. * cppexp.c: Likewise. * crtstuff.c: Likewise. * dbxout.c: Likewise. * dwarf2out.c: Likewise. * dwarfout.c: Likewise. * emit-rtl.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * final.c: Likewise. * frame-dwarf2.c: Likewise. * libgcc2.c: Likewise. * optabs.c: Likewise. * profile.c: Likewise. * sdbout.c: Likewise. * toplev.c: Likewise. * tradcif.y: Likewise. * tree.c: Likewise. * varasm.c: Likewise. ch: * Makefile.in: Remove all dependencies on defaults.h. * decl.c: Don't include defaults.h. * timing.c: Likewise. cp: * Make-lang.in: Remove all dependencies on defaults.h. * call.c: Don't include defaults.h. * decl.c: Likewise. * decl2.c: Likewise. * except.c: Likewise. * pt.c: Likewise. * rtti.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. f: * Make-lang.in: Remove all dependencies on defaults.h. * com.c: Don't include defaults.h. java: * Make-lang.in: Remove all dependencies on defaults.h. * decl.c: Don't include defaults.h. * expr.c: Likewise. * parse.y: Likewise. From-SVN: r39308
2001-01-23Eliminate IA-64 compiler warnings.Jim Wilson1-2/+2
* dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned. * frame.h (__ia64_personality_v1): Add prototype. * libgcc2.c (ia64_throw_helper): Change personality declaration to prototype form. Add void * cast to first argument to personality call. ... From-SVN: r39227
2001-01-23libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols.Chris Demetriou1-1/+10
2001-01-23 Chris Demetriou <cgd@broadcom.com> * libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols. * libgcc2.c (__terminate_func): Make variable static. (__terminate_set_func): New function to set __terminate_func. * libgcc2.h (__terminate_func_ptr): New typedef. (__terminate_set_func): New function. From-SVN: r39224
2001-01-23libgcc2.c (get_reg_addr): Don't abort if we haven't got a copy of a saved ↵Andrew Haley1-69/+61
register; return NULL instead. 2001-01-17 Andrew Haley <aph@redhat.com> * libgcc2.c (get_reg_addr): Don't abort if we haven't got a copy of a saved register; return NULL instead. (copy_reg): Take a pointer to a source register rather than a frame_state. (next_stack_level): Remember the address in the stack frame of all saved registers. Use the saved register pointer array as the source of the CFA. (throw_helper): Rewrite. Unwind once rather than twice and keep track of saved registers as we go. From-SVN: r39199
2001-01-13c-decl.c (start_function): Don't warn if old prototype is builtin that's not ↵Richard Kenner1-4/+4
in C's namespace. * c-decl.c (start_function): Don't warn if old prototype is builtin that's not in C's namespace. * libgcc2.c (_varargs): Update definition of __builtin_saveregs. (_bb): Add prototype for ctime. * config/alpha/osf.h (TRANSFER_FROM_TRAMPOLINE): Add missing protos. From-SVN: r38980
2000-12-16libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes.Michael Hayes1-30/+30
* libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes. * libgcc2.c (__absvsi2): Use Wtype and DWtype. (__absvdi2, __addvsi3, __addvdi3, __subvsi3): Likewise. (__subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2): Likewise. From-SVN: r38314
2000-12-06osf.h: Standarize copyright statement.Rodney Brown1-1/+1
* config/alpha/osf.h: Standarize copyright statement. * config/arc/arc.h: Likewise. * config/arm/elf.h config/arm/coff.h config/arm/aout.h: Likewise. * config/arm/arm.c config/arm/arm.h: Likewise. * config/elxsi/elxsi.h: Likewise. * config/i386/sco.h: Likewise. * config/m68k/crds.h config/m68k/hp320.h config/m68k/lynx.h: Likewise. * config/m68k/m68kv4.h config/m68k/next21.h: Likewise. * config/m68k/sun3.h: Likewise. * config/m88k/dgux.h config/m88k/dguxbcs.h: Likewise. * config/pdp11/2bsd.h config/pdp11/pdp11.h: Likewise. * config/romp/romp.h: Likewise. * config/rs6000/aix41.h: Likewise. * config/sparc/sysv4.h: Likewise. * config/we32k/we32k.c config/we32k/we32k.h: Likewise. * fixinc/gnu-regex.c fixinc/gnu-regex.h: Likewise. * cpplib.h cppexp.c cselib.h profile.c: Likewise. * longlong.h: Likewise. * libgcc2.c: Likewise. From-SVN: r38088
2000-10-31libgcc2.c (__shtab): Remove __shtab variable.Chris Demetriou1-13/+0
* libgcc2.c (__shtab): Remove __shtab variable. * libgcc-std.ver (GCC_3.0): Remove __shtab from symbol list. * Makefile.in (LIB2FUNCS): Remove _shtab from list of library members. From-SVN: r37175
2000-10-20Warning fixes:Kaveh R. Ghazi1-1/+1
* mips.h (REG_CLASS_FROM_LETTER): Cast array arg to unsigned char. * sparc.c (load_pic_register): Delete unused varaible. * libgcc2.c (__addvsi3): Delete unused variable. * libgcc2.h (__absvsi2, __absvdi2, __addvsi3, __addvdi3, __subvsi3, __subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2): Prototype. * ssa.c (apply_delayed_renames): Avoid undefined operation. * toplev.c (display_target_options): Make static to match prototype. Delete empty declaration. From-SVN: r36987
2000-10-19* libgcc2.c (_mulvsi3): Change variables u and v to a and b.Chandrakala Chavva1-1/+1
From-SVN: r36952
2000-10-19Added the missing #endif.Chandrakala Chavva1-18/+17
From-SVN: r36950
2000-10-18Adding new option -ftrapv.Chandrakala Chavva1-0/+170
From-SVN: r36942
2000-10-09Makefile.in (LANG_LIB2FUNCS): Remove.Richard Henderson1-26/+1
* Makefile.in (LANG_LIB2FUNCS): Remove. (LIB2FUNCS): Remove _pure. (LIB2ADD): Remove LANG_LIB2FUNCS. (stage_a): Don't set LANG_LIB2FUNCS. * libgcc2.c (__terminate): Mark noreturn. (__pure_virtual): Remove. * mklibgcc.in: Remove LIB2ADD .txt processing. From-SVN: r36817
2000-10-05Makefile.in (LIB2FUNCS): Add _clz.Richard Henderson1-14/+17
* Makefile.in (LIB2FUNCS): Add _clz. * libgcc2.c (__ffsdi2): Use count_trailing_zeros. (__clz_tab): Put in its own unit, non-static. * libgcc2.h: Always include longlong.h. From-SVN: r36744
2000-08-08frame.h (ia64_frame_state): Add my_psp.Richard Henderson1-17/+16
* frame.h (ia64_frame_state): Add my_psp. * libgcc2.c (ia64_throw_helper): Add throw_sp argument. (__throw): Pass it in. Don't clobber r7. * config/ia64/frame-ia64.c (init_ia64_reg_loc): Mark inline. (execute_one_ia64_descriptor) [mem_stack_v]: Sets psp.when and nothing to do with sp. (normalize_reg_loc): Use frame->my_psp. (frame_translate): Handle frame-pointer-less functions. Set spill_base correctly, in absence of being told. (__build_ia64_frame_state): New sp argument. Fill in frame->my_sp. (__ia64_backtrace_helper): New sp argument. Use builtin_return_address instead of label addresses. (print_record) [mem_stack_v]: No size member. From-SVN: r35565
2000-07-10Fix compile time warning messageNick Clifton1-2/+2
From-SVN: r34947
2000-06-26dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_def_cfa_expression.Andrew Macleod1-0/+3
* dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_def_cfa_expression. * dwarf2out.c (union dw_cfi_oprnd_struct): Add a pointer to a dw_loc_descr_struct entry. (struct cfa_loc): New structure to track a CFA location. (lookup_cfa): Take a cfa_loc parameter instead of a reg and an offset. (lookup_cfa_1): Take a cfa_loc parameter instead of a reg and an offset, plus handle DW_CFA_def_cfa_expression. (def_cfa_1): Use to be dwarf2out_def_cfa, only now it uses a cfa_loc record. (dwarf2out_def_cfa): Entry point maintained for compatability. (dwarf_cfi_name): Add DW_CFA_def_cfa_expression. (cfa_reg, cfa_offset): Replace with cfa_loc record 'cfa'. (cfa_store_reg, cfa_store_offset): Replace with cfa_loc 'cfa_store'. (initial_return_save, dwarf2out_stack_adjust): Use cfa.reg, not cfa_reg. (dwarf2out_frame_debug_expr): Use new cfa_loc records. Recognize rtl sequences for the new DW_CFA_def_cfa_expression record. (dwarf2out_frame_debug): Use new variables/fields.A (output_cfi): Handle DW_CFA_def_cfa_expression. (output_cfa_loc): New function to generate a CFI record for DW_CFA_def_cfa_expression. (get_cfa_from_loc_descr): New function to get a cfa_loc record from a dw_loc_descr sequeunce. (build_loc_descr): Build a dw_loc_descr from a cfa_loc record. (dwarf_stack_op_name, new_loc_descr, add_loc_descr, size_of_loc_descr, size_of_locs, output_loc_operands, output_loc_sequence): Move into unwind info section. * frame.h (frame_state): Add base_offset and indirect fields. * frame-dwarf2.c (decode_stack_op): New function to interpret a dw_loc_descr operation. (execute_cfa_insn): Add support for DW_CFA_def_cfa_expression. (struct frame_state): Add base offset and indirect fields. * libgcc2.c (next_stack_level): Support indirect loading for CFA. From-SVN: r34717
2000-06-13libgcc2.c (ia64_throw_helper): Use __builtin_return_address.Richard Henderson1-4/+3
* libgcc2.c (ia64_throw_helper): Use __builtin_return_address. (__throw): Don't pass the address of a label. * config/ia64/ia64.c (ia64_compute_frame_size): Use current_function_is_leaf. (ia64_expand_prologue): Likewise. Modify return_address_pointer_rtx instead of reg_names[RETURN_ADDRESS_REGNUM]. (ia64_init_machine_status): Reset return_address_pointer_rtx. * config/ia64/ia64.h (RETURN_ADDRESS_POINTER_REGNUM): Rename from RETURN_ADDRESS_REGNUM. Update all uses. (RETURN_ADDR_RTX): Use return_address_pointer_rtx; return zero instead of null on failure. (ELIMINABLE_REGS): Add ra->b0 elimination. (CAN_ELIMINATE): Update accordingly. (INITIAL_ELIMINATION_OFFSET): Likewise. (REGISTER_NAMES): Use an illegal assembler name for RETURN_ADDRESS_POINTER_REGNUM. From-SVN: r34531
2000-06-06eh-common.h (EH_ALLOC_SIZE, [...]): New #defines.Nathan Sidwell1-0/+69
gcc: * eh-common.h (EH_ALLOC_SIZE, EH_ALLOC_ALIGN): New #defines. (eh_context): Add alloc_mask and alloc_buffer emergency fallback space. * libgcc2.c (__eh_alloc): Moved from cp/exception.cc. Fallback on emergency eh_context buffer, if malloc fails. (__eh_free): Moved from cp/exception.cc. Release to emergency eh_context buffer, if appropriate. gcc/cp: * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c From-SVN: r34429
2000-05-25except.c (func_eh_entry): Add emitted field.Andrew MacLeod1-0/+167
2000-05-25 Andrew MacLeod <amacleod@cygnus.com> Andrew Haley <aph@cygnus.com> * except.c (func_eh_entry): Add emitted field. (new_eh_region_entry): Set emitted field to 0; (output_exception_table_entry): Only emit previously un-emitted data, and send it to the eh_data section. (output_exception_table): Break out common parts. Output exception table for entire compilation unit to eh_data section. (output_exception_table_data): Common parts of output_exception_table. Send output to eh_data section. (output_function_exception_table): Output exception table data for a single function to eh_data section. (free_exception_table): New external to free the table. * except.h (free_exception_table): Add prototype. (output_function_exception_table): Add prototype. * final.c (final_end_function): Output function exception table for IA64_UNWIND_INFO. (final_scan_insn): Emit any unwind directives for an insn. * frame-dwarf2.c: New file containing all DWARF 2 specific code from frame.c. * frame.c: Remove all DWARF 2 specific code. * config/ia64/frame-ia64.c: New file. (gthread_stuff): Make all gthread available with IA64_UNWIND_INFO. (dwarf_fde): Define an IA64 struct for dwarf_fde. (__register_frame_info, __register_frame): Move to common area of file. (__register_frame_info_table, __register_frame_table): Move to common i area. (__deregister_frame_info, __deregister_frame): Move to common area. (__frame_init, find_fde): New versions for IA64_UNWIND_INFO. (read_uleb128): New version for ia64. (get_unwind_record): Read the next IA-64 unwind record. (read_R_record): Read a region header record. (process_a_b_reg_code): X record helper. (read_X_record): Read an X format record. (read_B_record): Read a B format record. (P3_record_types): List of record types matching the P3 format. (P7_record_types): List of record types matching the P7 format. (P8_record_types): List of record types matching the P8 format. (read_P_record): Read a P format record. (init_ia64_reg_loc): Set default fields for a register. (init_ia64_unwind_frame): Set defaults for all register records. (execute_one_ia64_descriptor): Execute one descriptor record. (rse_address_add): Calculate the position of a local reg in memory. (normalize_reg_loc): Turn a location descriptor into a memory address. (maybe_normalize_reg_loc): Only normalize a descriptor if it falls within a specified PC offset range. (get_real_reg_value): Given a register location, retrieve its value. (set_real_reg_value): Change the value of a register location. (copy_reg_value): Copy reg values, if needed. (copy_saved_reg_state): Copy all registers that need to be copied. (process_state_between): Normalize all frame register records that fall within the specified PC range. (frame_translate): Take a processed frame description, and turn everything into addresses. (build_ia64_frame_state ): Find and create frame state record for a PC. (get_personality): Get the personality routine for a given frame. (get_except_table): Get the exception table for a given frame. (record_name): Unwind record names for debugging. (print_record): Print and unwind record. (print_all_records): Print an entire unwind image. (__ia64_backtrace): Print a backtrace. (ia64_backtrace_helper): New function. (__register_frame_info_aux): New function. * config/ia64/crtend.asm (__do_frame_setup_aux): New function. * frame.h (enum unw_record_type): New unwind record types. (struct unw_p_record, unw_b_record, unw_x_record) : New unwind records. (struct unw_r_record, unwind_record): New unwind record structs. (struct unwind_info_ptr): Unwind information layout. (IA64_UNW_LOC_TYPE_*): Macros for different types for location descriptors. (struct ia64_reg_loc): Register location description. (struct ia64_frame_state): Location of all registers in a frame. (struct object): Add pc_base and fde_end for IA64_UNWIND_INFO. * libgcc2.c (__ia64_personality_v1): Personality routine. (__calc_caller_bsp): Calculate the bsp register for the caller's frame. (ia64_throw_helper): Figure out who to return to and set up the registers. (__throw): Throw routine. * output.h (assemble_eh_align, assemble_eh_label): New functions to generate EH info where we want it. (assemble_eh_integer): New function. * toplev.c (compile_file): Output module level exception table for non-ia64 targets. (main): Set exceptions_via_longjump and flag_new_exceptions based on IA64_UNWIND_INFO too. * varasm.c (assemble_eh_label): Generate a label via ASM_OUTPUT_EH_LABEL if it has been specified. (assemble_eh_align): Generate an alignment directive via ASM_OUTPUT_EH_ALIGN if it has been specified. (assemble_eh_label): Generate an integer value via ASM_OUTPUT_EH_type if they have been specified. * config/ia64/ia64.c (rtx_needs_barrier): Add flushrs. (ia64_init_builtins): Add __builtin_ia64_bsp and __builtin_ia64_flushrs. (ia64_expand_builtin): Add IA64_BUILTIN_BSP and IA64_BUILTIN_FLUSHRS. * config/ia64/ia64.h (ia64_builtins): Add IA64_BUILTIN_BSP and IA64_BUILTIN_FLUSHRS. * config/ia64/ia64.md (flushrs): New insn to flush the register stack. Add to unspec list. * config/ia64/crtbegin.asm (frame_object): Change size. (__do_frame_setup_aux): New function. * config/ia64/crtend.asm: call __do_frame_setup_aux. * config/ia64/t-ia64 (LIB2ADDEH): Add. * Makefile.in (LIB2ADDEH): Add. (LIB2ADD): Use LIB2ADDEH. Co-Authored-By: Andrew Haley <aph@cygnus.com> From-SVN: r34169
2000-05-24configure.in: Redefine inhibit_libc conditions.Eric Christopher1-7/+0
* configure.in: Redefine inhibit_libc conditions. * libgcc2.c: Remove inhibit_libc conditional define. * configure: Regenerate. From-SVN: r34126
2000-05-15Update to libgcc copyright exception clause.Jeff Law1-7/+9
From-SVN: r33916
2000-05-04libgcc2.c (near eh_context_specific): Comment #endif string.Richard Henderson1-1/+1
* libgcc2.c (near eh_context_specific): Comment #endif string. * longlong.h: Don't use strings with embedded newlines. From-SVN: r33687
2000-04-15configure.in (alpha*-*-*): Aad config/alpha/t-alpha.Richard Kenner1-28/+31
* configure.in (alpha*-*-*): Aad config/alpha/t-alpha. * configure: Rebuilt. * libgcc2.c (__fixunstfDI): Renamed from __fixunstfdi. (__fixunsxfDI): Renamed from __fixunsxfdi. (__fixunsdfDI): Renamed from __fixunsdfdi. (__fixunssfDI): Renamed from __fixunssfdi. (__floatdisf): Use proper type in REP_BIT macro. (__fixunsxfSI): Renamed from __fixunsxfsi. (__fixunsdfSI): Renamed from __fixunsdfsi. (__fixunssfSI): Renamed from __fixunssfsi. * libgcc2.h: Add cases for MIN_UNITS_PER_WORD > 4. Change location of macros and upper-case some names as above. * longlong.h ([alpha]): Use PARAMS, not __P in decl of __udiv__qrnnd. * config/alpha/t-alpha, config/alpha/qrnnd.asm: New files. From-SVN: r33166
2000-03-23rs6000.h (DWARF_FRAME_RETURN_COLUMN): Define.Jason Merrill1-16/+0
* config/rs6000/rs6000.h (DWARF_FRAME_RETURN_COLUMN): Define. * config/alpha/alpha.h (DWARF_FRAME_RETURN_COLUMN): Define. * config/sparc/sparc.h (DWARF_FRAME_RETURN_COLUMN): Define. * frame.h (frame_state): Revert last change. * frame.c (execute_cfa_insn): Just don't record the save of a CFA reg. * libgcc2.c (throw_helper): Revert last change. From-SVN: r32705
2000-03-22Implement dwarf2 exception handling for the ARM.Jason Merrill1-0/+16
* config/arm/arm.h (INCOMING_RETURN_ADDR_RTX): Define. (DWARF_FRAME_RETURN_COLUMN): Define. * config/arm/arm.c (emit_multi_reg_push): Return rtx. Attach REG_FRAME_RELATED_EXPR note. (emit_sfm): Likewise. (arm_expand_prologue): Set RTX_FRAME_RELATED_P on everything. * dwarf2out.c (reg_save): Handle saving a register to itself. (dwarf2out_frame_debug_expr): Handle an intermediate cfa reg. * except.c (eh_regs): Don't use the static chain reg if it's callee-saved. * frame.h (frame_state): Add cfa_saved field. * frame.c (execute_cfa_insn): Set it. * libgcc2.c (throw_helper): Don't adjust sp if it's restored in the epilogue. * function.c (ARG_POINTER_CFA_OFFSET): Default to FIRST_PARM_OFFSET. Now takes a parm. (instantiate_virtual_regs): Adjust. * tm.texi: Adjust. * config/m68k/m68k.h (ARG_POINTER_CFA_OFFSET): Don't define. * config/ns32k/ns32k.h (ARG_POINTER_CFA_OFFSET): Don't define. * config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): Take a parm. * dwarf2out.c (reg_number): Refer to FIRST_PSEUDO_REGISTER. (initial_return_save): Use DWARF_FRAME_REGNUM, not reg_number. From-SVN: r32696
2000-03-09libgcc2.h: New file.Kaveh R. Ghazi1-199/+3
* libgcc2.h: New file. * libgcc2.c: Move macros, typedefs and prototypes to libgcc2.h. From-SVN: r32440
2000-02-01frame.c (find_fde): Convert for loop to do-while so compiler sees it's ↵Zack Weinberg1-8/+7
always executed at least once. * frame.c (find_fde): Convert for loop to do-while so compiler sees it's always executed at least once. * libgcc2.c (BBINBUFSIZE): Kill. (__bb_init_prg): Use fgets. (__bb_exit_trace_func): Don't paste strings. * unroll.c (unroll_loop): Initialize unroll_type, not unroll_number, and tweak logic to match. * i386.c (ix86_expand_int_movcc): Add explicit 'return 0' in all failure paths. (ix86_flags_dependant): Likewise. Disentangle control flow. (ix86_sched_reorder): Break guts out to ix86_sched_reorder_pentium and ix86_sched_reorder_ppro. (ix86_sched_reorder_ppro): Initialize pair2 and insnp before any possible use. * i386.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Don't use string concatenation. Don't save and restore esi. * fixinc/Makefile.in (fixincl.sh): Don't depend on inclhack.def. (machname.h): Remove script to separate file. Use two-step sequence so target is not created if script fails. * fixinc/gen-machname.h: New file. Handle case where no non-reserved identifiers are defined. * fixinc/fixlib.c (mn_get_regexps): Return a flag: if MN_NAME_PAT is an empty string, machine_name doesn't need to do anything at all. (is_cxx_header): Add more cases to regexp. * fixinc/fixlib.h: Update prototype. * fixinc/fixtests.c, fixinc/fixfixes.c: Update callers of mn_get_regexps. * fixinc/fixincl.c: Define NO_BOGOSITY. * fixinc/inclhack.def (no_double_slash, else_endif_label): Ifdef out. (hp_sysfile): Add missing comma. (math_exception): Put the wrapper ifdefs at the beginning and the end of the file. * fixinc/fixincl.x, fixinc/inclhack.sh: Regenerate. From-SVN: r31744
2000-02-01tsystem.h: New file.Kaveh R. Ghazi1-27/+1
* tsystem.h: New file. * Makefile.in (libgcc2.a, stmp-multilib, crtbegin.o, crtend.o, s-crtS): Depend on tsystem.h. * crtstuff.c: Include tsystem.h. * frame.c: Likewise. * libgcc2.c: Likewise. From-SVN: r31741
2000-01-26calls.c (special_function_p): New argument fork_or_exec.J"orn Rennecke1-14/+80
gcc: * calls.c (special_function_p): New argument fork_or_exec. (expand_call): When profile_arc_flag is set and the function is in the fork_or_exec group, call __bb_fork_func first. * libgcc2.c, _bb module (__bb_fork_func): New function. (__bb_exit_func): If fcntl F_SETLKW is available, use it to lock output file. * config/svr4.h (TARGET_HAS_F_SETLKW): Define. * tree.h (special_function_p): Update prototype. gcc/cp: * cp/optimize.c (calls_setjmp_r): Supply new argument to special_function_p. From-SVN: r31635
2000-01-23libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS.Richard Henderson1-2/+2
* libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS. (throw_helper): Iterate over DWARF_FRAME_REGISTERS. From-SVN: r31576
1999-12-29crtstuff.c: If !inhibit_libc, include stdlib.h/unistd.h.Kaveh R. Ghazi1-1/+1
* 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. From-SVN: r31124
1999-12-27h8300.h (TARGET_H8300H, [...]): Make sure UNITS_PER_WORD and BITS_PER_WORD ↵Jakub Jelinek1-191/+283
are compile time constants when... * 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. From-SVN: r31095
1999-12-12gthr-single.h (__gthread_active_p): Add prototype arguments.Kaveh R. Ghazi1-68/+60
* 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 declaration. (in_reg_window): Mark parameters with __attribute__ ((__unused__)). (throw_helper): Initialize variables `handler_p' and `pc_p'. From-SVN: r30872
1999-12-08longlong.h: Merge in changes from glibc.Jakub Jelinek1-0/+8
* 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. From-SVN: r30836
1999-11-22xm-i386.h: Define `__i386__' if not defined...David O'Brien1-1/+1
* 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. From-SVN: r30627
1999-11-02libgcc2.c (__do_global_dtors): Only do EH frame stuff if ! HAS_INIT_SECTION.Jason Merrill1-1/+1
* libgcc2.c (__do_global_dtors): Only do EH frame stuff if ! HAS_INIT_SECTION. From-SVN: r30339
1999-10-31[multiple changes]Richard Kenner1-2/+2
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 06:32:44 1999 Geoffrey Keating <geoffk@cygnus.com> * 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. Fri Oct 29 07:44:26 1999 Vasco Pedro <vp@di.fct.unl.pt> * fold-const.c (merge_ranges): In not in0, but in1, handle upper bounds equal like subset case. Thu Oct 28 19:22:24 1999 Douglas Rupp <rupp@gnat.com> * 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 <tardieu@act-europe.fr> * 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 <kenner@vlsi1.ultra.nyu.edu> * 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. * pa.md (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 readony; 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 directions. * 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 CONSTRUCTOR of ARRAY_TYPE. * 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 cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and 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 optimize COMPONENT_REF of a PLACEHOLDER_EXPR. * 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 a PLUS. (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 DECL_RTL is a PARALLEL. (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 constraints. (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. From-SVN: r30299
1999-10-14libgcc2.c (__do_global_dtors): Protect __deregister_frame_info from multiple ↵Gavin Romig-Koch1-1/+8
calls. * libgcc2.c (__do_global_dtors): Protect __deregister_frame_info from multiple calls. From-SVN: r29979
1999-10-05Do not include stddef.h if building trampoline support and inhibit_libc is ↵Michael Meissner1-1/+3
defined From-SVN: r29831
1999-10-05Mark args as unused.Michael Meissner1-1/+2
From-SVN: r29830
1999-10-05Declare malloc, free, and atexit if inhibit_libc is defined.Michael Meissner1-1/+13
From-SVN: r29829
1999-09-30Use lookup table to get register sizes in dwarf2 ehBernd Schmidt1-2/+25
From-SVN: r29730