aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/ia64/t-ia64
AgeCommit message (Collapse)AuthorFilesLines
2005-02-25re PR target/19930 (gcc.dg/pr19402-2.c fails on ia64-hpux)Steve Ellcey1-1/+2
PR target/19930 * doc/tm.texi (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Document. (LIBGCC2_HAS_DF_MODE): New. (LIBGCC2_HAS_XF_MODE): New. (LIBGCC2_HAS_TF_MODE): New. * libgcc2.h (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE. (LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE. * libgcc2.c (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE. (LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE. (LIBGCC2_HAS_DF_MODE): New name for HAVE_DFMODE. * config/ia64/t-ia64 (LIB1ASMFUNCS): Remove __compat and add _fixtfdi, _fixunstfdi, _floatditf * lib1funcs.asm: Remove L__compat. Add L_fixtfdi, L_fixunstfdi, L_floatditf. * config/ia64/hpux.h (LIBGCC2_HAS_XF_MODE): Define. (LIBGCC2_HAS_TF_MODE): Define. From-SVN: r95548
2004-05-04t-ia64 (LIB2ADDEH): Remove gthr-gnat.c.H.J. Lu1-1/+1
2004-05-04 H.J. Lu <hongjiu.lu@intel.com> * config/ia64/t-ia64 (LIB2ADDEH): Remove gthr-gnat.c. * config/s390/t-tpf (LIB2ADDEHDEP): Likewise. * config/t-linux (LIB2ADDEHDEP): Likewise. From-SVN: r81478
2003-10-29* config/ia64/t-ia64 (LIB2ADDEH): Add $(srcdir)/gthr-gnat.c.Andreas Schwab1-1/+1
From-SVN: r73050
2003-10-25genmodes.c (struct mode_data): Add contained and next_cont fields.Zack Weinberg1-2/+2
* genmodes.c (struct mode_data): Add contained and next_cont fields. (complete_mode): Maintain linked list of modes that have a given component. (emit_mode_unit_size): Delete. (emit_mode_nunits): New. (emit_insn_modes_c): Update to match. (emit_mode_adjustments): Propagate size and alignment adjustments from component modes to their containers. * machmode.h (mode_unit_size): Delete. (mode_nunits): New. (GET_MODE_NUNITS): Just return the value in the table. (GET_MODE_UNIT_SIZE): Compute using GET_MODE_INNER and GET_MODE_SIZE. * expmed.c (store_bit_field, extract_bit_field): Can use a plain move instruction if bitsize >= GET_MODE_BITSIZE of destination/source mode, respectively. * varasm.c (assemble_real): Write out the full size of the constant, not just its bitsize. (output_constant): Honor TYPE_MODE of TREE_REAL_CSTs. * config/ia64/ia64-modes.def: Define XFmode as well as TFmode. Use ADJUST_BYTESIZE and ADJUST_ALIGNMENT to set size and alignment of XF and TF modes in compliance with ia64 ABIs. Can now hardwire the format of both modes. * config/ia64/ia64.c: Change TFmode to XFmode wherever appropriate. (general_tfmode_operand, destination_tfmode_operand) (tfreg_or_fp01_operand, spill_tfmode_operand): Rename to general_xfmode_operand, destination_xfmode_operand, xfreg_or_fp01_operand, spill_xfmode_operand respectively. (ia64_init_builtins): Make TYPE_PRECISION of fpreg_type and float80_type be 96 so they get XFmode. Use !TARGET_HPUX, not INTEL_EXTENDED_IEEE_FORMAT, to decide how to define __float128. * config/ia64/ia64.h: Default TARGET_HPUX to 0. Change TFmode to XFmode wherever appropriate. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. (LONG_DOUBLE_TYPE_SIZE): Varies with TARGET_HPUX. (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define (always 96). (PREDICATE_CODES): Update to match function renames. * config/ia64/ia64.md: Change TF to XF throughout; rename all patterns to match. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. Update predicate calls to match function renames. * config/ia64/ia64-protos.c: Update all prototypes to match renamed functions. * config/ia64/hpux.h: Redefine TARGET_HPUX to 1. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. * config/ia64/lib1funcs.asm: Add __divxf3 as new name for __divtf3; keep old name for backward compatibility. (L__compat): New section providing forwarding stubs for __fixtfti, __fixunstfti, __floattitf. * config/ia64/t-ia64: Add __compat to LIB1ASMFUNCS. From-SVN: r72916
2003-06-04c-common.c (handle_cleanup_attribute): New.Richard Henderson1-1/+2
* c-common.c (handle_cleanup_attribute): New. (c_common_attributes): Add it. * c-decl.c (finish_decl): Honor the cleanup attribute. * doc/extend.texi (Variable Attributes): Document it. * unwind-c.c: New file. * Makefile.in (LIB2ADDEH): Add it. * config/t-darwin, config/t-linux, config/t-linux-gnulibc1, config/ia64/t-ia64: Likewise. * gcc.dg/cleanup-1.c: New. * gcc.dg/cleanup-2.c: New. * gcc.dg/cleanup-3.c: New. * gcc.dg/cleanup-4.c: New. * gcc.dg/cleanup-5.c: New. * gcc.dg/cleanup-6.c: New. * gcc.dg/cleanup-7.c: New. From-SVN: r67449
2003-01-22* config/ia64/t-ia64 (insn-attrtab.o-warn): Define as -Wno-error.Andreas Schwab1-0/+3
From-SVN: r61590
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg1-2/+2
From-SVN: r60174
2002-11-07crtend.asm: Include "auto-host.h".David Mosberger1-5/+11
* config/ia64/crtend.asm: Include "auto-host.h". [HAVE_INITFINI_ARRAY]: Invoke __do_global_ctors_aux via .init_array. * config/ia64/crtbegin.asm: Similarly. * config/ia64/t-ia64 (crtbegin.o): Include from current directory. (crtend.o, crtbeginS.o, crtendS.o): Likewise. * aclocal.m4 (gcc_AC_INITFINI_ARRAY): New. * configure.in: Use it if --enable-initfini-array not specified. * doc/install.texi (Configuration): Document --enable-initfini-array. * configure, config.in: Rebuild. From-SVN: r58909
2002-09-13config.gcc (ia64*-*-aix*, [...]): Set extra_parts.Steve Ellcey1-5/+0
* config.gcc (ia64*-*-aix*, ia64*-*-elf*, ia64*-*-freebsd*, ia64*-*-linux*): Set extra_parts. * config/ia64/t-aix (EXTRA_PARTS): Remove. * config/ia64/t-ia64 (EXTRA_PARTS): Remove. From-SVN: r57119
2002-09-03config.gcc (ia64*-*-hpux*): Add ia64-c.o to c_target and cxx_target.Steve Ellcey1-0/+4
* config.gcc (ia64*-*-hpux*): Add ia64-c.o to c_target and cxx_target. * config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Register pragma handling routine for builtin pragma. * config/ia64/ia64-protos.h (ia64_hpux_handle_builtin_pragma): Registered pragma handling routine. * ia64-c.c (ia64_hpux_handle_builtin_pragma): Ditto. (ia64_hpux_add_pragma_builtin) New subroutine used by above. If builtin pragma seen for math routine and C89 conformance is requested use different math function in order to set errno. * t-ia64 (ia64-c.o): Add new rule for new file. From-SVN: r56767
2002-01-02config.gcc (ia64-*-*): Set extra_headers.Joseph Myers1-1/+0
* config.gcc (ia64-*-*): Set extra_headers. (alpha*-dec-osf*): Likewise. Don't use alpha/t-osf. * config/alpha/t-osf: Remove. * config/ia64/t-ia64 (EXTRA_HEADERS): Remove. From-SVN: r48483
2001-07-05Remove bogus patch.Jim Wilson1-4/+9
* config/ia64/lib1funcs.asm: Revert 2001-07-02 change. * config/ia64/t-ia64: Likewise. (LIB1ASMFUNCS): Update comment. From-SVN: r43796
2001-07-02Fix HPUX libgcc_s.so linking problem.Jim Wilson1-7/+4
* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment. * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore. * config/ia64/lib1funcs.asm: Change macro names to match t-ia64. From-SVN: r43700
2001-06-22crtfastmath.c: New file.David Mosberger1-1/+3
* config/ia64/crtfastmath.c: New file. * config/ia64/t-ia64 (EXTRA_PARTS): Include it. * config/ia64/linux.h (ENDFILE_SPEC): New. From-SVN: r43515
2001-05-17i * libgcc1-test.c, libgcc1.c, config/i386/perform.h: Delete file.Zack Weinberg1-5/+0
* testsuite/gcc.dg/complete-port.c: New (revised version of libgcc1-test.c) * po/POTFILES.in: Remove libgcc1-test.c and libgcc1.c. * Makefile.in: Delete variables: OLDCC, CCLIBFLAGS, OLDAR, OLDAR_FLAGS, LIBGCC1, LIBGCC1_TEST, CROSS_LIBGCC1, LIB1FUNCS, and LIB1FUNCS_EXTRA. Delete rules: libgcc1-test, libgcc1-test.o. Clarify commentary now that libgcc1 no longer exists. * cross-make: Don't set LIBGCC1. * mklibgcc.in: Delete all code for building from libgcc1.c. Always honor LIB1ASMFUNCS if set. * crtstuff.c, floatlib.c, longlong.h, config/fp-bit.c, config/arc/lib1funcs.asm, config/arm/lib1funcs.asm, config/d30v/libgcc1.asm, config/fr30/lib1funcs.asm, config/h8300/lib1funcs.asm, config/i386/cygwin.asm, config/i386/uwin.asm, config/m68hc11/larith.asm, config/m68k/lb1sf68.asm, config/mcore/lib1.asm, config/mn10200/lib1funcs.asm, config/sh/lib1funcs.asm, config/sparc/lb1spc.asm, config/sparc/lb1spl.asm, config/v850/lib1funcs.asm, config/c4x/libgcc.S: Delete or update references to libgcc1 in commentary. * config/t-libc-ok, config/t-linux, config/t-linux-aout, config/t-netbsd, config/a29k/t-a29kbare, config/a29k/t-vx29k, config/alpha/t-interix, config/alpha/t-osf, config/alpha/t-vms, config/arc/t-arc, config/arm/t-arm-aout, config/arm/t-arm-coff, config/arm/t-arm-elf, config/arm/t-linux, config/arm/t-pe, config/arm/t-semi, config/arm/t-strongarm-coff, config/arm/t-strongarm-elf, config/arm/t-strongarm-pe, config/arm/t-xscale-coff, config/arm/t-xscale-elf, config/avr/t-avr, config/c4x/t-c4x, config/d30v/t-d30v, config/fr30/t-fr30, config/h8300/t-h8300, config/i386/t-beos, config/i386/t-cygwin, config/i386/t-i386elf, config/i386/t-interix, config/i386/t-netware, config/i386/t-next, config/i386/t-rtems-i386, config/i386/t-sol2, config/i960/t-960bare, config/i960/t-vxworks960, config/ia64/t-ia64, config/m32r/t-m32r, config/m68hc11/t-m68hc11-gas, config/m68k/t-lynx, config/m68k/t-m68kbare, config/m68k/t-m68kelf, config/m68k/t-mot3300-gald, config/m68k/t-mot3300-gas, config/m68k/t-next, config/m68k/t-vxworks68, config/m88k/t-bug, config/m88k/t-dgux, config/m88k/t-dgux-gas, config/m88k/t-dguxbcs, config/m88k/t-luna, config/m88k/t-luna-gas, config/m88k/t-m88k, config/m88k/t-m88k-gas, config/m88k/t-sysv4, config/mcore/t-mcore, config/mcore/t-mcore-pe, config/mips/t-bsd, config/mips/t-bsd-gas, config/mips/t-cross64, config/mips/t-ecoff, config/mips/t-elf, config/mips/t-iris6, config/mips/t-r3900, config/mips/t-svr3, config/mips/t-svr3-gas, config/mips/t-svr4, config/mips/t-svr4-gas, config/mips/t-ultrix, config/mn10200/t-mn10200, config/mn10300/t-mn10300, config/pa/t-linux, config/pa/t-linux64, config/pa/t-pa, config/pa/t-pa64, config/pa/t-pro, config/pdp11/t-pdp11, config/pj/t-pj, config/rs6000/t-aix43, config/rs6000/t-beos, config/rs6000/t-darwin, config/rs6000/t-newas, config/rs6000/t-ppccomm, config/rs6000/t-rs6000, config/sh/t-linux, config/sh/t-sh, config/sparc/t-chorus-elf, config/sparc/t-elf, config/sparc/t-sol2, config/sparc/t-sp86x, config/sparc/t-sparcbare, config/sparc/t-sparclite, config/sparc/t-splet, config/sparc/t-sunos41, config/sparc/t-vxsparc, config/sparc/t-vxsparc64, config/v850/t-v850: Don't set any of LIBGCC1, CROSS_LIBGCC1, or LIBGCC1_TEST. * config/alpha/alpha.h, config/i386/i386.h, config/i860/i860.h: Don't set FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, INTIFY, or FLOATIFY. * config/d30v/d30v.h: Don't mention LIBGCC_NEEDS_DOUBLE, FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, FLOATIFY, INTIFY, nongcc_SI_type, nongcc_word_type, or perform_* * config/i860/fx2800: Don't define perform_umodsi3 or perform_modsi3. * config/i386/386bsd.h, config/i386/beos-elf.h, config/i386/linux-aout.h, config/i386/linux-oldld.h, config/i386/linux.h, config/i386/mach.h, config/i386/netbsd.h, config/i386/openbsd.h, config/i386/osfrose.h, config/i386/rtemself.h: Don't include i386/perform.h. * config/a29k/t-a29k, config/arm/t-semiaof, config/i370/t-i370, config/i370/t-linux, config/i370/t-mvs, config/i370/t-oe, config/i386/t-djgpp, config/i386/t-i386bare, config/i386/t-vsta, config/ia64/t-hpux, config/mips/t-mips, config/mips/t-mips-gas, config/mips/t-osfrose, config/sparc/t-sp64, config/sparc/t-sunos40, config/vax/t-openbsd, config/vax/t-vax: Delete. * config.gcc: Remove references to deleted files. (arm-semi-aof): Use arm/t-semi for tmake_file. * gcc.texi, install.texi, invoke.texi, tm.texi: Delete or rewrite text which is no longer relevant now that libgcc1 no longer exists. * config/t-openbsd, config/alpha/t-interix, config/i386/t-interix: No need to set INSTALL_ASSERT_H. (Missed in previous sweep.) From-SVN: r42188
2001-05-11defaults.h (ASM_PREFERRED_EH_DATA_FORMAT): New.Richard Henderson1-1/+1
* defaults.h (ASM_PREFERRED_EH_DATA_FORMAT): New. * dwarf2asm.c (dw2_force_const_mem, dw2_output_indirect_constant_1, dw2_output_indirect_constants, dw2_asm_output_encoded_addr_rtx): New. * dwarf2asm.h (dw2_asm_output_encoded_addr_rtx): Prototype. (dw2_output_indirect_constants): Prototype. * dwarf2out.c (dwarf2out_begin_prologue): Generate current_function_func_begin_label if we'll need it for EH. Exit early for IA64_UNWIND_INFO. * except.c: Get DW_EH_PE_* defines from dwarf2.h. (eh_data_format_name): Update for indirect references. (output_function_exception_table): Care for IA64_UNWIND_INFO. Handle ASM_PREFERRED_EH_DATA_FORMAT. * except.h (MUST_USE_SJLJ_EXCEPTIONS): IA64_UNWIND_INFO needn't define HAVE_eh_return etc. * final.c (final_start_function): Always call dwarf2out_begin_prologue. (final_end_function): Don't call output_function_exception_table. * toplev.c (compile_file): Call dw2_output_indirect_constants. (rest_of_compilation): Invoke output_function_exception_table for ia64 before assemble_end_function. * tm.texi (ASM_PREFERRED_EH_DATA_FORMAT): Document. (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Document. * unwind-dw2.c (_Unwind_GetTextRelBase, _Unwind_GetDataRelBase): New. * unwind.h: Declare them. * libgcc-std.ver: Export them. * unwind-pe.h: New file. * config/alpha/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): New. * config/ia64/fde-glibc.c: Use "struct unw_table_entry" instead of "fde". (find_fde_for_dso): Extract DT_PLTGOT. (_Unwind_FindTableEntry): Rename from __ia64_find_fde; return the segment and gp as well. * config/ia64/frame-ia64.c: Remove file. * config/ia64/frame-ia64.h: Remove file. * config/ia64/unwind-ia64.c: New file. * config/ia64/unwind-ia64.h: New file. * config/ia64/ia64.h (ASM_OUTPUT_EH_CHAR): Remove. (ASM_OUTPUT_EH_SHORT, ASM_OUTPUT_EH_INT): Remove. (ASM_OUTPUT_EH_DOUBLE_INT): Remove. (ASM_PREFERRED_EH_DATA_FORMAT): New. (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New. (IA64_UNWIND_INFO): Re-enable. (HANDLER_SECTION): Remove. (EH_RETURN_DATA_REGNO): New. * config/ia64/ia64.md (exception_receiver): Remove. * config/ia64/t-glibc (LIB2ADDEH): Re-enable. * config/ia64/t-ia64 (LIB2ADDEH): Re-enable. From-SVN: r41981
2001-04-04ia64.h (IA64_UNWIND_INFO): Disable.Richard Henderson1-2/+1
* config/ia64/ia64.h (IA64_UNWIND_INFO): Disable. * config/ia64/t-glibc (LIB2ADDEH): Disable. * config/ia64/t-ia64 (LIB2ADDEH): Disable. From-SVN: r41096
2000-10-05Makefile.in (NM_FOR_TARGET): New.Richard Henderson1-0/+2
* Makefile.in (NM_FOR_TARGET): New. (libgcc.mk): Pass SHLIB_MKMAP, SHLIB_MAPFILES. (libgcc.a, stmp-multilib): Pass NM_FOR_TARGET. * mklibgcc.in: If SHLIB_MKMAP, build libgcc.map. Depend the shared library build on that and EXTRA_MULTILIB_PARTS. * mkmap-flat.awk: New file. * mkmap-symver.awk: New file. * libgcc-std.ver: New file. * config/libgcc-glibc.ver: New file. * config/ia64/libgcc-ia64.ver: New file. * config/t-linux (SHLIB_MKMAP, SHLIB_MAPFILES): New. (SHLIB_LINK): Add --version-script. * config/ia64/t-ia64 (SHLIB_MAPFILES): Add libgcc-ia64.ver. * config/mips/t-iris6 (SHLIB_MKMAP, SHLIB_MAPFILES): New. * config/sparc/t-sol2 (SHLIB_MKMAP, SHLIB_MAPFILES): New. (SHLIB_LINK): Add -M. From-SVN: r36746
2000-08-14configure.in (ia64-*): Set float_format for i386 long double.Richard Henderson1-1/+1
* configure.in (ia64-*): Set float_format for i386 long double. * real.c (GET_REAL): Treat 128-bit INTEL_EXTENDED_IEEE_FORMAT as we would for i386 XFmode. (PUT_REAL): Likewise. (endian, ereal_atof, real_value_truncate): Likewise. (ereal_isneg, toe64, etens, make_nan): Likewise. * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Likewise. * config/ia64/ia64-protos.h: Update. * config/ia64/ia64.c (general_tfmode_operand): New. (destination_tfmode_operand): New. (tfreg_or_fp01_operand): New. (ia64_split_timode): New. (spill_tfmode_operand): New. (ia64_expand_prologue): Use TFmode not XFmode. (ia64_expand_epilogue): Likewise. (ia64_function_arg): Likewise. (ia64_function_arg_advance): Likewise. (ia64_return_in_memory): Likewise. (ia64_function_value): Likewise. (ia64_print_operand): Likewise. (ia64_register_move_cost): Set GR<->FR to 5. (ia64_secondary_reload_class): Get GR for TImode memory op. * config/ia64/ia64.h (ROUND_TYPE_SIZE): Remove. (ROUND_TYPE_ALIGN): Remove. (LONG_DOUBLE_TYPE_SIZE): Set to 128. (INTEL_EXTENDED_IEEE_FORMAT): Define. (HARD_REGNO_NREGS): Use TFmode, not XFmode. (HARD_REGNO_MODE_OK): Likewise. Disallow TImode in FRs. (MODES_TIEABLE_P): Use TFmode, not XFmode. (CLASS_MAX_NREGS): Likewise. (ASM_OUTPUT_LONG_DOUBLE): Output by 4 byte hunks. (PREDICATE_CODES): Update. * config/ia64/ia64.md (movti): New. (movti_internal): Use a clobber for memory alternatives. (reload_inti, reload_outti): New. (movsfcc_astep): Predicate properly. (movdfcc_astep): Likewise. (movxf): Remove. (movtf): New. (extendsftf2, extenddftf2): New. (trunctfsf2, trunctfdf2): New. (floatditf2, fix_trunctfdi2): New. (floatunsditf2, fixuns_trunctfdi2): New. (addtf3, subtf3, multf3, abstf2): New. (negtf2, nabstf2, mintf3, maxtf3): New. (maddtf3, msubtf3, nmultf3, nmaddtf3): New. (cmptf): New. (fr_spill): Use TFmode, not XFmode. (fr_restore): Likewise. * config/ia64/lib1funcs.asm (__divtf3): New. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add it. From-SVN: r35689
2000-08-08ia64-protos.h: Remove duplicates.Richard Henderson1-1/+1
* config/ia64/ia64-protos.h: Remove duplicates. Update for massive code rearrangements. * config/ia64/ia64.c (ia64_arpfs_regno): Remove. (ia64_rp_regno, ia64_fp_regno, ia64_input_regs): Remove. (ia64_local_regs, ia64_need_regstk): Remove. (ar_ccv_reg_operand): New. (ia64_gp_save_reg): New. (struct ia64_frame_info): Combine most of the size elements; add new gr save elements. (find_gr_spill): New. (next_scratch_gr_reg): New. (mark_reg_gr_used_mask): New. (ia64_compute_frame_size): Rewrite. Allocate special AR regs to GR backing store regs when possible. (ia64_initial_elimination_offset): New. (ia64_rap_fp_offset): Remove. (save_restore_insns): Remove. (setup_spill_pointers): New. (finish_spill_pointers): New. (spill_restore_mem): New. (do_spill, do_restore): New. (ia64_expand_prologue): Rewrite to use them. (ia64_expand_epilogue): Likewise. (ia64_direct_return): Update for current_frame_info changes. (ia64_function_prologue): Simplify .prologue emission. Emit .spill when needed. (ia64_setup_incoming_varargs): Don't ever emit rtl. (ia64_dbx_register_number): New. (ia64_initialize_trampoline): New. (ia64_secondary_reload_class): Request GR_REGS for integer arithmetic destined for FR_REGS. (ia64_init_machine_status): Don't reset return_address_pointer_rtx. (ia64_mark_machine_status): Mark ia64_gp_save. (rws_access_regno): Rename from rws_access_reg; don't treat predicates specially. (rws_access_reg): New. Update all callers. (rtx_needs_barrier): Remove dead unspecs. (ia64_epilogue_uses): Mark ar.pfs and ar.unat live on exit. (ia64_encode_section_info): Silence signed/unsigned warnings. (spill_offset, sp_offset, spill_offset_emitted): Remove. (tmp_reg, tmp_saved): Remove. (process_set): Rewrite to expect complicated bits via REG_FRAME_RELATED_EXPR. (ia64_expand_fetch_and_op): Use emit_move_insn; be explicit in the use of ar.ccv; never set RTX_UNCHANGING_P. (ia64_expand_op_and_fetch): Likewise. (ia64_expand_compare_and_swap): Likewise. (ia64_expand_builtin): Likewise. * config/ia64/ia64.h (AR_UNAT_REGNUM): New. (FIRST_PSEUDO_REGISTER): Update. (AR_M_REGNO_P): Update. (FIXED_REGS): Don't mark three local registers as used. (EXTRA_CC_MODES): New. (SELECT_CC_MODE): New. (HARD_REGNO_NREGS): Allow DImode in p0; handle CCImode. (HARD_REGNO_MODE_OK): Disallow CCImode from non-predicates. (FRAME_GROWS_DOWNWARD): Unset. (STARTING_FRAME_OFFSET): Zero. (ELIMINABLE_REGS): Eliminate from the soft to hard frame pointer. (INITIAL_ELIMINATION_OFFSET): Defer to out of line function. (HARD_FRAME_POINTER_REGNUM): New. (CAN_DEBUG_WITHOUT_FP): Define. (TRAMPOLINE_TEMPLATE): Remove. (TRAMPOLINE_SIZE): Lower to 32. (TRAMPOLINE_ALIGNMENT): Lower to 64. (INITIALIZE_TRAMPOLINE): Defer to out of line function. (PREDICATE_CODES): Update. (struct machine_function): Add ia64_gp_save. * config/ia64/ia64.md: Purge unused unspecs. (movsi patterns): Allow moves to/from AR_M_REGS. (movdi patterns): Allow moves to/from p0. (call patterns): Move most setjmp hackery to ia64_gp_save_reg. (gr_spill, gr_restore): Indicate ar.unat read/written. (nonlocal_goto): Don't pass old frame_pointer. (nonlocal_goto_receiver): Remove. (exception_receiver): New. (builtin_setjmp_setup): New. (builtin_setjmp_receiver): New. * config/ia64/lib1funcs.asm (__ia64_save_stack_nonlocal): Bundle. (__ia64_nonlocal_goto): Bundle. Don't kill r7. (__ia64_restore_stack_nonlocal): Likewise. (__ia64_trampoline): New. * config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Defer to out of line function. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add __trampoline. From-SVN: r35568
2000-05-25except.c (func_eh_entry): Add emitted field.Andrew MacLeod1-0/+2
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-03-15Patches to make libobjc build.Jim Wilson1-1/+1
* config/ia64/ia64.md (restore_stack_nonlocal): New. * config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop. (__ia64_restore_stack_nonlocal): New. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal. From-SVN: r32564
2000-03-08Add ia64 port.Jim Wilson1-0/+41
From-SVN: r32438