aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
AgeCommit message (Collapse)AuthorFilesLines
2006-05-05rs6000.md: Mark all "X" constraints for clobbered scratch with output modifier.David Edelsohn1-11/+11
* config/rs6000/rs6000.md: Mark all "X" constraints for clobbered scratch with output modifier. From-SVN: r113555
2006-05-04re PR target/26481 (ICE with -mcpu=power and struct passing)David Edelsohn1-6/+6
PR target/26481 * config/rs6000/rs6000.md (stmsi_power): Mark clobber constraint with output modifier. From-SVN: r113539
2006-04-30rs6000.c (rs6000_override_options): Enable TARGET_NO_FP_IN_TOC for section ↵David Edelsohn1-1/+12
anchors. * config/rs6000/rs6000.c (rs6000_override_options): Enable TARGET_NO_FP_IN_TOC for section anchors. (optimization_options): Enable section anchors for all non-"Objective" languages. From-SVN: r113395
2006-04-27target-def.h (TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Bracket with #ifndef/#endif.Eric Christopher1-0/+4
2006-04-27 Eric Christopher <echristo@apple.com> * target-def.h (TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Bracket with #ifndef/#endif. * config/darwin-c.c (darwin_ms_struct): New. (darwin_pragma_ms_struct): Ditto. (darwin_set_default_type_attributes): Ditto. * config/darwin-protos.h (darwin_pragma_ms_struct): Declare. * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register ms_struct pragma. * config/i386/darwin.h (REGISTER_TARGET_PRAGMAS): Declare. (TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Ditto. * config/rs6000/rs6000.c (rs6000_set_default_type_attributes): Call darwin_set_default_type_attributes if TARGET_MACHO. 2006-04-27 Eric Christopher <echristo@apple.com> * gcc.dg/pragma-ms_struct.c: New. From-SVN: r113327
2006-04-27t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New.Stuart Hastings3-22/+23
* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New. * config/t-darwin (crt3.o): Use it. * config/rs6000/rs6000.c (rs6000_initialize_trampoline): Remove 'pmode', use Pmode instead of SImode for SYMBOL_REF. * config/rs6000/rs6000.md (call_indirect_nonlocal_sysv, call_nonlocal_sysv, call_value_indirect_nonlocal_sysv, call_value_nonlocal_sysv): Suffix with the "P" macro for 32/64 support. From-SVN: r113319
2006-04-21rs6000.h (REG_CLASS_CONTENTS): Add sfp to NON_FLOAT_REGS.David Edelsohn1-1/+1
* config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add sfp to NON_FLOAT_REGS. From-SVN: r113136
2006-04-21re PR target/27230 (many obj-c++.dg tests ICE in ↵Alan Modra1-3/+5
rs6000_output_function_epilogue) PR target/27230 * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Use C++ lang type in traceback table for Objective-C++. * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Update comment. From-SVN: r113130
2006-04-20rs6000.c (rs6000_gimplify_va_arg): Consume all fp regs if the last fp arg ↵Alan Modra1-1/+1
doesn't fit in regs. * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all fp regs if the last fp arg doesn't fit in regs. From-SVN: r113111
2006-04-18soft-fp: New directory.Joseph Myers6-30/+85
* config/soft-fp: New directory. From glibc. * config/soft-fp/t-softfp: New. * config/soft-fp/README: New. * mklibgcc.in: Handle LIB2FUNCS_EXCLUDE. * Makefile.in (LIB2FUNCS_EXCLUDE, SFP_MACHINE): New. (libgcc.mk): Pass LIB2FUNCS_EXCLUDE. (LIBGCC_DEPS): Add $(SFP_MACHINE). * config.gcc: Use rs6000/t-fprules-fpbit or rs6000/t-fprules-softfp and soft-fp/t-softfp together with rs6000/t-fprules. * config/rs6000/sfp-machine.h: New. Based on glibc. * config/rs6000/t-fprules-fpbit, config/rs6000/t-fprules-softfp: New. * config/rs6000/t-fprules: Remove fp-bit rules. * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Use +=. * config/rs6000/t-linux64: Likewise. Remove duplicates from LIB2FUNCS_EXTRA. Remove fp-bit rules. (softfp_wrap_start, softfp_wrap_end): New. From-SVN: r113056
2006-04-13re PR target/27006 (Invalid altivec constant loading code)Paolo Bonzini1-1/+2
2006-04-13 Paolo Bonzini <bonzini@gnu.org> Ulrich Weigand <uweigand@de.ibm.com> PR target/27006 * config/rs6000/rs6000.h (EASY_VECTOR_15_ADD_SELF): Require n to be even. PR target/27006 * gcc.dg/vmx/pr27006.c: New testcase. Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com> From-SVN: r112923
2006-04-13re PR target/26459 (gcc fails to build on powerpc e500-double targets)Alan Modra1-2/+5
PR target/26459 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't optimize to lo_sum for DFmode if !TARGET_FPRS. From-SVN: r112912
2006-04-12rs6000.c (rs6000_mixed_function_arg): Update magic NULL_RTX comment.Alan Modra1-24/+21
* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Update magic NULL_RTX comment. (function_arg): Store entire fp arg to mem if any part should go on stack. (rs6000_arg_partial_bytes): Adjust for above change. From-SVN: r112880
2006-04-11re PR target/26459 (gcc fails to build on powerpc e500-double targets)Mark Mitchell1-2/+2
PR target/26459 * config/rs6000/e500-double.h (SUB3TARGET_OVERRIDE_OPTIONS): Test rs6000_explicit_options.float_gprs. From-SVN: r112843
2006-04-08Fix whitespacing.Mike Stump1-8/+8
From-SVN: r112788
2006-04-07rs6000.c (rs6000_rtx_costs): Do not treat CONST_DOUBLE as INTVAL.David Edelsohn1-21/+18
* config/rs6000/rs6000.c (rs6000_rtx_costs) <CONST_DOUBLE>: Do not treat CONST_DOUBLE as INTVAL. and64_2_operands require an extra insn. From-SVN: r112752
2006-04-05rs6000.c (TARGET_MS_BITFIELD_LAYOUT_P): Define.Eric Christopher1-2/+57
2006-04-04 Eric Christopher <echristo@apple.com> * config/rs6000/rs6000.c (TARGET_MS_BITFIELD_LAYOUT_P): Define. (TARGET_USE_MS_BITFIELD_LAYOUT): Ditto. (rs6000_handle_struct_attribute): New. (rs6000_ms_bitfield_layout_p): Ditto. From-SVN: r112693
2006-04-04rs6000.c (num_insns_constant_wide): Change satisfies_constraint_[IL] to ↵David Edelsohn1-2/+3
explicit tests on value. * config/rs6000/rs6000.c (num_insns_constant_wide): Change satisfies_constraint_[IL] to explicit tests on value. From-SVN: r112676
2006-03-31re PR target/26459 (gcc fails to build on powerpc e500-double targets)Alan Modra1-16/+13
PR target/26459 * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Limit 2003-12-08 change to FLOAT_REGS. From-SVN: r112561
2006-03-31rs6000.c (rs6000_explicit_options): Add ieee.Alan Modra1-5/+16
* config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee. (rs6000_override_options): Use it. (rs6000_handle_option): Set it. Set rs6000_explicit_options.abi only for -mabi=spe/no-spe and -mabi=altivec. From-SVN: r112555
2006-03-29* config/rs6000/constraints.md: Add "W" constraint.David Edelsohn1-0/+4
From-SVN: r112518
2006-03-29Remove extra parentheses for "M" case.David Edelsohn1-1/+1
From-SVN: r112512
2006-03-29genemit.c (main): Add tm-constrs.h to included headers.David Edelsohn5-136/+196
* genemit.c (main): Add tm-constrs.h to included headers. * genoutput.c (output_prologue): Add tm-constrs.h to included headers. * genpeep.c (main): Add tm-constrs.h to included headers. * genpreds.c (write_satisfies_constraint_fns): Rename to ... (write_tm_constrs_h): this and write complete file. (write_tm_preds_h): Do not emit satisfies_constraint fns. (write_insn_preds_c): Add tm-constrs.h to included headers. (gen_constrs): New variable. (parse_option): Parse "-c". (main): Invoke write_tm_constrs_h. * genrecog.c (write_header): Add tm-constrs.h to included headers. * Makefile.in (STAGECOPYSTUFF): Add tm-constrs.h. (object_out_file): Add tm-constrs.h dependency. (insn-emit.o): Same. (insn-output.o): Same. (insn-peep.o): Same. (insn-preds.o): Same. (insn-recog.o): Same. (tm-constsr.h): New target. (s-constrs-h): New target. * config/rs6000/constraints.md: New file. * config/rs6000/rs6000.c: Include tm-constrs.h. (num_insn_constant_wide): Convert to satisfies_constraint. (rs6000_rtx_costs): Convert to satisfies_constraint. * config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Delete. (CONST_OK_FOR_LETTER_P): Delete. (CONST_DOUBLE_OK_FOR_LETTER_P): Delete. (EXTRA_CONSTRAINT): Delete. (EXTRA_MEMORY_CONSTRAINT): Delete. (EXTRA_ADDRESS_CONSTRAINT): Delete. * config/rs6000/predicates.md: Convert to satisfies_constraint. * config/rs6000/rs6000.md: Include constraints.md. Convert to satisfies_constraint. * config/i386/i386.c: Include tm-constrs.h. From-SVN: r112508
2006-03-27re PR target/26459 (gcc fails to build on powerpc e500-double targets)Alan Modra1-2/+4
PR target/26459 * config/rs6000/rs6000.md (DF reg move peephole): Prevent peephole removing spe frob_di_df_2. From-SVN: r112400
2006-03-24rs6000-protos.h (rs6000_offsettable_memref_p): Declare.Eric Botcazou3-23/+45
* config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare. (rs6000_legitimate_small_data_p): Delete. * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate. (rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p and make static. Add forward declaration. Update uses. (rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead of offsettable_memref_p. * config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix. Use rs6000_offsettable_memref_p instead of a less accurate predicate. From-SVN: r112349
2006-03-24re PR target/26607 (Illegal inlined assembler on config/rs6000/darwin-ldouble.c)Alan Modra1-1/+2
PR target/26607 * config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__ or __LITTLE_ENDIAN__. From-SVN: r112334
2006-03-20rs6000.c (rs6000_handle_option): Use TARGET_NO_FP_IN_TOC inside #ifdef ↵Alan Modra1-6/+6
TARGET_USES_SYSV4_OPT too. * config/rs6000/rs6000.c (rs6000_handle_option): Use TARGET_NO_FP_IN_TOC inside #ifdef TARGET_USES_SYSV4_OPT too. From-SVN: r112223
2006-03-19rs6000.opt (no-fp-in-toc): Use Var not Mask.David Edelsohn6-34/+122
* config/rs6000/rs6000.opt (no-fp-in-toc): Use Var not Mask. (no-sum-in-toc): Same. * config/rs6000/rs6000.c (rs6000_handle_option): Use new variables. * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set NO_FP_IN_TOC for -fPIC instead of mask. * config/rs6000/t-aix43 (T_ADAFLAGS): Delete. (BOOT_LDFLAGS): Delete. (LDFLAGS): Delete. * config/rs6000/t-aix52: Same. * config/rs6000/rs6000.md (store_multiple_power): Delete. (stmsi[345678]_power): New. From-SVN: r112215
2006-03-17rs6000.md (strlensi): Emit barrier after unconditional jump.David Edelsohn1-0/+1
* config/rs6000/rs6000.md (strlensi): Emit barrier after unconditional jump. From-SVN: r112175
2006-03-17tm.texi (SDB and DWARF): Add extra parameter to ASM_OUTPUT_DWARF_OFFSET.Geoffrey Keating1-0/+1
* doc/tm.texi (SDB and DWARF): Add extra parameter to ASM_OUTPUT_DWARF_OFFSET. Use @var to indicate metavariables. * dwarf2asm.h (dw2_asm_output_offset): Add section parameter. * dwarf2asm.c (dw2_asm_output_offset): Add base section parameter. Pass to ASM_OUTPUT_DWARF_OFFSET. * dwarf2out.c (debug_frame_section): New. (output_call_frame_info): Use debug_frame_section. Pass it to dw2_asm_output_offset. (output_die): Pass appropriate section to dw2_asm_output_offset. (output_compilation_unit_header): Likewise. (output_pubnames): Likewise. (output_aranges): Likewise. (enum dw_val_class): Break dw_val_class_lbl_offset into dw_val_class_lineptr and dw_val_class_macptr. (add_AT_lbl_offset): Delete. (add_AT_lineptr): New. (add_AT_macptr): New. (AT_lbl): Expect a lineptr or macptr. (print_die): Handle dw_val_class_lineptr and dw_val_class_macptr. (attr_checksum): Likewise. (same_dw_val_p): Likewise. (size_of_die): Likewise. (value_format): Likewise. (output_die): Likewise. (dwarf2out_finish): Call add_AT_lineptr and add_AT_macptr instead of add_AT_lbl_offset. * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter. * config/i386/i386.c (x86_file_start): Call darwin_file_start. * config/darwin-protos.h (darwin_file_start): New. (darwin_asm_output_dwarf_offset): New. * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter. * config/rs6000/rs6000.c (rs6000_darwin_file_start): Call darwin_file_start. * config/darwin.c (darwin_emit_unwind_label): Don't output label if not EH section; simplify. (darwin_file_start): New. (darwin_asm_output_dwarf_offset): New. * config/darwin.h (DEBUG_FRAME_SECTION): In __DWARF segment, mark as 'debug'. (DEBUG_INFO_SECTION): Likewise. (DEBUG_ABBREV_SECTION): Likewise. (DEBUG_ARANGES_SECTION): Likewise. (DEBUG_MACINFO_SECTION): Likewise. (DEBUG_LINE_SECTION): Likewise. (DEBUG_LOC_SECTION): Likewise. (DEBUG_PUBNAMES_SECTION): Likewise. (DEBUG_STR_SECTION): Likewise. (DEBUG_RANGES_SECTION): Likewise. (FRAME_BEGIN_LABEL): Must start with 'L' in debug section. (ASM_OUTPUT_DWARF_OFFSET): New. From-SVN: r112168
2006-03-16config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.Geoffrey Keating2-8/+8
2006-03-15 Geoffrey Keating <geoffk@apple.com> * config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports. Do switch on default_use_cxa_atexit. (powerpc*-*-darwin*): Build crt2.o on powerpc. * config/darwin-crt3.o: New. * config/darwin.h (LINK_SPEC): If -shared-libgcc, make linker default to 10.3. Pass '-multiply_defined suppress' if crt3.o is in use. (STARTFILE_SPEC): Add crt3.o when -shared-libgcc and appropriate OS version. * config/rs6000/t-darwin: Move crt2.o building to here. * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Update Mac OS version for using __cxa_get_exception_ptr. Don't test versions of __cxa_atexit. 2006-03-15 Geoffrey Keating <geoffk@apple.com> * g++.old-deja/g++.other/init18.C: New. * g++.old-deja/g++.other/init5.C: Remove xfail. From-SVN: r112121
2006-03-14rs6000.opt (mdlmzb): New option.Joseph Myers3-8/+84
* config/rs6000/rs6000.opt (mdlmzb): New option. (msched-prolog, msched-epilog): Use Var not Mask. * doc/invoke.texi (-mdlmzb): Document. * config/rs6000/rs6000.c (TARGET_DEFAULT_TARGET_FLAGS): Remove MASK_SCHED_PROLOG. (rs6000_override_options): Enable -mdlmzb for 405 and 440. * config/rs6000/rs6000.md: Add dlmzb support for 405 and 440. testsuite: * gcc.target/powerpc/405-dlmzb-strlen-1.c, gcc.target/powerpc/440-dlmzb-strlen-1.c: New tests. From-SVN: r112040
2006-03-02linux-unwind.h (frob_update_context): Mark `fs' parameter as unused to ↵Ben Elliston1-1/+1
suppress a build warning. * config/rs6000/linux-unwind.h (frob_update_context): Mark `fs' parameter as unused to suppress a build warning. From-SVN: r111635
2006-03-01darwin.h (ENABLE_STACK_EXECUTE): Define.Eric Christopher1-3/+59
2006-02-28 Eric Christopher <echristo@apple.com> * config/rs6000/darwin.h (ENABLE_STACK_EXECUTE): Define. Set up IN_LIBGCC definition of TARGET_64BIT. * config/i386/darwin.h (ENABLE_STACK_EXECUTE): Define. From-SVN: r111584
2006-02-27re PR other/26208 (Serious problem with unwinding through signal frames)Jakub Jelinek1-21/+45
PR other/26208 * unwind-dw2.c (struct _Unwind_Context): Add signal_frame field. (extract_cie_info): Handle S flag in augmentation string. (execute_cfa_program): If context->signal_frame, execute also fs->pc == context->ra instructions. (uw_frame_state_for): If context->signal_frame, don't subtract one from context->ra to find FDE. (uw_update_context_1): Set context->signal_frame to fs->signal_frame. (_Unwind_GetIPInfo): New function. * unwind-dw2.h (_Unwind_FrameState): Add signal_frame field. * unwind-c.c (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. * unwind-sjlj.c (_Unwind_GetIPInfo): New function. * unwind-generic.h (_Unwind_GetIPInfo): New prototype. * unwind-compat.c (_Unwind_GetIPInfo): New function. * libgcc-std.ver (_Unwind_GetIPInfo): Export @@GCC_4.2.0. * config/ia64/unwind-ia64.c (_Unwind_GetIPInfo): New function. * config/arm/unwind-arm.h (_Unwind_GetIPInfo): Define. * config/i386/linux-unwind.h (x86_fallback_frame_state, x86_64_fallback_frame_state): Set fs->signal_frame. * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Likewise. (MD_FROB_UPDATE_CONTEXT): Define unconditionally. (frob_update_context): Likewise. Workaround missing S flag in Linux 2.6.12 - 2.6.16 kernel vDSOs. * config/s390/linux-unwind.h (s390_fallback_frame_state): Likewise. Remove the psw_addr + 1 hack. libjava/ * exception.cc (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. * include/i386-signal.h (MAKE_THROW_FRAME): Change into empty macro. (HANDLE_DIVIDE_OVERFLOW): Don't adjust _res->eip if falling through to throw. * include/x86_64-signal.h (MAKE_THROW_FRAME): Change into empty macro. * include/powerpc-signal.h (MAKE_THROW_FRAME): Change into empty macro. libstdc++-v3/ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead of _Unwind_GetIP. From-SVN: r111488
2006-02-24Index: gcc/ChangeLogGeoffrey Keating1-3/+17
2006-02-24 Geoffrey Keating <geoffk@apple.com> * doc/tm.texi (Run-time Target): Document C_COMMON_OVERRIDE_OPTIONS. * doc/invoke.texi (C++ Dialect Options): Document -fno-use-cxa-get-exception-ptr. * configure.ac: Define DEFAULT_USE_CXA_ATEXIT to 2 not 1. * configure: Regenerate. * c.opt (fuse-cxa-get-exception-ptr): New. * c-opts.c (c_common_handle_option): Handle OPT_fuse_cxa_get_exception_ptr. * c-common.c (flag_use_cxa_atexit): Update documentation. (flag_use_cxa_get_exception_ptr): New. * c-common.h (flag_use_cxa_get_exception_ptr): New. * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Improve documentation. (C_COMMON_OVERRIDE_OPTIONS): New. Index: gcc/testsuite/ChangeLog 2006-02-24 Geoffrey Keating <geoffk@apple.com> * g++.dg/eh/uncaught1.C: Add dg-options for ppc-darwin. * g++.dg/eh/uncaught2.C: New. * g++.dg/eh/uncaught3.C: New. Index: gcc/cp/ChangeLog 2006-02-24 Geoffrey Keating <geoffk@apple.com> * except.c (expand_start_catch_block): Handle flag_use_cxa_get_exception_ptr. From-SVN: r111427
2006-02-24rs6000.c (rs6000_init_builtins): Change decl libname for clog to __clog on AIX.David Edelsohn2-0/+11
* config/rs6000/rs6000.c (rs6000_init_builtins): Change decl libname for clog to __clog on AIX. * config/rs6000/xcoff.h (MAX_OFILE_ALIGNMENT): Define. From-SVN: r111418
2006-02-24re PR target/26453 (Segfault with -m64 -mtraceback=full)Alan Modra1-3/+2
PR target/26453 * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't output traceback table for thunks. Localise rs6000_stack_info call. From-SVN: r111415
2006-02-23[multiple changes]Jakub Jelinek2-0/+10
2006-02-23 Jakub Jelinek <jakub@redhat.com> * configure.ac: Add --with{,out}-long-double-128 configure option. (TARGET_DEFAULT_LONG_DOUBLE_128): New test. * configure: Rebuilt. * config.in: Rebuilt. * doc/install.texi (Options specification): Document --with-long-double-128. * config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128] (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128. * config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128] (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128. 2006-02-23 Aldy Hernandez <aldyh@redhat.com> * config/s390/s390.c (override_options): Handle TARGET_DEFAULT_LONG_DOUBLE_128. * config/alpha/alpha.c (override_options): Handle TARGET_DEFAULT_LONG_DOUBLE_128. * config/sparc/sparc.c (sparc_override_options): Handle TARGET_DEFAULT_LONG_DOUBLE_128. From-SVN: r111381
2006-02-19xcoff.h (TARGET_ASM_OUTPUT_ANCHOR): Define.David Edelsohn2-0/+12
* config/rs6000/xcoff.h (TARGET_ASM_OUTPUT_ANCHOR): Define. * config/rs6000/rs6000.c (rs6000_xcoff_asm_output_anchor): Define. From-SVN: r111275
2006-02-18darwin.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use the arguments.Andrew Pinski1-1/+1
2006-02-18 Andrew Pinski <pinskia@physics.uc.edu> * config/rs6000/darwin.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use the arguments. From-SVN: r111265
2006-02-18re PR target/26350 (ICE in extract_insn, at recog.c:2084, -fPIC ↵David Edelsohn1-0/+3
-mlong-double-128) PR target/26350 * config/rs6000/rs6000.md (extenddftf2): Force 0.0 to validized MEM for ABI_V4 pic. From-SVN: r111255
2006-02-18re PR target/9703 ([arm] Accessing data through constant pool more times ↵Richard Sandiford1-0/+22
could be solved in less instructions) * cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE. * emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx. (copy_insn_1): Likewise. Don't copy each field individually. Reindent. * read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead of RTX_SIZE. * reload1.c (eliminate_regs): Use shallow_copy_rtx. * rtl.c (rtx_size): Rename variable to... (rtx_code_size): ...this. (rtx_size): New function. (rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE. (copy_rtx): Use shallow_copy_rtx. Don't copy each field individually. Reindent. (shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE. * rtl.h (rtx_code_size): New variable. (rtx_size): Change from a variable to a function. (RTX_SIZE): Rename to... (RTX_CODE_SIZE): ...this. PR target/9703 PR tree-optimization/17106 * doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document. (Anchored Addresses): New section. * doc/invoke.texi (-fsection-anchors): Document. * doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise. (SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise. (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise. * hooks.c (hook_bool_mode_rtx_false): New function. * hooks.h (hook_bool_mode_rtx_false): Declare. * gengtype.c (create_optional_field): New function. (adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when SYMBOL_REF_IN_BLOCK_P is true. * target.h (output_anchor, use_blocks_for_constant_p): New hooks. (min_anchor_offset, max_anchor_offset): Likewise. (use_anchors_for_symbol_p): New hook. * toplev.c (compile_file): Call output_object_blocks. (target_supports_section_anchors_p): New function. (process_options): Check that -fsection-anchors is only used on targets that support it and when -funit-at-a-time is in effect. * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL if the decl doesn't have one. * dwarf2out.c: Remove instantiations of VEC(rtx,gc). * expr.c (emit_move_multi_word, emit_move_insn): Pass the result of force_const_mem through use_anchored_address. (expand_expr_constant): New function. (expand_expr_addr_expr_1): Call it. Use the same modifier when calling expand_expr for INDIRECT_REF. (expand_expr_real_1): Pass DECL_RTL through use_anchored_address for all modifiers except EXPAND_INITIALIZER. Use expand_expr_constant. * expr.h (use_anchored_address): Declare. * loop-unroll.c: Don't declare rtx vectors here. * explow.c: Include output.h. (validize_mem): Call use_anchored_address. (use_anchored_address): New function. * common.opt (-fsection-anchors): New switch. * varasm.c (object_block_htab, anchor_labelno): New variables. (hash_section, object_block_entry_eq, object_block_entry_hash) (use_object_blocks_p, get_block_for_section, create_block_symbol) (use_blocks_for_decl_p, change_symbol_section): New functions. (get_variable_section): New function, split out from assemble_variable. (make_decl_rtl): Create a block symbol if use_object_blocks_p and use_blocks_for_decl_p say so. Use change_symbol_section if the symbol has already been created. (assemble_variable_contents): New function, split out from... (assemble_variable): ...here. Don't output any code for block symbols; just pass them to place_block_symbol. Use get_variable_section and assemble_variable_contents. (get_constant_alignment, get_constant_section, get_constant_size): New functions, split from output_constant_def_contents. (build_constant_desc): Create a block symbol if use_object_blocks_p says so. Or into SYMBOL_REF_FLAGS. (assemble_constant_contents): New function, split from... (output_constant_def_contents): ...here. Don't output any code for block symbols; just pass them to place_section_symbol. Use get_constant_section and get_constant_alignment. (force_const_mem): Create a block symbol if use_object_blocks_p and use_blocks_for_constant_p say so. Or into SYMBOL_REF_FLAGS. (output_constant_pool_1): Add an explicit alignment argument. Don't switch sections here. (output_constant_pool): Adjust call to output_constant_pool_1. Switch sections here instead. Don't output anything for block symbols; just pass them to place_block_symbol. (init_varasm_once): Initialize object_block_htab. (default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK. (default_asm_output_anchor, default_use_aenchors_for_symbol_p) (place_block_symbol, get_section_anchor, output_object_block) (output_object_block_htab, output_object_blocks): New functions. * target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro. (TARGET_ASM_OUT): Include it. (TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro. (TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros. (TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro. (TARGET_INITIALIZER): Include them. * rtl.c (rtl_check_failed_block_symbol): New function. * rtl.h: Include vec.h. Declare heap and gc rtx vectors. (block_symbol, object_block): New structures. (rtx_def): Add a block_symbol field to the union. (BLOCK_SYMBOL_CHECK): New macro. (rtl_check_failed_block_symbol): Declare. (SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags. (SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates. (SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2. (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors. * output.h (output_section_symbols): Declare. (object_block): Name structure. (place_section_symbol, get_section_anchor, default_asm_output_anchor) (default_use_anchors_for_symbol_p): Declare. * Makefile.in (RTL_BASE_H): Add vec.h. (explow.o): Depend on output.h. * config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default. (TARGET_MAX_ANCHOR_OFFSET): Likewise. (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise. (rs6000_use_blocks_for_constant_p): New function. From-SVN: r111254
2006-02-18re PR target/24837 (move dynamic linker names out of LINK_SPEC and into new ↵Joseph Myers3-5/+30
DYNAMIC_LINKER) PR target/24837 * config.gcc: Define UCLIBC_DEFAULT to 0 or 1. * opth-gen.awk: Handle Var and InverseMask together. * config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc). * config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT. (TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC. (CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc used together. (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64, LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. * config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER): Define. (ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER. * config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define. (CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option. * config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. (TARGET_C99_FUNCTIONS): Don't define. * config/i386/linux.h (DYNAMIC_LINKER): Rename to GLIBC_DYNAMIC_LINKER. (SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER. * config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and LINUX_DYNAMIC_LINKER64. * config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64 and LINUX_DYNAMIC_LINKER32. * config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise. (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. (LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32. (LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64. * config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER): Define. (LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE. * config/s390/linux.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and LINUX_DYNAMIC_LINKER64. * config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define. (SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/sparc/linux.h (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. (LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32. (LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64. (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * doc/invoke.texi (-muclibc): Remove caveat about supported targets. testsuite: * gcc.dg/glibc-uclibc-1.c, gcc.dg/glibc-uclibc-2.c: New tests. From-SVN: r111235
2006-02-17re PR rtl-optimization/26272 (gcc.c-torture/execute/built-in-setjmp.c fails ↵Andrew Pinski1-3/+4
at -O2 and above on powerpc-darwin) 2006-02-17 Andrew Pinski <pinskia@physics.uc.edu> PR target/26272 * config/rs6000/darwin.md (load_macho_picbase_si): Add pc to the pattern. (load_macho_picbase_di): Likewise. From-SVN: r111206
2006-02-04rs6000.c (rs6000_mangle_fundamental_type): Mangle IBM extended float format ↵David Edelsohn1-2/+10
long double as "g" on powerpc*-linux. * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle IBM extended float format long double as "g" on powerpc*-linux. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r110589
2006-02-03re PR target/25960 (__gcc_qadd doesn't handle -0.0L properly)Alan Modra1-1/+5
PR target/25960 gcc/ * config/rs6000/darwin-ldouble.c (__gcc_qadd): Preserve -0.0 result. gcc/testsuite/ * gcc.target/powerpc/pr25960.c: New test. From-SVN: r110540
2006-02-01sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For -msoft-float -mlong-double-128 ↵Jakub Jelinek1-6/+3
only issue a warning... * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For -msoft-float -mlong-double-128 only issue a warning, but don't swich to DFmode long double. From-SVN: r110484
2006-01-31expr.h (expand_normal): new inline function.Marcin Dalecki1-34/+34
2006-01-30 Marcin Dalecki <martin@dalecki.de> * expr.h (expand_normal): new inline function. * builtins.c: use it, use EXPAND_NORMAL explicitely. * dojump.c: use it. * dwarf2out.c: use it. * expr.c: use it. * calls.c: use it. * expmed.c: use it. * except.c: use it. * config/sparc/sparc.c: use it. * config/i386/i386.c: use it. * config/rs6000/rs6000.c: use it. * config/arm/arm.c: use it. * config/mips/mips.c: use it. * stmt.c: use it, use EXPAND_NORMAL explicitely. From-SVN: r110428
2006-01-28aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float and -mlong-double-128 are ↵David Edelsohn5-5/+21
incompatible. * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float and -mlong-double-128 are incompatible. * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same. * config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c. (TARGET_LIBGCC2_CFLAGS): Define. * config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same. (TARGET_LIBGCC2_CFLAGS): Same. * config/rs6000/ppc64-fp.c: Compile for 64-bit AIX. From-SVN: r110333
2006-01-27[multiple changes]Jakub Jelinek13-88/+164
2006-01-27 Jakub Jelinek <jakub@redhat.com> PR target/25864 * libgcc-std.ver: Add GCC_4.1.0 symbol version. * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append -mno-minimal-toc to previous content. (bispecs): Remove goal. * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h. * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4 compatibility aliases on powerpc-*-*gnu*. * config/rs6000/libgcc-ppc-glibc.ver: New file. * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append libgcc-ppc-glibc.ver on powerpc*-*-*gnu*. (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs. (ldblspecs): New goal. * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed. * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and _df_to_tf. * config/fp-bit.h (TMODES): Don't define if none of TFLOAT, L_sf_to_tf or L_df_to_tf is defined. 2006-01-27 David Edelsohn <edelsohn@gnu.org> Alan Modra <amodra@bigpond.net.au> PR target/25864 * config/rs6000/linux.h (POWERPC_LINUX): Define. * config/rs6000/linux64.h (POWERPC_LINUX): Define. * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC. * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero. * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero. * config/rs6000/rs6000.c (rs6000_ieeequad): New variable. (rs6000_override_options): Initialize rs6000_ieeequad. Initialize TFmode format to ibm_extended_format if not TARGET_IEEEQUAD. (rs6000_handle_option): Accept -mabi= ibmlongdouble and ieeelongdouble. (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts. (rs6000_return_in_memory): Only return IEEEQUAD in memory. (function_arg_advance): IBM long double passed in two FPRs, not split. (function_arg): IBM long double passed in FPRs. (rs6000_pass_by_reference): Only IEEEQUAD passed by reference. (rs6000_gimplify_va_arg): IBM long double passed in two FPRs. Only multireg GPR aligned. (rs6000_init_libfuncs): Enable IBM long double functions if not IEEEQUAD. (rs6000_generate_compare): Use IBM long double compare if not TARGET_IEEEQUAD. * config/rs6000/rs6000.h (rs6000_ieeequad): Declare. (TARGET_IEEEQUAD): Define. (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if not TARGET_IEEEQUAD. * config/rs6000/rs6000.md: Enable TFmode patterns if !TARGET_IEEEQUAD. * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c. * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float and -mlong-double-128 are incompatible. * doc/invoke.texi (-mabi): Collect options together. Add ibmlongdouble and ieeelongdouble. From-SVN: r110303