From 612ad0a18c413dfff3b1367847886c4cae3f502f Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Sat, 25 Apr 2015 11:56:21 +0000 Subject: [PATCH] lang/gcc45 --- lang/gcc45/Makefile | 68 +- lang/gcc45/buildlink3.mk | 4 +- lang/gcc45/distinfo | 445 +++- lang/gcc45/files/arm-minix.h | 150 ++ lang/gcc45/files/dragonfly-spec.h | 215 -- lang/gcc45/files/dragonfly.h | 97 - lang/gcc45/files/gcov-minix-fs-wrapper.h | 39 + lang/gcc45/files/hello.f | 5 - lang/gcc45/files/hello.m | 6 - lang/gcc45/files/i386-dragonfly.h | 148 -- lang/gcc45/files/i386-dragonfly64.h | 54 - lang/gcc45/files/i386-minix.h | 91 + lang/gcc45/files/minix-spec.h | 185 ++ lang/gcc45/files/minix.h | 135 + lang/gcc45/files/t-minix | 5 + lang/gcc45/options.mk | 21 +- lang/gcc45/patches/patch-ChangeLog | 38 + .../patches/patch-INSTALL_configure.html | 13 + lang/gcc45/patches/patch-LAST__UPDATED | 7 + lang/gcc45/patches/patch-MD5SUMS | 2175 +++++++++++++++++ lang/gcc45/patches/patch-Makefile.def | 41 + lang/gcc45/patches/patch-Makefile.in | 659 +++++ lang/gcc45/patches/patch-NEWS | 823 +++++++ lang/gcc45/patches/patch-aa | 86 - lang/gcc45/patches/patch-ab | 24 - lang/gcc45/patches/patch-ac | 17 - lang/gcc45/patches/patch-ad | 28 - lang/gcc45/patches/patch-af | 16 - lang/gcc45/patches/patch-ag | 29 - lang/gcc45/patches/patch-ah | 22 - lang/gcc45/patches/patch-aj | 46 - lang/gcc45/patches/patch-ak | 16 - lang/gcc45/patches/patch-config.guess | 44 + lang/gcc45/patches/patch-config.sub | 32 + lang/gcc45/patches/patch-config_ChangeLog | 22 + lang/gcc45/patches/patch-config_acx.m4 | 26 + lang/gcc45/patches/patch-config_mh-x86-darwin | 7 + lang/gcc45/patches/patch-configure | 13 + lang/gcc45/patches/patch-configure.ac | 147 ++ lang/gcc45/patches/patch-contrib_ChangeLog | 12 + .../patches/patch-contrib_reghunt_ChangeLog | 12 + .../patch-contrib_regression_ChangeLog | 12 + .../gcc45/patches/patch-fixincludes_ChangeLog | 12 + lang/gcc45/patches/patch-gcc_BASE-VER | 7 + lang/gcc45/patches/patch-gcc_ChangeLog | 1352 ++++++++++ lang/gcc45/patches/patch-gcc_DATESTAMP | 7 + lang/gcc45/patches/patch-gcc_Makefile.in | 156 ++ lang/gcc45/patches/patch-gcc_builtins.c | 83 + lang/gcc45/patches/patch-gcc_c-common.c | 27 + lang/gcc45/patches/patch-gcc_c-decl.c | 23 + lang/gcc45/patches/patch-gcc_c-lex.c | 45 + lang/gcc45/patches/patch-gcc_c-opts.c | 41 + lang/gcc45/patches/patch-gcc_c-typeck.c | 41 + lang/gcc45/patches/patch-gcc_c.opt | 28 + lang/gcc45/patches/patch-gcc_caller-save.c | 192 ++ lang/gcc45/patches/patch-gcc_cfgexpand.c | 24 + lang/gcc45/patches/patch-gcc_cfgrtl.c | 107 + lang/gcc45/patches/patch-gcc_combine.c | 13 + lang/gcc45/patches/patch-gcc_config.gcc | 41 + .../patches/patch-gcc_config_alpha_alpha.c | 100 + .../patches/patch-gcc_config_alpha_elf.h | 24 + .../patch-gcc_config_alpha_linux-unwind.h | 81 + .../patch-gcc_config_arm_arm-cores.def | 15 + lang/gcc45/patches/patch-gcc_config_arm_arm.c | 53 + lang/gcc45/patches/patch-gcc_config_arm_arm.h | 38 + .../gcc45/patches/patch-gcc_config_arm_arm.md | 49 + .../patch-gcc_config_arm_bpabi-netbsd.c | 6 + .../patches/patch-gcc_config_arm_bpabi.h | 43 + lang/gcc45/patches/patch-gcc_config_arm_elf.h | 14 + .../patches/patch-gcc_config_arm_neon.md | 75 + .../patch-gcc_config_arm_netbsd-eabi.h | 118 + .../patches/patch-gcc_config_arm_netbsd-elf.h | 55 + lang/gcc45/patches/patch-gcc_config_arm_t-arm | 13 + .../patches/patch-gcc_config_arm_t-netbsd | 19 + .../patch-gcc_config_arm_t-netbsd-eabi | 45 + .../patches/patch-gcc_config_arm_thumb2.md | 53 + .../patches/patch-gcc_config_avr_avr-stdint.h | 71 + lang/gcc45/patches/patch-gcc_config_avr_avr.c | 116 + .../patches/patch-gcc_config_avr_libgcc.S | 88 + .../patch-gcc_config_bfin_linux-unwind.h | 24 + .../patches/patch-gcc_config_darwin-protos.h | 9 + lang/gcc45/patches/patch-gcc_config_darwin.c | 39 + .../patches/patch-gcc_config_freebsd-spec.h | 13 + .../patches/patch-gcc_config_i386_athlon.md | 13 + .../patches/patch-gcc_config_i386_avxintrin.h | 13 + .../patch-gcc_config_i386_constraints.md | 13 + .../patches/patch-gcc_config_i386_darwin.h | 22 + .../patch-gcc_config_i386_driver-i386.c | 23 + .../patch-gcc_config_i386_i386-protos.h | 14 + .../patches/patch-gcc_config_i386_i386.c | 243 ++ .../patches/patch-gcc_config_i386_i386.h | 57 + .../patches/patch-gcc_config_i386_i386.md | 582 +++++ .../patch-gcc_config_i386_linux-unwind.h | 23 + .../patches/patch-gcc_config_i386_mmx.md | 31 + .../patch-gcc_config_i386_netbsd-elf.h | 12 + .../patches/patch-gcc_config_i386_netbsd64.h | 12 + .../patches/patch-gcc_config_i386_sse.md | 282 +++ .../patches/patch-gcc_config_i386_t-netbsd64 | 20 + .../patches/patch-gcc_config_i386_winnt-cxx.c | 25 + .../patches/patch-gcc_config_ia64_fde-glibc.c | 16 + .../patch-gcc_config_ia64_linux-unwind.h | 29 + .../patches/patch-gcc_config_ia64_netbsd.h | 66 + .../patches/patch-gcc_config_lm32_t-lm32 | 8 + .../patch-gcc_config_m68k_constraints.md | 14 + .../patches/patch-gcc_config_m68k_fpgnulib.c | 12 + .../patches/patch-gcc_config_m68k_lb1sf68.asm | 26 + .../patches/patch-gcc_config_m68k_m68k.md | 76 + .../patch-gcc_config_m68k_netbsd-elf.h | 110 + .../patch-gcc_config_m68k_t-m68010-netbsd | 9 + .../patch-gcc_config_mips_linux-unwind.h | 21 + .../patches/patch-gcc_config_mips_mips.c | 121 + .../patches/patch-gcc_config_mips_mips.md | 13 + .../patches/patch-gcc_config_mips_netbsd.h | 121 + .../patches/patch-gcc_config_mips_netbsd64.h | 59 + .../patches/patch-gcc_config_mips_t-netbsd64 | 14 + .../patches/patch-gcc_config_netbsd-elf.h | 50 + lang/gcc45/patches/patch-gcc_config_netbsd.h | 137 ++ .../patch-gcc_config_pa_linux-unwind.h | 20 + .../patches/patch-gcc_config_pa_milli64.S | 13 + .../patches/patch-gcc_config_pa_pa-netbsd.h | 143 ++ .../patches/patch-gcc_config_pa_pa-protos.h | 20 + lang/gcc45/patches/patch-gcc_config_pa_pa.c | 127 + lang/gcc45/patches/patch-gcc_config_pa_pa.h | 23 + lang/gcc45/patches/patch-gcc_config_pa_pa.md | 189 ++ .../patches/patch-gcc_config_pa_pa32-netbsd.h | 42 + .../patches/patch-gcc_config_pa_predicates.md | 32 + .../patches/patch-gcc_config_pa_t-netbsd | 19 + .../patch-gcc_config_rs6000_altivec.md | 66 + .../patches/patch-gcc_config_rs6000_netbsd.h | 98 + .../patch-gcc_config_rs6000_netbsd64.h | 571 +++++ .../patches/patch-gcc_config_rs6000_rs6000.c | 189 ++ .../patches/patch-gcc_config_rs6000_rs6000.h | 63 + .../patches/patch-gcc_config_rs6000_rs6000.md | 101 + .../patches/patch-gcc_config_rs6000_sysv4.h | 89 + .../patches/patch-gcc_config_rs6000_t-netbsd | 38 + .../patch-gcc_config_rs6000_t-netbsd64 | 39 + .../patches/patch-gcc_config_rs6000_vector.md | 124 + .../patches/patch-gcc_config_rs6000_vsx.md | 34 + lang/gcc45/patches/patch-gcc_config_rx_rx.c | 16 + lang/gcc45/patches/patch-gcc_config_rx_rx.h | 13 + lang/gcc45/patches/patch-gcc_config_rx_rx.md | 103 + .../patch-gcc_config_sh_linux-unwind.h | 33 + lang/gcc45/patches/patch-gcc_config_sh_sh.c | 41 + lang/gcc45/patches/patch-gcc_config_sh_sh.md | 63 + .../patches/patch-gcc_config_sh_t-netbsd | 15 + .../patch-gcc_config_sparc_netbsd-elf.h | 79 + .../patches/patch-gcc_config_sparc_sol2-64.h | 22 + .../patch-gcc_config_sparc_sol2-unwind.h | 32 + .../patches/patch-gcc_config_sparc_sol2.h | 27 + .../patch-gcc_config_sparc_sparc-protos.h | 12 + .../patches/patch-gcc_config_sparc_sparc.c | 138 ++ .../patches/patch-gcc_config_sparc_sparc.h | 22 + .../patches/patch-gcc_config_sparc_sparc.md | 151 ++ .../patches/patch-gcc_config_sparc_t-netbsd64 | 21 + lang/gcc45/patches/patch-gcc_config_t-minix | 10 + lang/gcc45/patches/patch-gcc_config_t-netbsd | 12 + .../patches/patch-gcc_config_vax_builtins.md | 31 + .../patch-gcc_config_vax_constraints.md | 13 + lang/gcc45/patches/patch-gcc_config_vax_elf.h | 11 + lang/gcc45/patches/patch-gcc_config_vax_vax.c | 272 +++ .../gcc45/patches/patch-gcc_config_vax_vax.md | 84 + .../patch-gcc_config_xtensa_linux-unwind.h | 20 + lang/gcc45/patches/patch-gcc_configure | 63 + lang/gcc45/patches/patch-gcc_configure.ac | 49 + lang/gcc45/patches/patch-gcc_convert.c | 20 + lang/gcc45/patches/patch-gcc_cp_ChangeLog | 88 + lang/gcc45/patches/patch-gcc_cp_Make-lang.in | 13 + lang/gcc45/patches/patch-gcc_cp_class.c | 29 + lang/gcc45/patches/patch-gcc_cp_decl.c | 22 + lang/gcc45/patches/patch-gcc_cp_decl2.c | 77 + lang/gcc45/patches/patch-gcc_cp_init.c | 18 + lang/gcc45/patches/patch-gcc_cp_mangle.c | 29 + lang/gcc45/patches/patch-gcc_cp_method.c | 12 + lang/gcc45/patches/patch-gcc_cp_parser.c | 20 + lang/gcc45/patches/patch-gcc_cp_tree.c | 27 + lang/gcc45/patches/patch-gcc_cp_typeck.c | 41 + lang/gcc45/patches/patch-gcc_crtstuff.c | 20 + lang/gcc45/patches/patch-gcc_df-problems.c | 65 + lang/gcc45/patches/patch-gcc_df.h | 21 + .../gcc45/patches/patch-gcc_doc_aot-compile.1 | 13 + lang/gcc45/patches/patch-gcc_doc_cpp.1 | 13 + lang/gcc45/patches/patch-gcc_doc_cpp.info | 11 + lang/gcc45/patches/patch-gcc_doc_cpp.texi | 22 + lang/gcc45/patches/patch-gcc_doc_cppenv.texi | 22 + lang/gcc45/patches/patch-gcc_doc_cppopts.texi | 43 +- .../gcc45/patches/patch-gcc_doc_fsf-funding.7 | 13 + lang/gcc45/patches/patch-gcc_doc_g++.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gc-analyze.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gcc.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gcc.info | 20 + .../patches/patch-gcc_doc_gccinstall.info | 176 ++ lang/gcc45/patches/patch-gcc_doc_gccint.info | 834 +++++++ lang/gcc45/patches/patch-gcc_doc_gcj-dbtool.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gcj.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gcj.info | 11 + lang/gcc45/patches/patch-gcc_doc_gcov.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gcov.texi | 15 + lang/gcc45/patches/patch-gcc_doc_generic.texi | 22 - lang/gcc45/patches/patch-gcc_doc_gfdl.7 | 13 + lang/gcc45/patches/patch-gcc_doc_gfortran.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gij.1 | 13 + lang/gcc45/patches/patch-gcc_doc_gpl.7 | 13 + lang/gcc45/patches/patch-gcc_doc_grmic.1 | 13 + lang/gcc45/patches/patch-gcc_doc_install.texi | 13 + lang/gcc45/patches/patch-gcc_doc_invoke.texi | 99 +- lang/gcc45/patches/patch-gcc_doc_jcf-dump.1 | 13 + lang/gcc45/patches/patch-gcc_doc_jv-convert.1 | 13 + lang/gcc45/patches/patch-gcc_doc_md.texi | 43 + .../patches/patch-gcc_doc_rebuild-gcj-db.1 | 13 + lang/gcc45/patches/patch-gcc_dojump.c | 22 + lang/gcc45/patches/patch-gcc_dwarf2out.c | 296 +++ lang/gcc45/patches/patch-gcc_expr.c | 222 ++ lang/gcc45/patches/patch-gcc_expr.h | 13 + lang/gcc45/patches/patch-gcc_final.c | 16 + lang/gcc45/patches/patch-gcc_fold-const.c | 13 + lang/gcc45/patches/patch-gcc_function.c | 22 + lang/gcc45/patches/patch-gcc_fwprop.c | 16 + lang/gcc45/patches/patch-gcc_gcc.c | 88 + lang/gcc45/patches/patch-gcc_gcc.h | 12 + lang/gcc45/patches/patch-gcc_gcov-iov.c | 31 + lang/gcc45/patches/patch-gcc_gcov.c | 15 + lang/gcc45/patches/patch-gcc_genemit.c | 17 + lang/gcc45/patches/patch-gcc_gengtype-lex.c | 410 ++++ lang/gcc45/patches/patch-gcc_genmultilib | 43 + lang/gcc45/patches/patch-gcc_genrecog.c | 20 + lang/gcc45/patches/patch-gcc_gimplify.c | 75 + .../gcc45/patches/patch-gcc_ginclude_stddef.h | 13 + lang/gcc45/patches/patch-gcc_hwint.h | 20 + lang/gcc45/patches/patch-gcc_ifcvt.c | 97 + lang/gcc45/patches/patch-gcc_ipa-prop.c | 17 + lang/gcc45/patches/patch-gcc_libgcc2.c | 64 + lang/gcc45/patches/patch-gcc_libgcov.c | 34 + lang/gcc45/patches/patch-gcc_loop-doloop.c | 63 + lang/gcc45/patches/patch-gcc_lto-opts.c | 13 + lang/gcc45/patches/patch-gcc_lto-section-in.c | 13 + .../gcc45/patches/patch-gcc_lto-streamer-in.c | 17 + .../patches/patch-gcc_lto-streamer-out.c | 27 + lang/gcc45/patches/patch-gcc_lto_ChangeLog | 24 + lang/gcc45/patches/patch-gcc_lto_lto.c | 69 + lang/gcc45/patches/patch-gcc_lto_lto.h | 12 + lang/gcc45/patches/patch-gcc_objc_ChangeLog | 12 + lang/gcc45/patches/patch-gcc_objcp_ChangeLog | 12 + lang/gcc45/patches/patch-gcc_output.h | 13 + lang/gcc45/patches/patch-gcc_po_ChangeLog | 12 + lang/gcc45/patches/patch-gcc_profile.c | 50 + lang/gcc45/patches/patch-gcc_real.c | 30 + lang/gcc45/patches/patch-gcc_recog.c | 32 + lang/gcc45/patches/patch-gcc_regmove.c | 13 + lang/gcc45/patches/patch-gcc_reload.c | 20 + lang/gcc45/patches/patch-gcc_reload1.c | 18 + lang/gcc45/patches/patch-gcc_reorg.c | 17 + lang/gcc45/patches/patch-gcc_stmt.c | 46 + lang/gcc45/patches/patch-gcc_target-def.h | 12 + lang/gcc45/patches/patch-gcc_targhooks.c | 22 + .../patches/patch-gcc_testsuite_ChangeLog | 705 ++++++ ...patch-gcc_testsuite_c-c++-common_pr51768.c | 30 + ...atch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C | 23 + ...atch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C | 18 + ...ch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C | 20 + .../patch-gcc_testsuite_g++.dg_dfp_44473-1.C | 127 + .../patch-gcc_testsuite_g++.dg_dfp_44473-2.C | 30 + .../patch-gcc_testsuite_g++.dg_dfp_mangle-1.C | 45 + .../patch-gcc_testsuite_g++.dg_dfp_mangle-2.C | 33 + .../patch-gcc_testsuite_g++.dg_dfp_mangle-3.C | 33 + .../patch-gcc_testsuite_g++.dg_dfp_mangle-4.C | 40 + .../patch-gcc_testsuite_g++.dg_dfp_mangle-5.C | 34 + .../patch-gcc_testsuite_g++.dg_eh_cond5.C | 48 + .../patch-gcc_testsuite_g++.dg_eh_cond6.C | 48 + .../patch-gcc_testsuite_g++.dg_gcov_gcov-2.C | 13 + .../patch-gcc_testsuite_g++.dg_init_new30.C | 20 + .../patch-gcc_testsuite_g++.dg_init_new32.C | 21 + .../patch-gcc_testsuite_g++.dg_init_value9.C | 37 + .../patch-gcc_testsuite_g++.dg_init_vbase1.C | 44 + .../patch-gcc_testsuite_g++.dg_ipa_pr51759.C | 31 + ...patch-gcc_testsuite_g++.dg_other_pr49133.C | 42 + ...patch-gcc_testsuite_g++.dg_other_pr50464.C | 175 ++ .../patch-gcc_testsuite_g++.dg_parse_ambig6.C | 17 + .../patch-gcc_testsuite_g++.dg_pr48660.C | 27 + ...patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C | 20 + ...-gcc_testsuite_g++.dg_template_nontype23.C | 14 + ...tch-gcc_testsuite_g++.dg_torture_pr47714.C | 21 + ...tch-gcc_testsuite_g++.dg_torture_pr49039.C | 81 + ...tch-gcc_testsuite_g++.dg_torture_pr49115.C | 30 + ...tch-gcc_testsuite_g++.dg_torture_pr49615.C | 34 + ...tch-gcc_testsuite_g++.dg_torture_pr49644.C | 22 + ...tch-gcc_testsuite_g++.dg_torture_pr50189.C | 125 + ...tch-gcc_testsuite_g++.dg_torture_pr51344.C | 16 + ...ch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C | 46 + ...testsuite_g++.old-deja_g++.oliva_ChangeLog | 12 + ...e_gcc.c-torture_compile_limits-externdecl. | 61 + ..._testsuite_gcc.c-torture_compile_pr38752.c | 30 + ..._testsuite_gcc.c-torture_compile_pr48742.c | 20 + ..._testsuite_gcc.c-torture_compile_pr49238.c | 23 + ...estsuite_gcc.c-torture_compile_pr50565-1.c | 9 + ...estsuite_gcc.c-torture_compile_pr50565-2.c | 9 + ..._testsuite_gcc.c-torture_compile_pr51767.c | 28 + ...estsuite_gcc.c-torture_compile_pr53418-1.c | 10 + ...estsuite_gcc.c-torture_compile_pr53418-2.c | 10 + ...stsuite_gcc.c-torture_execute_20120111-1.c | 23 + ...stsuite_gcc.c-torture_execute_20120427-1.c | 41 + ...testsuite_gcc.c-torture_execute_960321-1.x | 20 + ...testsuite_gcc.c-torture_execute_doloop-1.c | 23 + ...testsuite_gcc.c-torture_execute_doloop-2.c | 23 + ..._testsuite_gcc.c-torture_execute_pr48809.c | 65 + ...estsuite_gcc.c-torture_execute_pr48973-1.c | 25 + ...estsuite_gcc.c-torture_execute_pr48973-2.c | 19 + ..._testsuite_gcc.c-torture_execute_pr49039.c | 31 + ..._testsuite_gcc.c-torture_execute_pr49161.c | 51 + ..._testsuite_gcc.c-torture_execute_pr49186.c | 20 + ..._testsuite_gcc.c-torture_execute_pr49279.c | 40 + ..._testsuite_gcc.c-torture_execute_pr49644.c | 21 + ...tch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h | 6 + .../patch-gcc_testsuite_gcc.dg_delay-slot-2.c | 121 + .../patch-gcc_testsuite_gcc.dg_dfp_pr52140.c | 15 + .../patch-gcc_testsuite_gcc.dg_gomp_pr49640.c | 34 + .../patch-gcc_testsuite_gcc.dg_ipa_pr45644.c | 40 + ...-gcc_testsuite_gcc.dg_noncompile_pr52290.c | 8 + .../patch-gcc_testsuite_gcc.dg_pr48685.c | 16 + .../patch-gcc_testsuite_gcc.dg_pr48774.c | 43 + .../patch-gcc_testsuite_gcc.dg_pr48837.c | 35 + .../patch-gcc_testsuite_gcc.dg_pr49120.c | 16 + .../patch-gcc_testsuite_gcc.dg_pr49307.c | 26 + .../patch-gcc_testsuite_gcc.dg_pr49619.c | 18 + .../patch-gcc_testsuite_gcc.dg_pr51408.c | 27 + .../patch-gcc_testsuite_gcc.dg_pr51821.c | 30 + .../patch-gcc_testsuite_gcc.dg_pr52139.c | 54 + ...tch-gcc_testsuite_gcc.dg_torture_pr48542.c | 62 + ...tch-gcc_testsuite_gcc.dg_torture_pr48822.c | 25 + ...tch-gcc_testsuite_gcc.dg_torture_pr49651.c | 36 + ...h-gcc_testsuite_gcc.dg_torture_pr51106-1.c | 19 + ...h-gcc_testsuite_gcc.dg_torture_pr51106-2.c | 19 + ...tch-gcc_testsuite_gcc.dg_torture_pr52693.c | 38 + ...h-gcc_testsuite_gcc.dg_tree-prof_pr44777.c | 48 + ...ch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c | 36 + .../patch-gcc_testsuite_gcc.dg_vect_pr48172.c | 38 + .../patch-gcc_testsuite_gcc.dg_vect_pr49038.c | 47 + ...e_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn | 121 + ...stsuite_gcc.target_arm_neon-vset__lanes8.c | 26 + ...tch-gcc_testsuite_gcc.target_arm_pr48252.c | 36 + ...tch-gcc_testsuite_gcc.target_arm_pr51835.c | 19 + ..._testsuite_gcc.target_i386_aes-avx-check.h | 23 + ...-gcc_testsuite_gcc.target_i386_avx-check.h | 22 + ...testsuite_gcc.target_i386_avx-os-support.h | 15 + ...stsuite_gcc.target_i386_pclmul-avx-check.h | 23 + ...ch-gcc_testsuite_gcc.target_i386_pr47780.c | 19 + ...ch-gcc_testsuite_gcc.target_i386_pr48708.c | 20 + ...ch-gcc_testsuite_gcc.target_i386_pr49920.c | 28 + ...ch-gcc_testsuite_gcc.target_i386_pr50788.c | 15 + ...ch-gcc_testsuite_gcc.target_i386_pr51393.c | 27 + ...ch-gcc_testsuite_gcc.target_i386_pr52330.c | 12 + ...stsuite_gcc.target_i386_sse2-init-v2di-2.c | 18 + ...-gcc_testsuite_gcc.target_mips_reg-var-1.c | 21 + ..._testsuite_gcc.target_powerpc_altivec-34.c | 29 + ...suite_gcc.target_powerpc_cell__builtin-1.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-2.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-3.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-4.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-5.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-6.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-7.c | 53 + ...suite_gcc.target_powerpc_cell__builtin-8.c | 53 + ...gcc_testsuite_gcc.target_powerpc_pr48857.c | 30 + ...gcc_testsuite_gcc.target_powerpc_pr53199.c | 55 + ...tch-gcc_testsuite_gcc.target_sparc_cas64.c | 20 + ...atch-gcc_testsuite_lib_target-supports.exp | 55 + lang/gcc45/patches/patch-gcc_tree-cfg.c | 19 + .../gcc45/patches/patch-gcc_tree-cfgcleanup.c | 13 + lang/gcc45/patches/patch-gcc_tree-inline.c | 23 + lang/gcc45/patches/patch-gcc_tree-mudflap.c | 58 + lang/gcc45/patches/patch-gcc_tree-outof-ssa.c | 17 + .../patches/patch-gcc_tree-scalar-evolution.c | 14 + lang/gcc45/patches/patch-gcc_tree-sra.c | 64 + lang/gcc45/patches/patch-gcc_tree-ssa-dce.c | 20 + lang/gcc45/patches/patch-gcc_tree-ssa-dom.c | 18 + lang/gcc45/patches/patch-gcc_tree-ssa-sccvn.c | 45 + .../patches/patch-gcc_tree-ssa-structalias.c | 110 + .../patch-gcc_tree-switch-conversion.c | 107 + lang/gcc45/patches/patch-gcc_tree-tailcall.c | 19 + .../patches/patch-gcc_tree-vect-data-refs.c | 63 + .../patches/patch-gcc_tree-vect-loop-manip.c | 120 + lang/gcc45/patches/patch-gcc_tree-vect-loop.c | 33 + .../gcc45/patches/patch-gcc_tree-vect-stmts.c | 13 + .../gcc45/patches/patch-gcc_tree-vectorizer.h | 25 + lang/gcc45/patches/patch-gcc_tree-vrp.c | 204 ++ .../patches/patch-gcc_unwind-dw2-fde-glibc.c | 17 + lang/gcc45/patches/patch-gcc_unwind-dw2-fde.c | 14 + lang/gcc45/patches/patch-gcc_unwind-dw2.c | 19 + lang/gcc45/patches/patch-gcc_var-tracking.c | 39 + lang/gcc45/patches/patch-gcc_varasm.c | 67 + lang/gcc45/patches/patch-include_ChangeLog | 12 + lang/gcc45/patches/patch-include_objalloc.h | 20 + lang/gcc45/patches/patch-intl_ChangeLog | 12 + lang/gcc45/patches/patch-libcpp_ChangeLog | 12 + lang/gcc45/patches/patch-libcpp_Makefile.in | 13 + lang/gcc45/patches/patch-libcpp_configure | 12 + lang/gcc45/patches/patch-libcpp_files.c | 46 + .../patches/patch-libcpp_include_cpplib.h | 14 + lang/gcc45/patches/patch-libcpp_init.c | 14 + lang/gcc45/patches/patch-libcpp_internal.h | 14 + lang/gcc45/patches/patch-libcpp_lex.c | 31 + lang/gcc45/patches/patch-libcpp_macro.c | 106 + lang/gcc45/patches/patch-libcpp_po_ChangeLog | 12 + .../patches/patch-libdecnumber_ChangeLog | 12 + lang/gcc45/patches/patch-libgcc_ChangeLog | 27 + lang/gcc45/patches/patch-libgcc_config.host | 22 + .../patch-libgcc_config_i386_64_sfp-machine.h | 32 + .../patch-libgcc_config_libbid_ChangeLog | 12 + .../patch-libgcc_config_t-slibgcc-darwin | 26 - lang/gcc45/patches/patch-libgomp_ChangeLog | 24 + lang/gcc45/patches/patch-libgomp_fortran.c | 90 + lang/gcc45/patches/patch-libgomp_libgomp.info | 11 + ...gomp_testsuite_libgomp.fortran_pr48894.f90 | 28 + lang/gcc45/patches/patch-libiberty_ChangeLog | 62 + .../patches/patch-libiberty_floatformat.c | 16 + .../patch-libiberty_make-relative-prefix.c | 57 + lang/gcc45/patches/patch-libiberty_objalloc.c | 34 + lang/gcc45/patches/patch-libiberty_strerror.c | 13 + ...atch-libiberty_testsuite_test-expandargv.c | 25 + lang/gcc45/patches/patch-libmudflap_ChangeLog | 20 + .../patches/patch-libmudflap_mf-hooks1.c | 22 + .../patches/patch-libmudflap_mf-hooks2.c | 16 + lang/gcc45/patches/patch-libmudflap_mf-impl.h | 49 + .../patches/patch-libmudflap_mf-runtime.c | 102 + .../patches/patch-libmudflap_mf-runtime.h | 28 + ...dflap_testsuite_libmudflap.c_fail68-frag.c | 32 + lang/gcc45/patches/patch-libobjc_ChangeLog | 12 + lang/gcc45/patches/patch-libobjc_archive.c | 121 + lang/gcc45/patches/patch-libobjc_encoding.c | 22 + lang/gcc45/patches/patch-libobjc_hash.c | 15 + lang/gcc45/patches/patch-libobjc_sendmsg.c | 44 + lang/gcc45/patches/patch-libssp_ChangeLog | 12 + .../patches/patch-libstdc++-v3_ChangeLog | 22 + ...dc++-v3_config_os_bsd_netbsd_ctype__base.h | 44 + ...++-v3_config_os_bsd_netbsd_ctype__inline.h | 4 +- ...v3_config_os_bsd_netbsd_ctype__noninline.h | 19 +- .../patches/patch-libstdc++-v3_configure | 103 + .../patches/patch-libstdc++-v3_crossconfig.m4 | 56 + ...bstdc++-v3_include_bits_locale__facets.tcc | 31 + ...-libstdc++-v3_include_bits_stl__algobase.h | 15 + ...atch-libstdc++-v3_include_bits_stl__pair.h | 29 + ...tch-libstdc++-v3_include_bits_stl__queue.h | 47 + ...libstdc++-v3_include_ext_numeric__traits.h | 40 + .../patch-libstdc++-v3_include_ext_rope | 22 + .../patch-libstdc++-v3_include_ext_ropeimpl.h | 67 + .../patch-libstdc++-v3_libsupc++_eh__arm.cc | 28 + ...ch-libstdc++-v3_libsupc++_exception__ptr.h | 13 + ...libstdc++-v3_libsupc++_nested__exception.h | 13 + .../patch-libstdc++-v3_libsupc++_unwind-cxx.h | 15 + .../patches/patch-libstdc++-v3_src_atomic.cc | 22 + .../patch-libstdc++-v3_src_locale-inst.cc | 18 + ..._testsuite_22__locale_time__get_get__weekd | 37 + lang/gcc45/patches/patch-lto-plugin_ChangeLog | 12 + .../patch-maintainer-scripts_ChangeLog | 12 + lang/gcc45/patches/patch-zlib_ChangeLog | 12 + lang/gcc45/patches/patch-zlib_zconf.in.h | 13 + 455 files changed, 25999 insertions(+), 991 deletions(-) create mode 100644 lang/gcc45/files/arm-minix.h delete mode 100644 lang/gcc45/files/dragonfly-spec.h delete mode 100644 lang/gcc45/files/dragonfly.h create mode 100644 lang/gcc45/files/gcov-minix-fs-wrapper.h delete mode 100644 lang/gcc45/files/hello.f delete mode 100644 lang/gcc45/files/hello.m delete mode 100644 lang/gcc45/files/i386-dragonfly.h delete mode 100644 lang/gcc45/files/i386-dragonfly64.h create mode 100644 lang/gcc45/files/i386-minix.h create mode 100644 lang/gcc45/files/minix-spec.h create mode 100644 lang/gcc45/files/minix.h create mode 100644 lang/gcc45/files/t-minix create mode 100644 lang/gcc45/patches/patch-ChangeLog create mode 100644 lang/gcc45/patches/patch-INSTALL_configure.html create mode 100644 lang/gcc45/patches/patch-LAST__UPDATED create mode 100644 lang/gcc45/patches/patch-MD5SUMS create mode 100644 lang/gcc45/patches/patch-Makefile.def create mode 100644 lang/gcc45/patches/patch-Makefile.in create mode 100644 lang/gcc45/patches/patch-NEWS delete mode 100644 lang/gcc45/patches/patch-aa delete mode 100644 lang/gcc45/patches/patch-ab delete mode 100644 lang/gcc45/patches/patch-ac delete mode 100644 lang/gcc45/patches/patch-ad delete mode 100644 lang/gcc45/patches/patch-af delete mode 100644 lang/gcc45/patches/patch-ag delete mode 100644 lang/gcc45/patches/patch-ah delete mode 100644 lang/gcc45/patches/patch-aj delete mode 100644 lang/gcc45/patches/patch-ak create mode 100644 lang/gcc45/patches/patch-config.guess create mode 100644 lang/gcc45/patches/patch-config.sub create mode 100644 lang/gcc45/patches/patch-config_ChangeLog create mode 100644 lang/gcc45/patches/patch-config_acx.m4 create mode 100644 lang/gcc45/patches/patch-config_mh-x86-darwin create mode 100644 lang/gcc45/patches/patch-configure create mode 100644 lang/gcc45/patches/patch-configure.ac create mode 100644 lang/gcc45/patches/patch-contrib_ChangeLog create mode 100644 lang/gcc45/patches/patch-contrib_reghunt_ChangeLog create mode 100644 lang/gcc45/patches/patch-contrib_regression_ChangeLog create mode 100644 lang/gcc45/patches/patch-fixincludes_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_BASE-VER create mode 100644 lang/gcc45/patches/patch-gcc_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_DATESTAMP create mode 100644 lang/gcc45/patches/patch-gcc_Makefile.in create mode 100644 lang/gcc45/patches/patch-gcc_builtins.c create mode 100644 lang/gcc45/patches/patch-gcc_c-common.c create mode 100644 lang/gcc45/patches/patch-gcc_c-decl.c create mode 100644 lang/gcc45/patches/patch-gcc_c-lex.c create mode 100644 lang/gcc45/patches/patch-gcc_c-opts.c create mode 100644 lang/gcc45/patches/patch-gcc_c-typeck.c create mode 100644 lang/gcc45/patches/patch-gcc_c.opt create mode 100644 lang/gcc45/patches/patch-gcc_caller-save.c create mode 100644 lang/gcc45/patches/patch-gcc_cfgexpand.c create mode 100644 lang/gcc45/patches/patch-gcc_cfgrtl.c create mode 100644 lang/gcc45/patches/patch-gcc_combine.c create mode 100644 lang/gcc45/patches/patch-gcc_config.gcc create mode 100644 lang/gcc45/patches/patch-gcc_config_alpha_alpha.c create mode 100644 lang/gcc45/patches/patch-gcc_config_alpha_elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_alpha_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_arm-cores.def create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_arm.c create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_arm.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_arm.md create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_bpabi-netbsd.c create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_bpabi.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_neon.md create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_netbsd-eabi.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_netbsd-elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_t-arm create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_t-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_t-netbsd-eabi create mode 100644 lang/gcc45/patches/patch-gcc_config_arm_thumb2.md create mode 100644 lang/gcc45/patches/patch-gcc_config_avr_avr-stdint.h create mode 100644 lang/gcc45/patches/patch-gcc_config_avr_avr.c create mode 100644 lang/gcc45/patches/patch-gcc_config_avr_libgcc.S create mode 100644 lang/gcc45/patches/patch-gcc_config_bfin_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_darwin-protos.h create mode 100644 lang/gcc45/patches/patch-gcc_config_darwin.c create mode 100644 lang/gcc45/patches/patch-gcc_config_freebsd-spec.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_athlon.md create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_avxintrin.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_constraints.md create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_darwin.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_driver-i386.c create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_i386-protos.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_i386.c create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_i386.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_i386.md create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_mmx.md create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_netbsd-elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_netbsd64.h create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_sse.md create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_t-netbsd64 create mode 100644 lang/gcc45/patches/patch-gcc_config_i386_winnt-cxx.c create mode 100644 lang/gcc45/patches/patch-gcc_config_ia64_fde-glibc.c create mode 100644 lang/gcc45/patches/patch-gcc_config_ia64_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_ia64_netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_lm32_t-lm32 create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_constraints.md create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_fpgnulib.c create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_lb1sf68.asm create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_m68k.md create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_netbsd-elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_m68k_t-m68010-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_mips.c create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_mips.md create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_netbsd64.h create mode 100644 lang/gcc45/patches/patch-gcc_config_mips_t-netbsd64 create mode 100644 lang/gcc45/patches/patch-gcc_config_netbsd-elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_milli64.S create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa-netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa-protos.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa.c create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa.md create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_pa32-netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_predicates.md create mode 100644 lang/gcc45/patches/patch-gcc_config_pa_t-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_altivec.md create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_netbsd.h create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_netbsd64.h create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.c create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.h create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.md create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_sysv4.h create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd64 create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_vector.md create mode 100644 lang/gcc45/patches/patch-gcc_config_rs6000_vsx.md create mode 100644 lang/gcc45/patches/patch-gcc_config_rx_rx.c create mode 100644 lang/gcc45/patches/patch-gcc_config_rx_rx.h create mode 100644 lang/gcc45/patches/patch-gcc_config_rx_rx.md create mode 100644 lang/gcc45/patches/patch-gcc_config_sh_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sh_sh.c create mode 100644 lang/gcc45/patches/patch-gcc_config_sh_sh.md create mode 100644 lang/gcc45/patches/patch-gcc_config_sh_t-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_netbsd-elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sol2-64.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sol2-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sol2.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sparc-protos.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sparc.c create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sparc.h create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_sparc.md create mode 100644 lang/gcc45/patches/patch-gcc_config_sparc_t-netbsd64 create mode 100644 lang/gcc45/patches/patch-gcc_config_t-minix create mode 100644 lang/gcc45/patches/patch-gcc_config_t-netbsd create mode 100644 lang/gcc45/patches/patch-gcc_config_vax_builtins.md create mode 100644 lang/gcc45/patches/patch-gcc_config_vax_constraints.md create mode 100644 lang/gcc45/patches/patch-gcc_config_vax_elf.h create mode 100644 lang/gcc45/patches/patch-gcc_config_vax_vax.c create mode 100644 lang/gcc45/patches/patch-gcc_config_vax_vax.md create mode 100644 lang/gcc45/patches/patch-gcc_config_xtensa_linux-unwind.h create mode 100644 lang/gcc45/patches/patch-gcc_configure create mode 100644 lang/gcc45/patches/patch-gcc_configure.ac create mode 100644 lang/gcc45/patches/patch-gcc_convert.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_cp_Make-lang.in create mode 100644 lang/gcc45/patches/patch-gcc_cp_class.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_decl.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_decl2.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_init.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_mangle.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_method.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_parser.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_tree.c create mode 100644 lang/gcc45/patches/patch-gcc_cp_typeck.c create mode 100644 lang/gcc45/patches/patch-gcc_crtstuff.c create mode 100644 lang/gcc45/patches/patch-gcc_df-problems.c create mode 100644 lang/gcc45/patches/patch-gcc_df.h create mode 100644 lang/gcc45/patches/patch-gcc_doc_aot-compile.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_cpp.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_cpp.info create mode 100644 lang/gcc45/patches/patch-gcc_doc_cpp.texi create mode 100644 lang/gcc45/patches/patch-gcc_doc_cppenv.texi create mode 100644 lang/gcc45/patches/patch-gcc_doc_fsf-funding.7 create mode 100644 lang/gcc45/patches/patch-gcc_doc_g++.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gc-analyze.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcc.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcc.info create mode 100644 lang/gcc45/patches/patch-gcc_doc_gccinstall.info create mode 100644 lang/gcc45/patches/patch-gcc_doc_gccint.info create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcj-dbtool.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcj.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcj.info create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcov.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gcov.texi delete mode 100644 lang/gcc45/patches/patch-gcc_doc_generic.texi create mode 100644 lang/gcc45/patches/patch-gcc_doc_gfdl.7 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gfortran.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gij.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_gpl.7 create mode 100644 lang/gcc45/patches/patch-gcc_doc_grmic.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_install.texi create mode 100644 lang/gcc45/patches/patch-gcc_doc_jcf-dump.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_jv-convert.1 create mode 100644 lang/gcc45/patches/patch-gcc_doc_md.texi create mode 100644 lang/gcc45/patches/patch-gcc_doc_rebuild-gcj-db.1 create mode 100644 lang/gcc45/patches/patch-gcc_dojump.c create mode 100644 lang/gcc45/patches/patch-gcc_dwarf2out.c create mode 100644 lang/gcc45/patches/patch-gcc_expr.c create mode 100644 lang/gcc45/patches/patch-gcc_expr.h create mode 100644 lang/gcc45/patches/patch-gcc_final.c create mode 100644 lang/gcc45/patches/patch-gcc_fold-const.c create mode 100644 lang/gcc45/patches/patch-gcc_function.c create mode 100644 lang/gcc45/patches/patch-gcc_fwprop.c create mode 100644 lang/gcc45/patches/patch-gcc_gcc.c create mode 100644 lang/gcc45/patches/patch-gcc_gcc.h create mode 100644 lang/gcc45/patches/patch-gcc_gcov-iov.c create mode 100644 lang/gcc45/patches/patch-gcc_gcov.c create mode 100644 lang/gcc45/patches/patch-gcc_genemit.c create mode 100644 lang/gcc45/patches/patch-gcc_gengtype-lex.c create mode 100644 lang/gcc45/patches/patch-gcc_genmultilib create mode 100644 lang/gcc45/patches/patch-gcc_genrecog.c create mode 100644 lang/gcc45/patches/patch-gcc_gimplify.c create mode 100644 lang/gcc45/patches/patch-gcc_ginclude_stddef.h create mode 100644 lang/gcc45/patches/patch-gcc_hwint.h create mode 100644 lang/gcc45/patches/patch-gcc_ifcvt.c create mode 100644 lang/gcc45/patches/patch-gcc_ipa-prop.c create mode 100644 lang/gcc45/patches/patch-gcc_libgcc2.c create mode 100644 lang/gcc45/patches/patch-gcc_libgcov.c create mode 100644 lang/gcc45/patches/patch-gcc_loop-doloop.c create mode 100644 lang/gcc45/patches/patch-gcc_lto-opts.c create mode 100644 lang/gcc45/patches/patch-gcc_lto-section-in.c create mode 100644 lang/gcc45/patches/patch-gcc_lto-streamer-in.c create mode 100644 lang/gcc45/patches/patch-gcc_lto-streamer-out.c create mode 100644 lang/gcc45/patches/patch-gcc_lto_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_lto_lto.c create mode 100644 lang/gcc45/patches/patch-gcc_lto_lto.h create mode 100644 lang/gcc45/patches/patch-gcc_objc_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_objcp_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_output.h create mode 100644 lang/gcc45/patches/patch-gcc_po_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_profile.c create mode 100644 lang/gcc45/patches/patch-gcc_real.c create mode 100644 lang/gcc45/patches/patch-gcc_recog.c create mode 100644 lang/gcc45/patches/patch-gcc_regmove.c create mode 100644 lang/gcc45/patches/patch-gcc_reload.c create mode 100644 lang/gcc45/patches/patch-gcc_reload1.c create mode 100644 lang/gcc45/patches/patch-gcc_reorg.c create mode 100644 lang/gcc45/patches/patch-gcc_stmt.c create mode 100644 lang/gcc45/patches/patch-gcc_target-def.h create mode 100644 lang/gcc45/patches/patch-gcc_targhooks.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_c-c++-common_pr51768.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-1.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-2.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-1.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-2.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-3.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-4.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-5.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond5.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond6.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_gcov_gcov-2.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new30.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new32.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_value9.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_vbase1.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_ipa_pr51759.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr49133.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr50464.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_parse_ambig6.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_pr48660.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_template_nontype23.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr47714.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49039.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49115.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49615.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49644.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr50189.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr51344.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_g++.old-deja_g++.oliva_ChangeLog create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_limits-externdecl. create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr38752.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr48742.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr49238.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr51767.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120111-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120427-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_960321-1.x create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48809.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49039.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49161.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49186.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49279.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49644.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_delay-slot-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_dfp_pr52140.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_gomp_pr49640.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_ipa_pr45644.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_noncompile_pr52290.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48685.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48774.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48837.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49120.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49307.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49619.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51408.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51821.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr52139.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48542.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48822.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr49651.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr52693.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-prof_pr44777.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr48172.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr49038.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_neon-vset__lanes8.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr48252.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr51835.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_aes-avx-check.h create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-check.h create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-os-support.h create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pclmul-avx-check.h create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr47780.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr48708.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr49920.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr50788.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr51393.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr52330.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_sse2-init-v2di-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_mips_reg-var-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_altivec-34.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-1.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-2.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-3.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-4.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-5.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-6.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-7.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-8.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr48857.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr53199.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_gcc.target_sparc_cas64.c create mode 100644 lang/gcc45/patches/patch-gcc_testsuite_lib_target-supports.exp create mode 100644 lang/gcc45/patches/patch-gcc_tree-cfg.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-cfgcleanup.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-inline.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-mudflap.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-outof-ssa.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-scalar-evolution.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-sra.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-ssa-dce.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-ssa-dom.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-ssa-sccvn.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-ssa-structalias.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-switch-conversion.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-tailcall.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-vect-data-refs.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-vect-loop-manip.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-vect-loop.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-vect-stmts.c create mode 100644 lang/gcc45/patches/patch-gcc_tree-vectorizer.h create mode 100644 lang/gcc45/patches/patch-gcc_tree-vrp.c create mode 100644 lang/gcc45/patches/patch-gcc_unwind-dw2-fde-glibc.c create mode 100644 lang/gcc45/patches/patch-gcc_unwind-dw2-fde.c create mode 100644 lang/gcc45/patches/patch-gcc_unwind-dw2.c create mode 100644 lang/gcc45/patches/patch-gcc_var-tracking.c create mode 100644 lang/gcc45/patches/patch-gcc_varasm.c create mode 100644 lang/gcc45/patches/patch-include_ChangeLog create mode 100644 lang/gcc45/patches/patch-include_objalloc.h create mode 100644 lang/gcc45/patches/patch-intl_ChangeLog create mode 100644 lang/gcc45/patches/patch-libcpp_ChangeLog create mode 100644 lang/gcc45/patches/patch-libcpp_Makefile.in create mode 100644 lang/gcc45/patches/patch-libcpp_configure create mode 100644 lang/gcc45/patches/patch-libcpp_files.c create mode 100644 lang/gcc45/patches/patch-libcpp_include_cpplib.h create mode 100644 lang/gcc45/patches/patch-libcpp_init.c create mode 100644 lang/gcc45/patches/patch-libcpp_internal.h create mode 100644 lang/gcc45/patches/patch-libcpp_lex.c create mode 100644 lang/gcc45/patches/patch-libcpp_macro.c create mode 100644 lang/gcc45/patches/patch-libcpp_po_ChangeLog create mode 100644 lang/gcc45/patches/patch-libdecnumber_ChangeLog create mode 100644 lang/gcc45/patches/patch-libgcc_ChangeLog create mode 100644 lang/gcc45/patches/patch-libgcc_config.host create mode 100644 lang/gcc45/patches/patch-libgcc_config_i386_64_sfp-machine.h create mode 100644 lang/gcc45/patches/patch-libgcc_config_libbid_ChangeLog delete mode 100644 lang/gcc45/patches/patch-libgcc_config_t-slibgcc-darwin create mode 100644 lang/gcc45/patches/patch-libgomp_ChangeLog create mode 100644 lang/gcc45/patches/patch-libgomp_fortran.c create mode 100644 lang/gcc45/patches/patch-libgomp_libgomp.info create mode 100644 lang/gcc45/patches/patch-libgomp_testsuite_libgomp.fortran_pr48894.f90 create mode 100644 lang/gcc45/patches/patch-libiberty_ChangeLog create mode 100644 lang/gcc45/patches/patch-libiberty_floatformat.c create mode 100644 lang/gcc45/patches/patch-libiberty_make-relative-prefix.c create mode 100644 lang/gcc45/patches/patch-libiberty_objalloc.c create mode 100644 lang/gcc45/patches/patch-libiberty_strerror.c create mode 100644 lang/gcc45/patches/patch-libiberty_testsuite_test-expandargv.c create mode 100644 lang/gcc45/patches/patch-libmudflap_ChangeLog create mode 100644 lang/gcc45/patches/patch-libmudflap_mf-hooks1.c create mode 100644 lang/gcc45/patches/patch-libmudflap_mf-hooks2.c create mode 100644 lang/gcc45/patches/patch-libmudflap_mf-impl.h create mode 100644 lang/gcc45/patches/patch-libmudflap_mf-runtime.c create mode 100644 lang/gcc45/patches/patch-libmudflap_mf-runtime.h create mode 100644 lang/gcc45/patches/patch-libmudflap_testsuite_libmudflap.c_fail68-frag.c create mode 100644 lang/gcc45/patches/patch-libobjc_ChangeLog create mode 100644 lang/gcc45/patches/patch-libobjc_archive.c create mode 100644 lang/gcc45/patches/patch-libobjc_encoding.c create mode 100644 lang/gcc45/patches/patch-libobjc_hash.c create mode 100644 lang/gcc45/patches/patch-libobjc_sendmsg.c create mode 100644 lang/gcc45/patches/patch-libssp_ChangeLog create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_ChangeLog create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_configure create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_crossconfig.m4 create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_bits_locale__facets.tcc create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__algobase.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__pair.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__queue.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_ext_numeric__traits.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_ext_rope create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_include_ext_ropeimpl.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_libsupc++_eh__arm.cc create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_libsupc++_exception__ptr.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_libsupc++_nested__exception.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_src_atomic.cc create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_src_locale-inst.cc create mode 100644 lang/gcc45/patches/patch-libstdc++-v3_testsuite_22__locale_time__get_get__weekd create mode 100644 lang/gcc45/patches/patch-lto-plugin_ChangeLog create mode 100644 lang/gcc45/patches/patch-maintainer-scripts_ChangeLog create mode 100644 lang/gcc45/patches/patch-zlib_ChangeLog create mode 100644 lang/gcc45/patches/patch-zlib_zconf.in.h diff --git a/lang/gcc45/Makefile b/lang/gcc45/Makefile index cc7d56fff..bbe64e688 100644 --- a/lang/gcc45/Makefile +++ b/lang/gcc45/Makefile @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.18 2015/04/10 22:01:43 rodent Exp $ +# $NetBSD: Makefile,v 1.13 2013/05/31 12:41:11 wiz Exp $ DISTNAME= gcc-${GCC_VERSION} PKGNAME= gcc45-${GCC_VERSION} -PKGREVISION= 7 +PKGREVISION= 5 CATEGORIES= lang MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/} EXTRACT_SUFX= .tar.bz2 @@ -13,7 +13,6 @@ COMMENT= GNU Compiler Collection 4.5 LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3 USE_TOOLS+= awk:run bash:run chmod gmake:run makeinfo sed:run -GCC_REQD+= 4.4 GCC_VERSION= 4.5.3 @@ -66,12 +65,37 @@ REPLACE_BASH+= libstdc++-v3/scripts/run_doxygen CONFIGURE_ARGS+= --prefix=${GCC_PREFIX:Q} -CONFIGURE_ARGS+= --enable-languages=${LANGS:Q} CONFIGURE_ARGS+= --enable-shared CONFIGURE_ARGS+= --enable-long-long CONFIGURE_ARGS+= --with-local-prefix=${GCC_PREFIX:Q} +CONFIGURE_ARGS+= --enable-languages=${LANGS:Q} +.if ${OPSYS} == "NetBSD" && ${OS_VARIANT} == "Minix" +CPPFLAGS+= -DNETBSD_NATIVE + +MAKE_ENV+= gcc_cv_as_hidden=yes gcc_cv_ld_hidden=yes + +CONFIGURE_ARGS+= --disable-libssp +CONFIGURE_ARGS+= --disable-threads +CONFIGURE_ARGS+= --disable-multilib +CONFIGURE_ARGS+= --with-sysroot=/ +CONFIGURE_ARGS+= --with-as=${PREFIX}/gnu/bin/as +CONFIGURE_ARGS+= --with-system-zlib +CONFIGURE_ARGS+= --target=i586-elf32-minix + +CONFIGURE_ARGS+= --with-arch=i586 +CONFIGURE_ARGS+= --with-tune=nocona + +# BJG: Workaround for minix patch breaking on NUL inputs. +USE_TOOLS+= gsed +post-extract: +.for f in libgomp/libgomp.info libjava/classpath/doc/cp-tools.info gcc/doc/gcj.info gcc/doc/gcc.info gcc/doc/gccinstall.info gcc/doc/cppinternals.info gcc/doc/gccint.info gcc/doc/cpp.info gcc/fortran/gfortran.info + gsed -i.prev -s 's/^..\[index..\]$$/[index]/' ${WRKSRC}/${f} +.endfor + +.else CONFIGURE_ARGS+= --enable-libssp CONFIGURE_ARGS+= --enable-threads=posix +.endif # ${OPSYS} == "NetBSD" && ${OS_VARIANT} == "Minix" .if ${OPSYS} == "NetBSD" .include "../../devel/binutils/buildlink3.mk" .include "../../devel/libelf/buildlink3.mk" @@ -82,21 +106,6 @@ MAKE_ENV+= ac_cv_func_clock_gettime=yes .if ${OPSYS} == "Linux" CONFIGURE_ARGS+= --disable-libquadmath --disable-libquadmath-support .endif -.if ${OPSYS} == "Darwin" -# See ${WRKSRC}/libgcc/config/t-slibgcc-darwin: It uses strip(1) to -# create a stub library, not just to remove symbols, so we must not -# let strip(1) be a no-op regardless of ${INSTALL_UNSTRIPPED} or the -# build fails for missing files. -CONFIGURE_ARGS+= STRIP_FOR_TARGET=${TOOLS_PLATFORM.strip} -.endif - -.if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*) -CONFIGURE_ARGS+= --with-dwarf2 -.endif - -.if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-powerpc) -CONFIGURE_ARGS+= --disable-multilib -.endif CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL} @@ -130,6 +139,15 @@ pre-configure: .if ${OPSYS} == "NetBSD" ${CP} ${WRKSRC}/gcc/config/freebsd-stdint.h ${WRKSRC}/gcc/config/netbsd-stdint.h + +.if ${OS_VARIANT} == "Minix" + ${CP} ${FILESDIR}/minix.h ${WRKSRC}/gcc/config/ + ${CP} ${FILESDIR}/t-minix ${WRKSRC}/gcc/config/ + ${CP} ${FILESDIR}/minix-spec.h ${WRKSRC}/gcc/config/ + ${CP} ${FILESDIR}/arm-minix.h ${WRKSRC}/gcc/config/arm/minix.h + ${CP} ${FILESDIR}/i386-minix.h ${WRKSRC}/gcc/config/i386/minix.h + ${CP} ${FILESDIR}/gcov-minix-fs-wrapper.h ${WRKSRC}/gcc/ +.endif .endif do-configure: @@ -146,8 +164,14 @@ do-test: (cd ${WRKDIR}/obj && ${GMAKE} -k check) do-install: - (cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} install DESTDIR=${DESTDIR} \ - && ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || ${LN} -f ${DESTDIR}${GCC_PREFIX}/bin/gcc ${DESTDIR}${GCC_PREFIX}/bin/cc) + (cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} install DESTDIR=${DESTDIR} ) + ${MKDIR} -p ${DESTDIR}/${PREFIX}/bin +.for f in g++ c++ gcov gccbug cpp gcc + ${LN} -sf i586-elf32-minix-${f} ${DESTDIR}/${GCC_PREFIX}/bin/${f} + ${LN} -sf ${GCC_PREFIX}/bin/i586-elf32-minix-${f} ${DESTDIR}/${PREFIX}/bin/${f} + ${LN} -sf ${GCC_PREFIX}/bin/i586-elf32-minix-${f} ${DESTDIR}/${PREFIX}/bin/i586-elf32-minix-${f} +.endfor + ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || ${LN} -f ${DESTDIR}${GCC_PREFIX}/bin/gcc ${DESTDIR}${GCC_PREFIX}/bin/cc .if ${OPSYS} == "SunOS" && ${OS_VERSION} != "5.11" && !empty(MACHINE_ARCH:M*86*) post-install: @@ -156,7 +180,7 @@ post-install: .endif GENERATE_PLIST+= \ - cd ${DESTDIR}${PREFIX} && ${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print \ + cd ${DESTDIR}${PREFIX} && ${FIND} . \( -type f -o -type l \) -a ! -name 'crt*.o' -print \ | ${SORT} ; .include "../../mk/bsd.pkg.mk" diff --git a/lang/gcc45/buildlink3.mk b/lang/gcc45/buildlink3.mk index d8d10f67b..ec8bebf99 100644 --- a/lang/gcc45/buildlink3.mk +++ b/lang/gcc45/buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: buildlink3.mk,v 1.7 2014/09/06 08:20:29 jperkin Exp $ +# $NetBSD: buildlink3.mk,v 1.6 2013/04/06 11:06:52 rodent Exp $ BUILDLINK_TREE+= gcc45 @@ -11,7 +11,7 @@ FIND_PREFIX:= BUILDLINK_PREFIX.gcc45=gcc45 _GCC45_SUBDIR= gcc45 _GCC45_PREFIX= ${BUILDLINK_PREFIX.gcc45}/${_GCC45_SUBDIR} -BUILDLINK_API_DEPENDS.gcc45+= gcc45>=4.5 +BUILDLINK_API_DEPENDS.gcc45+= gcc45>=${_GCC_REQD} BUILDLINK_ABI_DEPENDS.gcc45+= gcc45>=4.5.0 BUILDLINK_PKGSRCDIR.gcc45?= ../../lang/gcc45 diff --git a/lang/gcc45/distinfo b/lang/gcc45/distinfo index be7148e1d..4b361e998 100644 --- a/lang/gcc45/distinfo +++ b/lang/gcc45/distinfo @@ -1,20 +1,433 @@ -$NetBSD: distinfo,v 1.11 2014/12/06 18:47:01 dholland Exp $ +$NetBSD: distinfo,v 1.8 2014/03/26 11:07:27 jperkin Exp $ SHA1 (gcc-4.5.3.tar.bz2) = 73c45dfda5eef6b124be53e56828b5925198cc1b RMD160 (gcc-4.5.3.tar.bz2) = d07aa90f2186b4e082dfd5ad5d5188c097fb6247 Size (gcc-4.5.3.tar.bz2) = 66374586 bytes -SHA1 (patch-aa) = b20d2e95229bddba42819780725ab159e14f06f0 -SHA1 (patch-ab) = 61bc2ebf150c6e471917e145d74e7795dc162194 -SHA1 (patch-ac) = 7da8c27d521164c1a7801dda8ca62d1057ac8d32 -SHA1 (patch-ad) = b72c93d8477a567363616717e20eef1b33e7d307 -SHA1 (patch-af) = 54fb9fb3438eb7c646b9d51b6b0cf3ded27d4989 -SHA1 (patch-ag) = b58f8b82fcf17c60eb2700bc54d6625ca45e542b -SHA1 (patch-ah) = a963394b0434b82494b7510d4b2705f77acfb668 -SHA1 (patch-aj) = 1927ff77d1c51fe9e8927dba582c7d399545ae7b -SHA1 (patch-ak) = 3d8a859ba436a4b204bb99f59cd5331d695aa811 -SHA1 (patch-gcc_doc_cppopts.texi) = fba9b651bdef12f9034e75cb43533b50c2c94540 -SHA1 (patch-gcc_doc_generic.texi) = b255fb30f889a415318a29c50ac0510ccece0bc4 -SHA1 (patch-gcc_doc_invoke.texi) = 7418eddc7e4d39fab3da1922ff86965240661fb4 -SHA1 (patch-libgcc_config_t-slibgcc-darwin) = 2ddda2dd979f27c623e47db70c5abb3befdb68c9 -SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = e328bc56bbb9c3e0a76c8d98a7c0a7b8b8eda22e -SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = 38dd700202d741de1eeee01c44eee6e2e363b9c5 +SHA1 (patch-ChangeLog) = d622f0231843d2aa16c576087eb44a53b39c50c9 +SHA1 (patch-INSTALL_configure.html) = 8364340699d8b6982948c2c2ff307dcd9937c859 +SHA1 (patch-LAST__UPDATED) = 8daa821d1d697b7b0ae962a51e84af8ee88db933 +SHA1 (patch-MD5SUMS) = 0fcf74375e331e9b5004db6db1634ee2a0a58cd8 +SHA1 (patch-Makefile.def) = 5414ce33a3828b39223a8fb947e167d78e9ed129 +SHA1 (patch-Makefile.in) = f86407c1730982634816a24cb9a9e1734b21793e +SHA1 (patch-NEWS) = 00df61252f604487bf27d79e2c01eecce8953b5f +SHA1 (patch-config.guess) = 2b5046e6b1691e81f846523d32c3f9bed335a8f8 +SHA1 (patch-config.sub) = 535d6136de8ed620f47015031284d084bb19bc36 +SHA1 (patch-config_ChangeLog) = 0d373f6931aaab9cb68d8cd7c8834ff8c3699a26 +SHA1 (patch-config_acx.m4) = fe1a075bedf90eda9dd320912d47af4385963022 +SHA1 (patch-config_mh-x86-darwin) = 540c575be0867f64bbb2b09f21aeb9c8115fcdc7 +SHA1 (patch-configure) = 7e92bb721b8f2609951c7c82f9ec287f86b65625 +SHA1 (patch-configure.ac) = 0ebab2b51e5d1954fa2a3ee0abb5d735f91dcfe7 +SHA1 (patch-contrib_ChangeLog) = b1e999b6f8693250e9c963bb92cddcc2e43d0db0 +SHA1 (patch-contrib_reghunt_ChangeLog) = 27a2674cb080bc7f2c114211f6dd426831fb7eed +SHA1 (patch-contrib_regression_ChangeLog) = 75a2333efe1edf928979bc613b6172df4ff82afb +SHA1 (patch-fixincludes_ChangeLog) = 833ded2816424b0d7b400f2a03694a8fd89f2ac8 +SHA1 (patch-gcc_BASE-VER) = 170b504b1462e288a09a6998293b66ceb00079e4 +SHA1 (patch-gcc_ChangeLog) = eb071520d0936c96db2a7dcd6e067731933898c7 +SHA1 (patch-gcc_DATESTAMP) = 6d1ec3f06df8a85c5da6548a027dfdaf96f67364 +SHA1 (patch-gcc_Makefile.in) = cae6f8389a87ed025ae35b978ce61fc242eda7bc +SHA1 (patch-gcc_builtins.c) = a8a95735e4349eb6bf25627fffa0d78596a308f8 +SHA1 (patch-gcc_c-common.c) = 9c445ab1e40a263c80b333b1fba1d4ba496572c4 +SHA1 (patch-gcc_c-decl.c) = 1e335e1986481bf3493657348ae1bddac1f2cba1 +SHA1 (patch-gcc_c-lex.c) = 691b1c776532f145b6308ccfa523b6dc56b8fa94 +SHA1 (patch-gcc_c-opts.c) = da1d5a61c514da5b7a8fa65145ef5363a84fc405 +SHA1 (patch-gcc_c-typeck.c) = 33c322df5e46fee3af3a888ec3b2c7789dc209e7 +SHA1 (patch-gcc_c.opt) = 8b1150bca18ab39a96991ff164d910bc8666f356 +SHA1 (patch-gcc_caller-save.c) = 152343f4a5e5ef21fd3918174b16106680f82cbf +SHA1 (patch-gcc_cfgexpand.c) = 8819e6622569dbfcd39efac5d6f3ec45e57ea796 +SHA1 (patch-gcc_cfgrtl.c) = 4d7706dcd255405069211693a54e7915558ee614 +SHA1 (patch-gcc_combine.c) = 5bddbc1f41052337306c2634ae79a9fea0da40b9 +SHA1 (patch-gcc_config.gcc) = c0ca75b48ccc5a6cebcf814e82641c88b8b9ab76 +SHA1 (patch-gcc_config_alpha_alpha.c) = 9fcfb4e1f993e37e9f40abf41bc288472f908579 +SHA1 (patch-gcc_config_alpha_elf.h) = 04afd60eb34320b9a2148facc3c74d54f40a1062 +SHA1 (patch-gcc_config_alpha_linux-unwind.h) = f616e3cf096fd9fbb09d9bb45bf2544216185a8c +SHA1 (patch-gcc_config_arm_arm-cores.def) = 46e994e2de516eff3f21a7a5c38669c21c5a829a +SHA1 (patch-gcc_config_arm_arm.c) = 6fcaf2cfc510d6ada0539e62ca44998043a3c32c +SHA1 (patch-gcc_config_arm_arm.h) = af065a0831bc70917a39195c5999664ed85b919b +SHA1 (patch-gcc_config_arm_arm.md) = 9fd644c21d371ed6b48625a2185ae0eed7e12216 +SHA1 (patch-gcc_config_arm_bpabi-netbsd.c) = 75591ca45937aa538ad1cdebea0008f5bbd7ef14 +SHA1 (patch-gcc_config_arm_bpabi.h) = 8bfc795506364eff45c0437a88aba0e8d9ccf934 +SHA1 (patch-gcc_config_arm_elf.h) = 3f350fe20657343085e2fd88f9fb55dc72a03e4c +SHA1 (patch-gcc_config_arm_neon.md) = 14fac78792f66cd011f0fa1c876b97723647d476 +SHA1 (patch-gcc_config_arm_netbsd-eabi.h) = d5b4e9b08a90f242e93d30b913f60143f041d85b +SHA1 (patch-gcc_config_arm_netbsd-elf.h) = bf1ff22d780a550c330f32be23e110d316aef228 +SHA1 (patch-gcc_config_arm_t-arm) = 8cd5fb8b6862ae715d7fe08d4302475be57524a1 +SHA1 (patch-gcc_config_arm_t-netbsd) = b87847d613243f01d9220f3682092988007cbd01 +SHA1 (patch-gcc_config_arm_t-netbsd-eabi) = 01f4f16cf0f059aff4da5b0d30728183fb5878a9 +SHA1 (patch-gcc_config_arm_thumb2.md) = e4d068e273279776d0e6b38f3fa8aea4bc7ac9f0 +SHA1 (patch-gcc_config_avr_avr-stdint.h) = 19401e7a9d33577b3fc4c694ac01352c5072f067 +SHA1 (patch-gcc_config_avr_avr.c) = b403d232b4a6240191a111b0bebfa2ab7368998a +SHA1 (patch-gcc_config_avr_libgcc.S) = f6c3547d29cbff835c78df44deebfe34b421dc0a +SHA1 (patch-gcc_config_bfin_linux-unwind.h) = 5766e6745f50c0ad912886e0d42e09d91254d373 +SHA1 (patch-gcc_config_darwin-protos.h) = 80461a44f952733e0e2a7b340d2a5fd1cee8625c +SHA1 (patch-gcc_config_darwin.c) = 53c3906cfb9aef0dd70de70e29c64b58af6fc9f0 +SHA1 (patch-gcc_config_freebsd-spec.h) = 8d0c56d129d708675a2a78bdc9aa0ae0e19a7be9 +SHA1 (patch-gcc_config_i386_athlon.md) = 04e8b68b1718554fc136e8f8fcd620e6d3af3d68 +SHA1 (patch-gcc_config_i386_avxintrin.h) = f197b50f151dd87a62b0d1b266ddf0df298349f5 +SHA1 (patch-gcc_config_i386_constraints.md) = 45882b236c2c8f536dccc18f8dc04a9f50ea5183 +SHA1 (patch-gcc_config_i386_darwin.h) = be39a2217df86fe585cdb5e7f0ac1889556331b4 +SHA1 (patch-gcc_config_i386_driver-i386.c) = 07240f0d8f1f3efff7f2b2f8e6e66dae2512aa07 +SHA1 (patch-gcc_config_i386_i386-protos.h) = 3bf123a4f831aafe4e33d1a6caa7820091b03419 +SHA1 (patch-gcc_config_i386_i386.c) = 273b676db37a382afc7292d90f7b1782ee0ebda5 +SHA1 (patch-gcc_config_i386_i386.h) = 292586a940379035c14d0ab443b183aa8b9d673a +SHA1 (patch-gcc_config_i386_i386.md) = 05303cc2d596b9a175dd7e6b637c5300bff1b384 +SHA1 (patch-gcc_config_i386_linux-unwind.h) = e4aa5ddbfa08239c24a038cdcc3267bfa638eecb +SHA1 (patch-gcc_config_i386_mmx.md) = bccf4c87349ed0f13fe1d3e5f53fd2149d80ce44 +SHA1 (patch-gcc_config_i386_netbsd-elf.h) = ae31ac8cc54d3d2db7d2b5262090301ac6ebdb06 +SHA1 (patch-gcc_config_i386_netbsd64.h) = 26e0c3a905de1310ef0e97709e059135361adf31 +SHA1 (patch-gcc_config_i386_sse.md) = 74b75ed3a3e7ccbbeb078af08d8bba424d6dbeaf +SHA1 (patch-gcc_config_i386_t-netbsd64) = 2a002275a83f63375f7d2ae027888470f2f63891 +SHA1 (patch-gcc_config_i386_winnt-cxx.c) = a01f294a1e8671212bc5616a9f639726edb6eb5d +SHA1 (patch-gcc_config_ia64_fde-glibc.c) = b3890e513304a988d95899d6eaf20f6d378d996b +SHA1 (patch-gcc_config_ia64_linux-unwind.h) = 8f0b264914e5f03a90f59f92d5241329e1ab27de +SHA1 (patch-gcc_config_ia64_netbsd.h) = aca0e3549e540bfd3ab100eb3ace987f5e87aefc +SHA1 (patch-gcc_config_lm32_t-lm32) = 20ce66266818a9ff474dd9dc40a4975e2f5fe2c5 +SHA1 (patch-gcc_config_m68k_constraints.md) = 16d02f2d9380b58e878c6b0e6aa93dfcad585dcf +SHA1 (patch-gcc_config_m68k_fpgnulib.c) = eca24b05d4b5c608f1b682493203a279c2278db2 +SHA1 (patch-gcc_config_m68k_lb1sf68.asm) = 1e1a6df6f2b8e01e5952ad31902d422e6c6b6633 +SHA1 (patch-gcc_config_m68k_m68k.md) = c224b7b7b1a91b6c70737678856a35a96e5bfdd5 +SHA1 (patch-gcc_config_m68k_netbsd-elf.h) = 6ed0abb8e8699373ea865fc2914ad4e89d7794cf +SHA1 (patch-gcc_config_m68k_t-m68010-netbsd) = 6a9b3d03d41b8bbcec12ec219280c327785382c7 +SHA1 (patch-gcc_config_mips_linux-unwind.h) = 52b75d1723d013795f57f78d8ca4215a48b9fabd +SHA1 (patch-gcc_config_mips_mips.c) = f593f6442c0f9e45ad989ae296d09775d4adae56 +SHA1 (patch-gcc_config_mips_mips.md) = af14e6e93c9bc5d4de7626127fe319eacdd1c4b3 +SHA1 (patch-gcc_config_mips_netbsd.h) = 38db596abd34c3627dae66d48800d68aaa327ce4 +SHA1 (patch-gcc_config_mips_netbsd64.h) = dc20e8c6be66872661dae3e953d77d87f27524e2 +SHA1 (patch-gcc_config_mips_t-netbsd64) = d60639d5aa3864fc004a141698cccd391371ecd2 +SHA1 (patch-gcc_config_netbsd-elf.h) = d221928981b0e0605bad162dad9048b2d701e4f5 +SHA1 (patch-gcc_config_netbsd.h) = efb6cef0c445ad47eefd16d288860d89f7e7ebd3 +SHA1 (patch-gcc_config_pa_linux-unwind.h) = ec360e35c5fe63cdbd83fb894b2f99a3da3f9ba3 +SHA1 (patch-gcc_config_pa_milli64.S) = f5dc19ca378ef21ec5093f12bfaed419035d223e +SHA1 (patch-gcc_config_pa_pa-netbsd.h) = 9c99102509aeb7be2e1d5ad1304a494fd5a6f7a8 +SHA1 (patch-gcc_config_pa_pa-protos.h) = f82bf6debd60ff16bb39cf98aeee2ae36345192a +SHA1 (patch-gcc_config_pa_pa.c) = 92b08811bee84c54c9a2e5bb7571d89a4e310ad1 +SHA1 (patch-gcc_config_pa_pa.h) = 4eb66e5e49c6c4687152c982cbf535e5f35537ca +SHA1 (patch-gcc_config_pa_pa.md) = 1e8ed0373acee0193fc30fe5047f6d631eb46478 +SHA1 (patch-gcc_config_pa_pa32-netbsd.h) = 8c2e7387beb9c6cacbc882a0049c7b309dacdf0a +SHA1 (patch-gcc_config_pa_predicates.md) = b62155767425db9b6b3def825a920e93fcd25650 +SHA1 (patch-gcc_config_pa_t-netbsd) = 4e387e6975dbd94845bdcef6a5b6ad3ff0349633 +SHA1 (patch-gcc_config_rs6000_altivec.md) = e2124cac3cadf8a15534de19f61919b7b72e54a7 +SHA1 (patch-gcc_config_rs6000_netbsd.h) = deee09c4f836ac8d4dac421faa37f17914871619 +SHA1 (patch-gcc_config_rs6000_netbsd64.h) = 45b0268a5dd23dc59e32a89e6d5a7c28aa94431d +SHA1 (patch-gcc_config_rs6000_rs6000.c) = ec6f84469fdecfcfa33a4d885d4cfe1fa00c8cc8 +SHA1 (patch-gcc_config_rs6000_rs6000.h) = 1e5081dc3cac1bb3a674f9d5783d51fcf690dfd6 +SHA1 (patch-gcc_config_rs6000_rs6000.md) = 06fa6b53197ebdda94667487256e7afc56d40278 +SHA1 (patch-gcc_config_rs6000_sysv4.h) = 98bde4c13303a1aa7a636b1031057ef98909a0b9 +SHA1 (patch-gcc_config_rs6000_t-netbsd) = b63390c87745b64c0ff13817dfdf0883a5d57e5a +SHA1 (patch-gcc_config_rs6000_t-netbsd64) = 5055b170c963ec9720f7d939bd66b30b93107d99 +SHA1 (patch-gcc_config_rs6000_vector.md) = cca45306af17985a740b6c9871e59d46f689663f +SHA1 (patch-gcc_config_rs6000_vsx.md) = 1876423ee6501ade195c67baec9aad205ddf0fa0 +SHA1 (patch-gcc_config_rx_rx.c) = 7969fc037358fd95fac006ac9831bee10270ce73 +SHA1 (patch-gcc_config_rx_rx.h) = 11056293364a2009bf9d67ea6d46e4e8150da439 +SHA1 (patch-gcc_config_rx_rx.md) = 87570c83a88542833902a26f0186e3fc39bbc335 +SHA1 (patch-gcc_config_sh_linux-unwind.h) = a19d10c649bea425dd347c633472386ceaf76c7b +SHA1 (patch-gcc_config_sh_sh.c) = 2818b9eca941c2c1f45b1f4bdec999b355144e40 +SHA1 (patch-gcc_config_sh_sh.md) = 33dcf6e09cfcf01a1ef4d5a14a9bb1dd4940172f +SHA1 (patch-gcc_config_sh_t-netbsd) = 139290741b5bbf41ae5559613f553d3956e011d9 +SHA1 (patch-gcc_config_sparc_netbsd-elf.h) = 698719d85164648b5f50c67c8454699cf15bcb11 +SHA1 (patch-gcc_config_sparc_sol2-64.h) = 7561b91f49a1d17e31f3fb4bb372ab5fc088fa4f +SHA1 (patch-gcc_config_sparc_sol2-unwind.h) = 55a53fff4b8a1deea095d214f41eccb19968939a +SHA1 (patch-gcc_config_sparc_sol2.h) = de92e717117788e687545bf2f14f722af7a85564 +SHA1 (patch-gcc_config_sparc_sparc-protos.h) = 3ac5b635a145eb977748be4f68bbd451f88e35b7 +SHA1 (patch-gcc_config_sparc_sparc.c) = 9f155b9a7d1ad2cb4336eb66bd6f4c0a7d57249e +SHA1 (patch-gcc_config_sparc_sparc.h) = 4d20eef1528787c15c752a561df6cae8dc7dd54f +SHA1 (patch-gcc_config_sparc_sparc.md) = 0cf420977a67e363647dd170b493f4a5bdb45306 +SHA1 (patch-gcc_config_sparc_t-netbsd64) = 4a6a35c658ff0b7a2ccef70325fe70c8831cf1de +SHA1 (patch-gcc_config_t-minix) = 40765debc854309846bf74c6bef4f509106e65f1 +SHA1 (patch-gcc_config_t-netbsd) = 9cb716951f8f4694b4743008022aa0cf288ee2e9 +SHA1 (patch-gcc_config_vax_builtins.md) = 621e1fefb610e41f379d9bb5e5d64fc8503235f6 +SHA1 (patch-gcc_config_vax_constraints.md) = 86a3199d37802be6d4af83da96ef3f58150f2d24 +SHA1 (patch-gcc_config_vax_elf.h) = e839b143e473697c7a29f57f0cbfdb14b4d85623 +SHA1 (patch-gcc_config_vax_vax.c) = cfb52a2696f8f590c397062804c32a137fd04f32 +SHA1 (patch-gcc_config_vax_vax.md) = d88640032f283ae3b73498d03aaafed5b0b2cb29 +SHA1 (patch-gcc_config_xtensa_linux-unwind.h) = a23613abefdded7a42f8478cbe55e77158807fe7 +SHA1 (patch-gcc_configure) = c7fbcf516f97e15985a4b1f0b9d4171f2224301e +SHA1 (patch-gcc_configure.ac) = 0e7b894c3364676395f609688f624c8733c08b56 +SHA1 (patch-gcc_convert.c) = 7fc2be82e26dc8fa7d69f2379575b19c8a67a283 +SHA1 (patch-gcc_cp_ChangeLog) = 465eab23f81a5df16edf32281048b4b05d9b5e83 +SHA1 (patch-gcc_cp_Make-lang.in) = 996df37ffdbdc9fa1b82138f0270002d95554f2f +SHA1 (patch-gcc_cp_class.c) = 28cb2c714afc74e0e06c932275c605f5755562d1 +SHA1 (patch-gcc_cp_decl.c) = 397c72cf93ee8060b478c0f6f9d880f81589ea6e +SHA1 (patch-gcc_cp_decl2.c) = a4e32c19673d87bdbdb523302a82678c1c5a88ca +SHA1 (patch-gcc_cp_init.c) = b872bff683777480a260ab90c7cd2ca77c65a64d +SHA1 (patch-gcc_cp_mangle.c) = 0c25d23fbfea5287d7b8d76d64397da21f0f9065 +SHA1 (patch-gcc_cp_method.c) = 4c05ab18c5eba7102aa463e5daf04a813f2e2e61 +SHA1 (patch-gcc_cp_parser.c) = 650ca0fe514f0eadb6b6af463bcdea5bb9889ded +SHA1 (patch-gcc_cp_tree.c) = 3070a8ef20b23f81eb9b2e4b897e750bc02aae1a +SHA1 (patch-gcc_cp_typeck.c) = e8236b3dc576220c9df6d360b406093f5c62f0fd +SHA1 (patch-gcc_crtstuff.c) = e830707a1c6bc26270c5504ef24940cc9d63188a +SHA1 (patch-gcc_df-problems.c) = 0428f0c22fd9e035d4ce587646bb9ad4178887da +SHA1 (patch-gcc_df.h) = a72ab98b225475d4f7d0a8cf4660a42787fd40b6 +SHA1 (patch-gcc_doc_aot-compile.1) = 87f0a8a12efa68f5448118a57d3c8193294420e6 +SHA1 (patch-gcc_doc_cpp.1) = 9ab9dd4dae2655eb8365ab1a8156c888eab4291f +SHA1 (patch-gcc_doc_cpp.info) = 2fe2927aff551f84550e10da337db0c05de68ae9 +SHA1 (patch-gcc_doc_cpp.texi) = 7ee0b8f29950f4c70de9d8be550301d8e7296fa3 +SHA1 (patch-gcc_doc_cppenv.texi) = c01cbeffd4a4160dd01f7d695d503a407f01e7c6 +SHA1 (patch-gcc_doc_cppopts.texi) = 79bb79aac955cfcd9a8f737b0129892b643c2511 +SHA1 (patch-gcc_doc_fsf-funding.7) = 8b2bf6933982a86d1ebacf745b2885f149fef4b3 +SHA1 (patch-gcc_doc_g++.1) = 28da050ac624e5ac0cc32c6f29040871dc40eaed +SHA1 (patch-gcc_doc_gc-analyze.1) = d9c78dcfa5ffaa866aa565c5b78afff639906942 +SHA1 (patch-gcc_doc_gcc.1) = 3cc0d4a6ff8ad20ab5d4ca9b3f09d91b84b63ca7 +SHA1 (patch-gcc_doc_gcc.info) = a3de2570f49e03fb87cb906e6772b49e63147f3a +SHA1 (patch-gcc_doc_gccinstall.info) = 5f5925bf2782fe1130e8c309a318022f86ee319a +SHA1 (patch-gcc_doc_gccint.info) = 23e12265b136f33bc14292161c015d77cf6528fc +SHA1 (patch-gcc_doc_gcj-dbtool.1) = 6c73f5af09f45cbdeee9f79d532e105ac897a31a +SHA1 (patch-gcc_doc_gcj.1) = 9ab8f874e4432e2939851a022b32f0d7b4d973e7 +SHA1 (patch-gcc_doc_gcj.info) = 4fbf44e9a48e0eb4a929e62240b391c40314cbd8 +SHA1 (patch-gcc_doc_gcov.1) = 9f84f97b28d38d46c88e9af83f078997873107c3 +SHA1 (patch-gcc_doc_gcov.texi) = 569ecfd1074e7d55d228e58da844f53b6d92cf85 +SHA1 (patch-gcc_doc_gfdl.7) = 8bc486693aa383c03e01ba9884fe14e4bcd9c8f5 +SHA1 (patch-gcc_doc_gfortran.1) = d6374af3458f9d47704a73dc89063761ce824e82 +SHA1 (patch-gcc_doc_gij.1) = cdd54d251468f3af5854ca7f9ed10a4ef2010f84 +SHA1 (patch-gcc_doc_gpl.7) = 26902cc2f1ac2cfc19e8d03dc4ff5e3d8d86ca4e +SHA1 (patch-gcc_doc_grmic.1) = 8b73264f2edb25c9d0ee292318778d80a03292f8 +SHA1 (patch-gcc_doc_install.texi) = eb242ab314223533d906a194e9a102baf3f01a18 +SHA1 (patch-gcc_doc_invoke.texi) = 75fb6157449a78c6ef418c4e2737c63aea1c2c31 +SHA1 (patch-gcc_doc_jcf-dump.1) = 7a5a2996f6e9ffa7eb5ed6cb82d33ad9be1dd3ca +SHA1 (patch-gcc_doc_jv-convert.1) = ab6273731a845221793a45f52dccf1899844ff3c +SHA1 (patch-gcc_doc_md.texi) = 550e44e46af625701d0e9a2243d54ddf8b52cb50 +SHA1 (patch-gcc_doc_rebuild-gcj-db.1) = 3c3a47e80d4dda0c6abf064bc1acb6348a914f49 +SHA1 (patch-gcc_dojump.c) = bfef54fe05e453c2d5c733de935e9adefd010c33 +SHA1 (patch-gcc_dwarf2out.c) = 17a7469f1e9e98c2f07338a137e005d3b9236aef +SHA1 (patch-gcc_expr.c) = 672e5023d489bf0fb9b0bcb8622fdd4be1113af3 +SHA1 (patch-gcc_expr.h) = a0eeacaaff9425a9d834abeaeee341f1f2f312ee +SHA1 (patch-gcc_final.c) = cf7492a869f5626014b84779e2b9a1791afd0dd1 +SHA1 (patch-gcc_fold-const.c) = b9abbe554f9aad91f2057749e66745fa8abf0ab3 +SHA1 (patch-gcc_function.c) = 9885996a87e81942aa9ebe0a02b6493d022407c1 +SHA1 (patch-gcc_fwprop.c) = f8f5253f262b52f954ae8619034ce2dbfb989770 +SHA1 (patch-gcc_gcc.c) = 2922632460185ed4e9be36e3a697447b253c9c1c +SHA1 (patch-gcc_gcc.h) = 7a14473cec164b5ec953bc6e376cbd86643ba80e +SHA1 (patch-gcc_gcov-iov.c) = e92b332a4f9853256420844336850acb0ce2a7a9 +SHA1 (patch-gcc_gcov.c) = 917b8a352881a7280ccfd795e8f81a1678e837bb +SHA1 (patch-gcc_genemit.c) = 03c197f0ba53b68ec0bc5002936a97f0d1a72e8b +SHA1 (patch-gcc_gengtype-lex.c) = 47803de01e16aa8391e0b33cb4deb676a51d0e78 +SHA1 (patch-gcc_genmultilib) = 8ba4c03be6f91063c6507ff688f803d860471033 +SHA1 (patch-gcc_genrecog.c) = 296af75c3a7b0b91855f2b5abd029986cdf34192 +SHA1 (patch-gcc_gimplify.c) = 32ffb26c5ac8cb1b1423b3f61e3870b0ffae2795 +SHA1 (patch-gcc_ginclude_stddef.h) = 3504b1d765cacabaacff05cd1294b7d9a0b0ae49 +SHA1 (patch-gcc_hwint.h) = 74aa3c5753cacce0c63c33b6ea4e1bbaca07620c +SHA1 (patch-gcc_ifcvt.c) = 09da3948b3750e230a4318ce6ff96e28b3123669 +SHA1 (patch-gcc_ipa-prop.c) = ba41e00dae01cc51387cd71d1ce0df8edd906725 +SHA1 (patch-gcc_libgcc2.c) = d9f7aa89bbc235e0e41ea29055c431b8122b03b4 +SHA1 (patch-gcc_libgcov.c) = 3a57dbef67839d484a343f8563a2063b52de2fef +SHA1 (patch-gcc_loop-doloop.c) = e8db788d7680eb1062778beae47b6de191a04bb4 +SHA1 (patch-gcc_lto-opts.c) = 098a9b06010db77e41b09e693c4cc19479645a6e +SHA1 (patch-gcc_lto-section-in.c) = d2814ac224afc378cdc11897b57dc1f7fd19f932 +SHA1 (patch-gcc_lto-streamer-in.c) = 0db24a5d93e118c60358dca0ba7353bc70480052 +SHA1 (patch-gcc_lto-streamer-out.c) = c0654d0755e31ce981db5c9a0aa32e9871113a32 +SHA1 (patch-gcc_lto_ChangeLog) = d665eeff7daae814afc111f5006a96297c5f8785 +SHA1 (patch-gcc_lto_lto.c) = 475d2c9d4c291be8578c045c51dcf983408b2b1b +SHA1 (patch-gcc_lto_lto.h) = b771af4d88772ea24885d98acf40cb6f96734f32 +SHA1 (patch-gcc_objc_ChangeLog) = d216369a64195e7da1242f52e45dcd910554a9b6 +SHA1 (patch-gcc_objcp_ChangeLog) = 46927baddb7e4ae3fb5e60212e2f6435750ba286 +SHA1 (patch-gcc_output.h) = 82542228b511f069bc54b6000c4ef4b5fd98c252 +SHA1 (patch-gcc_po_ChangeLog) = 976ee6b620b7b6d94a97e237b4b6d45c34f1773a +SHA1 (patch-gcc_profile.c) = 70f257b784694d5a423687193b58ab9d48c2f749 +SHA1 (patch-gcc_real.c) = 424b098f9a16c82531bcf5fa6829043f330f3bd4 +SHA1 (patch-gcc_recog.c) = 24799604585c8de7e3448cfc7a99182e12de721b +SHA1 (patch-gcc_regmove.c) = 46ee8498021a4dd91d2ed2aaf1147384f2f6c013 +SHA1 (patch-gcc_reload.c) = fbc1ce5163b3aaa78e307c35e96dfc6fee073d5a +SHA1 (patch-gcc_reload1.c) = d6d48734a6ee5f4959d3ae2d46c852f99dfd3b6c +SHA1 (patch-gcc_reorg.c) = 0676c821b77eaa49b23bb784041867d542486450 +SHA1 (patch-gcc_stmt.c) = 4b1c22f7e05ad23bcf848fd65a18d643b64e177f +SHA1 (patch-gcc_target-def.h) = bdd4f0efdb0b3d1c3d60676a086736d7cbea9196 +SHA1 (patch-gcc_targhooks.c) = 2a230ffb59008b92f2b0fe0e8ded1d4a446b824a +SHA1 (patch-gcc_testsuite_ChangeLog) = 12eace922fed6131af56f15f8a6be4a0418f9c18 +SHA1 (patch-gcc_testsuite_c-c++-common_pr51768.c) = 4b74cfbb98431669eb958e4d4c0df097bcf1aca1 +SHA1 (patch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C) = c3affd4d05d0ce903f8c904953dbd57c90aa7b9b +SHA1 (patch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C) = 37ba057d542ff3cc987832c8818c979533b2d151 +SHA1 (patch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C) = 06867ffb6d67b34e6fa620473b63ff9a4136caee +SHA1 (patch-gcc_testsuite_g++.dg_dfp_44473-1.C) = 94a775cb75e4d7b1ba7a06f8f5c163e228494bd3 +SHA1 (patch-gcc_testsuite_g++.dg_dfp_44473-2.C) = 1342dbb97a4896388ecd9a59ee98c0721d4efad7 +SHA1 (patch-gcc_testsuite_g++.dg_dfp_mangle-1.C) = b116ce05e0e1fc74db16910f6c30f2f52ebca298 +SHA1 (patch-gcc_testsuite_g++.dg_dfp_mangle-2.C) = ca0f2bb94ec3b97862e6352ff1cebf4bcfbb56d2 +SHA1 (patch-gcc_testsuite_g++.dg_dfp_mangle-3.C) = 65a2008d93d292c2f6e0e9e7adf018f48ff2f214 +SHA1 (patch-gcc_testsuite_g++.dg_dfp_mangle-4.C) = 5dc057ce54d7e27332ffc1a31102006a3f93ddcf +SHA1 (patch-gcc_testsuite_g++.dg_dfp_mangle-5.C) = 69efc91b5643ff0f5751d4f80d3f4fc39abb3d55 +SHA1 (patch-gcc_testsuite_g++.dg_eh_cond5.C) = 3ea6bd4b3fa54925009663f9fa3923d945d30129 +SHA1 (patch-gcc_testsuite_g++.dg_eh_cond6.C) = 668eeabbc1eb24e44324d8b96e6b3bd2feb53c5b +SHA1 (patch-gcc_testsuite_g++.dg_gcov_gcov-2.C) = 32cc8a31718a10cc7806d044c81f833264caf913 +SHA1 (patch-gcc_testsuite_g++.dg_init_new30.C) = 6b7ebfa1efabab9009324a38f463227a9b454e38 +SHA1 (patch-gcc_testsuite_g++.dg_init_new32.C) = 788780ae87e856cfbb8e0fad6fea233999f420bc +SHA1 (patch-gcc_testsuite_g++.dg_init_value9.C) = 8163f54b63ff12583e74464ae3cfcf4a9dcb1a61 +SHA1 (patch-gcc_testsuite_g++.dg_init_vbase1.C) = 3fd05fad3c1a21ec3e7eb95ed4702e08b9f4eef5 +SHA1 (patch-gcc_testsuite_g++.dg_ipa_pr51759.C) = 36ded617e28d164eda4e734bfedb8ac7070ddb72 +SHA1 (patch-gcc_testsuite_g++.dg_other_pr49133.C) = 3912ff9a94c66cd9dfe80f95d0ecc9b5a358aa28 +SHA1 (patch-gcc_testsuite_g++.dg_other_pr50464.C) = 1bf842133469ac6b5c834cdf93d7a5ca2492fba5 +SHA1 (patch-gcc_testsuite_g++.dg_parse_ambig6.C) = 14590a1b90a03578c3541315a22dfc45daaeb740 +SHA1 (patch-gcc_testsuite_g++.dg_pr48660.C) = d830f9254b20fa16461e57c4d32926d18a57c3c5 +SHA1 (patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C) = 4707600584304cf9614c088a21dba3f0b2d982cb +SHA1 (patch-gcc_testsuite_g++.dg_template_nontype23.C) = 4601355a703acd95a32f8fea1e7455779ec37acf +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr47714.C) = 44ae702709d20f5f6d49262746299c7b777e0373 +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr49039.C) = d5d873ce9b9ff9968aa1f1493cc6f4c3cfea7375 +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr49115.C) = 75218a34e3e00807f25d5bae13c5bf198d14c777 +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr49615.C) = 446bd73a0f69a79691eb9ba91090291ae4896c19 +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr49644.C) = e23636c8b0c0e262d2392971e7ff6a3606e61fd5 +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr50189.C) = ee6e16986279a6f6c769abc5da19b9cc2d90f4dd +SHA1 (patch-gcc_testsuite_g++.dg_torture_pr51344.C) = 7d9a61964db8612e597c309ee88c73fec04b8b48 +SHA1 (patch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C) = 19dd6346be605f4c312c9a93f9ea166d6b2cacbb +SHA1 (patch-gcc_testsuite_g++.old-deja_g++.oliva_ChangeLog) = a833b27a5e250726df95eb1cd1046ecf9a37334b +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_limits-externdecl.) = c84ff45bf0648438e75b40548c650bf3299b5dcb +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr38752.c) = a96e848389bde44a778708dd1bec90e643afa2a2 +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr48742.c) = a8c4fe706d6ce2e4b39a989a45f95f0122e7bf1c +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr49238.c) = 819880f8980914fbb1d5d9cfc4e38f25e225c73d +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr50565-1.c) = 8d6ab3598ade1225757cf7c466a60eafa1feeaeb +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr50565-2.c) = 37a7a6b31c8528e7c9c3c01d3d64462df441401f +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr51767.c) = 359d6c824f35bdd859987db9331ff06870921010 +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr53418-1.c) = c55813dda04a802731ac9dbeb0b3982b7af17870 +SHA1 (patch-gcc_testsuite_gcc.c-torture_compile_pr53418-2.c) = d6c37fa8f29bcfa9d043658ae5d310d0a9f01187 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_20120111-1.c) = 152eb9a47424e9ecabac174ea18b3638d0505ddf +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_20120427-1.c) = 0e0343d7eacbd34eefd079e64fc56761f5e7cafc +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_960321-1.x) = 3da270f52d50c00b7b31e03a4343f316e394a91e +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_doloop-1.c) = 81b4956bb485c330f34bb4c5817affa015732ea5 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_doloop-2.c) = 0931f11ec03aff7fd582c0294053d6f7056b51d7 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr48809.c) = b76eef4cf1b02c871f78199ed55135b30f71c8ed +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr48973-1.c) = 885268365fb9af9331d640e0fab706c8b01c8ab9 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr48973-2.c) = 1898671a2cf3115280d4f04730422c223fb26907 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr49039.c) = 2d9ce797a58332d0ea731d7bc67d1e55b152dfd9 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr49161.c) = acbfe6411d5e46d3ce71078762b3df3e763513e2 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr49186.c) = 8886dd14e0580a60806c51ef1d4609abd1de92c8 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr49279.c) = 63ffdda3cb200f306e70c9b293a5d8a50804e264 +SHA1 (patch-gcc_testsuite_gcc.c-torture_execute_pr49644.c) = f99bc6fc7380a0ce61db26159f4643ab58b7d3b5 +SHA1 (patch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h) = 74ed4fffe00d4b972b5ae7b80b985ae41a3f0512 +SHA1 (patch-gcc_testsuite_gcc.dg_delay-slot-2.c) = 8bf4b5c4748e3acb517176a9904e8d167c4c4b8a +SHA1 (patch-gcc_testsuite_gcc.dg_dfp_pr52140.c) = 262dee1503b18cb616f61cb1bb301c721193f490 +SHA1 (patch-gcc_testsuite_gcc.dg_gomp_pr49640.c) = c3c2cb537e4528811f27ba7ffbee2d6bfceccae3 +SHA1 (patch-gcc_testsuite_gcc.dg_ipa_pr45644.c) = 47d0426b9e38e7d89c5861a86fe85898d6a1be9b +SHA1 (patch-gcc_testsuite_gcc.dg_noncompile_pr52290.c) = 6f53af47f49acd52a1f6ffb247f533401f11607e +SHA1 (patch-gcc_testsuite_gcc.dg_pr48685.c) = fe2a7d3bcf944bf0357b49dc25b4715e457bcb91 +SHA1 (patch-gcc_testsuite_gcc.dg_pr48774.c) = 9a022d84b38a45cc16e1177f781736860bd177d7 +SHA1 (patch-gcc_testsuite_gcc.dg_pr48837.c) = e03bece3057f615a9f55b2f49c5d222713f9160a +SHA1 (patch-gcc_testsuite_gcc.dg_pr49120.c) = c3699715aca10f5c15ea86da71db1aa9f22b70ef +SHA1 (patch-gcc_testsuite_gcc.dg_pr49307.c) = 996d3b78252452e859f951941f04845bad1a9b41 +SHA1 (patch-gcc_testsuite_gcc.dg_pr49619.c) = 50c4b8c57da3fbb60c9c8a0e7cb2a2cb34c9fab5 +SHA1 (patch-gcc_testsuite_gcc.dg_pr51408.c) = b96aa2467757d534e1cecfc78d713caa23a3fa0e +SHA1 (patch-gcc_testsuite_gcc.dg_pr51821.c) = 431c4c2e646c3061b9edc4b413b35287bc668e4e +SHA1 (patch-gcc_testsuite_gcc.dg_pr52139.c) = ec34294eb20637f6ada316e996efe41ff3e87791 +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr48542.c) = ecb7b9dc0b95e47908535b53ed3d9534d509e118 +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr48822.c) = 983a831afa7cee0257544c0b13da53d4bdbb86d3 +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr49651.c) = 503924ba7576b7eeb67e4011c7c69c7ad9c0eb43 +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr51106-1.c) = 42576ddd130aad033197bdeae4878ea97d0c4bee +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr51106-2.c) = d0e9856a1a43b48794b909fcd593686621c589ed +SHA1 (patch-gcc_testsuite_gcc.dg_torture_pr52693.c) = 2c2b37f3628c0c25c84fa78c384df2dc98ce0a60 +SHA1 (patch-gcc_testsuite_gcc.dg_tree-prof_pr44777.c) = b8b4fdb3d461937e5b65e3f4718411fc9439a6de +SHA1 (patch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c) = b680a0024f5c842fc9fd9a0487344acfea8d5a33 +SHA1 (patch-gcc_testsuite_gcc.dg_vect_pr48172.c) = 0765eeaf0e8baeb509d2dca353d8ca13f751ffeb +SHA1 (patch-gcc_testsuite_gcc.dg_vect_pr49038.c) = 1bd6b3fb8334c000cbebb2a047a05da188b304c0 +SHA1 (patch-gcc_testsuite_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn) = 4cfa861fabdcd8cb2ec06361791bb9a9d19bc45f +SHA1 (patch-gcc_testsuite_gcc.target_arm_neon-vset__lanes8.c) = 6e985f5b3501aee5c924c39515bb117aea3a2aa1 +SHA1 (patch-gcc_testsuite_gcc.target_arm_pr48252.c) = a6a0a1f72f50a4a0f9fccd710ca8950c2bac18c0 +SHA1 (patch-gcc_testsuite_gcc.target_arm_pr51835.c) = ceecbcf1879202fdb46730d6b589da1852c1b54d +SHA1 (patch-gcc_testsuite_gcc.target_i386_aes-avx-check.h) = 158814855b6cf5f6fe1119a4932acb38347be152 +SHA1 (patch-gcc_testsuite_gcc.target_i386_avx-check.h) = c87d033c8646e1f9e0673a9b7ebc470577f720a9 +SHA1 (patch-gcc_testsuite_gcc.target_i386_avx-os-support.h) = 8d4acd81ccb2c3f3c756de0e8e4448a7a3d4fa6c +SHA1 (patch-gcc_testsuite_gcc.target_i386_pclmul-avx-check.h) = b59c373252e5864e4f163ecf70f64920142b5911 +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr47780.c) = cf536ca4e11a27ec3eebe6b02de631b1a4de7cef +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr48708.c) = 771b0a84cecc353b264aa2067ef27a11e6243379 +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr49920.c) = 40ecfda1c24687d25911092b94a1f65a7dce598f +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr50788.c) = e55c8f24d7aaf0f5ea821820ffb768960fffe258 +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr51393.c) = 2b61beb508e1792aae5a57329dc437c4926cfd2d +SHA1 (patch-gcc_testsuite_gcc.target_i386_pr52330.c) = 5eb2c37cce4bf1dbf88b6c5e0e5129b040b59080 +SHA1 (patch-gcc_testsuite_gcc.target_i386_sse2-init-v2di-2.c) = 2029d6d552ce6a7e0baccc5291de0066d512d4e5 +SHA1 (patch-gcc_testsuite_gcc.target_mips_reg-var-1.c) = d30a40f6843b43ebe22d0f01305d043aafdc8c35 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_altivec-34.c) = c5384e96ccddf3760fd73c4601c91ef6eb2d8c9b +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-1.c) = 65235e4760381364082820b62a2cbb0b803c4957 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-2.c) = 147f47c0da87b76dde17f86f68985a43246a687c +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-3.c) = dd6071e4710972aaeb942056a8234290bcf5a4a0 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-4.c) = e4353785a18e969841a03ea882f11f1898185f3f +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-5.c) = 7204588fbd607cce80928cf0d4d934d8a48cd2b3 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-6.c) = 32bf6ef2127332a631a6d4aa540405110aae9dfb +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-7.c) = 68245d47c69ad9bf4225296b1e87c4bfbefc3276 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-8.c) = 2635e11285ebbb4da74dba21cfa96a858b50dbc9 +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_pr48857.c) = a8d11a5cb0ea952f881fe21cd75e347c11ed269d +SHA1 (patch-gcc_testsuite_gcc.target_powerpc_pr53199.c) = 55346671c04cb6d4dddbbeb2aaab4d80277e92c5 +SHA1 (patch-gcc_testsuite_gcc.target_sparc_cas64.c) = f05f1a835a4b013e5cbd8d57ee633ac4eb614370 +SHA1 (patch-gcc_testsuite_lib_target-supports.exp) = 310e2b506bb590668570c982e91ed069fca0c8e8 +SHA1 (patch-gcc_tree-cfg.c) = c0495977757bc9fd8ff4946da42a65d67262dce5 +SHA1 (patch-gcc_tree-cfgcleanup.c) = b442bdc68979adf160c6d4febb5b71bd82466271 +SHA1 (patch-gcc_tree-inline.c) = 735aa9bd9b8213fa75e1dd481cdbbdb0a02910ee +SHA1 (patch-gcc_tree-mudflap.c) = 45f6d12ef989926cadc0efe9af1ee038df04d97f +SHA1 (patch-gcc_tree-outof-ssa.c) = 8349e177b7f66e1f2a92e43082241d7ba9b31f51 +SHA1 (patch-gcc_tree-scalar-evolution.c) = c9a1b00153187729a27b2520135164b6b375d540 +SHA1 (patch-gcc_tree-sra.c) = 5ac8966bd06731a250ce12fd20627de550a35d82 +SHA1 (patch-gcc_tree-ssa-dce.c) = 4b51caf2b96c07b970eef3e743916d0e35e50881 +SHA1 (patch-gcc_tree-ssa-dom.c) = e56942f2d4b96c17af69bb9c26f45e2da81f7027 +SHA1 (patch-gcc_tree-ssa-sccvn.c) = 3e23f9e8656d18bb814507c5e7ea5fa5e2c608c2 +SHA1 (patch-gcc_tree-ssa-structalias.c) = 58f379c89afd58696756c6c2830f0f3ff76b7502 +SHA1 (patch-gcc_tree-switch-conversion.c) = dc53b3247ec497d46496f6a9d179a4f7d470ccde +SHA1 (patch-gcc_tree-tailcall.c) = 94e75287b0c1e96f99536357392ea2d9af48c257 +SHA1 (patch-gcc_tree-vect-data-refs.c) = ae3c574cf531382de28564f0a300b8876806d85b +SHA1 (patch-gcc_tree-vect-loop-manip.c) = 6a22a898b7ae930d5f0b0cc85818657e4826faff +SHA1 (patch-gcc_tree-vect-loop.c) = 537c74aae498474555a7677bf1355e7649cc6a99 +SHA1 (patch-gcc_tree-vect-stmts.c) = 9aed6f1d586872a2772dca90baed3ca6811c19e2 +SHA1 (patch-gcc_tree-vectorizer.h) = 120e18c82cf64425b6e89ebf4d4af2ff84334471 +SHA1 (patch-gcc_tree-vrp.c) = 81c877d790aed78b318ba96bff2fc500d29694d8 +SHA1 (patch-gcc_unwind-dw2-fde-glibc.c) = 6b040bf7f3a95bdd8b414bcac97373f161201578 +SHA1 (patch-gcc_unwind-dw2-fde.c) = 969d3101a94d208889175ba5fc2797fdc21b82e9 +SHA1 (patch-gcc_unwind-dw2.c) = 5285e12ed93a5daa6acba0ee96e762e90329aaeb +SHA1 (patch-gcc_var-tracking.c) = 15422daebd5fbea36dda283be6d8d007ab990bb6 +SHA1 (patch-gcc_varasm.c) = 8ccffbac9ee4a90490bdd6746e88c55f993637a7 +SHA1 (patch-include_ChangeLog) = 9626bfb3b4550326b6f26594e294a51827c42753 +SHA1 (patch-include_objalloc.h) = 18eb0baf490bb8dd6aed2157054b898b5b92a11d +SHA1 (patch-intl_ChangeLog) = c8f034bd07fe3d41a90f892d83b2e6c13ccf8d12 +SHA1 (patch-libcpp_ChangeLog) = bc1041b4f17c3751a01dac32810e654f9c94aad8 +SHA1 (patch-libcpp_Makefile.in) = 22f35bfbe701c3baaa4042cddc282b3de4776024 +SHA1 (patch-libcpp_configure) = d5e1291a8bffb2c1121d4fcb383564eac3b688a6 +SHA1 (patch-libcpp_files.c) = 5e7cb28e0340ccacff230752f97a99a82b145893 +SHA1 (patch-libcpp_include_cpplib.h) = 056dc6811f456f8708673d47f4ffd03a49442fe7 +SHA1 (patch-libcpp_init.c) = dca7d2612f1892dea70d6338e3d0918096c30dae +SHA1 (patch-libcpp_internal.h) = 30fb0537e61c7cd58697852ff390ca2f7a5f72c6 +SHA1 (patch-libcpp_lex.c) = fd0db8021ef0f93a57144ed707a654a4c15bf746 +SHA1 (patch-libcpp_macro.c) = 3e96026a38e5ce54c59b57f0e6a090f9bfcbb167 +SHA1 (patch-libcpp_po_ChangeLog) = 416d82e972577c6a6ce9736d0fe965150cddaed3 +SHA1 (patch-libdecnumber_ChangeLog) = 4761ae5b4b8a0cada4e8621a8fcffecaf09c90b0 +SHA1 (patch-libgcc_ChangeLog) = e889c37c6c8640e73afc8b755345294137cc5c18 +SHA1 (patch-libgcc_config.host) = 7bf0f4ef9e2e7437c5d8ee0db5714d57180d74d5 +SHA1 (patch-libgcc_config_i386_64_sfp-machine.h) = e4999877b70fe31b0e88b2d379c0548dc14aac06 +SHA1 (patch-libgcc_config_libbid_ChangeLog) = 0c1c76d831fe97757bd0818d7084f3101fd41d9e +SHA1 (patch-libgomp_ChangeLog) = cfeff45b0d73354f3f657066093ff4e477076e62 +SHA1 (patch-libgomp_fortran.c) = 4ee9f148fe71b57115102d7cd8a88b7dd959595d +SHA1 (patch-libgomp_libgomp.info) = 3a9ab902cf2ba2c5bd179491b3b8ae5c0c4743cb +SHA1 (patch-libgomp_testsuite_libgomp.fortran_pr48894.f90) = d7c0e91aa204e0c4e1f73a1d8e3b222fce5d62ff +SHA1 (patch-libiberty_ChangeLog) = 58eae5a2b7281191c61dcc076476f96499e485df +SHA1 (patch-libiberty_floatformat.c) = 4c838dc19f024d8b792cc7f6d992ba6f94dcd1ad +SHA1 (patch-libiberty_make-relative-prefix.c) = 248bda432bd290dd8fd050284b95d28814829315 +SHA1 (patch-libiberty_objalloc.c) = ab33e8ab90975cd66e871c6ccbd255fc21d55a89 +SHA1 (patch-libiberty_strerror.c) = ac592e5690074277e594e266a06ece29e82aabee +SHA1 (patch-libiberty_testsuite_test-expandargv.c) = cde0600d899637c466040a23e6b80de692b37d8f +SHA1 (patch-libmudflap_ChangeLog) = 836898ae2068ee06c83a294a36aa40aa143a9d37 +SHA1 (patch-libmudflap_mf-hooks1.c) = 136bf3796016573cc2c51cef9e93b4dbda4edb4f +SHA1 (patch-libmudflap_mf-hooks2.c) = 15884c7cf2267c3924774e2de675b18c5ebea473 +SHA1 (patch-libmudflap_mf-impl.h) = 4b7258cf51abe9ebb1435b17bcf3090aff3a90cf +SHA1 (patch-libmudflap_mf-runtime.c) = 41d1b3b8dc6f7898f724b3469a2a28bcc5d773cc +SHA1 (patch-libmudflap_mf-runtime.h) = f66e8e5ad8c48ef36dea58357b23e05685c314e0 +SHA1 (patch-libmudflap_testsuite_libmudflap.c_fail68-frag.c) = e1dd08ee93cb52fd6a9c945237f1d15ce36affdb +SHA1 (patch-libobjc_ChangeLog) = 668434e429f36a629fd170a0583141f966020c74 +SHA1 (patch-libobjc_archive.c) = 7474e33fcb776cb3eb569872c8e349db338acc39 +SHA1 (patch-libobjc_encoding.c) = 2de56f3c9f55c059a0ab43b49032f48df1af2a21 +SHA1 (patch-libobjc_hash.c) = 1bdcae878a5b96bb7c62c7ec80798aa9ca787630 +SHA1 (patch-libobjc_sendmsg.c) = b084ad4ced97491f69c1a639330a2893b0a3f47f +SHA1 (patch-libssp_ChangeLog) = 5ffef91b9010433ea0fe305d192d660539613fd4 +SHA1 (patch-libstdc++-v3_ChangeLog) = ebf0f27088d5df3688142d348958e3a4f15bd260 +SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = bce94ef76edac42ea96d8610c1b365ce6f1f2e55 +SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 1b8f1ff0e81625eb182c6ed3a7b53b368e97431f +SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = b74cf4720a4f0d305d1215279c4ff6215681acb5 +SHA1 (patch-libstdc++-v3_configure) = a91baa0699187de74cf847755b1fd77c7e067950 +SHA1 (patch-libstdc++-v3_crossconfig.m4) = 343551d946b01c389dead8e0f74d609fb6ccee38 +SHA1 (patch-libstdc++-v3_include_bits_locale__facets.tcc) = c5a787ff8c15e06e0e9983ef359ab6e7481b173c +SHA1 (patch-libstdc++-v3_include_bits_stl__algobase.h) = 668bddd2aacfeed9b377e8feea981fd82799aeac +SHA1 (patch-libstdc++-v3_include_bits_stl__pair.h) = 1cfb98dc27a7576c65430ed4fb9ca232ec97e40a +SHA1 (patch-libstdc++-v3_include_bits_stl__queue.h) = 80fc607a577f9129a9b5e8edb7c6052eeecf979a +SHA1 (patch-libstdc++-v3_include_ext_numeric__traits.h) = 5fb0a2f0ee41414a561957c6519ed28a824e5cd2 +SHA1 (patch-libstdc++-v3_include_ext_rope) = c13a1a9589da52115322d6f7dee95236debcc390 +SHA1 (patch-libstdc++-v3_include_ext_ropeimpl.h) = 8fc9fcd89a2ca9b0a36f827f18328dd29ae9deaa +SHA1 (patch-libstdc++-v3_libsupc++_eh__arm.cc) = a9dec4c7a5a79791ce85b0ff5867359c12264809 +SHA1 (patch-libstdc++-v3_libsupc++_exception__ptr.h) = 0e76655b676ed97a79c1cc0a518c9775e2bc140c +SHA1 (patch-libstdc++-v3_libsupc++_nested__exception.h) = 6ed1f1e7d5419b40a5fd3c6a82d94d4d463a8d87 +SHA1 (patch-libstdc++-v3_libsupc++_unwind-cxx.h) = 6b9acc0f9803770e029f9a6a7ba65909fb256704 +SHA1 (patch-libstdc++-v3_src_atomic.cc) = 6072d63c6287c8477ecc22d0bb895046411c595a +SHA1 (patch-libstdc++-v3_src_locale-inst.cc) = ec76a985f2eb7340eb10b0558395d90e99839517 +SHA1 (patch-libstdc++-v3_testsuite_22__locale_time__get_get__weekd) = 8b3a39baea8b5cb5a4e259aa658157c5d5f7b310 +SHA1 (patch-lto-plugin_ChangeLog) = 6e972c111f7dbddf018e707ce38ccf5e6b64592e +SHA1 (patch-maintainer-scripts_ChangeLog) = 703876390c938f3a6944b92197ced9b733d7d82f +SHA1 (patch-zlib_ChangeLog) = 815c27b2a3e5bcb7afdf0e5ad8bb93e684a99552 +SHA1 (patch-zlib_zconf.in.h) = 4fee3c4bf2b33c844c84dc41ec866fa56e92bb02 diff --git a/lang/gcc45/files/arm-minix.h b/lang/gcc45/files/arm-minix.h new file mode 100644 index 000000000..1a8f65a12 --- /dev/null +++ b/lang/gcc45/files/arm-minix.h @@ -0,0 +1,150 @@ +/* Definitions for ARM running MINIX using the ELF format + Copyright (C) 2001, 2004, 2007 Free Software Foundation, Inc. + Contributed by David E. O'Brien and BSDi. + Adapted for MINIX by Lionel Sambuc + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#undef MINIX_TARGET_CPU_CPP_BUILTINS +#define MINIX_TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ + TARGET_BPABI_CPP_BUILTINS(); \ + if (ARM_EABI_UNWIND_TABLES) \ + builtin_define ("__UNWIND_TABLES__"); \ + } \ + while (0) + +/* Define the actual types of some ANSI-mandated types. + Needs to agree with . GCC defaults come from c-decl.c, + c-common.c, and config//.h. */ +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#undef WINT_TYPE +#define WINT_TYPE "int" + +/* We don't have any limit on the length as out debugger is GDB. */ +#undef DBX_CONTIN_LENGTH + +/* NetBSD does its profiling differently to the Acorn compiler. We + don't need a word following the mcount call; and to skip it + requires either an assembly stub or use of fomit-frame-pointer when + compiling the profiling functions. Since we break Acorn CC + compatibility below a little more won't hurt. */ + +#undef ARM_FUNCTION_PROFILER +#define ARM_FUNCTION_PROFILER(STREAM,LABELNO) \ +{ \ + asm_fprintf (STREAM, "\tmov\t%Rip, %Rlr\n"); \ + asm_fprintf (STREAM, "\tbl\t__mcount%s\n", \ + (TARGET_ARM && NEED_PLT_RELOC) \ + ? "(PLT)" : ""); \ +} + +/* VERY BIG NOTE: Change of structure alignment for NetBSD/arm. + There are consequences you should be aware of... + + Normally GCC/arm uses a structure alignment of 32 for compatibility + with armcc. This means that structures are padded to a word + boundary. However this causes problems with bugged NetBSD kernel + code (possibly userland code as well - I have not checked every + binary). The nature of this bugged code is to rely on sizeof() + returning the correct size of various structures rounded to the + nearest byte (SCSI and ether code are two examples, the vm system + is another). This code breaks when the structure alignment is 32 + as sizeof() will report a word=rounded size. By changing the + structure alignment to 8. GCC will conform to what is expected by + NetBSD. + + This has several side effects that should be considered. + 1. Structures will only be aligned to the size of the largest member. + i.e. structures containing only bytes will be byte aligned. + structures containing shorts will be half word aligned. + structures containing ints will be word aligned. + + This means structures should be padded to a word boundary if + alignment of 32 is required for byte structures etc. + + 2. A potential performance penalty may exist if strings are no longer + word aligned. GCC will not be able to use word load/stores to copy + short strings. + + This modification is not encouraged but with the present state of the + NetBSD source tree it is currently the only solution that meets the + requirements. */ + +#undef DEFAULT_STRUCTURE_SIZE_BOUNDARY +#define DEFAULT_STRUCTURE_SIZE_BOUNDARY 8 + +/* Fixed-sized enum by default (-fno-short-enums) */ +#undef MINIX_CC1_SPEC +#define MINIX_CC1_SPEC "%{!fshort-enums:%{!fno-short-enums:-fno-short-enums}} " + +/* Use by default the new abi and calling standard */ +#undef ARM_DEFAULT_ABI +#define ARM_DEFAULT_ABI ARM_ABI_AAPCS + +/* LSC: FIXME: When activated, some programs crash on qemu with an illegal + * instruction. + * The cause is unknown (Missing support on MINIX, missing support + * on the emulator, library error...). + */ +#if 0 +/* Make sure we use hard-floating point ABI by default */ +#undef TARGET_DEFAULT_FLOAT_ABI +#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD +#endif + +#if defined(NETBSD_NATIVE) +/* LSC: On arm, when compiling statically, we need gcc_eh. */ +#undef MINIX_LINK_GCC_C_SEQUENCE_SPEC +#define MINIX_LINK_GCC_C_SEQUENCE_SPEC \ + "%{static:--start-group} %G %L -lgcc_eh %{static:--end-group}%{!static:%G}" +#endif /* defined(NETBSD_NATIVE) */ + +/* Default to full VFP if -mhard-float is specified. */ +#undef MINIX_SUBTARGET_ASM_FLOAT_SPEC +#define MINIX_SUBTARGET_ASM_FLOAT_SPEC \ + "%{mhard-float:{!mfpu=*:-mfpu=vfpv3-d16}} \ + %{mfloat-abi=hard:{!mfpu=*:-mfpu=vfpv3-d16}}" + +#undef MINIX_SUBTARGET_EXTRA_ASM_SPEC +#define MINIX_SUBTARGET_EXTRA_ASM_SPEC \ + "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" \ + TARGET_FIX_V4BX_SPEC \ + "%{fpic|fpie:-k} %{fPIC|fPIE:-k}" + +/* Little endian by default */ +#undef TARGET_ENDIAN_DEFAULT +#define TARGET_ENDIAN_DEFAULT 0 + +#undef SUBTARGET_CPU_DEFAULT +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_cortexa8 + +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (MINIX/arm ELF EABI)", stderr); + +#undef ARM_EABI_UNWIND_TABLES +#define ARM_EABI_UNWIND_TABLES \ + ((!USING_SJLJ_EXCEPTIONS && flag_exceptions) || flag_unwind_tables) diff --git a/lang/gcc45/files/dragonfly-spec.h b/lang/gcc45/files/dragonfly-spec.h deleted file mode 100644 index ace9e19c4..000000000 --- a/lang/gcc45/files/dragonfly-spec.h +++ /dev/null @@ -1,215 +0,0 @@ -/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/dragonfly-spec.h,v 1.5 2008/07/24 21:45:10 corecode Exp $ */ - -/* Base configuration file for all DragonFly targets. - Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Common DragonFly configuration. - All DragonFly architectures should include this file, which will specify - their commonalities. - - Adapted from gcc/config/freebsd-spec.h by - Joerg Sonnenberger - - Adapted from gcc/config/freebsd.h by - David O'Brien - Loren J. Rittle . */ - - -/* This defines which switch letters take arguments. On DragonFly, most of - the normal cases (defined in gcc.c) apply, and we also have -h* and - -z* options (for the linker) (coming from SVR4). - We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ - -#define DFBSD_SWITCH_TAKES_ARG(CHAR) \ - (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ - || (CHAR) == 'h' \ - || (CHAR) == 'z' /* ignored by ld */ \ - || (CHAR) == 'R') - -/* This defines which multi-letter switches take arguments. */ - -#define DFBSD_WORD_SWITCH_TAKES_ARG(STR) \ - (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ - || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \ - || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ - || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) - -#define DFBSD_TARGET_OS_CPP_BUILTINS() \ - do \ - { \ - if (DFBSD_MAJOR == 3) \ - builtin_define ("__DragonFly__=3"); \ - else if (DFBSD_MAJOR == 2) \ - builtin_define ("__DragonFly__=2"); \ - else if (DFBSD_MAJOR == 1) \ - builtin_define ("__DragonFly__=1"); \ - else \ - builtin_define ("__DragonFly__"); \ - builtin_define ("__DragonFly_cc_version=100001"); \ - builtin_define_std ("unix"); \ - builtin_define ("__KPRINTF_ATTRIBUTE__"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=bsd"); \ - builtin_assert ("system=DragonFly"); \ - DFBSD_TARGET_CPU_CPP_BUILTINS(); \ - } \ - while (0) - -/* Define the default DragonFly-specific per-CPU hook code. */ -#define DFBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0) - -/* Provide a CPP_SPEC appropriate for DragonFly. We just deal with the GCC - option `-posix', and PIC issues. */ - -#define DFBSD_CPP_SPEC " \ - %(cpp_cpu) \ - %{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} \ - %{posix:-D_POSIX_SOURCE}" - -/* Provide a STARTFILE_SPEC appropriate for DragonFly. Here we add - the magical crtbegin.o file (see crtstuff.c) which provides part - of the support for getting C++ file-scope static object constructed - before entering `main'. */ - -#define DFBSD_STARTFILE_SPEC \ - "%{!shared: \ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" - -/* Provide a ENDFILE_SPEC appropriate for DragonFly. Here we tack on - the magical crtend.o file (see crtstuff.c) which provides part of - the support for getting C++ file-scope static object constructed - before entering `main', followed by a normal "finalizer" file, - `crtn.o'. */ - -#define DFBSD_ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -/* Provide a LIB_SPEC appropriate for DragonFly as configured and as - required by the user-land thread model. Select the appropriate libc, - depending on whether we're doing profiling or need threads support. - Make it a hard error if -pthread is provided on the command line and gcc - was configured with --disable-threads (this will help avoid bug - reports from users complaining about threading when they - misconfigured the gcc bootstrap but are later consulting DragonFly - manual pages that refer to the mythical -pthread option). */ - -/* Provide a LIB_SPEC appropriate for DragonFly. Just select the appropriate - libc, depending on whether we're doing profiling or need threads support. - (simular to the default, except no -lg, and no -p). */ - -#ifdef DFBSD_NO_THREADS -#define DFBSD_LIB_SPEC " \ - %{pthread: %eThe -pthread option is only supported on DragonFly when gcc \ -is built with the --enable-threads configure-time option.} \ - %{!nostdlib{!nostartfiles{!nolibc: -lc}}} \ - }" -#else -#define DFBSD_LIB_SPEC " \ - %{pthread:-lpthread} \ - %{!nostdlib: %{!nostartfiles: %{!nolibc: -lc}}} \ - " -#endif - -#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2" - -#if 0 -#define LINK_LIBGCC_SPEC "" -#define LIBGCC_SPEC "%{shared: -lgcc_pic} %{!shared: -lgcc}" - -#define PRE_LIB_SPEC " \ - %{pg: -L"PREFIX2"/lib/gcc41/profiling \ - %{!static: -rpath /usr/lib/gcc41/profiling \ - -rpath-link "PREFIX2"/lib/gcc41/profiling}} \ - %{g: -L"PREFIX2"/lib/gcc41/debug \ - %{!static: -rpath /usr/lib/gcc41/debug \ - -rpath-link "PREFIX2"/lib/gcc41/debug}} \ - -L"PREFIX2"/lib/gcc41 \ - %{!static: -rpath /usr/lib/gcc41 -rpath-link "PREFIX2"/lib/gcc41} \ - %{pg: -L"PREFIX2"/lib/profiling \ - %{!static: -rpath /usr/lib/profiling \ - -rpath-link "PREFIX2"/lib/profiling}} \ - %{g: -L"PREFIX2"/lib/debug \ - %{!static: -rpath /usr/lib/debug -rpath-link "PREFIX2"/lib/debug}} \ - %{!static: -rpath /usr/lib -rpath-link "PREFIX2"/lib} \ - " - -#define DFBSD_LINK_COMMAND_SPEC "\ -%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ - %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\ - %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\ - %{static:} %{L*} %(link_libgcc) %o \ - %{fprofile-arcs|fprofile-generate: -lgcov}\ - %{!nostdlib:%{!nodefaultlibs:%(pre_lib)}}\ - %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}\ - %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}" - -#ifndef PREFIX2 -#define PREFIX2 "/usr" -#endif - -#ifndef STANDARD_STARTFILE_PREFIX_1 -#define STANDARD_STARTFILE_PREFIX_1 PREFIX2"/lib/gcc41/" -#endif -#ifndef STANDARD_EXEC_PREFIX -#define STANDARD_EXEC_PREFIX PREFIX2"/libexec/gcc41/" -#endif -#ifndef STANDARD_STARTFILE_PREFIX -#define STANDARD_STARTFILE_PREFIX PREFIX2"/lib/" -#endif -#ifndef TOOLDIR_BASE_PREFIX -#define TOOLDIR_BASE_PREFIX PREFIX2"/libexec/gcc41" -#endif -#ifndef STANDARD_BINDIR_PREFIX -#define STANDARD_BINDIR_PREFIX PREFIX2"/libexec/gcc41" -#endif -#ifndef STANDARD_LIBEXEC_PREFIX -#define STANDARD_LIBEXEC_PREFIX PREFIX2"/libexec/gcc41" -#endif - -#ifndef GPLUSPLUS_INCLUDE_DIR -#define GPLUSPLUS_INCLUDE_DIR PREFIX2"/include/c++" -#endif -#ifndef GPLUSPLUS_TOOL_INCLUDE_DIR -#define GPLUSPLUS_TOOL_INCLUDE_DIR PREFIX2"/include/c++/4.1" -#endif -#ifndef GPLUSPLUS_BACKWARD_INCLUDE_DIR -#define GPLUSPLUS_BACKWARD_INCLUDE_DIR PREFIX2"/include/c++/4.1/backward" -#endif -#ifndef GCC_LOCAL_INCLUDE_DIR -#define GCC_LOCAL_INCLUDE_DIR PREFIX2"/libdata/gcc41" -#endif -#ifndef GCC_INCLUDE_DIR -#define GCC_INCLUDE_DIR PREFIX2"/include" -#endif - -#undef INCLUDE_DEFAULTS -#define INCLUDE_DEFAULTS \ - { \ - { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \ - { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0 }, \ - { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 }, \ - { GCC_INCLUDE_DIR, "GCC", 0, 0 }, \ - { GCC_LOCAL_INCLUDE_DIR, "GCC", 0, 0 }, \ - { NULL, NULL, 0, 0 } \ - } -#endif diff --git a/lang/gcc45/files/dragonfly.h b/lang/gcc45/files/dragonfly.h deleted file mode 100644 index 6274620d9..000000000 --- a/lang/gcc45/files/dragonfly.h +++ /dev/null @@ -1,97 +0,0 @@ -/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/dragonfly.h,v 1.2 2008/05/19 10:46:39 corecode Exp $ */ - -/* Base configuration file for all DragonFly targets. - Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Common DragonFly configuration. - All DragonFly architectures should include this file, which will specify - their commonalities. - - Adapted from gcc/config/freebsd.h by - Joerg Sonnenberger - - Adapted from gcc/config/i386/freebsd-elf.h by - David O'Brien . - Further work by David O'Brien and - Loren J. Rittle . */ - - -/* This defines which switch letters take arguments. On DragonFly, most of - the normal cases (defined in gcc.c) apply, and we also have -h* and - -z* options (for the linker) (coming from SVR4). - We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ - -#undef SWITCH_TAKES_ARG -#define SWITCH_TAKES_ARG(CHAR) (DFBSD_SWITCH_TAKES_ARG(CHAR)) - -#undef WORD_SWITCH_TAKES_ARG -#define WORD_SWITCH_TAKES_ARG(STR) (DFBSD_WORD_SWITCH_TAKES_ARG(STR)) - -#undef TARGET_OS_CPP_BUILTINS -#define TARGET_OS_CPP_BUILTINS() DFBSD_TARGET_OS_CPP_BUILTINS() - -#undef CPP_SPEC -#define CPP_SPEC DFBSD_CPP_SPEC - -#undef STARTFILE_SPEC -#define STARTFILE_SPEC DFBSD_STARTFILE_SPEC - -#undef ENDFILE_SPEC -#define ENDFILE_SPEC DFBSD_ENDFILE_SPEC - -#undef LIB_SPEC -#define LIB_SPEC DFBSD_LIB_SPEC - -#if 0 -#undef LINK_COMMAND_SPEC -#define LINK_COMMAND_SPEC DFBSD_LINK_COMMAND_SPEC -#endif - -/************************[ Target stuff ]***********************************/ - -/* All DragonFly Architectures support the ELF object file format. */ -#undef OBJECT_FORMAT_ELF -#define OBJECT_FORMAT_ELF - -/* Don't assume anything about the header files. */ -#undef NO_IMPLICIT_EXTERN_C -#define NO_IMPLICIT_EXTERN_C 1 - -/* Make gcc agree with DragonFly's standard headers (, etc...) */ - -#undef WCHAR_TYPE -#define WCHAR_TYPE "int" - -#define MATH_LIBRARY_PROFILE "-lm_p" - -/* Code generation parameters. */ - -/* Use periods rather than dollar signs in special g++ assembler names. - This ensures the configuration knows our system correctly so we can link - with libraries compiled with the native cc. */ -#undef NO_DOLLAR_IN_LABEL - -/* Define this so we can compile MS code for use with WINE. */ -#define HANDLE_PRAGMA_PACK_PUSH_POP - -/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW. - This enables the test coverage code to use file locking when exiting a - program, which avoids race conditions if the program has forked. */ -#define TARGET_POSIX_IO diff --git a/lang/gcc45/files/gcov-minix-fs-wrapper.h b/lang/gcc45/files/gcov-minix-fs-wrapper.h new file mode 100644 index 000000000..182f3ce6d --- /dev/null +++ b/lang/gcc45/files/gcov-minix-fs-wrapper.h @@ -0,0 +1,39 @@ +/* This header makes it possible to redefine system calls to the + * file system. This way, minix servers can re-route the data + * that libgcov tries to send to the file system. This is + * necessary, because the servers can't access the file system + * directly. Instead, they will copy the data to a helping user + * space process, which will call the file system for them. + * For more information, see the header file. + */ + +#include +#include +#include + + +/* These function pointers initially point to the standard system library + * functions (fopen, etc). All calls to these system library functions are + * then redefined to calls to these function pointers. Because the pointers + * still point to the original functions, all functionality is unchanged. + * Therefore, libgcov won't act differently when linked to applications. + * But, when these pointers are redefined by code within the minix servers, + * the file system calls get replaced by other functionality. + */ + +#define fopen(...) _gcov_fopen(__VA_ARGS__) +#define fread(...) _gcov_fread(__VA_ARGS__) +#define fwrite(...) _gcov_fwrite(__VA_ARGS__) +#define fclose(...) _gcov_fclose(__VA_ARGS__) +#define fseek(...) _gcov_fseek(__VA_ARGS__) +#define getenv(...) _gcov_getenv(__VA_ARGS__) + + +/* wrapper to make it possible to disable gcov_exit on a process exit (for mfs) */ + +int do_gcov_exit = 1; + +void gcov_exit_wrapper(void){ + if(do_gcov_exit) + gcov_exit(); +} diff --git a/lang/gcc45/files/hello.f b/lang/gcc45/files/hello.f deleted file mode 100644 index 4b34eeda6..000000000 --- a/lang/gcc45/files/hello.f +++ /dev/null @@ -1,5 +0,0 @@ - - PROGRAM hello - print*, 'Hello, World!' - END - diff --git a/lang/gcc45/files/hello.m b/lang/gcc45/files/hello.m deleted file mode 100644 index c25ba5ad4..000000000 --- a/lang/gcc45/files/hello.m +++ /dev/null @@ -1,6 +0,0 @@ -#import - -int main( int argc, const char *argv[] ) { - printf( "hello world\n" ); - return 0; -} diff --git a/lang/gcc45/files/i386-dragonfly.h b/lang/gcc45/files/i386-dragonfly.h deleted file mode 100644 index 78b7e0c1d..000000000 --- a/lang/gcc45/files/i386-dragonfly.h +++ /dev/null @@ -1,148 +0,0 @@ -/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/i386/dragonfly.h,v 1.1 2006/09/27 12:10:34 corecode Exp $ */ - -/* Definitions for Intel 386 running DragonFly with ELF format - - Copyright (C) 1996, 2000, 2002 Free Software Foundation, Inc. - Contributed by Eric Youngdale. - Modified for stabs-in-ELF by H.J. Lu. - Adapted from GNU/Linux version by John Polstra. - Continued development by David O'Brien - Adapted from the FreeBSD version. - - Changes: - - remove support for changing the dynamic linker - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - - -#define TARGET_VERSION fprintf (stderr, " (i386 DragonFly/ELF)"); - -/* Override the default comment-starter of "/". */ -#undef ASM_COMMENT_START -#define ASM_COMMENT_START "#" - -#undef ASM_APP_ON -#define ASM_APP_ON "#APP\n" - -#undef ASM_APP_OFF -#define ASM_APP_OFF "#NO_APP\n" - -#undef DBX_REGISTER_NUMBER -#define DBX_REGISTER_NUMBER(n) \ - (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) - -#undef NO_PROFILE_COUNTERS -#define NO_PROFILE_COUNTERS 1 - -/* Tell final.c that we don't need a label passed to mcount. */ - -#undef MCOUNT_NAME -#define MCOUNT_NAME ".mcount" - -/* Make gcc agree with . */ - -#undef SIZE_TYPE -#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") - -#undef PTRDIFF_TYPE -#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") - -#undef WCHAR_TYPE_SIZE -#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD) - -#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */ -#define SUBTARGET_EXTRA_SPECS \ - { "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER } - -/* Provide a STARTFILE_SPEC appropriate for DragonFly. Here we add - the magical crtbegin.o file (see crtstuff.c) which provides part - of the support for getting C++ file-scope static object constructed - before entering `main'. */ - -#undef STARTFILE_SPEC -#define STARTFILE_SPEC \ - "%{!shared: \ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" - -/* Provide a ENDFILE_SPEC appropriate for DragonFly. Here we tack on - the magical crtend.o file (see crtstuff.c) which provides part of - the support for getting C++ file-scope static object constructed - before entering `main', followed by a normal "finalizer" file, - `crtn.o'. */ - -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -/* Provide a LINK_SPEC appropriate for DragonFly. Here we provide support - for the special GCC options -static and -shared, which allow us to - link things in one of these three modes by applying the appropriate - combinations of options at link-time. We like to support here for - as many of the other GNU linker options as possible. But I don't - have the time to search for those flags. I am sure how to add - support for -soname shared_object_name. H.J. - - I took out %{v:%{!V:-V}}. It is too much :-(. They can use - -Wl,-V. - - When the -shared link option is used a final link is not being - done. */ - -#undef LINK_SPEC -#define LINK_SPEC "\ - %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \ - %{v:-V} \ - %{assert*} %{R*} %{rpath*} %{defsym*} \ - %{shared:-Bshareable %{h*} %{soname*}} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \ - %{static:-Bstatic}} \ - %{symbolic:-Bsymbolic}" - -/* A C statement to output to the stdio stream FILE an assembler - command to advance the location counter to a multiple of 1< and std::numeric_limits correct. */ -#undef TARGET_96_ROUND_53_LONG_DOUBLE -#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) diff --git a/lang/gcc45/files/i386-dragonfly64.h b/lang/gcc45/files/i386-dragonfly64.h deleted file mode 100644 index f42365398..000000000 --- a/lang/gcc45/files/i386-dragonfly64.h +++ /dev/null @@ -1,54 +0,0 @@ -/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/i386/dragonfly64.h,v 1.1 2007/01/15 17:53:16 corecode Exp $ */ - -/* Definitions for AMD x86-64 running DragonFly with ELF format - Copyright (C) 2002 Free Software Foundation, Inc. - Contributed by David O'Brien - Adapted from the FreeBSD version. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* $FreeBSD: src/contrib/gcc/config/i386/freebsd64.h,v 1.9 2004/07/28 04:44:23 kan Exp $ */ - - -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (x86-64 DragonFly/ELF)"); - -/* Tell final.c that we don't need a label passed to mcount. */ - -#define SUBTARGET_EXTRA_SPECS \ - { "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER } - -#undef MCOUNT_NAME -#define MCOUNT_NAME ".mcount" - -/* Provide a LINK_SPEC appropriate for the DragonFly/x86-64 ELF target. - This is a copy of LINK_SPEC from tweaked for - the x86-64 target. - XXX We don't support two arch userland yet */ - -#undef LINK_SPEC -#define LINK_SPEC "\ - %{v:-V} \ - %{assert*} %{R*} %{rpath*} %{defsym*} \ - %{shared:-Bshareable %{h*} %{soname*}} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \ - %{static:-Bstatic}} \ - %{symbolic:-Bsymbolic}" diff --git a/lang/gcc45/files/i386-minix.h b/lang/gcc45/files/i386-minix.h new file mode 100644 index 000000000..9aba9a32c --- /dev/null +++ b/lang/gcc45/files/i386-minix.h @@ -0,0 +1,91 @@ +/* Definitions for Intel 386 running MINIX with ELF format + Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc. + Contributed by Eric Youngdale. + Modified for stabs-in-ELF by H.J. Lu. + Adapted from GNU/Linux version by John Polstra. + Continued development by David O'Brien + Adapted for MINIX by Lionel Sambuc + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 2, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#undef MINIX_TARGET_CPU_CPP_BUILTINS +#define MINIX_TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__i386"); \ + builtin_define_with_int_value ("_EM_WSIZE", 4); \ + builtin_define_with_int_value ("_EM_PSIZE", 4); \ + builtin_define_with_int_value ("_EM_SSIZE", 2); \ + builtin_define_with_int_value ("_EM_LSIZE", 4); \ + builtin_define_with_int_value ("_EM_FSIZE", 4); \ + builtin_define_with_int_value ("_EM_DSIZE", 8); \ + } \ + while (0) + +/* Define the actual types of some ANSI-mandated types. + Needs to agree with . GCC defaults come from c-decl.c, + c-common.c, and config//.h. */ +#undef SIZE_TYPE +#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD) + +/* Override the default comment-starter of "/". */ +#undef ASM_COMMENT_START +#define ASM_COMMENT_START "#" + +#undef ASM_APP_ON +#define ASM_APP_ON "#APP\n" + +#undef ASM_APP_OFF +#define ASM_APP_OFF "#NO_APP\n" + +#undef DBX_REGISTER_NUMBER +#define DBX_REGISTER_NUMBER(n) \ + (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) + +#undef NO_PROFILE_COUNTERS +#define NO_PROFILE_COUNTERS 1 + +/* Tell final.c that we don't need a label passed to mcount. */ +#undef MCOUNT_NAME +#define MCOUNT_NAME ".mcount" + +/* A C statement to output to the stdio stream FILE an assembler + command to advance the location counter to a multiple of 1< + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 2, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* MINIX defines + * Default, architecture independent values for MINIX + * + * For this to work properly, the order in the tm_file variable has + * to be the following: + * minix-spec.h $arch/minix.h minix.h + * + * minix-spec.h : specifies default arch-independent values + * $arch/minix.h: redefines as needed default minix values + * minix.h : maps GCC defines to the minix defines. + * + * WARNING: + * When changing any default, also check in the arch headers + * if the default is redefined and update them as required. + */ + +/* In case we need to know. */ +#define USING_CONFIG_MINIX_SPEC 1 + +/* This defines which switch letters take arguments. On FreeBSD, most of + the normal cases (defined in gcc.c) apply, and we also have -h* and + -z* options (for the linker) (coming from SVR4). + We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ +#define MINIX_SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'h' \ + || (CHAR) == 'z' /* ignored by ld */ \ + || (CHAR) == 'R') + +/* This defines which multi-letter switches take arguments. */ +#define MINIX_WORD_SWITCH_TAKES_ARG(STR) \ + (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ + || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \ + || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ + || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) + +#define MINIX_TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__minix"); \ + builtin_define ("__minix__"); \ + builtin_define ("__unix__"); \ + builtin_assert ("system=bsd"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=minix"); \ + MINIX_TARGET_CPU_CPP_BUILTINS(); \ + } \ + while (0) + +/* Define the default MINIX-specific per-CPU hook code. */ +#define MINIX_TARGET_CPU_CPP_BUILTINS() do {} while (0) + +/* Look for the include files in the system-defined places. */ + +#define MINIX_GPLUSPLUS_INCLUDE_DIR "/usr/include/g++" + +#define MINIX_GPLUSPLUS_BACKWARD_INCLUDE_DIR "/usr/include/g++/backward" + +/* + * XXX figure out a better way to do this + */ +#define MINIX_GCC_INCLUDE_DIR "/usr/include/gcc-4.5" + +#define MINIX_INCLUDE_DEFAULTS \ + { \ + { MINIX_GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1 }, \ + { MINIX_GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1 }, \ + { MINIX_GCC_INCLUDE_DIR, "GCC", 0, 0, 1 }, \ + { "/usr/include", "GCC", 0, 0, 1 }, \ + { 0, 0, 0, 0 } \ + } + +/* Provide a CPP_SPEC appropriate for MINIX. We just deal with the GCC + option `-posix'. */ +#define MINIX_CPP_SPEC "%{posix:-D_POSIX_SOURCE}" + +#define MINIX_CC1_SPEC "" + +/* Pass -cxx-isystem to cc1plus. */ +#define MINIX_CC1PLUS_SPEC "%{cxx-isystem}" + +#define MINIX_SUBTARGET_CPP_SPEC "" +#define MINIX_SUBTARGET_EXTRA_ASM_SPEC "" +#define MINIX_SUBTARGET_ASM_FLOAT_SPEC "" + +#define MINIX_DYNAMIC_LINKER "/usr/libexec/ld.elf_so" + +/* Under MINIX, just like on NetBSD, the normal location of the various + * *crt*.o files is the /usr/lib directory. */ +#define MINIX_STANDARD_STARTFILE_PREFIX "/usr/lib/" + +#define MINIX_LINK_GCC_C_SEQUENCE_SPEC \ + "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" + +/* Provide a STARTFILE_SPEC appropriate for MINIX. Here we add + the magical crtbegin.o file (see crtstuff.c) which provides part + of the support for getting C++ file-scope static object constructed + before entering `main'. */ +#define MINIX_STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt0%O%s} \ + %{!pg: \ + %{p:gcrt0%O%s} \ + %{!p:%{profile:gcrt0%O%s} \ + %{!profile:crt0%O%s}}}} \ + %:if-exists(crti%O%s) \ + %{static:%:if-exists-else(crtbeginT%O%s crtbegin%O%s)} \ + %{!static: \ + %{!shared: \ + %{!pie:crtbegin%O%s} \ + %{pie:crtbeginS%O%s}} \ + %{shared:crtbeginS%O%s}}" + +/* Provide an ENDFILE_SPEC appropriate for NetBSD ELF. Here we + add crtend.o, which provides part of the support for getting + C++ file-scope static objects deconstructed after exiting "main". */ +#define MINIX_ENDFILE_SPEC \ + "%{!shared: \ + %{!pie:crtend%O%s} \ + %{pie:crtendS%O%s}} \ + %{shared:crtendS%O%s} \ + %:if-exists(crtn%O%s)" + +/* Provide a LIB_SPEC appropriate for MINIX. Just select the appropriate + libc, depending on whether we're doing profiling or need threads support. + (similar to the default, except no -lg, and no -p). */ +#define MINIX_LIB_SPEC " \ +%{pthread: %eThe -pthread option is only supported on MINIX when gcc \ +is built with the --enable-threads configure-time option.} \ + %{shared:-lc} \ + %{!shared: \ + %{!symbolic: \ + %{!p: \ + %{!pg:-lc}} \ + %{p:-lc_p} \ + %{pg:-lc_p}}}" + +/* Provide a LINK_SPEC appropriate for MINIX. Here we provide support + for the special GCC options -static and -shared, which allow us to + link things in one of these three modes by applying the appropriate + combinations of options at link-time. We like to support here for + as many of the other GNU linker options as possible. But I don't + have the time to search for those flags. I am sure how to add + support for -soname shared_object_name. H.J. + + I took out %{v:%{!V:-V}}. It is too much :-(. They can use + -Wl,-V. + + When the -shared link option is used a final link is not being + done. */ +#define MINIX_LINK_SPEC " \ + -X \ + %{p:%nconsider using `-pg' instead of `-p' with gprof(1) } \ + %{assert*} %{R*} %{rpath*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{symbolic:-Bsymbolic} \ + %{!shared: \ + -dc -dp \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker %(minix_dynamic_linker) }} \ + %{static:-Bstatic}}" + +#define MINIX_TARGET_UNWIND_TABLES_DEFAULT true diff --git a/lang/gcc45/files/minix.h b/lang/gcc45/files/minix.h new file mode 100644 index 000000000..cc162ff4c --- /dev/null +++ b/lang/gcc45/files/minix.h @@ -0,0 +1,135 @@ +/* Base configuration file for all MINIX targets. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* Common MINIX configuration. + * This file maps GCC defines to MINIX defines + * + * For this to work properly, the order in the tm_file variable has + * to be the following: + * minix-spec.h $arch/minix.h minix.h + * + * minix-spec.h : specifies default arch-independent values + * $arch/minix.h: redefines as needed default minix values + * minix.h : maps GCC defines to the minix defines. + */ + +/* In case we need to know. */ +#define USING_CONFIG_MINIX 1 + +#undef SWITCH_TAKES_ARG +#define SWITCH_TAKES_ARG(CHAR) (MINIX_SWITCH_TAKES_ARG(CHAR)) + +#undef WORD_SWITCH_TAKES_ARG +#define WORD_SWITCH_TAKES_ARG(STR) (MINIX_WORD_SWITCH_TAKES_ARG(STR)) + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() MINIX_TARGET_OS_CPP_BUILTINS() + +#if defined(NETBSD_NATIVE) +#undef GPLUSPLUS_INCLUDE_DIR +#define GPLUSPLUS_INCLUDE_DIR MINIX_GPLUSPLUS_INCLUDE_DIR + +#undef GPLUSPLUS_BACKWARD_INCLUDE_DIR +#define GPLUSPLUS_BACKWARD_INCLUDE_DIR MINIX_GPLUSPLUS_BACKWARD_INCLUDE_DIR + +#undef GCC_INCLUDE_DIR +#define GCC_INCLUDE_DIR MINIX_GCC_INCLUDE_DIR + +#undef INCLUDE_DEFAULTS +#define INCLUDE_DEFAULTS MINIX_INCLUDE_DEFAULTS +#endif /* defined(NETBSD_NATIVE) */ + +#undef CPP_SPEC +#define CPP_SPEC MINIX_CPP_SPEC + +#undef CC1_SPEC +#define CC1_SPEC MINIX_CC1_SPEC + +#undef CC1PLUS_SPEC +#define CC1PLUS_SPEC MINIX_CC1PLUS_SPEC + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC MINIX_STARTFILE_SPEC + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC MINIX_ENDFILE_SPEC + +#undef LIB_SPEC +#define LIB_SPEC MINIX_LIB_SPEC + +#undef LINK_SPEC +#define LINK_SPEC MINIX_LINK_SPEC + +#undef STANDARD_STARTFILE_PREFIX +#define STANDARD_STARTFILE_PREFIX MINIX_STANDARD_STARTFILE_PREFIX + +#undef STANDARD_STARTFILE_PREFIX_1 +#define STANDARD_STARTFILE_PREFIX_1 MINIX_STANDARD_STARTFILE_PREFIX + +#undef LINK_GCC_C_SEQUENCE_SPEC +#define LINK_GCC_C_SEQUENCE_SPEC MINIX_LINK_GCC_C_SEQUENCE_SPEC + +/* This has to be here in order to allow architecture to define the default + * content of the additional specs. */ +#undef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS \ + { "subtarget_extra_asm_spec", MINIX_SUBTARGET_EXTRA_ASM_SPEC }, \ + { "subtarget_asm_float_spec", MINIX_SUBTARGET_ASM_FLOAT_SPEC }, \ + { "minix_dynamic_linker", MINIX_DYNAMIC_LINKER } + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC MINIX_SUBTARGET_CPP_SPEC + +/* All MINIX Architectures support the ELF object file format. */ +#undef OBJECT_FORMAT_ELF +#define OBJECT_FORMAT_ELF + +/* Use periods rather than dollar signs in special g++ assembler names. + This ensures the configuration knows our system correctly so we can link + with libraries compiled with the native cc. */ +#undef NO_DOLLAR_IN_LABEL + +/* Don't assume anything about the header files. */ +#undef NO_IMPLICIT_EXTERN_C +#define NO_IMPLICIT_EXTERN_C 1 + +/* Handle #pragma weak and #pragma pack. */ +#undef HANDLE_SYSV_PRAGMA +#define HANDLE_SYSV_PRAGMA 1 + +/* Don't default to pcc-struct-return, we want to retain compatibility with + older gcc versions AND pcc-struct-return is nonreentrant. + (even though the SVR4 ABI for the i386 says that records and unions are + returned in memory). */ + +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 0 + +/* Use --as-needed -lgcc_s for eh support. */ +#ifdef HAVE_LD_AS_NEEDED +#define USE_LD_AS_NEEDED 1 +#endif + +#if defined(HAVE_LD_EH_FRAME_HDR) +#define LINK_EH_SPEC "--eh-frame-hdr " +#endif + +#undef TARGET_UNWIND_TABLES_DEFAULT +#define TARGET_UNWIND_TABLES_DEFAULT MINIX_TARGET_UNWIND_TABLES_DEFAULT diff --git a/lang/gcc45/files/t-minix b/lang/gcc45/files/t-minix new file mode 100644 index 000000000..0680618a6 --- /dev/null +++ b/lang/gcc45/files/t-minix @@ -0,0 +1,5 @@ +# Compile crtbeginS.o and crtendS.o with pic. +CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC + +# Compile libgcc.a with pic. +TARGET_LIBGCC2_CFLAGS += -fPIC diff --git a/lang/gcc45/options.mk b/lang/gcc45/options.mk index d3cf3fce9..cadc53500 100644 --- a/lang/gcc45/options.mk +++ b/lang/gcc45/options.mk @@ -1,8 +1,8 @@ -# $NetBSD: options.mk,v 1.3 2014/05/16 12:01:17 pho Exp $ +# $NetBSD: options.mk,v 1.2 2012/04/13 11:10:09 hans Exp $ PKG_OPTIONS_VAR= PKG_OPTIONS.gcc45 -PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java gcc-objc gcc-objc++ #gcc-ada -PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ +PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java gcc-objc #gcc-ada +PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc .if ${OPSYS} == "NetBSD" PKG_SUGGESTED_OPTIONS+= nls .elif ${OPSYS} == "SunOS" @@ -84,23 +84,16 @@ MAKE_ENV+= ac_cv_prog_JAR=no .include "../../lang/python/application.mk" .endif -.if !empty(PKG_OPTIONS:Mgcc-objc++) -. if empty(PKG_OPTIONS:Mgcc-objc) -PKG_OPTIONS+= gcc-objc -. endif -. if empty(PKG_OPTIONS:Mgcc-c++) -PKG_OPTIONS+= gcc-c++ -. endif - -LANGS+= obj-c++ -.endif - .if !empty(PKG_OPTIONS:Mgcc-c++) LANGS+= c++ USE_TOOLS+= perl CONFIGURE_ARGS+= --enable-__cxa_atexit +.if ${OPSYS} == "NetBSD" && ${OS_VARIANT} == "Minix" +CONFIGURE_ARGS+= --with-gxx-include-dir=${GCC_PREFIX}/include/g++/ +.else CONFIGURE_ARGS+= --with-gxx-include-dir=${GCC_PREFIX}/include/c++/ .endif +.endif .if !empty(PKG_OPTIONS:Mgcc-fortran) LANGS+= fortran diff --git a/lang/gcc45/patches/patch-ChangeLog b/lang/gcc45/patches/patch-ChangeLog new file mode 100644 index 000000000..a696d10c4 --- /dev/null +++ b/lang/gcc45/patches/patch-ChangeLog @@ -0,0 +1,38 @@ +$NetBSD$ + +--- ChangeLog.orig Thu Apr 28 14:08:55 2011 ++++ ChangeLog +@@ -1,3 +1,33 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-12-18 Eric Botcazou ++ ++ * configure: Regenerate. ++ ++2011-06-27 Hans-Peter Nilsson ++ ++ PR regression/47836 ++ PR bootstrap/23656 ++ PR other/47733 ++ PR bootstrap/49247 ++ PR c/48825 ++ * configure.ac (target_libraries): Remove target-libiberty. ++ Remove all target-specific settings adding target-libiberty to ++ skipdirs and noconfigdirs. Remove checking target_configdirs ++ and removing target-libiberty but keeping target-libgcc if ++ otherwise empty. ++ * Makefile.def (target_modules): Don't add libiberty. ++ (dependencies): Remove all traces of target-libiberty. ++ * configure, Makefile.in: Regenerate. ++ ++2011-06-19 Jack Howarth ++ ++ PR target/49461 ++ * configure.ac: Use mh-x86-darwin. ++ * configure: Regenerate. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-INSTALL_configure.html b/lang/gcc45/patches/patch-INSTALL_configure.html new file mode 100644 index 000000000..aff1ac98e --- /dev/null +++ b/lang/gcc45/patches/patch-INSTALL_configure.html @@ -0,0 +1,13 @@ +$NetBSD$ + +--- INSTALL/configure.html.orig Thu Apr 28 14:31:39 2011 ++++ INSTALL/configure.html +@@ -561,7 +561,7 @@ systems that support conditional traps). + + +
--with-llsc
On MIPS targets, make -mllsc the default when no +--mno-lsc option is passed. This is the default for ++-mno-llsc option is passed. This is the default for + Linux-based targets, as the kernel will emulate them if the ISA does + not provide them. + diff --git a/lang/gcc45/patches/patch-LAST__UPDATED b/lang/gcc45/patches/patch-LAST__UPDATED new file mode 100644 index 000000000..baded8fb7 --- /dev/null +++ b/lang/gcc45/patches/patch-LAST__UPDATED @@ -0,0 +1,7 @@ +$NetBSD$ + +--- LAST_UPDATED.orig Thu Apr 28 14:31:39 2011 ++++ LAST_UPDATED +@@ -1 +1 @@ +-Obtained from SVN: tags/gcc_4_5_3_release revision 173114 ++Obtained from SVN: tags/gcc_4_5_4_release revision 189153 diff --git a/lang/gcc45/patches/patch-MD5SUMS b/lang/gcc45/patches/patch-MD5SUMS new file mode 100644 index 000000000..61f34a129 --- /dev/null +++ b/lang/gcc45/patches/patch-MD5SUMS @@ -0,0 +1,2175 @@ +$NetBSD$ + +--- MD5SUMS.orig Thu Apr 28 15:43:05 2011 ++++ MD5SUMS +@@ -1,5 +1,5 @@ + # This file contains the MD5 checksums of the files in the +-# gcc-4.5.3.tar.bz2 tarball. ++# gcc-4.5.4.tar.bz2 tarball. + # + # Besides verifying that all files in the tarball were correctly expanded, + # it also can be used to determine if any files have changed since the +@@ -14,12 +14,12 @@ + fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME + d32239bcb673463ab874e80d47fae504 COPYING3 + 6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB +-96c2645ffa214407d58da5bd40e76660 ChangeLog ++48844b2359c5f252246b49b3051852c5 ChangeLog + 09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa + 23b8927fe1fb0ab321c09a4f0500aa4c INSTALL/README + 0174042f3ab3eade49b27ebc5fa60645 INSTALL/binaries.html + 8605be1e1a0c2cac13495c24bbfefd36 INSTALL/build.html +-d818e4afd2f11e201dac916798115f9d INSTALL/configure.html ++7d8c19f920d568b8b9639d24f9819c62 INSTALL/configure.html + 33801e556a519fbeb5d3552f67209359 INSTALL/download.html + 55402f9189972787a265159b01c991cc INSTALL/finalinstall.html + afae7040a9eea38319fe448240e31600 INSTALL/gfdl.html +@@ -28,16 +28,16 @@ e495d5441345e7c974fa9270d6ed68b2 INSTALL/index.html + 0e50006de4d0f94e48d9cc464ea0d3e5 INSTALL/prerequisites.html + 8ee0fc330fc7de5fcf9ebba1d9828109 INSTALL/specific.html + e208112b3190234e82c5b846ef16045a INSTALL/test.html +-52452c02d4b1271e92c09261f6adaa73 LAST_UPDATED ++aed967b6440ea2b45db88ba50ee71826 LAST_UPDATED + 0291699989c93946dc40e5638105ff1d MAINTAINERS +-af6d886ee9715aa198031903b3700bdc Makefile.def +-a473290dbb5c83727df3ac7c42484263 Makefile.in ++258f97867f1bf26aca047dec692804f3 Makefile.def ++de4ee0a0ab86f173defe016428d29382 Makefile.in + b24392dffcd338ac18c6bf0b316cdeed Makefile.tpl +-6d8dfdc357e11d8bc5488a096737c8fc NEWS ++b3fddbe9174ed1fe6f9f4c2319d3a00a NEWS + ec2b30b6785a025a4647df31097b2339 README + b510a5285eb05298b5f3d9f5ae920588 boehm-gc/AmigaOS.c + 2caafacabf758bb76a9dfce1fc544b97 boehm-gc/BCC_MAKEFILE +-5c1c7523c7ec6090c0935b0834b1356e boehm-gc/ChangeLog ++0154f99908f9ebfd09c3a35872554c68 boehm-gc/ChangeLog + c18075e3729cd116028480307a8e845d boehm-gc/EMX_MAKEFILE + 3b7cc3be9ed3c2135bbda990e8a69303 boehm-gc/MacOS.c + 5cf7764626b7dd7272b2fe11403d1b6a boehm-gc/MacProjects.sit.hqx +@@ -67,8 +67,8 @@ ccc4e9a52aa294110431eb9aead00666 boehm-gc/alpha_mach_ + a2ed02a22235b4f27ab644ce4f3a9268 boehm-gc/blacklst.c + b19b7b67bff97d0bceba827fedb07d32 boehm-gc/callprocs + 32e4857b7b4dbc4bc68e321f70f65dd4 boehm-gc/checksums.c +-8804c9b54ea3167f4fb3d8efe38503a0 boehm-gc/configure +-bb0890e79efd94f11675d90fc9a59f66 boehm-gc/configure.ac ++078b944097e00df9cfdc16e4f5ee2fea boehm-gc/configure ++45dc0b796c8ab352afed69bdea1d3c39 boehm-gc/configure.ac + 56328341fbfbe66715779252aa61943e boehm-gc/configure.host + 61ccb6486d45cc6d99201cc19f3c579c boehm-gc/cord/cordbscs.c + a055ef9f1010ad5759ff5c71630d6b50 boehm-gc/cord/cordprnt.c +@@ -208,9 +208,9 @@ a48113a06665f2c4c3281455fadcb2b2 config-ml.in + 53e3c407f215246c9ca5bbb4ddd3b958 config.guess + 6df093e787b282178d1a49a18425857d config.rpath + 4fd1def8333043cefe55ba0825375d51 config.sub +-cc88696c956b785ca3173fb650360960 config/ChangeLog ++74e3df23c8a7121b804d5d832285a4ac config/ChangeLog + 0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4 +-731a4c2ef07c06a2a175804e75fadc03 config/acx.m4 ++9238d23c68259d195b332db71892d242 config/acx.m4 + 5c6a030699353abe2ff69294a495e4cd config/bootstrap-O1.mk + 4d3304310a9b7b17872d6f644e1dd7c8 config/bootstrap-O3.mk + 3be755875df9da02eb4b0a9badd414f1 config/bootstrap-debug-big.mk +@@ -259,6 +259,7 @@ ecf7a936c35e3c5a0e8d2b0721243b85 config/mh-sco + e4353fd5127f79d601d85fde3925ac76 config/mh-solaris + 2415a4da9726792701f226bdb0e5ac3f config/mh-sysv4 + 2415a4da9726792701f226bdb0e5ac3f config/mh-sysv5 ++0b0d3f0f3e7a944fed9d5f45ec54191b config/mh-x86-darwin + a1f1f0d6fa6e5e849b918f091babef21 config/mh-x86omitfp + 3755b5b077053b5de54ff0f781ca9295 config/mt-alphaieee + 96289d06809692c31d71e69c4bedb6d7 config/mt-d30v +@@ -290,9 +291,9 @@ d3cecf02bb97035177818aefbb0e0833 config/progtest.m4 + 49305b421244035f19bdccb38a800d5f config/unwind_ipinfo.m4 + 3510459bb8dffa5ea06682a29bcdbfa9 config/warnings.m4 + e249d18c447a8372fd1ed5f084284d6b config/zlib.m4 +-a9074a1f718bb7507f043f2e5fe45f3f configure +-bd026cb163e66465b38101eac81d6329 configure.ac +-571ac94d2c65cc04f25ba0ea2ef70afe contrib/ChangeLog ++55bc903a13eb23a6d47a81720e66c09e configure ++89d512ac464cb7597f961d1476fe56c5 configure.ac ++b6ceec30c050687d52f7b5f44ef5024a contrib/ChangeLog + 7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa + e0ea80d7094bf66610f2f60db444f9a1 contrib/analyze_brprob + 49fe5a4a8deb2ae714614e5bb8d2feb1 contrib/check_makefile_deps.sh +@@ -318,7 +319,7 @@ fa945bac89ee68b410027dcfe1312f4b contrib/index-prop + b747c8d95bb7534c2c0f5af32ae32520 contrib/paranoia.cc + a710b8024ed1edced07e764add76de05 contrib/patch_tester.sh + 87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh +-80cf5eee83704e09a7d8b1a5f8d1d30a contrib/reghunt/ChangeLog ++5a775c808a9c82a889978322b95322c5 contrib/reghunt/ChangeLog + cf247a580e49d212518de409793db0a8 contrib/reghunt/bin/gcc-build-full + 724e70ea3e80f87f2a201bbe2f1eef37 contrib/reghunt/bin/gcc-build-simple + 3f2318bae7562a4ad1639e686916a545 contrib/reghunt/bin/gcc-cleanup +@@ -377,7 +378,7 @@ f251d49dd87647250fcd74dd50b7835f contrib/reghunt/exam + e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch + afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk + 8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall +-6ef225da68114d85a9383e8dbcecb764 contrib/regression/ChangeLog ++c0e339d20ebd762e5c68097ba8f1f7f5 contrib/regression/ChangeLog + 30553bfced1b2b46bf7ca01ef6ba69d1 contrib/regression/GCC_Regression_Tester.wdgt/Default.png + ad38ddd771df222eb9d413e3c7f6a751 contrib/regression/GCC_Regression_Tester.wdgt/Icon.png + 777bd286c147cc02861811f66b9a4440 contrib/regression/GCC_Regression_Tester.wdgt/Info.plist +@@ -396,7 +397,7 @@ c619e84bad79c6103190d13e243e923e contrib/test_summary + e00fa8f7dd72b80ca5a64130e85fe4f4 contrib/uninclude + 7cb42cbdf8becd280d1e16191416fb62 contrib/warn_summary + 21504de31981a67b5b93b265029d1865 depcomp +-8426d14ea647b0d6bcd71f157cc5eb63 fixincludes/ChangeLog ++0cddb58474db5a96c19146a58537ff1c fixincludes/ChangeLog + e42aa31fd83f70288f5f6c8320fd91bb fixincludes/Makefile.in + a3e295399ad4c66c3985433dd62ce25d fixincludes/README + 455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc +@@ -518,12 +519,12 @@ a5e817d35ded04a0fb03999b50c0e89e fixincludes/tests/ba + c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h + 4f59f83f073afacc3f59c39952ec8a7b fixincludes/tests/base/wchar.h + d227bdd632a7e8a2d0323e1d37e10d16 gcc/ABOUT-GCC-NLS +-b62d1070ad4804dec1da4d020ce41ac1 gcc/BASE-VER ++f5468e6bc12be47c8bcd00414e4e1d07 gcc/BASE-VER + 59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING + a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB + d32239bcb673463ab874e80d47fae504 gcc/COPYING3 + 6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB +-06f1b72de87d78f8658bc00bb17f91bd gcc/ChangeLog ++2d490de2bb6cc020bba605399cf522c1 gcc/ChangeLog + a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997 + d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998 + 240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999 +@@ -543,7 +544,7 @@ e0d987698e76aab3c05b25a1e1f5c8bf gcc/ChangeLog.datafl + e7d34075f784a1023d629b2d5593e6b4 gcc/ChangeLog.ptr + 44a19214e0ebd53bf291bcfe85f7492f gcc/ChangeLog.tree-ssa + f8f89587d1efbf6a1f7456761d5712c5 gcc/ChangeLog.tuples +-35d2f770df80c2d72df8689ad6a4a132 gcc/DATESTAMP ++c164f62e6239129f0587198afa72303c gcc/DATESTAMP + d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE + f76db67fe6b61ed06427646baa7ba6bf gcc/FSFChangeLog + 44bbf940c2e0a18217b7e604f45216df gcc/FSFChangeLog.10 +@@ -555,7 +556,7 @@ f88d9228718a255b827d6f417063d62d gcc/README.Portabili + 8196e38010aaf4e4492b9b4882e1d027 gcc/acinclude.m4 + d418736653befa470a0cb011b7bcff7f gcc/aclocal.m4 + 30995d78221b41ce62c92b2f601b4ebb gcc/ada/9drpc.adb +-f153f5e6bfe135a1fe19308b033ebeb6 gcc/ada/ChangeLog ++9ce9bda9c817831f4def3c2c0f1377db gcc/ada/ChangeLog + 683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001 + 7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002 + cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003 +@@ -1406,13 +1407,13 @@ fb0c8300c1287e0479a602875413c13b gcc/ada/g-zspche.ads + 0b1c6ffed20c195e773f26671ffe4088 gcc/ada/gcc-interface/ada.h + f1169670279ca47f1fd033a1818a7832 gcc/ada/gcc-interface/config-lang.in + fd8a05e607cdce082fda4b18e314808e gcc/ada/gcc-interface/cuintp.c +-bf83f61bf1f060179ac42a62a937cc54 gcc/ada/gcc-interface/decl.c ++1291e4753f6914c4e3e8b5817fb4c6e3 gcc/ada/gcc-interface/decl.c + 7fd200ba8b5f29197b2de38e9090878e gcc/ada/gcc-interface/gigi.h + d5c7365a06bff19bb6f2337e6a1b26e0 gcc/ada/gcc-interface/lang-specs.h + 1408d4a3044eaef66f7937bc2db32886 gcc/ada/gcc-interface/lang.opt + ee696ea4c9ac57232d0c9afbc4e44f5d gcc/ada/gcc-interface/misc.c + 467cb823a2dd00f8d327d12cf2fa22a2 gcc/ada/gcc-interface/targtyps.c +-0b2a890f6e5fca9923ff450ce1137824 gcc/ada/gcc-interface/trans.c ++943acd79623b0414255a98da98fef5a5 gcc/ada/gcc-interface/trans.c + d094d455f7d8287c3c9e50244b095126 gcc/ada/gcc-interface/utils.c + ec314401ec55ae4e64bef8b096f61619 gcc/ada/gcc-interface/utils2.c + cae24de4854ad8faed817dac303124a8 gcc/ada/get_scos.adb +@@ -1493,7 +1494,7 @@ ab4f83d0257fabca40e7efbae8b0842b gcc/ada/impunit.adb + d7687cbf6b1c440a90c770b40742ab35 gcc/ada/indepsw-mingw.adb + fa914ddcd147d8430f947dc903d68021 gcc/ada/indepsw.adb + 5b85c73b60202d26b3cccad29575fd6a gcc/ada/indepsw.ads +-f7aceb5b62cd12434f60283da2535a39 gcc/ada/init.c ++d345aacd1f07dafae5d2d9f287544a0d gcc/ada/init.c + 0e581a2897b0700946efc712910ad22f gcc/ada/initialize.c + fdfd50a57fa73aedb99cba327458071e gcc/ada/inline.adb + 0ff0b3c938f0fd1072834282df9ab486 gcc/ada/inline.ads +@@ -1594,7 +1595,7 @@ ebb00f25778357174857210931c960c7 gcc/ada/output.ads + 937e969a254584bd3846f0c0aaf8cd30 gcc/ada/par-ch12.adb + 7ee27230d1f76a7cad47ae3ee8d0d03b gcc/ada/par-ch13.adb + 07acb012205c7fe5f6b783d1053a1e22 gcc/ada/par-ch2.adb +-74cee3d40f983fdb87641252b2e51d25 gcc/ada/par-ch3.adb ++983da8be1ff940b4341c54d6e7377683 gcc/ada/par-ch3.adb + 864787241e5da40e70c9dd60d1c7b557 gcc/ada/par-ch4.adb + dea697c1ac9fec926e712e012e4c0243 gcc/ada/par-ch5.adb + 73c25013dd9028bd906c8ef68de68f65 gcc/ada/par-ch6.adb +@@ -2110,7 +2111,7 @@ be414b8065b125dadc24d979dd03f247 gcc/ada/s-taenca.ads + 56d9b2d25d277d91b8d276a0dbd407b5 gcc/ada/s-taprob.adb + ff503490cd2beac95f079a19510e38a7 gcc/ada/s-taprob.ads + b2ddb7250c1e6e581af067c09aa67c08 gcc/ada/s-taprop-dummy.adb +-8d55816ff13993c738e5c671ab7f3f28 gcc/ada/s-taprop-hpux-dce.adb ++ec7795ed7df8a26bcc9de6ca9306ba21 gcc/ada/s-taprop-hpux-dce.adb + 0cda990090d9b7995172c232226d761f gcc/ada/s-taprop-irix.adb + 194e5ef16d057450e647a86b618040ed gcc/ada/s-taprop-linux.adb + 6a6eff895c97298efe5d3b57bc67036f gcc/ada/s-taprop-lynxos.adb +@@ -2478,10 +2479,10 @@ c4f6b919d8b62fbbbf9bf7fe42a98329 gcc/ada/treeprs.adt + b70f33075edc994b3567cd72c9600179 gcc/ada/ttypef.ads + 206736105ba328a38baa9b76700cebf5 gcc/ada/ttypes.ads + 373e654bed9f76ed6875cee226d0dcbc gcc/ada/types.adb +-831e88d116d33f0150db028ad243bb14 gcc/ada/types.ads ++904d12701aa04288afad0866d4354cac gcc/ada/types.ads + 0e3f91d816bdb93fcf065566e7f8e0aa gcc/ada/types.h + 894dd803761f181f6998bbdcd8d57a74 gcc/ada/ug_words +-238c6b64ec811c414227871c69a6d93c gcc/ada/uintp.adb ++b40cda870dd29a6f47436b9a814aa385 gcc/ada/uintp.adb + 0d5562b57961b854330802c4c2c387f3 gcc/ada/uintp.ads + 5f7743a06d547bb779c62596bc346f4d gcc/ada/uintp.h + 8ba9725cf9ce39870a15e399b3be680a gcc/ada/uname.adb +@@ -2530,16 +2531,16 @@ fece3d08b33eafe459f6a259cf7df413 gcc/bitmap.c + 48c125d5adc15ed4bbc44c0dd24596e5 gcc/bt-load.c + 0339c58e1c47c12bd2c46c1a5f7b31c9 gcc/builtin-attrs.def + 3d3ef75b8105df8cc219eaf5644f9fff gcc/builtin-types.def +-2de4a40ee8b57d646eda09dbd42a6f84 gcc/builtins.c ++c9a36dc0d338be6cfaa2d2e3c9e0a867 gcc/builtins.c + 5dec06314fab348b5760d68d20b19073 gcc/builtins.def + 73e94fd7d8fb1829d449a3e30e2afe5b gcc/c-aux-info.c +-8803e01cbfe9a7b804911ded78d7b79c gcc/c-common.c ++d17422bbc3857566dc5a483b924efcc7 gcc/c-common.c + 4a5d42c3a3451f755a7cd8afe7c246fa gcc/c-common.def + 94a796ef298fe4054f054a32319acaa2 gcc/c-common.h + c20fea1d582e245f8fb33fcaa24ce3eb gcc/c-config-lang.in + 7aeaf98d77b17ef092440308f2e9422b gcc/c-convert.c + 7e4172b5644fb1e46c7dcdf50756acd8 gcc/c-cppbuiltin.c +-260ac433d2036d7cce77ca3c23066c3d gcc/c-decl.c ++c56727401555f8e1fb95090e392502ae gcc/c-decl.c + b5ae9db64c1aa1cc8f8d8172f9f35e8c gcc/c-dump.c + 7b6ca63efd5fb2c3125f9d044b219a1b gcc/c-errors.c + dec9253a5ff39ab13d55a97a984e9ea9 gcc/c-format.c +@@ -2561,15 +2562,15 @@ aa6462bca3aa17ea2fe61a8b701450b8 gcc/c-opts.c + c7ec8f71e1befc96c8fdefc25646bb6f gcc/c-pretty-print.h + ce063541fca58e8a657fe25641e31d4d gcc/c-semantics.c + b956eef0b0416d7b09851d3905f9fc4c gcc/c-tree.h +-61941d5c9c7d8293be497b3a0b12c3cb gcc/c-typeck.c ++8853a957d6ad9255318db27d2efc934e gcc/c-typeck.c + 47949f013e656cf92e663b96768a763a gcc/c.opt +-371cbcf0c1e536a07206071fe5cd33a4 gcc/caller-save.c ++b337cd29faf72c2d2110dd3588baa565 gcc/caller-save.c + c445c838f4cf5344cd0544cad089b1c8 gcc/calls.c + 0bfed3370709b34922da69ebe421a5f1 gcc/cfg.c + c74f9084018fb88c5de4bda26db45a1a gcc/cfganal.c + a0651e633f6bba07b5734440ae60facd gcc/cfgbuild.c + 8637531df86e5e23de6a8bc0780bd09d gcc/cfgcleanup.c +-c283ca51cd761cfea8214244cee4b92c gcc/cfgexpand.c ++b3cbee1bf885cbdfb4ff93ba6be29b7e gcc/cfgexpand.c + e7022cb514a4ac51dfe86246aab99981 gcc/cfghooks.c + 215992457e5d38b7d46a470070f86dab gcc/cfghooks.h + f093155a130c6d848d5a3afde3fd1018 gcc/cfglayout.c +@@ -2578,7 +2579,7 @@ c39060e69d429b0cee72a38714c4b0ab gcc/cfgloop.c + 87a2eac799ce506e1df588f4ef3aa93f gcc/cfgloop.h + e0fb886375c158773a48fa2aad3a0a3c gcc/cfgloopanal.c + 85a76d4aeddf842b49ecdbc44a5724a0 gcc/cfgloopmanip.c +-216440cb60b22d330a2ccbb768a18eb4 gcc/cfgrtl.c ++ecf4e7f1f5261708c9f83bdcf7f656cc gcc/cfgrtl.c + 5bf12a06fd68b47e54da6f4af8be45cf gcc/cgraph.c + bbec8544108922b1ccaa4ff16a03ef68 gcc/cgraph.h + e7ff852637441caa52cacc46b4b8998a gcc/cgraphbuild.c +@@ -2589,17 +2590,17 @@ b7485300552aea793f4b36a7974db9e8 gcc/collect2-aix.h + 85ba2ff56574efd91ce64ee12c712e49 gcc/collect2.c + 0247ff66229aea4e4d6ad6d8cd445718 gcc/collect2.h + 9a1327f8ad5a68243397ec8d8aa50c07 gcc/combine-stack-adj.c +-092ea49e65a1cc47cf04f9e68f580727 gcc/combine.c ++c61f26cd5e893db9409703947c4c37db gcc/combine.c + 09356e63414ed02a743781fe530d4119 gcc/common.opt + 162c077c493d89717647c605b5b81996 gcc/conditions.h + 8cfe7c6b23a6ed38fe177582e52c9daf gcc/config.build +-800c700057b364f4b84ae1e7d209ec0b gcc/config.gcc ++adec25424dd615e65adafe47c23a70b4 gcc/config.gcc + 85bd381652e878ff6b89ecf891338a34 gcc/config.host + 54c02b743bbc7219d831b14df11c5e07 gcc/config.in + 8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README + 3acabb7bb274b8bf65a2a0860087641d gcc/config/alpha/alpha-modes.def + 2bd71a4474ae6aabdc23c6cbdb77b19b gcc/config/alpha/alpha-protos.h +-0e734beabbca25d77e2188019d977fa6 gcc/config/alpha/alpha.c ++28e550b59dfde89382f5ce5648632255 gcc/config/alpha/alpha.c + 7f740c6d5f4fbc8ced9004525ef42714 gcc/config/alpha/alpha.h + babab214285900fe36e03ba647fb990e gcc/config/alpha/alpha.md + de8e700641c687562ecf731c89b7f96e gcc/config/alpha/alpha.opt +@@ -2615,7 +2616,7 @@ ae14b55b05f553da27417ae945d6092a gcc/config/alpha/fre + fdde9c30b3a0da0b58acabeea56ed61e gcc/config/alpha/host-osf.c + 07faecc563137b07c7644a16356eeff5 gcc/config/alpha/libgcc-alpha-ldbl.ver + e2022465cf75e61694c399d81567e05e gcc/config/alpha/linux-elf.h +-caf063c1971332d870b3ba614ffbd69c gcc/config/alpha/linux-unwind.h ++4ad510ade4fb09297fbf3e1bc1a97f93 gcc/config/alpha/linux-unwind.h + f0a439e17c0c8d239b366488b4d3951c gcc/config/alpha/linux.h + ef6ef4e5ea3d1caa5d7dff95be723d00 gcc/config/alpha/netbsd.h + 44ff4f798849a8da6d850fcc86186d32 gcc/config/alpha/openbsd.h +@@ -2658,9 +2659,9 @@ f70a030ae33bd3736ddf1b72133d668c gcc/config/arm/aout. + 66a1f470deeba24fcc540a281efd88de gcc/config/arm/arm-modes.def + 2926de0d316866edf6ea0bd8a3305e33 gcc/config/arm/arm-protos.h + 08c5ece6f75252914a4939dd228ed3a8 gcc/config/arm/arm-tune.md +-5962678f9d52702970cc993ece9ffa14 gcc/config/arm/arm.c ++e08b3f26f2f28f570a68683a999cd315 gcc/config/arm/arm.c + e1f571640cbc7f764faaf815b90416da gcc/config/arm/arm.h +-a4717cfa7aa15e831ee57461d3e5defc gcc/config/arm/arm.md ++31e702f04cc82c7cd5363338f6098732 gcc/config/arm/arm.md + 593034704e6ae41b226a5a6ecf95371f gcc/config/arm/arm.opt + 3e100a448539aab31c3af8bb0d9f5c8f gcc/config/arm/arm1020e.md + 05d26f1a7cb64c1fc879e7a8040a1171 gcc/config/arm/arm1026ejs.md +@@ -2670,7 +2671,7 @@ a4717cfa7aa15e831ee57461d3e5defc gcc/config/arm/arm.m + ba2549bf7568c597b4f024d36b38af0d gcc/config/arm/bpabi-v6m.S + 318aa78cd1e3b5be3a075a137c80190d gcc/config/arm/bpabi.S + 93f8a84062e0aa9bbac7ebe0ae9d4f10 gcc/config/arm/bpabi.c +-eaa1c0c27f43af6fbc4c63fd023d01d2 gcc/config/arm/bpabi.h ++8943c17c00f83adcdff250ab5055574c gcc/config/arm/bpabi.h + ca6c8312d269b6a15ffd3d133ebd0869 gcc/config/arm/cirrus.md + 8d1e36ea3f5df864c7fa3c96db9d37ea gcc/config/arm/coff.h + 8e2b505d1ac4622a8295c2de4c13829f gcc/config/arm/constraints.md +@@ -2704,7 +2705,7 @@ fffe0cd79badf432823a50259dd55831 gcc/config/arm/linux + 602ee36dfc441aed277bd3a9e86cb305 gcc/config/arm/neon-gen.ml + 8dbaf43d207f8fbc63cc8cf4cd7d799c gcc/config/arm/neon-schedgen.ml + 9531d25d059cb9008535524bfbf89075 gcc/config/arm/neon-testgen.ml +-f24d5f60ae766f76b7dd4910a04e57f2 gcc/config/arm/neon.md ++d389f939ee4b10cad8ea44f051881309 gcc/config/arm/neon.md + 6e3fdd362b61703a937beebbbb0fb56c gcc/config/arm/neon.ml + 5db15cba081afa8572a4ccb5af0db8ef gcc/config/arm/netbsd-elf.h + fddb0dabcecea3d3cc594dbb004c12db gcc/config/arm/netbsd.h +@@ -2730,7 +2731,7 @@ b7c69cdac989b510653960a3f37eb7ef gcc/config/arm/t-str + 5e6bf2f3a6e8c67d7f6b7dec799c1731 gcc/config/arm/t-symbian + 8f24c8370b8705273fc1ac94311e713d gcc/config/arm/t-vxworks + 08260b044b83275047ff62ebb5543dfc gcc/config/arm/t-wince-pe +-e035cd5c5c70d7d9d7d17361ccbac66a gcc/config/arm/thumb2.md ++7d7c0de82b2f62160f65fec56e226f62 gcc/config/arm/thumb2.md + 2cb94f3be777cbf153a3986950ac2025 gcc/config/arm/uclinux-eabi.h + 3ca956ca72cbb18fc516d5d665a740f6 gcc/config/arm/uclinux-elf.h + 332508926dbef51495f6e98126b23c91 gcc/config/arm/unaligned-funcs.c +@@ -2745,13 +2746,14 @@ e83f5fbee3292540388507acfe709d3b gcc/config/arm/wince + 5ad9a6a59243c4c1e8a344da55f1bde1 gcc/config/avr/avr-c.c + 09ef90f56dc775c8a6829a781fb1b41a gcc/config/avr/avr-devices.c + ef23e9282974bcd0e6fb4e8bb1f2a591 gcc/config/avr/avr-protos.h +-9112a95f48d6eddabcf7768127a1094c gcc/config/avr/avr.c ++925c6dea2f32d430268ad9494fc6d6ab gcc/config/avr/avr-stdint.h ++04e614208ff98f595084abe7aca7129f gcc/config/avr/avr.c + f418adf9f8c32a73fa522908852bcbf3 gcc/config/avr/avr.h + 86a6cb9405f45671788038c34a4a8616 gcc/config/avr/avr.md + b79e5561d13e32cd3b1f537c56b42dba gcc/config/avr/avr.opt + fe99b85e66ca6b0da8a6c0ff2840a961 gcc/config/avr/constraints.md + 4fdbe01ae8a767bd44794b0ee82630dd gcc/config/avr/driver-avr.c +-84c82722f9a20774c42ce738103b2ca9 gcc/config/avr/libgcc.S ++2d1f90d947fda2455229c7c48185b645 gcc/config/avr/libgcc.S + 74914a6cabd96e5a30dcf174adf81ce0 gcc/config/avr/predicates.md + c8f4329d7e38c1ebe3b14b92f23eabfc gcc/config/avr/rtems.h + 0db44115db5f2651db31a45e3c689bb3 gcc/config/avr/t-avr +@@ -2769,7 +2771,7 @@ ac9aff402e0e9a74e39e37b3c22db45c gcc/config/bfin/crtn + 301a6274fc6346eee6bf18776f9d1ee4 gcc/config/bfin/elf.h + e39155cfc1fe007935f404408ac8d547 gcc/config/bfin/lib1funcs.asm + e21c42946d8adddc149d0f01f6ee4918 gcc/config/bfin/libgcc-bfin.ver +-dbb40b6e504e03f36ea0e81cae77b319 gcc/config/bfin/linux-unwind.h ++56ba57b1e91af0e45092f5c98bc1ee41 gcc/config/bfin/linux-unwind.h + c555cde95de777cefe68dbc857ca7637 gcc/config/bfin/linux.h + 6f0ac1ac1944813ff2b8a86c375a2863 gcc/config/bfin/predicates.md + 537e303b6e60c99ec5e650575797ab1a gcc/config/bfin/print-sysroot-suffix.sh +@@ -2810,9 +2812,9 @@ ee30df16a7032186f8308467d2478bc2 gcc/config/darwin-cr + 1416e1c4f8df1482c8536e197b460974 gcc/config/darwin-driver.c + b2fae17b46f937ccb27b8b230ecbfe3c gcc/config/darwin-f.c + 8542b57bc35681f6ee5ae657995b4775 gcc/config/darwin-ppc-ldouble-patch.def +-51ee821cb15b9101c545aaddad0fcb37 gcc/config/darwin-protos.h ++d15cf7372f7a5dc84b476edef5de749c gcc/config/darwin-protos.h + 374b3e0a718102166c49e942f1595685 gcc/config/darwin-sections.def +-26133bdfe11f89ae2b8a94ce6acfb901 gcc/config/darwin.c ++5e233299d4eb7f85260b7813b0fe2d5c gcc/config/darwin.c + d37c7fb427dfb67e0027b516ae8b526f gcc/config/darwin.h + 995e5a4d3855220bb0359cb371c1a662 gcc/config/darwin.opt + 5fb6a506884ae778e8c8c14a2a71f07f gcc/config/darwin10.h +@@ -2904,15 +2906,15 @@ ea47859147741a02b97829f70410bd38 gcc/config/host-hpux + 2c191e2d8d033611c6fccc8362d9e8f0 gcc/config/hpux-stdint.h + 5fc69388173252eb3f56af2ccaa98819 gcc/config/i386/abmintrin.h + 11b4e907792d4c0c7e842f217e3ea638 gcc/config/i386/ammintrin.h +-a3806c5d8c73d148a6f9879211a28924 gcc/config/i386/athlon.md ++69fef75a1150bef045be338685f95242 gcc/config/i386/athlon.md + 2004f5e8c9f6ca4372e7337dbad192e2 gcc/config/i386/atom.md + 61e1f581dd0c158986028bb901853080 gcc/config/i386/att.h +-67f428fd19a033b3707c3fb856dbee17 gcc/config/i386/avxintrin.h ++fd63da27cdaedfaa67ee04ae3b8f3fd5 gcc/config/i386/avxintrin.h + 5f8657fdcca4420dda514b868975f3c5 gcc/config/i386/biarch32.h + 502227a7eef62f0d772fc38171f8152b gcc/config/i386/biarch64.h + d16b033a1e910ba46219892bc5114101 gcc/config/i386/bmmintrin.h + 26dd6829f0ec362360afbbcf44d12fd5 gcc/config/i386/bsd.h +-d6833268df8cac9a81e4a17d8c0a52fa gcc/config/i386/constraints.md ++cc6636074a43e7b7bd3c2722cbe54cf1 gcc/config/i386/constraints.md + 93c88aa788fc652fbc08ed951a7aa453 gcc/config/i386/cpuid.h + 905921837900244ece0f0c1814e76cf4 gcc/config/i386/cross-stdarg.h + 960cca0dc0c3df8c6ea4ff2792453c12 gcc/config/i386/crtdll.h +@@ -2929,12 +2931,12 @@ c521b701644e32f454fbf14f5cf36118 gcc/config/i386/cygw + e23697c64ed098c4907644cd86b7aeec gcc/config/i386/cygwin2.c + 839477f9f9babe6678c0472691e0d791 gcc/config/i386/darwin-libgcc.10.4.ver + 2a433c0875383cfacc0c4640802281ed gcc/config/i386/darwin-libgcc.10.5.ver +-444d47d2f20848da252efd81350ebaeb gcc/config/i386/darwin.h ++81fb5a0fd6b0544aced943d0c4c0bcc5 gcc/config/i386/darwin.h + 690375e0b274dbbc10fa0e085e73cf9c gcc/config/i386/darwin64.h + d317a2b3352d2d3715ed395b12799ba0 gcc/config/i386/djgpp-stdint.h + ee31756c9d90bc91a4442f55a3074f78 gcc/config/i386/djgpp.h + fce27d1975ee7b2919e4426ae0001452 gcc/config/i386/djgpp.opt +-85f40a9d0010f90629e6944d47f1ea5b gcc/config/i386/driver-i386.c ++7178a404df37e0c669992c8e32484d4a gcc/config/i386/driver-i386.c + 85cd1ff971725d951aac58ddd23e4298 gcc/config/i386/emmintrin.h + 5b34fcb32abda8613b56a53477bc0a11 gcc/config/i386/fma4intrin.h + bdb3e89023568c5198821b5ea1ed238d gcc/config/i386/freebsd.h +@@ -2955,10 +2957,10 @@ a2f55de8c6f0b7e8065c571a0ca963b3 gcc/config/i386/gthr + 3d3e757554529cd19292ade6661f9d21 gcc/config/i386/i386-interix.h + f1be9e9dbf092b26488d3768a0d21a59 gcc/config/i386/i386-interix3.h + d10868eb41da45bd266e310e1ab4685f gcc/config/i386/i386-modes.def +-f56ef0afcfbda9714d16cf22b889d8a4 gcc/config/i386/i386-protos.h +-ecfdd648d6cd58ceec1010aed1eee616 gcc/config/i386/i386.c +-00e2b0e78d68fd95db941161c0facd2a gcc/config/i386/i386.h +-bd08dd4bb964dcdacd006c8e0964623a gcc/config/i386/i386.md ++361e052a9b19eb4b32323e5940906cbc gcc/config/i386/i386-protos.h ++ae95a33fb5755c1c78e29294dfd7d856 gcc/config/i386/i386.c ++845bde8c38dd19862c8794384190664a gcc/config/i386/i386.h ++b092a19f28f375cfc02212f427c9604b gcc/config/i386/i386.md + 266306aff8325f234056f056bc900b94 gcc/config/i386/i386.opt + b87d0ab7e517e1235e4958fdd413b115 gcc/config/i386/i386elf.h + 60e56eb73bd6295e047aae586f7bfa04 gcc/config/i386/ia32intrin.h +@@ -2968,7 +2970,7 @@ b87d0ab7e517e1235e4958fdd413b115 gcc/config/i386/i386 + 4ea84d3d1a9ccc22e24d5e839e901458 gcc/config/i386/knetbsd-gnu.h + 8b897e418568db935c00c3b8226e387b gcc/config/i386/kopensolaris-gnu.h + 903fa7296dd9ffabb0e29a5d909e649b gcc/config/i386/libgcc-glibc.ver +-d56b56a47fe8ee346198f3e4280acfec gcc/config/i386/linux-unwind.h ++c9341edb7c07105d9b3f593e43489c74 gcc/config/i386/linux-unwind.h + d032c1153748805cf021667df9f6bb8b gcc/config/i386/linux.h + 9dd1fa895d19f10b2cd33621cf0897db gcc/config/i386/linux64.h + c93afb096fd383cb7864df8540b77782 gcc/config/i386/lwpintrin.h +@@ -2981,7 +2983,7 @@ eb9fbd9d22a830fcd7514eb66dad2cf2 gcc/config/i386/ming + 65a0f458f9f4e4d575c334f0dbd6a9da gcc/config/i386/mingw32.h + a2aab639b7cc09bd945fbbd6718a4835 gcc/config/i386/mm3dnow.h + 19220503eff53d1ec2cebfe0f487f915 gcc/config/i386/mmintrin.h +-fcf111e47f159b82f525c4f7bb692b80 gcc/config/i386/mmx.md ++213348ab54cf88108db5da76871faec5 gcc/config/i386/mmx.md + 429f971720405f2fbad8d384fb455979 gcc/config/i386/msformat-c.c + a15f2f585ce2f85912d8f6f09e123684 gcc/config/i386/netbsd-elf.h + 6a1d84cfda3f2408587c0372edca5354 gcc/config/i386/netbsd.h +@@ -3015,7 +3017,7 @@ a7c56b573f7954c790824437069b36fc gcc/config/i386/sol2 + 59b63b053033b45a1ff136d858274f8a gcc/config/i386/sol2-gc1.asm + 9e65824b2322c40a67888390481f6b29 gcc/config/i386/sol2-unwind.h + f2ae7e943131fe4fc8b7d4842c2cdc62 gcc/config/i386/sol2.h +-857e19c227080d3d40951272f8f1146e gcc/config/i386/sse.md ++6407227871a023969a73bc692add08e7 gcc/config/i386/sse.md + 6bba0b540111d1aa8e5a67a674cd557f gcc/config/i386/ssemath.h + 6ac9f1cd956e1daa427ec1f7250b8e3a gcc/config/i386/sync.md + 186dd34410d7069b900a1feefa1f3b18 gcc/config/i386/sysv4.h +@@ -3056,7 +3058,7 @@ a3bc87d64567916b9ff13e21a71bb0d8 gcc/config/i386/tmmi + e8ba2f275310d48d995304cb92c7b633 gcc/config/i386/vxworks.h + 36c9098376271a91bd2946e39cfca659 gcc/config/i386/vxworksae.h + 3609cec49e1f1f72221aef24385282de gcc/config/i386/w32-unwind.h +-177373d119c9527f568faf63d08d0a3b gcc/config/i386/winnt-cxx.c ++cf41d4739149a41ce2d6b0cd4b22d629 gcc/config/i386/winnt-cxx.c + 4250afcda5f928caf6d928683b15308f gcc/config/i386/winnt-stubs.c + e7cdf0df23262be31c74caa5940858f2 gcc/config/i386/winnt.c + 5187e9217118c6140976af3d53e060e2 gcc/config/i386/wmmintrin.h +@@ -3096,7 +3098,7 @@ e90da2310b0e83607033de5caa109b48 gcc/config/ia64/ilp3 + f9a7fa1fea7a57aad58c4067ebee0031 gcc/config/ia64/lib1funcs.asm + 7c10e02c5edf0dd4c1bb391bb299075d gcc/config/ia64/libgcc-glibc.ver + d468e5667e9522d7005fe66c7f67edfc gcc/config/ia64/libgcc-ia64.ver +-fe92ee1f99f1f5dc6c1d9036452c9825 gcc/config/ia64/linux-unwind.h ++799648d3fc367ad7dbc7ee645963847d gcc/config/ia64/linux-unwind.h + b3a63d62cba54d118200a6e3eb15405c gcc/config/ia64/linux.h + f64b2c770746d3d42f0c066ee9e86456 gcc/config/ia64/predicates.md + daf9152ff755ff828138537657e1d468 gcc/config/ia64/quadlib.c +@@ -3144,7 +3146,7 @@ afac5072fbf7a6c383c18c90ff7e4f60 gcc/config/lm32/pred + db57b04848058010c561dfa1d3986c39 gcc/config/lm32/rtems.h + 221082bfd6898a37b0faa0f754e72e29 gcc/config/lm32/sfp-machine.h + 898ae02ef566ee0601375beb479d2557 gcc/config/lm32/t-fprules-softfp +-bfb641628379800a8109613f9d802a4d gcc/config/lm32/t-lm32 ++a9d1d80c40cc6eb8e9a32d54f82dae43 gcc/config/lm32/t-lm32 + c1aa2fa8e4634efaeb51fd90ba5b20f4 gcc/config/lm32/uclinux-elf.h + e03eab3c9d6f711ba637a1902dd0219b gcc/config/lynx.h + c4b1055abceece2e347fcebf6be68f52 gcc/config/lynx.opt +@@ -3308,7 +3310,7 @@ baeeb4bfca291d10610a2739f5f4fd95 gcc/config/mips/iris + 3b58096305a61bc0a20120dc45796710 gcc/config/mips/irix-crti.asm + aa19965d3849b9aceaefce0d34a903bf gcc/config/mips/irix-crtn.asm + 7553e4f584b16c04db369d3adaf5532d gcc/config/mips/libgcc-mips16.ver +-77457611f76990448f8347b318cbdfe6 gcc/config/mips/linux-unwind.h ++744be0f8a8b920c80675b788e44ffa93 gcc/config/mips/linux-unwind.h + d83e8a0e911536d770050e9ac86322b4 gcc/config/mips/linux.h + 9449ab565aa71fcc8f3a0ad0fd64a17f gcc/config/mips/linux64.h + 34b678f4fb5671a82747beb39f07eecf gcc/config/mips/loongson.h +@@ -3321,9 +3323,9 @@ ca332fba9734534f8dadf9eedbe735c1 gcc/config/mips/mips + 808bae0e3a87b1452247d34ccf325a4a gcc/config/mips/mips-modes.def + 66183754b6270fa9abac624d92fb2198 gcc/config/mips/mips-protos.h + daa3ae4170c07da0695221337a77f23d gcc/config/mips/mips-ps-3d.md +-cfb7c8091f6d2f8708b22a1246fab9a6 gcc/config/mips/mips.c ++a0d892aa50b5a180fb7d838fabd96ab9 gcc/config/mips/mips.c + 03e5148557de830204a1d11147733769 gcc/config/mips/mips.h +-022f17c317c3e1303a5e274b7c91c733 gcc/config/mips/mips.md ++7d00718f76736aa6f082041f7a6cae33 gcc/config/mips/mips.md + eab95efb06f46f94b0f14908334dbd40 gcc/config/mips/mips.opt + eb0e74a7f8d8859937e3a5790869a666 gcc/config/mips/mips16.S + 4ac52f9f7e3df664020892c36d0d8c6d gcc/config/mips/netbsd.h +@@ -3409,7 +3411,7 @@ e6f1e8b6a00ef9bdb170a3baa07af0f5 gcc/config/newlib-st + e4fb12b0b83338b8af3f278655f0d23a gcc/config/pa/hpux-unwind.h + 8653be6abee9b3fb6d14d4a6f4b93056 gcc/config/pa/lib2funcs.asm + db94d190bf62726337677b1a5574aa69 gcc/config/pa/linux-atomic.c +-b240d1d9d23fa34be252ec9b91e80bf4 gcc/config/pa/linux-unwind.h ++011c411220c7c894727ad03a0d067741 gcc/config/pa/linux-unwind.h + 66386978462b79eed8d908d730ed1351 gcc/config/pa/milli64.S + feac6aba9a4a0c5389d44e887e20875a gcc/config/pa/pa-64.h + 21048ea23e83dffa153f4eccd24f6d29 gcc/config/pa/pa-hpux.h +@@ -3422,10 +3424,10 @@ fafe040d7a38b97e371a3c84845e4c5f gcc/config/pa/pa-hpu + 6b7808fef171673f40789b8c0da45349 gcc/config/pa/pa-hpux1111.opt + 632e94e52db36ce05b21a7918cfff5bf gcc/config/pa/pa-linux.h + 01b8e14468e166bb285428fdc6a20bd3 gcc/config/pa/pa-modes.def +-cb818987c47548fa54c3aa179712c620 gcc/config/pa/pa-protos.h +-2cd1589cc2674cba388dbe2f3d0291ae gcc/config/pa/pa.c +-0e68056bbf20f10c3915203d19d698dc gcc/config/pa/pa.h +-4fc5ab5e4558b4509b4470edcd45e454 gcc/config/pa/pa.md ++8f33f1c3307c5755635bc6b358c4d6f0 gcc/config/pa/pa-protos.h ++932f898ec92e32bf086fbf8a58315422 gcc/config/pa/pa.c ++ae78553ba6d7ff862d54c66fb44f87cc gcc/config/pa/pa.h ++b45137335bed2713bd1bf239de23de4f gcc/config/pa/pa.md + c17a7721fbfc548f190112cc544e0d7b gcc/config/pa/pa.opt + 012a1e54461f76d78cd598a9cb40b3bf gcc/config/pa/pa32-linux.h + 793b1e3d206f78a2d430b2aaa9de1d01 gcc/config/pa/pa32-regs.h +@@ -3434,7 +3436,7 @@ c17a7721fbfc548f190112cc544e0d7b gcc/config/pa/pa.opt + 4a4f19ef8947242fde2445f0519a152e gcc/config/pa/pa64-linux.h + a96a8c210b314a620b9bb9c406c3abe8 gcc/config/pa/pa64-regs.h + a9a6afd79b827565ffb8de8330b4cfe6 gcc/config/pa/pa64-start.h +-ba5f22535e1e5fc9a635117ac9494f4b gcc/config/pa/predicates.md ++0029c7889a48135d0e9aa6e753d400e2 gcc/config/pa/predicates.md + 66bfe8f73c383c39c3e03213a457f6cc gcc/config/pa/quadlib.c + f8eefb3db148e0ec5bb2de180bcacc48 gcc/config/pa/som.h + cee992acb49009e601ef975140cafc75 gcc/config/pa/stublib.c +@@ -3508,7 +3510,7 @@ de9431158703ac12d8da1022b52d1c35 gcc/config/rs6000/ai + e1d92c4c7f864ae116f7f3c5c45739f8 gcc/config/rs6000/aix61.h + 4f47fd4eb1d3e819f5e0749df2e6c3a7 gcc/config/rs6000/aix64.opt + fa28b58a5adf92ebc810e263788c5a43 gcc/config/rs6000/altivec.h +-f80e091e62f1b09072d4fc8991baa1aa gcc/config/rs6000/altivec.md ++ac590109ccbbbcee3cbb7ce55216be5c gcc/config/rs6000/altivec.md + 7c5f50ddc1b4fb933481c32cd8959be3 gcc/config/rs6000/biarch64.h + ff99cf4f61cdbda8bcedccea1e9d6f83 gcc/config/rs6000/cell.md + 114d53465f3f12d9c4c27fa570dd4cb9 gcc/config/rs6000/constraints.md +@@ -3596,9 +3598,9 @@ ab6a949f6da57bdcc9074e412744cfef gcc/config/rs6000/rs + 53cc4734b9bce767284b4f04a181abad gcc/config/rs6000/rs6000-c.c + efc5416944d2ad1ae38ca9475f7bea1c gcc/config/rs6000/rs6000-modes.def + 1b21130ce779bc782b9d4a867203785d gcc/config/rs6000/rs6000-protos.h +-ea5eeeed973f0491cc52b3ba7f3943e0 gcc/config/rs6000/rs6000.c +-c740fed49a87008c6f805af999d753d7 gcc/config/rs6000/rs6000.h +-1543e101b921505b99212325b52cf30c gcc/config/rs6000/rs6000.md ++7540a13a32f2528a83f27c42e19ddd4a gcc/config/rs6000/rs6000.c ++ed9fbf5835abda27fd8d18b360dfce4c gcc/config/rs6000/rs6000.h ++7563b6072e43c41bd2312e4531c3a873 gcc/config/rs6000/rs6000.md + 4c9286e90f9d83383bbd140dfc7709cb gcc/config/rs6000/rs6000.opt + dc120c9c268863a37518b46f4c31f324 gcc/config/rs6000/rs64.md + 5b417581129378039142027ce8602389 gcc/config/rs6000/rtems.h +@@ -3637,8 +3639,8 @@ f11925c88524d2fd457bf77944da1302 gcc/config/rs6000/t- + 0d301abc9966d49a90d85ae154131374 gcc/config/rs6000/t-xilinx + 1dab15db55746bec5105807ac144b3eb gcc/config/rs6000/tramp.asm + 5f030bb1e29ee5342e4f66de82d3a738 gcc/config/rs6000/vec_types.h +-62d8f71135e0fede6ffb8efabcccda24 gcc/config/rs6000/vector.md +-3c4fe88fee5ab74b8bc734dd0d379231 gcc/config/rs6000/vsx.md ++47779c97dc939de997fb85dabfd34dd0 gcc/config/rs6000/vector.md ++29e3d761ecd68dab714e89a001fb76fb gcc/config/rs6000/vsx.md + fe88700a663d334431a07ece84c4e55c gcc/config/rs6000/vxworks.h + 4c955e07e09023bd6b258a73cab738eb gcc/config/rs6000/vxworksae.h + 5c2f724024335c015d76fe32d3da6de9 gcc/config/rs6000/x-aix +@@ -3655,9 +3657,9 @@ f6172e6075fe4700cfabe9cbaf638ec5 gcc/config/rtems.h + 9d9ff9b4001bd315a7a4fa6a796ce4ef gcc/config/rx/predicates.md + 1f196b97e5fb6070e536daad2d021863 gcc/config/rx/rx-modes.def + 639e539c21e652eb9d6730792a580f40 gcc/config/rx/rx-protos.h +-de9b5cd449d2b6c762a9277669c15f6d gcc/config/rx/rx.c +-1097fd66992b6decdf2cd43741669bfb gcc/config/rx/rx.h +-c78d63d10d4766460b0664e48b0bcdda gcc/config/rx/rx.md ++ad37a9e357a2bc5c695782312c6602e0 gcc/config/rx/rx.c ++1003a3ed7c61b5836f657af40dfb0816 gcc/config/rx/rx.h ++e2fe6df5f1726d7a909ca3f8c4b92c59 gcc/config/rx/rx.md + 72f3cbfadebb440f64e190092fdcf17c gcc/config/rx/rx.opt + 7527e5e284da4a3444a510e9e90d9ce6 gcc/config/rx/t-rx + a165b0d74d8295f6f8c6af83852894af gcc/config/s390/2064.md +@@ -3714,7 +3716,7 @@ bd0bdeb94e74618ef37f91c3bafe7818 gcc/config/sh/lib1fu + 68ddef94ef228a2e500c6f84ca5c5f73 gcc/config/sh/libgcc-excl.ver + d5ae1d856c107179aed74cce160e1ca1 gcc/config/sh/libgcc-glibc.ver + 80e2d9e0c8174b2702ecab93405a9bd6 gcc/config/sh/linux-atomic.asm +-0bff395d72bebabe683ba4ec093e4e45 gcc/config/sh/linux-unwind.h ++6a8dc5588b197a92c96209a045d06d6f gcc/config/sh/linux-unwind.h + 14bfd083f1fca7486ecaa1b12a73db67 gcc/config/sh/linux.h + 21914ac4404a0eaea9748b21dfd3b373 gcc/config/sh/little.h + a817e4596024e29763675bcd675b985e gcc/config/sh/netbsd-elf.h +@@ -3726,9 +3728,9 @@ a817e4596024e29763675bcd675b985e gcc/config/sh/netbsd + 8d439712ff37bef737b9454a03cfa4b5 gcc/config/sh/sh-modes.def + 8016dddb00e10d6402d68be4c0d03d00 gcc/config/sh/sh-protos.h + 95672cdf5a97c2ace8fda38e0ddb731b gcc/config/sh/sh-symbian.h +-a82c186ef67acc6ee7764a59d6c321a0 gcc/config/sh/sh.c ++6bcb2261a72434ed13339d49683fa65e gcc/config/sh/sh.c + 4ea750145d8569ac26c0c13b5cbc49fd gcc/config/sh/sh.h +-d628a5aff4e96f8e1a3eca8d0368e254 gcc/config/sh/sh.md ++3fcb8204603e134ff21223da1a286ce3 gcc/config/sh/sh.md + dcd364dd845eac22146855285dfa64e8 gcc/config/sh/sh.opt + d3f5c6e2b4a3620817b14d8dd55128b1 gcc/config/sh/sh1.md + edae695e2c740a39c2253e67bda533b8 gcc/config/sh/sh4-300.md +@@ -3870,7 +3872,7 @@ dddebce7530baa04fa1a1fdf50c20572 gcc/config/sparc/nia + 8204e8037b5a36826fbcf2d4c6662797 gcc/config/sparc/openbsd64.h + 8c445fbde150627b7615c0055f7debc6 gcc/config/sparc/predicates.md + 239b0e98e01de268a9bf0eb97b639a30 gcc/config/sparc/rtemself.h +-3e09bf3afeb779dd8b82182a316f3824 gcc/config/sparc/sol2-64.h ++19b7c947ac8a58a77c046f53c4aee996 gcc/config/sparc/sol2-64.h + 43729902a703e296c6c161fd6d9c7fa0 gcc/config/sparc/sol2-bi.h + a3f50820813526cb4b0658ad2dbd5b49 gcc/config/sparc/sol2-c1.asm + 19ed8d149032fcc3a4439c6c9446ac05 gcc/config/sparc/sol2-ci.asm +@@ -3878,15 +3880,15 @@ a3f50820813526cb4b0658ad2dbd5b49 gcc/config/sparc/sol + a600a8d881a87ba720c946b44afa269a gcc/config/sparc/sol2-gas-bi.h + e5d300a6879b763cd70f68f95f64bff1 gcc/config/sparc/sol2-gas.h + 81e47a3128913dc8f67c66743338426c gcc/config/sparc/sol2-gld-bi.h +-b3fbf4c0b27c451a3518039178ca86c7 gcc/config/sparc/sol2-unwind.h +-e52167503f30f1f3e443547cae7a0787 gcc/config/sparc/sol2.h ++228e9ea56d84f33c2e0559bc99144d22 gcc/config/sparc/sol2-unwind.h ++a00872009fb1f767d5ac36fd30f428f5 gcc/config/sparc/sol2.h + d6ac1866a639d5a4a8c811c8b148058c gcc/config/sparc/sp-elf.h + ea1204fcf09118442f22dbbdfad5d91a gcc/config/sparc/sp64-elf.h + 4e17170225e4c97fa22650f81efb0c19 gcc/config/sparc/sparc-modes.def +-ee7f5f788d59264962127f37f05f439f gcc/config/sparc/sparc-protos.h +-b48a0b954dfbc1c4281d3435c008e802 gcc/config/sparc/sparc.c +-bae89d0d945a1ddd5bc22801bb817f95 gcc/config/sparc/sparc.h +-b90e39f9bc2224d8859ab3b28fc4f306 gcc/config/sparc/sparc.md ++775210ea8f120355072df7bb31afea21 gcc/config/sparc/sparc-protos.h ++a5cd66ade2446f1385f3d3105d6c384a gcc/config/sparc/sparc.c ++28fe265e23aa4ce2511f9f79ebee4a33 gcc/config/sparc/sparc.h ++7369037f14e9e8b09023b2556843bbf7 gcc/config/sparc/sparc.md + 75efbb9728e482e14e8ccf95301f6466 gcc/config/sparc/sparc.opt + e085c3934f5520c64222de26b11c11c6 gcc/config/sparc/sparclet.md + f271a2c5c69010bdc36679b647809dcf gcc/config/sparc/supersparc.md +@@ -4050,7 +4052,7 @@ b0822ccd881752266d7fa4f7ffe9b30e gcc/config/xtensa/ie + b82bfe2a8ac01b87ec45c12576e90ce6 gcc/config/xtensa/lib1funcs.asm + deed48749518ab38c4c3d7a87cb99576 gcc/config/xtensa/lib2funcs.S + 8074695f5eea7b961c59ee9608973dac gcc/config/xtensa/libgcc-xtensa.ver +-1ead674b6174ba39c6434b3532997b84 gcc/config/xtensa/linux-unwind.h ++524552c421a1fef329d41df422912728 gcc/config/xtensa/linux-unwind.h + 8fd23e0b88f3fd4760cc0e856d8553e5 gcc/config/xtensa/linux.h + 6d34a5b6bd51c7bf548b41202f29f032 gcc/config/xtensa/predicates.md + 8b7f87d40cffa52a9b218754a117ec74 gcc/config/xtensa/t-elf +@@ -4063,14 +4065,14 @@ e3386dfa7c033af37f1b75163d27fabf gcc/config/xtensa/un + 5c1710201d7be863f49567eaaa0b20e1 gcc/config/xtensa/xtensa.h + 697079e92cd621a4226a354c5ea2c1a7 gcc/config/xtensa/xtensa.md + 817d70283ee9515a6bc94ecdf0574903 gcc/config/xtensa/xtensa.opt +-0dc956c5f5d9a39829dee1e70960749d gcc/configure ++a655a6a5add810221883b9dfdf455dac gcc/configure + ccd8f3456084521472ab29fe2ec524cc gcc/configure.ac +-2e96ea5780fe26d1269ad3b234acde96 gcc/convert.c ++c8c7fd1280d674fb2e4dc0e3076769ff gcc/convert.c + 8e8d379b495b79ad19b6260bb3fc43b2 gcc/convert.h + fed521a8b57ca3f53af672c0eb581597 gcc/coretypes.h + fed4e27e47d3a50158de285e8c26b416 gcc/coverage.c + 1a69bad83c84b193b55d89f3edb77ab4 gcc/coverage.h +-0efcbb058affa9a35b97e96abb18615f gcc/cp/ChangeLog ++d071be0e61ce2a28e6fcb7602af37a98 gcc/cp/ChangeLog + d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993 + f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994 + ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995 +@@ -4095,7 +4097,7 @@ d3a9f903c71463c15002ac1d05c8aa16 gcc/cp/ChangeLog.ptr + f683cb4990a958bfc1290bbf937646c3 gcc/cp/call.c + c333d7276d59c1b4b8e8826a1cb154ba gcc/cp/cfns.gperf + 6378f6e4fd51e667512dbe94be975d88 gcc/cp/cfns.h +-6c2f1aa01ecf5c473d6cfb26bab8df89 gcc/cp/class.c ++4efe8deb7508d4ebedfce380fff36804 gcc/cp/class.c + 7d3406890f6b2f9529e189b2894460a1 gcc/cp/config-lang.in + 4f49fd277593a7129d762fb1a8d92a59 gcc/cp/cp-gimplify.c + 0636271e3c58ffb4b92801139d0e01f2 gcc/cp/cp-lang.c +@@ -4106,33 +4108,33 @@ be2ba067ddc8b40ec1b32d6c332cb4ad gcc/cp/cp-tree.h + 67bbb6e57bd5126527572b8602bcb835 gcc/cp/cvt.c + 1472180ef4cb9eae7d00fc2539136386 gcc/cp/cxx-pretty-print.c + be348f307d2bd9dbe98e75a6d362ed25 gcc/cp/cxx-pretty-print.h +-77ccb7221d2e11aa3d9e23fc1bbe7f0d gcc/cp/decl.c ++4080621b433234ad054736f2ce807ccf gcc/cp/decl.c + 5626f8be7c0353390d8a2d6e1c647a2d gcc/cp/decl.h +-26753b1fe3aaea2425827fa3e1628fce gcc/cp/decl2.c ++c2d07cd649f4c56d1d9b4afd0ba152b8 gcc/cp/decl2.c + a009584a5d3113881556b1b41458d6dd gcc/cp/dump.c + 1d401dfe28b442881b901942e2b05201 gcc/cp/error.c + f22adce96d72a468408a9aface59e19a gcc/cp/except.c + df402f15d9dab032a7242c387e30f8f5 gcc/cp/expr.c + 887ff1049a055a68f3dbb0a43c308b2e gcc/cp/friend.c + 7cfbd774cd08fb55133526fe92456977 gcc/cp/g++spec.c +-8c8b9dd6fcb71d9b76cad01e75eb7af0 gcc/cp/init.c ++943a564648229d91948db46f8ad25f84 gcc/cp/init.c + 9a34b66a3f562bb915158e929108deb8 gcc/cp/lang-specs.h + 2da5eeed32788fb2684c51f844d50763 gcc/cp/lex.c +-ca8ee59440d8c3eeacf44c604559d0c6 gcc/cp/mangle.c +-7150bcb1830e575b18f2a3fdb6cd4eaf gcc/cp/method.c ++da340a580560b25e8b404278f0c41508 gcc/cp/mangle.c ++523efd00e3639b71ffa5c6050d7706cb gcc/cp/method.c + e274f6c653d0a21e48d565353d1ee595 gcc/cp/name-lookup.c + d199c406703f88abc575b2fbf7d28777 gcc/cp/name-lookup.h + b080bcfe8e8b473de78c2cb0483a21eb gcc/cp/operators.def + d9f2bda35bfdf900eb25657af11bae05 gcc/cp/optimize.c +-94c0c0f2292fbf1f0f5a36b33c2ed841 gcc/cp/parser.c ++212ab7560ae699ad8624957c284e8698 gcc/cp/parser.c + 446e2848b4b509382fc904ece12bd35c gcc/cp/pt.c + d39366c63d4a41e972eeafe80e0ac8c5 gcc/cp/ptree.c + f1f1d2b6b441fc819d3e81cb888cf51c gcc/cp/repo.c + 74008fc69572dd3c4dc5372dcf209ef4 gcc/cp/rtti.c + a1f1251e77abdcba03ecf27c0f769572 gcc/cp/search.c + f155b25d00180f6047e24ad20ea81888 gcc/cp/semantics.c +-915761054c416c23e362639d54a0ba67 gcc/cp/tree.c +-e8b72497265ebcdec91e625533e2449f gcc/cp/typeck.c ++9b00fcdf0f72642b445857b4b22da9b0 gcc/cp/tree.c ++f0e52c469615002d4985dfd2917b232c gcc/cp/typeck.c + 0e90f972bcf34d143d9cadf6f5255245 gcc/cp/typeck2.c + 739f89c50b9226ba10b0a5ff3ed77ea3 gcc/cppdefault.c + 8cbfd0935964cec15954e2b50ffd92c9 gcc/cppdefault.h +@@ -4156,15 +4158,15 @@ f20522f736669bc5ae54bc427475bf62 gcc/debug.c + 8fef74589d93f1d57e87b89743ed0cb2 gcc/defaults.h + 265ed57429ca3542d0821e1ee8ba1f1f gcc/df-byte-scan.c + f7820784265017f953c2a903e47141da gcc/df-core.c +-4d7905b591212cd48ca507b500e2db21 gcc/df-problems.c ++141e3a1cac82811fd84871f625ea2a9c gcc/df-problems.c + 274b5f0234930d0234cdd78eb41bb851 gcc/df-scan.c +-aba4c4717017365144ec35e9923b206d gcc/df.h ++60881abe05e8beb71165c5a25d125bde gcc/df.h + 1c7b2e95db9877ccb5f1179a3b0465f3 gcc/dfp.c + 348ca5583aa3bdcb1d4790a2284d86d7 gcc/dfp.h + e904dfb9b3a9002fe2ba85e853606e28 gcc/diagnostic.c + 02f5415206cf90ce78f5325cf12915e1 gcc/diagnostic.def + ea7ef5fa204836561a1c2b0e0571ddba gcc/diagnostic.h +-2a364b6c684b4456ee500a6fd0c7c0fd gcc/doc/aot-compile.1 ++50b345a637d67ed1f0b1cef1b7aded43 gcc/doc/aot-compile.1 + c78ede5059d73900d165c481f3b3df73 gcc/doc/arm-neon-intrinsics.texi + f14bb72f864987edc101885b31399d41 gcc/doc/bugreport.texi + b1ed827e7700a56f82a492748ca494a5 gcc/doc/cfg.texi +@@ -4174,38 +4176,38 @@ b1ed827e7700a56f82a492748ca494a5 gcc/doc/cfg.texi + 6ed911b9535d38ab2eef4969854f0581 gcc/doc/configterms.texi + a6a48c6a37f6428a3a156a83b5931464 gcc/doc/contrib.texi + 532efd24ba5590c6aed6cc4fa92638d8 gcc/doc/contribute.texi +-cba98130507842b1b7f794e34ee3987d gcc/doc/cpp.1 +-dc757b6ddf87e45331ebd2786a45669a gcc/doc/cpp.info ++6e8e141002f76c3c214a825a3ed94771 gcc/doc/cpp.1 ++f61781c362a503f5ec3c4ad192e7e6ed gcc/doc/cpp.info + b3e155dc7ce8cc3ca6828d3ce02ec945 gcc/doc/cpp.texi + 8462a717da44ca316c8c9ac975457a32 gcc/doc/cppenv.texi +-477b6a75d7daac4346736243faa4d6b5 gcc/doc/cppinternals.info ++8d15b5d3a43f7523719870d79afef126 gcc/doc/cppinternals.info + 55cf8ff7895a619dde004d75de18d584 gcc/doc/cppinternals.texi + 8b50153f82c1aa10bec32aa9b4d20f31 gcc/doc/cppopts.texi + 2c1789fc6ed1b0b239ca419377c576a4 gcc/doc/extend.texi + ee150f91929d3eeab1448e2abedb89f6 gcc/doc/fragments.texi + 456af151776849fe8c9cbd2c5db5fc36 gcc/doc/frontends.texi +-17f8e9cb7b504775770c526a3650f160 gcc/doc/fsf-funding.7 +-1d1bf9ce4a7a285858eb443e67b3e6a4 gcc/doc/g++.1 +-19a65bfdcad7a1f76438d52cc1fba923 gcc/doc/gc-analyze.1 +-1d1bf9ce4a7a285858eb443e67b3e6a4 gcc/doc/gcc.1 +-cc747ec5c738d2bef1c3475db706d81a gcc/doc/gcc.info ++5086d7fbbd93ac5328a2ae9d68675949 gcc/doc/fsf-funding.7 ++738008cf8718a689e09d262d641a6087 gcc/doc/g++.1 ++dce349a34f8a084291863c7bb3cebe14 gcc/doc/gc-analyze.1 ++738008cf8718a689e09d262d641a6087 gcc/doc/gcc.1 ++7f391fba3db2f7f9b404f4ed1c0a48d6 gcc/doc/gcc.info + 9e02c5993b06e67800ebee0fcd287263 gcc/doc/gcc.texi +-524f4daca8befb67082d065e126327d5 gcc/doc/gccinstall.info +-6545fa18cdc962c01ee74067f445dde1 gcc/doc/gccint.info ++b2716ce171c02dc2c50df5ed2c8e5d01 gcc/doc/gccinstall.info ++99f5b8072f9c65218076228c7eaccd53 gcc/doc/gccint.info + 9f631cda9596a0e2d12fc8e93f60375f gcc/doc/gccint.texi +-65034b4fa990cd5e1f8f6b6c4ec4cfab gcc/doc/gcj-dbtool.1 +-42d4f1da4e5c6e425c7dce794058d3b2 gcc/doc/gcj.1 +-199e4a6ade72a326bba800020a4002c4 gcc/doc/gcj.info +-aedc4fd4863b60f857ca2d213becb3a1 gcc/doc/gcov.1 ++24af2494e6165c1cd2fa7dde0babd032 gcc/doc/gcj-dbtool.1 ++8ca67e6f60a6133c70d7a435953b93f7 gcc/doc/gcj.1 ++767b589a80d711376b7235ce2c4881ba gcc/doc/gcj.info ++d05928b14474e96e44319887668ec543 gcc/doc/gcov.1 + 284df058ae86fddc2593727db8ae96d6 gcc/doc/gcov.texi + 36c7b44cfe7e97e70a1424517583e9ac gcc/doc/generic.texi +-a397ff89d2d0ee85039f30b40aab6200 gcc/doc/gfdl.7 +-dad2a2cfb6e36f915d5026ac9672f4ca gcc/doc/gfortran.1 +-30c536d697272e2d632bacacd4393adf gcc/doc/gij.1 ++ebb66dafeecc93bf166190fbdd42a269 gcc/doc/gfdl.7 ++7041ef35e7baa9a4426c8316f0224d89 gcc/doc/gfortran.1 ++dd3ba05c1d7748a83f653b56b2683497 gcc/doc/gij.1 + 388076d3f2051337bb143e8ddd02926b gcc/doc/gimple.texi + 290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi +-9e2b262863e6326f7d5b8393388b0041 gcc/doc/gpl.7 +-330710b0626243f90340cd41c2b0eb86 gcc/doc/grmic.1 ++4d350ec914fbf3454cc24b13bbd1a7e4 gcc/doc/gpl.7 ++0bcb4b9547278fd2e137b3f9f39ae85b gcc/doc/grmic.1 + 4375c08c1628352f8197fcb202cf6847 gcc/doc/gty.texi + 12712ad63a56e9d549562b21b42b1454 gcc/doc/headerdirs.texi + 3e6f9713ea47bd729297ee5daa35abf6 gcc/doc/hostconfig.texi +@@ -4218,23 +4220,23 @@ be9b425ec8b2ca65e2fdbad1029e2dff gcc/doc/include/gcc- + 5f5adc2c6c4ebdcf03cc0125250f5995 gcc/doc/include/gpl_v3.texi + dee9095d1a927726aff2b0f71fd1f9f5 gcc/doc/include/texinfo.tex + 86355f77ae147b0b5ac0b6127c8259f8 gcc/doc/install-old.texi +-fea0dc15134a83f9b12134b7ea7e43f2 gcc/doc/install.texi ++896a004c531b16b1648f93b2177d1c9c gcc/doc/install.texi + 8798a4a6671853841bb8260cf24753d2 gcc/doc/install.texi2html + 5407c66b804884426ce94dcac22864d1 gcc/doc/interface.texi + f9dd029768172aba27fed98ce49eaa93 gcc/doc/invoke.texi +-9a54ab6509038d98fa754496d86f2ed8 gcc/doc/jcf-dump.1 +-2eda016cb2dc96aef40b2fc1836322ff gcc/doc/jv-convert.1 ++6412c50b5b8f48e9b021d3ab0e61bf54 gcc/doc/jcf-dump.1 ++b12d89ce7c5397e8d1808e21750505a8 gcc/doc/jv-convert.1 + 01b0dc3ad11961d7eab2d299d15e9672 gcc/doc/languages.texi + 368c6334d0fd27a14c988b146cb70bcb gcc/doc/libgcc.texi + 745ce3259344c93de861035760bcae0e gcc/doc/loop.texi + c872dbbc53a21bea59fe7023a44ddada gcc/doc/makefile.texi +-e00e32fdf6a30b8541979ab20f01e88b gcc/doc/md.texi ++69d2763eb1f27f036020dc4550e2ca73 gcc/doc/md.texi + 917011c981ebab7db6bbb9fa79e0d941 gcc/doc/objc.texi + 8cdcdfd9e69b36701146a06ad8f3c283 gcc/doc/options.texi + b14876846befb2825918fa39478fb107 gcc/doc/passes.texi + 4c446a02db2c22a0b9d4aed74e266472 gcc/doc/plugins.texi + 72136dc6e58c1bb1790f0f25bbaf8897 gcc/doc/portability.texi +-521947b9b4ed7539f4cebb4c81fd0f9a gcc/doc/rebuild-gcj-db.1 ++b6f5e7594f347e27189da9b0d3f4c8ac gcc/doc/rebuild-gcj-db.1 + 8b2f70f5500f648bff98c2e207e098aa gcc/doc/rtl.texi + d65d49dcfee4f97f1aea81855a0c20d6 gcc/doc/service.texi + 2e07b7717108585df2ebdba57d971713 gcc/doc/sourcebuild.texi +@@ -4242,7 +4244,7 @@ d65d49dcfee4f97f1aea81855a0c20d6 gcc/doc/service.texi + f8917869d5f9a5a25fa084f8ac026895 gcc/doc/tm.texi + 38595a90311508099614e7a7e4e4afad gcc/doc/tree-ssa.texi + 1475027396d2a227a2319b567ec28601 gcc/doc/trouble.texi +-807f274f83d99a476ce4f4fc5f398d23 gcc/dojump.c ++f320625e0aee6af0584872974f5228fa gcc/dojump.c + dfe6c3f29fa27b1fbb0171ac1393d0b4 gcc/dominance.c + 242f51489a0676031ad163fd99a6629b gcc/domwalk.c + 79f0d5df1c6564155509816fa0019047 gcc/domwalk.h +@@ -4253,7 +4255,7 @@ c4c00e23a5a55483021eff45ad225763 gcc/dse.c + 3fc93c5f23bb4c02722283187c1e4698 gcc/dummy-checksum.c + 04422d9823daea83c57d8c9532d6e581 gcc/dwarf2asm.c + 558866ea8fb551d638a697829991c081 gcc/dwarf2asm.h +-8bb75b6140b735de0f15e8c27d9e2e24 gcc/dwarf2out.c ++1916c9b124eb0f289bab03c570cabae9 gcc/dwarf2out.c + 80131a4655c4f50846be97b978f59fb6 gcc/dwarf2out.h + 474b7fa1f5dcd77c7acf5e1373c69062 gcc/ebitmap.c + 5aede90d7380412cbc9521027ec7c6a9 gcc/ebitmap.h +@@ -4269,14 +4271,14 @@ c867dfc8f5c7aed6e6160d6bfccc191a gcc/et-forest.h + eb8ff32b26b4e6891e6aa228270958b5 gcc/exec-tool.in + d1e63a2727339dc15cee7b97e4c7dd66 gcc/explow.c + 74966bde3f6bba77964381eb56591c5a gcc/expmed.c +-820d8ef6d3a1a1a7855ccab5a20ea553 gcc/expr.c +-79b459858279f06d9b3fc400c9309002 gcc/expr.h +-b802bcc3f0a24a0b14c30d1113f81d1f gcc/final.c ++3a2c64db7e32bb35897f923986bca727 gcc/expr.c ++a09670d088e33e4d442de0dcdfd0455f gcc/expr.h ++6cd856767ae56d79b600313f905cf91d gcc/final.c + 34a29ac013b6e44a67e2de58447dcbf0 gcc/fixed-value.c + f57fd99a821089eaf00eb7374a49a38e gcc/fixed-value.h + c1283cc39ed90c020b4f1ea101341d8c gcc/flags.h +-da90da714ea4f000817dcdefad6f85b2 gcc/fold-const.c +-dd3513ed6bc4f74de269b187ca83cad5 gcc/fortran/ChangeLog ++57cb05105d30bd88d354bd5bb69994bb gcc/fold-const.c ++3aaeea849d6e4558e02ce37c38a5516a gcc/fortran/ChangeLog + 3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002 + d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003 + bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004 +@@ -4298,24 +4300,24 @@ a06dcc01313f6ca3c5599d927532832c gcc/fortran/cpp.c + 99e48c3aa20e155f0d6d4320d74faf77 gcc/fortran/cpp.h + 73efd78c304b9eb39487e93eb7acf333 gcc/fortran/data.c + 0aa9443da916c0d6fdee7f808f5778ac gcc/fortran/data.h +-74473cc621172af8c6ee5995d12cd5cc gcc/fortran/decl.c ++e94829837d1b897fe792aaa629eb05e2 gcc/fortran/decl.c + 4d0a89566c43e189a3de957e1cf6adc2 gcc/fortran/dependency.c + e115b5c303a340fdb41109a739622308 gcc/fortran/dependency.h + ce946f99d347d0c0d47b9428cc3798a6 gcc/fortran/dump-parse-tree.c + 422b627f0d8143a0757c7b285c81fd57 gcc/fortran/error.c +-208595a7f06282b4e83359b7f078259d gcc/fortran/expr.c ++bea85afdf686192c5f6dcad701d1f34d gcc/fortran/expr.c + 2e201548ca8886cfc1bc88cfefd59bd8 gcc/fortran/f95-lang.c + 42da77d9340361600ff5b6c832cfb033 gcc/fortran/gfc-internals.texi +-c102257241663fb6362ffd2c735e5cdb gcc/fortran/gfortran.h +-6cda835379f6a39a15db79a6c13238cb gcc/fortran/gfortran.info ++0b277a9b7a3b1b0ec2e7fd2f33918145 gcc/fortran/gfortran.h ++293b45b4c5900b13df7a8a391ef99995 gcc/fortran/gfortran.info + 464ec7c2b8e6620a939ede4f4615a850 gcc/fortran/gfortran.texi + 2da211bbe9c6e6cbfd625a0730777bcf gcc/fortran/gfortranspec.c +-c1804edd27e05b3ceecdc6bdef8b68ab gcc/fortran/interface.c ++c54e1c5512ae98a40fb5edd1d0f47872 gcc/fortran/interface.c + 3121fd24c3bf7b5758b773a1cb45a76b gcc/fortran/intrinsic.c + b2016ca84d88ee5ede32219c76176735 gcc/fortran/intrinsic.h + 2357a8a9a1ea183bb139bcb89840b6c0 gcc/fortran/intrinsic.texi + a9439f169bb6609279e7345854ffe543 gcc/fortran/invoke.texi +-b923f606ac5c3baa6ddf829050fc61e3 gcc/fortran/io.c ++e2053274c90893e73be095dd64dc945d gcc/fortran/io.c + 9e6e56abc8c6aef5fb8e17d7f6701cef gcc/fortran/ioparm.def + 1e444bb32b6a8768be480adf00e6f623 gcc/fortran/iresolve.c + 40579050bcaad08faeb249ddd546b12f gcc/fortran/iso-c-binding.def +@@ -4334,7 +4336,7 @@ c6761cffbaafb0dad7081ffaf247adb4 gcc/fortran/options. + 16291ab9d87149e23f13dc87e99c7031 gcc/fortran/parse.c + a830548ad8d53b7d749ad7905f8a4b58 gcc/fortran/parse.h + 6d855463ebeb699964054fda9ecbdd9f gcc/fortran/primary.c +-9f05ee80af0851b998ce7dff4d1916f9 gcc/fortran/resolve.c ++bcbb2e72f2eeef917429b6887250fde7 gcc/fortran/resolve.c + 48cfc395cee5fd888dbed410936bbed0 gcc/fortran/scanner.c + 0b1e91ac07a9391b3372438215a5ecab gcc/fortran/simplify.c + 74e09a0d9e735c9720c626d1596a7a42 gcc/fortran/st.c +@@ -4343,11 +4345,11 @@ ae336340c083a44ae9e79e6b5443c969 gcc/fortran/target-m + df82f531d1b8f830672798edf1d7f313 gcc/fortran/target-memory.h + c3d79399713f59c6655fbe725f14ff50 gcc/fortran/trans-array.c + 7396e6c3f23f72a5bad678378066083a gcc/fortran/trans-array.h +-ad5683e9fcb539028da0bc64752b37d7 gcc/fortran/trans-common.c ++00916ec8bd5aec242773426def977811 gcc/fortran/trans-common.c + 42e8d7b8851d1511533ac3805f379af7 gcc/fortran/trans-const.c + 8261a38a3863797872c80e778abde7c5 gcc/fortran/trans-const.h + 06f0ba791b06e7fbed59e71817b3357d gcc/fortran/trans-decl.c +-323ac99469ec593de4afd62731c3d7ed gcc/fortran/trans-expr.c ++18d3039c76687f1eafef25dac7510451 gcc/fortran/trans-expr.c + 0865d3a3bd4ad7195f68f365780513e5 gcc/fortran/trans-intrinsic.c + 953b8fa2c92b0c0dd22df80a9dedd9b2 gcc/fortran/trans-io.c + a624342756792e5f4cf9e24ca1063f95 gcc/fortran/trans-openmp.c +@@ -4355,13 +4357,13 @@ a624342756792e5f4cf9e24ca1063f95 gcc/fortran/trans-op + 7e2457f283e5d1ca35927d9033d6c237 gcc/fortran/trans-stmt.h + ae6fc71e911a737535a599c4d40843a9 gcc/fortran/trans-types.c + 5e8e58185089d2b938593c27e5989ecd gcc/fortran/trans-types.h +-7eb1486993dcdb8f25dab6a9847bb226 gcc/fortran/trans.c ++e3b869eb5a94d5aa1f2f4bafafa0aed0 gcc/fortran/trans.c + 36ac0de61fb6f1224fea0cb3743c779c gcc/fortran/trans.h + e83cc8321fe62c08e6d975eaece78b64 gcc/fortran/types.def + dcbfb5f59aa7c840c77285967d94c409 gcc/fp-test.c +-4bd6abdbf1a5ef0181f0d0dbd59fab0b gcc/function.c ++d2c3063e68499689e03ff6bc5a463519 gcc/function.c + 790cf139fecc7569ffba619c8950bb50 gcc/function.h +-dd1ee8d2b665a5933f3f41d32788b543 gcc/fwprop.c ++e8e6a69cccf23e1f827ed8e32eee54dc gcc/fwprop.c + c8f78bf1dbb8541ac3d45ae8be3d891f gcc/gbl-ctors.h + 09d17600f6a93e64cb3056277c45b9af gcc/gcc-plugin.h + 6b96886ec28371582b56700c83a18f5e gcc/gcc.c +@@ -4371,7 +4373,7 @@ d0987235c84f3b6dc366e9c12aa0adcf gcc/gccspec.c + 6cb5ab08ad73dcbf163f1ea9d7bcae8e gcc/gcov-dump.c + ff8326072ca4008686bcef27bffe60e5 gcc/gcov-io.c + b4f5e529d44c9f0b00663cb58cbf0866 gcc/gcov-io.h +-270dc7fdad3f0bbfbb49fe93f32cc239 gcc/gcov-iov.c ++c8bc63ea087dccb47598eb1765069763 gcc/gcov-iov.c + fe1299d2cc2319a2e256c9635ae544d8 gcc/gcov.c + beec452078f1533a4cfb5efc18b2954f gcc/gcse.c + 3cb8360ec3781362095071afd1c67102 gcc/gdbinit.in +@@ -4388,7 +4390,7 @@ c963caabf15da82d19145c6057f5fa7d gcc/genemit.c + e6298d4d72f836fd8bc2dfddca6ef3d4 gcc/genextract.c + f5bff7fed57ff3ab5cf7c8a72f36de36 gcc/genflags.c + ac69af0b2bcdd35b25174278ccd40aca gcc/gengenrtl.c +-a36baf94f4f3ff27b4bc5bf43f6c938b gcc/gengtype-lex.c ++dda097cb3eba5520d747db5902ee9623 gcc/gengtype-lex.c + ad24c7b461b0e75ee40e733b5a9d6ccb gcc/gengtype-lex.l + 277569ea0aefc259b6aa5ae0b966101e gcc/gengtype-parse.c + a4b0bf09812c1108f065038bc7fab698 gcc/gengtype.c +@@ -4414,7 +4416,7 @@ f5cd68060a5603e797aac306bdacd221 gcc/gimple-pretty-pr + fd9b54ec4b615172be7116e444bcb9bf gcc/gimple.c + 0ab4a2d770043fe0ea7326df0445382d gcc/gimple.def + 2868e30be5dccb2a290f9fadc5b60f17 gcc/gimple.h +-055f10e02acf06a814ed158cb40467f8 gcc/gimplify.c ++83ea1aa27a8370597c87c0476d4d49e2 gcc/gimplify.c + b3220d6ec518f1daa75b938e8cf0e203 gcc/ginclude/float.h + 798164dd63bdd388c276bdda934db337 gcc/ginclude/iso646.h + 6a912263540a2dfa8d258931158882d5 gcc/ginclude/stdarg.h +@@ -4476,7 +4478,7 @@ b1a7b8b0c37373cb8c534cbf0428f12f gcc/hooks.c + f11c5e848450fadda50fac2c6aeec00a gcc/hosthooks-def.h + 2cff45dc40074424bcd2802ed2fdb175 gcc/hosthooks.h + 1f920e0004da21efd813586fcf4ce5e3 gcc/hwint.h +-2f6bb316e3389b3fe214c048ae249cc2 gcc/ifcvt.c ++475fdc8bc21175b9ff90c37b5337bb19 gcc/ifcvt.c + d20f99a265083adeb70c026db14a7edc gcc/incpath.c + bb322f9a267105c69a1b6bea367de2a3 gcc/incpath.h + 6938ee04100db3b30a19082eb0f4c66b gcc/init-regs.c +@@ -4489,7 +4491,7 @@ c0a1d7f2937c215c3056676771ff7fc1 gcc/intl.c + 7c97b2ae48706809ea6c5d02fe74db76 gcc/intl.h + 898e40a5e6dae9387f0f1b4a19cc46e7 gcc/ipa-cp.c + 876b2e3330e8171d421cf8cb6c4bf9aa gcc/ipa-inline.c +-22c2919926ab6263acf6d19c5a1926e8 gcc/ipa-prop.c ++aaee83c0db51dbca66483076b943e0c5 gcc/ipa-prop.c + f4855d00b3860b1389daf7b67411fc4a gcc/ipa-prop.h + c962dacb70722090881ae51498e20809 gcc/ipa-pure-const.c + fc448a5f6589abc8585bb638c30fcbcb gcc/ipa-reference.c +@@ -4510,7 +4512,7 @@ f74b88365c09c2f0aef5a0b2732b7304 gcc/ira-int.h + 03ce17ad27f96992688a333d939629d9 gcc/ira-lives.c + 121fd39edf36a62fd7d2e96ddfe19816 gcc/ira.c + 04d4e8e08466be83d994baef14932048 gcc/ira.h +-e7841caf33758f372d6dfd18f0ff9a87 gcc/java/ChangeLog ++54302fc1d7c4e29d49657c15705e3f06 gcc/java/ChangeLog + 3becfaac793f49e1f52cd74e78172b48 gcc/java/ChangeLog.ptr + 32ebed5cdcf7881894c85752621f10b5 gcc/java/ChangeLog.tree-ssa + 0f8f7b0aba55433f835be78be28ce5b3 gcc/java/Make-lang.in +@@ -4572,7 +4574,7 @@ ac686ea52ec7b96e0a20b49ffc8a077a gcc/libgcc2.c + 83de5c6450456e215a5484083afcd32a gcc/limity.h + bee65a3b96999c33babc4e9b6ec41bb2 gcc/lists.c + 6ed8ce261dd4a986da6ca2452dd12f8d gcc/longlong.h +-37ede3042f0bc1318008da4a7c90e46e gcc/loop-doloop.c ++f707f7a196155fb32c1657dc406d897a gcc/loop-doloop.c + 65fc615ff154658a2cf755b5f143616b gcc/loop-init.c + 7abed9a788857597f51d53c0e7a26e7c gcc/loop-invariant.c + 812848acddef1ce04fa729f54d2a746f gcc/loop-iv.c +@@ -4582,17 +4584,17 @@ bee65a3b96999c33babc4e9b6ec41bb2 gcc/lists.c + 21335199bd11da8f3a079c5981c73545 gcc/lto-cgraph.c + 2cc01a6c634c6970711744aec1f13d65 gcc/lto-compress.c + 59a05eb75c837c5411ca81b5dc06c84a gcc/lto-compress.h +-72aba75d129ed987c386f42cb238725c gcc/lto-opts.c +-c8c2671c5ff4010b8ac5ddb3f460c09a gcc/lto-section-in.c ++f9ed75219e029d8eb7e824a5df269aa5 gcc/lto-opts.c ++6fbc9f78688e7e71e6559b007acb314e gcc/lto-section-in.c + d30e20f1661a1bcf895d915af8ee2d8b gcc/lto-section-out.c +-38ecfd2b83be278b0e3c63e7657d9893 gcc/lto-streamer-in.c +-e1f55c3399a8fc7835edac0000af0355 gcc/lto-streamer-out.c ++dc8c403bef8b654a62f1f030932e6c3b gcc/lto-streamer-in.c ++efdbab342212ec45c93be6f8f3cbf7ea gcc/lto-streamer-out.c + 657ba1dfb59654cd748a14b416db0c87 gcc/lto-streamer.c + 10d410ff514284c2ff217d9258b4d583 gcc/lto-streamer.h + 4cb27b5524bb8e16a0f124435d9d977f gcc/lto-symtab.c + 3ae3c82a5e55d66627eda0f1f0d6e0c3 gcc/lto-wpa-fixup.c + 0cc6d8505ce0477deceb0cd2fd8dacee gcc/lto-wrapper.c +-a1d227b0a078151dcd955f397ced8d9f gcc/lto/ChangeLog ++de7bd0bf5c6b045f5c8c7bc66c175df4 gcc/lto/ChangeLog + d40428c72b0f5790c0f4ab74b165e16f gcc/lto/Make-lang.in + 7a4827ad581d24ff7a347529172457bd gcc/lto/common.c + 572c5df0f085119d1988630e6b08e0f9 gcc/lto/common.h +@@ -4607,8 +4609,8 @@ d64f3f14e274a263ea9787c269be039f gcc/lto/lto-lang.c + a7197c778a5ee7011357f2a3cde4831b gcc/lto/lto-macho.c + 5276748288980f816d4d13996ba95e88 gcc/lto/lto-macho.h + 05523f24f8a1f7cd4f42ea4da37f03f9 gcc/lto/lto-tree.h +-6a8c61d3932cbf2da38d0852a6078a8e gcc/lto/lto.c +-f8dd0278e48674e11402c8417509b975 gcc/lto/lto.h ++483ce2d769f29bbd467f6d1a5aa40906 gcc/lto/lto.c ++95d2fc794612cc5c3c2a958914d59402 gcc/lto/lto.h + 6b305c62e5ffb4464157a05cba3f3429 gcc/machmode.def + ec4edb5e0fae199947462426835f2991 gcc/machmode.h + 6a4899b65f15b778306b3737e277e6c2 gcc/main.c +@@ -4622,7 +4624,7 @@ c02cbcfea675f6b2b83ad4225a181986 gcc/mips-tfile.c + 2569a0ab9b2c9f2c2b8e980aee6fbbe3 gcc/mode-classes.def + 8fccefeebc82ff915ece0edeb04c8670 gcc/mode-switching.c + b457123c5a4246f23ebea39b556d6981 gcc/modulo-sched.c +-d19da7f147c7a0e9d2e091750bf40b6b gcc/objc/ChangeLog ++f223e80ed91ec3a2cfeed2cc4867d26f gcc/objc/ChangeLog + 019095b8d355b66bfa2e4d81e00e2bed gcc/objc/Make-lang.in + aa5319dd541cdb0eb8622f9adf66b761 gcc/objc/README + 079d3dc27e9567936ebcc70e9662b3c8 gcc/objc/config-lang.in +@@ -4631,7 +4633,7 @@ aa5319dd541cdb0eb8622f9adf66b761 gcc/objc/README + 6665874eae63d7ab5a3b092657c9af3a gcc/objc/objc-act.h + 42662d5d9a25fc2b097fc81c392fe735 gcc/objc/objc-lang.c + 6779d586f851c44361fe2884d2d9192c gcc/objc/objc-tree.def +-659b6ba9747ea71667dc1a826e28442f gcc/objcp/ChangeLog ++ff4dea2acceec8fb2d1e2b29ed6dbea6 gcc/objcp/ChangeLog + f5077c9b3f8343b4ad79fb97020d3afe gcc/objcp/Make-lang.in + 871a47a5d40ed19c0d393bb1a52229c2 gcc/objcp/config-lang.in + b69e6fb8f98a0eca7d27309f950a6974 gcc/objcp/lang-specs.h +@@ -4659,7 +4661,7 @@ e0a751cb72165fddeab312b230727811 gcc/passes.c + ba9b5a45a34ca1e8191db58120ea443c gcc/plugin.c + 3d30527cefb69b5cd6c84cabdc080df2 gcc/plugin.def + 1caa64fb1bdf511405aadcf4ea68ad05 gcc/plugin.h +-00e1f9001b61e812d609f35ca8a1a264 gcc/po/ChangeLog ++8cc4fec5bf9270d3ee23d9a43197fb94 gcc/po/ChangeLog + c72960a6dc552861312d1e660c31e4a1 gcc/po/EXCLUDES + dc2ca10e5e33e192be66977788906f0d gcc/po/be.gmo + bf63bdcb43b0b3312147bb3b6d0ac702 gcc/po/be.po +@@ -4710,25 +4712,25 @@ eff034b1b03a4e218f73465312d1b08f gcc/prefix.h + c1cffa7f76d39b2334904c8974386371 gcc/pretty-print.h + f4b00c27947507c74d5dc7290e3acacb gcc/print-rtl.c + f7ea7e4504971cf5a3d675868f7876c2 gcc/print-tree.c +-2f05eaec959cc996133145793b773fcf gcc/profile.c ++cb3eecd653fce623456abb009f6e5796 gcc/profile.c + 352410fa9de113473a4e5d65d6bff7a6 gcc/profile.h + 4e75dc40ba439ac58fef4b958de10c31 gcc/read-rtl.c +-300143a8afb427bb7c9206b365cdd251 gcc/real.c ++1837902db7185c8f27f22247f98de4a4 gcc/real.c + c97cea890c9c098a1778f863c88ef234 gcc/real.h +-5bed9951dbb79fc31da5289f32150b45 gcc/recog.c ++391a8e4f6f14c7b0f643ea9d2ed35b38 gcc/recog.c + aa126af5f57bb0a3478390652c32c3a1 gcc/recog.h + 51e21c0bae09ccc1bd253f9b62ec806e gcc/reg-notes.def + 5ca8ce5b632a18dc34c682554cb98286 gcc/reg-stack.c + 938d9a4c3d87fe60d062e77df49b44fa gcc/regcprop.c + cc414900237d541552412a787661bd17 gcc/reginfo.c +-1b8eec91b7a79aca30a162f5779933e4 gcc/regmove.c ++4ce11e69dc17a38faf4c291effa3b183 gcc/regmove.c + 4d8ca26aa5ab490b59fb48a0c3f9fefe gcc/regrename.c + 2859890f05ec0e318bfa06fdabed774a gcc/regs.h + fec5b9d9102dad65fa62ba3fcb472ff1 gcc/regstat.c +-f6903f10e9b666dbd3365475b6209294 gcc/reload.c ++aa570950a553795fc5eb0abc8446f25a gcc/reload.c + dd93a6feae6f54c92f8d3fad496af713 gcc/reload.h +-79868f5cb1f0ae06d5649aabfa70f6fd gcc/reload1.c +-4ab4c36a79ab8bdf540c0d30b9d437db gcc/reorg.c ++88c9e217d02bf405850cb27d55488a36 gcc/reload1.c ++fe023e80de8b5fa78f67f315dec5ae77 gcc/reorg.c + 544efb3416890a8a7afc85420dcf8de6 gcc/resource.c + 0cd56c90f997f89c4ae73cb37a4b5d52 gcc/resource.h + ff8319b1fdf1fc359d7d75b3ca90bbb8 gcc/rtl-error.c +@@ -4765,7 +4767,7 @@ cd7d6d8dffb6ca3094d690e109f65269 gcc/sparseset.h + 676a1d90be632e3095720341b2cf2616 gcc/stack-ptr-mod.c + 19759c16f6aa95170ef62ed45283c3c1 gcc/statistics.c + c8abb3f3323eac8780b7df9a60294b16 gcc/statistics.h +-f3d5d650816b56008506af576bcd30c1 gcc/stmt.c ++77cdaa3a1954335a5b3f8899b622f3d2 gcc/stmt.c + 2340dfe70054fb18da6e74b9f7afa6d8 gcc/stor-layout.c + fffa1f285b207cde035311164462ae0b gcc/store-motion.c + bb95ebc7a9beb598eec859cb992edd76 gcc/stringpool.c +@@ -4776,7 +4778,7 @@ a4083832b9ee7ba9cd90a31d07c17ac4 gcc/target-def.h + 7e07a1945b7962ba3dd2e165d94b98fc gcc/target.h + ecf21279f1a2608cda1d036c447c2a04 gcc/targhooks.c + 354021a929da6c011ad30c4960e934ec gcc/targhooks.h +-9f7931235fc433b6d69ee020c28f31b8 gcc/testsuite/ChangeLog ++6b434e0d313115058005b54d390f5da5 gcc/testsuite/ChangeLog + bf09a3a4b2844c1427e18133bf8c4848 gcc/testsuite/ChangeLog-1993-2007 + 0cfd18f5e11308d47955263801f31753 gcc/testsuite/ChangeLog-2008 + 31f1e2e69afabe472403fa35f4718c35 gcc/testsuite/ChangeLog-2009 +@@ -4790,8 +4792,8 @@ d7224c3fb0b05833049cfa56f412ce04 gcc/testsuite/README + 5794a860cfcbee663fe76cdde0c7b0f5 gcc/testsuite/ada/acats/ada95.lst + 4004844198395fe50ecb798ed5d30f4b gcc/testsuite/ada/acats/elabd.lst + bb4e4f9d3c0e72730e0bf397d375689c gcc/testsuite/ada/acats/norun.lst +-d5748b449a081324237ae22a21f32a3f gcc/testsuite/ada/acats/overflow.lst +-03c4b32d543e3915e74187922c521212 gcc/testsuite/ada/acats/run_acats ++17a66c0b337fb03b6f449227ed33297c gcc/testsuite/ada/acats/overflow.lst ++89d78b2267a12b1d99f90946e3ec2b22 gcc/testsuite/ada/acats/run_acats + 86f702a649914827433bcaec1a34b7fe gcc/testsuite/ada/acats/run_all.sh + 6467abb463602aeb04583b3822f653f4 gcc/testsuite/ada/acats/run_test.exp + 5723a26fced8721c3e90e6e7a9ba2a23 gcc/testsuite/ada/acats/stackcheck.lst +@@ -7484,6 +7486,7 @@ b7b47baf0eefc44ea18b3fd4f3ec1f7a gcc/testsuite/c-c++- + 87edf7a633ed33acea1114b550edc33b gcc/testsuite/c-c++-common/pr42674.c + 8dbc3891adbb8c401bc580982af3d5d7 gcc/testsuite/c-c++-common/pr43690.c + 120b592aa97ef9bb93a55a83c6706437 gcc/testsuite/c-c++-common/pr43942.c ++18b60e1f921ff729a499063148e1ac35 gcc/testsuite/c-c++-common/pr51768.c + b0ba836310044e7b419ef679f0b48d6f gcc/testsuite/c-c++-common/raw-string-1.c + 554e7071d2525351de28445762633866 gcc/testsuite/c-c++-common/raw-string-10.c + 1183cc89c3223291d7813cf8d78ef4d6 gcc/testsuite/c-c++-common/raw-string-11.c +@@ -8132,6 +8135,8 @@ e21108436dc5ce57312ddc9a096ec2db gcc/testsuite/g++.dg + 96e51d00f882d1f43b035d7c6b88a69a gcc/testsuite/g++.dg/cpp0x/pr39639.C + 2dd310aa31b211b87c38209f2ae84388 gcc/testsuite/g++.dg/cpp0x/reference_collapsing.C + edfc9b308544c77eeecbc033e166eae9 gcc/testsuite/g++.dg/cpp0x/rv-cast.C ++2e0bb1d28d2748f848a8b3e9a5e95637 gcc/testsuite/g++.dg/cpp0x/rv-cast3.C ++f9b7e932597d55a4496c547972c90934 gcc/testsuite/g++.dg/cpp0x/rv-cast4.C + 4a1d911674849aaf2afae9f3e27c4a95 gcc/testsuite/g++.dg/cpp0x/rv-deduce.C + 02ab2ee7cc221d0f5f3f7599f4e93dbd gcc/testsuite/g++.dg/cpp0x/rv-reinterpret.C + 31a03c515e497c0cb6ff73eab6602307 gcc/testsuite/g++.dg/cpp0x/rv-return.C +@@ -8374,7 +8379,7 @@ a26a24dcac8fa1d56d36002c9551d274 gcc/testsuite/g++.dg + 9b015014257af56d73a48e0f2e546d29 gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.h + 34941d0e46c36878c4c08a907bcce93f gcc/testsuite/g++.dg/debug/dwarf2/fesd.h + b899bb3263f62cdedb9ac1f07a21fb7f gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C +-1a20c5cb038428b690d213496fbd0e90 gcc/testsuite/g++.dg/debug/dwarf2/icf.C ++748fad6a207fa06c4de8354af6d2afe3 gcc/testsuite/g++.dg/debug/dwarf2/icf.C + 94ab24c4c92e0025c8c21c00e7088ab9 gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C + cd2f8eb018e0f3274a839788f6516dbd gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C + 00073dddfb84caf2285834b264334fb6 gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C +@@ -8436,7 +8441,14 @@ de7626032b99ed0b36b4dc7fb3f18f9d gcc/testsuite/g++.dg + 06ba44c6640fe57a83e614bcb293ca4d gcc/testsuite/g++.dg/debug/using2.C + e3e47848d7edc7d04e996db8969c01c0 gcc/testsuite/g++.dg/debug/using3.C + 9ddce3a837af3a01b33e86ac89b2a282 gcc/testsuite/g++.dg/debug/vartrack1.C ++8fa7fae0969ea145d6ebdf95f4553797 gcc/testsuite/g++.dg/dfp/44473-1.C ++f7911d011adf83fd1a3094b207cc374e gcc/testsuite/g++.dg/dfp/44473-2.C + 5cbc124f57f7f18d5247a117a8415ff0 gcc/testsuite/g++.dg/dfp/dfp.exp ++5f86222754bb4d7342a35eb92499419a gcc/testsuite/g++.dg/dfp/mangle-1.C ++c0592e7184d9390b10cd93d3b6f1f7a0 gcc/testsuite/g++.dg/dfp/mangle-2.C ++97de1869469f8592b096b761b6a2cceb gcc/testsuite/g++.dg/dfp/mangle-3.C ++becc0e6f064af285a504ff10eaffc525 gcc/testsuite/g++.dg/dfp/mangle-4.C ++5899dbb591a164000821a0ac993fcd47 gcc/testsuite/g++.dg/dfp/mangle-5.C + 8b4d16a77a1edab85ee4c99fda03eb79 gcc/testsuite/g++.dg/dfp/mangle-mode.C + cd0133a632a541db051ef84d53754ac6 gcc/testsuite/g++.dg/dfp/typeid1.C + a14ddc8026a6c405bce178492b183c96 gcc/testsuite/g++.dg/dg.exp +@@ -8466,6 +8478,8 @@ aa6038fb3f955b6019e1a056cca60f0c gcc/testsuite/g++.dg + bd6bd3cc57144658b6137dc9123743ed gcc/testsuite/g++.dg/eh/cond1.C + 9218246502a1a48c13f74d67b4b19c2d gcc/testsuite/g++.dg/eh/cond2.C + a52fa6cd93c130963df8e930451d74a1 gcc/testsuite/g++.dg/eh/cond3.C ++8d0d0d1daa7ce211b24bfa05d2bcc16c gcc/testsuite/g++.dg/eh/cond5.C ++e2de0bdd91c75a83e86d8e423986c99d gcc/testsuite/g++.dg/eh/cond6.C + 43098e3dd291c59e61245771f6e306d0 gcc/testsuite/g++.dg/eh/crash1.C + 365a9a74302377cb0e82e7f5f1a7bca9 gcc/testsuite/g++.dg/eh/crossjump1.C + 86be24a4005519ed1d807d772b94a617 gcc/testsuite/g++.dg/eh/ctor1.C +@@ -9108,7 +9122,7 @@ d2a31eb19f78eba07ebeb256b409141a gcc/testsuite/g++.dg + 1a7816a666c363e8410710411e40ce26 gcc/testsuite/g++.dg/ext/weak3.C + 165f4d1a12237b9ed8273a7db5e4299e gcc/testsuite/g++.dg/func-args-1.C + ed8a6c94f1bc2e70a324d73a77190040 gcc/testsuite/g++.dg/gcov/gcov-1.C +-8a878271fda0c051fbf0d23ab78d7afe gcc/testsuite/g++.dg/gcov/gcov-2.C ++afab866e59f46409fb68aa64174f3acf gcc/testsuite/g++.dg/gcov/gcov-2.C + 0e241a16c3faf2f0c387bd2978d2b824 gcc/testsuite/g++.dg/gcov/gcov-3.C + 2c83bff9a3f14aa6fc5d7755bf82c9b6 gcc/testsuite/g++.dg/gcov/gcov-3.h + a7c093e32d8e0cc08e02c3253748979c gcc/testsuite/g++.dg/gcov/gcov-4.C +@@ -9479,6 +9493,8 @@ ccfb55277b45e67e6b5a86c7f05fd0a8 gcc/testsuite/g++.dg + d20a83f8968c6c9a1d648762dc1a9e2c gcc/testsuite/g++.dg/init/new26.C + d5a5bcf8bba7f46ab8feba49e73be0f0 gcc/testsuite/g++.dg/init/new27.C + 2326f60a4e882ff67a8dd2802f7a0b8b gcc/testsuite/g++.dg/init/new3.C ++fb29671d73953facd665408d3e39029d gcc/testsuite/g++.dg/init/new30.C ++f30d722e5e54dd454d89dcda7f983e4e gcc/testsuite/g++.dg/init/new32.C + 19dcda79922ea7017c7e260394e77415 gcc/testsuite/g++.dg/init/new4.C + 30174c9a71d3d8e0fb35b9556abdea15 gcc/testsuite/g++.dg/init/new5.C + 6142030ce76d1ab9453ff0a223722577 gcc/testsuite/g++.dg/init/new6.C +@@ -9546,11 +9562,14 @@ a07f29cc13922f46ee402c672bab1763 gcc/testsuite/g++.dg + ca385abd9d6b36d0667c2ad521a0233e gcc/testsuite/g++.dg/init/value6.C + 4487271d3a3d8cbbe87a8aa0dee4b541 gcc/testsuite/g++.dg/init/value7.C + 8301ee378a2cddfa351a850b83e9542a gcc/testsuite/g++.dg/init/value8.C ++f486b963f0b6c68f60e277c5d3821f29 gcc/testsuite/g++.dg/init/value9.C ++b6b15a32222813d22fc13bb24c002c95 gcc/testsuite/g++.dg/init/vbase1.C + 75fa012514803aa0a98113ff8b7474c6 gcc/testsuite/g++.dg/init/vector1.C + 6a507132cbee807fabd3c9dfd0f81093 gcc/testsuite/g++.dg/init/volatile1.C + 181d03bf17027cab97eb47736f11ff30 gcc/testsuite/g++.dg/ipa/20090113-1.C + d190270f1bd1bec019768c3db19b8de2 gcc/testsuite/g++.dg/ipa/iinline-1.C + 8f31add58ec72eb54693c3a9f4769173 gcc/testsuite/g++.dg/ipa/pr43812.C ++c98ee8fcb28f00bc57648c866212963c gcc/testsuite/g++.dg/ipa/pr51759.C + f1339a059a53b8c932f6dd4870283209 gcc/testsuite/g++.dg/lookup/ambig1.C + fa1ea4ed4c9f1ae996929481bd6de67c gcc/testsuite/g++.dg/lookup/ambig2.C + 0e636168c26983f9ef884688bb4917e7 gcc/testsuite/g++.dg/lookup/ambig3.C +@@ -10254,6 +10273,8 @@ a8acf41a97484b62691a92779ee9fc71 gcc/testsuite/g++.dg + 17309afbd34e4b010edce7cdf8af0393 gcc/testsuite/g++.dg/other/pr42685.C + bd2f500fa5d566f920cd8ae804d20550 gcc/testsuite/g++.dg/other/pr42806.C + e18e3ba20f03468900780d327126e381 gcc/testsuite/g++.dg/other/pr43116.C ++ca769dda623fa2dd844c4edbcce22fc8 gcc/testsuite/g++.dg/other/pr49133.C ++36a8c3554403443884b8a9901e71ac7e gcc/testsuite/g++.dg/other/pr50464.C + fc6dc5d12ae16fd14b7d1c21901a935f gcc/testsuite/g++.dg/other/pragma-ep-1.C + 33d66b71d911896fb85b0b22e7b82bde gcc/testsuite/g++.dg/other/pragma-re-1.C + bdec0c9208af6ee3a9ab1f2c07d3ba19 gcc/testsuite/g++.dg/other/pragma-re-2.C +@@ -10371,6 +10392,7 @@ c63564a10a99acc084dd7ef3ab31e068 gcc/testsuite/g++.dg + dccd55557e6e7045693056e69f389dc4 gcc/testsuite/g++.dg/parse/ambig3.C + 76ecf42117442856a63d100b212722de gcc/testsuite/g++.dg/parse/ambig4.C + 3e11f2f44f4a6d2c5535cc0fc01d94b0 gcc/testsuite/g++.dg/parse/ambig5.C ++36aea4e7035d7a3c8999295f8524c8f9 gcc/testsuite/g++.dg/parse/ambig6.C + bc8c4ed875b2c4b0e6b1ec9bcec25d41 gcc/testsuite/g++.dg/parse/angle-bracket.C + 0befa26c74e8cbfa279f5b49a61408eb gcc/testsuite/g++.dg/parse/angle-bracket2.C + 4d4f8ace7c1f4d0f32bbd4530d5b07c1 gcc/testsuite/g++.dg/parse/args1.C +@@ -10800,7 +10822,9 @@ c5d8e192a40df804075de0b6e91dab89 gcc/testsuite/g++.dg + 32b2fbda29ffd2ac2181c43c971f3a7d gcc/testsuite/g++.dg/pr44328.C + 5f87750ba61c9001cac317e0f478021f gcc/testsuite/g++.dg/pr45112.C + 7d415c3f086a787fac9c43c2198e69a2 gcc/testsuite/g++.dg/pr47589.C ++91af1bf8e0bef02ef0fdef13fea1c20e gcc/testsuite/g++.dg/pr48660.C + ff03ae43e2f7b271b014ab72b2a538fd gcc/testsuite/g++.dg/pubtypes.C ++2bcb8e987d41c50dbd1de216296fd071 gcc/testsuite/g++.dg/rtti/anon-ns1.C + 7345c9463c7d47c7d425463846af6b14 gcc/testsuite/g++.dg/rtti/crash1.C + 34c4c8f1721c4f70c2261dcc1b0a7630 gcc/testsuite/g++.dg/rtti/crash2.C + afdb3cc7ece3c7c60179cd6d1819ab81 gcc/testsuite/g++.dg/rtti/crash3.C +@@ -11382,6 +11406,7 @@ efe778ec780ff5ae0b39781a917ca677 gcc/testsuite/g++.dg + 00bcc57cb7d33b0250bf5efd8de34dbf gcc/testsuite/g++.dg/template/nontype2.C + 523cd29e1a9c6006086eba2e934e53d4 gcc/testsuite/g++.dg/template/nontype21.C + 5d60f10438f4dc879514632ec85475d3 gcc/testsuite/g++.dg/template/nontype22.C ++d17e17b15018e6bc4a807c47ac6956b7 gcc/testsuite/g++.dg/template/nontype23.C + d6f9c639ea162b5b3e91a6a5d10175bf gcc/testsuite/g++.dg/template/nontype3.C + f725d274103ab74a7c16aa6087ab401f gcc/testsuite/g++.dg/template/nontype4.C + d37a5a77843c5b66c3d3566383b07dd6 gcc/testsuite/g++.dg/template/nontype5.C +@@ -11878,6 +11903,13 @@ f330bdf5883a6d3381a5cd9e818fa037 gcc/testsuite/g++.dg + e9209566e49c153d9b35c2088acde779 gcc/testsuite/g++.dg/torture/pr46364.C + 5dde3d0578e1439d9d3996d53c5837d5 gcc/testsuite/g++.dg/torture/pr47290.C + 2875f29910a1c9fceb2c3abacae94988 gcc/testsuite/g++.dg/torture/pr47541.C ++70a176c24f3b9e0ed32161bafd163296 gcc/testsuite/g++.dg/torture/pr47714.C ++66f4e88fb15a5c2f5a4fc2d591edff41 gcc/testsuite/g++.dg/torture/pr49039.C ++8fb5fa994e892c2497eac146b34e663e gcc/testsuite/g++.dg/torture/pr49115.C ++6aad70b4e5ba908ab559e27d7d2bbb1d gcc/testsuite/g++.dg/torture/pr49615.C ++70ba1d6e65ff77ad5205e068917704ba gcc/testsuite/g++.dg/torture/pr49644.C ++d3048456b731100c930825dba14b7667 gcc/testsuite/g++.dg/torture/pr50189.C ++20d6e47b06d4cb4840b9270432191e39 gcc/testsuite/g++.dg/torture/pr51344.C + 9832be91178ec7c78651fc4d49380a93 gcc/testsuite/g++.dg/torture/predcom-1.C + d28910105d9c9253d94d70eacd5e19d4 gcc/testsuite/g++.dg/torture/pushpop_macro.C + a1b47b9c3e69d79d1895ebc4fd11032b gcc/testsuite/g++.dg/torture/stackalign/check.h +@@ -12019,6 +12051,7 @@ b3721c1012726f86c682c19ffbad76a6 gcc/testsuite/g++.dg + 007849af5fbebd55266eebd5fd1bb02a gcc/testsuite/g++.dg/tree-ssa/pr42337.C + bf024d05ee739cc11776ea4df13e3e55 gcc/testsuite/g++.dg/tree-ssa/pr44914.C + 7b0e4882ed9e6e78fb17c21e24090631 gcc/testsuite/g++.dg/tree-ssa/pr46734.C ++5094da29aa7c6488a7c2dcc2ba809d4b gcc/testsuite/g++.dg/tree-ssa/pr49911.C + 2779bf65ef8edfc896b0cc13e0436b6b gcc/testsuite/g++.dg/tree-ssa/pr8781.C + 1774a3db4e8c1c639d06cfd8ba95990d gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C + 9d23f883289b6e7849e906dd1ed4d8d8 gcc/testsuite/g++.dg/tree-ssa/restrict1.C +@@ -14151,7 +14184,7 @@ c0116d02edfe6d83a6e0319b7ae43310 gcc/testsuite/g++.ol + ea73badcef0f5166a559e07a0c263a92 gcc/testsuite/g++.old-deja/g++.ns/using7.C + e592ac6b9789af1e806b4791c984da05 gcc/testsuite/g++.old-deja/g++.ns/using8.C + 10a3890377e72341f4119f4affe2c8cb gcc/testsuite/g++.old-deja/g++.ns/using9.C +-f240c597d516ae759a463ca75ed73f42 gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog ++1f38a5632decba19834b5631e24b0436 gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog + c17ab5a5d39a20786219d5cb72e8a956 gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C + d5a79bc5cd269747572d454134bc7e04 gcc/testsuite/g++.old-deja/g++.oliva/delete1.C + 8c0b3f49c2e5d5c224c1e0aae235e1d8 gcc/testsuite/g++.old-deja/g++.oliva/delete2.C +@@ -16324,6 +16357,7 @@ dfbc2317c7fa9d675ee5c2302422d2b6 gcc/testsuite/gcc.c- + fe23d373fefbb1f73641cf2629aafdf5 gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c + afe4aef5d3378c3de0bf57047eb44e18 gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c + 5b7186b86538dc952f4c95318fdce09c gcc/testsuite/gcc.c-torture/compile/limits-externalid.c ++343c8da201d51d668216da8ec65184f2 gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c + 36d72264f5e696b511dde1637d841085 gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c + 8e49c6924c93756d8f7e4c607a0c519c gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c + e654525b67ca3025d522d3690364a827 gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c +@@ -16575,6 +16609,7 @@ bedeae3f2189b9f6b268226148c3c46d gcc/testsuite/gcc.c- + b4651d0c349ecd2bcb188eddbb7b8036 gcc/testsuite/gcc.c-torture/compile/pr38590-2.c + 4126906ff73b1c74d327b6fce1abb020 gcc/testsuite/gcc.c-torture/compile/pr38661-1.c + dcf0de9e87fc97741fbf9f1e549b6d40 gcc/testsuite/gcc.c-torture/compile/pr38661.c ++a84ff8beff9d296a82f8e0512f122fc2 gcc/testsuite/gcc.c-torture/compile/pr38752.c + c346ba56b58065cbd9399d8d63cbff4a gcc/testsuite/gcc.c-torture/compile/pr38771.c + ad74256865d47cee818aa37d2a9d3707 gcc/testsuite/gcc.c-torture/compile/pr38789.c + a8f786ea32ae819c80540e1f7900990c gcc/testsuite/gcc.c-torture/compile/pr38807.c +@@ -16686,6 +16721,13 @@ fdfee78211e392b4d6eaeead7fd61491 gcc/testsuite/gcc.c- + 0acbcb472bcaee50f9586c3f5aa65f71 gcc/testsuite/gcc.c-torture/compile/pr46534.c + 36d04fc43ead7dde287d23d5918e89c0 gcc/testsuite/gcc.c-torture/compile/pr46547-1.c + 314a7c58d9497b0bb93d6865b49ccdbf gcc/testsuite/gcc.c-torture/compile/pr47150.c ++4265b14c49d9c9bd182258ac0f14b53e gcc/testsuite/gcc.c-torture/compile/pr48742.c ++80be411937e648306e295f2247a9ca87 gcc/testsuite/gcc.c-torture/compile/pr49238.c ++7070244f26aad0afcbea923e85fa6d9a gcc/testsuite/gcc.c-torture/compile/pr50565-1.c ++c6a0021c8f7300a681a9fe6ebb5a88ee gcc/testsuite/gcc.c-torture/compile/pr50565-2.c ++16b0c8db61d740e42ea3bee30160d1f0 gcc/testsuite/gcc.c-torture/compile/pr51767.c ++c509345d4477e53337ed96cb0eab445d gcc/testsuite/gcc.c-torture/compile/pr53418-1.c ++4386bbdff41f8c8d4fb66b5655199556 gcc/testsuite/gcc.c-torture/compile/pr53418-2.c + b9e6ce52b90320c1c3803c25113844c5 gcc/testsuite/gcc.c-torture/compile/pta-1.c + ed716c1d1727fc2c748162e0cbc4ee47 gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c + 8d869e3426345f0cf8837c5eaafd43b5 gcc/testsuite/gcc.c-torture/compile/simd-1.c +@@ -17161,6 +17203,8 @@ a1ec6e4bfca597b6bc8fae57d3b60211 gcc/testsuite/gcc.c- + 8c9a29fe3843c2aab2075c3c9006bc7c gcc/testsuite/gcc.c-torture/execute/20091229-1.c + 27aeeeb89a91b17af98d81bf871d2aac gcc/testsuite/gcc.c-torture/execute/20100209-1.c + 414137574ad2141ad2516adde2b82f7d gcc/testsuite/gcc.c-torture/execute/20100430-1.c ++e7d841d33d9831c1b277bcf34663fa10 gcc/testsuite/gcc.c-torture/execute/20120111-1.c ++a1428f0ef932744d76bf477d42790520 gcc/testsuite/gcc.c-torture/execute/20120427-1.c + 65f01ac7346bd4d47ed9c1ca94ab74ff gcc/testsuite/gcc.c-torture/execute/900409-1.c + 5aefab4daab0bd29ecf2a389f3c44f40 gcc/testsuite/gcc.c-torture/execute/920202-1.c + 655936aaf9a63e991a555cbc16738485 gcc/testsuite/gcc.c-torture/execute/920302-1.c +@@ -17351,7 +17395,6 @@ fbeb736f7cea1b233d24bfe61c2d12fe gcc/testsuite/gcc.c- + 96be1e5fff7d09902767847ca34f967c gcc/testsuite/gcc.c-torture/execute/960312-1.x + db2d64bf1d224055c2bfcd575cd0a85c gcc/testsuite/gcc.c-torture/execute/960317-1.c + 4b83a1d4a67ab5df67a907842c96a846 gcc/testsuite/gcc.c-torture/execute/960321-1.c +-814c63106ed73916979575f829419c19 gcc/testsuite/gcc.c-torture/execute/960321-1.x + 40f926583731a3bbbb07cba5c584dca5 gcc/testsuite/gcc.c-torture/execute/960326-1.c + 9fa59787835958f2b7e6a86f27a0cd62 gcc/testsuite/gcc.c-torture/execute/960327-1.c + 87037da82fb6e20eb6543f078e3204f3 gcc/testsuite/gcc.c-torture/execute/960402-1.c +@@ -17660,6 +17703,8 @@ bfc674571c4930cb05571e831c1a162c gcc/testsuite/gcc.c- + 38af67c89878cf408a29338d3b8461aa gcc/testsuite/gcc.c-torture/execute/divconst-2.c + b88415410e81b02068f1474a644bd707 gcc/testsuite/gcc.c-torture/execute/divconst-3.c + 0a0fc31962c133c8409a816cab6e4e88 gcc/testsuite/gcc.c-torture/execute/divmod-1.c ++9e5a753f71d6979559e6274f0b3bf1c9 gcc/testsuite/gcc.c-torture/execute/doloop-1.c ++bed9755f43cf6bcfe197ea6254515cc7 gcc/testsuite/gcc.c-torture/execute/doloop-2.c + 5e657aceefd7b81d4869a810c510818a gcc/testsuite/gcc.c-torture/execute/eeprof-1.c + 978629e412bb8a67a3521434b6937822 gcc/testsuite/gcc.c-torture/execute/eeprof-1.x + b75081070e5d6cda7c7fa71f2652e5c4 gcc/testsuite/gcc.c-torture/execute/enum-1.c +@@ -18016,6 +18061,14 @@ f4b3616d4d62cfceadbb1843b733d08e gcc/testsuite/gcc.c- + 509d36229d4008b8450961f8917cc772 gcc/testsuite/gcc.c-torture/execute/pr45262.c + f8e3e835fd02428b7245a6fe6cda897b gcc/testsuite/gcc.c-torture/execute/pr45695.c + a6c448a641aeef19f85bb710dcd30b1d gcc/testsuite/gcc.c-torture/execute/pr46019.c ++0e48f7bb32703063aa9ae53391d5bfaf gcc/testsuite/gcc.c-torture/execute/pr48809.c ++653452e08f703415c4e4eec62f149f6d gcc/testsuite/gcc.c-torture/execute/pr48973-1.c ++34871c5345a4c7b7638dd4f110bf2ba9 gcc/testsuite/gcc.c-torture/execute/pr48973-2.c ++4439ddb720f80a9d2207500217ea3560 gcc/testsuite/gcc.c-torture/execute/pr49039.c ++96aa139977a97bbd99506386dbf82db5 gcc/testsuite/gcc.c-torture/execute/pr49161.c ++9bc71de8a45aef7f2ae092a242334b07 gcc/testsuite/gcc.c-torture/execute/pr49186.c ++52c033534a63a27e079c2b6ed0c919bd gcc/testsuite/gcc.c-torture/execute/pr49279.c ++ce481e55a55f5dad6cd718b2e2dae542 gcc/testsuite/gcc.c-torture/execute/pr49644.c + ecfc31f12ce09d6ccbcced04ff04deba gcc/testsuite/gcc.c-torture/execute/pr7284-1.c + 89f3c7ee990221eeb33cb08a0772e024 gcc/testsuite/gcc.c-torture/execute/pr7284-1.x + f4610e3bba97324f7005c428fe41e597 gcc/testsuite/gcc.c-torture/execute/printf-1.c +@@ -20137,6 +20190,7 @@ aaf6c48c9b6be91de8413a7b471c046e gcc/testsuite/gcc.dg + 4cd45295229b3c44d306b4f6e40abcae gcc/testsuite/gcc.dg/declspec-8.c + 2ac94653a18a4163e91da4bbd91adb95 gcc/testsuite/gcc.dg/declspec-9.c + 3016ae80da6e5a215f117a92d2bebb52 gcc/testsuite/gcc.dg/delay-slot-1.c ++9dde675b7f82012b3830a262f004cdce gcc/testsuite/gcc.dg/delay-slot-2.c + 29bda4ed3cdc847c236fc0ef0888e01d gcc/testsuite/gcc.dg/deprecated-2.c + 6a7682aec25c4be0ec245e7870ae8627 gcc/testsuite/gcc.dg/deprecated-3.c + c16572f166422b1e3b52c0e11e374c5a gcc/testsuite/gcc.dg/deprecated-4.c +@@ -20181,6 +20235,7 @@ dadf3ffd264a8aa4075042e754d622a2 gcc/testsuite/gcc.dg + b59fd600db434af135f39c38e21e2d74 gcc/testsuite/gcc.dg/dfp/pr37435.c + 17353eaf91a4f3959fa168324f86f6f5 gcc/testsuite/gcc.dg/dfp/pr41049.c + 8f20a249a1cf0ecc405e1799552e1d6f gcc/testsuite/gcc.dg/dfp/pr48204.c ++59389f9a6a0db946009dbbe47a66608f gcc/testsuite/gcc.dg/dfp/pr52140.c + 0ce0ac37817c465f0711df50b865b300 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c + 3882046526a916dcd4cb2db9cfaad397 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c + f81a9ab3a0212214f904c0cc2fe02024 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c +@@ -20700,6 +20755,7 @@ d202c807b4080808baf99ab9f32b21a4 gcc/testsuite/gcc.dg + 35cf7eb4f7b153b629899db048a7b747 gcc/testsuite/gcc.dg/gomp/pr39495-2.c + 4a61a37a3515bf0dfee678cc9b365685 gcc/testsuite/gcc.dg/gomp/pr44085.c + 81cc1ab572093091d240bd4f73616466 gcc/testsuite/gcc.dg/gomp/pr47963.c ++57958d723d900c37a089d21688ee23af gcc/testsuite/gcc.dg/gomp/pr49640.c + 32d1b4709fce01c7b0f596da5c040f2a gcc/testsuite/gcc.dg/gomp/preprocess-1.c + 536359d59fc418a1570a6d8574a66ca1 gcc/testsuite/gcc.dg/gomp/sections-1.c + c8fdbed05305ecb29a74eae041f265e9 gcc/testsuite/gcc.dg/gomp/sections-2.c +@@ -20963,6 +21019,7 @@ f13e30c386eaccbceb19fe70d0dc3432 gcc/testsuite/gcc.dg + cd4355ff0f5eae01a529012787372b30 gcc/testsuite/gcc.dg/ipa/modif-1.c + 8f25b749b3343bbe5e9448d44019f76c gcc/testsuite/gcc.dg/ipa/noclone-1.c + 40bd41302666d56c4edf7330db97920e gcc/testsuite/gcc.dg/ipa/pr42706.c ++be4c06a27772bcdc6214c8c04cf6b552 gcc/testsuite/gcc.dg/ipa/pr45644.c + 8f5983946d28dca5853e89d0aa48b65d gcc/testsuite/gcc.dg/kpice1.c + 0869783fa95b6864d6ee55773e4a5f4b gcc/testsuite/gcc.dg/label-compound-stmt-1.c + 81db0a2d9b61fa43c4d2f3499202cde2 gcc/testsuite/gcc.dg/label-decl-1.c +@@ -21231,6 +21288,7 @@ b054d23fd7d868a509aeb363dc7e8ffc gcc/testsuite/gcc.dg + f7b0583ef99de8104eb364054c2ab1ae gcc/testsuite/gcc.dg/noncompile/pr35444-2.c + d618e883477b7e6f5b49c9142c5dfe4c gcc/testsuite/gcc.dg/noncompile/pr35447-1.c + eebc988665ccd52c01692b6d73fdf1a7 gcc/testsuite/gcc.dg/noncompile/pr40033-1.c ++54fad565fe3a138ace6309838e34d79c gcc/testsuite/gcc.dg/noncompile/pr52290.c + 7e17434473e72d99de0e53837884085d gcc/testsuite/gcc.dg/noncompile/redecl-1.c + e4d900a56367f6a536225a27d5f4f5a6 gcc/testsuite/gcc.dg/noncompile/scope.c + bacce3ff1a5219b8aef3929e36521ff4 gcc/testsuite/gcc.dg/noncompile/undeclared-1.c +@@ -21956,6 +22014,15 @@ d6e684ed82a9b125900505cf1cff152d gcc/testsuite/gcc.dg + c9199dd4c92f0ffefd4e78b3e949d60c gcc/testsuite/gcc.dg/pr47899.c + 43956ff6b01a9363930df5039a766184 gcc/testsuite/gcc.dg/pr48141.c + ace83ed64690f39a9f100edd9f71563b gcc/testsuite/gcc.dg/pr48144.c ++c9cc6bab59a53095524a6f34b6d0ded7 gcc/testsuite/gcc.dg/pr48685.c ++13e79d5919a09656024792bef1dc6107 gcc/testsuite/gcc.dg/pr48774.c ++20dd454b5b110fe20e629d88a6ef7208 gcc/testsuite/gcc.dg/pr48837.c ++fb7ee781bd4ec07177155c0afa87432d gcc/testsuite/gcc.dg/pr49120.c ++8571c0fba63fcb77abc00bec9fbe2b28 gcc/testsuite/gcc.dg/pr49307.c ++cee7e9aebbf42a1e10d45436fcd9ac4a gcc/testsuite/gcc.dg/pr49619.c ++2c6cc5baeea8764085267ec7119fa53f gcc/testsuite/gcc.dg/pr51408.c ++32bce0cc13b0bf4cd021fe4477df43f8 gcc/testsuite/gcc.dg/pr51821.c ++d26f1947f98c021f45c45dc8f313012d gcc/testsuite/gcc.dg/pr52139.c + 8b7d73da2d5d78000716492365a85d5a gcc/testsuite/gcc.dg/pr8715.c + 3d08410b2dd57259aa63f0e1c64b376e gcc/testsuite/gcc.dg/pr8788-1.c + be04382a35ebb1cfae1b2168f1693a94 gcc/testsuite/gcc.dg/pr8835-1.c +@@ -22429,6 +22496,12 @@ d492b6a7627e740e34a331eb76d75113 gcc/testsuite/gcc.dg + 38761bfc7363f7b9a7480233a04082a5 gcc/testsuite/gcc.dg/torture/pr47411.c + 6d9340dfd3765ed7eda708e0935c8042 gcc/testsuite/gcc.dg/torture/pr47473.c + 0dd48878c14fd87645d9271ddfc856a8 gcc/testsuite/gcc.dg/torture/pr47890.c ++eea7d0d2e38fd7dd37d9c78b63554abe gcc/testsuite/gcc.dg/torture/pr48542.c ++113915e064a98116b61b157713d06615 gcc/testsuite/gcc.dg/torture/pr48822.c ++3f33f6456a27739e6e648a1b71ea26ff gcc/testsuite/gcc.dg/torture/pr49651.c ++c44de2c160544fd1d2b7ee79340b13aa gcc/testsuite/gcc.dg/torture/pr51106-1.c ++8b03d6a5f43a4fa9cc59d927ecb1e515 gcc/testsuite/gcc.dg/torture/pr51106-2.c ++230b2d7823cf7a40b4575ad7d3bd030f gcc/testsuite/gcc.dg/torture/pr52693.c + 2787a730c72c7b3720e7425b62cefaf6 gcc/testsuite/gcc.dg/torture/pta-callused-1.c + 0f41d09a9647a1b57f3d8d9707002e12 gcc/testsuite/gcc.dg/torture/pta-escape-1.c + 78957add3870afa18d8272a9692ba67b gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c +@@ -22493,6 +22566,7 @@ e33772fd7629c0f8031fe329b95f08ef gcc/testsuite/gcc.dg + 660a8286755d2bb1023603f991120838 gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c + e1e165ac5b18578c45e3525ad11828f0 gcc/testsuite/gcc.dg/tree-prof/inliner-1.c + fa7217b4e402db46b1d64ca38eb6f212 gcc/testsuite/gcc.dg/tree-prof/pr34999.c ++8fbea4871801841e81c791d9f937c05f gcc/testsuite/gcc.dg/tree-prof/pr44777.c + cfb95702d3e9ef5784915df06f4c7a2d gcc/testsuite/gcc.dg/tree-prof/pr45354.c + b6ce131781bdbebefa222c85898de505 gcc/testsuite/gcc.dg/tree-prof/stringop-1.c + f6f1fda83bb783c076f7545e876fabae gcc/testsuite/gcc.dg/tree-prof/stringop-2.c +@@ -22976,6 +23050,7 @@ de282597aacd1d96b11b30c3b81b9158 gcc/testsuite/gcc.dg + 00329c24f9cfd42d92bc9e79660b869a gcc/testsuite/gcc.dg/tree-ssa/pr44423.c + 2588c433f7d2bfb56a998522a8bb63e4 gcc/testsuite/gcc.dg/tree-ssa/pr47286.c + 69d597d5ca9f7d237b9164ee2811d312 gcc/testsuite/gcc.dg/tree-ssa/pr47392.c ++8d9e4e6d784892d0fb8454ac3e113725 gcc/testsuite/gcc.dg/tree-ssa/pr49039.c + b401abe742b960f089283a6250bb972f gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c + ad87caf2c1ed4d1cf60c4fd0c4427ff9 gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c + ac64c6dd8ae63ff8edd73249fd62a8de gcc/testsuite/gcc.dg/tree-ssa/predcom-3.c +@@ -23611,6 +23686,8 @@ b9a31fb61bea08b6c60d1b60d83ebd33 gcc/testsuite/gcc.dg + 737861a2565f6aea629458250b2abcb2 gcc/testsuite/gcc.dg/vect/pr45752.c + 872c31873d60babf67405981200bef9e gcc/testsuite/gcc.dg/vect/pr45902.c + 6c7355c39466f9a8931d0f26b08f4e73 gcc/testsuite/gcc.dg/vect/pr46663.c ++2b6488c3e8ead9f955c2385895ebb859 gcc/testsuite/gcc.dg/vect/pr48172.c ++1ac467c956380f84bb25f8eee6d81a92 gcc/testsuite/gcc.dg/vect/pr49038.c + 0706a6b1e589668022cd055b960dd18d gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c + 260e2f31b30dda89387f41e7bfe71e1e gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c + 9ac2d5d04e7a551a8b2b60af4d90d914 gcc/testsuite/gcc.dg/vect/slp-1.c +@@ -23931,6 +24008,7 @@ e694faebeb4fec2c0e97f228b1a4f0b9 gcc/testsuite/gcc.dg + ec82e418af0b5f8e6d591e94e4d12d88 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c + a1ca82201f4a9b5aa462fb581a533471 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c + 529caccb16ecc2dd2ec255493c3dd192 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c ++5ca5d34852ee3ec67d113a8fa7884ba8 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c + 6208c6e1ec29e08fb7af8458e535cbf3 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c + b94a4fd030ab125eee183867faf7383d gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c + cf1c111a55ee1fc1644557ffe0c1ebfe gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c +@@ -24329,6 +24407,7 @@ bf821309d2cd93b8c0d6b0704742bc45 gcc/testsuite/gcc.ta + f1c560d7c19103912409add2d4d87fa6 gcc/testsuite/gcc.target/arm/neon-vld-1.c + 7fc2a64aa360db3a1e3bba874d1e75b3 gcc/testsuite/gcc.target/arm/neon-vmla-1.c + 6bb57dfaddee2c33ada326c162212f36 gcc/testsuite/gcc.target/arm/neon-vmls-1.c ++efc98aa2644c195a9873f978991a838b gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c + 218e2b46558024f95228ac53a3c55b2b gcc/testsuite/gcc.target/arm/neon/neon.exp + bb0b719e1d80caf14139da999027fd41 gcc/testsuite/gcc.target/arm/neon/polytypes.c + 14e27db995367b838f5f6593063b22bb gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c +@@ -26210,6 +26289,8 @@ abcf772be91151e5846e40366a1498e6 gcc/testsuite/gcc.ta + 81118900d8e453b4e485d14a26d571ce gcc/testsuite/gcc.target/arm/pr42093.c + 229396d73e77a0b92cdac94dac5b2236 gcc/testsuite/gcc.target/arm/pr43698.c + 6bf421f50d2e131c53639d3bf5eae6ab gcc/testsuite/gcc.target/arm/pr45447.c ++fb28b1407c737ad8fdbcc48df46565ae gcc/testsuite/gcc.target/arm/pr48252.c ++f0539a732def6859af7cc0e2116b7217 gcc/testsuite/gcc.target/arm/pr51835.c + 3143560976572191d8bba6ba78a45aa6 gcc/testsuite/gcc.target/arm/register-variables.c + 15bccf64362edfe888645335ca60a21a gcc/testsuite/gcc.target/arm/scd42-1.c + 22b6d4635b71bf03bd31344c57b987bd gcc/testsuite/gcc.target/arm/scd42-2.c +@@ -26413,7 +26494,7 @@ ed39fac01137b1fe7fa6aa0aed6f57d9 gcc/testsuite/gcc.ta + 40d5d7ea5cca5cc5166f8915c0ef8ede gcc/testsuite/gcc.target/i386/abi-1.c + c936e737748e936089822758068eeb21 gcc/testsuite/gcc.target/i386/abi-2.c + 694fb560a7ccd2e52932322b7e1f58be gcc/testsuite/gcc.target/i386/addr-sel-1.c +-e86625ed570d76daddf729da118f02e5 gcc/testsuite/gcc.target/i386/aes-avx-check.h ++f2d78603e52e7e053a779e149383c1de gcc/testsuite/gcc.target/i386/aes-avx-check.h + a7b2ba93a40acf61b74c80dd6835eb3d gcc/testsuite/gcc.target/i386/aes-check.h + 002af625049a48934e8f3e1ee9e9d4c6 gcc/testsuite/gcc.target/i386/aesdec.c + 54d024c3feafb0e0b97e8329572c38ba gcc/testsuite/gcc.target/i386/aesdeclast.c +@@ -26443,11 +26524,12 @@ aa3476662f0b4583fb7dd5d53ba3db63 gcc/testsuite/gcc.ta + a6e02c2d436ea3b312e391166899a7bf gcc/testsuite/gcc.target/i386/avx-1.c + 573dabdca33bf405cd8fe83bf0bbec6b gcc/testsuite/gcc.target/i386/avx-2.c + b8752c209e6f3770321077d53e28d157 gcc/testsuite/gcc.target/i386/avx-3.c +-730b31c38fb0277aef4367e25b297c0b gcc/testsuite/gcc.target/i386/avx-check.h ++090dbae8193e4b8d9868052513543b8c gcc/testsuite/gcc.target/i386/avx-check.h + 2a65fd05c0003aea46c7faaefb3a9ad1 gcc/testsuite/gcc.target/i386/avx-cmpsd-1.c + ae728a63491324c9279e2facbffccbb7 gcc/testsuite/gcc.target/i386/avx-cmpsd-2.c + 584d5233a25d47a9749449fea9de2276 gcc/testsuite/gcc.target/i386/avx-cmpss-1.c + 61306240368e0ac6bb0aa06b4051a210 gcc/testsuite/gcc.target/i386/avx-cmpss-2.c ++1e3257b896814bf9deff44f777ecf6f3 gcc/testsuite/gcc.target/i386/avx-os-support.h + 7e40e660685d648585e5e273940180d9 gcc/testsuite/gcc.target/i386/avx-set-v16hi-1.c + 14c9e834c255c1db07f36e0dbb2c4f0a gcc/testsuite/gcc.target/i386/avx-set-v16hi-2.c + d6da883c82b4c1671f212e3352e8af9d gcc/testsuite/gcc.target/i386/avx-set-v16hi-3.c +@@ -27067,7 +27149,7 @@ a275ae4bb75dae81e8e566bb58efb648 gcc/testsuite/gcc.ta + 79ddfd2e4c8179a891a396e881d43d6a gcc/testsuite/gcc.target/i386/ordcmp-1.c + 8d18c90795c1653930445593d44b2171 gcc/testsuite/gcc.target/i386/parity-1.c + 750dae867b72e3ec6e017b6d6be8b646 gcc/testsuite/gcc.target/i386/parity-2.c +-3a84d28411594c27c1f4f92532dc9b9f gcc/testsuite/gcc.target/i386/pclmul-avx-check.h ++b6587e8091b873e052b86981b4c6dd26 gcc/testsuite/gcc.target/i386/pclmul-avx-check.h + 56f7ac50c182627b5551065184b25a3b gcc/testsuite/gcc.target/i386/pclmul-check.h + 15dd7e15fc38c0bad00692ec554b7cd1 gcc/testsuite/gcc.target/i386/pclmulqdq.c + 530fbd044eb0ac45c1affea8b93243b8 gcc/testsuite/gcc.target/i386/pentium4-not-mull.c +@@ -27298,7 +27380,13 @@ d2c81a772694739ffd5427c6fb2287b6 gcc/testsuite/gcc.ta + 618c963c482dd0a0d1af07c8ab74635e gcc/testsuite/gcc.target/i386/pr46865-1.c + a9bfea25c29fab0e368fc9c217fc74d2 gcc/testsuite/gcc.target/i386/pr46865-2.c + 5282ec7610ad7737e05f65d9ff88751f gcc/testsuite/gcc.target/i386/pr46880.c ++3b16c13dcc55d512b3df8c314112d62c gcc/testsuite/gcc.target/i386/pr47780.c + 6b58712d049f5aebed6ffb31fa93e896 gcc/testsuite/gcc.target/i386/pr47809.c ++2a341a4e00b9beab43e6507b79108513 gcc/testsuite/gcc.target/i386/pr48708.c ++d339a2a7b62e00d31dcbafdd06506bcc gcc/testsuite/gcc.target/i386/pr49920.c ++aff7074250516571a07457eace3f2639 gcc/testsuite/gcc.target/i386/pr50788.c ++962516c8f0d06ff5eb1f5111aae24e79 gcc/testsuite/gcc.target/i386/pr51393.c ++e90dc7f0b1e6d26c11b5224430e328db gcc/testsuite/gcc.target/i386/pr52330.c + 5e93a2c631ad41e334cfdad124bfff8e gcc/testsuite/gcc.target/i386/pr9771-1.c + 869406fd535d480293b9a60d198ffd5d gcc/testsuite/gcc.target/i386/push-1.c + bc19b38ccc6a25ccee9e6fa95e9158a4 gcc/testsuite/gcc.target/i386/quad-sse.c +@@ -27438,7 +27526,7 @@ fc535f253868df6d104fe59110255bbe gcc/testsuite/gcc.ta + c61ecb520f8d8d7266675b405d7b2aa7 gcc/testsuite/gcc.target/i386/sse2-divsd-1.c + 2826f31ddc998ab7f07b1235d215e39d gcc/testsuite/gcc.target/i386/sse2-init-v16qi-1.c + 7ed343a35790aa4739272bbb5559e6fb gcc/testsuite/gcc.target/i386/sse2-init-v2di-1.c +-e8e78193e5e26074646a2d69e47e46ed gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c ++c421878cd9de90743c8860c5acd31257 gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c + f53a36e4b14e3ead4c8fcaec57e63ddb gcc/testsuite/gcc.target/i386/sse2-init-v4si-1.c + 8fbafd8cda93cc37dbbd3283557aaadc gcc/testsuite/gcc.target/i386/sse2-init-v8hi-1.c + f4d5400e4ee3ffd7055d5bacd465fbde gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c +@@ -28145,6 +28233,7 @@ bd8559988c341ff09200816881c90f40 gcc/testsuite/gcc.ta + 4367fa1dd4a1e888d48c2b381dba99ac gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c + c1c31afeb7f596f70e634da098978592 gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c + d20de17b0c47a156dfbaac13ba623a27 gcc/testsuite/gcc.target/mips/r3900-mult.c ++0fcc78914edd5f972a3751624ddd725b gcc/testsuite/gcc.target/mips/reg-var-1.c + 71bcb3ad704aded4d2ed370969ffbf1d gcc/testsuite/gcc.target/mips/rsqrt-1.c + cc6d2ad28860c070af7f840e7bda951d gcc/testsuite/gcc.target/mips/rsqrt-2.c + 524daba18bd099b11f72d9d5ddd4f9fc gcc/testsuite/gcc.target/mips/rsqrt-3.c +@@ -28279,6 +28368,7 @@ eb73816da5a08cd3a206e955f08d2998 gcc/testsuite/gcc.ta + 15b501be4c373b336da28a58e84d0f93 gcc/testsuite/gcc.target/powerpc/altivec-31.c + d2d7d772a3057ce71076714d1a106440 gcc/testsuite/gcc.target/powerpc/altivec-32.c + 00de0b23cdaadeeb9edab6685f942655 gcc/testsuite/gcc.target/powerpc/altivec-33.c ++9638e05795e777c7572134ab8a2c2cd2 gcc/testsuite/gcc.target/powerpc/altivec-34.c + a007efc316dcfa1327d38adb2feca1d8 gcc/testsuite/gcc.target/powerpc/altivec-4.c + 2586491d3f0993007b6292363a62437c gcc/testsuite/gcc.target/powerpc/altivec-5.c + a52228c1eb53451b531b71aa7727959f gcc/testsuite/gcc.target/powerpc/altivec-6.c +@@ -28315,6 +28405,14 @@ caf01994c96172dac156c3da29317823 gcc/testsuite/gcc.ta + 28a093e56a3b3b438802b7510941c3d7 gcc/testsuite/gcc.target/powerpc/bswap64-2.c + 3bb3045db789cd4d6908d1844637b555 gcc/testsuite/gcc.target/powerpc/bswap64-3.c + 37c12fff6f77333d7cb7d787bbb7f908 gcc/testsuite/gcc.target/powerpc/bswap64-4.c ++0f68ff6e13a86474325e4f50b423e518 gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c ++f4c2d3f214380e99f3e38806b5e44a00 gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c ++bf885c625a0677cc9f49b53426e58ae4 gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c ++6b9890f5078988e6bb94ca9fe0f746cd gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c ++15b4aeb11920083bb090cc10219d3093 gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c ++2780704ace024d48240305abf4e0f469 gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c ++a79748c05e08b50cd05fc85ef070b241 gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c ++b496b6c0f22345ea109540fd44354ea1 gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c + a5f9bde4e3b75b1650c086d628abc346 gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c + 200c7976ba75f6c986aedec205aad73b gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c + 6419d1aaea22c0476688f484ac4f0f43 gcc/testsuite/gcc.target/powerpc/const-compare.c +@@ -28411,6 +28509,8 @@ aaf8936a4be766bdcb02ce0ef54da466 gcc/testsuite/gcc.ta + 9770efc5bea33fe124132a7ebc0a140f gcc/testsuite/gcc.target/powerpc/pr43154.c + 0d7a27773205acac6b0458c0c2d6ca30 gcc/testsuite/gcc.target/powerpc/pr47862.c + b39bd7f66428e1d65fb822c595109da1 gcc/testsuite/gcc.target/powerpc/pr48192.c ++b58c990aefcc9e7a51cc889c7dd3e52d gcc/testsuite/gcc.target/powerpc/pr48857.c ++1cfc823003a660fa613b860692646c73 gcc/testsuite/gcc.target/powerpc/pr53199.c + 29d6609261355a0b7fa664bc421bb2e7 gcc/testsuite/gcc.target/powerpc/regnames-1.c + 884e97f433f667176d11130d3b031c3c gcc/testsuite/gcc.target/powerpc/rotate.c + bf385d7310a8dab90ee44f86832aa03b gcc/testsuite/gcc.target/powerpc/rs6000-fpint-2.c +@@ -28523,6 +28623,7 @@ d0d646cfe216eb6e3c43fb56cb548ea0 gcc/testsuite/gcc.ta + c0fe12b65277b653de804b8be0683e07 gcc/testsuite/gcc.target/sparc/20020116-2.c + 82c2e387bd540b74637065450948138c gcc/testsuite/gcc.target/sparc/20020416-1.c + 44373c57181608413fc07f3ec0e2ad6e gcc/testsuite/gcc.target/sparc/align.c ++019da970597edf6187323a8e6d8d3fd7 gcc/testsuite/gcc.target/sparc/cas64.c + 61fdcc3e39deca7e4f123378b814dd0f gcc/testsuite/gcc.target/sparc/combined-1.c + be4e8621f0151086de802a20702cd1af gcc/testsuite/gcc.target/sparc/combined-2.c + 437746b3eaa2254a72a060b88e66b68b gcc/testsuite/gcc.target/sparc/fand.c +@@ -29022,6 +29123,7 @@ e008c4462a077365656911a374178ac7 gcc/testsuite/gfortr + 9ce1a722fb3bcb4e61ceaac91348b1f3 gcc/testsuite/gfortran.dg/alloc_comp_init_expr.f03 + 99e8c8e429a6a81eb118209e2a5ea95c gcc/testsuite/gfortran.dg/alloc_comp_initializer_1.f90 + 3e06208aa88b798596871aff811fe396 gcc/testsuite/gfortran.dg/alloc_comp_initializer_2.f90 ++256a2d9bc97dda2831f9c186b6b01a7a gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90 + fbf6eb41453bed2d7b01d6d3ecd3b075 gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90 + ab9fdfef16d9f4a8e9153b12a588c914 gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 + 7d16433f6e4391d0441877520a957421 gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90 +@@ -29057,6 +29159,7 @@ ff2e982bde22ac51a61fd6cb3b87bbf5 gcc/testsuite/gfortr + 06dc937b7f96471c2676fbd37045a96e gcc/testsuite/gfortran.dg/allocate_derived_2.f90 + 6941791b2bcce63c7b4dedc3e2e6dce4 gcc/testsuite/gfortran.dg/allocate_derived_3.f90 + 6afacc0454383443e609022b1a7fca39 gcc/testsuite/gfortran.dg/allocate_error_1.f90 ++f82795c799ca353989b767d7ea2af8bf gcc/testsuite/gfortran.dg/allocate_error_3.f90 + aa1b41858d001a0c2262bac14c82ec32 gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90 + 85b517b1e2ad96a7d4e84672378d9fc3 gcc/testsuite/gfortran.dg/allocate_stat.f90 + 253a002731f9a4dd5588b787f6b8b83c gcc/testsuite/gfortran.dg/allocate_stat_2.f90 +@@ -29595,6 +29698,7 @@ bb94f607e30a982b0a8a17830daf0807 gcc/testsuite/gfortr + 3d47bd7e58e484f1e653afd7fa9c29de gcc/testsuite/gfortran.dg/class_12.f03 + 6da3f94ea675a2504b16245ab1e4e72d gcc/testsuite/gfortran.dg/class_13.f03 + 07a8a7838b2ed13141a883f843170c4f gcc/testsuite/gfortran.dg/class_2.f03 ++d27d449a1a441f5cbfa862d6187fe3cc gcc/testsuite/gfortran.dg/class_23.f03 + 6d3a24c9ba637cb8d7df2aa79287c9a5 gcc/testsuite/gfortran.dg/class_3.f03 + f48ec514d36af5da4cd7d2ecaf2fecdb gcc/testsuite/gfortran.dg/class_4a.f03 + 1cdeff264ab42a18e9a62a8240bb6081 gcc/testsuite/gfortran.dg/class_4b.f03 +@@ -29620,6 +29724,7 @@ ad56b8ccf93a09af1f57171e13ba7a6a gcc/testsuite/gfortr + e9483e1a9611925f796174b3be2bff6e gcc/testsuite/gfortran.dg/common_10.f90 + d519ae8dfb3045e80bc57c7c107eb06c gcc/testsuite/gfortran.dg/common_11.f90 + 40bdfb525ad929e8c5a80582058f106e gcc/testsuite/gfortran.dg/common_12.f90 ++af48ab22b7ab737b6bda79506c549444 gcc/testsuite/gfortran.dg/common_16.f90 + 1a3f0a95a819503c9a7f4ee394db0fae gcc/testsuite/gfortran.dg/common_2.f90 + c2a0876dd85c6ece5d309ef2cf58c533 gcc/testsuite/gfortran.dg/common_3.f90 + 92c11ac3992f23a38197e7f8043b96a0 gcc/testsuite/gfortran.dg/common_4.f90 +@@ -29850,6 +29955,7 @@ cb2d220ce07d18b706dbbd651356cdab gcc/testsuite/gfortr + 178304617b91c2ad6cfbdfe1fbf7ecdf gcc/testsuite/gfortran.dg/dummy_procedure_1.f90 + 0edb7d4943c28a0b66c9f42eeffddbb6 gcc/testsuite/gfortran.dg/dummy_procedure_2.f90 + f383f473d4e4c77eae99eefd8a3c97b2 gcc/testsuite/gfortran.dg/dummy_procedure_3.f90 ++62d9ec774253960dbc6d1e91e570480e gcc/testsuite/gfortran.dg/dummy_procedure_7.f90 + 5e7607096bc0170833ae836938198c1e gcc/testsuite/gfortran.dg/dup_save_1.f90 + ed8b3783b559cd46c4ace89e97254082 gcc/testsuite/gfortran.dg/dup_save_2.f90 + a6123bf77f221c60e8ae2f81bf6d0479 gcc/testsuite/gfortran.dg/duplicate_labels.f90 +@@ -30564,6 +30670,7 @@ a34e5f9728cdee4c4355a4c6f8be88dd gcc/testsuite/gfortr + 2fb633bfac4c93dc2152baf6d8497336 gcc/testsuite/gfortran.dg/initialization_22.f90 + b111414aef1b6e98dc0935e7166c0873 gcc/testsuite/gfortran.dg/initialization_23.f90 + 85ec8f27a2026f8cf0a2c3417cbdb441 gcc/testsuite/gfortran.dg/initialization_27.f90 ++658fd1c56fc4835e60064d1eec650767 gcc/testsuite/gfortran.dg/initialization_28.f90 + 0759f2d3acf484e54f39c4c01e5f2536 gcc/testsuite/gfortran.dg/initialization_3.f90 + ec558a82bb4b8209168624a762e13383 gcc/testsuite/gfortran.dg/initialization_4.f90 + 838d14dbac1d143acaf81ce65b0b760e gcc/testsuite/gfortran.dg/initialization_5.f90 +@@ -30670,6 +30777,7 @@ a3f8f99b5424487917fa334c84c2263d gcc/testsuite/gfortr + 33e8b5657132a366ba2218b6d18c73d0 gcc/testsuite/gfortran.dg/intrinsic_4.f90 + 1377a45af91092f6ecab285fb04e2a4e gcc/testsuite/gfortran.dg/intrinsic_5.f90 + c20fd15a7b2e66c8ae01f70d95fb7779 gcc/testsuite/gfortran.dg/intrinsic_6.f90 ++0bcb7123fd1f81435989d3aa7937dffe gcc/testsuite/gfortran.dg/intrinsic_8.f90 + a8889ae36a75144adaaf39185b202def gcc/testsuite/gfortran.dg/intrinsic_actual_1.f + 7b6777f1bf3c12d38c270da75ab86b64 gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90 + a6a226971d4ad4c381d2c29e62c9216c gcc/testsuite/gfortran.dg/intrinsic_actual_3.f90 +@@ -30716,6 +30824,7 @@ ebd25dc18748239694812fb3e4e08861 gcc/testsuite/gfortr + 6e1095726bcbc85e84cf16b7a8c20978 gcc/testsuite/gfortran.dg/invalid_name.f90 + 7f49661334dff8476c99f8011d7814ff gcc/testsuite/gfortran.dg/invalid_procedure_name.f90 + 79dc1f9f582855436b600d985cfe0a01 gcc/testsuite/gfortran.dg/io_constraints_1.f90 ++e8802e8eb3b2f944cc72a425d0f1fafb gcc/testsuite/gfortran.dg/io_constraints_10.f90 + f62044881397dbb08d85b9bffac8dffe gcc/testsuite/gfortran.dg/io_constraints_2.f90 + d2ffda7d9bb2cbc494decb14f36a8851 gcc/testsuite/gfortran.dg/io_constraints_3.f90 + 3214be0ec292a992b7a113f1492101d3 gcc/testsuite/gfortran.dg/io_constraints_4.f90 +@@ -30998,6 +31107,8 @@ bf4493e36c166f5e754b28d845762513 gcc/testsuite/gfortr + 05590a8130b662e49f917a2730348796 gcc/testsuite/gfortran.dg/namelist_65.f90 + 5193970fdf07e814abad1e013ea3cdc5 gcc/testsuite/gfortran.dg/namelist_66.f90 + d65b9f8a0b3983b834c3856cc2ed5fa7 gcc/testsuite/gfortran.dg/namelist_71.f90 ++7a5fb4d5ecef8d741bfddfe3fecceb5c gcc/testsuite/gfortran.dg/namelist_72.f ++57c379378f1c1751d823354af2ad3344 gcc/testsuite/gfortran.dg/namelist_73.f90 + 138069b06bed4dd2d6e20acb12f17f7c gcc/testsuite/gfortran.dg/namelist_assumed_char.f90 + 73de646ecd69b0bf965fecc1ccd64052 gcc/testsuite/gfortran.dg/namelist_blockdata.f + 069dbff7c2c727c922c2a492f0feb75e gcc/testsuite/gfortran.dg/namelist_char_only.f90 +@@ -31077,6 +31188,7 @@ e63ddf33d03ffe7d53d42817d24ec804 gcc/testsuite/gfortr + 966d5f9d795f94301705f1f2f03d5548 gcc/testsuite/gfortran.dg/operator_4.f90 + a07a251e5a01aff661381742d50a45ea gcc/testsuite/gfortran.dg/operator_5.f90 + d047f1050199cd3dfe3f61773a022c8a gcc/testsuite/gfortran.dg/operator_6.f90 ++30467345bc7a8250b0465bc1227b0727 gcc/testsuite/gfortran.dg/operator_7.f90 + 82f1685330c044658491e7dd29f6eeda gcc/testsuite/gfortran.dg/optional_assumed_charlen_1.f90 + 7fedb812261e488372bc4439b553156f gcc/testsuite/gfortran.dg/optional_dim.f90 + 93c5cc54a63cfe4d2742f118580c6eac gcc/testsuite/gfortran.dg/optional_dim_2.f90 +@@ -31129,6 +31241,7 @@ e9a7c03ec995eccc56fef0de76563b14 gcc/testsuite/gfortr + 24e0ade37dff0f1eb6006ee3395e17a6 gcc/testsuite/gfortran.dg/pointer_check_4.f90 + 8cc81d938abf4a3676038edfe1c2872b gcc/testsuite/gfortran.dg/pointer_check_5.f90 + aa5150dc343ac97642b1c56535a11b0f gcc/testsuite/gfortran.dg/pointer_check_6.f90 ++a2f3430ee5a4452d2e694f71bd0c3191 gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90 + f054254e454828510bea70958afa02a8 gcc/testsuite/gfortran.dg/pointer_component_type_1.f90 + 4a32a5e4f2ce64fdc583aa08feed17fb gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 + 53df30aa4d33665f06dffc149edb1acc gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90 +@@ -31272,7 +31385,9 @@ eaee3644bb72757f7c01f19f8c77dfbd gcc/testsuite/gfortr + d3b293eecaa4492a7c3a436f79a36dbd gcc/testsuite/gfortran.dg/pr44592.f90 + d9a349190ca794aeb8312defcd7c755a gcc/testsuite/gfortran.dg/pr44691.f + 2193be737981067fd30810b8c622f7bf gcc/testsuite/gfortran.dg/pr46804.f90 ++2dbd0baf5cc71bd396aa0b27c82b3aa6 gcc/testsuite/gfortran.dg/pr46985.f90 + ea8bdf93460fcbe2ee90d79bb0c6f806 gcc/testsuite/gfortran.dg/pr47878.f90 ++2322284d21ad7f5786f625dbe8820cf8 gcc/testsuite/gfortran.dg/pr50875.f90 + 6ff99f4b0021f30bee039a61db7cba9d gcc/testsuite/gfortran.dg/predcom-1.f + 20a411a7e5a57891297c4c6a96d92009 gcc/testsuite/gfortran.dg/predcom-2.f + c1ed4aee35f394f952b49fcdcfc84fba gcc/testsuite/gfortran.dg/present_1.f90 +@@ -31316,6 +31431,7 @@ e82b1f5b7d9c97781cc590a08f103a63 gcc/testsuite/gfortr + 055690da1e6be0ea20e775a394d3bab7 gcc/testsuite/gfortran.dg/proc_decl_21.f90 + 6fbfe88af58b6adfff6415b4fcd37c0b gcc/testsuite/gfortran.dg/proc_decl_22.f90 + 6257a72b3655db450851cfd691428c22 gcc/testsuite/gfortran.dg/proc_decl_23.f90 ++3e819a7e9cdc31cea7970bf5babf8b1f gcc/testsuite/gfortran.dg/proc_decl_27.f90 + 16c107e1f480b5af263a3b24682145bf gcc/testsuite/gfortran.dg/proc_decl_3.f90 + a8525fbfa5dd7f02a6b578bdaa7287ee gcc/testsuite/gfortran.dg/proc_decl_4.f90 + 7b1826ae96f8de1df90588d068891d7f gcc/testsuite/gfortran.dg/proc_decl_5.f90 +@@ -31943,6 +32059,7 @@ ebe5e3c02005b53b2a71cc74c7e2cb15 gcc/testsuite/gfortr + 6e3d11061d3fedad371f0d17d6275a36 gcc/testsuite/gfortran.dg/widechar_IO_2.f90 + ff4a498bd6f7005f9e8f5dbb271bd6c8 gcc/testsuite/gfortran.dg/widechar_IO_3.f90 + 500f01eb75dffc344b0331e109cfd3fc gcc/testsuite/gfortran.dg/widechar_IO_4.f90 ++c9fe1e98d7b41a8332de060a9a672e8d gcc/testsuite/gfortran.dg/widechar_compare_1.f90 + 48e5e881f2c9c2ad2d0376c78fe0fb8f gcc/testsuite/gfortran.dg/widechar_intrinsics_1.f90 + ec94a6994147abd5af3e977c92a6e821 gcc/testsuite/gfortran.dg/widechar_intrinsics_10.f90 + 576907551174735f360f9b4c63c442d0 gcc/testsuite/gfortran.dg/widechar_intrinsics_2.f90 +@@ -32683,6 +32800,8 @@ c36f023977042ca971d3f58ec44a533a gcc/testsuite/gnat.d + bdba7c57f15e0831448b3c2f87d86add gcc/testsuite/gnat.dg/opt13.adb + b83f57e092e66f74585fac434425c72d gcc/testsuite/gnat.dg/opt13_pkg.adb + e1b67c4c3fdbb4f3da3346c7a9643861 gcc/testsuite/gnat.dg/opt13_pkg.ads ++dfac97d9ad64526491f6b4d7d4e2dd7a gcc/testsuite/gnat.dg/opt17.adb ++5bf5f79aefcc12677ac4ae28eb594417 gcc/testsuite/gnat.dg/opt17.ads + c0bc0504f729295b20e4394c0bd98a42 gcc/testsuite/gnat.dg/opt2.adb + 98384ef07686507b4ed94c26f6a58813 gcc/testsuite/gnat.dg/opt3.adb + 65e20f998d483941d92a34b07b482d10 gcc/testsuite/gnat.dg/opt3_pkg.ads +@@ -32760,6 +32879,8 @@ bd812535e6617c5f4dde6719c8748277 gcc/testsuite/gnat.d + 3afb13f37cfc3455f0f0be64d053892f gcc/testsuite/gnat.dg/renaming2.adb + 1a954da0b1e7e11673319b058eb82146 gcc/testsuite/gnat.dg/renaming3.adb + 9c415422ce59266c9af89e8d3fd1df74 gcc/testsuite/gnat.dg/renaming4.ads ++036b49eaefe15f165df8d3b3b071960c gcc/testsuite/gnat.dg/renaming5.adb ++a7443b7e83fb0b9f7c853f71fbc6426b gcc/testsuite/gnat.dg/renaming5.ads + 9b1270e410165ddf9774a615ec835037 gcc/testsuite/gnat.dg/rep_clause1.adb + ab0796b373d12c713aeb10168d14ed69 gcc/testsuite/gnat.dg/rep_clause2.adb + 879097798e84a55d0876c499122cdd18 gcc/testsuite/gnat.dg/rep_clause2.ads +@@ -33049,7 +33170,7 @@ aea05ee97accd61b44a3c18abfa321ee gcc/testsuite/lib/pr + 9a908bb507989b82eddfeb9d23c66587 gcc/testsuite/lib/scantree.exp + a6dc33391c4e774519da81fd258805c0 gcc/testsuite/lib/target-libpath.exp + f8e243a5720744310155b102a2ab8494 gcc/testsuite/lib/target-supports-dg.exp +-ed8337a7a6806474afa77afae350e320 gcc/testsuite/lib/target-supports.exp ++67240533f78cf0664fa7fcd89ad954b9 gcc/testsuite/lib/target-supports.exp + 3247a569c87014396b4682567b02c72f gcc/testsuite/lib/timeout-dg.exp + 3b7f74ee8537decb5895ed7a3c008b6e gcc/testsuite/lib/timeout.exp + 9c8e6bf222182744bb61bd5c07ec5496 gcc/testsuite/lib/torture-options.exp +@@ -33489,7 +33610,7 @@ a37f27988fd30c00caf81701a3be431d gcc/tree-affine.c + dd88a1b79873f889a6b52130d6d947e4 gcc/tree-browser.def + aa231b9f9b729f93a48eafe85326a217 gcc/tree-call-cdce.c + 3d276dda02fe89b79e860cef0dbd6f92 gcc/tree-cfg.c +-20301e569b2aa50541b8774a80f4758d gcc/tree-cfgcleanup.c ++46a02d2a5f80b5dcd21b06a4d16f88e6 gcc/tree-cfgcleanup.c + 90e9f8afd62f18100f9cabf7add011f1 gcc/tree-chrec.c + 9145d83e9f902c3b83b983416674dc53 gcc/tree-chrec.h + 4d3d6a502bd48d37478f2a648458c376 gcc/tree-complex.c +@@ -33502,30 +33623,30 @@ a94b0500f852083038533059b2b7e54a gcc/tree-eh.c + 6e4e6f3b140462a3fac6a4022e40aa52 gcc/tree-flow-inline.h + 61a9cd4318088ae160672359a0a35324 gcc/tree-flow.h + f95cf1f95e8a4b09670d80458ce3112c gcc/tree-if-conv.c +-b1ec7361372a016c3622ee911e9fc290 gcc/tree-inline.c ++a23aea42f92aedc811c7ac054263839e gcc/tree-inline.c + f4d4a5aab37729576205b1a83fc5090c gcc/tree-inline.h + 6fa8971e46f651684bf115b5aeb79d52 gcc/tree-into-ssa.c + dce399f91d50f8de02bdbf3ea285162e gcc/tree-iterator.c + 3b86414b4e96e56a57965565a63b61f7 gcc/tree-iterator.h + 994223bff8ea393ef67d6dc8a58a496e gcc/tree-loop-distribution.c + 3aba057ced8b46f8367297775d0fda7e gcc/tree-loop-linear.c +-099a21551a3cf26985d502aa2b09a2e5 gcc/tree-mudflap.c ++4ac3c2c24c349ca245000d3f902091fa gcc/tree-mudflap.c + e3ec682d6aed08778baff5f999e2b22a gcc/tree-mudflap.h + 55c984604f6247fc16c3143187db4a79 gcc/tree-nested.c + 534ff7f81f312004cda4318950f53093 gcc/tree-nomudflap.c + ed8f4002dca779fdbef16a5f20d80fb2 gcc/tree-nrv.c + e1e4bd19b97012a42931e64611db005c gcc/tree-object-size.c + 26363f19df58dd767253deb07be3e7b7 gcc/tree-optimize.c +-d118f39fe9ca4c1e3f4accbca8b134e4 gcc/tree-outof-ssa.c ++90e491b854dee3a8cea5a911d8c2f39d gcc/tree-outof-ssa.c + 8843bf995cd540754d6eb710c163bc8d gcc/tree-parloops.c + d59131fdb73f01109d040e8f08c7eec0 gcc/tree-pass.h + fd1bc991ee533fe67b586e13f2a4af46 gcc/tree-phinodes.c + c26a1330706cb0de5296b4744eecadb5 gcc/tree-predcom.c + 5ccaef430556a1a3c6fd84bf35dd7bee gcc/tree-pretty-print.c + 0c1166d7d1b92ffbdda3f0e17d955f99 gcc/tree-profile.c +-f17363bc9388d98e457c92e9733a58af gcc/tree-scalar-evolution.c ++fa0e3b9ffdf2bb6a67034c4ee451a0e1 gcc/tree-scalar-evolution.c + fd48a09f0cffdccb7ad79a13e16e0ca3 gcc/tree-scalar-evolution.h +-e90851236521a3f4a051e5b0e18f6c02 gcc/tree-sra.c ++17d2f56425beefcbf6fe30161f34da2b gcc/tree-sra.c + 6ee25eef251eb52339addbea739729d3 gcc/tree-ssa-address.c + cc1e65ef2968641057e6e687da98c2ba gcc/tree-ssa-alias.c + 0cdeb433cc9b33c10bb77e4475218a23 gcc/tree-ssa-alias.h +@@ -33533,8 +33654,8 @@ b88f82b1238e1a124e5e6ca3ee877532 gcc/tree-ssa-ccp.c + ad985fa9db6cc02bfd8c946d857b5877 gcc/tree-ssa-coalesce.c + c2012c2d95ae4bdebf8c6affad27d49e gcc/tree-ssa-copy.c + 434e1764bfe27e888d06cd39ae999ca4 gcc/tree-ssa-copyrename.c +-7b32571fb3c415490fbf0dc53ea90002 gcc/tree-ssa-dce.c +-2ac1de6e9bd55f22a570c0bba2444a65 gcc/tree-ssa-dom.c ++cb9e18fdc1fa63c0242459a60321d895 gcc/tree-ssa-dce.c ++1dae49a1fcb679f904aebabcc849e1c2 gcc/tree-ssa-dom.c + 0461855405718e1b6b5b418b1b0c25d2 gcc/tree-ssa-dse.c + 40c211e43ab241b05b9203933f490a19 gcc/tree-ssa-forwprop.c + 9b812714d3af3f16f5d89bc3eecb4f0b gcc/tree-ssa-ifcombine.c +@@ -33558,10 +33679,10 @@ f3b8fd1e00338a05c58c74ee6089a53c gcc/tree-ssa-pre.c + aaa0fc17c998db787f1c47ab4b6a5f29 gcc/tree-ssa-propagate.c + 9209162c04f0adde18c7b0ddf79caac9 gcc/tree-ssa-propagate.h + d2413fc64b86db5bae06ff170b5ce7b3 gcc/tree-ssa-reassoc.c +-e089877fdcde5e0358124dcf054ef918 gcc/tree-ssa-sccvn.c ++55993dd82071d512c8514a3abd6b4003 gcc/tree-ssa-sccvn.c + f0a851e42c4ae1451f6aeb3e438475e9 gcc/tree-ssa-sccvn.h + 14e4f969754cf52e2530a21ffd280b7c gcc/tree-ssa-sink.c +-56e5e876a318dd27abb3c587b810e70f gcc/tree-ssa-structalias.c ++0cae9f2d31d1cf264298e38c205c4c65 gcc/tree-ssa-structalias.c + 5b28233088bfae3ab387efa5f4887b58 gcc/tree-ssa-ter.c + 4acc9269b5cd8e527f9e02b57f9fd5ea gcc/tree-ssa-threadedge.c + 01e1909ec137d9babd59d14151ce07e4 gcc/tree-ssa-threadupdate.c +@@ -33570,18 +33691,18 @@ f0a851e42c4ae1451f6aeb3e438475e9 gcc/tree-ssa-sccvn.h + 9c3a994e924cea26964140823f82b90c gcc/tree-ssanames.c + 846885a2753461f07018ceffc2898c79 gcc/tree-stdarg.c + 9dc7ea806141e247f0061ebed82e5f57 gcc/tree-stdarg.h +-da9536245e627b2c1ae097581211f61c gcc/tree-switch-conversion.c +-7561aa1b16dfe49420262b142d571747 gcc/tree-tailcall.c +-37d935cd9a900189a35a87e2001596ba gcc/tree-vect-data-refs.c ++e88e82c611514b03eae3fff500d97960 gcc/tree-switch-conversion.c ++d2fe45fce95134dd45ceef8da24bf20f gcc/tree-tailcall.c ++c22ed1b17c063d5fbe974a4abc06fa31 gcc/tree-vect-data-refs.c + a9dda8c7197c27d669ba1b27e26c7bbb gcc/tree-vect-generic.c +-790ea85e32be28ecd5aa844b5e532317 gcc/tree-vect-loop-manip.c +-a79bfbd1d3d72c064b04ec3e62c5c9cc gcc/tree-vect-loop.c ++877174b7e37b20635a04574cb40c6f1c gcc/tree-vect-loop-manip.c ++29ff22cd6cd0c424297fb871af898ad6 gcc/tree-vect-loop.c + 3211a7c477df0b3f79207173470c9fa3 gcc/tree-vect-patterns.c + cbaff29c17fbf9a42bb53b8fbcf3ce3a gcc/tree-vect-slp.c +-661bca791ab3fcf74ca4b8e0ad311765 gcc/tree-vect-stmts.c ++182cf42e7dd8281cf3542d50a6b87321 gcc/tree-vect-stmts.c + dd0ef614dcba12b449d444edb414d172 gcc/tree-vectorizer.c +-48bc8190f9ed722e184fc4905286cdfc gcc/tree-vectorizer.h +-1b6bc0aeed8b10f591118a17a48f54c9 gcc/tree-vrp.c ++7943f1845a8365b7303dd781d1621a27 gcc/tree-vectorizer.h ++2837baea378df0327bb3cc6b675d8c16 gcc/tree-vrp.c + 421e737a1969fd6c3c8263c3b4fcfcfa gcc/tree.c + ea052f510f606e86f4c7a8160609cefa gcc/tree.def + 98f55dfa5e5cdb4a37cb3ebdb73952b6 gcc/tree.h +@@ -33604,8 +33725,8 @@ da47619257e8963d8449a4e04971b05d gcc/unwind-dw2.c + e7e914187b304d3f16ea2f05db0f3524 gcc/unwind.inc + 73954a80deb4217845896cc3536495bb gcc/value-prof.c + 417dfb4ea7ea7c94642acadec945bf16 gcc/value-prof.h +-73ed3e0a12173644dff8e137db308ff5 gcc/var-tracking.c +-8789597f6cbc90cab75766c9141afe0e gcc/varasm.c ++3e5ba9369b87bbb8588f191f72e7b121 gcc/var-tracking.c ++8201c8420b973fb9efead22efaf09adc gcc/varasm.c + fd2c47b6bfe81bf2db20b7ec78a8d286 gcc/varpool.c + d48543edf86d41721e1a51d28eef82cf gcc/varray.c + b8f72f875550a06ca82eb7b4929bb278 gcc/varray.h +@@ -33620,13 +33741,13 @@ fa29f41a9fff939426da4f149b1d8423 gcc/version.c + e33f5fe4050a311c959ce9084a50c1fb gcc/xcoff.h + 7c1f43f49e61878a46c8b1642c32cb7c gcc/xcoffout.c + 7cf371c2c977863af4254f2cfa6b86b3 gcc/xcoffout.h +-b870066567c11b66630ed0d050ff6ee5 gnattools/ChangeLog ++d5ff25d409be1a91ce55a60121b73c33 gnattools/ChangeLog + 0711af5c6b3ab3cbee3c146abc6827ea gnattools/Makefile.in + cf927569f00894bef32dbefb7c6490f7 gnattools/configure + 01d58cc3b5626a2637e20c2c5080b221 gnattools/configure.ac + 59530bdf33659b29e73d4adb9f9f6552 include/COPYING + d32239bcb673463ab874e80d47fae504 include/COPYING3 +-0bfaa322f8d7787f0db90b4af1f7031e include/ChangeLog ++92dbf0c772eb5be49d6fd688bdd3d692 include/ChangeLog + 4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103 + 68da0a9358a4062d67e4968cd1754787 include/ansidecl.h + 173fd07e62d2edad074ae156268b950f include/demangle.h +@@ -33654,7 +33775,7 @@ a744256dc49e8f5abf2b0c14b3073231 include/splay-tree.h + 0294cecbb1f66d640ccba3a5d862d05b include/xregex2.h + 06cee0773295c3ade78d4605550102dc include/xtensa-config.h + 0afce91a3daa1fdc32ee36370c1129dd install-sh +-4f594a3fa4c75db9c6470713e3e7611b intl/ChangeLog ++9a553570a5c46b2106bb0afd98e1a18c intl/ChangeLog + cad1d6fab2274517783de7433c0faa74 intl/Makefile.in + 6ec998bb4716c744bf8185e607f69301 intl/README + 76ca170a525d5b84d90f0478fe788931 intl/VERSION +@@ -33696,11 +33817,11 @@ d50a8c6c5b41089930accbdce767d3c0 intl/plural.y + b4758a0194e3e41362b939911472ce62 intl/relocatable.c + bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h + 43f287d082528203fc85c1d2d81bf30d intl/textdomain.c +-7197ca8286cb19687d5695a1d1472f6b libada/ChangeLog ++edf90f56412568e38882f93b1af3ad4c libada/ChangeLog + feb5cce2c69c0f39a0d5aa650b74f7e9 libada/Makefile.in + 9fb2c0e64238d6d42020a518fe9d1122 libada/configure + b2dd61394fd655e9a99c79c4bb55b0c5 libada/configure.ac +-c86ba9a3e136d6d3b4838ddd4eb45d0f libcpp/ChangeLog ++1774cae154fa9734cd10787bf88643c3 libcpp/ChangeLog + 54b81d416c915da8cf1caa6868f6e70e libcpp/Makefile.in + 7307c791a8de641ef6dada9a179ece57 libcpp/aclocal.m4 + 33a8f81cc854bc8b268b8a342e7f242d libcpp/charset.c +@@ -33726,7 +33847,7 @@ c79b15102591380d2083a631a812b1e1 libcpp/macro.c + 2d45a726957f93e9ec053b644480b2e9 libcpp/makeucnid.c + f35ae8ba1fd3553b47bcf87cc1730aeb libcpp/mkdeps.c + 27f54e6a64816a2de073e04aeee5952e libcpp/pch.c +-419e443b21d5e7df34f386efef1af2b7 libcpp/po/ChangeLog ++f003ed9c019f3d833137824e6536d59b libcpp/po/ChangeLog + 98f02bfc3b5bfd3c4231c5933f295c9e libcpp/po/be.gmo + b821b563cabb6b8d3745e460d2c120aa libcpp/po/be.po + 79291f019e3d66faf0b8e8658a0a3628 libcpp/po/ca.gmo +@@ -33767,7 +33888,7 @@ a7f033bb0cf8da6f0d4b21aa5d12522a libcpp/symtab.c + 67fcd3d878017060c56219962e5e062b libcpp/traditional.c + 11f204ddd01b33474c3de82de9192de4 libcpp/ucnid.h + 524392c32703f6022427bf6bbdb833c8 libcpp/ucnid.tab +-714682f68b267af452e3cb6cc37a6257 libdecnumber/ChangeLog ++516e7351af4f6a5dabe1e35602cbdb66 libdecnumber/ChangeLog + 636b1792066db9803f46f6b7c5dbad4c libdecnumber/Makefile.in + 4620234046381c99c949f75294a4f00a libdecnumber/aclocal.m4 + a0ecbc50fa8e505f88a951c3c294ecbc libdecnumber/bid/bid-dpd.h +@@ -33829,12 +33950,12 @@ a97c47969dfc92a7666dfe3c2e1e1448 libdecnumber/dpd/dec + 74286c0df48b52d759e158d0137e326a libdecnumber/dpd/decimal64.c + 7da680355032df2d570337d88c0694ad libdecnumber/dpd/decimal64.h + 0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h +-364f242a53a115b5849fefca1015ad2a libffi/ChangeLog ++527fe4eacbcff4966f4ef17a75e3f3e6 libffi/ChangeLog + fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj + d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1 + 085f9917800070e791f49bf4733e23fa libffi/LICENSE +-d6432f9c9c529b9b6e5d14cdc9f28a4d libffi/Makefile.am +-9ea3470c75a86cac6b71f9bfdf9bfc1f libffi/Makefile.in ++4f47efb5d6a475131df4e3df57c715e1 libffi/Makefile.am ++da1dade271f05cd95231bc7e04bf4923 libffi/Makefile.in + 671fef8eba1585d2c332b3b074da86ec libffi/README + 0ec3418e6c2e6b89c24cffd4322b6368 libffi/acinclude.m4 + ddc32ea6263dd1557560d7ef6e33c2a3 libffi/aclocal.m4 +@@ -33857,7 +33978,7 @@ dd7b61f56e75a1d052dd10dc02ac4940 libffi/man/ffi_call. + ba320392aee6dfa2e896e6deb7205815 libffi/man/ffi_prep_cif.3 + 6c0cd4327058ec8585b09041f1501c2c libffi/src/alpha/ffi.c + d8ebc1ade0e8f0fa0cd86048ad927b6c libffi/src/alpha/ffitarget.h +-1c2284340e3ec316407056831adf7780 libffi/src/alpha/osf.S ++e6689e8efd4ee7453f3cd89ccb56bfbf libffi/src/alpha/osf.S + a0ee6e86ca97fcdd084efc21500ebccd libffi/src/arm/ffi.c + 7d755bdfcc6115d45d2547cf7a149df4 libffi/src/arm/ffitarget.h + f784edbc656114aa454a4558a4ba656d libffi/src/arm/sysv.S +@@ -34063,7 +34184,7 @@ d47c79b281339983862a8e52d8c73f0f libffi/testsuite/lib + 92f1548985e720c30797e9e403807475 libffi/testsuite/libffi.special/special.exp + 93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc + 185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +-2914c3486a98d0eaaba9f66fde280f4a libgcc/ChangeLog ++3d3a4d999b46cf12d09281b8111cf8d6 libgcc/ChangeLog + 8d8c6e8296592e51b6955c1d0ee9a249 libgcc/Makefile.in + 0305186ab21c59004911a065517e8d38 libgcc/config.host + 4d2e967f3d00f422f15be583a4ca4881 libgcc/config/alpha/t-crtfm +@@ -34077,7 +34198,7 @@ c823b0cff478388588a9aabedaa93068 libgcc/config/i386/6 + aaccc0ae11ab1ccdda5a7115cf7656de libgcc/config/i386/64/eqtf2.c + e3268b023be584e22f5203061dead818 libgcc/config/i386/64/getf2.c + b104dfd3a7f36981d73fad2ad12ec0e4 libgcc/config/i386/64/letf2.c +-2327f57320992b5f6ff26f7e9784e4ec libgcc/config/i386/64/sfp-machine.h ++365c9078960b5f632f8d8c87ba170009 libgcc/config/i386/64/sfp-machine.h + e91203a26b892f29e7d59d2bb004f95b libgcc/config/i386/64/t-softfp-compat + c76bd1715459b531bb3c768ca75bcb0f libgcc/config/i386/libgcc-sol2.ver + 0118eeb1bf47244383cf5a4b1e538447 libgcc/config/i386/t-crtfm +@@ -34095,7 +34216,7 @@ e9968ccea8a0142626a966b8b4238529 libgcc/config/ia64/_ + 721bfee787d81d97c021d28b97dc3415 libgcc/config/ia64/t-ia64 + 53a2b9e67710b0b8f02e3e3316cd4482 libgcc/config/ia64/t-softfp-compat + 45cb97bd14177f2d809994a800675ceb libgcc/config/ia64/tf-signs.c +-78279e4fb48ec54e7f09945389b71563 libgcc/config/libbid/ChangeLog ++4c3c4db52ad9d62ae44d9e56324a2c8c libgcc/config/libbid/ChangeLog + 86e150f40ebcb97e568366a5cb38cbbe libgcc/config/libbid/_addsub_dd.c + ded9495633ce7c1e30d900eae5f9a599 libgcc/config/libbid/_addsub_sd.c + d26f72ff45dfd7210a6a33a599274515 libgcc/config/libbid/_addsub_td.c +@@ -34304,7 +34425,7 @@ c7b70dcc1f2024624fcba54a60ffcdda libgcc/gen-fixed.sh + c326222d0001569c09d987898e433cee libgcc/shared-object.mk + e46c2a78dca584dfd7a4b4673666ab86 libgcc/siditi-object.mk + 4f944647ef4ccaaaf9bb117b88d3cfd8 libgcc/static-object.mk +-aacbfe06e3b7231888bac832718a4a56 libgfortran/ChangeLog ++6d4e1c106649a813b8006f2badfcedfe libgfortran/ChangeLog + 9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002 + 80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003 + 9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004 +@@ -34831,7 +34952,7 @@ d727d856c6ccfe1523721d689f3dd8f4 libgfortran/intrinsi + 5e84674e64a53a407a156a22644a59a5 libgfortran/intrinsics/dtime.c + eebddb07212868789c138d2134ec676a libgfortran/intrinsics/env.c + e83cac06a0f846980c05e0d0f4749a10 libgfortran/intrinsics/eoshift0.c +-d0b5be902b9cffb1dd93488034cbf482 libgfortran/intrinsics/eoshift2.c ++6f75f478021aae18f6abd166d208c5f7 libgfortran/intrinsics/eoshift2.c + 01e00310f3b7eb71c7ed2a3d85843ad6 libgfortran/intrinsics/erfc_scaled.c + 0eb6a6fded6cec2d1dccdc830a62d641 libgfortran/intrinsics/erfc_scaled_inc.c + 140bee351cd8496bf6a27b290bf608f2 libgfortran/intrinsics/etime.c +@@ -34869,8 +34990,8 @@ c9f9552385271eb65b08c795a715b41f libgfortran/intrinsi + da3f9c7574670d80e518dd9f04b6ad6e libgfortran/intrinsics/sleep.c + f41e32f889e2b803581c41247b8290ec libgfortran/intrinsics/spread_generic.c + 7a8e9f71464e91ee2756c0d42b4b1a72 libgfortran/intrinsics/stat.c +-2cfe4feeadd4a78f562a11628b6bb201 libgfortran/intrinsics/string_intrinsics.c +-0e6c2d351bdb5e987b54a99c942f49e0 libgfortran/intrinsics/string_intrinsics_inc.c ++1e5a7811c90e4d49bf9331a67098bc96 libgfortran/intrinsics/string_intrinsics.c ++8442b8c5a948e16b705ebb81046767aa libgfortran/intrinsics/string_intrinsics_inc.c + ea0b860a0befcbe6b45fae116825ed66 libgfortran/intrinsics/symlnk.c + 06b6347faafce048843f647422f3144a libgfortran/intrinsics/system.c + 490b54c6aa76d93694e2c526cb000121 libgfortran/intrinsics/system_clock.c +@@ -34889,7 +35010,7 @@ b20f3ffe7796ac59ad43c3ef6434a298 libgfortran/intrinsi + cea0537d86fd010eb5b6783707d315ce libgfortran/io/inquire.c + 5b5127d072b33077fcbf3c9039165b92 libgfortran/io/intrinsics.c + af39abd99424290dbb22a78bd7cb1790 libgfortran/io/io.h +-42488095d5c4ad34b766675c97e30f8c libgfortran/io/list_read.c ++578f9b1b343a36b273b55c2365894f5d libgfortran/io/list_read.c + e3d0222201de41d61352a9382d8d87a6 libgfortran/io/lock.c + 42cb4a7152dc74b718b39d0eb68819d5 libgfortran/io/open.c + 3d1cf1c07adc64591314f8e35578d118 libgfortran/io/read.c +@@ -34900,7 +35021,7 @@ da93df5053c1177f046852a1ff795b48 libgfortran/io/unit. + 4e840d3eb79edee3c0437691e9f17a2b libgfortran/io/unix.h + 6f75fe45354f727203dea4bbe39dbeff libgfortran/io/write.c + 21545a05c189360ef26d713c2fd08697 libgfortran/io/write_float.def +-6341534f51bbe0427319f6bc7d2d9812 libgfortran/libgfortran.h ++cf42069b6f61674e8c29da92530e2b56 libgfortran/libgfortran.h + 25a776e70521ce48fb1bfdd7bfa1a646 libgfortran/libtool-version + 0ababe761c83a69a7a94f2d1e8b4b0b8 libgfortran/m4/all.m4 + fe85d76e17ee6b4f9e736b8c6d81892f libgfortran/m4/any.m4 +@@ -34963,7 +35084,7 @@ bb7b00b09e55b42f687c4a55526d857f libgfortran/runtime/ + 7abfa5ebb9488b9ae9fda8bb9aa388e9 libgfortran/runtime/select_inc.c + 167f1718b833039909bb6da7cb5b0dae libgfortran/runtime/stop.c + 8db71b322504a156888c3017c0d35d78 libgfortran/runtime/string.c +-8b29d5049db74a7659b6d49d8188fd10 libgomp/ChangeLog ++cd09bc9f1b0d62c7ea99a5ee33f3f68b libgomp/ChangeLog + 0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite + 481a523ccb8f919f7ffdd70bea6634a2 libgomp/Makefile.am + 7dab958bb25c0f7dfc07d950f77055b9 libgomp/Makefile.in +@@ -35019,11 +35140,11 @@ a2c2c3c72719340bba14c7b33a7ed89e libgomp/configure.ac + eeb570991118428a63a9a984a972a7a7 libgomp/critical.c + dc42a04242fd6a5c3320aabf352baa6c libgomp/env.c + 6b5ff93a158188e66a8b93c3eacf05ed libgomp/error.c +-128cf5c7eafe7070c6574b5bbf4c644e libgomp/fortran.c ++d240cf9fa3740b4b92faabb05912a0e6 libgomp/fortran.c + acc3925b8f43fb985313663c30103701 libgomp/iter.c + cf8a700a297d5418b1a70e667db6d660 libgomp/iter_ull.c + 58f614974a58d0fe0d3526f923dfe827 libgomp/libgomp.h +-cac6bd80e049732c0aaf8567656ca015 libgomp/libgomp.info ++ad20bf0752a17e1659450c80db23ffda libgomp/libgomp.info + 6d09628d0d1ec45377b20f3e3391395b libgomp/libgomp.map + 591ff20dfd2b81e3c919249b5db8a967 libgomp/libgomp.spec.in + c6e20f2bcf9c5b57cf8e597f1f11bbf5 libgomp/libgomp.texi +@@ -35337,6 +35458,7 @@ d3204f7410dc2cb6ed750bb1227fd13c libgomp/testsuite/li + ddd13da7e261528309013b3a49c05bca libgomp/testsuite/libgomp.fortran/pr35130.f90 + 03980b5e2b32747cdeb7042e049e8ee9 libgomp/testsuite/libgomp.fortran/pr42162.f90 + 7c5ff4d01b52400e8efb919f24ee719e libgomp/testsuite/libgomp.fortran/pr46753.f90 ++59e84625ad4e7a9efce95deaae9a6074 libgomp/testsuite/libgomp.fortran/pr48894.f90 + 4af6e9394ddc7a6c89dca2968cac162e libgomp/testsuite/libgomp.fortran/recursion1.f90 + f7a52f7caa9a62d15b0f1270dc461c08 libgomp/testsuite/libgomp.fortran/reduction1.f90 + 0afa716c312eb72430b0e7e942b66c76 libgomp/testsuite/libgomp.fortran/reduction2.f90 +@@ -35384,7 +35506,7 @@ e44601235cf1fcb5eb7b5a9becf980bf libgomp/testsuite/li + 628d084ffbc4023067f99eeec872e479 libgomp/testsuite/libgomp.graphite/pr41118.c + 66ffa69cccfc856bc101f397c0632b69 libgomp/work.c + a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB +-1a58928fadc3740d6ed91e74dd4d2caa libiberty/ChangeLog ++1b3b91d7526d023ec16eb84a0d937293 libiberty/ChangeLog + cd10cf6a511b5c0b1620922b5eab15dc libiberty/Makefile.in + c68dbf7834af4281ebd84caa3fd54680 libiberty/README + 8797cb1a6faa84f3c7fe3d12164a4b13 libiberty/_doprnt.c +@@ -35446,7 +35568,7 @@ dd4459d067ddcc1144926103908d94bb libiberty/lbasename. + 02689a5df91c5a613cbf9e97b63673df libiberty/libiberty.texi + 2c56f9552603480f87b7136972894128 libiberty/lrealpath.c + 737b3bcae790e44ec331ebaa65a45e91 libiberty/maint-tool +-590e656d30280e67ee3497c4ada9503f libiberty/make-relative-prefix.c ++fd76614c05ff07b2ce82df035dd555b1 libiberty/make-relative-prefix.c + 113007ee37f27bf335515cc98ab3cfe0 libiberty/make-temp-file.c + 9d038cd01bd65a8af2a78c5cfbaa94b4 libiberty/makefile.vms + 9522c18599ff0145df69f57fecac4c12 libiberty/md5.c +@@ -35505,7 +35627,7 @@ f824ac0dcaa3a91b48d01cc80a7d17ef libiberty/strtod.c + 8f24f8939540ed6d58ad0dcdf1132562 libiberty/testsuite/Makefile.in + 7b99aacd3203958a1a6cf971ecd1c739 libiberty/testsuite/demangle-expected + 4c2cbeb4ecfd12c30ea3e7f7547ee70b libiberty/testsuite/test-demangle.c +-1d8e8680715f95e148ef22a416d21e94 libiberty/testsuite/test-expandargv.c ++4a38bf64a8ce8655a2376c57839fdda4 libiberty/testsuite/test-expandargv.c + e9e958dbfc45a08dbbbbe48c83d3987e libiberty/testsuite/test-pexecute.c + 6b513119d8c36af928821e8ec24265d7 libiberty/tmpnam.c + fed47804d20d26873d480f5166e7d864 libiberty/unlink-if-ordinary.c +@@ -35524,7 +35646,7 @@ cdc140ce93944c5bb2ac62cd3dfd86d6 libiberty/xmalloc.c + 6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c + c6e7ef53b4ff115a136d917511222656 libiberty/xstrndup.c + 94d55d512a9ba36caa9b7df079bae19f libjava/COPYING +-72853c7206bbc2d081e31d1d740bccf0 libjava/ChangeLog ++d64e3541a665ab85879b132b4caf285b libjava/ChangeLog + 03e1f38b916604fdf1470238201325f3 libjava/ChangeLog-1998 + 691acb61fbd6a2235826ff55db5578be libjava/ChangeLog-1999 + b58c6701706771a02bf00a77666941ef libjava/ChangeLog-2000 +@@ -35561,7 +35683,7 @@ de54f80484e640306e109e785e4611c8 libjava/classpath/.s + 880a25226e4e4e4c241663041d24f8dd libjava/classpath/AUTHORS + efd97e0bb913655e0c8b16fa78bdded4 libjava/classpath/BUGS + af0004801732bc4b20d90f351cf80510 libjava/classpath/COPYING +-f60fe5d16b94acf981c3c32a8f456b0e libjava/classpath/ChangeLog ++d08cad5a4a542f9ec52a8e104302ce24 libjava/classpath/ChangeLog + 3418fae58de967afe26d915a4b18d82c libjava/classpath/ChangeLog-2003 + a5b72adb94a3c362738b0f52e57a82af libjava/classpath/ChangeLog-2004 + 61159c6e0802d0d2a92b3051003db5c5 libjava/classpath/ChangeLog-2005 +@@ -35598,21 +35720,21 @@ a6cedb4991503f803e9f0870daf59c13 libjava/classpath/do + b343eec566430e85d1f95c21438aa4ee libjava/classpath/doc/api/Makefile.am + 38e865f0638ed83668121cb921816763 libjava/classpath/doc/api/Makefile.in + 2e8d8d0fa0491a7a15a802ad4ed4ea8c libjava/classpath/doc/cp-hacking.texinfo +-68d47752bd958f8db9296c1945f72941 libjava/classpath/doc/cp-tools.info ++af4e7807147b9d125e3017dd9d31dfe9 libjava/classpath/doc/cp-tools.info + 2f9243a9d8681fb57cfc14ea3839b38e libjava/classpath/doc/cp-tools.texinfo + 3155d9bd9a7bf4aff2ff0dfe4a2cb878 libjava/classpath/doc/cp-vmintegration.texinfo +-df8e433ed859930ed45f44a1501eb5bd libjava/classpath/doc/gappletviewer.1 +-ed55360b7faa59ceebf2e1aafda91621 libjava/classpath/doc/gjar.1 +-0eaac63c63057ee8af884214d91b9ff2 libjava/classpath/doc/gjarsigner.1 +-6a8bb6000e6b2fed8ff279837c41e4c2 libjava/classpath/doc/gjavah.1 +-b0a08cecaae2d513e1e4b236470a5a96 libjava/classpath/doc/gjdoc.1 +-e06a20313460ba07572d83ff3a848ca8 libjava/classpath/doc/gkeytool.1 +-f367e5f41828aaf61dd3f4a02be24707 libjava/classpath/doc/gnative2ascii.1 +-b1f204e3949228b7077bb535d0b057d7 libjava/classpath/doc/gorbd.1 +-c173739a034fa1839570db989aaf0485 libjava/classpath/doc/grmid.1 +-b7cfcbf16897d65df8d3773e9b7bb235 libjava/classpath/doc/grmiregistry.1 +-8a085305a7eb80583e85263b33aed7d4 libjava/classpath/doc/gserialver.1 +-07ff41f72f000a30ffa3b49b686bf9be libjava/classpath/doc/gtnameserv.1 ++94dd2f54a61054dfada7a8f165772a5e libjava/classpath/doc/gappletviewer.1 ++c5eff74e126c2a3dfb1d339ec4b5dc61 libjava/classpath/doc/gjar.1 ++056e8e3acde3236dcb86ca787ffc3824 libjava/classpath/doc/gjarsigner.1 ++faa33a8f3a60d3c770abe2fb69c69ee0 libjava/classpath/doc/gjavah.1 ++6caf072aa368ebd877485ecad3793076 libjava/classpath/doc/gjdoc.1 ++79f35253855fcd5328f6fbde4e867fd8 libjava/classpath/doc/gkeytool.1 ++76033e3adebff9476a00a6a8dafa38ac libjava/classpath/doc/gnative2ascii.1 ++7a939a2623458ea18021bcad44b80ed8 libjava/classpath/doc/gorbd.1 ++1b7160a3343ccfe11c1e0bc8c869bf0c libjava/classpath/doc/grmid.1 ++4938e9ea4f9d83132bb2fad12e05dd9a libjava/classpath/doc/grmiregistry.1 ++88bb359a4bc8a1d54a0a8157fd4dd331 libjava/classpath/doc/gserialver.1 ++304239342f5f723ba76cba396eeba0bb libjava/classpath/doc/gtnameserv.1 + 7e4e31659df1c7e815f9151958dceef2 libjava/classpath/doc/texi2pod.pl + 55dea7a47b6450cdcb103c76295441bd libjava/classpath/doc/texinfo.tex + b1e0c0c30547d57d7a09b04d47c70b06 libjava/classpath/examples/.cvsignore +@@ -50845,8 +50967,8 @@ c1ce4729db55108c4a08b25266172219 libjava/classpath/vm + 851fa7c60828ad1f1741ff4abdd6e4c2 libjava/classpath/vm/reference/sun/misc/Unsafe.java + d8b9d62b3d4b77c2c9db9a8dd775afbf libjava/classpath/vm/reference/sun/reflect/Reflection.java + df8921743087523404a2b30bdb83d3a6 libjava/classpath/vm/reference/sun/reflect/misc/ReflectUtil.java +-7158d40def41802fe7621da581efce14 libjava/configure +-bb1fc32b0ac001e6619c00ebd2300722 libjava/configure.ac ++402141573f297363d0a57b7391e8c8d7 libjava/configure ++8c17aac12e993ab8a02792543aa129f0 libjava/configure.ac + 0ad1e654cdb574ba9fdd8e5c715b3691 libjava/configure.host + 012f2a1247de717e81d230f40da5bd94 libjava/contrib/aot-compile-rpm.in + 3e89d242a7180e4fcb6d15eb171cae47 libjava/contrib/aot-compile.in +@@ -53852,7 +53974,7 @@ ba8fe1332300bd95cde61471b47b0f8d libjava/include/aix- + f0a427ef86efb7ca6829ca4e000b105c libjava/include/config.h.in + c4f13c76610deabfbf13fce4ed092a52 libjava/include/darwin-signal.h + 103d984e127298285d898fdf861bbcc4 libjava/include/default-signal.h +-6a88062a3a159dce1228674df67e6777 libjava/include/dwarf2-signal.h ++f7c421fb8e89d98a266efd6a64ef2ca4 libjava/include/dwarf2-signal.h + 1faaf0b92549ee71e16eb962081a1872 libjava/include/execution.h + 09a868e3190a355e45b5c4cee892bb03 libjava/include/hppa-signal.h + faa5b6ab80f09f9cbbf9a37c692802ed libjava/include/i386-signal.h +@@ -57804,7 +57926,7 @@ d04590c4dc6a61734d09958671cba4da libjava/libgcj-test. + 13fc127864a775b5feed8f9c90cef50f libjava/libgcj.ver + 184718636f014ef2ca46d62ba8d6c3bf libjava/libgcj_bc.c + e3eda01d9815f8d24aae2dbd89b68b06 libjava/libltdl/COPYING.LIB +-8f67ccd39da3b2acdb4b63de6d767054 libjava/libltdl/ChangeLog ++c2cd8d5e399880da0ec19f3b776f97db libjava/libltdl/ChangeLog + 687405b58bc7fffede3a92c2d9d39bcf libjava/libltdl/Makefile.am + ed4be114f856455d55d939cc4e8ffc40 libjava/libltdl/Makefile.in + 36da24f9facf00b349ea10dba3789d92 libjava/libltdl/README +@@ -58577,7 +58699,7 @@ efa3c5db8112696291d98ab0b195e083 libjava/org/xml/sax/ + 8bc9c6be20df8421c1a687421fbfde85 libjava/pkg.m4 + bcecf5b2507e5f3693f16c96acd82a17 libjava/posix-threads.cc + 988741ff03c71aa76b896742aaffe296 libjava/posix.cc +-1037b26d48b6ead093edb2140c2e6285 libjava/prims.cc ++de6f44effe53248a36da4ddcf8c4d91e libjava/prims.cc + e78ba84d733731034a4ed9d7245ce3b4 libjava/scripts/MakeCharTables.java + 0f49478320816def63eecdbdabc50bdc libjava/scripts/classes.pl + 6d795c65b67f245c88b61f68c93bf95b libjava/scripts/encodings.pl +@@ -59498,7 +59620,7 @@ d41d8cd98f00b204e9800998ecf8427e libjava/testsuite/li + 434ac04eb066f5075299583492846410 libjava/verify.cc + 355440a0c2fb5e16259d7ae381b37ed5 libjava/win32-threads.cc + 434d5e5e91727dec004f0d1d1fab47ec libjava/win32.cc +-3028541cfe03d9b333d30746fe7ab190 libmudflap/ChangeLog ++6974d96b668f84263d826c83cc5c14a8 libmudflap/ChangeLog + 662781c9b6e72ed44b0aedce9d9524e0 libmudflap/Makefile.am + 9fcd497f1a80bf7cd9d72b6731b1dc80 libmudflap/Makefile.in + 9883ed42b491d8aea83fdde90561cf2a libmudflap/acinclude.m4 +@@ -59576,6 +59698,7 @@ aa7f3be8fbb9c6a0ff826c01c206365b libmudflap/testsuite + acc384ac57e4917edca343c3abe0feb0 libmudflap/testsuite/libmudflap.c/fail40-frag.c + 9e31dcfd9573de93e2b46d9f0e382376 libmudflap/testsuite/libmudflap.c/fail5-frag.c + b86a1b2de633cab886f73596afbb0057 libmudflap/testsuite/libmudflap.c/fail6-frag.c ++73c32317a169f349762c20ff646fe437 libmudflap/testsuite/libmudflap.c/fail68-frag.c + 2a52c49e96c0b6cfecc1650a8fd4f934 libmudflap/testsuite/libmudflap.c/fail7-frag.c + d794af109bde1eb861f61cefb018c86f libmudflap/testsuite/libmudflap.c/fail8-frag.c + e92f210a8cbfcec2e2aeef2b18e31c18 libmudflap/testsuite/libmudflap.c/fail9-frag.c +@@ -59641,7 +59764,7 @@ c5335252518805ab1392c05df57648dd libmudflap/testsuite + 9c6e0ee7556df21372ba89fcb2612d17 libmudflap/testsuite/libmudflap.cth/pass40-frag.c + 725a94441658e42a6adf2add0a0a419d libmudflap/testsuite/libmudflap.cth/pass59-frag.c + 60168171460c9277504005955b1ea1b8 libmudflap/testsuite/mfconfig.exp.in +-6c246af194628ad51cc292af32f2036f libobjc/ChangeLog ++ab65dbc934b4d70cc47d0a1d2eaa48d9 libobjc/ChangeLog + 7bc9afc044e9cc3beacb6b513cd3f6ad libobjc/Makefile.in + c29f84b3cc952e29b58505493f5a83d2 libobjc/NXConstStr.m + 989107befe0f3cbd2cdcf09c37efd3f1 libobjc/Object.m +@@ -59699,7 +59822,7 @@ c90ce33066aad1708a9e1982519b72e6 libobjc/thr-single.c + c90ce33066aad1708a9e1982519b72e6 libobjc/thr-vxworks.c + 6236bc1c75de340fddb7f419e3b7ec36 libobjc/thr-win32.c + fde3505ce0d880daddfed519e0f248a8 libobjc/thr.c +-ed6fb68306dc4f23f17ad6d62e41a9b8 libssp/ChangeLog ++de57534cd0b8891e4023a293f5669b3f libssp/ChangeLog + 946ef3fcb1ebffb4935ce7b99a87b152 libssp/Makefile.am + 7ef62b37866c58ea1d187a0a70e19adf libssp/Makefile.in + 954d678163d37b6f9bbffcf468f7d4f8 libssp/aclocal.m4 +@@ -59728,7 +59851,7 @@ aeb2f84c5e8ba3215469d507bd2efe57 libssp/ssp/string.h + e9ab923d2562bf5f5be6883dfb9f0184 libssp/strncpy-chk.c + 5e0d8b8a766c31b12354baec1b7a159c libssp/vsnprintf-chk.c + f56ab1f8922a16f7e9e4f5270ae1e34e libssp/vsprintf-chk.c +-432da8b8b2747671dcd748b9fa504fe3 libstdc++-v3/ChangeLog ++b60839009d29e192152742c5b9784d83 libstdc++-v3/ChangeLog + 0cda0576312959181333fb6113d11fca libstdc++-v3/ChangeLog-1998 + 7ff71dd25a4fdbb908c1bfffea126a10 libstdc++-v3/ChangeLog-1999 + 3c2968659337a7726b4d66af48d049b6 libstdc++-v3/ChangeLog-2000 +@@ -62354,8 +62477,8 @@ b2a7a993cdbde8cd74970b1c0973761b libstdc++-v3/testsui + fcffe33041ea1784c7a28c8b232c8bf0 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc + 1205785e87f887870fe3bb0c65ed6411 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc + 1e294382666c87d6b171d96b3e847bd2 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc +-1a1ca5b0ae51112f3eb6aa4abc383c33 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc +-d64bb9fe937b68d63db9651eca6cb7b3 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc ++0601c176f898516ab5f80fb33906aaad libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc ++fd2f2c61603a4f87a803dca999896039 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc + 85f5b08c997776d266181c40c51f40cd libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc + 93e813ca5cb586a1ca82cfa38ff1f661 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc + 45902cef533c4e56edc2ec7ef9fdc6a3 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc +@@ -65863,7 +65986,7 @@ e980c4d943ac2af18dcbc35297afbdc6 libstdc++-v3/testsui + 2199109f4c8e0e4c43495018dc3f2e0b libtool.m4 + 247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4 + f36c50fb55330f76ac89cd1b615db74a ltmain.sh +-5ca066fde5cf10d1a3b595a8054a44a8 lto-plugin/ChangeLog ++37f3e977ea050ffa56e82a2fd36ff551 lto-plugin/ChangeLog + 1e894c23a6c369f91b3a4320cbe89cdd lto-plugin/Makefile.am + 00aa9fa873d8f29985456d63483c3192 lto-plugin/Makefile.in + f1c199af664e67ba6a5b18130b145549 lto-plugin/aclocal.m4 +@@ -65875,7 +65998,7 @@ dee72a6a60e99528b0d17bf3ff9a1e15 ltoptions.m4 + bc2f6032c98896249eadb56177c7d357 ltsugar.m4 + c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4 + 293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4 +-79c81979b25de822c62203ff32e4c42b maintainer-scripts/ChangeLog ++b83f70e2895a7affac2983e5fe3d6923 maintainer-scripts/ChangeLog + 9bf52719995189b7572953a25ad202ed maintainer-scripts/README + 2b1fc7dbd32e35982100ccf33564e7a6 maintainer-scripts/crontab + 625e9f8986cc469e726ccbbe82c509ac maintainer-scripts/gcc_release +@@ -65889,7 +66012,7 @@ fbe2467afef81c41c166173adeb0ee20 mkdep + a20215c156b06261d944ae7f30a3b75c move-if-change + cf2baa0854f564a7785307e79f155efc symlink-tree + 69678e72941d681665c3731bfb3044ab ylwrap +-86cafe9a15ff80890ede923eafb22b97 zlib/ChangeLog ++0ebe85dcd8ca5ee6ddf430ab69ed7c79 zlib/ChangeLog + 449ffee0c7cffb24de0bcf2a68a70c2b zlib/ChangeLog.gcj + 2f46720fda5ab68a1e495009895d874c zlib/FAQ + 8851ace55681b1664d97c045d71e339b zlib/INDEX diff --git a/lang/gcc45/patches/patch-Makefile.def b/lang/gcc45/patches/patch-Makefile.def new file mode 100644 index 000000000..26376c583 --- /dev/null +++ b/lang/gcc45/patches/patch-Makefile.def @@ -0,0 +1,41 @@ +$NetBSD$ + +--- Makefile.def.orig Thu Jun 10 17:05:59 2010 ++++ Makefile.def +@@ -164,7 +164,6 @@ target_modules = { module= libtermcap; no_check=true; + missing=maintainer-clean; }; + target_modules = { module= winsup; }; + target_modules = { module= libgloss; no_check=true; }; +-target_modules = { module= libiberty; }; + target_modules = { module= gperf; }; + target_modules = { module= examples; no_check=true; no_install=true; }; + target_modules = { module= libffi; }; +@@ -532,7 +531,6 @@ dependencies = { module=configure-target-boehm-gc; on= + dependencies = { module=configure-target-boehm-gc; on=all-target-libstdc++-v3; }; + dependencies = { module=configure-target-fastjar; on=configure-target-zlib; }; + dependencies = { module=all-target-fastjar; on=all-target-zlib; }; +-dependencies = { module=all-target-fastjar; on=all-target-libiberty; }; + dependencies = { module=configure-target-libjava; on=configure-target-zlib; }; + dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; }; + dependencies = { module=configure-target-libjava; on=configure-target-qthreads; }; +@@ -543,9 +541,7 @@ dependencies = { module=all-target-libjava; on=all-tar + dependencies = { module=all-target-libjava; on=all-target-qthreads; }; + dependencies = { module=all-target-libjava; on=all-target-libffi; }; + dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; +-dependencies = { module=all-target-libobjc; on=all-target-libiberty; }; + dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; +-dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; }; + dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; + // parallel_list.o and parallel_settings.o depend on omp.h, which is + // generated by the libgomp configure. Unfortunately, due to the use of +@@ -560,10 +556,7 @@ lang_env_dependencies = { module=winsup; }; + lang_env_dependencies = { module=qthreads; }; + + dependencies = { module=all-target-libgloss; on=all-target-newlib; }; +-dependencies = { module=all-target-winsup; on=all-target-libiberty; }; + dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; +-dependencies = { module=configure-target-libiberty; on=all-binutils; }; +-dependencies = { module=configure-target-libiberty; on=all-ld; }; + dependencies = { module=configure-target-newlib; on=all-binutils; }; + dependencies = { module=configure-target-newlib; on=all-ld; }; + diff --git a/lang/gcc45/patches/patch-Makefile.in b/lang/gcc45/patches/patch-Makefile.in new file mode 100644 index 000000000..5bc134d05 --- /dev/null +++ b/lang/gcc45/patches/patch-Makefile.in @@ -0,0 +1,659 @@ +$NetBSD$ + +--- /usr/pkgsrc/work/lang/gcc45/work/gcc-4.5.3/Makefile.in.orig Thu Jun 10 17:05:59 2010 ++++ /usr/pkgsrc/work/lang/gcc45/work/gcc-4.5.3/Makefile.in +@@ -530,7 +530,7 @@ COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@ + COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@ + COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@ + +-CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ ++CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ -B/usr/lib + CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ + + LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) +@@ -930,7 +930,6 @@ configure-target: \ + maybe-configure-target-libtermcap \ + maybe-configure-target-winsup \ + maybe-configure-target-libgloss \ +- maybe-configure-target-libiberty \ + maybe-configure-target-gperf \ + maybe-configure-target-examples \ + maybe-configure-target-libffi \ +@@ -1112,7 +1111,6 @@ all-target: maybe-all-target-libobjc + all-target: maybe-all-target-libtermcap + all-target: maybe-all-target-winsup + all-target: maybe-all-target-libgloss +-all-target: maybe-all-target-libiberty + all-target: maybe-all-target-gperf + all-target: maybe-all-target-examples + all-target: maybe-all-target-libffi +@@ -1233,7 +1231,6 @@ info-target: maybe-info-target-libobjc + info-target: maybe-info-target-libtermcap + info-target: maybe-info-target-winsup + info-target: maybe-info-target-libgloss +-info-target: maybe-info-target-libiberty + info-target: maybe-info-target-gperf + info-target: maybe-info-target-examples + info-target: maybe-info-target-libffi +@@ -1347,7 +1344,6 @@ dvi-target: maybe-dvi-target-libobjc + dvi-target: maybe-dvi-target-libtermcap + dvi-target: maybe-dvi-target-winsup + dvi-target: maybe-dvi-target-libgloss +-dvi-target: maybe-dvi-target-libiberty + dvi-target: maybe-dvi-target-gperf + dvi-target: maybe-dvi-target-examples + dvi-target: maybe-dvi-target-libffi +@@ -1461,7 +1457,6 @@ pdf-target: maybe-pdf-target-libobjc + pdf-target: maybe-pdf-target-libtermcap + pdf-target: maybe-pdf-target-winsup + pdf-target: maybe-pdf-target-libgloss +-pdf-target: maybe-pdf-target-libiberty + pdf-target: maybe-pdf-target-gperf + pdf-target: maybe-pdf-target-examples + pdf-target: maybe-pdf-target-libffi +@@ -1575,7 +1570,6 @@ html-target: maybe-html-target-libobjc + html-target: maybe-html-target-libtermcap + html-target: maybe-html-target-winsup + html-target: maybe-html-target-libgloss +-html-target: maybe-html-target-libiberty + html-target: maybe-html-target-gperf + html-target: maybe-html-target-examples + html-target: maybe-html-target-libffi +@@ -1689,7 +1683,6 @@ TAGS-target: maybe-TAGS-target-libobjc + TAGS-target: maybe-TAGS-target-libtermcap + TAGS-target: maybe-TAGS-target-winsup + TAGS-target: maybe-TAGS-target-libgloss +-TAGS-target: maybe-TAGS-target-libiberty + TAGS-target: maybe-TAGS-target-gperf + TAGS-target: maybe-TAGS-target-examples + TAGS-target: maybe-TAGS-target-libffi +@@ -1803,7 +1796,6 @@ install-info-target: maybe-install-info-target-libobjc + install-info-target: maybe-install-info-target-libtermcap + install-info-target: maybe-install-info-target-winsup + install-info-target: maybe-install-info-target-libgloss +-install-info-target: maybe-install-info-target-libiberty + install-info-target: maybe-install-info-target-gperf + install-info-target: maybe-install-info-target-examples + install-info-target: maybe-install-info-target-libffi +@@ -1917,7 +1909,6 @@ install-pdf-target: maybe-install-pdf-target-libobjc + install-pdf-target: maybe-install-pdf-target-libtermcap + install-pdf-target: maybe-install-pdf-target-winsup + install-pdf-target: maybe-install-pdf-target-libgloss +-install-pdf-target: maybe-install-pdf-target-libiberty + install-pdf-target: maybe-install-pdf-target-gperf + install-pdf-target: maybe-install-pdf-target-examples + install-pdf-target: maybe-install-pdf-target-libffi +@@ -2031,7 +2022,6 @@ install-html-target: maybe-install-html-target-libobjc + install-html-target: maybe-install-html-target-libtermcap + install-html-target: maybe-install-html-target-winsup + install-html-target: maybe-install-html-target-libgloss +-install-html-target: maybe-install-html-target-libiberty + install-html-target: maybe-install-html-target-gperf + install-html-target: maybe-install-html-target-examples + install-html-target: maybe-install-html-target-libffi +@@ -2145,7 +2135,6 @@ installcheck-target: maybe-installcheck-target-libobjc + installcheck-target: maybe-installcheck-target-libtermcap + installcheck-target: maybe-installcheck-target-winsup + installcheck-target: maybe-installcheck-target-libgloss +-installcheck-target: maybe-installcheck-target-libiberty + installcheck-target: maybe-installcheck-target-gperf + installcheck-target: maybe-installcheck-target-examples + installcheck-target: maybe-installcheck-target-libffi +@@ -2259,7 +2248,6 @@ mostlyclean-target: maybe-mostlyclean-target-libobjc + mostlyclean-target: maybe-mostlyclean-target-libtermcap + mostlyclean-target: maybe-mostlyclean-target-winsup + mostlyclean-target: maybe-mostlyclean-target-libgloss +-mostlyclean-target: maybe-mostlyclean-target-libiberty + mostlyclean-target: maybe-mostlyclean-target-gperf + mostlyclean-target: maybe-mostlyclean-target-examples + mostlyclean-target: maybe-mostlyclean-target-libffi +@@ -2373,7 +2361,6 @@ clean-target: maybe-clean-target-libobjc + clean-target: maybe-clean-target-libtermcap + clean-target: maybe-clean-target-winsup + clean-target: maybe-clean-target-libgloss +-clean-target: maybe-clean-target-libiberty + clean-target: maybe-clean-target-gperf + clean-target: maybe-clean-target-examples + clean-target: maybe-clean-target-libffi +@@ -2487,7 +2474,6 @@ distclean-target: maybe-distclean-target-libobjc + distclean-target: maybe-distclean-target-libtermcap + distclean-target: maybe-distclean-target-winsup + distclean-target: maybe-distclean-target-libgloss +-distclean-target: maybe-distclean-target-libiberty + distclean-target: maybe-distclean-target-gperf + distclean-target: maybe-distclean-target-examples + distclean-target: maybe-distclean-target-libffi +@@ -2601,7 +2587,6 @@ maintainer-clean-target: maybe-maintainer-clean-target + maintainer-clean-target: maybe-maintainer-clean-target-libtermcap + maintainer-clean-target: maybe-maintainer-clean-target-winsup + maintainer-clean-target: maybe-maintainer-clean-target-libgloss +-maintainer-clean-target: maybe-maintainer-clean-target-libiberty + maintainer-clean-target: maybe-maintainer-clean-target-gperf + maintainer-clean-target: maybe-maintainer-clean-target-examples + maintainer-clean-target: maybe-maintainer-clean-target-libffi +@@ -2770,7 +2755,6 @@ check-target: \ + maybe-check-target-libtermcap \ + maybe-check-target-winsup \ + maybe-check-target-libgloss \ +- maybe-check-target-libiberty \ + maybe-check-target-gperf \ + maybe-check-target-examples \ + maybe-check-target-libffi \ +@@ -2991,7 +2975,6 @@ install-target: \ + maybe-install-target-libtermcap \ + maybe-install-target-winsup \ + maybe-install-target-libgloss \ +- maybe-install-target-libiberty \ + maybe-install-target-gperf \ + maybe-install-target-examples \ + maybe-install-target-libffi \ +@@ -50216,448 +50199,6 @@ maintainer-clean-target-libgloss: + + + +-.PHONY: configure-target-libiberty maybe-configure-target-libiberty +-maybe-configure-target-libiberty: +-@if gcc-bootstrap +-configure-target-libiberty: stage_current +-@endif gcc-bootstrap +-@if target-libiberty +-maybe-configure-target-libiberty: configure-target-libiberty +-configure-target-libiberty: +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- echo "Checking multilib configuration for libiberty..."; \ +- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ +- $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \ +- if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \ +- if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \ +- rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \ +- else \ +- rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \ +- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ +- fi; \ +- else \ +- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ +- fi; \ +- test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \ +- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo Configuring in $(TARGET_SUBDIR)/libiberty; \ +- cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \ +- case $(srcdir) in \ +- /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ +- *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \ +- sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ +- esac; \ +- srcdiroption="--srcdir=$${topdir}/libiberty"; \ +- libsrcdir="$$s/libiberty"; \ +- rm -f no-such-file || : ; \ +- CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ +- $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ +- --target=${target_alias} $${srcdiroption} \ +- || exit 1 +-@endif target-libiberty +- +- +- +- +- +-.PHONY: all-target-libiberty maybe-all-target-libiberty +-maybe-all-target-libiberty: +-@if gcc-bootstrap +-all-target-libiberty: stage_current +-@endif gcc-bootstrap +-@if target-libiberty +-TARGET-target-libiberty=all +-maybe-all-target-libiberty: all-target-libiberty +-all-target-libiberty: configure-target-libiberty +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ +- $(TARGET-target-libiberty)) +-@endif target-libiberty +- +- +- +- +- +-.PHONY: check-target-libiberty maybe-check-target-libiberty +-maybe-check-target-libiberty: +-@if target-libiberty +-maybe-check-target-libiberty: check-target-libiberty +- +-check-target-libiberty: +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) check) +- +-@endif target-libiberty +- +-.PHONY: install-target-libiberty maybe-install-target-libiberty +-maybe-install-target-libiberty: +-@if target-libiberty +-maybe-install-target-libiberty: install-target-libiberty +- +-install-target-libiberty: installdirs +- @: $(MAKE); $(unstage) +- @r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(TARGET_FLAGS_TO_PASS) install) +- +-@endif target-libiberty +- +-# Other targets (info, dvi, pdf, etc.) +- +-.PHONY: maybe-info-target-libiberty info-target-libiberty +-maybe-info-target-libiberty: +-@if target-libiberty +-maybe-info-target-libiberty: info-target-libiberty +- +-info-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- info) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty +-maybe-dvi-target-libiberty: +-@if target-libiberty +-maybe-dvi-target-libiberty: dvi-target-libiberty +- +-dvi-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- dvi) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty +-maybe-pdf-target-libiberty: +-@if target-libiberty +-maybe-pdf-target-libiberty: pdf-target-libiberty +- +-pdf-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- pdf) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-html-target-libiberty html-target-libiberty +-maybe-html-target-libiberty: +-@if target-libiberty +-maybe-html-target-libiberty: html-target-libiberty +- +-html-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- html) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty +-maybe-TAGS-target-libiberty: +-@if target-libiberty +-maybe-TAGS-target-libiberty: TAGS-target-libiberty +- +-TAGS-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- TAGS) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty +-maybe-install-info-target-libiberty: +-@if target-libiberty +-maybe-install-info-target-libiberty: install-info-target-libiberty +- +-install-info-target-libiberty: \ +- configure-target-libiberty \ +- info-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- install-info) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty +-maybe-install-pdf-target-libiberty: +-@if target-libiberty +-maybe-install-pdf-target-libiberty: install-pdf-target-libiberty +- +-install-pdf-target-libiberty: \ +- configure-target-libiberty \ +- pdf-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- install-pdf) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty +-maybe-install-html-target-libiberty: +-@if target-libiberty +-maybe-install-html-target-libiberty: install-html-target-libiberty +- +-install-html-target-libiberty: \ +- configure-target-libiberty \ +- html-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- install-html) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty +-maybe-installcheck-target-libiberty: +-@if target-libiberty +-maybe-installcheck-target-libiberty: installcheck-target-libiberty +- +-installcheck-target-libiberty: \ +- configure-target-libiberty +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- installcheck) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty +-maybe-mostlyclean-target-libiberty: +-@if target-libiberty +-maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty +- +-mostlyclean-target-libiberty: +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- mostlyclean) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-clean-target-libiberty clean-target-libiberty +-maybe-clean-target-libiberty: +-@if target-libiberty +-maybe-clean-target-libiberty: clean-target-libiberty +- +-clean-target-libiberty: +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- clean) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty +-maybe-distclean-target-libiberty: +-@if target-libiberty +-maybe-distclean-target-libiberty: distclean-target-libiberty +- +-distclean-target-libiberty: +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- distclean) \ +- || exit 1 +- +-@endif target-libiberty +- +-.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty +-maybe-maintainer-clean-target-libiberty: +-@if target-libiberty +-maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty +- +-maintainer-clean-target-libiberty: +- @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ +- r=`${PWD_COMMAND}`; export r; \ +- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +- $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \ +- for flag in $(EXTRA_TARGET_FLAGS); do \ +- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +- done; \ +- (cd $(TARGET_SUBDIR)/libiberty && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +- "RANLIB=$${RANLIB}" \ +- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +- maintainer-clean) \ +- || exit 1 +- +-@endif target-libiberty +- +- +- +- +- + .PHONY: configure-target-gperf maybe-configure-target-gperf + maybe-configure-target-gperf: + @if gcc-bootstrap +@@ -57654,7 +57195,6 @@ configure-target-libobjc: stage_last + configure-target-libtermcap: stage_last + configure-target-winsup: stage_last + configure-target-libgloss: stage_last +-configure-target-libiberty: stage_last + configure-target-gperf: stage_last + configure-target-examples: stage_last + configure-target-libffi: stage_last +@@ -57683,7 +57223,6 @@ configure-target-libobjc: maybe-all-gcc + configure-target-libtermcap: maybe-all-gcc + configure-target-winsup: maybe-all-gcc + configure-target-libgloss: maybe-all-gcc +-configure-target-libiberty: maybe-all-gcc + configure-target-gperf: maybe-all-gcc + configure-target-examples: maybe-all-gcc + configure-target-libffi: maybe-all-gcc +@@ -58395,7 +57934,6 @@ configure-target-boehm-gc: maybe-configure-target-qthr + configure-target-boehm-gc: maybe-all-target-libstdc++-v3 + configure-target-fastjar: maybe-configure-target-zlib + all-target-fastjar: maybe-all-target-zlib +-all-target-fastjar: maybe-all-target-libiberty + configure-target-libjava: maybe-configure-target-zlib + configure-target-libjava: maybe-configure-target-boehm-gc + configure-target-libjava: maybe-configure-target-qthreads +@@ -58406,9 +57944,7 @@ all-target-libjava: maybe-all-target-boehm-gc + all-target-libjava: maybe-all-target-qthreads + all-target-libjava: maybe-all-target-libffi + configure-target-libobjc: maybe-configure-target-boehm-gc +-all-target-libobjc: maybe-all-target-libiberty + all-target-libobjc: maybe-all-target-boehm-gc +-all-target-libstdc++-v3: maybe-all-target-libiberty + configure-target-libstdc++-v3: maybe-configure-target-libgomp + + configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp +@@ -58426,10 +57962,7 @@ all-stage4-target-libstdc++-v3: maybe-configure-stage4 + all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp + all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp + all-target-libgloss: maybe-all-target-newlib +-all-target-winsup: maybe-all-target-libiberty + all-target-winsup: maybe-all-target-libtermcap +-configure-target-libiberty: maybe-all-binutils +-configure-target-libiberty: maybe-all-ld + configure-target-newlib: maybe-all-binutils + configure-target-newlib: maybe-all-ld + +@@ -58464,7 +57997,6 @@ configure-target-libobjc: maybe-all-target-libgcc + configure-target-libtermcap: maybe-all-target-libgcc + configure-target-winsup: maybe-all-target-libgcc + configure-target-libgloss: maybe-all-target-libgcc +-configure-target-libiberty: maybe-all-target-libgcc + configure-target-gperf: maybe-all-target-libgcc + configure-target-examples: maybe-all-target-libgcc + configure-target-libffi: maybe-all-target-libgcc +@@ -58493,7 +58025,6 @@ configure-target-libobjc: maybe-all-target-newlib mayb + configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss +- + + + configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss diff --git a/lang/gcc45/patches/patch-NEWS b/lang/gcc45/patches/patch-NEWS new file mode 100644 index 000000000..a72a1dd14 --- /dev/null +++ b/lang/gcc45/patches/patch-NEWS @@ -0,0 +1,823 @@ +$NetBSD$ + +--- NEWS.orig Thu Apr 28 14:32:00 2011 ++++ NEWS +@@ -9,27 +9,30 @@ http://gcc.gnu.org/gcc-4.5/index.html + + GCC 4.5 Release Series + +- Apr 28, 2011 ++ Jul 2, 2012 + + The [1]GNU project and the GCC developers are pleased to announce the +- release of GCC 4.5.3. ++ release of GCC 4.5.4. + + This release is a bug-fix release, containing fixes for regressions in +- GCC 4.5.2 relative to previous releases of GCC. ++ GCC 4.5.3 relative to previous releases of GCC. + + Release History + ++ GCC 4.5.4 ++ Jul 2, 2012 ([2]changes) ++ + GCC 4.5.3 +- Apr 28, 2011 ([2]changes) ++ Apr 28, 2011 ([3]changes) + + GCC 4.5.2 +- Dec 16, 2010 ([3]changes) ++ Dec 16, 2010 ([4]changes) + + GCC 4.5.1 +- Jul 31, 2010 ([4]changes) ++ Jul 31, 2010 ([5]changes) + + GCC 4.5.0 +- April 14, 2010 ([5]changes) ++ April 14, 2010 ([6]changes) + + References and Acknowledgements + +@@ -37,33 +40,33 @@ References and Acknowledgements + supports several other languages aside from C, it now stands for the + GNU Compiler Collection. + +- A list of [6]successful builds is updated as new information becomes ++ A list of [7]successful builds is updated as new information becomes + available. + + The GCC developers would like to thank the numerous people that have + contributed new features, improvements, bug fixes, and other changes as +- well as test results to GCC. This [7]amazing group of volunteers is ++ well as test results to GCC. This [8]amazing group of volunteers is + what makes GCC successful. + +- For additional information about GCC please refer to the [8]GCC project +- web site or contact the [9]GCC development mailing list. ++ For additional information about GCC please refer to the [9]GCC project ++ web site or contact the [10]GCC development mailing list. + +- To obtain GCC please use [10]our mirror sites or [11]our SVN server. ++ To obtain GCC please use [11]our mirror sites or [12]our SVN server. + + + For questions related to the use of GCC, please consult these web +- pages and the [12]GCC manuals. If that fails, the +- [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [13]GCC manuals. If that fails, the ++ [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [14]gcc@gcc.gnu.org. All of [15]our lists have public ++ list at [15]gcc@gcc.gnu.org. All of [16]our lists have public + archives. + +- Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [17]maintained by the GCC team. Last modified +- 2011-04-28[18]. ++ These pages are [18]maintained by the GCC team. Last modified ++ 2012-07-02[19]. + + References + +@@ -72,19 +75,20 @@ References + 3. http://gcc.gnu.org/gcc-4.5/changes.html + 4. http://gcc.gnu.org/gcc-4.5/changes.html + 5. http://gcc.gnu.org/gcc-4.5/changes.html +- 6. http://gcc.gnu.org/gcc-4.5/buildstat.html +- 7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html +- 8. http://gcc.gnu.org/index.html +- 9. mailto:gcc@gcc.gnu.org +- 10. http://gcc.gnu.org/mirrors.html +- 11. http://gcc.gnu.org/svn.html +- 12. http://gcc.gnu.org/onlinedocs/ +- 13. mailto:gcc-help@gcc.gnu.org +- 14. mailto:gcc@gcc.gnu.org +- 15. http://gcc.gnu.org/lists.html +- 16. http://www.fsf.org/ +- 17. http://gcc.gnu.org/about.html +- 18. http://validator.w3.org/check/referer ++ 6. http://gcc.gnu.org/gcc-4.5/changes.html ++ 7. http://gcc.gnu.org/gcc-4.5/buildstat.html ++ 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ++ 9. http://gcc.gnu.org/index.html ++ 10. mailto:gcc@gcc.gnu.org ++ 11. http://gcc.gnu.org/mirrors.html ++ 12. http://gcc.gnu.org/svn.html ++ 13. http://gcc.gnu.org/onlinedocs/ ++ 14. mailto:gcc-help@gcc.gnu.org ++ 15. mailto:gcc@gcc.gnu.org ++ 16. http://gcc.gnu.org/lists.html ++ 17. http://www.fsf.org/ ++ 18. http://gcc.gnu.org/about.html ++ 19. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.5/changes.html + +@@ -171,10 +175,10 @@ General Optimizer Improvements + (e.g. csinf and csinl) are also handled. + * A new link-time optimizer has been added ([8]-flto). When this + option is used, GCC generates a bytecode representation of each +- input file and writes it to special ELF sections in each object ++ input file and writes it to specially-named sections in each object + file. When the object files are linked together, all the function +- bodies are read from these ELF sections and instantiated as if they +- had been part of the same translation unit. This enables ++ bodies are read from these named sections and instantiated as if ++ they had been part of the same translation unit. This enables + interprocedural optimizations to work across different files (and + even different languages), potentially improving the performance of + the generated code. To use the link-timer optimizer, -flto needs to +@@ -490,8 +494,6 @@ vector-size: improvement = 3: call stack = 0x804842c . + ATAN(Y,X) is now an alias for ATAN2(Y,X). + + The BLOCK construct has been implemented. + +- Java (GCJ) +- + New Targets and Target Specific Improvements + + AIX +@@ -595,8 +597,6 @@ New Targets and Target Specific Improvements + use_debug_exception_return. See the documentation for more details + about these attributes. + +- picochip +- + RS/6000 (POWER/PowerPC) + + * GCC now supports the Power ISA 2.06, which includes the VSX +@@ -616,6 +616,11 @@ New Targets and Target Specific Improvements + * GCC can now be configured with options --with-cpu-32, + --with-cpu-64, --with-tune-32 and --with-tune-64 to control the + default optimization separately for 32-bit and 64-bit modes. ++ * Starting with GCC 4.5.4, vectors of type vector long long or vector ++ long are passed and returned in the same method as other vectors ++ with the VSX instruction set. Previously the GCC compiler did not ++ adhere to the ABI for 128-bit vectors with 64-bit integer base ++ types (PR 48857). This is also fixed in the GCC 4.6.1 release. + + RX + +@@ -638,7 +643,7 @@ Operating Systems + * Numerous other minor bugfixes and improvements, and substantial + enhancements to the Fortran language support library. + +-Documentation improvements ++ > + + Other significant improvements + +@@ -699,11 +704,11 @@ GCC 4.5.2 + GCC 4.5.3 + + This is the [27]list of problem reports (PRs) from GCC's bug tracking +- system that are known to be fixed in the 4.5.2 release. This list might ++ system that are known to be fixed in the 4.5.3 release. This list might + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + +- On the PowerPC compiler, the altivec builtin functions vec_ld and ++ On the PowerPC compiler, the Altivec builtin functions vec_ld and + vec_st have been modified to generate the Altivec memory instructions + LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5 + release, these builtin functions were changed to generate VSX memory +@@ -713,20 +718,27 @@ GCC 4.5.3 + vec_vsx_ld and vec_vsx_st which always generates the VSX memory + instructions. + ++GCC 4.5.4 + ++ This is the [28]list of problem reports (PRs) from GCC's bug tracking ++ system that are known to be fixed in the 4.5.4 release. This list might ++ not be complete (that is, it is possible that some PRs that have been ++ fixed are not listed here). ++ ++ + For questions related to the use of GCC, please consult these web +- pages and the [28]GCC manuals. If that fails, the +- [29]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [29]GCC manuals. If that fails, the ++ [30]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [30]gcc@gcc.gnu.org. All of [31]our lists have public ++ list at [31]gcc@gcc.gnu.org. All of [32]our lists have public + archives. + +- Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [33]maintained by the GCC team. Last modified +- 2011-04-25[34]. ++ These pages are [34]maintained by the GCC team. Last modified ++ 2012-07-02[35]. + + References + +@@ -756,49 +768,53 @@ References + 24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1 + 25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801 + 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 +- 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 +- 28. http://gcc.gnu.org/onlinedocs/ +- 29. mailto:gcc-help@gcc.gnu.org +- 30. mailto:gcc@gcc.gnu.org +- 31. http://gcc.gnu.org/lists.html +- 32. http://www.fsf.org/ +- 33. http://gcc.gnu.org/about.html +- 34. http://validator.w3.org/check/referer ++ 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3 ++ 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4 ++ 29. http://gcc.gnu.org/onlinedocs/ ++ 30. mailto:gcc-help@gcc.gnu.org ++ 31. mailto:gcc@gcc.gnu.org ++ 32. http://gcc.gnu.org/lists.html ++ 33. http://www.fsf.org/ ++ 34. http://gcc.gnu.org/about.html ++ 35. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.4/index.html + + GCC 4.4 Release Series + +- April 16, 2011 ++ March 13, 2012 + + The [1]GNU project and the GCC developers are pleased to announce the +- release of GCC 4.4.6. ++ release of GCC 4.4.7. + + This release is a bug-fix release, containing fixes for regressions in +- GCC 4.4.5 relative to previous releases of GCC. ++ GCC 4.4.6 relative to previous releases of GCC. + + Release History + ++ GCC 4.4.7 ++ March 13, 2012 ([2]changes) ++ + GCC 4.4.6 +- April 16, 2011 ([2]changes) ++ April 16, 2011 ([3]changes) + + GCC 4.4.5 +- October 1, 2010 ([3]changes) ++ October 1, 2010 ([4]changes) + + GCC 4.4.4 +- April 29, 2010 ([4]changes) ++ April 29, 2010 ([5]changes) + + GCC 4.4.3 +- January 21, 2010 ([5]changes) ++ January 21, 2010 ([6]changes) + + GCC 4.4.2 +- October 15, 2009 ([6]changes) ++ October 15, 2009 ([7]changes) + + GCC 4.4.1 +- July 22, 2009 ([7]changes) ++ July 22, 2009 ([8]changes) + + GCC 4.4.0 +- April 21, 2009 ([8]changes) ++ April 21, 2009 ([9]changes) + + References and Acknowledgements + +@@ -806,33 +822,33 @@ References and Acknowledgements + supports several other languages aside from C, it now stands for the + GNU Compiler Collection. + +- A list of [9]successful builds is updated as new information becomes ++ A list of [10]successful builds is updated as new information becomes + available. + + The GCC developers would like to thank the numerous people that have + contributed new features, improvements, bug fixes, and other changes as +- well as test results to GCC. This [10]amazing group of volunteers is ++ well as test results to GCC. This [11]amazing group of volunteers is + what makes GCC successful. + +- For additional information about GCC please refer to the [11]GCC +- project web site or contact the [12]GCC development mailing list. ++ For additional information about GCC please refer to the [12]GCC ++ project web site or contact the [13]GCC development mailing list. + +- To obtain GCC please use [13]our mirror sites or [14]our SVN server. ++ To obtain GCC please use [14]our mirror sites or [15]our SVN server. + + + For questions related to the use of GCC, please consult these web +- pages and the [15]GCC manuals. If that fails, the +- [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [16]GCC manuals. If that fails, the ++ [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [17]gcc@gcc.gnu.org. All of [18]our lists have public ++ list at [18]gcc@gcc.gnu.org. All of [19]our lists have public + archives. + +- Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [20]maintained by the GCC team. Last modified +- 2011-04-25[21]. ++ These pages are [21]maintained by the GCC team. Last modified ++ 2012-03-13[22]. + + References + +@@ -844,26 +860,27 @@ References + 6. http://gcc.gnu.org/gcc-4.4/changes.html + 7. http://gcc.gnu.org/gcc-4.4/changes.html + 8. http://gcc.gnu.org/gcc-4.4/changes.html +- 9. http://gcc.gnu.org/gcc-4.4/buildstat.html +- 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html +- 11. http://gcc.gnu.org/index.html +- 12. mailto:gcc@gcc.gnu.org +- 13. http://gcc.gnu.org/mirrors.html +- 14. http://gcc.gnu.org/svn.html +- 15. http://gcc.gnu.org/onlinedocs/ +- 16. mailto:gcc-help@gcc.gnu.org +- 17. mailto:gcc@gcc.gnu.org +- 18. http://gcc.gnu.org/lists.html +- 19. http://www.fsf.org/ +- 20. http://gcc.gnu.org/about.html +- 21. http://validator.w3.org/check/referer ++ 9. http://gcc.gnu.org/gcc-4.4/changes.html ++ 10. http://gcc.gnu.org/gcc-4.4/buildstat.html ++ 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ++ 12. http://gcc.gnu.org/index.html ++ 13. mailto:gcc@gcc.gnu.org ++ 14. http://gcc.gnu.org/mirrors.html ++ 15. http://gcc.gnu.org/svn.html ++ 16. http://gcc.gnu.org/onlinedocs/ ++ 17. mailto:gcc-help@gcc.gnu.org ++ 18. mailto:gcc@gcc.gnu.org ++ 19. http://gcc.gnu.org/lists.html ++ 20. http://www.fsf.org/ ++ 21. http://gcc.gnu.org/about.html ++ 22. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.4/changes.html + + GCC 4.4 Release Series + Changes, New Features, and Fixes + +- The latest release in the 4.4 release series is [1]GCC 4.4.6. ++ The latest release in the 4.4 release series is [1]GCC 4.4.7. + + Caveats + +@@ -1442,24 +1459,31 @@ GCC 4.4.6 + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + ++GCC 4.4.7 + ++ This is the [19]list of problem reports (PRs) from GCC's bug tracking ++ system that are known to be fixed in the 4.4.7 release. This list might ++ not be complete (that is, it is possible that some PRs that have been ++ fixed are not listed here). ++ ++ + For questions related to the use of GCC, please consult these web +- pages and the [19]GCC manuals. If that fails, the +- [20]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [20]GCC manuals. If that fails, the ++ [21]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [21]gcc@gcc.gnu.org. All of [22]our lists have public ++ list at [22]gcc@gcc.gnu.org. All of [23]our lists have public + archives. + +- Copyright (C) [23]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [24]maintained by the GCC team. Last modified +- 2011-04-25[25]. ++ These pages are [25]maintained by the GCC team. Last modified ++ 2012-03-13[26]. + + References + +- 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.6 ++ 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7 + 2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted + 3. http://gcc.gnu.org/gcc-4.4/porting_to.html + 4. http://gcc.gnu.org/wiki/Graphite +@@ -1477,45 +1501,49 @@ References + 16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4 + 17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5 + 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6 +- 19. http://gcc.gnu.org/onlinedocs/ +- 20. mailto:gcc-help@gcc.gnu.org +- 21. mailto:gcc@gcc.gnu.org +- 22. http://gcc.gnu.org/lists.html +- 23. http://www.fsf.org/ +- 24. http://gcc.gnu.org/about.html +- 25. http://validator.w3.org/check/referer ++ 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7 ++ 20. http://gcc.gnu.org/onlinedocs/ ++ 21. mailto:gcc-help@gcc.gnu.org ++ 22. mailto:gcc@gcc.gnu.org ++ 23. http://gcc.gnu.org/lists.html ++ 24. http://www.fsf.org/ ++ 25. http://gcc.gnu.org/about.html ++ 26. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.3/index.html + + GCC 4.3 Release Series + +- May 22, 2010 ++ Jun 27, 2011 + + The [1]GNU project and the GCC developers are pleased to announce the +- release of GCC 4.3.5. ++ release of GCC 4.3.6. + + This release is a bug-fix release, containing fixes for regressions in +- GCC 4.3.4 relative to previous releases of GCC. ++ GCC 4.3.5 relative to previous releases of GCC. + + Release History + ++ GCC 4.3.6 ++ Jun 27, 2011 ([2]changes) ++ + GCC 4.3.5 +- May 22, 2010 ([2]changes) ++ May 22, 2010 ([3]changes) + + GCC 4.3.4 +- August 4, 2009 ([3]changes) ++ August 4, 2009 ([4]changes) + + GCC 4.3.3 +- January 24, 2009 ([4]changes) ++ January 24, 2009 ([5]changes) + + GCC 4.3.2 +- August 27, 2008 ([5]changes) ++ August 27, 2008 ([6]changes) + + GCC 4.3.1 +- June 6, 2008 ([6]changes) ++ June 6, 2008 ([7]changes) + + GCC 4.3.0 +- March 5, 2008 ([7]changes) ++ March 5, 2008 ([8]changes) + + References and Acknowledgements + +@@ -1523,33 +1551,33 @@ References and Acknowledgements + supports several other languages aside from C, it now stands for the + GNU Compiler Collection. + +- A list of [8]successful builds is updated as new information becomes ++ A list of [9]successful builds is updated as new information becomes + available. + + The GCC developers would like to thank the numerous people that have + contributed new features, improvements, bug fixes, and other changes as +- well as test results to GCC. This [9]amazing group of volunteers is ++ well as test results to GCC. This [10]amazing group of volunteers is + what makes GCC successful. + +- For additional information about GCC please refer to the [10]GCC +- project web site or contact the [11]GCC development mailing list. ++ For additional information about GCC please refer to the [11]GCC ++ project web site or contact the [12]GCC development mailing list. + +- To obtain GCC please use [12]our mirror sites or [13]our SVN server. ++ To obtain GCC please use [13]our mirror sites or [14]our SVN server. + + + For questions related to the use of GCC, please consult these web +- pages and the [14]GCC manuals. If that fails, the +- [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [15]GCC manuals. If that fails, the ++ [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [16]gcc@gcc.gnu.org. All of [17]our lists have public ++ list at [17]gcc@gcc.gnu.org. All of [18]our lists have public + archives. + +- Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [19]maintained by the GCC team. Last modified +- 2011-04-25[20]. ++ These pages are [20]maintained by the GCC team. Last modified ++ 2011-06-27[21]. + + References + +@@ -1560,19 +1588,20 @@ References + 5. http://gcc.gnu.org/gcc-4.3/changes.html + 6. http://gcc.gnu.org/gcc-4.3/changes.html + 7. http://gcc.gnu.org/gcc-4.3/changes.html +- 8. http://gcc.gnu.org/gcc-4.3/buildstat.html +- 9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html +- 10. http://gcc.gnu.org/index.html +- 11. mailto:gcc@gcc.gnu.org +- 12. http://gcc.gnu.org/mirrors.html +- 13. http://gcc.gnu.org/svn.html +- 14. http://gcc.gnu.org/onlinedocs/ +- 15. mailto:gcc-help@gcc.gnu.org +- 16. mailto:gcc@gcc.gnu.org +- 17. http://gcc.gnu.org/lists.html +- 18. http://www.fsf.org/ +- 19. http://gcc.gnu.org/about.html +- 20. http://validator.w3.org/check/referer ++ 8. http://gcc.gnu.org/gcc-4.3/changes.html ++ 9. http://gcc.gnu.org/gcc-4.3/buildstat.html ++ 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ++ 11. http://gcc.gnu.org/index.html ++ 12. mailto:gcc@gcc.gnu.org ++ 13. http://gcc.gnu.org/mirrors.html ++ 14. http://gcc.gnu.org/svn.html ++ 15. http://gcc.gnu.org/onlinedocs/ ++ 16. mailto:gcc-help@gcc.gnu.org ++ 17. mailto:gcc@gcc.gnu.org ++ 18. http://gcc.gnu.org/lists.html ++ 19. http://www.fsf.org/ ++ 20. http://gcc.gnu.org/about.html ++ 21. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.3/changes.html + +@@ -2229,6 +2258,11 @@ New Targets and Target Specific Improvements + sign-bit and infinity checks of binary and decimal floating + point numbers. + ++ SPARC ++ ++ * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been ++ added. ++ + Xtensa + + * Stack unwinding for exception handling now uses by default a +@@ -2329,20 +2363,27 @@ GCC 4.3.5 + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + ++GCC 4.3.6 + ++ This is the [30]list of problem reports (PRs) from GCC's bug tracking ++ system that are known to be fixed in the 4.3.6 release. This list might ++ not be complete (that is, it is possible that some PRs that have been ++ fixed are not listed here). ++ ++ + For questions related to the use of GCC, please consult these web +- pages and the [30]GCC manuals. If that fails, the +- [31]gcc-help@gcc.gnu.org mailing list might help. Comments on these ++ pages and the [31]GCC manuals. If that fails, the ++ [32]gcc-help@gcc.gnu.org mailing list might help. Comments on these + web pages and the development of GCC are welcome on our developer +- list at [32]gcc@gcc.gnu.org. All of [33]our lists have public ++ list at [33]gcc@gcc.gnu.org. All of [34]our lists have public + archives. + +- Copyright (C) [34]Free Software Foundation, Inc. Verbatim copying and ++ Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and + distribution of this entire article is permitted in any medium, + provided this notice is preserved. + +- These pages are [35]maintained by the GCC team. Last modified +- 2011-04-25[36]. ++ These pages are [36]maintained by the GCC team. Last modified ++ 2011-09-12[37]. + + References + +@@ -2375,13 +2416,14 @@ References + 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3 + 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4 + 29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5 +- 30. http://gcc.gnu.org/onlinedocs/ +- 31. mailto:gcc-help@gcc.gnu.org +- 32. mailto:gcc@gcc.gnu.org +- 33. http://gcc.gnu.org/lists.html +- 34. http://www.fsf.org/ +- 35. http://gcc.gnu.org/about.html +- 36. http://validator.w3.org/check/referer ++ 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6 ++ 31. http://gcc.gnu.org/onlinedocs/ ++ 32. mailto:gcc-help@gcc.gnu.org ++ 33. mailto:gcc@gcc.gnu.org ++ 34. http://gcc.gnu.org/lists.html ++ 35. http://www.fsf.org/ ++ 36. http://gcc.gnu.org/about.html ++ 37. http://validator.w3.org/check/referer + ====================================================================== + http://gcc.gnu.org/gcc-4.2/index.html + +@@ -4017,7 +4059,7 @@ GCC 4.0.4 + provided this notice is preserved. + + These pages are [21]maintained by the GCC team. Last modified +- 2011-04-25[22]. ++ 2012-02-20[22]. + + References + +@@ -4028,7 +4070,7 @@ References + 5. http://gcc.gnu.org/news/sms.html + 6. http://www.akkadia.org/drepper/dsohowto.pdf + 7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility +- 8. http://www.codesourcery.com/public/cxx-abi/ ++ 8. http://sourcery.mentor.com/public/cxx-abi/ + 9. http://gcc.gnu.org/fortran/ + 10. http://gcc.gnu.org/install/ + 11. http://gcc.gnu.org/wiki/Visibility +@@ -4826,8 +4868,8 @@ New Targets and Target Specific Improvements + M32R + + * Support for the M32R/2 processor has been added by Renesas. +- * Support for an M32R Linux target and PIC code generation has been +- added by Renesas. ++ * Support for an M32R GNU/Linux target and PIC code generation has ++ been added by Renesas. + + M68000 + +@@ -5905,7 +5947,7 @@ GCC 3.4.6 + provided this notice is preserved. + + These pages are [417]maintained by the GCC team. Last modified +- 2011-04-25[418]. ++ 2012-04-24[418]. + + References + +@@ -5916,8 +5958,8 @@ References + 5. http://gcc.gnu.org/gcc-3.4/mips-abi.html + 6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html + 7. http://www.boost.org/ +- 8. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11953 +- 9. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8361 ++ 8. http://gcc.gnu.org/PR11953 ++ 9. http://gcc.gnu.org/PR8361 + 10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins + 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209 + 12. http://gcc.gnu.org/bugs/#cxx_rvalbind +@@ -6574,7 +6616,7 @@ New Targets and Target Specific Improvements + + The 32-bit port now supports weak symbols under HP-UX 11. + + The handling of initializers and finalizers has been improved + under HP-UX 11. The 64-bit port no longer uses collect2. +- + Dwarf2 EH support has been added to the 32-bit linux port. ++ + Dwarf2 EH support has been added to the 32-bit GNU/Linux port. + + ABI fixes to correct the passing of small structures by value. + * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to + use the DFA processor pipeline description. +@@ -7170,7 +7212,7 @@ GCC 3.3.1 + with negative argument + * [268]11098 g++ doesn't emit complete debugging information for + local variables in destructors +- * [269]11137 Linux shared library constructors not called unless ++ * [269]11137 GNU/Linux shared library constructors not called unless + there's one global object + * [270]11154 spurious ambiguity report for template class + specialization +@@ -7777,7 +7819,7 @@ GCC 3.3.6 + provided this notice is preserved. + + These pages are [558]maintained by the GCC team. Last modified +- 2011-04-25[559]. ++ 2011-10-24[559]. + + References + +@@ -8929,8 +8971,8 @@ GCC 3.2.1 + * [208]6984: wrong code generated with -O2, -O3, -Os for do-while + loop on PowerPC + * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5 +- * [210]7130: miscompiled code for GCC-3.1 in powerpc linux with +- -funroll-all-loops ++ * [210]7130: miscompiled code for GCC-3.1 on ++ powerpc-unknown-linux-gnu with -funroll-all-loops + * [211]7133: PowerPC ICE: unrecognizable insn + * [212]7380: ICE in extract_insn, at recog.c:2148 + * [213]8252: ICE on Altivec code with optimization turned on +@@ -9032,7 +9074,7 @@ GCC 3.2 + provided this notice is preserved. + + These pages are [251]maintained by the GCC team. Last modified +- 2011-04-25[252]. ++ 2011-10-24[252]. + + References + +@@ -10646,7 +10688,7 @@ http://gcc.gnu.org/egcs-1.1/index.html + + Fix problems with ctors/dtors in SCO shared libraries. + + Abort instead of generating incorrect code for PPro/PII + floating point conditional moves. +- + Avoid multiply defined symbols on Linux/GNU systems using ++ + Avoid multiply defined symbols on GNU/Linux systems using + libc-5.4.xx. + + Fix abort in alpha compiler. + * Fortran-specific fixes +@@ -10689,7 +10731,7 @@ http://gcc.gnu.org/egcs-1.1/index.html + provided this notice is preserved. + + These pages are [16]maintained by the GCC team. Last modified +- 2011-04-25[17]. ++ 2011-10-24[17]. + + References + +@@ -10926,7 +10968,7 @@ http://gcc.gnu.org/egcs-1.0/index.html + contain C++ code (upgrade to 1.0.1 and use that). + * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends. + The x86 changes fix code generation errors exposed when building +- glibc2 and the Linux dynamic linker (ld.so). ++ glibc2 and the usual GNU/Linux dynamic linker (ld.so). + The hppa change fixes a compiler abort when configured for use with + RTEMS. + The MIPS changes fix problems with the definition of LONG_MAX on +@@ -10953,7 +10995,7 @@ http://gcc.gnu.org/egcs-1.0/index.html + * g++/libstdc++ improvements and fixes + + libstdc++ in the EGCS release has been updated and should be + link compatible with libstdc++-2.8. +- + Various fixes in libio/libstdc++ to work better on Linux ++ + Various fixes in libio/libstdc++ to work better on GNU/Linux + systems. + + Fix problems with duplicate symbols on systems that do not + support weak symbols. +@@ -10976,9 +11018,9 @@ http://gcc.gnu.org/egcs-1.0/index.html + + x86 ports define i386 again to keep imake happy. + + Fix exception handling support on NetBSD ports. + + Several changes to collect2 to fix many problems with AIX. +- + Define __ELF__ for rs6000/linux. +- + Fix -mcall-linux problem on rs6000/linux. +- + Fix stdarg/vararg problem for rs6000/linux. ++ + Define __ELF__ for GNU/Linux on rs6000. ++ + Fix -mcall-linux problem on GNU/Linux on rs6000. ++ + Fix stdarg/vararg problem for GNU/Linux on rs6000. + + Allow autoconf to select a proper install problem on AIX 3.1. + + m68k port support includes -mcpu32 option as well as cpu32 + multilibs. +@@ -11042,7 +11084,7 @@ http://gcc.gnu.org/egcs-1.0/index.html + provided this notice is preserved. + + These pages are [11]maintained by the GCC team. Last modified +- 2011-04-25[12]. ++ 2011-10-24[12]. + + References + +@@ -11069,7 +11111,7 @@ http://gcc.gnu.org/egcs-1.0/features.html + * Vast improvements in the C++ compiler; so many they have [2]page of + their own! + * Integrated C++ runtime libraries, including support for most major +- linux systems! ++ GNU/Linux systems! + * New instruction scheduler from IBM Haifa which includes support for + function wide instruction scheduling as well as superscalar + scheduling. +@@ -11087,7 +11129,7 @@ http://gcc.gnu.org/egcs-1.0/features.html + Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and + 1.1), Support for RTEMS on several embedded targets, Support for + arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and +- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc. ++ MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc. + * Integrated testsuites for gcc, g++, g77, libstdc++ and libio. + * RS6000/PowerPC ports generate code which can run on all + RS6000/PowerPC variants by default. +@@ -11095,7 +11137,7 @@ http://gcc.gnu.org/egcs-1.0/features.html + control over how the x86 port generates code. + * Includes the template repository patch (aka repo patch); note the + new template code makes repo obsolete for ELF systems using gnu-ld +- such as Linux. ++ such as GNU/Linux. + * Plus the usual assortment of bugfixes and improvements. + + +@@ -11110,7 +11152,7 @@ http://gcc.gnu.org/egcs-1.0/features.html + provided this notice is preserved. + + These pages are [8]maintained by the GCC team. Last modified +- 2011-04-25[9]. ++ 2011-10-24[9]. + + References + diff --git a/lang/gcc45/patches/patch-aa b/lang/gcc45/patches/patch-aa deleted file mode 100644 index d6a60e5cc..000000000 --- a/lang/gcc45/patches/patch-aa +++ /dev/null @@ -1,86 +0,0 @@ -$NetBSD: patch-aa,v 1.2 2014/12/06 18:47:01 dholland Exp $ - -- add dfly support -- stdint fixes for netbsd x86 -- add svr4.h for netbsd ppc, per PR 49453 from Frank Wille - ---- gcc/config.gcc.orig 2011-02-27 01:06:15.000000000 +0000 -+++ gcc/config.gcc -@@ -499,6 +499,33 @@ case ${target} in - # need_64bit_hwint=yes # system compiler has this for all arch! - use_gcc_stdint=wrap - ;; -+*-*-dragonfly*) -+ gas=yes -+ gnu_ld=yes -+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" -+ case ${target} in -+ *-*-dragonfly1 | *-*-dragonfly[1].*) -+ tm_defines="${tm_defines} DFBSD_MAJOR=1" ;; -+ *-*-dragonfly2 | *-*-dragonfly[2].*) -+ tm_defines="${tm_defines} DFBSD_MAJOR=2" ;; -+ *-*-dragonfly3 | *-*-dragonfly[3].*) -+ tm_defines="${tm_defines} DFBSD_MAJOR=3" ;; -+ *-*-dragonfly4 | *-*-dragonfly[4].*) -+ tm_defines="${tm_defines} DFBSD_MAJOR=4" ;; -+ *) -+ echo 'Please update *-*-dragonfly* in gcc/config.gcc' -+ exit 1 -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-dragonfly" -+ case ${enable_threads} in -+ "" | yes | posix) -+ thread_file='posix' -+ tmake_file="${tmake_file} t-dragonfly-thread" -+ ;; -+ esac -+ dfbsd_tm_file="${dfbsd_tm_file} dragonfly-spec.h dragonfly.h" -+ ;; - *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) - extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" - gas=yes -@@ -572,6 +599,7 @@ case ${target} in - default_use_cxa_atexit=yes - ;; - esac -+ use_gcc_stdint=wrap - ;; - *-*-openbsd*) - tmake_file="t-libc-ok t-openbsd t-libgcc-pic" -@@ -1118,17 +1146,23 @@ x86_64-*-freebsd*) - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" - tmake_file="${tmake_file} i386/t-crtstuff" - ;; -+x86_64-*-dragonfly*) -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/x86-64.h i386/dragonfly.h i386/dragonfly64.h" -+ ;; -+i[34567]86-*-dragonfly*) -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/dragonfly.h" -+ ;; - i[34567]86-*-netbsdelf*) -- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h netbsd-stdint.h" - ;; - i[34567]86-*-netbsd*) -- tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h netbsd.h netbsd-aout.h i386/netbsd.h" -+ tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h netbsd.h netbsd-aout.h i386/netbsd.h netbsd-stdint.h" - tmake_file="${tmake_file} t-netbsd" - extra_parts="" - use_collect2=yes - ;; - x86_64-*-netbsd*) -- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h" -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h netbsd-stdint.h" - tmake_file="${tmake_file} i386/t-crtstuff" - ;; - i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123]) -@@ -1950,7 +1984,7 @@ powerpc*-*-freebsd*) - extra_options="${extra_options} rs6000/sysv4.opt" - ;; - powerpc-*-netbsd*) -- tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h" -+ tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h" - tmake_file="${tmake_file} rs6000/t-netbsd" - extra_options="${extra_options} rs6000/sysv4.opt" - ;; diff --git a/lang/gcc45/patches/patch-ab b/lang/gcc45/patches/patch-ab deleted file mode 100644 index a1a46c9dc..000000000 --- a/lang/gcc45/patches/patch-ab +++ /dev/null @@ -1,24 +0,0 @@ -$NetBSD: patch-ab,v 1.1.1.1 2011/05/14 20:19:47 wiz Exp $ - ---- libgcc/config.host.orig 2010-04-01 23:02:18.000000000 -0400 -+++ libgcc/config.host -@@ -156,6 +156,8 @@ case ${host} in - # machine-specific sections may refine and add to this - # configuration. - ;; -+*-*-dragonfly*) -+ ;; - *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu*) - extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" - ;; -@@ -282,6 +284,10 @@ i[34567]86-*-freebsd*) - ;; - x86_64-*-freebsd*) - ;; -+i[34567]86-*-dragonfly*) -+ ;; -+x86_64-*-dragonfly*) -+ ;; - i[34567]86-*-netbsdelf*) - ;; - i[34567]86-*-netbsd*) diff --git a/lang/gcc45/patches/patch-ac b/lang/gcc45/patches/patch-ac deleted file mode 100644 index 053e81da3..000000000 --- a/lang/gcc45/patches/patch-ac +++ /dev/null @@ -1,17 +0,0 @@ -$NetBSD: patch-ac,v 1.2 2014/05/08 02:03:58 pho Exp $ - -Add gcc libdir to a programs rpath so that _this gcc's_ support -libraries are found. Note that there must not be a whitespace between -$(LINKER_RPATH_FLAG) and the path. Otherwise the flag may be -misinterpreted by linker (e.g. Apple's ld). - ---- gcc/Makefile.in.orig 2004-06-17 15:56:58.000000000 -0600 -+++ gcc/Makefile.in -@@ -1944,6 +1944,7 @@ c-omp.o : c-omp.c $(CONFIG_H) $(SYSTEM_H - # Language-independent files. - - DRIVER_DEFINES = \ -+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(exec_prefix)/lib\"" \ - -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ - -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ - -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ diff --git a/lang/gcc45/patches/patch-ad b/lang/gcc45/patches/patch-ad deleted file mode 100644 index a35c0bd52..000000000 --- a/lang/gcc45/patches/patch-ad +++ /dev/null @@ -1,28 +0,0 @@ -$NetBSD: patch-ad,v 1.3 2012/05/03 12:20:19 hans Exp $ - ---- configure.orig 2010-04-02 13:35:47.000000000 -0400 -+++ configure -@@ -5395,7 +5395,7 @@ fi - - - if test "x$with_mpfr" != x; then -- gmplibs="-L$with_mpfr/lib $gmplibs" -+ gmplibs="-L$with_mpfr/lib ${COMPILER_RPATH_FLAG}$with_mpfr/lib $gmplibs" - gmpinc="-I$with_mpfr/include $gmpinc" - fi - if test "x$with_mpfr_include" != x; then -@@ -5279,9 +5279,11 @@ if test "x$with_mpfr_lib" != x; then - gmplibs="-L$with_mpfr_lib $gmplibs" - fi - if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then -- gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/'"$lt_cv_objdir $gmplibs" -- gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr -I$$s/mpfr '"$gmpinc" -- extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr --with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr/'"$lt_cv_objdir" -+ sdir= -+ test -d "${srcdir}/mpfr/src" && sdir=/src -+ gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr'"$sdir/$lt_cv_objdir $gmplibs" -+ gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr'"$sdir "'-I$$s/mpfr'"$sdir $gmpinc" -+ extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr'"$sdir "'--with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr'"$sdir/$lt_cv_objdir" - # Do not test the mpfr version. Assume that it is sufficient, since - # it is in the source tree, and the library has not been built yet - # but it would be included on the link line in the version check below diff --git a/lang/gcc45/patches/patch-af b/lang/gcc45/patches/patch-af deleted file mode 100644 index e3e4f0bd2..000000000 --- a/lang/gcc45/patches/patch-af +++ /dev/null @@ -1,16 +0,0 @@ -$NetBSD: patch-af,v 1.1.1.1 2011/05/14 20:19:47 wiz Exp $ - -Avoid a reference to the wrapped make in the pkgsrc work directory from showing up -in an installed file. See ${WRKDIR}/gcc-4.4.1/libjava/contrib/aotcompile.py.in - ---- libjava/configure.orig 2010-04-02 14:18:06.000000000 -0400 -+++ libjava/configure -@@ -24517,7 +24517,7 @@ $as_echo "Python modules dir: ${python_m - - - # needed for aot-compile-rpm --MAKE=`which make` -+MAKE=${PKGSRC_MAKE} - - - # Check whether --enable-aot-compile-rpm was given. diff --git a/lang/gcc45/patches/patch-ag b/lang/gcc45/patches/patch-ag deleted file mode 100644 index 0f1a5c1b9..000000000 --- a/lang/gcc45/patches/patch-ag +++ /dev/null @@ -1,29 +0,0 @@ -$NetBSD: patch-ag,v 1.1.1.1 2011/05/14 20:19:47 wiz Exp $ - -No need to use bash for this small script. - -Also -print0 is not portable to solaris and perhaps others. - ---- libjava/contrib/rebuild-gcj-db.in.orig 2008-07-02 09:17:54.000000000 -0400 -+++ libjava/contrib/rebuild-gcj-db.in -@@ -1,4 +1,4 @@ --#!/bin/bash -+#!/bin/sh - # rebuild-gcj-db - - ## Copyright (C) 2000, 2002, 2003, 2008 Free Software Foundation -@@ -16,12 +16,12 @@ for i in `@prefix@/bin/gcc --print-multi - base=@prefix@/lib/$dirname - dbLocation=`@prefix@/bin/gcj-dbtool -p $base` - libdir=$base/gcj -- if ! test -d $libdir; then -+ if test ! -d $libdir; then - # No shared libraries here. - continue - fi - dirname $dbLocation | xargs mkdir -p - @prefix@/bin/gcj-dbtool -n $dbLocation 64 -- find $libdir -follow -name '*.db' -print0 | \ -+ find $libdir -follow -name '*.db' -print | @AWK@ '{printf("%s%c", $1, 0);}' | \ - @prefix@/bin/gcj-dbtool -0 -m $dbLocation $dbLocation - done diff --git a/lang/gcc45/patches/patch-ah b/lang/gcc45/patches/patch-ah deleted file mode 100644 index fbf931802..000000000 --- a/lang/gcc45/patches/patch-ah +++ /dev/null @@ -1,22 +0,0 @@ -$NetBSD: patch-ah,v 1.1.1.1 2011/05/14 20:19:47 wiz Exp $ - ---- gcc/fortran/f95-lang.c.orig 2010-06-15 14:17:16.000000000 +0200 -+++ gcc/fortran/f95-lang.c -@@ -794,10 +794,17 @@ - - gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble, - BUILT_IN_CABSL, "cabsl", true); -+#if defined(__NetBSD__) -+ gfc_define_builtin ("__builtin_cabs", func_cdouble_double, -+ BUILT_IN_CABS, "__c99_cabs", true); -+ gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, -+ BUILT_IN_CABSF, "__c99_cabsf", true); -+#else - gfc_define_builtin ("__builtin_cabs", func_cdouble_double, - BUILT_IN_CABS, "cabs", true); - gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, - BUILT_IN_CABSF, "cabsf", true); -+#endif - - gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1], - BUILT_IN_COPYSIGNL, "copysignl", true); diff --git a/lang/gcc45/patches/patch-aj b/lang/gcc45/patches/patch-aj deleted file mode 100644 index c8cc10ef4..000000000 --- a/lang/gcc45/patches/patch-aj +++ /dev/null @@ -1,46 +0,0 @@ -$NetBSD: patch-aj,v 1.3 2013/04/29 21:34:49 joerg Exp $ - ---- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2009-04-09 15:00:19.000000000 +0000 -+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h -@@ -41,6 +41,33 @@ _GLIBCXX_BEGIN_NAMESPACE(std) - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. -+#if defined(_CTYPE_BL) -+ typedef unsigned short mask; -+ static const mask upper = _CTYPE_U; -+ static const mask lower = _CTYPE_L; -+ static const mask alpha = _CTYPE_A; -+ static const mask digit = _CTYPE_D; -+ static const mask xdigit = _CTYPE_X; -+ static const mask space = _CTYPE_S; -+ static const mask print = _CTYPE_R; -+ static const mask graph = _CTYPE_G; -+ static const mask cntrl = _CTYPE_C; -+ static const mask punct = _CTYPE_P; -+ static const mask alnum = _CTYPE_A | _CTYPE_D; -+#elif defined(_CTYPE_U) -+ typedef unsigned char mask; -+ static const mask upper = _CTYPE_U; -+ static const mask lower = _CTYPE_L; -+ static const mask alpha = _CTYPE_U | _CTYPE_L; -+ static const mask digit = _CTYPE_N; -+ static const mask xdigit = _CTYPE_N | _CTYPE_X; -+ static const mask space = _CTYPE_S; -+ static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B; -+ static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N; -+ static const mask cntrl = _CTYPE_C; -+ static const mask punct = _CTYPE_P; -+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N; -+#else - typedef unsigned char mask; - static const mask upper = _U; - static const mask lower = _L; -@@ -53,6 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -+#endif - }; - - _GLIBCXX_END_NAMESPACE diff --git a/lang/gcc45/patches/patch-ak b/lang/gcc45/patches/patch-ak deleted file mode 100644 index e808c1674..000000000 --- a/lang/gcc45/patches/patch-ak +++ /dev/null @@ -1,16 +0,0 @@ -$NetBSD: patch-ak,v 1.1.1.1 2011/05/14 20:19:47 wiz Exp $ - ---- gcc/ginclude/stddef.h.orig 2011-03-03 15:35:00.000000000 +0000 -+++ gcc/ginclude/stddef.h -@@ -53,6 +53,11 @@ see the files COPYING3 and COPYING.RUNTI - one less case to deal with in the following. */ - #if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) - #include -+#if !defined(_MACHINE_ANSI_H_) -+#if defined(_I386_ANSI_H_) || defined(_X86_64_ANSI_H_) -+#define _MACHINE_ANSI_H_ -+#endif -+#endif - #endif - /* On FreeBSD 5, machine/ansi.h does not exist anymore... */ - #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) diff --git a/lang/gcc45/patches/patch-config.guess b/lang/gcc45/patches/patch-config.guess new file mode 100644 index 000000000..f625754ed --- /dev/null +++ b/lang/gcc45/patches/patch-config.guess @@ -0,0 +1,44 @@ +$NetBSD$ + +--- config.guess.orig Tue Mar 23 14:26:40 2010 ++++ config.guess +@@ -160,14 +160,28 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; ++ coldfire) machine=m5407-unknown ;; ++ earm*eb*) machine=armeb-unknown ;; ++ earm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched +- # to ELF recently, or will in the future. ++ # to ELF recently, or will in the future and ABI. + case "${UNAME_MACHINE_ARCH}" in ++ coldfire) os=netbsdelf ;; ++ earm*) ++ eval $set_cc_for_build ++ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ ++ | grep -q __ARM_PCS_VFP ++ then ++ os=netbsdelf-eabi ++ else ++ os=netbsdelf-eabihf ++ fi ++ ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ +@@ -966,6 +980,9 @@ EOF + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) diff --git a/lang/gcc45/patches/patch-config.sub b/lang/gcc45/patches/patch-config.sub new file mode 100644 index 000000000..3a26e8ad6 --- /dev/null +++ b/lang/gcc45/patches/patch-config.sub @@ -0,0 +1,32 @@ +$NetBSD$ + +--- config.sub.orig Tue Mar 23 14:26:40 2010 ++++ config.sub +@@ -125,7 +125,8 @@ esac + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ +- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | \ ++ netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os +@@ -317,7 +318,8 @@ case $basic_machine in + basic_machine=$basic_machine-unknown + os=-none + ;; +- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ++ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | m5407 \ ++ | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown +@@ -354,6 +356,7 @@ case $basic_machine in + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ ++ | m5200-* | m5407-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ diff --git a/lang/gcc45/patches/patch-config_ChangeLog b/lang/gcc45/patches/patch-config_ChangeLog new file mode 100644 index 000000000..c1b911397 --- /dev/null +++ b/lang/gcc45/patches/patch-config_ChangeLog @@ -0,0 +1,22 @@ +$NetBSD$ + +--- config/ChangeLog.orig Thu Apr 28 14:11:26 2011 ++++ config/ChangeLog +@@ -1,3 +1,17 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-12-18 Eric Botcazou ++ ++ * acx.m4 (Test for GNAT): Update comment and add quotes in final test. ++ ++2011-06-19 Jack Howarth ++ ++ PR target/49461 ++ * mh-x86-darwin: Add file and pass -no_pie on BOOT_LDFLAGS for ++ darwin11. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-config_acx.m4 b/lang/gcc45/patches/patch-config_acx.m4 new file mode 100644 index 000000000..3567d6536 --- /dev/null +++ b/lang/gcc45/patches/patch-config_acx.m4 @@ -0,0 +1,26 @@ +$NetBSD$ + +--- config/acx.m4.orig Fri Oct 23 10:03:47 2009 ++++ config/acx.m4 +@@ -356,9 +356,9 @@ m4_define([AC_CHECK_HEADER],m4_defn([_AC_CHECK_HEADER_ + ac_c_preproc_warn_flag=yes])# AC_PROG_CPP_WERROR + + # Test for GNAT. +-# We require the gnatbind program, and a compiler driver that +-# understands Ada. We use the user's CC setting, already found, +-# and possibly add $1 to the command-line parameters. ++# We require the gnatbind & gnatmake programs, as well as a compiler driver ++# that understands Ada. We use the user's CC setting, already found, and ++# possibly add $1 to the command-line parameters. + # + # Sets the shell variable have_gnat to yes or no as appropriate, and + # substitutes GNATBIND and GNATMAKE. +@@ -387,7 +387,7 @@ if test x"$errors" = x && test -f conftest.$ac_objext; + fi + rm -f conftest.*]) + +-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then ++if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then + have_gnat=yes + else + have_gnat=no diff --git a/lang/gcc45/patches/patch-config_mh-x86-darwin b/lang/gcc45/patches/patch-config_mh-x86-darwin new file mode 100644 index 000000000..782014115 --- /dev/null +++ b/lang/gcc45/patches/patch-config_mh-x86-darwin @@ -0,0 +1,7 @@ +$NetBSD$ + +--- config/mh-x86-darwin.orig Wed May 21 19:48:53 2014 ++++ config/mh-x86-darwin +@@ -0,0 +1,2 @@ ++# Ensure we don't try and use -pie, as it is incompatible with pch. ++BOOT_LDFLAGS += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;` diff --git a/lang/gcc45/patches/patch-configure b/lang/gcc45/patches/patch-configure new file mode 100644 index 000000000..6a2626419 --- /dev/null +++ b/lang/gcc45/patches/patch-configure @@ -0,0 +1,13 @@ +$NetBSD$ + +--- configure.orig Wed May 21 19:48:53 2014 ++++ configure +@@ -5321,7 +5321,7 @@ _ACEOF + + + # Check for GMP, MPFR and MPC +-gmplibs="-lmpc -lmpfr -lgmp" ++gmplibs="-lmpc -lmpfr -lgmp -lm" + gmpinc= + have_gmp=no + diff --git a/lang/gcc45/patches/patch-configure.ac b/lang/gcc45/patches/patch-configure.ac new file mode 100644 index 000000000..349fa6e6e --- /dev/null +++ b/lang/gcc45/patches/patch-configure.ac @@ -0,0 +1,147 @@ +$NetBSD$ + +--- configure.ac.orig Tue Jan 25 15:49:54 2011 ++++ configure.ac +@@ -185,9 +185,8 @@ libgcj="target-libffi \ + + # these libraries are built for the target environment, and are built after + # the host libraries and the host tools (which may be a cross compiler) +-# ++# Note that libiberty is not a target library. + target_libraries="target-libgcc \ +- target-libiberty \ + target-libgloss \ + target-newlib \ + target-libgomp \ +@@ -506,14 +505,14 @@ case "${target}" in + ;; + *-*-kaos*) + # Remove unsupported stuff on all kaOS configurations. +- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" ++ skipdirs="${libgcj} target-libstdc++-v3 target-librx" + skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" + skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" + noconfigdirs="$noconfigdirs target-libgloss" + ;; + *-*-netbsd*) + # Skip some stuff on all NetBSD configurations. +- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss" + + # Skip some stuff that's unsupported on some NetBSD configurations. + case "${target}" in +@@ -525,20 +524,20 @@ case "${target}" in + esac + ;; + *-*-netware*) +- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap" + ;; + *-*-rtems*) + noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" + ;; + # The tpf target doesn't support gdb yet. + *-*-tpf*) +- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl" + ;; + *-*-uclinux*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" + ;; + *-*-vxworks*) +- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}" + ;; + alpha*-dec-osf*) + # ld works, but does not support shared libraries. +@@ -566,7 +565,7 @@ case "${target}" in + sh*-*-pe|mips*-*-pe|*arm-wince-pe) + noconfigdirs="$noconfigdirs ${libgcj}" + noconfigdirs="$noconfigdirs target-examples" +- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" ++ noconfigdirs="$noconfigdirs texinfo send-pr" + noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" + noconfigdirs="$noconfigdirs expect dejagnu" + # the C++ libraries don't build on top of CE's C libraries +@@ -600,7 +599,7 @@ case "${target}" in + libgloss_dir=arm + ;; + arm*-*-symbianelf*) +- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" ++ noconfigdirs="$noconfigdirs ${libgcj}" + libgloss_dir=arm + ;; + arm-*-pe*) +@@ -619,7 +618,7 @@ case "${target}" in + noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" + ;; + avr-*-*) +- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" ++ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp" + ;; + bfin-*-*) + unsupported_languages="$unsupported_languages java" +@@ -798,7 +797,7 @@ case "${target}" in + noconfigdirs="$noconfigdirs ${libgcj}" + ;; + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) +- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" ++ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" + libgloss_dir=m68hc11 + ;; + m68k-*-elf*) +@@ -869,7 +868,6 @@ case "${target}" in + noconfigdirs="$noconfigdirs gprof ${libgcj}" + ;; + mips*-sde-elf*) +- skipdirs="$skipdirs target-libiberty" + noconfigdirs="$noconfigdirs ${libgcj}" + if test x$with_newlib = xyes; then + noconfigdirs="$noconfigdirs gprof" +@@ -965,7 +963,7 @@ case "${target}" in + noconfigdirs="$noconfigdirs ${libgcj}" + ;; + ip2k-*-*) +- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" ++ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" + ;; + *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" +@@ -1135,6 +1133,9 @@ case "${host}" in + tentative_cc="/usr/cygnus/progressive/bin/gcc" + host_makefile_frag="config/mh-lynxrs6k" + ;; ++ i[[3456789]]86-*-darwin* | x86_64-*-darwin*) ++ host_makefile_frag="config/mh-x86-darwin" ++ ;; + powerpc-*-darwin*) + host_makefile_frag="config/mh-ppc-darwin" + ;; +@@ -2104,27 +2105,6 @@ for dir in . $skipdirs $noconfigdirs ; do + fi + fi + done +- +-# Sometimes the tools are distributed with libiberty but with no other +-# libraries. In that case, we don't want to build target-libiberty. +-# Don't let libgcc imply libiberty either. +-if test -n "${target_configdirs}" ; then +- libgcc= +- others= +- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do +- if test "$i" = "libgcc"; then +- libgcc=target-libgcc +- elif test "$i" != "libiberty" ; then +- if test -r $srcdir/$i/configure ; then +- others=yes; +- break; +- fi +- fi +- done +- if test -z "${others}" ; then +- target_configdirs=$libgcc +- fi +-fi + + # Quietly strip out all directories which aren't configurable in this tree. + # This relies on all configurable subdirectories being autoconfiscated, which diff --git a/lang/gcc45/patches/patch-contrib_ChangeLog b/lang/gcc45/patches/patch-contrib_ChangeLog new file mode 100644 index 000000000..1871a717a --- /dev/null +++ b/lang/gcc45/patches/patch-contrib_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- contrib/ChangeLog.orig Thu Apr 28 14:08:43 2011 ++++ contrib/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-contrib_reghunt_ChangeLog b/lang/gcc45/patches/patch-contrib_reghunt_ChangeLog new file mode 100644 index 000000000..cefe47766 --- /dev/null +++ b/lang/gcc45/patches/patch-contrib_reghunt_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- contrib/reghunt/ChangeLog.orig Thu Apr 28 14:08:49 2011 ++++ contrib/reghunt/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-contrib_regression_ChangeLog b/lang/gcc45/patches/patch-contrib_regression_ChangeLog new file mode 100644 index 000000000..e7a7c9e22 --- /dev/null +++ b/lang/gcc45/patches/patch-contrib_regression_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- contrib/regression/ChangeLog.orig Thu Apr 28 14:08:38 2011 ++++ contrib/regression/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-fixincludes_ChangeLog b/lang/gcc45/patches/patch-fixincludes_ChangeLog new file mode 100644 index 000000000..9c8058360 --- /dev/null +++ b/lang/gcc45/patches/patch-fixincludes_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- fixincludes/ChangeLog.orig Thu Apr 28 14:09:41 2011 ++++ fixincludes/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_BASE-VER b/lang/gcc45/patches/patch-gcc_BASE-VER new file mode 100644 index 000000000..11c060380 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_BASE-VER @@ -0,0 +1,7 @@ +$NetBSD$ + +--- gcc/BASE-VER.orig Thu Dec 16 14:34:03 2010 ++++ gcc/BASE-VER +@@ -1 +1 @@ +-4.5.3 ++4.5.4 diff --git a/lang/gcc45/patches/patch-gcc_ChangeLog b/lang/gcc45/patches/patch-gcc_ChangeLog new file mode 100644 index 000000000..1c97c77d3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_ChangeLog @@ -0,0 +1,1352 @@ +$NetBSD$ + +--- gcc/ChangeLog.orig Thu Apr 28 14:11:53 2011 ++++ gcc/ChangeLog +@@ -1,3 +1,1239 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2012-06-22 Richard Guenther ++ ++ * gcov-iov.c: Include bconfig.h and system.h. ++ ++2012-06-22 Richard Guenther ++ ++ PR gcov-profile/53744 ++ * gcov-iov.c (main): Treat "" and "prerelease" the same. ++ ++2012-06-20 Richard Guenther ++ ++ Backport from mainline ++ 2012-05-21 Joseph Myers ++ ++ PR c/53418 ++ * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR ++ from folded operands before wrapping another around the ++ conditional expression. ++ ++2012-06-20 Richard Guenther ++ ++ Backport from mainline ++ 2010-12-18 Jakub Jelinek ++ ++ PR tree-optimization/46985 ++ * tree-scalar-evolution.c (instantiate_scev_r): If chrec is NULL, ++ return it immediately. ++ ++ 2011-02-18 Jakub Jelinek ++ ++ PR debug/47780 ++ * cfgexpand.c (expand_debug_expr) : Call copy_rtx to ++ avoid invalid rtx sharing. ++ ++ 2011-02-27 Jakub Jelinek ++ ++ PR middle-end/47903 ++ * real.c (real_arithmetic) : Clear padding bits in *r first if ++ r isn't op0 nor op1. ++ ++2012-06-04 Edmar Wienskoski ++ ++ * config/rs6000/altivec.md (altivec_stvlx): Change machine mode of ++ operands. ++ (altivec_stvlxl): Ditto. ++ (altivec_stvrx): Ditto. ++ (altivec_stvrxl): Ditto. ++ ++2012-06-04 Georg-Johann Lay ++ ++ Backport from 2012-06-04 mainline r188172 ++ ++ PR target/46261 ++ * config/avr/avr-stdint.h: New file. ++ * config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of ++ newlib-stdint.h ++ ++2012-05-16 Eric Botcazou ++ ++ * configure: Regenerate. ++ ++2012-05-14 Uros Bizjak ++ ++ PR target/46098 ++ * config/i386/i386.c (ix86_expand_special_args_builtin): Always ++ generate target register for "load" class builtins. ++ ++ Revert: ++ 2010-10-22 Uros Bizjak ++ ++ PR target/46098 ++ * config/i386/sse.md (*avx_movu): ++ Rename from avx_movu. ++ (avx_movu): New expander. ++ (*_movu): Rename from _movu. ++ (_movu): New expander. ++ (*avx_movdqu): Rename from avx_movdqu. ++ (avx_movdqu): New expander. ++ (*sse2_movdqu): Rename from sse2_movdqu. ++ (sse2_movdqu): New expander. ++ ++2012-05-13 Uros Bizjak ++ ++ Backport from mainline ++ 2012-05-12 Uros Bizjak ++ ++ * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle ++ ORDERED and UNORDERED conditions. ++ ++2012-05-04 Uros Bizjak ++ ++ Backport from mainline ++ 2012-05-04 Uros Bizjak ++ ++ PR target/53228 ++ * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE. ++ (TARGET_CMOV): Rename from TARGET_CMOVE. ++ (TARGET_CMOVE): New define. ++ * config/i386/i386.c (override_options): Use TARGET_CMOV. ++ Do not set TARGET_CMOVE here. ++ ++2012-05-03 Michael Meissner ++ ++ Backport from the mainline ++ 2012-05-03 Michael Meissner ++ ++ PR target/53199 ++ * config/rs6000/rs6000.md (bswapdi splitters): If ++ -mavoid-indexed-addresses (or -mcpu=power6 which sets it by ++ default) is used, generate an alternate sequence that does not ++ depend on using indexed addressing. ++ ++2012-05-02 Georg-Johann Lay ++ ++ Backport from 2011-10-21 4.6-branch 180303. ++ ++ PR target/50820 ++ * config/avr/libgcc.S (__EIND__): New define to 0x3C. ++ (__tablejump__): Consistently use EIND for indirect jump/call. ++ (__tablejump_elpm__): Ditto. ++ ++2012-05-02 Georg-Johann Lay ++ ++ Backport from 2011-05-30 4.6-branch r174427. ++ ++ PR target/45263 ++ * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): ++ Don't use r20 around calls of __tablejump_elpm__ ++ ++2012-05-02 Georg-Johann Lay ++ ++ Backport from 2011-07-11 4.6-branch r176143 ++ ++ PR target/39633 ++ * config/avr/avr.c (notice_update_cc): For ashiftrt:QI, only ++ offsets 1..5 set cc0 in a usable way. ++ ++2012-05-02 Georg-Johann Lay ++ ++ Backport from 2011-07-08 4.6-branch r176055. ++ ++ PR target/46779 ++ * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite. ++ In particular, allow 8-bit values in r28 and r29. ++ (avr_hard_regno_scratch_ok): Disallow any register that might be ++ part of the frame pointer. ++ (avr_hard_regno_rename_ok): Same. ++ (avr_legitimate_address_p): Don't allow SUBREGs. ++ ++2012-04-30 Uros Bizjak ++ ++ Backport from mainline ++ 2012-04-27 Paolo Bonzini ++ ++ PR target/53138 ++ * config/i386/i386.md (x86_movcc_0_m1_neg): Add clobber. ++ ++2012-04-20 Thomas Schwinge ++ ++ struct siginfo vs. siginfo_t ++ ++ Backport from trunk (but apply to gcc/): ++ ++ 2012-04-20 Thomas Schwinge ++ ++ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use ++ siginfo_t instead of struct siginfo. ++ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise. ++ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise. ++ * config/ia64/linux-unwind.h (ia64_fallback_frame_state) ++ (ia64_handle_unwabi): Likewise. ++ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise. ++ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise. ++ * config/sh/linux-unwind.h (shmedia_fallback_frame_state) ++ (sh_fallback_frame_state): Likewise. ++ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise. ++ ++2012-04-12 Richard Earnshaw ++ ++ PR target/49448 ++ * config.gcc (arm*-*-linux*): Use an unambiguous pattern for ++ detecting big-endian triplets. ++ ++2012-04-10 John David Anglin ++ ++ PR middle-end/52894 ++ * varasm.c (process_pending_assemble_externals): Set ++ pending_assemble_externals_processed true. ++ (assemble_external): Call assemble_external_real if the pending ++ assemble externals have been processed. ++ ++2012-04-09 Eric Botcazou ++ ++ PR target/52717 ++ * config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on ++ the DECL generated for the special GOT helper. ++ ++2012-04-06 Matt Turner ++ ++ * doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc". ++ ++2012-03-29 Uros Bizjak ++ ++ * config/i386/sse.md (avx_hv4df3): Fix results ++ crossing 128bit lane boundary. ++ ++2012-03-29 Uros Bizjak ++ ++ Backported from mainline ++ 2012-03-27 Uros Bizjak ++ ++ PR target/52698 ++ * config/i386/i386-protos.h (ix86_legitimize_reload_address): ++ New prototype. ++ * config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define. ++ * config/i386/i386.c: Include reload.h. ++ (ix86_legitimize_reload_address): New function. ++ ++2012-03-28 Martin Jambor ++ ++ Backported from mainline ++ 2012-03-27 Martin Jambor ++ ++ PR middle-end/52693 ++ * tree-sra.c (sra_modify_assign): Do not call ++ load_assign_lhs_subreplacements when working with an unscalarizable ++ region. ++ ++2012-03-24 Steven Bosscher ++ ++ PR middle-end/52640 ++ * varasm.c: Include pointer-set.h. ++ (pending_assemble_externals_set): New pointer set. ++ (process_pending_assemble_externals): Destroy the pointer set. ++ (assemble_external): See if decl is in pending_assemble_externals_set, ++ and add it to pending_assemble_externals if necessary. ++ (init_varasm_once): Allocate pending_assemble_externals_set. ++ ++2012-03-06 Michael Meissner ++ ++ Backport from mainline ++ 2012-03-06 Michael Meissner ++ ++ PR target/50310 ++ * config/rs6000/vector.md (vector_uneq): Add support for ++ UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons. ++ (vector_ltgt): Likewise. ++ (vector_ordered): Likewise. ++ (vector_unordered): Likewise. ++ * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): ++ Likewise. ++ ++2012-03-04 John David Anglin ++ ++ Backport from mainline ++ 2012-03-01 John David Anglin ++ ++ PR target/52408 ++ * config/pa/pa.md (zvdep_imm32): Change type of variable x from int to ++ unsigned HOST_WIDE_INT. ++ (zvdep_imm64): Likewise. ++ (vdepi_ior): Change type of variable x from int to HOST_WIDE_INT. ++ (vdepi_and): Likewise. ++ Likewise for unamed 64-bit patterns. ++ * config/pa/predicates.md (lhs_lshift_cint_operand): Update comment. ++ ++2012-03-02 Peter Bergner ++ ++ Backport from mainline ++ 2012-03-02 Peter Bergner ++ ++ * config/rs6000/vsx.md (vsx_set_): Reorder operands. ++ ++2012-02-23 Uros Bizjak ++ ++ PR c/52290 ++ * c-decl.c (start_function): Exit early if decl1 is not FUNTION_DECL. ++ ++2012-02-22 Uros Bizjak ++ ++ PR target/52330 ++ * config/i386/i386.c (ix86_print_operand) : Error out if x ++ is not offsettable memory reference. ++ ++2012-02-21 Richard Earnshaw ++ ++ PR target/52294 ++ * thumb2.md (thumb2_shiftsi3_short): Split register and ++ immediate shifts. For register shifts tie operands 0 and 1. ++ (peephole2 for above): Check that register-controlled shifts ++ have suitably tied operands. ++ ++2012-02-14 Bin Cheng ++ ++ Backport from mainline. ++ 2012-01-30 Bin Cheng ++ ++ PR target/51835 ++ * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI ++ for __aeabi_d2iz/__aeabi_d2uiz with hard-float. ++ ++ 2011-06-08 Julian Brown ++ ++ * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI ++ for double-precision helper functions in hard-float mode if only ++ single-precision arithmetic is supported in hardware. ++ ++2012-02-09 Jakub Jelinek ++ ++ Backported from mainline ++ 2012-02-08 Jakub Jelinek ++ ++ PR rtl-optimization/52139 ++ * cfgrtl.c (cfg_layout_merge_blocks): If BB_END ++ is a BARRIER after emit_insn_after_noloc, move BB_END ++ to the last non-BARRIER insn before it. ++ ++ 2012-01-19 Jakub Jelinek ++ ++ PR libmudflap/40778 ++ * tree-mudflap.c (mf_artificial): New function. ++ (execute_mudflap_function_ops, execute_mudflap_function_decls, ++ mx_register_decls, mudflap_enqueue_decl): Use it. ++ ++ 2012-01-05 Jakub Jelinek ++ ++ PR rtl-optimization/51767 ++ * cfgrtl.c (force_nonfallthru_and_redirect): Force addition ++ of jump_block and add an extra edge for degenerated asm gotos. ++ ++ PR middle-end/51768 ++ * stmt.c (check_unique_operand_names): Don't ICE during error ++ reporting if i is from labels chain. ++ ++ PR middle-end/44777 ++ * profile.c (branch_prob): Split bbs that have exit edge ++ and need a fake entry edge too. ++ ++2012-02-09 Peter Bergner ++ ++ Backport from mainline ++ 2012-02-09 Peter Bergner ++ ++ PR middle-end/52140 ++ * dojump.c (do_compare_rtx_and_jump): Use SCALAR_FLOAT_MODE_P. ++ ++2012-02-09 Andrey Belevantsev ++ ++ Backport from mainline ++ 2012-01-20 Andrey Belevantsev ++ ++ PR target/51106 ++ * function.c (instantiate_virtual_regs_in_insn): Use ++ delete_insn_and_edges when removing a wrong asm insn. ++ ++2012-02-07 Quentin Neill ++ ++ Backport from mainline: ++ 2012-01-19 Quentin Neill ++ ++ PR target/48743 ++ * config/i386/driver-i386.c (host_detect_local_cpu): Also check ++ family to distinguish PROCESSOR_ATHLON. ++ ++2012-02-07 Kai Tietz ++ Dave Korn ++ ++ PR target/40068 ++ * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): ++ Take care that typinfo gets dllexport-attribute. ++ ++2012-01-31 Matthew Gretton-Dann ++ ++ Backport from mainline: ++ 2012-01-31 Matthew Gretton-Dann ++ ++ * config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true condition. ++ ++2012-01-20 Eric Botcazou ++ ++ * cfgrtl.c (rtl_dump_bb): Do not dump insns for {ENTRY|EXIT}_BLOCK. ++ ++2012-01-15 Uros Bizjak ++ ++ PR rtl-optimization/51821 ++ * recog.c (peep2_find_free_register): Determine clobbered registers ++ from insn pattern. ++ ++2012-01-12 Matthew Gretton-Dann ++ ++ Backport from mainline: ++ 2012-01-11 Matthew Gretton-Dann ++ ++ * config/arm/arm.md (mov_notscc): Use MVN for false condition. ++ ++2012-01-10 Joseph Myers ++ ++ Revert: ++ ++ 2008-09-18 Andrew Pinski ++ ++ PR rtl-opt/37451 ++ * loop-doloop.c (doloop_modify): New argument zero_extend_p and ++ zero extend count after the correction to it is done. ++ (doloop_optimize): Update call to doloop_modify, don't zero extend ++ count before call. ++ ++ 2008-11-03 Andrew Pinski ++ ++ PR rtl-opt/37782 ++ * loop-doloop.c (doloop_modify): Add from_mode argument that says what ++ mode count is in. ++ (doloop_optimize): Update call to doloop_modify. ++ ++2012-01-09 Richard Sandiford ++ ++ * config/mips/mips.md (loadgp_newabi_): Add missing ++ earlyclobber. ++ ++2012-01-09 Martin Jambor ++ ++ PR tree-optimization/51759 ++ Backport from mainline ++ 2010-09-15 Martin Jambor ++ ++ PR middle-end/45644 ++ * tree-sra.c (create_access): Check for bit-fields directly. ++ ++2012-01-09 Eric Botcazou ++ ++ * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Check that the ++ purported sigacthandler address isn't null before dereferencing it. ++ (sparc_is_sighandler): Likewise. ++ ++2012-01-06 Richard Sandiford ++ ++ PR middle-end/48660 ++ * expr.h (copy_blkmode_to_reg): Declare. ++ * expr.c (copy_blkmode_to_reg): New function. ++ (expand_assignment): Don't expand register RESULT_DECLs before ++ the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a ++ RESULT_DECL register. ++ (expand_expr_real_1): Handle BLKmode decls when looking for promotion. ++ ++2012-01-04 Richard Guenther ++ ++ Backport from mainline ++ 2012-01-04 Richard Guenther ++ ++ PR tree-optimization/49651 ++ * tree-ssa-structalias.c (type_can_have_subvars): New function. ++ (var_can_have_subvars): Use it. ++ (get_constraint_for_1): Only consider subfields if there ++ can be any. ++ ++ 2011-07-14 Richard Guenther ++ ++ PR tree-optimization/49651 ++ * tree-ssa-structalias.c (get_constraint_for_1): Properly ++ handle dereferences with subvariables. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-10-12 Paul Koning ++ ++ PR tree-optimization/50189 ++ * tree-vrp.c (extract_range_from_assert): Use the type of ++ the variable, not the limit. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-10-06 Jakub Jelinek ++ ++ PR tree-optimization/49279 ++ * tree-ssa-structalias.c (find_func_aliases): Don't handle ++ CAST_RESTRICT. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-08-23 Richard Guenther ++ ++ PR tree-optimization/50162 ++ * tree-vect-stmts.c (vectorizable_call): Fix argument lookup. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-12 Richard Guenther ++ ++ PR tree-optimization/48172 ++ * tree-vect-loop-manip.c (vect_vfa_segment_size): Do not exclude ++ the number of iterations from the segment size calculation. ++ (vect_create_cond_for_alias_checks): Adjust. ++ ++ 2011-05-13 Richard Guenther ++ ++ PR tree-optimization/48172 ++ * tree-vect-loop-manip.c (vect_vfa_segment_size): Avoid ++ multiplying by number of iterations for equal step. ++ (vect_create_cond_for_alias_checks): Likewise. ++ ++2011-12-21 Uros Bizjak ++ ++ Backport from mainline ++ 2011-12-21 Richard Guenther ++ ++ PR lto/41159 ++ * tree-outof-ssa.c (insert_value_copy_on_edge): Use the ++ mode of the pseudo as destination mode. Only assert that ++ is equal to the promoted mode of the decl if it is a REG. ++ ++2011-12-21 Uros Bizjak ++ ++ * config/alpha/linux-unwind.h: Update copyright years. ++ (MD_FROB_UPDATE_CONTEXT): New define. ++ (alpha_frob_update_context): New function. ++ ++2011-12-16 Eric Botcazou ++ ++ * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant. ++ (frame_blockage): New expander. ++ (frame_blockage): New instruction. ++ * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of ++ instructions establishing the frame isn't atomic, emit frame blockage. ++ ++2011-12-13 Eric Botcazou ++ ++ * lto-streamer-out.c (write_symbol): Use proper 64-bit host type. ++ * lto-streamer-in.c (lto_read_body): Use 'int' for offsets. ++ (lto_input_toplevel_asms): Likewise. ++ * lto-section-in.c (lto_create_simple_input_block): Likewise. ++ * lto-opts.c (lto_read_file_options): Likewise. ++ * ipa-prop.c (ipa_prop_read_section): Likewise. ++ ++ * df.h (DF_NOTE): Fix typo in comment. ++ ++2011-12-13 Andreas Krebbel ++ ++ * regmove.c (fixup_match_2): Only access call_used_regs with hard ++ regs. ++ ++2011-12-09 Kazu Hirata ++ ++ Backport from mainline: ++ ++ 2011-12-05 Kazu Hirata ++ ++ PR target/51408 ++ * config/arm/arm.md (*minmax_arithsi): Always require the else ++ clause in the MINUS case. ++ ++2011-12-04 Jérémie Detrey ++ ++ PR target/51393 ++ * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second ++ parameter as long long. ++ ++2011-11-25 Richard Sandiford ++ ++ Backport from mainline: ++ ++ 2011-03-29 Richard Sandiford ++ ++ PR debug/48190 ++ * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced. ++ (cached_dw_loc_list_def): New structure. ++ (cached_dw_loc_list): New typedef. ++ (cached_dw_loc_list_table): New variable. ++ (cached_dw_loc_list_table_hash): New function. ++ (cached_dw_loc_list_table_eq): Likewise. ++ (add_location_or_const_value_attribute): Take a bool cache_p. ++ Cache the list when the parameter is true. ++ (gen_formal_parameter_die): Update caller. ++ (gen_variable_die): Likewise. ++ (dwarf2out_finish): Likewise. ++ (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table ++ while generating debug info for the decl. ++ (dwarf2out_function_decl): Clear cached_dw_loc_list_table. ++ (dwarf2out_init): Initialize cached_dw_loc_list_table. ++ (resolve_addr): Cache the result of resolving a chain of ++ location lists. ++ ++ From: 2010-10-12 Jakub Jelinek ++ * dwarf2out.c (dw_loc_list_node): Add emitted field. ++ (output_loc_list): Return immediately if emitted is set, set it. ++ ++2011-11-19 Eric Botcazou ++ ++ PR rtl-optimization/51187 ++ * reorg.c (relax_delay_slots): Do not consider a jump useless if there ++ is a barrier between the jump and its target label. ++ ++2011-11-07 Alan Modra ++ ++ PR target/30282 ++ * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Always emit ++ blockage for ABI_V4. ++ ++2011-11-04 Eric Botcazou ++ ++ PR target/50979 ++ * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=v8. ++ ++2011-10-30 Uros Bizjak ++ ++ PR target/50875 ++ * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn ++ constraints. Change alternative 1 to "x,m,1". ++ ++2011-10-29 John David Anglin ++ ++ PR target/50691 ++ * config/pa/pa.c (emit_move_sequence): Legitimize TLS symbol ++ references. ++ * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Return false for ++ TLS_MODEL_GLOBAL_DYNAMIC and TLS_MODEL_LOCAL_DYNAMIC symbol references. ++ ++2011-10-23 Uros Bizjak ++ ++ PR target/50788 ++ * config/i386/sse.md (avx_maskload): ++ Remove (match_dup 0). ++ ++2011-10-18 Uros Bizjak ++ Eric Botcazou ++ ++ PR target/50737 ++ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set ++ fs->signal_frame to 1. ++ ++2011-10-12 Joseph Myers ++ ++ PR c/50565 ++ * convert.c (convert_to_integer): Do not narrow operands of ++ pointer subtraction. ++ ++2011-10-11 Eric Botcazou ++ ++ PR target/49965 ++ * config/sparc/sparc.md (movcc): Do not save comparison code. ++ (movcc): Likewise. ++ ++2011-09-22 Uros Bizjak ++ ++ PR target/50464 ++ * config/i386/sse.md (xop_pcmov_): Change operand 1 predicate ++ to register_operand and operand 2 predicate to nonimmediate_operand. ++ (xop_pcmov_256): Ditto. ++ * config/i386/i386.c (ix86_expand_sse_movcc): When generating ++ xop_pcmov, force op_true to register. Also, force op_false to ++ register if it doesn't satisfy nonimmediate_operand predicate. ++ ++2011-09-18 Eric Botcazou ++ Iain Sandoe ++ ++ PR target/50091 ++ * config/rs6000/rs6000.md (probe_stack): Use explicit operand. ++ ++2011-09-08 Martin Jambor ++ ++ Backport from mainline ++ 2011-09-07 Martin Jambor ++ ++ PR tree-optimization/49911 ++ * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced ++ enumerations to the corresponding plain integer type. ++ ++2011-08-26 Richard Sandiford ++ ++ PR target/50090 ++ * config/arm/bpabi.h (RENAME_LIBRARY_SET): Delete. ++ (RENAME_LIBRARY): Use a C-level alias instead of an assembly one. ++ ++2011-08-12 Nick Clifton ++ ++ * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern. ++ * doc/md.texi (cmpstrn): Note that the comparison stops if both ++ fetched bytes are zero. ++ (cmpstr): Likewise. ++ (cmpmem): Note that the comparison does not stop if both of the ++ fetched bytes are zero. ++ ++2011-08-11 Kazuhiro Inaoka ++ ++ * config/rx/rx.md (movsicc): Allow register to register transfers. ++ (*movsicc): Likewise. ++ (*stcc): Restrict this pattern to EQ and NE compares. ++ (*stcc_reg): New pattern. Works for any comparison but only for ++ register transfers. ++ ++2011-08-10 DJ Delorie ++ ++ * expr.c (expand_expr_addr_expr_1): Detect a user request for ++ a local frame in a naked function, and produce a suitable ++ error for that specific case. ++ ++2011-08-06 Uros Bizjak ++ ++ PR target/50001 ++ * config/alpha/alpha.c (alpha_instantiate_decls): New function. ++ (TARGET_INSTANTIATE_DECLS): New define. ++ ++2011-08-01 Sebastien Bourdeauducq ++ ++ * config/lm32/t-lm32: Add missing multilibs. ++ ++2011-07-31 Uros Bizjak ++ ++ PR target/49920 ++ * config/i386/i386.md (strset): Do not expand strset_singleop ++ when %eax or $edi are fixed. ++ (*strsetdi_rex_1): Disable when %eax or %edi are fixed. ++ (*strsetsi_1): Ditto. ++ (*strsetsi_rex_1): Ditto. ++ (*strsethi_1): Ditto. ++ (*strsethi_rex_1): Ditto. ++ (*strsetqi_1): Ditto. ++ (*strsetqi_rex_1): Ditto. ++ (*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed. ++ (*rep_stossi): Ditto. ++ (*rep_stossi_rex64): Ditto. ++ (*rep_stosqi): Ditto. ++ (*rep_stosqi_rex64): Ditto. ++ (*strlenqi_1): Ditto. ++ (*strlenqi_rex_1): Ditto. ++ (cmpstrnsi): Also fail when %ecx is fixed. ++ (*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed. ++ (*cmpstrnqi_nz_rex_1): Ditto. ++ (*cmpstrnqi_1): Ditto. ++ (*cmpstrnqi_rex_1): Ditto. ++ (*strmovdi_rex_1): Disable when %esi or %edi are fixed. ++ (*strmovsi_1): Ditto. ++ (*strmovsi_rex_1): Ditto. ++ (*strmovhi_1): Ditto. ++ (*strmovhi_rex_1): Ditto. ++ (*strmovqi_1): Ditto. ++ (*strmovqi_rex_1): Ditto. ++ (*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed. ++ (*rep_movsi): Ditto. ++ (*rep_movsi_rex64): Ditto. ++ (*rep_movqi): Ditto. ++ (*rep_movqi_rex64): Ditto. ++ ++2011-07-28 Uros Bizjak ++ ++ PR target/47364 ++ * config/i386/i386.md (strlensi): Enable for !TARGET_64BIT only. ++ (strlendi): Enable for TARGET_64BIT only. ++ ++2011-07-29 Nick Clifton ++ ++ * config/rx/rx.c (rx_expand_builtin): Fix typo checking the setpsw ++ builtin. ++ ++2011-07-19 Jakub Jelinek ++ ++ Backport from mainline ++ 2011-07-08 Jakub Jelinek ++ ++ PR target/49621 ++ * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use ++ CONST0_RTX (dest_mode) instead of const0_rtx as second operand ++ of NE. ++ * config/rs6000/vector.md (vector_select_, ++ vector_select__uns): Change second operand of NE to ++ CONST0_RTX (mode) instead of const0_rtx. ++ * config/rs6000/altivec.md (*altivec_vsel, ++ *altivec_vsel_uns): Expect second operand of NE to be ++ zero_constant of the corresponding vector mode. ++ * config/rs6000/vsx.md (*vsx_xxsel, *vsx_xxsel_uns): ++ Likewise. ++ ++ 2011-07-07 Jakub Jelinek ++ ++ PR c/49644 ++ * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with ++ one non-complex and one complex argument, call c_save_expr on both ++ operands. ++ ++ PR middle-end/49640 ++ * gimplify.c (gimplify_compound_lval): For last 2 ARRAY_*REF ++ operands and last COMPONENT_REF operand call gimplify_expr on it ++ if non-NULL. ++ ++ 2011-07-04 Jakub Jelinek ++ ++ PR rtl-optimization/49619 ++ * combine.c (combine_simplify_rtx): In PLUS -> IOR simplification ++ pass VOIDmode as op0_mode to recursive call. ++ ++ 2011-05-27 Jakub Jelinek ++ ++ PR c++/49165 ++ * c-common.c (c_common_truthvalue_conversion) : For ++ C++ don't call c_common_truthvalue_conversion on void type arms. ++ ++ 2011-05-26 Jakub Jelinek ++ ++ PR c++/49165 ++ * gimplify.c (shortcut_cond_r): Don't special case ++ COND_EXPRs if they have void type on one of their arms. ++ ++ PR tree-optimization/49161 ++ * tree-vrp.c (struct case_info): New type. ++ (compare_case_labels): Sort case_info structs instead of ++ trees, and not primarily by CASE_LABEL uids but by ++ label_for_block indexes. ++ (find_switch_asserts): Put case labels into struct case_info ++ array instead of TREE_VEC, adjust sorting, compare label_for_block ++ values instead of CASE_LABELs. ++ ++ 2011-05-23 Jakub Jelinek ++ ++ PR c/49120 ++ * c-decl.c (start_decl): Convert expr to void_type_node. ++ ++ PR middle-end/48973 ++ * expr.c (expand_expr_real_2) : If do_store_flag ++ failed and the comparison has a single bit signed type, use ++ constm1_rtx instead of const1_rtx for true value. ++ (do_store_flag): If ops->type is single bit signed type, disable ++ signel bit test optimization and pass -1 instead of 1 as last ++ parameter to emit_store_flag_force. ++ ++ 2011-05-18 Jakub Jelinek ++ ++ PR tree-optimization/49039 ++ * tree-vrp.c (extract_range_from_binary_expr): For ++ MIN_EXPR <~[a, b], ~[c, d]> and MAX_EXPR <~[a, b], ~[c, d]> ++ return ~[MAX_EXPR , MIN_EXPR ]. ++ ++2011-07-17 John David Anglin ++ ++ PR target/49746 ++ Revert: ++ 2010-12-30 John David Anglin ++ ++ * config/pa/pa.md: Add ",*" condition to 64-bit add/subtract boolean ++ patterns. ++ ++2011-07-15 John David Anglin ++ ++ PR target/49723 ++ * config/pa/pa.md (casesi): Use gen_int_mode instead of GEN_INT. ++ ++2011-07-12 Andrey Belevantsev ++ ++ Backport from mainline ++ 2011-05-25 Andrey Belevantsev ++ ++ PR rtl-optimization/49014 ++ * config/i386/athlon.md (athlon_ssecomi): Change type to ssecomi. ++ ++2011-07-07 Eric Botcazou ++ ++ PR target/49660 ++ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add ++ MASK_V8PLUS, remove commented out flag and reorder. ++ ++ Backport from mainline ++ 2011-06-28 Rainer Orth ++ ++ * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove. ++ (TARGET_64BIT_DEFAULT): Define. ++ * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front ++ of tm_file. ++ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define. ++ ++2011-07-04 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-02 Richard Guenther ++ ++ PR tree-optimization/48822 ++ * tree-ssa-sccvn.c (set_ssa_val_to): Never go up the lattice. ++ ++2011-07-04 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-23 Richard Guenther ++ ++ PR tree-optimization/49115 ++ * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise. ++ ++2011-07-04 Richard Guenther ++ ++ PR tree-optimization/49615 ++ * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix ++ basic-block index check. ++ ++2011-06-30 Eric Botcazou ++ ++ PR tree-optimization/49572 ++ * tree-ssa-dom.c (initialize_hash_element) : Use the ++ type of the RHS instead of that of the LHS for the expression type. ++ ++2011-06-30 Jack Howarth ++ ++ Backport from mainline ++ 2011-02-07 Mike Stump ++ ++ PR target/42333 ++ Add __ieee_divdc3 entry point. ++ * config/i386/darwin.h (DECLARE_LIBRARY_RENAMES): Retain ___divdc3 ++ entry point. ++ (SUBTARGET_INIT_BUILTINS): Call darwin_rename_builtins. ++ * config/i386/i386.c (TARGET_INIT_LIBFUNCS): Likewise. ++ * config/darwin.c (darwin_rename_builtins): Add. ++ * config/darwin-protos.h (darwin_rename_builtins): Add. ++ ++2011-06-28 Eric Botcazou ++ ++ * tree-ssa-dom.c (initialize_hash_element): Fix oversight. ++ ++2011-06-17 Hans-Peter Nilsson ++ ++ Backport from mainline ++ 2011-06-17 Hans-Peter Nilsson ++ ++ PR rtl-optimization/48542 ++ * reload.c (find_equiv_reg): Stop looking when finding a ++ setjmp-type call. ++ * reload1.c (reload_as_needed): Invalidate all reload ++ registers when crossing a setjmp-type call. ++ ++2011-06-16 Kaz Kojima ++ ++ Backport from mainline ++ 2011-06-09 Kaz Kojima ++ ++ PR target/49307 ++ * config/sh/sh.md (UNSPEC_CHKADD): New. ++ (chk_guard_add): New define_insn_and_split. ++ (symGOT_load): Use chk_guard_add instead of blockage. ++ ++2011-06-11 Uros Bizjak ++ ++ * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. ++ (*vec_dupv2df): Rename from vec_dupv2df. ++ (vec_dupv2df): New expander. ++ ++2011-06-09 Eric Botcazou ++ ++ * config/sparc/sparc.md (return_internal): Adjust 'length' attribute. ++ ++2011-06-08 Kaz Kojima ++ ++ Backport from mainline ++ 2011-06-01 Kaz Kojima ++ ++ PR target/49238 ++ * config/sh/sh.c (expand_cbranchdi4): Use a scratch register if ++ needed when original operands are used for msw_skip comparison. ++ ++2011-06-05 Eric Botcazou ++ ++ * config/sparc/sparc.c (output_return): Fix thinko in the output of an ++ EH return when delayed branches are disabled. ++ ++2011-06-05 Kaz Kojima ++ ++ Backport from mainline ++ 2011-05-30 Kaz Kojima ++ ++ PR target/49186 ++ * config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high ++ part of the second operand is 0. ++ ++2011-06-04 Ira Rosen ++ ++ PR tree-optimization/49038 ++ * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader): ++ Ensure at least one epilogue iteration if required by data ++ accesses with gaps. ++ * tree-vectorizer.h (struct _loop_vec_info): Add new field ++ to mark loops that require peeling for gaps. ++ * tree-vect-loop.c (new_loop_vec_info): Initialize new field. ++ (vect_estimate_min_profitable_iters): Take peeling for gaps into ++ account. ++ (vect_transform_loop): Generate epilogue if required by data ++ access with gaps. ++ * tree-vect-data-refs.c (vect_analyze_group_access): Mark the ++ loop as requiring an epilogue if there are gaps in the end of ++ the strided group. ++ ++2011-05-29 Richard Sandiford ++ ++ PR target/43700 ++ * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global ++ registers. ++ ++2011-05-29 Richard Sandiford ++ ++ PR target/43995 ++ * config/mips/mips.c (mips_pic_call_symbol_from_set): Add a ++ recurse_p argument. Only follow register copies if it is set, ++ and prevent mips_find_pic_call_symbol from recursing. ++ (mips_find_pic_call_symbol): Add a recurse_p argument. ++ Pass it to mips_pic_call_symbol_from_set. ++ (mips_annotate_pic_calls): Update accordingly. ++ ++2011-05-26 Eric Botcazou ++ ++ * config/sparc/sparc-protos.h (sparc_optimization_options): Declare. ++ * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define. ++ * config/sparc/sparc.c (sparc_optimization_options): New function. ++ Set flag_ira_share_save_slots to 0. ++ ++ Backport from mainline ++ 2011-01-21 Jeff Law ++ ++ PR rtl-optimization/41619 ++ * caller-save.c (setup_save_areas): Break out code to determine ++ which hard regs are live across calls by examining the reload chains ++ so that it is always used. ++ Eliminate code which checked REG_N_CALLS_CROSSED. ++ ++2011-05-25 Uros Bizjak ++ ++ PR target/49133 ++ * config/i386/sse.md (sse2_loadhpd): Remove shufpd alternative. ++ ++2011-05-21 Eric Botcazou ++ ++ * config/sparc/sparc.md (setjmp): Handle PIC mode and use the hard ++ frame pointer. ++ ++2011-05-21 Eric Botcazou ++ ++ * config/sparc/sparc.c (eligible_for_return_delay): Do not return ++ false if there are call-saved registers here... ++ (sparc_can_use_return_insn_p): ...but here instead. ++ (save_or_restore_regs): Fix thinko. ++ (sparc_expand_prologue): Use current_function_is_leaf. ++ (sparc_frame_pointer_required): Likewise. ++ ++2011-05-20 Nick Clifton ++ ++ * config/rx/rx.h (HAVE_PRE_DECREMENT): Fix typo in macro name. ++ ++2011-05-16 Uros Bizjak ++ ++ * config/i386/i386.md (*movxf_internal): Disable CONST_DOUBLE ++ optimization for CM_MEDIUM and CM_LARGE code models. Fix usage ++ of standard_80387_constant_p. ++ (*movxf_internal_nointeger): Ditto. ++ (*movdf_internal): Remove dead code-size optimization. ++ (*movdf_internal_rex64): Fix usage of standard_80387_constant_p. ++ (*movdf_internal_nointeger): Ditto. ++ (*movsf_internal): Ditto. ++ (floating point move splitters): Ditto. ++ * config/i386/constraints.md (G): Ditto. ++ * config/i386/i386.c (ix86_preferred_reload_class): Ditto. ++ ++2011-05-11 Michael Meissner ++ ++ Backport from mainline ++ 2011-05-10 Michael Meissner ++ ++ PR target/48857, 48495 ++ * config/rs6000/rs6000.h (VSX_SCALAR_MODE): Delete. ++ (VSX_MODE): Ditto. ++ (VSX_MOVE_MODE): Ditto. ++ (ALTIVEC_OR_VSX_VECTOR_MODE): New macro, combine all Altivec and ++ VSX vector types. Add V2DImode. ++ (HARD_REGNO_CALLER_SAVE_MODE): Use it instead of ++ ALTIVEC_VECTOR_MODE and VSX_VECTOR_MODE calls. ++ (MODES_TIEABLE_P): Ditto. ++ ++ * config/rs6000/rs6000.c (rs6000_emit_move): Use ++ ALTIVEC_OR_VSX_MODE instead of ALTIVEC_VECTOR_MODE and ++ VSX_VECTOR_MODE. ++ (init_cumulative_args): Ditto. ++ (rs6000_function_arg_boundary): Ditto. ++ (rs6000_function_arg_advance_1): Ditto. ++ (rs6000_function_arg): Ditto. ++ (rs6000_function_ok_for_sibcall): Ditto. ++ (emit_frame_save): Ditto. ++ (rs6000_function_value): Ditto. ++ (rs6000_libcall_value): Ditto. ++ ++2011-05-10 Jakub Jelinek ++ ++ Backported from mainline ++ 2011-05-07 Zdenek Dvorak ++ ++ PR tree-optimization/48837 ++ * tree-tailcall.c (tree_optimize_tail_calls_1): Do not mark tailcalls ++ when accumulator transformation is performed. ++ ++2011-05-09 Eric Botcazou ++ ++ * var-tracking.c (find_mem_expr_in_1pdv): Fix thinko. ++ (dataflow_set_preserve_mem_locs): Likewise. ++ ++2011-05-07 Alan Modra ++ ++ PR target/48900 ++ * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use ++ const0_rtx as the arg to the dummy __tls_get_addr libcall. ++ ++2011-05-05 Jason Merrill ++ ++ PR c++/40975 ++ * tree-inline.c (copy_tree_r): Handle STATEMENT_LIST. ++ ++2011-05-05 Julian Brown ++ ++ * config/arm/neon.md (vec_set_internal): Fix misplaced ++ parenthesis in D-register case. ++ ++2011-05-05 Ira Rosen ++ ++ Backport from mainline: ++ 2011-04-18 Ulrich Weigand ++ Ira Rosen ++ ++ PR target/48252 ++ * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments ++ to match neon_vzip/vuzp/vtrn_internal. ++ * config/arm/neon.md (neon_vtrn_internal): Make both ++ outputs explicitly dependent on both inputs. ++ (neon_vzip_internal, neon_vuzp_internal): Likewise. ++ ++2011-05-04 Uros Bizjak ++ ++ Backport from mainline ++ 2011-04-21 Uros Bizjak ++ ++ PR target/48708 ++ * config/i386/i386.c (ix86_expand_vector_set) : Generate ++ vec_extract and vec_concat for non-SSE4_1 targets. ++ ++2011-05-04 Uros Bizjak ++ ++ * config/i386/i386.md (*movdi_internal_rex64) : ++ Use %v prefix in insn mnemonic to handle TARGET_AVX. ++ (*movdi_internal): Use "maybe_vex" instead of "vex" in "prefix" ++ attribute calculation. ++ (*movdf_internal): Output AVX mnemonics. Add "prefix" attribute. ++ * config/i386/sse.md (*sse2_storeq_rex64): Do not emit %v prefix ++ for mov{q} mnemonic. ++ (*vec_extractv2di_1_rex64_avx): Ditto. ++ (*vec_concatv2di_rex64_sse4_1): Use %vmovd for reg<->xmm moves. ++ (*vec_concatv2di_rex64_sse): Use movd for reg<->xmm moves. ++ * config/i386/mmx.md (*mov_internal_rex64): Ditto. ++ ++2011-05-03 Uros Bizjak ++ Jakub Jelinek ++ ++ PR target/48774 ++ * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode ++ only succeed if req_mode is the same as set_mode. ++ ++2011-05-03 Jakub Jelinek ++ ++ Backport from mainline ++ 2011-04-30 Jakub Jelinek ++ ++ PR tree-optimization/48809 ++ * tree-switch-conversion.c (build_arrays): Compute tidx in unsigned ++ type. ++ (gen_inbound_check): Don't compute index_expr - range_min in utype ++ again, instead reuse SSA_NAME initialized in build_arrays. ++ Remove two useless gsi_for_stmt calls. ++ ++ 2011-04-28 Jakub Jelinek ++ ++ PR middle-end/48597 ++ * final.c (final_scan_insn): Call dwarf2out_frame_debug even for ++ inline asm. ++ ++ 2011-04-27 Jakub Jelinek ++ ++ PR c/48742 ++ * c-typeck.c (build_binary_op): Don't wrap arguments if ++ int_operands is true. ++ ++ 2011-04-23 Jakub Jelinek ++ ++ PR c/48685 ++ * fold-const.c (fold_convert_loc): Add NOP_EXPR when casting ++ to VOID_TYPE even around MODIFY_EXPR. ++ ++2011-05-02 Ulrich Weigand ++ ++ PR middle-end/43085 ++ Backport from mainline: ++ ++ 2010-04-29 Bernd Schmidt ++ ++ From Dominique d'Humieres ++ PR bootstrap/43858 ++ * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs to compute ++ test_set. ++ ++ 2010-04-26 Bernd Schmidt ++ ++ * df-problems.c (df_simulate_initialize_forwards): Set, don't clear, ++ bits for artificial defs at the top of the block. ++ * fwprop.c (single_def_use_enter_block): Don't call it. ++ ++ 2010-04-22 Bernd Schmidt ++ ++ * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and ++ df_simulate_find_noclobber_defs as appropriate. Keep track of an ++ extra set merge_set_noclobber, and use it to relax the final test ++ slightly. ++ * df.h (df_simulate_find_noclobber_defs): Declare. ++ * df-problems.c (df_simulate_find_defs): Don't ignore partial or ++ conditional defs. ++ (df_simulate_find_noclobber_defs): New function. ++ ++2011-04-29 John David Anglin ++ ++ PR target/48288 ++ * config/pa/predicates.md (ior_operand): Delete predicate. ++ (cint_ior_operand, reg_or_cint_ior_operand): New predicates. ++ * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in ++ expander. Use cint_ior_operand in unnamed insn. ++ (iorsi3): Likewise. ++ * config/pa/pa-protos.h (ior_operand): Delete declarations. ++ ++2011-04-28 Richard Guenther ++ ++ * DEV-PHASE: Set back to prerelease. ++ * BASE-VER: Bump to 4.5.4. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. +@@ -80,7 +1316,7 @@ + to flow_loop_nested_p when moving the loop upward. + + 2011-03-15 Richard Guenther +- ++ + PR middle-end/48031 + * fold-const.c (fold_indirect_ref_1): Do not create new variable-sized + or variable-indexed array accesses when in gimple form. +@@ -433,7 +1669,7 @@ + PR target/48171 + * config/i386/i386.opt: Add Save to -mavx and -mfma. + +-2011-03-16 Pat Haugen ++2011-03-16 Pat Haugen + + PR target/47862 + * caller-save.c (insert_restore, insert_save): Use non-validate +@@ -506,10 +1742,10 @@ + * cgraph.c (cgraph_function_body_availability): Use decl_replaceable_p. + * tree-inline.c (inlinable_function_p): Likewise. + +-2011-03-07 Pat Haugen ++2011-03-07 Pat Haugen + + Backport from mainline +- 2011-03-07 Pat Haugen ++ 2011-03-07 Pat Haugen + + PR target/47862 + * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Define. +@@ -525,7 +1761,7 @@ + (ssse3_pmaddubsw128): Ditto. + (ssse3_pmaddubsw): Ditto. + +-2011-03-03 Denis Chertykov ++2011-03-03 Denis Chertykov + + Backport from mainline + 2011-02-22 Georg-Johann Lay +@@ -605,7 +1841,7 @@ + origin of assertions. + Update copyright years. + +-2011-02-25 Andriy Gapon ++2011-02-25 Andriy Gapon + + PR target/45808 + * config/freebsd-spec.h (FBSD_LIB_SPEC): Handle the shared case. +@@ -1304,7 +2540,7 @@ + + Backport from mainline + 2010-12-06 Jakub Jelinek +- ++ + PR target/43897 + * config/ia64/ia64.c (rtx_needs_barrier): Handle asm CLOBBER + as a store into that register. +@@ -1798,7 +3034,7 @@ + debug isnsn. Skip them when searching for cc0 setter. + (set_live_p): Skip debug insns when searching for cc0 user. + +-2010-10-09 Ralf Corsépius ++2010-10-09 Ralf Corsépius + + * config.gcc (bfin*-rtems*): Add newlib-stdint.h. + * config.gcc (lm32*-rtems*): Add newlib-stdint.h. +@@ -1822,7 +3058,7 @@ + 2010-10-06 Jack Howarth + + Backport from mainline +- 2010-04-26 Jack Howarth ++ 2010-04-26 Jack Howarth + + PR 43715 + * configure.ac: Pass -g for export_sym_check on darwin. +@@ -2079,11 +3315,11 @@ + insns instead. Rewrite the movement code to support moving through + several basic blocks. + +-2010-09-10 Jack Howarth ++2010-09-10 Jack Howarth + + Backport from mainline + 2010-09-07 H.J. Lu +- Jack Howarth ++ Jack Howarth + + PR target/36502 + PR target/42313 +@@ -2483,7 +3719,7 @@ + Backport from mainline. + 2010-07-22 Ramana Radhakrishnan + +- PR target/43698 ++ PR target/43698 + * config/arm/arm.md: Split arm_rev into *arm_rev and *thumb1_rev. + Set *arm_rev to be predicable. + +@@ -4135,7 +5371,7 @@ + * tree-tailcall.c (find_tail_calls): Verify the tail call + properly. + +-2010-04-19 Ira Rosen ++2010-04-19 Ira Rosen + + PR tree-optimization/43771 + * tree-vect-slp.c (vect_supported_load_permutation_p): Check that diff --git a/lang/gcc45/patches/patch-gcc_DATESTAMP b/lang/gcc45/patches/patch-gcc_DATESTAMP new file mode 100644 index 000000000..0357b0d72 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_DATESTAMP @@ -0,0 +1,7 @@ +$NetBSD$ + +--- gcc/DATESTAMP.orig Thu Apr 28 00:17:54 2011 ++++ gcc/DATESTAMP +@@ -1 +1 @@ +-20110428 ++20120702 diff --git a/lang/gcc45/patches/patch-gcc_Makefile.in b/lang/gcc45/patches/patch-gcc_Makefile.in new file mode 100644 index 000000000..e3ecc4729 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_Makefile.in @@ -0,0 +1,156 @@ +$NetBSD$ + +--- gcc/Makefile.in.orig Thu Sep 2 13:05:30 2010 ++++ gcc/Makefile.in +@@ -602,6 +602,9 @@ objext = .o + exeext = @host_exeext@ + build_exeext = @build_exeext@ + ++# NetBSD mknative-gcc addition ++ENABLE_SHARED = @enable_shared@ ++ + # Directory in which to put man pages. + mandir = @mandir@ + man1dir = $(mandir)/man1 +@@ -727,6 +730,7 @@ LIBCONVERT = + + # Control whether header files are installed. + INSTALL_HEADERS=install-headers install-mkheaders ++INSTALL_HEADERS=install-headers + + # Control whether Info documentation is built and installed. + BUILD_INFO = @BUILD_INFO@ +@@ -766,7 +770,7 @@ BUILD_LINKERFLAGS = $(BUILD_CFLAGS) + + # Native linker and preprocessor flags. For x-fragment overrides. + BUILD_LDFLAGS=@BUILD_LDFLAGS@ +-BUILD_CPPFLAGS=$(ALL_CPPFLAGS) ++BUILD_CPPFLAGS=$(BALL_CPPFLAGS) + + # Actual name to use when installing a native compiler. + GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)') +@@ -981,6 +985,7 @@ ALL_CXXFLAGS = $(T_CFLAGS) $(CXXFLAGS) $(INTERNAL_CFLA + # puts -I options in CPPFLAGS, our include files in the srcdir will always + # win against random include files in /usr/include. + ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS) ++BALL_CPPFLAGS = $(BINCLUDES) $(CPPFLAGS) + + # This is the variable to use when using $(COMPILER). + ifneq ($(ENABLE_BUILD_WITH_CXX),yes) +@@ -1042,6 +1047,10 @@ INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ + -I$(srcdir)/../include @INCINTL@ \ + $(CPPINC) $(GMPINC) $(DECNUMINC) \ + $(PPLINC) $(CLOOGINC) $(LIBELFINC) ++BINCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ ++ -I$(srcdir)/../include @INCINTL@ \ ++ $(CPPINC) $(DECNUMINC) \ ++ $(PPLINC) $(CLOOGINC) $(LIBELFINC) + + .c.o: + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION) +@@ -1822,8 +1831,7 @@ libgcc-support: libgcc.mvars stmp-int-hdrs $(TCONFIG_H + $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \ + $(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE) + +-libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \ +- xgcc$(exeext) ++libgcc.mvars: config.status Makefile + : > tmp-libgcc.mvars + echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars + echo LIB1ASMSRC = '$(LIB1ASMSRC)' >> tmp-libgcc.mvars +@@ -1880,6 +1888,7 @@ multilib.h: s-mlib; @true + s-mlib: $(srcdir)/genmultilib Makefile + if test @enable_multilib@ = yes \ + || test -n "$(MULTILIB_OSDIRNAMES)"; then \ ++ CONFIG_SHELL="$(SHELL)" \ + $(SHELL) $(srcdir)/genmultilib \ + "$(MULTILIB_OPTIONS)" \ + "$(MULTILIB_DIRNAMES)" \ +@@ -3820,6 +3829,12 @@ gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(LIBDEPS) + # s-* so that mostlyclean does not force the include directory to + # be rebuilt. + ++unwind.h: $(UNWIND_H) ++ -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi ++ rm -f include/unwind.h ++ cp $(UNWIND_H) include/unwind.h ++ chmod a+r include/unwind.h ++ + # Build the include directories. + stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list + # Copy in the headers provided with gcc. +@@ -3829,6 +3844,7 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fi + # The touch command is here to workaround an AIX/Linux NFS bug. + -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi + -if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi ++ if false; then \ + for file in .. $(USER_H); do \ + if [ X$$file != X.. ]; then \ + realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ +@@ -3837,11 +3853,13 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fi + cp $$file include; \ + chmod a+r include/$$realfile; \ + fi; \ +- done ++ done; \ ++ fi + rm -f include/unwind.h + cp $(UNWIND_H) include/unwind.h + chmod a+r include/unwind.h +- rm -f include/stdint.h ++ if false; then \ ++ rm -f include/stdint.h; \ + if [ $(USE_GCC_STDINT) = wrap ]; then \ + rm -f include/stdint-gcc.h; \ + cp $(srcdir)/ginclude/stdint-gcc.h include/stdint-gcc.h; \ +@@ -3851,7 +3869,7 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fi + elif [ $(USE_GCC_STDINT) = provide ]; then \ + cp $(srcdir)/ginclude/stdint-gcc.h include/stdint.h; \ + chmod a+r include/stdint.h; \ +- fi ++ fi; \ + set -e; for ml in `cat fixinc_list`; do \ + sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \ + multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \ +@@ -3866,7 +3884,8 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fi + rm -f $${fix_dir}/limits.h; \ + mv tmp-xlimits.h $${fix_dir}/limits.h; \ + chmod a+r $${fix_dir}/limits.h; \ +- done ++ done; \ ++ fi + # Install the README + rm -f include-fixed/README + cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README +@@ -3926,10 +3945,11 @@ s-fixinc_list : $(GCC_PASSES) + # Abort if no system headers available, unless building a crosscompiler. + # FIXME: abort unless building --without-headers would be more accurate and less ugly + stmp-fixinc: gsyslimits.h macro_list fixinc_list \ +- $(build_objdir)/fixincludes/fixincl \ ++ $(build_objdir)/fixincludes/fixincl$(build_exeext) \ + $(build_objdir)/fixincludes/fixinc.sh +- rm -rf include-fixed; mkdir include-fixed +- -chmod a+rx include-fixed ++ if false; then \ ++ rm -rf include-fixed; mkdir include-fixed; \ ++ -chmod a+rx include-fixed; \ + if [ -d ../prev-gcc ]; then \ + cd ../prev-gcc && \ + $(MAKE) real-$(INSTALL_HEADERS_DIR) DESTDIR=`pwd`/../gcc/ \ +@@ -3963,6 +3983,7 @@ stmp-fixinc: gsyslimits.h macro_list fixinc_list \ + fi; \ + chmod a+r $${fix_dir}/syslimits.h; \ + done; \ ++ fi; \ + fi + $(STAMP) stmp-fixinc + # +@@ -4389,6 +4410,8 @@ install-info:: doc installdirs \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs ++ @echo "NOT REBUILDING $@" ++NetBSD_DISABLED_info: + rm -f $@ + if [ -f $< ]; then \ + for f in $(<)*; do \ diff --git a/lang/gcc45/patches/patch-gcc_builtins.c b/lang/gcc45/patches/patch-gcc_builtins.c new file mode 100644 index 000000000..8a034bfb6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_builtins.c @@ -0,0 +1,83 @@ +$NetBSD$ + +--- gcc/builtins.c.orig Tue Dec 7 15:11:46 2010 ++++ gcc/builtins.c +@@ -347,7 +347,7 @@ bool + can_trust_pointer_alignment (void) + { + /* We rely on TER to compute accurate alignment information. */ +- return (optimize && flag_tree_ter); ++ return (!STRICT_ALIGNMENT && optimize && flag_tree_ter); + } + + /* Return the alignment in bits of EXP, a pointer valued expression. +@@ -3896,9 +3896,9 @@ expand_builtin_bzero (tree exp) + } + + /* Expand expression EXP, which is a call to the memcmp built-in function. +- Return NULL_RTX if we failed and the +- caller should emit a normal call, otherwise try to get the result in +- TARGET, if convenient (and in mode MODE, if that's convenient). */ ++ Return NULL_RTX if we failed and the caller should emit a normal call, ++ otherwise try to get the result in TARGET, if convenient (and in mode ++ MODE, if that's convenient). */ + + static rtx + expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target, +@@ -3910,7 +3910,10 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx + POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE)) + return NULL_RTX; + +-#if defined HAVE_cmpmemsi || defined HAVE_cmpstrnsi ++ /* Note: The cmpstrnsi pattern, if it exists, is not suitable for ++ implementing memcmp because it will stop if it encounters two ++ zero bytes. */ ++#if defined HAVE_cmpmemsi + { + rtx arg1_rtx, arg2_rtx, arg3_rtx; + rtx result; +@@ -3925,16 +3928,9 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx + = get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT; + enum machine_mode insn_mode; + +-#ifdef HAVE_cmpmemsi + if (HAVE_cmpmemsi) + insn_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode; + else +-#endif +-#ifdef HAVE_cmpstrnsi +- if (HAVE_cmpstrnsi) +- insn_mode = insn_data[(int) CODE_FOR_cmpstrnsi].operand[0].mode; +- else +-#endif + return NULL_RTX; + + /* If we don't have POINTER_TYPE, call the function. */ +@@ -3959,18 +3955,10 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx + set_mem_size (arg2_rtx, arg3_rtx); + } + +-#ifdef HAVE_cmpmemsi + if (HAVE_cmpmemsi) + insn = gen_cmpmemsi (result, arg1_rtx, arg2_rtx, arg3_rtx, + GEN_INT (MIN (arg1_align, arg2_align))); + else +-#endif +-#ifdef HAVE_cmpstrnsi +- if (HAVE_cmpstrnsi) +- insn = gen_cmpstrnsi (result, arg1_rtx, arg2_rtx, arg3_rtx, +- GEN_INT (MIN (arg1_align, arg2_align))); +- else +-#endif + gcc_unreachable (); + + if (insn) +@@ -3996,7 +3984,7 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx + else + return convert_to_mode (mode, result, 0); + } +-#endif ++#endif /* HAVE_cmpmemsi. */ + + return NULL_RTX; + } diff --git a/lang/gcc45/patches/patch-gcc_c-common.c b/lang/gcc45/patches/patch-gcc_c-common.c new file mode 100644 index 000000000..1b94e54f5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c-common.c @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/c-common.c.orig Thu Apr 7 18:25:50 2011 ++++ gcc/c-common.c +@@ -4031,14 +4031,15 @@ c_common_truthvalue_conversion (location_t location, t + /* Distribute the conversion into the arms of a COND_EXPR. */ + if (c_dialect_cxx ()) + { ++ tree op1 = TREE_OPERAND (expr, 1); ++ tree op2 = TREE_OPERAND (expr, 2); ++ /* In C++ one of the arms might have void type if it is throw. */ ++ if (!VOID_TYPE_P (TREE_TYPE (op1))) ++ op1 = c_common_truthvalue_conversion (location, op1); ++ if (!VOID_TYPE_P (TREE_TYPE (op2))) ++ op2 = c_common_truthvalue_conversion (location, op2); + expr = fold_build3_loc (location, COND_EXPR, truthvalue_type_node, +- TREE_OPERAND (expr, 0), +- c_common_truthvalue_conversion (location, +- TREE_OPERAND (expr, +- 1)), +- c_common_truthvalue_conversion (location, +- TREE_OPERAND (expr, +- 2))); ++ TREE_OPERAND (expr, 0), op1, op2); + goto ret; + } + else diff --git a/lang/gcc45/patches/patch-gcc_c-decl.c b/lang/gcc45/patches/patch-gcc_c-decl.c new file mode 100644 index 000000000..ef38eefa1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c-decl.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/c-decl.c.orig Thu Nov 11 20:40:32 2010 ++++ gcc/c-decl.c +@@ -3909,7 +3909,7 @@ start_decl (struct c_declarator *declarator, struct c_ + return 0; + + if (expr) +- add_stmt (expr); ++ add_stmt (fold_convert (void_type_node, expr)); + + if (TREE_CODE (decl) != FUNCTION_DECL && MAIN_NAME_P (DECL_NAME (decl))) + warning (OPT_Wmain, "%q+D is usually a function", decl); +@@ -7385,7 +7385,8 @@ start_function (struct c_declspecs *declspecs, struct + + /* If the declarator is not suitable for a function definition, + cause a syntax error. */ +- if (decl1 == 0) ++ if (decl1 == 0 ++ || TREE_CODE (decl1) != FUNCTION_DECL) + return 0; + + loc = DECL_SOURCE_LOCATION (decl1); diff --git a/lang/gcc45/patches/patch-gcc_c-lex.c b/lang/gcc45/patches/patch-gcc_c-lex.c new file mode 100644 index 000000000..f177e5469 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c-lex.c @@ -0,0 +1,45 @@ +$NetBSD$ + +--- gcc/c-lex.c.orig Thu Apr 7 18:24:43 2011 ++++ gcc/c-lex.c +@@ -718,22 +718,25 @@ interpret_float (const cpp_token *token, unsigned int + outside the range of representable values of its type. Since we + have __builtin_inf* to produce an infinity, this is now a + mandatory pedwarn if the target does not support infinities. */ +- if (REAL_VALUE_ISINF (real) +- || (const_type != type && REAL_VALUE_ISINF (real_trunc))) ++ if (warn_overflow) + { +- if (!MODE_HAS_INFINITIES (TYPE_MODE (type))) +- pedwarn (input_location, 0, "floating constant exceeds range of %qT", type); +- else +- warning (OPT_Woverflow, "floating constant exceeds range of %qT", type); +- } +- /* We also give a warning if the value underflows. */ +- else if (REAL_VALUES_EQUAL (real, dconst0) +- || (const_type != type && REAL_VALUES_EQUAL (real_trunc, dconst0))) +- { +- REAL_VALUE_TYPE realvoidmode; +- int overflow = real_from_string (&realvoidmode, copy); +- if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0)) +- warning (OPT_Woverflow, "floating constant truncated to zero"); ++ if (REAL_VALUE_ISINF (real) ++ || (const_type != type && REAL_VALUE_ISINF (real_trunc))) ++ { ++ if (!MODE_HAS_INFINITIES (TYPE_MODE (type))) ++ pedwarn (input_location, 0, "floating constant exceeds range of %qT", type); ++ else ++ warning (OPT_Woverflow, "floating constant exceeds range of %qT", type); ++ } ++ /* We also give a warning if the value underflows. */ ++ else if (REAL_VALUES_EQUAL (real, dconst0) ++ || (const_type != type && REAL_VALUES_EQUAL (real_trunc, dconst0))) ++ { ++ REAL_VALUE_TYPE realvoidmode; ++ int overflow = real_from_string (&realvoidmode, copy); ++ if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0)) ++ warning (OPT_Woverflow, "floating constant truncated to zero"); ++ } + } + + /* Create a node with determined type and value. */ diff --git a/lang/gcc45/patches/patch-gcc_c-opts.c b/lang/gcc45/patches/patch-gcc_c-opts.c new file mode 100644 index 000000000..93a115631 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c-opts.c @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/c-opts.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/c-opts.c +@@ -160,12 +160,14 @@ c_common_missing_argument (const char *opt, size_t cod + error ("macro name missing after %qs", opt); + break; + ++ case OPT_cxx_isystem: + case OPT_F: + case OPT_I: + case OPT_idirafter: + case OPT_isysroot: + case OPT_isystem: + case OPT_iquote: ++ case OPT_iremap: + error ("missing path after %qs", opt); + break; + +@@ -564,6 +566,10 @@ c_common_handle_option (size_t scode, const char *arg, + set_std_cxx98 (true); + break; + ++ case OPT_cxx_isystem: ++ add_path (xstrdup (arg), SYSTEM, 1, true); ++ break; ++ + case OPT_d: + handle_OPT_d (arg); + break; +@@ -877,6 +883,10 @@ c_common_handle_option (size_t scode, const char *arg, + + case OPT_isystem: + add_path (xstrdup (arg), SYSTEM, 0, true); ++ break; ++ ++ case OPT_iremap: ++ add_cpp_remap_path (arg); + break; + + case OPT_iwithprefix: diff --git a/lang/gcc45/patches/patch-gcc_c-typeck.c b/lang/gcc45/patches/patch-gcc_c-typeck.c new file mode 100644 index 000000000..dad0b5731 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c-typeck.c @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/c-typeck.c.orig Sun Jan 16 20:26:27 2011 ++++ gcc/c-typeck.c +@@ -4219,6 +4219,11 @@ build_conditional_expr (location_t colon_loc, tree ife + ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2); + else + { ++ if (int_operands) ++ { ++ op1 = remove_c_maybe_const_expr (op1); ++ op2 = remove_c_maybe_const_expr (op2); ++ } + ret = build3 (COND_EXPR, result_type, ifexp, op1, op2); + if (int_operands) + ret = note_integer_operands (ret); +@@ -9655,6 +9660,7 @@ build_binary_op (location_t location, enum tree_code c + { + case MULT_EXPR: + case TRUNC_DIV_EXPR: ++ op1 = c_save_expr (op1); + imag = build2 (resultcode, real_type, imag, op1); + /* Fall through. */ + case PLUS_EXPR: +@@ -9675,6 +9681,7 @@ build_binary_op (location_t location, enum tree_code c + switch (code) + { + case MULT_EXPR: ++ op0 = c_save_expr (op0); + imag = build2 (resultcode, real_type, op0, imag); + /* Fall through. */ + case PLUS_EXPR: +@@ -9800,7 +9807,7 @@ build_binary_op (location_t location, enum tree_code c + warn_for_sign_compare (location, orig_op0_folded, + orig_op1_folded, op0, op1, + result_type, resultcode); +- if (!in_late_binary_op) ++ if (!in_late_binary_op && !int_operands) + { + if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST) + op0 = c_wrap_maybe_const (op0, !op0_maybe_const); diff --git a/lang/gcc45/patches/patch-gcc_c.opt b/lang/gcc45/patches/patch-gcc_c.opt new file mode 100644 index 000000000..8f25fc022 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_c.opt @@ -0,0 +1,28 @@ +$NetBSD$ + +--- gcc/c.opt.orig Fri Apr 2 19:54:46 2010 ++++ gcc/c.opt +@@ -520,6 +520,12 @@ ansi + C ObjC C++ ObjC++ + A synonym for -std=c89 (for C) or -std=c++98 (for C++) + ++; This should really just be C++/ObjC++ but we (NetBSD) use it when ++; calling C and ObjC compilers as well. ++cxx-isystem ++C ObjC C++ ObjC++ Joined Separate ++-cxx-isystem Add to the start of the C++ system include path ++ + d + C ObjC C++ ObjC++ Joined + ; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD? +@@ -903,6 +909,10 @@ C ObjC C++ ObjC++ Joined Separate + iquote + C ObjC C++ ObjC++ Joined Separate + -iquote Add to the end of the quote include path ++ ++iremap ++C ObjC C++ ObjC++ Joined Separate ++-iremap Convert to if it occurs as prefix in __FILE__. + + iwithprefix + C ObjC C++ ObjC++ Joined Separate diff --git a/lang/gcc45/patches/patch-gcc_caller-save.c b/lang/gcc45/patches/patch-gcc_caller-save.c new file mode 100644 index 000000000..324aca40f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_caller-save.c @@ -0,0 +1,192 @@ +$NetBSD$ + +--- gcc/caller-save.c.orig Wed Mar 16 20:19:14 2011 ++++ gcc/caller-save.c +@@ -439,101 +439,93 @@ saved_hard_reg_compare_func (const void *v1p, const vo + void + setup_save_areas (void) + { +- int i, j, k; +- unsigned int r; ++ int i, j, k, freq; + HARD_REG_SET hard_regs_used; ++ struct saved_hard_reg *saved_reg; ++ rtx insn; ++ struct insn_chain *chain, *next; ++ unsigned int regno; ++ HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets; ++ reg_set_iterator rsi; + +- /* Allocate space in the save area for the largest multi-register +- pseudos first, then work backwards to single register +- pseudos. */ +- +- /* Find and record all call-used hard-registers in this function. */ + CLEAR_HARD_REG_SET (hard_regs_used); +- for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) +- if (reg_renumber[i] >= 0 && REG_N_CALLS_CROSSED (i) > 0) +- { +- unsigned int regno = reg_renumber[i]; +- unsigned int endregno +- = end_hard_regno (GET_MODE (regno_reg_rtx[i]), regno); +- for (r = regno; r < endregno; r++) +- if (call_used_regs[r]) +- SET_HARD_REG_BIT (hard_regs_used, r); +- } + +- if (optimize && flag_ira_share_save_slots) ++ /* Find every CALL_INSN and record which hard regs are live across the ++ call into HARD_REG_MAP and HARD_REGS_USED. */ ++ initiate_saved_hard_regs (); ++ /* Create hard reg saved regs. */ ++ for (chain = reload_insn_chain; chain != 0; chain = next) + { +- rtx insn, slot; +- struct insn_chain *chain, *next; +- char *saved_reg_conflicts; +- unsigned int regno; +- int next_k, freq; +- struct saved_hard_reg *saved_reg, *saved_reg2, *saved_reg3; +- int call_saved_regs_num; +- struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER]; +- HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets; +- reg_set_iterator rsi; +- int best_slot_num; +- int prev_save_slots_num; +- rtx prev_save_slots[FIRST_PSEUDO_REGISTER]; ++ insn = chain->insn; ++ next = chain->next; ++ if (!CALL_P (insn) ++ || find_reg_note (insn, REG_NORETURN, NULL)) ++ continue; ++ freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn)); ++ REG_SET_TO_HARD_REG_SET (hard_regs_to_save, ++ &chain->live_throughout); ++ COPY_HARD_REG_SET (used_regs, call_used_reg_set); + +- initiate_saved_hard_regs (); +- /* Create hard reg saved regs. */ +- for (chain = reload_insn_chain; chain != 0; chain = next) ++ /* Record all registers set in this call insn. These don't ++ need to be saved. N.B. the call insn might set a subreg ++ of a multi-hard-reg pseudo; then the pseudo is considered ++ live during the call, but the subreg that is set ++ isn't. */ ++ CLEAR_HARD_REG_SET (this_insn_sets); ++ note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets); ++ /* Sibcalls are considered to set the return value. */ ++ if (SIBLING_CALL_P (insn) && crtl->return_rtx) ++ mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets); ++ ++ AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set); ++ AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets); ++ AND_HARD_REG_SET (hard_regs_to_save, used_regs); ++ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) ++ if (TEST_HARD_REG_BIT (hard_regs_to_save, regno)) ++ { ++ if (hard_reg_map[regno] != NULL) ++ hard_reg_map[regno]->call_freq += freq; ++ else ++ saved_reg = new_saved_hard_reg (regno, freq); ++ SET_HARD_REG_BIT (hard_regs_used, regno); ++ } ++ /* Look through all live pseudos, mark their hard registers. */ ++ EXECUTE_IF_SET_IN_REG_SET ++ (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi) + { +- insn = chain->insn; +- next = chain->next; +- if (!CALL_P (insn) +- || find_reg_note (insn, REG_NORETURN, NULL)) ++ int r = reg_renumber[regno]; ++ int bound; ++ ++ if (r < 0) + continue; +- freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn)); +- REG_SET_TO_HARD_REG_SET (hard_regs_to_save, +- &chain->live_throughout); +- COPY_HARD_REG_SET (used_regs, call_used_reg_set); + +- /* Record all registers set in this call insn. These don't +- need to be saved. N.B. the call insn might set a subreg +- of a multi-hard-reg pseudo; then the pseudo is considered +- live during the call, but the subreg that is set +- isn't. */ +- CLEAR_HARD_REG_SET (this_insn_sets); +- note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets); +- /* Sibcalls are considered to set the return value. */ +- if (SIBLING_CALL_P (insn) && crtl->return_rtx) +- mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets); +- +- AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set); +- AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets); +- AND_HARD_REG_SET (hard_regs_to_save, used_regs); +- for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) +- if (TEST_HARD_REG_BIT (hard_regs_to_save, regno)) ++ bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)]; ++ for (; r < bound; r++) ++ if (TEST_HARD_REG_BIT (used_regs, r)) + { +- if (hard_reg_map[regno] != NULL) +- hard_reg_map[regno]->call_freq += freq; ++ if (hard_reg_map[r] != NULL) ++ hard_reg_map[r]->call_freq += freq; + else +- saved_reg = new_saved_hard_reg (regno, freq); ++ saved_reg = new_saved_hard_reg (r, freq); ++ SET_HARD_REG_BIT (hard_regs_to_save, r); ++ SET_HARD_REG_BIT (hard_regs_used, r); + } +- /* Look through all live pseudos, mark their hard registers. */ +- EXECUTE_IF_SET_IN_REG_SET +- (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi) +- { +- int r = reg_renumber[regno]; +- int bound; ++ } ++ } + +- if (r < 0) +- continue; ++ /* If requested, figure out which hard regs can share save slots. */ ++ if (optimize && flag_ira_share_save_slots) ++ { ++ rtx slot; ++ char *saved_reg_conflicts; ++ int next_k; ++ struct saved_hard_reg *saved_reg2, *saved_reg3; ++ int call_saved_regs_num; ++ struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER]; ++ int best_slot_num; ++ int prev_save_slots_num; ++ rtx prev_save_slots[FIRST_PSEUDO_REGISTER]; + +- bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)]; +- for (; r < bound; r++) +- if (TEST_HARD_REG_BIT (used_regs, r)) +- { +- if (hard_reg_map[r] != NULL) +- hard_reg_map[r]->call_freq += freq; +- else +- saved_reg = new_saved_hard_reg (r, freq); +- SET_HARD_REG_BIT (hard_regs_to_save, r); +- } +- } +- } + /* Find saved hard register conflicts. */ + saved_reg_conflicts = (char *) xmalloc (saved_regs_num * saved_regs_num); + memset (saved_reg_conflicts, 0, saved_regs_num * saved_regs_num); +@@ -691,8 +683,10 @@ setup_save_areas (void) + } + else + { +- /* Now run through all the call-used hard-registers and allocate +- space for them in the caller-save area. Try to allocate space ++ /* We are not sharing slots. ++ ++ Run through all the call-used hard-registers and allocate ++ space for each in the caller-save area. Try to allocate space + in a manner which allows multi-register saves/restores to be done. */ + + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) diff --git a/lang/gcc45/patches/patch-gcc_cfgexpand.c b/lang/gcc45/patches/patch-gcc_cfgexpand.c new file mode 100644 index 000000000..90b6e25ad --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cfgexpand.c @@ -0,0 +1,24 @@ +$NetBSD$ + +--- gcc/cfgexpand.c.orig Sun Jan 16 20:20:21 2011 ++++ gcc/cfgexpand.c +@@ -1080,7 +1080,9 @@ stack_protect_classify_type (tree type) + else + len = tree_low_cst (TYPE_SIZE_UNIT (type), 1); + +- if (len < max) ++ if (len == 0) ++ ret = SPCT_HAS_ARRAY; ++ else if (len < max) + ret = SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_ARRAY; + else + ret = SPCT_HAS_LARGE_CHAR_ARRAY | SPCT_HAS_ARRAY; +@@ -2974,7 +2976,7 @@ expand_debug_expr (tree exp) + + gcc_assert (part >= 0 && (unsigned)part < SA.map->num_partitions); + +- op0 = SA.partition_to_pseudo[part]; ++ op0 = copy_rtx (SA.partition_to_pseudo[part]); + } + goto adjust_mode; + } diff --git a/lang/gcc45/patches/patch-gcc_cfgrtl.c b/lang/gcc45/patches/patch-gcc_cfgrtl.c new file mode 100644 index 000000000..115a07270 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cfgrtl.c @@ -0,0 +1,107 @@ +$NetBSD$ + +--- gcc/cfgrtl.c.orig Mon Sep 20 21:30:35 2010 ++++ gcc/cfgrtl.c +@@ -1116,6 +1116,7 @@ force_nonfallthru_and_redirect (edge e, basic_block ta + rtx note; + edge new_edge; + int abnormal_edge_flags = 0; ++ bool asm_goto_edge = false; + int loc; + + /* In the case the last instruction is conditional jump to the next +@@ -1195,8 +1196,28 @@ force_nonfallthru_and_redirect (edge e, basic_block ta + } + } + +- if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags) ++ /* If e->src ends with asm goto, see if any of the ASM_OPERANDS_LABELs ++ don't point to target label. */ ++ if (JUMP_P (BB_END (e->src)) ++ && target != EXIT_BLOCK_PTR ++ && e->dest == target ++ && (e->flags & EDGE_FALLTHRU) ++ && (note = extract_asm_operands (PATTERN (BB_END (e->src))))) + { ++ int i, n = ASM_OPERANDS_LABEL_LENGTH (note); ++ ++ for (i = 0; i < n; ++i) ++ if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (target)) ++ { ++ asm_goto_edge = true; ++ break; ++ } ++ } ++ ++ if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags || asm_goto_edge) ++ { ++ gcov_type count = e->count; ++ int probability = e->probability; + /* Create the new structures. */ + + /* If the old block ended with a tablejump, skip its table +@@ -1207,7 +1228,7 @@ force_nonfallthru_and_redirect (edge e, basic_block ta + note = NEXT_INSN (note); + + jump_block = create_basic_block (note, NULL, e->src); +- jump_block->count = e->count; ++ jump_block->count = count; + jump_block->frequency = EDGE_FREQUENCY (e); + jump_block->loop_depth = target->loop_depth; + +@@ -1223,13 +1244,27 @@ force_nonfallthru_and_redirect (edge e, basic_block ta + + /* Wire edge in. */ + new_edge = make_edge (e->src, jump_block, EDGE_FALLTHRU); +- new_edge->probability = e->probability; +- new_edge->count = e->count; ++ new_edge->probability = probability; ++ new_edge->count = count; + + /* Redirect old edge. */ + redirect_edge_pred (e, jump_block); + e->probability = REG_BR_PROB_BASE; + ++ /* If asm goto has any label refs to target's label, ++ add also edge from asm goto bb to target. */ ++ if (asm_goto_edge) ++ { ++ new_edge->probability /= 2; ++ new_edge->count /= 2; ++ jump_block->count /= 2; ++ jump_block->frequency /= 2; ++ new_edge = make_edge (new_edge->src, target, ++ e->flags & ~EDGE_FALLTHRU); ++ new_edge->probability = probability - probability / 2; ++ new_edge->count = count - count / 2; ++ } ++ + new_bb = jump_block; + } + else +@@ -1640,9 +1675,10 @@ rtl_dump_bb (basic_block bb, FILE *outf, int indent, i + putc ('\n', outf); + } + +- for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last; +- insn = NEXT_INSN (insn)) +- print_rtl_single (outf, insn); ++ if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK) ++ for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last; ++ insn = NEXT_INSN (insn)) ++ print_rtl_single (outf, insn); + + if (df) + { +@@ -2754,6 +2790,11 @@ cfg_layout_merge_blocks (basic_block a, basic_block b) + rtx first = BB_END (a), last; + + last = emit_insn_after_noloc (b->il.rtl->header, BB_END (a), a); ++ /* The above might add a BARRIER as BB_END, but as barriers ++ aren't valid parts of a bb, remove_insn doesn't update ++ BB_END if it is a barrier. So adjust BB_END here. */ ++ while (BB_END (a) != first && BARRIER_P (BB_END (a))) ++ BB_END (a) = PREV_INSN (BB_END (a)); + delete_insn_chain (NEXT_INSN (first), last, false); + b->il.rtl->header = NULL; + } diff --git a/lang/gcc45/patches/patch-gcc_combine.c b/lang/gcc45/patches/patch-gcc_combine.c new file mode 100644 index 000000000..890883593 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_combine.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/combine.c.orig Tue Dec 7 15:08:54 2010 ++++ gcc/combine.c +@@ -5298,7 +5298,7 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mod + { + /* Try to simplify the expression further. */ + rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1)); +- temp = combine_simplify_rtx (tor, mode, in_dest); ++ temp = combine_simplify_rtx (tor, VOIDmode, in_dest); + + /* If we could, great. If not, do not go ahead with the IOR + replacement, since PLUS appears in many special purpose diff --git a/lang/gcc45/patches/patch-gcc_config.gcc b/lang/gcc45/patches/patch-gcc_config.gcc new file mode 100644 index 000000000..28238fff8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config.gcc @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/config.gcc.orig Wed May 21 19:48:55 2014 ++++ gcc/config.gcc +@@ -839,6 +839,22 @@ arm*-*-eabi* | arm*-*-symbianelf* ) + tm_file="${tm_file} arm/aout.h arm/arm.h" + tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp" + ;; ++arm*-*-minix*) ++ # The BPABI long long divmod functions return a 128-bit value in ++ # registers r0-r3. Correctly modeling that requires the use of ++ # TImode. ++ need_64bit_hwint=yes ++ default_use_cxa_atexit=yes ++ tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/bpabi.h" ++ tmake_file="arm/t-arm arm/t-arm-elf" ++ ++ tm_file="$tm_file arm/eabi.h newlib-stdint.h minix-spec.h arm/minix.h minix.h" ++ tmake_file="${tmake_file} arm/t-bpabi t-minix" ++ #extra_options="${extra_options} arm/eabi.opt" ++ #use_gcc_stdint=wrap ++ ++ tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp" ++ ;; + arm*-*-rtems*) + tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h" + tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems" +@@ -1162,6 +1178,13 @@ i[34567]86-*-freebsd*) + x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" + tmake_file="${tmake_file} i386/t-crtstuff" ++ ;; ++i[34567]86-*-minix) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h minix-spec.h i386/minix.h minix.h" ++ tmake_file="${tmake_file} t-minix" ++ gas=yes ++ gnu_ld=yes ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + ;; + i[34567]86-*-netbsdelf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" diff --git a/lang/gcc45/patches/patch-gcc_config_alpha_alpha.c b/lang/gcc45/patches/patch-gcc_config_alpha_alpha.c new file mode 100644 index 000000000..0eca9ee8e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_alpha_alpha.c @@ -0,0 +1,100 @@ +$NetBSD$ + +--- gcc/config/alpha/alpha.c.orig Tue Aug 3 18:44:56 2010 ++++ gcc/config/alpha/alpha.c +@@ -2464,7 +2464,7 @@ alpha_emit_conditional_branch (rtx operands[], enum ma + { + case EQ: case LE: case LT: case LEU: case LTU: + case UNORDERED: +- /* We have these compares: */ ++ /* We have these compares. */ + cmp_code = code, branch_code = NE; + break; + +@@ -2701,13 +2701,15 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mod + switch (code) + { + case EQ: case LE: case LT: case LEU: case LTU: ++ case UNORDERED: + /* We have these compares. */ + cmp_code = code, code = NE; + break; + + case NE: +- /* This must be reversed. */ +- cmp_code = EQ, code = EQ; ++ case ORDERED: ++ /* These must be reversed. */ ++ cmp_code = reverse_condition (code), code = EQ; + break; + + case GE: case GT: case GEU: case GTU: +@@ -2727,6 +2729,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mod + gcc_unreachable (); + } + ++ if (cmp_mode == DImode) ++ { ++ if (!reg_or_0_operand (op0, DImode)) ++ op0 = force_reg (DImode, op0); ++ if (!reg_or_8bit_operand (op1, DImode)) ++ op1 = force_reg (DImode, op1); ++ } ++ + tem = gen_reg_rtx (cmp_mode); + emit_insn (gen_rtx_SET (VOIDmode, tem, + gen_rtx_fmt_ee (cmp_code, cmp_mode, +@@ -2738,6 +2748,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mod + local_fast_math = 1; + } + ++ if (cmp_mode == DImode) ++ { ++ if (!reg_or_0_operand (op0, DImode)) ++ op0 = force_reg (DImode, op0); ++ if (!reg_or_8bit_operand (op1, DImode)) ++ op1 = force_reg (DImode, op1); ++ } ++ + /* We may be able to use a conditional move directly. + This avoids emitting spurious compares. */ + if (signed_comparison_operator (cmp, VOIDmode) +@@ -2756,11 +2774,13 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mod + switch (code) + { + case EQ: case LE: case LT: case LEU: case LTU: ++ case UNORDERED: + /* We have these compares: */ + break; + + case NE: +- /* This must be reversed. */ ++ case ORDERED: ++ /* These must be reversed. */ + code = reverse_condition (code); + cmov_code = EQ; + break; +@@ -4915,6 +4935,13 @@ alpha_gp_save_rtx (void) + return m; + } + ++static void ++alpha_instantiate_decls (void) ++{ ++ if (cfun->machine->gp_save_rtx != NULL_RTX) ++ instantiate_decl_rtl (cfun->machine->gp_save_rtx); ++} ++ + static int + alpha_ra_ever_killed (void) + { +@@ -11124,6 +11151,9 @@ alpha_init_libfuncs (void) + #define TARGET_ARG_PARTIAL_BYTES alpha_arg_partial_bytes + #undef TARGET_TRAMPOLINE_INIT + #define TARGET_TRAMPOLINE_INIT alpha_trampoline_init ++ ++#undef TARGET_INSTANTIATE_DECLS ++#define TARGET_INSTANTIATE_DECLS alpha_instantiate_decls + + #undef TARGET_SECONDARY_RELOAD + #define TARGET_SECONDARY_RELOAD alpha_secondary_reload diff --git a/lang/gcc45/patches/patch-gcc_config_alpha_elf.h b/lang/gcc45/patches/patch-gcc_config_alpha_elf.h new file mode 100644 index 000000000..ac89d8ce8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_alpha_elf.h @@ -0,0 +1,24 @@ +$NetBSD$ + +--- gcc/config/alpha/elf.h.orig Wed Jun 30 15:16:54 2010 ++++ gcc/config/alpha/elf.h +@@ -25,8 +25,9 @@ along with GCC; see the file COPYING3. If not see + + /* ??? Move all SDB stuff from alpha.h to osf.h. */ + #undef SDB_DEBUGGING_INFO ++#undef MIPS_DEBUGGING_INFO ++#undef DBX_DEBUGGING_INFO + +-#define DBX_DEBUGGING_INFO 1 + #define DWARF2_DEBUGGING_INFO 1 + + #undef PREFERRED_DEBUGGING_TYPE +@@ -440,7 +441,7 @@ extern int alpha_this_gpdisp_sequence_number; + As of Jan 2002, only glibc 2.2.4 can actually make use of this, but + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ +-#if defined(HAVE_LD_EH_FRAME_HDR) ++#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC) + #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " + #endif + diff --git a/lang/gcc45/patches/patch-gcc_config_alpha_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_alpha_linux-unwind.h new file mode 100644 index 000000000..c15aa1341 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_alpha_linux-unwind.h @@ -0,0 +1,81 @@ +$NetBSD$ + +--- gcc/config/alpha/linux-unwind.h.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/alpha/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for Alpha Linux. +- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -36,25 +36,27 @@ alpha_fallback_frame_state (struct _Unwind_Context *co + { + unsigned int *pc = context->ra; + struct sigcontext *sc; +- long new_cfa, i; ++ long new_cfa; ++ int i; + + if (pc[0] != 0x47fe0410 /* mov $30,$16 */ +- || pc[2] != 0x00000083 /* callsys */) ++ || pc[2] != 0x00000083) /* callsys */ + return _URC_END_OF_STACK; + if (context->cfa == 0) + return _URC_END_OF_STACK; + if (pc[1] == 0x201f0067) /* lda $0,NR_sigreturn */ + sc = context->cfa; +- else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */ ++ else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */ + { + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } + else + return _URC_END_OF_STACK; ++ + new_cfa = sc->sc_regs[30]; + fs->regs.cfa_how = CFA_REG_OFFSET; + fs->regs.cfa_reg = 30; +@@ -63,16 +65,35 @@ alpha_fallback_frame_state (struct _Unwind_Context *co + { + fs->regs.reg[i].how = REG_SAVED_OFFSET; + fs->regs.reg[i].loc.offset +- = (long)&sc->sc_regs[i] - new_cfa; ++ = (long) &sc->sc_regs[i] - new_cfa; + } + for (i = 0; i < 31; ++i) + { + fs->regs.reg[i+32].how = REG_SAVED_OFFSET; + fs->regs.reg[i+32].loc.offset +- = (long)&sc->sc_fpregs[i] - new_cfa; ++ = (long) &sc->sc_fpregs[i] - new_cfa; + } + fs->regs.reg[64].how = REG_SAVED_OFFSET; + fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa; + fs->retaddr_column = 64; ++ fs->signal_frame = 1; ++ + return _URC_NO_REASON; ++} ++ ++#define MD_FROB_UPDATE_CONTEXT alpha_frob_update_context ++ ++/* Fix up for signal handlers that don't have S flag set. */ ++ ++static void ++alpha_frob_update_context (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs ATTRIBUTE_UNUSED) ++{ ++ unsigned int *pc = context->ra; ++ ++ if (pc[0] == 0x47fe0410 /* mov $30,$16 */ ++ && pc[2] == 0x00000083 /* callsys */ ++ && (pc[1] == 0x201f0067 /* lda $0,NR_sigreturn */ ++ || pc[1] == 0x201f015f)) /* lda $0,NR_rt_sigreturn */ ++ _Unwind_SetSignalFrame (context, 1); + } diff --git a/lang/gcc45/patches/patch-gcc_config_arm_arm-cores.def b/lang/gcc45/patches/patch-gcc_config_arm_arm-cores.def new file mode 100644 index 000000000..ceee4670d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_arm-cores.def @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/config/arm/arm-cores.def.orig Fri Nov 20 17:37:30 2009 ++++ gcc/config/arm/arm-cores.def +@@ -119,8 +119,10 @@ ARM_CORE("mpcore", mpcore, 6K, FL_LDSCHED | FL_V + ARM_CORE("arm1156t2-s", arm1156t2s, 6T2, FL_LDSCHED, 9e) + ARM_CORE("arm1156t2f-s", arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, 9e) + ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, 9e) ++ARM_CORE("cortex-a7", cortexa7, 7A, FL_LDSCHED | FL_DIV, 9e) + ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, 9e) + ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, 9e) ++ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_DIV, 9e) + ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, 9e) + ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, 9e) + ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, 9e) diff --git a/lang/gcc45/patches/patch-gcc_config_arm_arm.c b/lang/gcc45/patches/patch-gcc_config_arm_arm.c new file mode 100644 index 000000000..0c1409bd1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_arm.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/config/arm/arm.c.orig Mon Dec 27 12:45:02 2010 ++++ gcc/config/arm/arm.c +@@ -3339,6 +3339,10 @@ arm_libcall_uses_aapcs_base (const_rtx libcall) + add_libcall (libcall_htab, + convert_optab_libfunc (trunc_optab, HFmode, SFmode)); + add_libcall (libcall_htab, ++ convert_optab_libfunc (sfix_optab, SImode, DFmode)); ++ add_libcall (libcall_htab, ++ convert_optab_libfunc (ufix_optab, SImode, DFmode)); ++ add_libcall (libcall_htab, + convert_optab_libfunc (sfix_optab, DImode, DFmode)); + add_libcall (libcall_htab, + convert_optab_libfunc (ufix_optab, DImode, DFmode)); +@@ -3346,6 +3350,28 @@ arm_libcall_uses_aapcs_base (const_rtx libcall) + convert_optab_libfunc (sfix_optab, DImode, SFmode)); + add_libcall (libcall_htab, + convert_optab_libfunc (ufix_optab, DImode, SFmode)); ++ ++ /* Values from double-precision helper functions are returned in core ++ registers if the selected core only supports single-precision ++ arithmetic, even if we are using the hard-float ABI. The same is ++ true for single-precision helpers, but we will never be using the ++ hard-float ABI on a CPU which doesn't support single-precision ++ operations in hardware. */ ++ add_libcall (libcall_htab, optab_libfunc (add_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (sdiv_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (smul_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (neg_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (sub_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (eq_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (lt_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (le_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (ge_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (gt_optab, DFmode)); ++ add_libcall (libcall_htab, optab_libfunc (unord_optab, DFmode)); ++ add_libcall (libcall_htab, convert_optab_libfunc (sext_optab, DFmode, ++ SFmode)); ++ add_libcall (libcall_htab, convert_optab_libfunc (trunc_optab, SFmode, ++ DFmode)); + } + + return libcall && htab_find (libcall_htab, libcall) != NULL; +@@ -18237,7 +18263,7 @@ neon_emit_pair_result_insn (enum machine_mode mode, + rtx tmp1 = gen_reg_rtx (mode); + rtx tmp2 = gen_reg_rtx (mode); + +- emit_insn (intfn (tmp1, op1, tmp2, op2)); ++ emit_insn (intfn (tmp1, op1, op2, tmp2)); + + emit_move_insn (mem, tmp1); + mem = adjust_address (mem, mode, GET_MODE_SIZE (mode)); diff --git a/lang/gcc45/patches/patch-gcc_config_arm_arm.h b/lang/gcc45/patches/patch-gcc_config_arm_arm.h new file mode 100644 index 000000000..2b38d6876 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_arm.h @@ -0,0 +1,38 @@ +$NetBSD$ + +--- gcc/config/arm/arm.h.orig Wed Dec 23 16:36:40 2009 ++++ gcc/config/arm/arm.h +@@ -94,7 +94,14 @@ extern char arm_arch_name[]; + if (arm_arch_iwmmxt) \ + builtin_define ("__IWMMXT__"); \ + if (TARGET_AAPCS_BASED) \ +- builtin_define ("__ARM_EABI__"); \ ++ { \ ++ builtin_define ("__ARM_EABI__"); \ ++ builtin_define ("__ARM_PCS"); \ ++ if (TARGET_HARD_FLOAT && TARGET_VFP) \ ++ builtin_define ("__ARM_PCS_VFP"); \ ++ } \ ++ if (TARGET_IDIV) \ ++ builtin_define ("__ARM_ARCH_EXT_IDIV__"); \ + } while (0) + + /* The various ARM cores. */ +@@ -264,6 +271,8 @@ extern void (*arm_lang_output_object_attributes_hook)( + for Thumb-2. */ + #define TARGET_UNIFIED_ASM TARGET_THUMB2 + ++/* Nonzero if integer division instructions supported. */ ++#define TARGET_IDIV (arm_arch_hwdiv) + + /* True iff the full BPABI is being used. If TARGET_BPABI is true, + then TARGET_AAPCS_BASED must be true -- but the converse does not +@@ -2111,7 +2120,7 @@ typedef struct + (GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X)) + + /* Define this for compatibility reasons. */ +-#define HANDLE_PRAGMA_PACK_PUSH_POP ++#define HANDLE_PRAGMA_PACK_PUSH_POP 1 + + /* Specify the machine mode that this machine uses + for the index in the tablejump instruction. */ diff --git a/lang/gcc45/patches/patch-gcc_config_arm_arm.md b/lang/gcc45/patches/patch-gcc_config_arm_arm.md new file mode 100644 index 000000000..8ce9cd22b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_arm.md @@ -0,0 +1,49 @@ +$NetBSD$ + +--- gcc/config/arm/arm.md.orig Tue Apr 12 13:52:46 2011 ++++ gcc/config/arm/arm.md +@@ -3134,7 +3134,7 @@ + bool need_else; + + if (which_alternative != 0 || operands[3] != const0_rtx +- || (code != PLUS && code != MINUS && code != IOR && code != XOR)) ++ || (code != PLUS && code != IOR && code != XOR)) + need_else = true; + else + need_else = false; +@@ -3189,7 +3189,7 @@ + ) + + (define_insn "arm_ashldi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] +@@ -3248,7 +3248,7 @@ + ) + + (define_insn "arm_ashrdi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] +@@ -3304,7 +3304,7 @@ + ) + + (define_insn "arm_lshrdi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] +@@ -7994,7 +7994,7 @@ + (not:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_ARM" +- "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + [(set_attr "conds" "use") + (set_attr "length" "8")] + ) diff --git a/lang/gcc45/patches/patch-gcc_config_arm_bpabi-netbsd.c b/lang/gcc45/patches/patch-gcc_config_arm_bpabi-netbsd.c new file mode 100644 index 000000000..5ade77985 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_bpabi-netbsd.c @@ -0,0 +1,6 @@ +$NetBSD$ + +--- gcc/config/arm/bpabi-netbsd.c.orig Wed May 21 19:48:53 2014 ++++ gcc/config/arm/bpabi-netbsd.c +@@ -0,0 +1 @@ ++#include "bpabi.c" diff --git a/lang/gcc45/patches/patch-gcc_config_arm_bpabi.h b/lang/gcc45/patches/patch-gcc_config_arm_bpabi.h new file mode 100644 index 000000000..b1551a843 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_bpabi.h @@ -0,0 +1,43 @@ +$NetBSD$ + +--- gcc/config/arm/bpabi.h.orig Fri Nov 20 17:37:30 2009 ++++ gcc/config/arm/bpabi.h +@@ -20,13 +20,18 @@ + . */ + + /* Use the AAPCS ABI by default. */ ++#undef ARM_DEFAULT_ABI + #define ARM_DEFAULT_ABI ARM_ABI_AAPCS + + /* Assume that AAPCS ABIs should adhere to the full BPABI. */ ++#undef TARGET_BPABI + #define TARGET_BPABI (TARGET_AAPCS_BASED) + + /* BPABI targets use EABI frame unwinding tables. */ ++#undef MUST_USE_SJLJ_EXCEPTIONS + #define TARGET_UNWIND_INFO 1 ++#undef ARM_EABI_UNWIND_TABLES ++#define ARM_EABI_UNWIND_TABLES 1 + + /* Section 4.1 of the AAPCS requires the use of VFP format. */ + #undef FPUTYPE_DEFAULT +@@ -72,17 +77,10 @@ + #undef LINK_SPEC + #define LINK_SPEC BPABI_LINK_SPEC + +-#if defined (__thumb__) +-#define RENAME_LIBRARY_SET ".thumb_set" +-#else +-#define RENAME_LIBRARY_SET ".set" +-#endif +- + /* Make __aeabi_AEABI_NAME an alias for __GCC_NAME. */ + #define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) \ +- __asm__ (".globl\t__aeabi_" #AEABI_NAME "\n" \ +- RENAME_LIBRARY_SET "\t__aeabi_" #AEABI_NAME \ +- ", __" #GCC_NAME "\n"); ++ typeof (__##GCC_NAME) __aeabi_##AEABI_NAME \ ++ __attribute__((alias ("__" #GCC_NAME))); + + /* Give some libgcc functions an additional __aeabi name. */ + #ifdef L_muldi3 diff --git a/lang/gcc45/patches/patch-gcc_config_arm_elf.h b/lang/gcc45/patches/patch-gcc_config_arm_elf.h new file mode 100644 index 000000000..e02a34d10 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_elf.h @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/config/arm/elf.h.orig Sun Jun 21 20:48:15 2009 ++++ gcc/config/arm/elf.h +@@ -161,6 +161,8 @@ + #undef L_floatdidf + #undef L_floatdisf + #undef L_floatundidf ++/* XXXMRG: don't take this out, we need it! */ ++# ifndef __NetBSD__ + #undef L_floatundisf ++# endif + #endif +- diff --git a/lang/gcc45/patches/patch-gcc_config_arm_neon.md b/lang/gcc45/patches/patch-gcc_config_arm_neon.md new file mode 100644 index 000000000..39c3e8f1e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_neon.md @@ -0,0 +1,75 @@ +$NetBSD$ + +--- gcc/config/arm/neon.md.orig Mon Jul 5 12:45:19 2010 ++++ gcc/config/arm/neon.md +@@ -680,7 +680,7 @@ + (match_operand:SI 2 "immediate_operand" "i")))] + "TARGET_NEON" + { +- int elt = ffs ((int) INTVAL (operands[2]) - 1); ++ int elt = ffs ((int) INTVAL (operands[2])) - 1; + if (BYTES_BIG_ENDIAN) + elt = GET_MODE_NUNITS (mode) - 1 - elt; + operands[2] = GEN_INT (elt); +@@ -3895,13 +3895,14 @@ + + (define_insn "neon_vtrn_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] +- UNSPEC_VTRN1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VTRN2))] ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] ++ UNSPEC_VTRN1)) ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VTRN2))] + "TARGET_NEON" +- "vtrn.\t%0, %2" ++ "vtrn.\t%0, %3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "") (const_int 0)) + (const_string "neon_bp_simple") +@@ -3921,13 +3922,14 @@ + + (define_insn "neon_vzip_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] +- UNSPEC_VZIP1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VZIP2))] ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] ++ UNSPEC_VZIP1)) ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VZIP2))] + "TARGET_NEON" +- "vzip.\t%0, %2" ++ "vzip.\t%0, %3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "") (const_int 0)) + (const_string "neon_bp_simple") +@@ -3947,13 +3949,14 @@ + + (define_insn "neon_vuzp_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] + UNSPEC_VUZP1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VUZP2))] ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VUZP2))] + "TARGET_NEON" +- "vuzp.\t%0, %2" ++ "vuzp.\t%0, %3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "") (const_int 0)) + (const_string "neon_bp_simple") diff --git a/lang/gcc45/patches/patch-gcc_config_arm_netbsd-eabi.h b/lang/gcc45/patches/patch-gcc_config_arm_netbsd-eabi.h new file mode 100644 index 000000000..f50be8637 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_netbsd-eabi.h @@ -0,0 +1,118 @@ +$NetBSD$ + +--- gcc/config/arm/netbsd-eabi.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/arm/netbsd-eabi.h +@@ -0,0 +1,113 @@ ++/* Definitions of target machine for GNU compiler, NetBSD/arm ELF version. ++ Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. ++ Contributed by Wasabi Systems, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 3, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* Run-time Target Specification. */ ++#undef TARGET_VERSION ++#define TARGET_VERSION fputs (" (NetBSD/earm ELF)", stderr); ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS { "mabi=aapcs-linux" } ++ ++#undef MUST_USE_SJLJ_EXCEPTIONS ++#define MUST_USE_SJLJ_EXCEPTIONS (!TARGET_AAPCS_BASED) ++ ++#undef ARM_EABI_UNWIND_TABLES ++#define ARM_EABI_UNWIND_TABLES \ ++ ((!USING_SJLJ_EXCEPTIONS && flag_exceptions) || flag_unwind_tables) ++ ++#define TARGET_LINKER_EABI_SUFFIX "%{!mabi=apcs-gnu:%{!mabi=atpcs:_nbsd_eabi}}" ++#define TARGET_LINKER_BIG_EMULATION "armelfb%(linker_eabi_suffix)" ++#define TARGET_LINKER_LITTLE_EMULATION "armelf%(linker_eabi_suffix)" ++ ++/* TARGET_BIG_ENDIAN_DEFAULT is set in ++ config.gcc for big endian configurations. */ ++#undef TARGET_LINKER_EMULATION ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define TARGET_LINKER_EMULATION TARGET_LINKER_BIG_EMULATION ++#undef BE8_LINK_SPEC ++#define BE8_LINK_SPEC " %{!mlittle-endian:%{march=armv7-a|mcpu=cortex-a5|mcpu=cortex-a8|mcpu=cortex-a9:%{!r:--be8}}}" ++#else ++#define TARGET_LINKER_EMULATION TARGET_LINKER_LITTLE_EMULATION ++#endif ++ ++#undef MULTILIB_DEFAULTS ++ ++#undef ARM_DEFAULT_ABI ++#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_AAPCS_BASED) \ ++ TARGET_BPABI_CPP_BUILTINS(); \ ++ NETBSD_OS_CPP_BUILTINS_ELF(); \ ++ if (ARM_EABI_UNWIND_TABLES) \ ++ builtin_define ("__UNWIND_TABLES__"); \ ++ } \ ++ while (0) ++ ++#undef SUBTARGET_CPP_SPEC ++#define SUBTARGET_CPP_SPEC NETBSD_CPP_SPEC ++ ++/* ++ * Override AAPCS types to remain compatible the existing NetBSD types. ++ */ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "int" ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE "long unsigned int" ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE "long int" ++ ++#undef SUBTARGET_EXTRA_ASM_SPEC ++#define SUBTARGET_EXTRA_ASM_SPEC \ ++ "-matpcs %{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu} %{fpic|fpie:-k} %{fPIC|fPIE:-k}" ++ ++/* Default to full VFP if -mhard-float is specified. */ ++#undef SUBTARGET_ASM_FLOAT_SPEC ++#define SUBTARGET_ASM_FLOAT_SPEC \ ++ "%{mhard-float:%{!mfpu=*:-mfpu=vfp}} \ ++ %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}" ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ { "subtarget_extra_asm_spec", SUBTARGET_EXTRA_ASM_SPEC }, \ ++ { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \ ++ { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \ ++ { "linker_eabi_suffix", TARGET_LINKER_EABI_SUFFIX }, \ ++ { "linker_emulation", TARGET_LINKER_EMULATION }, \ ++ { "linker_big_emulation", TARGET_LINKER_BIG_EMULATION }, \ ++ { "linker_little_emulation", TARGET_LINKER_LITTLE_EMULATION }, \ ++ { "be8_link_spec", BE8_LINK_SPEC }, \ ++ { "target_fix_v4bx_spec", TARGET_FIX_V4BX_SPEC }, \ ++ { "netbsd_entry_point", NETBSD_ENTRY_POINT }, ++ ++#define NETBSD_ENTRY_POINT "__start" ++ ++#undef LINK_SPEC ++#define LINK_SPEC \ ++ "-X %{mbig-endian:-EB -m %(linker_big_emulation)} \ ++ %{mlittle-endian:-EL -m %(linker_liitle_emulation)} \ ++ %{!mbig-endian:%{!mlittle-endian:-m %(linker_emulation)}} \ ++ %(be8_link_spec) %(target_fix_v4bx_spec) \ ++ %(netbsd_link_spec)" diff --git a/lang/gcc45/patches/patch-gcc_config_arm_netbsd-elf.h b/lang/gcc45/patches/patch-gcc_config_arm_netbsd-elf.h new file mode 100644 index 000000000..51e9a2162 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_netbsd-elf.h @@ -0,0 +1,55 @@ +$NetBSD$ + +--- gcc/config/arm/netbsd-elf.h.orig Thu Nov 5 14:47:45 2009 ++++ gcc/config/arm/netbsd-elf.h +@@ -24,6 +24,14 @@ + + /* arm.h defaults to ARM6 CPU. */ + ++/* Default EABI to armv5t so that thumb shared libraries work. ++ The ARM926EH-S core is the default for armv5te, so set ++ SUBTARGET_CPU_DEFAULT to achieve this. */ ++ ++#define SUBTARGET_CPU_DEFAULT \ ++ (ARM_DEFAULT_ABI != ARM_ABI_APCS && ARM_DEFAULT_ABI != ARM_ABI_ATPCS \ ++ ? TARGET_CPU_arm926ejs : TARGET_CPU_arm6) ++ + /* This defaults us to little-endian. */ + #ifndef TARGET_ENDIAN_DEFAULT + #define TARGET_ENDIAN_DEFAULT 0 +@@ -40,6 +48,7 @@ + #undef ARM_DEFAULT_ABI + #define ARM_DEFAULT_ABI ARM_ABI_ATPCS + ++#undef TARGET_OS_CPP_BUILTINS + #define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ +@@ -52,13 +61,13 @@ + + #undef SUBTARGET_EXTRA_ASM_SPEC + #define SUBTARGET_EXTRA_ASM_SPEC \ +- "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}" ++ "-matpcs %{mabi=aapcs*:-meabi=5} %{fpic|fpie:-k} %{fPIC|fPIE:-k}" + + /* Default to full VFP if -mhard-float is specified. */ + #undef SUBTARGET_ASM_FLOAT_SPEC + #define SUBTARGET_ASM_FLOAT_SPEC \ +- "%{mhard-float:{!mfpu=*:-mfpu=vfp}} \ +- %{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}" ++ "%{mhard-float:%{!mfpu=*:-mfpu=vfp}} \ ++ %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}" + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ +@@ -71,7 +80,9 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "-X %{mbig-endian:-EB} %{mlittle-endian:-EL} \ ++ "-X \ ++ %{mbig-endian:-EB %{-mabi=aapcs*:-m armelfb_nbsd_eabi}} \ ++ %{mlittle-endian:-EL %{-mabi=aapcs*:-m armelf_nbsd_eabi}} \ + %(netbsd_link_spec)" + + /* Make GCC agree with . */ diff --git a/lang/gcc45/patches/patch-gcc_config_arm_t-arm b/lang/gcc45/patches/patch-gcc_config_arm_t-arm new file mode 100644 index 000000000..ba22f98d3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_t-arm @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/arm/t-arm.orig Sun Jun 21 20:48:15 2009 ++++ gcc/config/arm/t-arm +@@ -41,6 +41,8 @@ s-config s-conditions s-flags s-codes s-constants s-em + + $(srcdir)/config/arm/arm-tune.md: $(srcdir)/config/arm/gentune.sh \ + $(srcdir)/config/arm/arm-cores.def ++ @echo "NOT REBUILDING $@" ++NetBSD_DISABLED_config_arm_arm-tune.md: + $(SHELL) $(srcdir)/config/arm/gentune.sh \ + $(srcdir)/config/arm/arm-cores.def > \ + $(srcdir)/config/arm/arm-tune.md diff --git a/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd b/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd new file mode 100644 index 000000000..2fef14418 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/config/arm/t-netbsd.orig Tue Apr 21 19:03:23 2009 ++++ gcc/config/arm/t-netbsd +@@ -23,6 +23,14 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fpic + LIBGCC2_DEBUG_CFLAGS = -g0 + LIB2FUNCS_EXTRA = $(srcdir)/config/floatunsidf.c $(srcdir)/config/floatunsisf.c + ++# This list is from t-arm-elf, but with some things removed. ++LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ ++ _call_via_rX _interwork_call_via_rX \ ++ _arm_fixunsdfsi _arm_fixunssfsi \ ++ _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \ ++ _lshrdi3 _ashrdi3 _ashldi3 \ ++ _clzsi2 _clzdi2 ++ + # Build a shared libgcc library. + SHLIB_EXT = .so + SHLIB_NAME = @shlib_base_name@.so diff --git a/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd-eabi b/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd-eabi new file mode 100644 index 000000000..e2fff3879 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_t-netbsd-eabi @@ -0,0 +1,45 @@ +$NetBSD$ + +--- gcc/config/arm/t-netbsd-eabi.orig Wed May 21 19:48:54 2014 ++++ gcc/config/arm/t-netbsd-eabi +@@ -0,0 +1,40 @@ ++# Copyright (C) 2005, 2009 Free Software Foundation, Inc. ++# ++# This file is part of GCC. ++# ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++# ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Use a version of div0 which raises SIGFPE, and a special __clear_cache. ++ ++LIB1ASMFUNCS += \ ++ _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX \ ++ _clzsi2 _clzdi2 ++ ++# Add the BPABI C functions that aren't already in libc ++LIB2FUNCS_EXTRA = $(srcdir)/config/arm/unaligned-funcs.c ++ ++LIB2FUNCS_STATIC_EXTRA = ++ ++UNWIND_H = $(srcdir)/config/arm/unwind-arm.h ++LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \ ++ $(srcdir)/config/arm/libunwind.S \ ++ $(srcdir)/config/arm/pr-support.c $(srcdir)/unwind-c.c ++LIB2ADDEHDEP = $(UNWIND_H) $(srcdir)/config/$(LIB1ASMSRC) ++ ++SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver ++ ++MULTILIB_OPTIONS = mabi=aapcs-linux/mabi=aapcs/mabi=atpcs/mabi=apcs-gnu/mabi=iwmmxt ++MULTILIB_DIRNAMES = aapcs-linux aapcs atpcs oabi iwmmxt ++MULTILIB_OSDIRNAMES = . ../lib/aapcs ../lib/atpcs ../lib/oabi ../lib/iwmmxt diff --git a/lang/gcc45/patches/patch-gcc_config_arm_thumb2.md b/lang/gcc45/patches/patch-gcc_config_arm_thumb2.md new file mode 100644 index 000000000..34228acff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_arm_thumb2.md @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/config/arm/thumb2.md.orig Fri Apr 2 08:32:00 2010 ++++ gcc/config/arm/thumb2.md +@@ -380,7 +380,7 @@ + (not:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_THUMB2" +- "ite\\t%D1\;mov%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "ite\\t%D1\;mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + [(set_attr "conds" "use") + (set_attr "length" "10")] + ) +@@ -1108,6 +1108,7 @@ + (match_operand:SI 2 "low_reg_or_int_operand" "")]))] + "TARGET_THUMB2 + && peep2_regno_dead_p(0, CC_REGNUM) ++ && (CONST_INT_P (operands[2]) || operands[1] == operands[0]) + && ((GET_CODE(operands[3]) != ROTATE && GET_CODE(operands[3]) != ROTATERT) + || REG_P(operands[2]))" + [(parallel +@@ -1120,10 +1121,10 @@ + ) + + (define_insn "*thumb2_shiftsi3_short" +- [(set (match_operand:SI 0 "low_register_operand" "=l") ++ [(set (match_operand:SI 0 "low_register_operand" "=l,l") + (match_operator:SI 3 "shift_operator" +- [(match_operand:SI 1 "low_register_operand" "l") +- (match_operand:SI 2 "low_reg_or_int_operand" "lM")])) ++ [(match_operand:SI 1 "low_register_operand" "0,l") ++ (match_operand:SI 2 "low_reg_or_int_operand" "l,M")])) + (clobber (reg:CC CC_REGNUM))] + "TARGET_THUMB2 && reload_completed + && ((GET_CODE(operands[3]) != ROTATE && GET_CODE(operands[3]) != ROTATERT) +@@ -1207,7 +1208,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=r") + (div:SI (match_operand:SI 1 "s_register_operand" "r") + (match_operand:SI 2 "s_register_operand" "r")))] +- "TARGET_THUMB2 && arm_arch_hwdiv" ++ "(TARGET_THUMB2 || TARGET_ARM) && arm_arch_hwdiv" + "sdiv%?\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "insn" "sdiv")] +@@ -1217,7 +1218,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=r") + (udiv:SI (match_operand:SI 1 "s_register_operand" "r") + (match_operand:SI 2 "s_register_operand" "r")))] +- "TARGET_THUMB2 && arm_arch_hwdiv" ++ "(TARGET_THUMB2 || TARGET_ARM) && arm_arch_hwdiv" + "udiv%?\t%0, %1, %2" + [(set_attr "predicable" "yes") + (set_attr "insn" "udiv")] diff --git a/lang/gcc45/patches/patch-gcc_config_avr_avr-stdint.h b/lang/gcc45/patches/patch-gcc_config_avr_avr-stdint.h new file mode 100644 index 000000000..b1d864664 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_avr_avr-stdint.h @@ -0,0 +1,71 @@ +$NetBSD$ + +--- gcc/config/avr/avr-stdint.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/avr/avr-stdint.h +@@ -0,0 +1,66 @@ ++/* Definitions for types on systems using newlib. ++ Copyright (C) 2012 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++/* ++ The intention of this file is to supply definitions that work with ++ avr-gcc's -mint8 that sets int to an 8-bit type. ++ ++ This file is intended to yield the same results as newlib-stdint.h, ++ but there are some differences to newlib-stdint.h: ++ ++ - AVR is an 8-bit architecture that cannot access 16-bit values ++ atomically, this SIG_ATOMIC_TYPE is "char". ++ ++ - For the same reason, [u]int_fast8_t is defined as 8-bit type. ++ ++*/ ++ ++#define SIG_ATOMIC_TYPE "char" ++ ++#define INT8_TYPE "signed char" ++#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int") ++#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int") ++#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0) ++#define UINT8_TYPE "unsigned char" ++#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int") ++#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int") ++#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0) ++ ++#define INT_LEAST8_TYPE INT8_TYPE ++#define INT_LEAST16_TYPE INT16_TYPE ++#define INT_LEAST32_TYPE INT32_TYPE ++#define INT_LEAST64_TYPE INT64_TYPE ++#define UINT_LEAST8_TYPE UINT8_TYPE ++#define UINT_LEAST16_TYPE UINT16_TYPE ++#define UINT_LEAST32_TYPE UINT32_TYPE ++#define UINT_LEAST64_TYPE UINT64_TYPE ++ ++#define INT_FAST8_TYPE INT8_TYPE ++#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE) ++#define INT_FAST32_TYPE INT32_TYPE ++#define INT_FAST64_TYPE INT64_TYPE ++#define UINT_FAST8_TYPE UINT8_TYPE ++#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE) ++#define UINT_FAST32_TYPE UINT32_TYPE ++#define UINT_FAST64_TYPE UINT64_TYPE ++ ++#define INTPTR_TYPE PTRDIFF_TYPE ++#ifndef UINTPTR_TYPE ++#define UINTPTR_TYPE SIZE_TYPE ++#endif diff --git a/lang/gcc45/patches/patch-gcc_config_avr_avr.c b/lang/gcc45/patches/patch-gcc_config_avr_avr.c new file mode 100644 index 000000000..b7eedb6ff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_avr_avr.c @@ -0,0 +1,116 @@ +$NetBSD$ + +--- gcc/config/avr/avr.c.orig Thu Mar 3 16:58:26 2011 ++++ gcc/config/avr/avr.c +@@ -1043,8 +1043,7 @@ avr_legitimate_address_p (enum machine_mode mode, rtx + true_regnum (XEXP (x, 0))); + debug_rtx (x); + } +- if (!strict && GET_CODE (x) == SUBREG) +- x = SUBREG_REG (x); ++ + if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x) + : REG_OK_FOR_BASE_NOSTRICT_P (x))) + r = POINTER_REGS; +@@ -1386,9 +1385,8 @@ notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn) + { + rtx x = XEXP (src, 1); + +- if (GET_CODE (x) == CONST_INT +- && INTVAL (x) > 0 +- && INTVAL (x) != 6) ++ if (CONST_INT_P (x) ++ && IN_RANGE (INTVAL (x), 1, 5)) + { + cc_status.value1 = SET_DEST (set); + cc_status.flags |= CC_OVERFLOW_UNUSABLE; +@@ -5934,26 +5932,30 @@ jump_over_one_insn_p (rtx insn, rtx dest) + int + avr_hard_regno_mode_ok (int regno, enum machine_mode mode) + { +- /* Disallow QImode in stack pointer regs. */ +- if ((regno == REG_SP || regno == (REG_SP + 1)) && mode == QImode) +- return 0; +- +- /* The only thing that can go into registers r28:r29 is a Pmode. */ +- if (regno == REG_Y && mode == Pmode) ++ /* NOTE: 8-bit values must not be disallowed for R28 or R29. ++ Disallowing QI et al. in these regs might lead to code like ++ (set (subreg:QI (reg:HI 28) n) ...) ++ which will result in wrong code because reload does not ++ handle SUBREGs of hard regsisters like this, see PR46779. ++ This could be fixed in reload. However, it appears ++ that fixing reload is not wanted by reload people. */ ++ ++ /* Any GENERAL_REGS register can hold 8-bit values. */ ++ ++ if (GET_MODE_SIZE (mode) == 1) + return 1; + +- /* Otherwise disallow all regno/mode combinations that span r28:r29. */ +- if (regno <= (REG_Y + 1) && (regno + GET_MODE_SIZE (mode)) >= (REG_Y + 1)) ++ /* FIXME: Ideally, the following test is not needed. ++ However, it turned out that it can reduce the number ++ of spill fails. AVR and it's poor endowment with ++ address registers is extreme stress test for reload. */ ++ ++ if (GET_MODE_SIZE (mode) >= 4 ++ && regno >= REG_X) + return 0; + +- if (mode == QImode) +- return 1; +- +- /* Modes larger than QImode occupy consecutive registers. */ +- if (regno + GET_MODE_SIZE (mode) > FIRST_PSEUDO_REGISTER) +- return 0; +- +- /* All modes larger than QImode should start in an even register. */ ++ /* All modes larger than 8 bits should start in an even register. */ ++ + return !(regno & 1); + } + +@@ -6080,13 +6082,23 @@ avr_hard_regno_scratch_ok (unsigned int regno) + && !df_regs_ever_live_p (regno)) + return false; + ++ /* Don't allow hard registers that might be part of the frame pointer. ++ Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM ++ and don't care for a frame pointer that spans more than one register. */ ++ ++ if ((!reload_completed || frame_pointer_needed) ++ && (regno == REG_Y || regno == REG_Y + 1)) ++ { ++ return false; ++ } ++ + return true; + } + + /* Return nonzero if register OLD_REG can be renamed to register NEW_REG. */ + + int +-avr_hard_regno_rename_ok (unsigned int old_reg ATTRIBUTE_UNUSED, ++avr_hard_regno_rename_ok (unsigned int old_reg, + unsigned int new_reg) + { + /* Interrupt functions can only use registers that have already been +@@ -6097,6 +6109,17 @@ avr_hard_regno_rename_ok (unsigned int old_reg ATTRIBU + && !df_regs_ever_live_p (new_reg)) + return 0; + ++ /* Don't allow hard registers that might be part of the frame pointer. ++ Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM ++ and don't care for a frame pointer that spans more than one register. */ ++ ++ if ((!reload_completed || frame_pointer_needed) ++ && (old_reg == REG_Y || old_reg == REG_Y + 1 ++ || new_reg == REG_Y || new_reg == REG_Y + 1)) ++ { ++ return 0; ++ } ++ + return 1; + } + diff --git a/lang/gcc45/patches/patch-gcc_config_avr_libgcc.S b/lang/gcc45/patches/patch-gcc_config_avr_libgcc.S new file mode 100644 index 000000000..c623969be --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_avr_libgcc.S @@ -0,0 +1,88 @@ +$NetBSD$ + +--- gcc/config/avr/libgcc.S.orig Sat May 23 07:16:07 2009 ++++ gcc/config/avr/libgcc.S +@@ -28,6 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + #define __SP_H__ 0x3e + #define __SP_L__ 0x3d + #define __RAMPZ__ 0x3B ++#define __EIND__ 0x3C + + /* Most of the functions here are called directly from avr.md + patterns, instead of using the standard libcall mechanisms. +@@ -689,7 +690,8 @@ __tablejump__: + lpm + push r0 + #if defined (__AVR_HAVE_EIJMP_EICALL__) +- push __zero_reg__ ++ in __tmp_reg__, __EIND__ ++ push __tmp_reg__ + #endif + ret + #endif +@@ -791,22 +793,22 @@ __do_clear_bss: + #if defined(__AVR_HAVE_RAMPZ__) + __do_global_ctors: + ldi r17, hi8(__ctors_start) +- ldi r16, hh8(__ctors_start) + ldi r28, lo8(__ctors_end) + ldi r29, hi8(__ctors_end) +- ldi r20, hh8(__ctors_end) ++ ldi r16, hh8(__ctors_end) + rjmp .L__do_global_ctors_start + .L__do_global_ctors_loop: + sbiw r28, 2 +- sbc r20, __zero_reg__ ++ sbc r16, __zero_reg__ + mov_h r31, r29 + mov_l r30, r28 +- out __RAMPZ__, r20 ++ out __RAMPZ__, r16 + XCALL __tablejump_elpm__ + .L__do_global_ctors_start: + cpi r28, lo8(__ctors_start) + cpc r29, r17 +- cpc r20, r16 ++ ldi r24, hh8(__ctors_start) ++ cpc r16, r24 + brne .L__do_global_ctors_loop + #else + __do_global_ctors: +@@ -832,22 +834,22 @@ __do_global_ctors: + #if defined(__AVR_HAVE_RAMPZ__) + __do_global_dtors: + ldi r17, hi8(__dtors_end) +- ldi r16, hh8(__dtors_end) + ldi r28, lo8(__dtors_start) + ldi r29, hi8(__dtors_start) +- ldi r20, hh8(__dtors_start) ++ ldi r16, hh8(__dtors_start) + rjmp .L__do_global_dtors_start + .L__do_global_dtors_loop: + sbiw r28, 2 +- sbc r20, __zero_reg__ ++ sbc r16, __zero_reg__ + mov_h r31, r29 + mov_l r30, r28 +- out __RAMPZ__, r20 ++ out __RAMPZ__, r16 + XCALL __tablejump_elpm__ + .L__do_global_dtors_start: + cpi r28, lo8(__dtors_end) + cpc r29, r17 +- cpc r20, r16 ++ ldi r24, hh8(__dtors_end) ++ cpc r16, r24 + brne .L__do_global_dtors_loop + #else + __do_global_dtors: +@@ -889,7 +891,8 @@ __tablejump_elpm__: + elpm + push r0 + #if defined (__AVR_HAVE_EIJMP_EICALL__) +- push __zero_reg__ ++ in __tmp_reg__, __EIND__ ++ push __tmp_reg__ + #endif + ret + #endif diff --git a/lang/gcc45/patches/patch-gcc_config_bfin_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_bfin_linux-unwind.h new file mode 100644 index 000000000..a4e4d4160 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_bfin_linux-unwind.h @@ -0,0 +1,24 @@ +$NetBSD$ + +--- gcc/config/bfin/linux-unwind.h.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/bfin/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for Blackfin. +- Copyright (C) 2007, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -48,10 +48,10 @@ bfin_fallback_frame_state (struct _Unwind_Context *con + { + struct rt_sigframe { + int sig; +- struct siginfo *pinfo; ++ siginfo_t *pinfo; + void *puc; + char retcode[8]; +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_ = context->cfa; + diff --git a/lang/gcc45/patches/patch-gcc_config_darwin-protos.h b/lang/gcc45/patches/patch-gcc_config_darwin-protos.h new file mode 100644 index 000000000..0e892040e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_darwin-protos.h @@ -0,0 +1,9 @@ +$NetBSD$ + +--- gcc/config/darwin-protos.h.orig Thu Jun 24 21:06:37 2010 ++++ gcc/config/darwin-protos.h +@@ -93,3 +93,4 @@ extern void darwin_asm_output_anchor (rtx symbol); + extern bool darwin_kextabi_p (void); + extern void darwin_override_options (void); + extern void darwin_patch_builtins (void); ++extern void darwin_rename_builtins (void); diff --git a/lang/gcc45/patches/patch-gcc_config_darwin.c b/lang/gcc45/patches/patch-gcc_config_darwin.c new file mode 100644 index 000000000..976af6bab --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_darwin.c @@ -0,0 +1,39 @@ +$NetBSD$ + +--- gcc/config/darwin.c.orig Thu Jun 24 21:06:37 2010 ++++ gcc/config/darwin.c +@@ -337,6 +337,34 @@ static GTY ((param_is (struct machopic_indirection))) + + /* Return a hash value for a SLOT in the indirections hash table. */ + ++void ++darwin_rename_builtins (void) ++{ ++ /* The system ___divdc3 routine in libSystem on darwin10 is not ++ accurate to 1ulp, ours is, so we avoid ever using the system name ++ for this routine and instead install a non-conflicting name that ++ is accurate. ++ ++ When -ffast-math or -funsafe-math-optimizations is given, we can ++ use the faster version. */ ++ if (!flag_unsafe_math_optimizations) ++ { ++ int dcode = (BUILT_IN_COMPLEX_DIV_MIN ++ + DCmode - MIN_MODE_COMPLEX_FLOAT); ++ tree fn = built_in_decls[dcode]; ++ /* Fortran and c call TARGET_INIT_BUILTINS and ++ TARGET_INIT_LIBFUNCS at different times, so we have to put a ++ call into each to ensure that at least one of them is called ++ after build_common_builtin_nodes. A better fix is to add a ++ new hook to run after build_common_builtin_nodes runs. */ ++ if (fn) ++ set_user_assembler_name (fn, "___ieee_divdc3"); ++ fn = implicit_built_in_decls[dcode]; ++ if (fn) ++ set_user_assembler_name (fn, "___ieee_divdc3"); ++ } ++} ++ + static hashval_t + machopic_indirection_hash (const void *slot) + { diff --git a/lang/gcc45/patches/patch-gcc_config_freebsd-spec.h b/lang/gcc45/patches/patch-gcc_config_freebsd-spec.h new file mode 100644 index 000000000..02cc880a5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_freebsd-spec.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/freebsd-spec.h.orig Fri Feb 25 23:15:48 2011 ++++ gcc/config/freebsd-spec.h +@@ -153,7 +153,7 @@ is built with the --enable-threads configure-time opti + #define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1" + #endif + +-#if defined(HAVE_LD_EH_FRAME_HDR) ++#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC) + #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " + #endif + diff --git a/lang/gcc45/patches/patch-gcc_config_i386_athlon.md b/lang/gcc45/patches/patch-gcc_config_i386_athlon.md new file mode 100644 index 000000000..5951259a9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_athlon.md @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/i386/athlon.md.orig Tue Apr 21 19:03:23 2009 ++++ gcc/config/i386/athlon.md +@@ -798,7 +798,7 @@ + "athlon-direct,athlon-fploadk8,athlon-fadd") + (define_insn_reservation "athlon_ssecomi" 4 + (and (eq_attr "cpu" "athlon,k8,generic64") +- (eq_attr "type" "ssecmp")) ++ (eq_attr "type" "ssecomi")) + "athlon-vector,athlon-fpsched,athlon-fadd") + (define_insn_reservation "athlon_ssecomi_amdfam10" 3 + (and (eq_attr "cpu" "amdfam10") diff --git a/lang/gcc45/patches/patch-gcc_config_i386_avxintrin.h b/lang/gcc45/patches/patch-gcc_config_i386_avxintrin.h new file mode 100644 index 000000000..db3fc9693 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_avxintrin.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/i386/avxintrin.h.orig Mon Feb 21 20:02:02 2011 ++++ gcc/config/i386/avxintrin.h +@@ -759,7 +759,7 @@ _mm256_insert_epi8 (__m256i __X, int __D, int const __ + + #ifdef __x86_64__ + extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +-_mm256_insert_epi64 (__m256i __X, int __D, int const __N) ++_mm256_insert_epi64 (__m256i __X, long long __D, int const __N) + { + __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1); + __Y = _mm_insert_epi64 (__Y, __D, __N % 2); diff --git a/lang/gcc45/patches/patch-gcc_config_i386_constraints.md b/lang/gcc45/patches/patch-gcc_config_i386_constraints.md new file mode 100644 index 000000000..96e2852ae --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_constraints.md @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/i386/constraints.md.orig Wed Jul 8 16:41:23 2009 ++++ gcc/config/i386/constraints.md +@@ -149,7 +149,7 @@ + (define_constraint "G" + "Standard 80387 floating point constant." + (and (match_code "const_double") +- (match_test "standard_80387_constant_p (op)"))) ++ (match_test "standard_80387_constant_p (op) > 0"))) + + ;; This can theoretically be any mode's CONST0_RTX. + (define_constraint "C" diff --git a/lang/gcc45/patches/patch-gcc_config_i386_darwin.h b/lang/gcc45/patches/patch-gcc_config_i386_darwin.h new file mode 100644 index 000000000..00498b77f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_darwin.h @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/config/i386/darwin.h.orig Fri Sep 10 16:12:46 2010 ++++ gcc/config/i386/darwin.h +@@ -302,3 +302,17 @@ along with GCC; see the file COPYING3. If not see + #define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3) + + #define SUBTARGET32_DEFAULT_CPU "i686" ++ ++#define SUBTARGET_INIT_BUILTINS \ ++do { \ ++ darwin_rename_builtins (); \ ++} while(0) ++ ++/* The system ___divdc3 routine in libSystem on darwin10 is not ++ accurate to 1ulp, ours is, so we avoid ever using the system name ++ for this routine and instead install a non-conflicting name that is ++ accurate. See darwin_rename_builtins. */ ++#ifdef L_divdc3 ++#define DECLARE_LIBRARY_RENAMES \ ++ asm(".text; ___divdc3: jmp ___ieee_divdc3 ; .globl ___divdc3"); ++#endif diff --git a/lang/gcc45/patches/patch-gcc_config_i386_driver-i386.c b/lang/gcc45/patches/patch-gcc_config_i386_driver-i386.c new file mode 100644 index 000000000..4a174fa8f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_driver-i386.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/config/i386/driver-i386.c.orig Sun May 9 14:53:00 2010 ++++ gcc/config/i386/driver-i386.c +@@ -436,7 +436,8 @@ const char *host_detect_local_cpu (int argc, const cha + has_ssse3 = ecx & bit_SSSE3; + has_sse4_1 = ecx & bit_SSE4_1; + has_sse4_2 = ecx & bit_SSE4_2; +- has_avx = ecx & bit_AVX; ++ /* Don't check XCR0[2] - I think that can be 'lazy enabled' by the OS */ ++ has_avx = (ecx & bit_AVX) && (ecx & bit_OSXSAVE); + has_cmpxchg16b = ecx & bit_CMPXCHG16B; + has_movbe = ecx & bit_MOVBE; + has_popcnt = ecx & bit_POPCNT; +@@ -494,7 +495,7 @@ const char *host_detect_local_cpu (int argc, const cha + processor = PROCESSOR_AMDFAM10; + else if (has_sse2 || has_longmode) + processor = PROCESSOR_K8; +- else if (has_3dnowp) ++ else if (has_3dnowp && family == 6) + processor = PROCESSOR_ATHLON; + else if (has_mmx) + processor = PROCESSOR_K6; diff --git a/lang/gcc45/patches/patch-gcc_config_i386_i386-protos.h b/lang/gcc45/patches/patch-gcc_config_i386_i386-protos.h new file mode 100644 index 000000000..b0aa1883d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_i386-protos.h @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/config/i386/i386-protos.h.orig Thu Jul 22 06:42:02 2010 ++++ gcc/config/i386/i386-protos.h +@@ -57,7 +57,8 @@ extern bool legitimate_constant_p (rtx); + extern bool constant_address_p (rtx); + extern bool legitimate_pic_operand_p (rtx); + extern int legitimate_pic_address_disp_p (rtx); +- ++extern bool ix86_legitimize_reload_address (rtx, enum machine_mode, ++ int, int, int); + extern void print_reg (rtx, int, FILE*); + extern void print_operand (FILE*, rtx, int); + extern void print_operand_address (FILE*, rtx); diff --git a/lang/gcc45/patches/patch-gcc_config_i386_i386.c b/lang/gcc45/patches/patch-gcc_config_i386_i386.c new file mode 100644 index 000000000..a942ee48f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_i386.c @@ -0,0 +1,243 @@ +$NetBSD$ + +--- gcc/config/i386/i386.c.orig Thu Feb 17 21:22:02 2011 ++++ gcc/config/i386/i386.c +@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see + #include "target.h" + #include "target-def.h" + #include "langhooks.h" ++#include "reload.h" + #include "cgraph.h" + #include "gimple.h" + #include "dwarf2.h" +@@ -1540,7 +1541,7 @@ unsigned char ix86_arch_features[X86_ARCH_LAST]; + /* Feature tests against the various architecture variations, used to create + ix86_arch_features based on the processor mask. */ + static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = { +- /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro. */ ++ /* X86_ARCH_CMOV: Conditional move was added for pentiumpro. */ + ~(m_386 | m_486 | m_PENT | m_K6), + + /* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486. */ +@@ -3071,7 +3072,7 @@ override_options (bool main_args_p) + -mtune (rather than -march) points us to a processor that has them. + However, the VIA C3 gives a SIGILL, so we only do that for i686 and + higher processors. */ +- if (TARGET_CMOVE ++ if (TARGET_CMOV + && (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE))) + x86_prefetch_sse = true; + break; +@@ -3400,11 +3401,6 @@ override_options (bool main_args_p) + target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; + } + +- /* For sane SSE instruction set generation we need fcomi instruction. +- It is safe to enable all CMOVE instructions. */ +- if (TARGET_SSE) +- TARGET_CMOVE = 1; +- + /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix. */ + { + char *p; +@@ -9875,6 +9871,64 @@ legitimate_pic_address_disp_p (rtx disp) + return 0; + } + ++/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS. Returns a value to ++ replace the input X, or the original X if no replacement is called for. ++ The output parameter *WIN is 1 if the calling macro should goto WIN, ++ 0 if it should not. */ ++ ++bool ++ix86_legitimize_reload_address (rtx x, ++ enum machine_mode mode ATTRIBUTE_UNUSED, ++ int opnum, int type, ++ int ind_levels ATTRIBUTE_UNUSED) ++{ ++ /* Reload can generate: ++ ++ (plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP) ++ (reg:DI 97)) ++ (reg:DI 2 cx)) ++ ++ This RTX is rejected from ix86_legitimate_address_p due to ++ non-strictness of base register 97. Following this rejection, ++ reload pushes all three components into separate registers, ++ creating invalid memory address RTX. ++ ++ Following code reloads only the invalid part of the ++ memory address RTX. */ ++ ++ if (GET_CODE (x) == PLUS ++ && REG_P (XEXP (x, 1)) ++ && GET_CODE (XEXP (x, 0)) == PLUS ++ && REG_P (XEXP (XEXP (x, 0), 1))) ++ { ++ rtx base, index; ++ bool something_reloaded = false; ++ ++ base = XEXP (XEXP (x, 0), 1); ++ if (!REG_OK_FOR_BASE_STRICT_P (base)) ++ { ++ push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL, ++ BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0, ++ opnum, (enum reload_type)type); ++ something_reloaded = true; ++ } ++ ++ index = XEXP (x, 1); ++ if (!REG_OK_FOR_INDEX_STRICT_P (index)) ++ { ++ push_reload (index, NULL_RTX, &XEXP (x, 1), NULL, ++ INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0, ++ opnum, (enum reload_type)type); ++ something_reloaded = true; ++ } ++ ++ gcc_assert (something_reloaded); ++ return true; ++ } ++ ++ return false; ++} ++ + /* Recognizes RTL expressions that are valid memory addresses for an + instruction. The MODE argument is the machine mode for the MEM + expression that wants to use this address. +@@ -11872,6 +11926,13 @@ print_operand (FILE *file, rtx x, int code) + return; + + case 'H': ++ if (!offsettable_memref_p (x)) ++ { ++ output_operand_lossage ("operand is not an offsettable memory " ++ "reference, invalid operand " ++ "code 'H'"); ++ return; ++ } + /* It doesn't actually matter what mode we use here, as we're + only going to use this for printing. */ + x = adjust_address_nv (x, DImode, 8); +@@ -14610,11 +14671,15 @@ ix86_match_ccmode (rtx insn, enum machine_mode req_mod + if (req_mode == CCZmode) + return 0; + /* FALLTHRU */ ++ case CCZmode: ++ break; ++ + case CCAmode: + case CCCmode: + case CCOmode: + case CCSmode: +- case CCZmode: ++ if (set_mode != req_mode) ++ return 0; + break; + + default: +@@ -16196,11 +16261,15 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, + } + else if (TARGET_XOP) + { +- rtx pcmov = gen_rtx_SET (mode, dest, +- gen_rtx_IF_THEN_ELSE (mode, cmp, +- op_true, +- op_false)); +- emit_insn (pcmov); ++ op_true = force_reg (mode, op_true); ++ ++ if (!nonimmediate_operand (op_false, mode)) ++ op_false = force_reg (mode, op_false); ++ ++ emit_insn (gen_rtx_SET (mode, dest, ++ gen_rtx_IF_THEN_ELSE (mode, cmp, ++ op_true, ++ op_false))); + } + else + { +@@ -20104,7 +20173,9 @@ ix86_local_alignment (tree exp, enum machine_mode mode + if (!TARGET_64BIT + && align == 64 + && ix86_preferred_stack_boundary < 64 +- && (mode == DImode || (type && TYPE_MODE (type) == DImode)) ++ && (mode == DImode || (type && TYPE_MODE (type) == DImode) ++ || mode == DFmode || (type && TYPE_MODE (type) == DFmode) ++ || mode == DCmode || (type && TYPE_MODE (type) == DCmode)) + && (!type || !TYPE_USER_ALIGN (type)) + && (!decl || !DECL_USER_ALIGN (decl))) + align = 32; +@@ -20150,7 +20221,8 @@ ix86_local_alignment (tree exp, enum machine_mode mode + || TREE_CODE (type) == QUAL_UNION_TYPE) + && TYPE_FIELDS (type)) + { +- if (DECL_MODE (TYPE_FIELDS (type)) == DFmode && align < 64) ++ if (DECL_MODE (TYPE_FIELDS (type)) == DFmode && align < 64 ++ && ix86_preferred_stack_boundary >= 64) + return 64; + if (ALIGN_MODE_128 (DECL_MODE (TYPE_FIELDS (type))) && align < 128) + return 128; +@@ -20159,7 +20231,8 @@ ix86_local_alignment (tree exp, enum machine_mode mode + || TREE_CODE (type) == INTEGER_TYPE) + { + +- if (TYPE_MODE (type) == DFmode && align < 64) ++ if (TYPE_MODE (type) == DFmode && align < 64 ++ && ix86_preferred_stack_boundary >= 64) + return 64; + if (ALIGN_MODE_128 (TYPE_MODE (type)) && align < 128) + return 128; +@@ -23991,8 +24064,8 @@ ix86_expand_special_args_builtin (const struct builtin + arg_adjust = 0; + if (optimize + || target == 0 +- || GET_MODE (target) != tmode +- || ! (*insn_p->operand[0].predicate) (target, tmode)) ++ || !register_operand (target, tmode) ++ || GET_MODE (target) != tmode) + target = gen_reg_rtx (tmode); + } + +@@ -25067,7 +25140,7 @@ ix86_preferred_reload_class (rtx x, enum reg_class reg + zero above. We only want to wind up preferring 80387 registers if + we plan on doing computation with them. */ + if (TARGET_80387 +- && standard_80387_constant_p (x)) ++ && standard_80387_constant_p (x) > 0) + { + /* Limit class to non-sse. */ + if (regclass == FLOAT_SSE_REGS) +@@ -27711,10 +27784,19 @@ ix86_expand_vector_set (bool mmx_ok, rtx target, rtx v + break; + + case V2DImode: +- use_vec_merge = TARGET_SSE4_1; ++ use_vec_merge = TARGET_SSE4_1 && TARGET_64BIT; + if (use_vec_merge) + break; + ++ tmp = gen_reg_rtx (GET_MODE_INNER (mode)); ++ ix86_expand_vector_extract (false, tmp, target, 1 - elt); ++ if (elt == 0) ++ tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); ++ else ++ tmp = gen_rtx_VEC_CONCAT (mode, val, tmp); ++ emit_insn (gen_rtx_SET (VOIDmode, target, tmp)); ++ return; ++ + case V2DFmode: + { + rtx op0, op1; +@@ -30651,6 +30733,11 @@ ix86_enum_va_list (int idx, const char **pname, tree * + + #undef TARGET_ASM_CODE_END + #define TARGET_ASM_CODE_END ix86_code_end ++ ++#if TARGET_MACHO ++#undef TARGET_INIT_LIBFUNCS ++#define TARGET_INIT_LIBFUNCS darwin_rename_builtins ++#endif + + struct gcc_target targetm = TARGET_INITIALIZER; + diff --git a/lang/gcc45/patches/patch-gcc_config_i386_i386.h b/lang/gcc45/patches/patch-gcc_config_i386_i386.h new file mode 100644 index 000000000..e4361a271 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_i386.h @@ -0,0 +1,57 @@ +$NetBSD$ + +--- gcc/config/i386/i386.h.orig Wed Mar 30 10:48:07 2011 ++++ gcc/config/i386/i386.h +@@ -397,7 +397,7 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST] + + /* Feature tests against the various architecture variations. */ + enum ix86_arch_indices { +- X86_ARCH_CMOVE, /* || TARGET_SSE */ ++ X86_ARCH_CMOV, + X86_ARCH_CMPXCHG, + X86_ARCH_CMPXCHG8B, + X86_ARCH_XADD, +@@ -408,12 +408,16 @@ enum ix86_arch_indices { + + extern unsigned char ix86_arch_features[X86_ARCH_LAST]; + +-#define TARGET_CMOVE ix86_arch_features[X86_ARCH_CMOVE] ++#define TARGET_CMOV ix86_arch_features[X86_ARCH_CMOV] + #define TARGET_CMPXCHG ix86_arch_features[X86_ARCH_CMPXCHG] + #define TARGET_CMPXCHG8B ix86_arch_features[X86_ARCH_CMPXCHG8B] + #define TARGET_XADD ix86_arch_features[X86_ARCH_XADD] + #define TARGET_BSWAP ix86_arch_features[X86_ARCH_BSWAP] + ++/* For sane SSE instruction set generation we need fcomi instruction. ++ It is safe to enable all CMOVE instructions. */ ++#define TARGET_CMOVE (TARGET_CMOV || TARGET_SSE) ++ + #define TARGET_FISTTP (TARGET_SSE3 && TARGET_80387) + + extern int x86_prefetch_sse; +@@ -1081,6 +1085,7 @@ enum target_cpu_default + + #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ + (CC_REGNO_P (REGNO) ? VOIDmode \ ++ : MMX_REGNO_P (REGNO) ? V8QImode \ + : (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode \ + : (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS), false) \ + : (MODE) == HImode && !TARGET_PARTIAL_REG_STALL ? SImode \ +@@ -1765,6 +1770,17 @@ typedef struct ix86_args { + It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ + + #define LEGITIMATE_CONSTANT_P(X) legitimate_constant_p (X) ++ ++/* Try a machine-dependent way of reloading an illegitimate address ++ operand. If we find one, push the reload and jump to WIN. This ++ macro is used in only one place: `find_reloads_address' in reload.c. */ ++ ++#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN) \ ++do { \ ++ if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM), \ ++ (int)(TYPE), (INDL))) \ ++ goto WIN; \ ++} while (0) + + /* If defined, a C expression to determine the base term of address X. + This macro is used in only one place: `find_base_term' in alias.c. diff --git a/lang/gcc45/patches/patch-gcc_config_i386_i386.md b/lang/gcc45/patches/patch-gcc_config_i386_i386.md new file mode 100644 index 000000000..771f89920 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_i386.md @@ -0,0 +1,582 @@ +$NetBSD$ + +--- gcc/config/i386/i386.md.orig Fri Jan 7 13:02:29 2011 ++++ gcc/config/i386/i386.md +@@ -2430,7 +2430,7 @@ + [(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") + (set (attr "prefix") + (if_then_else (eq_attr "alternative" "5,6,7,8") +- (const_string "vex") ++ (const_string "maybe_vex") + (const_string "orig"))) + (set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")]) + +@@ -2468,21 +2468,15 @@ + return "movdq2q\t{%1, %0|%0, %1}"; + + case TYPE_SSEMOV: +- if (TARGET_AVX) +- { +- if (get_attr_mode (insn) == MODE_TI) +- return "vmovdqa\t{%1, %0|%0, %1}"; +- else +- return "vmovq\t{%1, %0|%0, %1}"; +- } +- + if (get_attr_mode (insn) == MODE_TI) +- return "movdqa\t{%1, %0|%0, %1}"; +- /* FALLTHRU */ ++ return "%vmovdqa\t{%1, %0|%0, %1}"; ++ /* Handle broken assemblers that require movd instead of movq. */ ++ if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) ++ return "%vmovd\t{%1, %0|%0, %1}"; ++ return "%vmovq\t{%1, %0|%0, %1}"; + + case TYPE_MMXMOV: +- /* Moves from and into integer register is done using movd +- opcode with REX prefix. */ ++ /* Handle broken assemblers that require movd instead of movq. */ + if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) + return "movd\t{%1, %0|%0, %1}"; + return "movq\t{%1, %0|%0, %1}"; +@@ -2878,7 +2872,7 @@ + && (reload_in_progress || reload_completed + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!TARGET_SSE_MATH && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], SFmode))" + { +@@ -2915,12 +2909,13 @@ + + case 9: case 10: case 14: case 15: + return "movd\t{%1, %0|%0, %1}"; +- case 12: case 13: +- return "%vmovd\t{%1, %0|%0, %1}"; + + case 11: + return "movq\t{%1, %0|%0, %1}"; + ++ case 12: case 13: ++ return "%vmovd\t{%1, %0|%0, %1}"; ++ + default: + gcc_unreachable (); + } +@@ -3048,11 +3043,10 @@ + || (!(TARGET_SSE2 && TARGET_SSE_MATH) + && optimize_function_for_size_p (cfun) + && !memory_operand (operands[0], DFmode) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || ((optimize_function_for_size_p (cfun) +- || !TARGET_MEMORY_MISMATCH_STALL +- || reload_in_progress || reload_completed) ++ || !TARGET_MEMORY_MISMATCH_STALL) + && memory_operand (operands[0], DFmode)))" + { + switch (which_alternative) +@@ -3067,6 +3061,7 @@ + case 3: + case 4: + return "#"; ++ + case 5: + switch (get_attr_mode (insn)) + { +@@ -3200,7 +3195,7 @@ + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!(TARGET_SSE2 && TARGET_SSE_MATH) + && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], DFmode))" + { +@@ -3262,7 +3257,8 @@ + + case 9: + case 10: +- return "%vmovd\t{%1, %0|%0, %1}"; ++ /* Handle broken assemblers that require movd instead of movq. */ ++ return "%vmovd\t{%1, %0|%0, %1}"; + + default: + gcc_unreachable(); +@@ -3340,7 +3336,7 @@ + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!(TARGET_SSE2 && TARGET_SSE_MATH) + && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], DFmode))" + { +@@ -3361,11 +3357,11 @@ + switch (get_attr_mode (insn)) + { + case MODE_V4SF: +- return "xorps\t%0, %0"; ++ return "%vxorps\t%0, %d0"; + case MODE_V2DF: +- return "xorpd\t%0, %0"; ++ return "%vxorpd\t%0, %d0"; + case MODE_TI: +- return "pxor\t%0, %0"; ++ return "%vpxor\t%0, %d0"; + default: + gcc_unreachable (); + } +@@ -3375,28 +3371,56 @@ + switch (get_attr_mode (insn)) + { + case MODE_V4SF: +- return "movaps\t{%1, %0|%0, %1}"; ++ return "%vmovaps\t{%1, %0|%0, %1}"; + case MODE_V2DF: +- return "movapd\t{%1, %0|%0, %1}"; ++ return "%vmovapd\t{%1, %0|%0, %1}"; + case MODE_TI: +- return "movdqa\t{%1, %0|%0, %1}"; ++ return "%vmovdqa\t{%1, %0|%0, %1}"; + case MODE_DI: +- return "movq\t{%1, %0|%0, %1}"; ++ return "%vmovq\t{%1, %0|%0, %1}"; + case MODE_DF: +- return "movsd\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0]) && REG_P (operands[1])) ++ return "vmovsd\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovsd\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movsd\t{%1, %0|%0, %1}"; + case MODE_V1DF: +- return "movlpd\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0])) ++ return "vmovlpd\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovlpd\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movlpd\t{%1, %0|%0, %1}"; + case MODE_V2SF: +- return "movlps\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0])) ++ return "vmovlps\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovlps\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movlps\t{%1, %0|%0, %1}"; + default: + gcc_unreachable (); + } + + default: +- gcc_unreachable(); ++ gcc_unreachable (); + } + } + [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov") ++ (set (attr "prefix") ++ (if_then_else (eq_attr "alternative" "0,1,2,3,4") ++ (const_string "orig") ++ (const_string "maybe_vex"))) + (set (attr "prefix_data16") + (if_then_else (eq_attr "mode" "V1DF") + (const_string "1") +@@ -3543,7 +3567,8 @@ + "optimize_function_for_size_p (cfun) + && !(MEM_P (operands[0]) && MEM_P (operands[1])) + && (reload_in_progress || reload_completed +- || standard_80387_constant_p (operands[1]) ++ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) ++ || standard_80387_constant_p (operands[1]) > 0 + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], XFmode))" + { +@@ -3571,6 +3596,7 @@ + "optimize_function_for_speed_p (cfun) + && !(MEM_P (operands[0]) && MEM_P (operands[1])) + && (reload_in_progress || reload_completed ++ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], XFmode))" + { +@@ -3715,7 +3741,7 @@ + } + else if (FP_REG_P (r)) + { +- if (!standard_80387_constant_p (c)) ++ if (standard_80387_constant_p (c) < 1) + FAIL; + } + else if (MMX_REG_P (r)) +@@ -3747,7 +3773,7 @@ + } + else if (FP_REG_P (r)) + { +- if (!standard_80387_constant_p (c)) ++ if (standard_80387_constant_p (c) < 1) + FAIL; + } + else if (MMX_REG_P (r)) +@@ -17658,7 +17684,8 @@ + (set (match_operand:DI 1 "register_operand" "=S") + (plus:DI (match_dup 3) + (const_int 8)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movsq" + [(set_attr "type" "str") + (set_attr "mode" "DI") +@@ -17673,7 +17700,8 @@ + (set (match_operand:SI 1 "register_operand" "=S") + (plus:SI (match_dup 3) + (const_int 4)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movs{l|d}" + [(set_attr "type" "str") + (set_attr "mode" "SI") +@@ -17688,7 +17716,8 @@ + (set (match_operand:DI 1 "register_operand" "=S") + (plus:DI (match_dup 3) + (const_int 4)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movs{l|d}" + [(set_attr "type" "str") + (set_attr "mode" "SI") +@@ -17703,7 +17732,8 @@ + (set (match_operand:SI 1 "register_operand" "=S") + (plus:SI (match_dup 3) + (const_int 2)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movsw" + [(set_attr "type" "str") + (set_attr "memory" "both") +@@ -17718,7 +17748,8 @@ + (set (match_operand:DI 1 "register_operand" "=S") + (plus:DI (match_dup 3) + (const_int 2)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movsw" + [(set_attr "type" "str") + (set_attr "memory" "both") +@@ -17733,7 +17764,8 @@ + (set (match_operand:SI 1 "register_operand" "=S") + (plus:SI (match_dup 3) + (const_int 1)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movsb" + [(set_attr "type" "str") + (set_attr "memory" "both") +@@ -17748,7 +17780,8 @@ + (set (match_operand:DI 1 "register_operand" "=S") + (plus:DI (match_dup 3) + (const_int 1)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "movsb" + [(set_attr "type" "str") + (set_attr "memory" "both") +@@ -17779,7 +17812,8 @@ + (set (mem:BLK (match_dup 3)) + (mem:BLK (match_dup 4))) + (use (match_dup 5))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "rep{%;} movsq" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -17798,7 +17832,8 @@ + (set (mem:BLK (match_dup 3)) + (mem:BLK (match_dup 4))) + (use (match_dup 5))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "rep{%;} movs{l|d}" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -17817,7 +17852,8 @@ + (set (mem:BLK (match_dup 3)) + (mem:BLK (match_dup 4))) + (use (match_dup 5))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "rep{%;} movs{l|d}" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -17834,7 +17870,8 @@ + (set (mem:BLK (match_dup 3)) + (mem:BLK (match_dup 4))) + (use (match_dup 5))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "rep{%;} movsb" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -17851,7 +17888,8 @@ + (set (mem:BLK (match_dup 3)) + (mem:BLK (match_dup 4))) + (use (match_dup 5))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "rep{%;} movsb" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -17911,7 +17949,9 @@ + operands[3] = gen_rtx_PLUS (Pmode, operands[0], + GEN_INT (GET_MODE_SIZE (GET_MODE + (operands[2])))); +- if (TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ()) ++ /* Can't use this if the user has appropriated eax or edi. */ ++ if ((TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ()) ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])) + { + emit_insn (gen_strset_singleop (operands[0], operands[1], operands[2], + operands[3])); +@@ -17933,7 +17973,8 @@ + (set (match_operand:DI 0 "register_operand" "=D") + (plus:DI (match_dup 1) + (const_int 8)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stosq" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -17945,7 +17986,8 @@ + (set (match_operand:SI 0 "register_operand" "=D") + (plus:SI (match_dup 1) + (const_int 4)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stos{l|d}" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -17957,7 +17999,8 @@ + (set (match_operand:DI 0 "register_operand" "=D") + (plus:DI (match_dup 1) + (const_int 4)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stos{l|d}" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -17969,7 +18012,8 @@ + (set (match_operand:SI 0 "register_operand" "=D") + (plus:SI (match_dup 1) + (const_int 2)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stosw" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -17981,7 +18025,8 @@ + (set (match_operand:DI 0 "register_operand" "=D") + (plus:DI (match_dup 1) + (const_int 2)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stosw" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -17993,7 +18038,8 @@ + (set (match_operand:SI 0 "register_operand" "=D") + (plus:SI (match_dup 1) + (const_int 1)))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stosb" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -18005,7 +18051,8 @@ + (set (match_operand:DI 0 "register_operand" "=D") + (plus:DI (match_dup 1) + (const_int 1)))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" + "stosb" + [(set_attr "type" "str") + (set_attr "memory" "store") +@@ -18032,7 +18079,8 @@ + (const_int 0)) + (use (match_operand:DI 2 "register_operand" "a")) + (use (match_dup 4))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "rep{%;} stosq" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -18049,7 +18097,8 @@ + (const_int 0)) + (use (match_operand:SI 2 "register_operand" "a")) + (use (match_dup 4))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "rep{%;} stos{l|d}" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -18066,7 +18115,8 @@ + (const_int 0)) + (use (match_operand:SI 2 "register_operand" "a")) + (use (match_dup 4))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "rep{%;} stos{l|d}" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -18082,7 +18132,8 @@ + (const_int 0)) + (use (match_operand:QI 2 "register_operand" "a")) + (use (match_dup 4))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "rep{%;} stosb" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -18098,7 +18149,8 @@ + (const_int 0)) + (use (match_operand:QI 2 "register_operand" "a")) + (use (match_dup 4))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "rep{%;} stosb" + [(set_attr "type" "str") + (set_attr "prefix_rep" "1") +@@ -18119,8 +18171,8 @@ + if (optimize_insn_for_size_p () && !TARGET_INLINE_ALL_STRINGOPS) + FAIL; + +- /* Can't use this if the user has appropriated esi or edi. */ +- if (fixed_regs[SI_REG] || fixed_regs[DI_REG]) ++ /* Can't use this if the user has appropriated ecx, esi or edi. */ ++ if (fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG]) + FAIL; + + out = operands[0]; +@@ -18214,7 +18266,8 @@ + (clobber (match_operand:SI 0 "register_operand" "=S")) + (clobber (match_operand:SI 1 "register_operand" "=D")) + (clobber (match_operand:SI 2 "register_operand" "=c"))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "repz{%;} cmpsb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18229,7 +18282,8 @@ + (clobber (match_operand:DI 0 "register_operand" "=S")) + (clobber (match_operand:DI 1 "register_operand" "=D")) + (clobber (match_operand:DI 2 "register_operand" "=c"))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "repz{%;} cmpsb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18265,7 +18319,8 @@ + (clobber (match_operand:SI 0 "register_operand" "=S")) + (clobber (match_operand:SI 1 "register_operand" "=D")) + (clobber (match_operand:SI 2 "register_operand" "=c"))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "repz{%;} cmpsb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18283,7 +18338,8 @@ + (clobber (match_operand:DI 0 "register_operand" "=S")) + (clobber (match_operand:DI 1 "register_operand" "=D")) + (clobber (match_operand:DI 2 "register_operand" "=c"))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" + "repz{%;} cmpsb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18295,7 +18351,7 @@ + (unspec:SI [(match_operand:BLK 1 "general_operand" "") + (match_operand:QI 2 "immediate_operand" "") + (match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))] +- "" ++ "!TARGET_64BIT" + { + if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3])) + DONE; +@@ -18308,7 +18364,7 @@ + (unspec:DI [(match_operand:BLK 1 "general_operand" "") + (match_operand:QI 2 "immediate_operand" "") + (match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))] +- "" ++ "TARGET_64BIT" + { + if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3])) + DONE; +@@ -18331,7 +18387,8 @@ + (match_operand:SI 4 "register_operand" "0")] UNSPEC_SCAS)) + (clobber (match_operand:SI 1 "register_operand" "=D")) + (clobber (reg:CC FLAGS_REG))] +- "!TARGET_64BIT" ++ "!TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "repnz{%;} scasb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18345,7 +18402,8 @@ + (match_operand:DI 4 "register_operand" "0")] UNSPEC_SCAS)) + (clobber (match_operand:DI 1 "register_operand" "=D")) + (clobber (reg:CC FLAGS_REG))] +- "TARGET_64BIT" ++ "TARGET_64BIT ++ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" + "repnz{%;} scasb" + [(set_attr "type" "str") + (set_attr "mode" "QI") +@@ -18499,7 +18557,8 @@ + (define_insn "*x86_movcc_0_m1_neg" + [(set (match_operand:SWI48 0 "register_operand" "=r") + (neg:SWI48 (match_operator 1 "ix86_carry_flag_operator" +- [(reg FLAGS_REG) (const_int 0)])))] ++ [(reg FLAGS_REG) (const_int 0)]))) ++ (clobber (reg:CC FLAGS_REG))] + "" + "sbb{}\t%0, %0" + [(set_attr "type" "alu") diff --git a/lang/gcc45/patches/patch-gcc_config_i386_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_i386_linux-unwind.h new file mode 100644 index 000000000..c1139d2c0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_linux-unwind.h @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/config/i386/linux-unwind.h.orig Fri Nov 13 06:58:12 2009 ++++ gcc/config/i386/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for AMD x86-64 and x86. +- Copyright (C) 2004, 2005, 2006, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2006, 2009, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -133,9 +133,9 @@ x86_fallback_frame_state (struct _Unwind_Context *cont + { + struct rt_sigframe { + int sig; +- struct siginfo *pinfo; ++ siginfo_t *pinfo; + void *puc; +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. diff --git a/lang/gcc45/patches/patch-gcc_config_i386_mmx.md b/lang/gcc45/patches/patch-gcc_config_i386_mmx.md new file mode 100644 index 000000000..9dc30bc30 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_mmx.md @@ -0,0 +1,31 @@ +$NetBSD$ + +--- gcc/config/i386/mmx.md.orig Wed Dec 30 11:07:12 2009 ++++ gcc/config/i386/mmx.md +@@ -63,6 +63,7 @@ + DONE; + }) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*mov_internal_rex64" + [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand" + "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,Yi") +@@ -81,8 +82,8 @@ + %vpxor\t%0, %d0 + %vmovq\t{%1, %0|%0, %1} + %vmovq\t{%1, %0|%0, %1} +- %vmovq\t{%1, %0|%0, %1} +- %vmovq\t{%1, %0|%0, %1}" ++ %vmovd\t{%1, %0|%0, %1} ++ %vmovd\t{%1, %0|%0, %1}" + [(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,ssemov") + (set_attr "unit" "*,*,*,*,*,mmx,mmx,*,*,*,*,*") + (set_attr "prefix_rep" "*,*,*,*,*,1,1,*,1,*,*,*") +@@ -192,6 +193,7 @@ + (const_string "orig"))) + (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*movv2sf_internal_rex64" + [(set (match_operand:V2SF 0 "nonimmediate_operand" + "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,Yi") diff --git a/lang/gcc45/patches/patch-gcc_config_i386_netbsd-elf.h b/lang/gcc45/patches/patch-gcc_config_i386_netbsd-elf.h new file mode 100644 index 000000000..a60e2dab0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_netbsd-elf.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/config/i386/netbsd-elf.h.orig Thu Aug 2 10:49:31 2007 ++++ gcc/config/i386/netbsd-elf.h +@@ -122,3 +122,7 @@ along with GCC; see the file COPYING3. If not see + #define ENABLE_EXECUTE_STACK NETBSD_ENABLE_EXECUTE_STACK + + #define TARGET_VERSION fprintf (stderr, " (NetBSD/i386 ELF)"); ++ ++/* Preserve i386 psABI */ ++#undef PREFERRED_STACK_BOUNDARY_DEFAULT ++#define PREFERRED_STACK_BOUNDARY_DEFAULT MIN_STACK_BOUNDARY diff --git a/lang/gcc45/patches/patch-gcc_config_i386_netbsd64.h b/lang/gcc45/patches/patch-gcc_config_i386_netbsd64.h new file mode 100644 index 000000000..2198dcc70 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_netbsd64.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/config/i386/netbsd64.h.orig Thu Aug 2 10:49:31 2007 ++++ gcc/config/i386/netbsd64.h +@@ -70,3 +70,7 @@ along with GCC; see the file COPYING3. If not see + #define ENABLE_EXECUTE_STACK NETBSD_ENABLE_EXECUTE_STACK + + #define TARGET_VERSION fprintf (stderr, " (NetBSD/x86_64 ELF)"); ++ ++/* Preserve i386 psABI */ ++#undef PREFERRED_STACK_BOUNDARY_DEFAULT ++#define PREFERRED_STACK_BOUNDARY_DEFAULT MIN_STACK_BOUNDARY diff --git a/lang/gcc45/patches/patch-gcc_config_i386_sse.md b/lang/gcc45/patches/patch-gcc_config_i386_sse.md new file mode 100644 index 000000000..ba8e5bb92 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_sse.md @@ -0,0 +1,282 @@ +$NetBSD$ + +--- gcc/config/i386/sse.md.orig Sat Apr 16 07:53:39 2011 ++++ gcc/config/i386/sse.md +@@ -354,18 +354,7 @@ + DONE; + }) + +-(define_expand "avx_movup" +- [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "") +- (unspec:AVXMODEF2P +- [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")] +- UNSPEC_MOVU))] +- "AVX_VEC_FLOAT_MODE_P (mode)" +-{ +- if (MEM_P (operands[0]) && MEM_P (operands[1])) +- operands[1] = force_reg (mode, operands[1]); +-}) +- +-(define_insn "*avx_movup" ++(define_insn "avx_movup" + [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m") + (unspec:AVXMODEF2P + [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")] +@@ -391,18 +380,7 @@ + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) + +-(define_expand "_movup" +- [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "") +- (unspec:SSEMODEF2P +- [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")] +- UNSPEC_MOVU))] +- "SSE_VEC_FLOAT_MODE_P (mode)" +-{ +- if (MEM_P (operands[0]) && MEM_P (operands[1])) +- operands[1] = force_reg (mode, operands[1]); +-}) +- +-(define_insn "*_movup" ++(define_insn "_movup" + [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m") + (unspec:SSEMODEF2P + [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")] +@@ -414,18 +392,7 @@ + (set_attr "movu" "1") + (set_attr "mode" "")]) + +-(define_expand "avx_movdqu" +- [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "") +- (unspec:AVXMODEQI +- [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")] +- UNSPEC_MOVU))] +- "TARGET_AVX" +-{ +- if (MEM_P (operands[0]) && MEM_P (operands[1])) +- operands[1] = force_reg (mode, operands[1]); +-}) +- +-(define_insn "*avx_movdqu" ++(define_insn "avx_movdqu" + [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m") + (unspec:AVXMODEQI + [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")] +@@ -437,17 +404,7 @@ + (set_attr "prefix" "vex") + (set_attr "mode" "")]) + +-(define_expand "sse2_movdqu" +- [(set (match_operand:V16QI 0 "nonimmediate_operand" "") +- (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")] +- UNSPEC_MOVU))] +- "TARGET_SSE2" +-{ +- if (MEM_P (operands[0]) && MEM_P (operands[1])) +- operands[1] = force_reg (V16QImode, operands[1]); +-}) +- +-(define_insn "*sse2_movdqu" ++(define_insn "sse2_movdqu" + [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m") + (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")] + UNSPEC_MOVU))] +@@ -1268,15 +1225,15 @@ + (parallel [(const_int 0)])) + (vec_select:DF (match_dup 1) (parallel [(const_int 1)]))) + (plusminus:DF +- (vec_select:DF (match_dup 1) (parallel [(const_int 2)])) +- (vec_select:DF (match_dup 1) (parallel [(const_int 3)])))) +- (vec_concat:V2DF +- (plusminus:DF + (vec_select:DF + (match_operand:V4DF 2 "nonimmediate_operand" "xm") + (parallel [(const_int 0)])) +- (vec_select:DF (match_dup 2) (parallel [(const_int 1)]))) ++ (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))) ++ (vec_concat:V2DF + (plusminus:DF ++ (vec_select:DF (match_dup 1) (parallel [(const_int 2)])) ++ (vec_select:DF (match_dup 1) (parallel [(const_int 3)]))) ++ (plusminus:DF + (vec_select:DF (match_dup 2) (parallel [(const_int 2)])) + (vec_select:DF (match_dup 2) (parallel [(const_int 3)]))))))] + "TARGET_AVX" +@@ -3904,7 +3861,7 @@ + "TARGET_SSE" + { + if (!TARGET_AVX) +- operands[1] = force_reg (V4SFmode, operands[1]); ++ operands[1] = force_reg (SFmode, operands[1]); + }) + + (define_insn "*vec_dupv4sf_avx" +@@ -4551,15 +4508,14 @@ + [(set (match_operand:V4DF 0 "register_operand" "=x,x") + (vec_select:V4DF + (vec_concat:V8DF +- (match_operand:V4DF 1 "nonimmediate_operand" "xm,x") +- (match_operand:V4DF 2 "nonimmediate_operand" " 1,xm")) ++ (match_operand:V4DF 1 "nonimmediate_operand" " x,m") ++ (match_operand:V4DF 2 "nonimmediate_operand" "xm,1")) + (parallel [(const_int 0) (const_int 4) + (const_int 2) (const_int 6)])))] +- "TARGET_AVX +- && (!MEM_P (operands[1]) || rtx_equal_p (operands[1], operands[2]))" ++ "TARGET_AVX" + "@ +- vmovddup\t{%1, %0|%0, %1} +- vunpcklpd\t{%2, %1, %0|%0, %1, %2}" ++ vunpcklpd\t{%2, %1, %0|%0, %1, %2} ++ vmovddup\t{%1, %0|%0, %1}" + [(set_attr "type" "sselog") + (set_attr "prefix" "vex") + (set_attr "mode" "V4DF")]) +@@ -4964,24 +4920,22 @@ + ;; Avoid combining registers from different units in a single alternative, + ;; see comment above inline_secondary_memory_needed function in i386.c + (define_insn "sse2_loadhpd" +- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,o,o,o") ++ [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,o,o,o") + (vec_concat:V2DF + (vec_select:DF +- (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,x,0,0,0") ++ (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,0,0,0") + (parallel [(const_int 0)])) +- (match_operand:DF 2 "nonimmediate_operand" " m,x,0,x,*f,r")))] ++ (match_operand:DF 2 "nonimmediate_operand" " m,x,x,*f,r")))] + "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "@ + movhpd\t{%2, %0|%0, %2} + unpcklpd\t{%2, %0|%0, %2} +- shufpd\t{$1, %1, %0|%0, %1, 1} + # + # + #" +- [(set_attr "type" "ssemov,sselog,sselog,ssemov,fmov,imov") +- (set_attr "prefix_data16" "1,*,*,*,*,*") +- (set_attr "length_immediate" "*,*,1,*,*,*") +- (set_attr "mode" "V1DF,V2DF,V2DF,DF,DF,DF")]) ++ [(set_attr "type" "ssemov,sselog,ssemov,fmov,imov") ++ (set_attr "prefix_data16" "1,*,*,*,*") ++ (set_attr "mode" "V1DF,V2DF,DF,DF,DF")]) + + (define_split + [(set (match_operand:V2DF 0 "memory_operand" "") +@@ -5137,6 +5091,16 @@ + (set_attr "length_immediate" "*,*,*,1,*,*") + (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")]) + ++(define_expand "vec_dupv2df" ++ [(set (match_operand:V2DF 0 "register_operand" "") ++ (vec_duplicate:V2DF ++ (match_operand:DF 1 "nonimmediate_operand" "")))] ++ "TARGET_SSE2" ++{ ++ if (!TARGET_SSE3) ++ operands[1] = force_reg (DFmode, operands[1]); ++}) ++ + (define_insn "*vec_dupv2df_sse3" + [(set (match_operand:V2DF 0 "register_operand" "=x") + (vec_duplicate:V2DF +@@ -5147,7 +5111,7 @@ + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "DF")]) + +-(define_insn "vec_dupv2df" ++(define_insn "*vec_dupv2df" + [(set (match_operand:V2DF 0 "register_operand" "=x") + (vec_duplicate:V2DF + (match_operand:DF 1 "register_operand" "0")))] +@@ -7473,9 +7437,8 @@ + "@ + # + # +- %vmov{q}\t{%1, %0|%0, %1}" ++ mov{q}\t{%1, %0|%0, %1}" + [(set_attr "type" "*,*,imov") +- (set_attr "prefix" "*,*,maybe_vex") + (set_attr "mode" "*,*,DI")]) + + (define_insn "*sse2_storeq" +@@ -7513,11 +7476,11 @@ + vmovhps\t{%1, %0|%0, %1} + vpsrldq\t{$8, %1, %0|%0, %1, 8} + vmovq\t{%H1, %0|%0, %H1} +- vmov{q}\t{%H1, %0|%0, %H1}" ++ mov{q}\t{%H1, %0|%0, %H1}" + [(set_attr "type" "ssemov,sseishft1,ssemov,imov") + (set_attr "length_immediate" "*,1,*,*") + (set_attr "memory" "*,none,*,*") +- (set_attr "prefix" "vex") ++ (set_attr "prefix" "vex,vex,vex,orig") + (set_attr "mode" "V2SF,TI,TI,DI")]) + + (define_insn "*vec_extractv2di_1_rex64" +@@ -7795,6 +7758,7 @@ + (const_string "vex"))) + (set_attr "mode" "TI,TI,TI,TI,TI,V2SF")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*vec_concatv2di_rex64_sse4_1" + [(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x") + (vec_concat:V2DI +@@ -7804,7 +7768,7 @@ + "@ + pinsrq\t{$0x1, %2, %0|%0, %2, 0x1} + movq\t{%1, %0|%0, %1} +- movq\t{%1, %0|%0, %1} ++ movd\t{%1, %0|%0, %1} + movq2dq\t{%1, %0|%0, %1} + punpcklqdq\t{%2, %0|%0, %2} + movlhps\t{%2, %0|%0, %2} +@@ -7815,6 +7779,7 @@ + (set_attr "length_immediate" "1,*,*,*,*,*,*") + (set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*vec_concatv2di_rex64_sse" + [(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x") + (vec_concat:V2DI +@@ -7823,7 +7788,7 @@ + "TARGET_64BIT && TARGET_SSE" + "@ + movq\t{%1, %0|%0, %1} +- movq\t{%1, %0|%0, %1} ++ movd\t{%1, %0|%0, %1} + movq2dq\t{%1, %0|%0, %1} + punpcklqdq\t{%2, %0|%0, %2} + movlhps\t{%2, %0|%0, %2} +@@ -10576,8 +10541,8 @@ + [(set (match_operand:SSEMODE 0 "register_operand" "=x,x") + (if_then_else:SSEMODE + (match_operand:SSEMODE 3 "nonimmediate_operand" "x,m") +- (match_operand:SSEMODE 1 "vector_move_operand" "x,x") +- (match_operand:SSEMODE 2 "vector_move_operand" "xm,x")))] ++ (match_operand:SSEMODE 1 "register_operand" "x,x") ++ (match_operand:SSEMODE 2 "nonimmediate_operand" "xm,x")))] + "TARGET_XOP" + "vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg")]) +@@ -10586,8 +10551,8 @@ + [(set (match_operand:AVX256MODE 0 "register_operand" "=x,x") + (if_then_else:AVX256MODE + (match_operand:AVX256MODE 3 "nonimmediate_operand" "x,m") +- (match_operand:AVX256MODE 1 "vector_move_operand" "x,x") +- (match_operand:AVX256MODE 2 "vector_move_operand" "xm,x")))] ++ (match_operand:AVX256MODE 1 "register_operand" "x,x") ++ (match_operand:AVX256MODE 2 "nonimmediate_operand" "xm,x")))] + "TARGET_XOP" + "vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg")]) +@@ -12136,8 +12101,7 @@ + [(set (match_operand:AVXMODEF2P 0 "register_operand" "=x") + (unspec:AVXMODEF2P + [(match_operand:AVXMODEF2P 1 "memory_operand" "m") +- (match_operand: 2 "register_operand" "x") +- (match_dup 0)] ++ (match_operand: 2 "register_operand" "x")] + UNSPEC_MASKLOAD))] + "TARGET_AVX" + "vmaskmovp\t{%1, %2, %0|%0, %2, %1}" diff --git a/lang/gcc45/patches/patch-gcc_config_i386_t-netbsd64 b/lang/gcc45/patches/patch-gcc_config_i386_t-netbsd64 new file mode 100644 index 000000000..eac8004c3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_t-netbsd64 @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/config/i386/t-netbsd64.orig Wed May 21 19:48:54 2014 ++++ gcc/config/i386/t-netbsd64 +@@ -0,0 +1,15 @@ ++# NetBSD has (will have) "non-native" libraries in /usr/lib/. ++# For NetBSD/amd64 we thus have /usr/lib and /usr/lib/i386. ++ ++MULTILIB_OPTIONS = m64/m32 ++MULTILIB_DIRNAMES = 64 32 ++MULTILIB_OSDIRNAMES = . ../lib/i386 ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib ++ ++# The pushl in CTOR initialization interferes with frame pointer elimination. ++# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, ++# because then __FRAME_END__ might not be the last thing in .eh_frame ++# section. ++CRTSTUFF_T_CFLAGS += -fno-omit-frame-pointer -fno-asynchronous-unwind-tables diff --git a/lang/gcc45/patches/patch-gcc_config_i386_winnt-cxx.c b/lang/gcc45/patches/patch-gcc_config_i386_winnt-cxx.c new file mode 100644 index 000000000..e5de97c38 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_i386_winnt-cxx.c @@ -0,0 +1,25 @@ +$NetBSD$ + +--- gcc/config/i386/winnt-cxx.c.orig Wed Oct 7 02:57:21 2009 ++++ gcc/config/i386/winnt-cxx.c +@@ -101,6 +101,20 @@ i386_pe_adjust_class_at_definition (tree t) + + if (lookup_attribute ("dllexport", TYPE_ATTRIBUTES (t)) != NULL_TREE) + { ++ tree tmv = TYPE_MAIN_VARIANT (t); ++ ++ /* Make sure that we set dllexport attribute to typeinfo's ++ base declaration, as otherwise it would fail to be exported as ++ it isn't a class-member. */ ++ if (tmv != NULL_TREE ++ && CLASSTYPE_TYPEINFO_VAR (tmv) != NULL_TREE) ++ { ++ tree na, ti_decl = CLASSTYPE_TYPEINFO_VAR (tmv); ++ na = tree_cons (get_identifier ("dllexport"), NULL_TREE, ++ NULL_TREE); ++ decl_attributes (&ti_decl, na, 0); ++ } ++ + /* Check static VAR_DECL's. */ + for (member = TYPE_FIELDS (t); member; member = TREE_CHAIN (member)) + if (TREE_CODE (member) == VAR_DECL) diff --git a/lang/gcc45/patches/patch-gcc_config_ia64_fde-glibc.c b/lang/gcc45/patches/patch-gcc_config_ia64_fde-glibc.c new file mode 100644 index 000000000..5466a6012 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_ia64_fde-glibc.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/config/ia64/fde-glibc.c.orig Fri Aug 14 20:56:31 2009 ++++ gcc/config/ia64/fde-glibc.c +@@ -34,9 +34,11 @@ + #include + #include "unwind-ia64.h" + ++#if !defined(__NetBSD__) + #if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) \ + || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && !defined(DT_CONFIG)) + # error You need GLIBC 2.2.4 or later on IA-64 Linux ++#endif + #endif + + struct unw_ia64_callback_data diff --git a/lang/gcc45/patches/patch-gcc_config_ia64_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_ia64_linux-unwind.h new file mode 100644 index 000000000..ad4f23eaf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_ia64_linux-unwind.h @@ -0,0 +1,29 @@ +$NetBSD$ + +--- gcc/config/ia64/linux-unwind.h.orig Fri Aug 14 20:49:40 2009 ++++ gcc/config/ia64/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for IA64 Linux. +- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -47,7 +47,7 @@ ia64_fallback_frame_state (struct _Unwind_Context *con + struct sigframe { + char scratch[16]; + unsigned long sig_number; +- struct siginfo *info; ++ siginfo_t *info; + struct sigcontext *sc; + } *frame_ = (struct sigframe *)context->psp; + struct sigcontext *sc = frame_->sc; +@@ -137,7 +137,7 @@ ia64_handle_unwabi (struct _Unwind_Context *context, _ + struct sigframe { + char scratch[16]; + unsigned long sig_number; +- struct siginfo *info; ++ siginfo_t *info; + struct sigcontext *sc; + } *frame = (struct sigframe *)context->psp; + struct sigcontext *sc = frame->sc; diff --git a/lang/gcc45/patches/patch-gcc_config_ia64_netbsd.h b/lang/gcc45/patches/patch-gcc_config_ia64_netbsd.h new file mode 100644 index 000000000..5aada7bc4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_ia64_netbsd.h @@ -0,0 +1,66 @@ +$NetBSD$ + +--- gcc/config/ia64/netbsd.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/ia64/netbsd.h +@@ -0,0 +1,61 @@ ++/* Definitions of target machine for GNU compiler, ++ for ia64/ELF NetBSD systems. ++ Copyright (C) 2005 Free Software Foundation, Inc. ++ ++This file is part of GNU CC. ++ ++GNU CC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GNU CC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GNU CC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ NETBSD_OS_CPP_BUILTINS_ELF(); \ ++ } \ ++ while (0) ++ ++ ++/* Extra specs needed for NetBSD/ia-64 ELF. */ ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \ ++ { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \ ++ { "netbsd_entry_point", NETBSD_ENTRY_POINT }, ++ ++ ++/* Provide a LINK_SPEC appropriate for a NetBSD/ia64 ELF target. */ ++ ++#undef LINK_SPEC ++#define LINK_SPEC "%(netbsd_link_spec)" ++ ++#define NETBSD_ENTRY_POINT "_start" ++ ++ ++/* Provide a CPP_SPEC appropriate for NetBSD. */ ++ ++#undef CPP_SPEC ++#define CPP_SPEC "%(netbsd_cpp_spec)" ++ ++ ++/* Attempt to enable execute permissions on the stack. */ ++#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK ++ ++/* Make sure _enable_execute_stack() isn't the empty function in libgcc2.c. ++ It gets defined in _trampoline.o via NETBSD_ENABLE_EXECUTE_STACK. */ ++#undef ENABLE_EXECUTE_STACK ++#define ENABLE_EXECUTE_STACK ++ ++#define TARGET_VERSION fprintf (stderr, " (NetBSD/ia64 ELF)"); diff --git a/lang/gcc45/patches/patch-gcc_config_lm32_t-lm32 b/lang/gcc45/patches/patch-gcc_config_lm32_t-lm32 new file mode 100644 index 000000000..611bacebc --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_lm32_t-lm32 @@ -0,0 +1,8 @@ +$NetBSD$ + +--- gcc/config/lm32/t-lm32.orig Tue Mar 30 10:26:24 2010 ++++ gcc/config/lm32/t-lm32 +@@ -1,2 +1,2 @@ + # for multilib +-MULTILIB_OPTIONS = mmultiply-enabled mbarrel-shift-enabled ++MULTILIB_OPTIONS = mbarrel-shift-enabled mmultiply-enabled mdivide-enabled msign-extend-enabled diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_constraints.md b/lang/gcc45/patches/patch-gcc_config_m68k_constraints.md new file mode 100644 index 000000000..8849d15b6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_constraints.md @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/config/m68k/constraints.md.orig Mon May 18 07:54:44 2009 ++++ gcc/config/m68k/constraints.md +@@ -94,7 +94,8 @@ + (define_constraint "T" + "Used for operands that satisfy 's' when -mpcrel is not in effect." + (and (match_code "symbol_ref,label_ref,const") +- (match_test "!flag_pic"))) ++ (match_test "!TARGET_PCREL") ++ (match_test "!flag_pic || LEGITIMATE_PIC_OPERAND_P (op)"))) + + (define_memory_constraint "Q" + "Means address register indirect addressing mode." diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_fpgnulib.c b/lang/gcc45/patches/patch-gcc_config_m68k_fpgnulib.c new file mode 100644 index 000000000..5ee5da538 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_fpgnulib.c @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/config/m68k/fpgnulib.c.orig Thu Jan 18 19:49:59 2007 ++++ gcc/config/m68k/fpgnulib.c +@@ -549,6 +549,7 @@ __negxf2 (long double x1) + return - (double) x1; + } + ++long __cmpdf2 (double, double); + long + __cmpxf2 (long double x1, long double x2) + { diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_lb1sf68.asm b/lang/gcc45/patches/patch-gcc_config_m68k_lb1sf68.asm new file mode 100644 index 000000000..74b7149e1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_lb1sf68.asm @@ -0,0 +1,26 @@ +$NetBSD$ + +--- gcc/config/m68k/lb1sf68.asm.orig Fri Oct 2 11:20:51 2009 ++++ gcc/config/m68k/lb1sf68.asm +@@ -202,6 +202,8 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + #if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) + lea \addr-.-8,a0 + jsr pc@(a0) ++#elif defined(__NetBSD__) ++ jbsr \addr@PLTPC + #else + jbsr \addr + #endif +@@ -211,9 +213,11 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + /* ISA C has no bra.l instruction, and since this assembly file + gets assembled into multiple object files, we avoid the + bra instruction entirely. */ +-#if defined (__mcoldfire__) && !defined (__mcfisab__) ++#if (defined (__mcoldfire__) && !defined (__mcfisab__)) + lea \addr-.-8,a0 + jmp pc@(a0) ++#elif defined(__NetBSD__) ++ bra \addr@PLTPC + #else + bra \addr + #endif diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_m68k.md b/lang/gcc45/patches/patch-gcc_config_m68k_m68k.md new file mode 100644 index 000000000..ff6696a37 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_m68k.md @@ -0,0 +1,76 @@ +$NetBSD$ + +--- gcc/config/m68k/m68k.md.orig Wed Dec 30 23:03:46 2009 ++++ gcc/config/m68k/m68k.md +@@ -3116,16 +3116,33 @@ + ;; We need a separate DEFINE_EXPAND for u?mulsidi3 to be able to use the + ;; proper matching constraint. This is because the matching is between + ;; the high-numbered word of the DImode operand[0] and operand[1]. ++;; ++;; Note: life_analysis() does not keep track of the individual halves of the ++;; DImode register. To prevent spurious liveness before the u?mulsidi3 insn ++;; (which causes "uninitialized variable" warnings), we explicitly clobber ++;; the DImode register. + (define_expand "umulsidi3" +- [(parallel +- [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 4) +- (mult:SI (match_operand:SI 1 "register_operand" "") +- (match_operand:SI 2 "register_operand" ""))) ++ [(set (match_operand:DI 0 "register_operand" "") ++ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "")) ++ (zero_extend:DI (match_operand:SI 2 "register_operand" ""))))] ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ "") ++ ++(define_insn_and_split "*umulsidi3_split" ++ [(set (match_operand:DI 0 "register_operand" "") ++ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "")) ++ (zero_extend:DI (match_operand:SI 2 "register_operand" ""))))] ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ "#" ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ [(clobber (match_dup 0)) ++ (parallel ++ [(set (subreg:SI (match_dup 0) 4) ++ (mult:SI (match_dup 1) (match_dup 2))) + (set (subreg:SI (match_dup 0) 0) + (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1)) + (zero_extend:DI (match_dup 2))) + (const_int 32))))])] +- "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" + "") + + (define_insn "" +@@ -3156,15 +3173,27 @@ + "mulu%.l %2,%3:%0") + + (define_expand "mulsidi3" +- [(parallel +- [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 4) +- (mult:SI (match_operand:SI 1 "register_operand" "") +- (match_operand:SI 2 "register_operand" ""))) ++ [(set (match_operand:DI 0 "register_operand" "") ++ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "")) ++ (sign_extend:DI (match_operand:SI 2 "register_operand" ""))))] ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ "") ++ ++(define_insn_and_split "*mulsidi3_split" ++ [(set (match_operand:DI 0 "register_operand" "") ++ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "")) ++ (sign_extend:DI (match_operand:SI 2 "register_operand" ""))))] ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ "#" ++ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" ++ [(clobber (match_dup 0)) ++ (parallel ++ [(set (subreg:SI (match_dup 0) 4) ++ (mult:SI (match_dup 1) (match_dup 2))) + (set (subreg:SI (match_dup 0) 0) + (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1)) + (sign_extend:DI (match_dup 2))) + (const_int 32))))])] +- "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" + "") + + (define_insn "" diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_netbsd-elf.h b/lang/gcc45/patches/patch-gcc_config_m68k_netbsd-elf.h new file mode 100644 index 000000000..896d87b4b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_netbsd-elf.h @@ -0,0 +1,110 @@ +$NetBSD$ + +--- gcc/config/m68k/netbsd-elf.h.orig Tue Sep 22 15:49:54 2009 ++++ gcc/config/m68k/netbsd-elf.h +@@ -35,28 +35,39 @@ along with GCC; see the file COPYING3. If not see + } \ + while (0) + +-/* Don't try using XFmode on the 68010. */ ++/* Don't try using XFmode on the 68010 or coldfire. */ + #undef LONG_DOUBLE_TYPE_SIZE + #define LONG_DOUBLE_TYPE_SIZE (TARGET_68020 ? 80 : 64) + + #undef LIBGCC2_LONG_DOUBLE_TYPE_SIZE +-#ifdef __mc68010__ ++#if defined(__mc68010__) || defined(__mcoldfire__) + #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 + #else + #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80 + #endif + ++#undef SUBTARGET_OVERRIDE_OPTIONS ++#define SUBTARGET_OVERRIDE_OPTIONS \ ++ { \ ++ if (TARGET_COLDFIRE) \ ++ { \ ++ target_flags |= MASK_STRICT_ALIGNMENT | MASK_CF_HWDIV; \ ++ if ((target_flags_explicit & MASK_HARD_FLOAT) == 0) \ ++ { \ ++ target_flags &= ~MASK_HARD_FLOAT; \ ++ m68k_fpu = FPUTYPE_NONE; \ ++ } \ ++ } \ ++ } ++ + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ ++ { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \ + { "netbsd_entry_point", NETBSD_ENTRY_POINT }, + + + #undef TARGET_VERSION +-#define TARGET_VERSION \ +- fprintf (stderr, \ +- TARGET_68010 \ +- ? " (NetBSD/68010 ELF)" \ +- : " (NetBSD/m68k ELF)"); ++#define TARGET_VERSION fprintf (stderr, " (NetBSD/m68k ELF)"); + + + /* Provide a CPP_SPEC appropriate for NetBSD m68k targets. Currently we +@@ -64,14 +75,20 @@ along with GCC; see the file COPYING3. If not see + whether or not use of the FPU is allowed. */ + + #undef CPP_SPEC +-#define CPP_SPEC NETBSD_CPP_SPEC ++#define CPP_SPEC \ ++ "%(netbsd_cpp_spec)" + + + /* Provide an ASM_SPEC appropriate for NetBSD m68k ELF targets. We need + to pass PIC code generation options. */ + + #undef ASM_SPEC +-#define ASM_SPEC "%(asm_cpu_spec) %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}" ++#define ASM_SPEC \ ++ "%(asm_default_spec) \ ++ %{m68010} %{m68020} %{m68030} %{m68040} %{m68060} \ ++ %{m5200} %{m5206e} %{m528x} %{m5307} %{m5407} %{mcfv4e}\ ++ %{mcpu=*:-mcpu=%*} %{march=*:-march=%*}\ ++ %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}" + + #define AS_NEEDS_DASH_FOR_PIPED_INPUT + +@@ -80,6 +97,11 @@ along with GCC; see the file COPYING3. If not see + #undef LINK_SPEC + #define LINK_SPEC NETBSD_LINK_SPEC_ELF + ++/* NetBSD/sun2 does not support shlibs, avoid using libgcc_pic. */ ++#if TARGET_DEFAULT_CPU == 0 ++#undef REAL_LIBGCC_SPEC ++#endif ++ + #define NETBSD_ENTRY_POINT "_start" + + /* Output assembler code to FILE to increment profiler label # LABELNO +@@ -89,7 +111,13 @@ along with GCC; see the file COPYING3. If not see + #define FUNCTION_PROFILER(FILE, LABELNO) \ + do \ + { \ +- asm_fprintf (FILE, "\tlea (%LLP%d,%Rpc),%Ra1\n", (LABELNO)); \ ++ if (TARGET_COLDFIRE) \ ++ { \ ++ asm_fprintf (FILE, "\tmovea.l #%LLP%d-.,%Ra1\n", (LABELNO)); \ ++ asm_fprintf (FILE, "\tlea (-6,%Rpc,%Ra1),%Ra1\n", (LABELNO)); \ ++ } \ ++ else \ ++ asm_fprintf (FILE, "\tlea (%LLP%d,%Rpc),%Ra1\n", (LABELNO)); \ + if (flag_pic) \ + fprintf (FILE, "\tbsr.l __mcount@PLTPC\n"); \ + else \ +@@ -289,6 +317,8 @@ while (0) + + #undef STACK_BOUNDARY + #define STACK_BOUNDARY 32 ++#undef PREFERRED_STACK_BOUNDARY ++#define PREFERRED_STACK_BOUNDARY 32 + + + /* Alignment of field after `int : 0' in a structure. diff --git a/lang/gcc45/patches/patch-gcc_config_m68k_t-m68010-netbsd b/lang/gcc45/patches/patch-gcc_config_m68k_t-m68010-netbsd new file mode 100644 index 000000000..56b497635 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_m68k_t-m68010-netbsd @@ -0,0 +1,9 @@ +$NetBSD$ + +--- gcc/config/m68k/t-m68010-netbsd.orig Wed May 21 19:48:54 2014 ++++ gcc/config/m68k/t-m68010-netbsd +@@ -0,0 +1,4 @@ ++# Use unwind-dw2-fde-glibc ++LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ ++ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c ++LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c diff --git a/lang/gcc45/patches/patch-gcc_config_mips_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_mips_linux-unwind.h new file mode 100644 index 000000000..1d0c17ed6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_linux-unwind.h @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/config/mips/linux-unwind.h.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/mips/linux-unwind.h +@@ -1,5 +1,6 @@ + /* DWARF2 EH unwinding support for MIPS Linux. +- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software ++ Foundation, Inc. + + This file is part of GCC. + +@@ -75,7 +76,7 @@ mips_fallback_frame_state (struct _Unwind_Context *con + struct rt_sigframe { + u_int32_t ass[4]; /* Argument save space for o32. */ + u_int32_t trampoline[2]; +- struct siginfo info; ++ siginfo_t info; + _sig_ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; diff --git a/lang/gcc45/patches/patch-gcc_config_mips_mips.c b/lang/gcc45/patches/patch-gcc_config_mips_mips.c new file mode 100644 index 000000000..1dbc2b49f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_mips.c @@ -0,0 +1,121 @@ +$NetBSD$ + +--- gcc/config/mips/mips.c.orig Sun Nov 21 10:38:43 2010 ++++ gcc/config/mips/mips.c +@@ -1162,7 +1162,7 @@ static const struct mips_rtx_cost_data mips_rtx_cost_d + } + }; + +-static rtx mips_find_pic_call_symbol (rtx, rtx); ++static rtx mips_find_pic_call_symbol (rtx, rtx, bool); + + /* This hash table keeps track of implicit "mips16" and "nomips16" attributes + for -mflip_mips16. It maps decl names onto a boolean mode setting. */ +@@ -9007,6 +9007,11 @@ mips_interrupt_extra_call_saved_reg_p (unsigned int re + static bool + mips_cfun_call_saved_reg_p (unsigned int regno) + { ++ /* If the user makes an ordinarily-call-saved register global, ++ that register is no longer call-saved. */ ++ if (global_regs[regno]) ++ return false; ++ + /* Interrupt handlers need to save extra registers. */ + if (cfun->machine->interrupt_handler_p + && mips_interrupt_extra_call_saved_reg_p (regno)) +@@ -14040,12 +14045,16 @@ mips_call_expr_from_insn (rtx insn, rtx *second_call) + } + + /* REG is set in DEF. See if the definition is one of the ways we load a +- register with a symbol address for a mips_use_pic_fn_addr_reg_p call. If +- it is return the symbol reference of the function, otherwise return +- NULL_RTX. */ ++ register with a symbol address for a mips_use_pic_fn_addr_reg_p call. ++ If it is, return the symbol reference of the function, otherwise return ++ NULL_RTX. + ++ If RECURSE_P is true, use mips_find_pic_call_symbol to interpret ++ the values of source registers, otherwise treat such registers as ++ having an unknown value. */ ++ + static rtx +-mips_pic_call_symbol_from_set (df_ref def, rtx reg) ++mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p) + { + rtx def_insn, set; + +@@ -14072,21 +14081,39 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg) + return symbol; + } + +- /* Follow simple register copies. */ +- if (REG_P (src)) +- return mips_find_pic_call_symbol (def_insn, src); ++ /* Follow at most one simple register copy. Such copies are ++ interesting in cases like: ++ ++ for (...) ++ { ++ locally_binding_fn (...); ++ } ++ ++ and: ++ ++ locally_binding_fn (...); ++ ... ++ locally_binding_fn (...); ++ ++ where the load of locally_binding_fn can legitimately be ++ hoisted or shared. However, we do not expect to see complex ++ chains of copies, so a full worklist solution to the problem ++ would probably be overkill. */ ++ if (recurse_p && REG_P (src)) ++ return mips_find_pic_call_symbol (def_insn, src, false); + } + + return NULL_RTX; + } + +-/* Find the definition of the use of REG in INSN. See if the definition is +- one of the ways we load a register with a symbol address for a +- mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference of +- the function, otherwise return NULL_RTX. */ ++/* Find the definition of the use of REG in INSN. See if the definition ++ is one of the ways we load a register with a symbol address for a ++ mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference ++ of the function, otherwise return NULL_RTX. RECURSE_P is as for ++ mips_pic_call_symbol_from_set. */ + + static rtx +-mips_find_pic_call_symbol (rtx insn, rtx reg) ++mips_find_pic_call_symbol (rtx insn, rtx reg, bool recurse_p) + { + df_ref use; + struct df_link *defs; +@@ -14098,7 +14125,7 @@ mips_find_pic_call_symbol (rtx insn, rtx reg) + defs = DF_REF_CHAIN (use); + if (!defs) + return NULL_RTX; +- symbol = mips_pic_call_symbol_from_set (defs->ref, reg); ++ symbol = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); + if (!symbol) + return NULL_RTX; + +@@ -14107,7 +14134,7 @@ mips_find_pic_call_symbol (rtx insn, rtx reg) + { + rtx other; + +- other = mips_pic_call_symbol_from_set (defs->ref, reg); ++ other = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); + if (!rtx_equal_p (symbol, other)) + return NULL_RTX; + } +@@ -14178,7 +14205,7 @@ mips_annotate_pic_calls (void) + if (!REG_P (reg)) + continue; + +- symbol = mips_find_pic_call_symbol (insn, reg); ++ symbol = mips_find_pic_call_symbol (insn, reg, true); + if (symbol) + { + mips_annotate_pic_call_expr (call, symbol); diff --git a/lang/gcc45/patches/patch-gcc_config_mips_mips.md b/lang/gcc45/patches/patch-gcc_config_mips_mips.md new file mode 100644 index 000000000..bffb65ba9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_mips.md @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/mips/mips.md.orig Fri Apr 2 19:54:46 2010 ++++ gcc/config/mips/mips.md +@@ -4806,7 +4806,7 @@ + ;; of _gp from the start of this function. Operand 1 is the incoming + ;; function address. + (define_insn_and_split "loadgp_newabi_" +- [(set (match_operand:P 0 "register_operand" "=d") ++ [(set (match_operand:P 0 "register_operand" "=&d") + (unspec:P [(match_operand:P 1) + (match_operand:P 2 "register_operand" "d")] + UNSPEC_LOADGP))] diff --git a/lang/gcc45/patches/patch-gcc_config_mips_netbsd.h b/lang/gcc45/patches/patch-gcc_config_mips_netbsd.h new file mode 100644 index 000000000..40a98081d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_netbsd.h @@ -0,0 +1,121 @@ +$NetBSD$ + +--- gcc/config/mips/netbsd.h.orig Thu Aug 2 10:49:31 2007 ++++ gcc/config/mips/netbsd.h +@@ -40,16 +40,63 @@ along with GCC; see the file COPYING3. If not see + if (TARGET_ABICALLS) \ + builtin_define ("__ABICALLS__"); \ + \ +- if (mips_abi == ABI_EABI) \ +- builtin_define ("__mips_eabi"); \ +- else if (mips_abi == ABI_N32) \ ++ /* The GNU C++ standard library requires this. */ \ ++ if (c_dialect_cxx ()) \ ++ builtin_define ("_GNU_SOURCE"); \ ++ \ ++ if (mips_abi == ABI_N32) \ ++ { \ + builtin_define ("__mips_n32"); \ ++ builtin_define ("_ABIN32=2"); \ ++ builtin_define ("_MIPS_SIM=_ABIN32"); \ ++ builtin_define ("_MIPS_SZLONG=32"); \ ++ builtin_define ("_MIPS_SZPTR=32"); \ ++ } \ + else if (mips_abi == ABI_64) \ ++ { \ + builtin_define ("__mips_n64"); \ ++ builtin_define ("_ABI64=3"); \ ++ builtin_define ("_MIPS_SIM=_ABI64"); \ ++ builtin_define ("_MIPS_SZLONG=64"); \ ++ builtin_define ("_MIPS_SZPTR=64"); \ ++ } \ + else if (mips_abi == ABI_O64) \ ++ { \ + builtin_define ("__mips_o64"); \ ++ builtin_define ("_ABIO64=4"); \ ++ builtin_define ("_MIPS_SIM=_ABIO64"); \ ++ builtin_define ("_MIPS_SZLONG=64"); \ ++ builtin_define ("_MIPS_SZPTR=64"); \ + } \ +- while (0) ++ else if (mips_abi == ABI_EABI) \ ++ { \ ++ builtin_define ("__mips_eabi"); \ ++ builtin_define ("_ABIEMB=5"); \ ++ builtin_define ("_MIPS_SIM=_ABIEMB"); \ ++ if (TARGET_LONG64) \ ++ builtin_define ("_MIPS_SZLONG=64"); \ ++ else \ ++ builtin_define ("_MIPS_SZLONG=32"); \ ++ if (TARGET_64BIT) \ ++ builtin_define ("_MIPS_SZPTR=64"); \ ++ else \ ++ builtin_define ("_MIPS_SZPTR=32"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("__mips_o32"); \ ++ builtin_define ("_ABIO32=1"); \ ++ builtin_define ("_MIPS_SIM=_ABIO32"); \ ++ builtin_define ("_MIPS_SZLONG=32"); \ ++ builtin_define ("_MIPS_SZPTR=32"); \ ++ } \ ++ if (TARGET_FLOAT64) \ ++ builtin_define ("_MIPS_FPSET=32"); \ ++ else \ ++ builtin_define ("_MIPS_FPSET=16"); \ ++ \ ++ builtin_define ("_MIPS_SZINT=32"); \ ++ } while (0) + + /* The generic MIPS TARGET_CPU_CPP_BUILTINS are incorrect for NetBSD. + Specifically, they define too many namespace-invasive macros. Override +@@ -105,6 +152,11 @@ along with GCC; see the file COPYING3. If not see + builtin_define ("__mips=64"); \ + builtin_define ("__mips_isa_rev=1"); \ + } \ ++ else if (ISA_MIPS64R2) \ ++ { \ ++ builtin_define ("__mips=64"); \ ++ builtin_define ("__mips_isa_rev=2"); \ ++ } \ + \ + if (TARGET_HARD_FLOAT) \ + builtin_define ("__mips_hard_float"); \ +@@ -148,10 +200,11 @@ along with GCC; see the file COPYING3. If not see + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{EL:-m elf32lmip} \ +- %{EB:-m elf32bmip} \ ++ "%{EL:-m elf32ltsmip} \ ++ %{EB:-m elf32btsmip} \ + %(endian_spec) \ +- %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \ ++ %{G*} %{mips1} %{mips2} %{mips3} %{mips4} \ ++ %{mips32} %{mips32r2} %{mips64} %{mips64r2} \ + %{bestGnum} %{call_shared} %{no_archive} %{exact_version} \ + %(netbsd_link_spec)" + +@@ -192,6 +245,14 @@ along with GCC; see the file COPYING3. If not see + + /* Make gcc agree with */ + ++#undef SIZE_TYPE ++#define SIZE_TYPE ((POINTER_SIZE == 64 || TARGET_NEWABI) \ ++ ? "long unsigned int" : "unsigned int") ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE ((POINTER_SIZE == 64 || TARGET_NEWABI) \ ++ ? "long int" : "int") ++ + #undef WCHAR_TYPE + #define WCHAR_TYPE "int" + +@@ -200,3 +261,6 @@ along with GCC; see the file COPYING3. If not see + + #undef WINT_TYPE + #define WINT_TYPE "int" ++ ++#undef TARGET_WRITABLE_EH_FRAME ++#define TARGET_WRITABLE_EH_FRAME (flag_pic && TARGET_SHARED) diff --git a/lang/gcc45/patches/patch-gcc_config_mips_netbsd64.h b/lang/gcc45/patches/patch-gcc_config_mips_netbsd64.h new file mode 100644 index 000000000..64dfc8872 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_netbsd64.h @@ -0,0 +1,59 @@ +$NetBSD$ + +--- gcc/config/mips/netbsd64.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/mips/netbsd64.h +@@ -0,0 +1,54 @@ ++/* Definitions of target machine for GNU compiler, for MIPS NetBSD systems. ++ Copyright (C) 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004 ++ Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++Boston, MA 02110-1301, USA. */ ++ ++/* Force the default endianness and ABI flags onto the command line ++ in order to make the other specs easier to write. */ ++ ++#undef DRIVER_SELF_SPECS ++#define DRIVER_SELF_SPECS \ ++ BASE_DRIVER_SELF_SPECS \ ++ "%{!EB:%{!EL:%(endian_spec)}}", \ ++ "%{!mabi=*: -mabi=n32}" ++ ++/* Define default target values. */ ++ ++#undef MACHINE_TYPE ++#if TARGET_ENDIAN_DEFAULT != 0 ++#define MACHINE_TYPE "NetBSD/mips64eb ELF" ++#else ++#define MACHINE_TYPE "NetBSD/mips64el ELF" ++#endif ++ ++/* Provide a LINK_SPEC appropriate for a NetBSD/mips target. ++ This is a copy of LINK_SPEC from tweaked for ++ the MIPS target. */ ++ ++#undef LINK_SPEC ++#define LINK_SPEC \ ++ "%{mabi=64:-m elf64%{EB:b}%{EL:l}tsmip} \ ++ %{mabi=32:-m elf32%{EB:b}%{EL:l}tsmip} \ ++ %{mabi=o64:-m elf64%{EB:b}%{EL:l}tsmip} \ ++ %{mabi=n32:-m elf32%{EB:b}%{EL:l}tsmipn32} \ ++ %(endian_spec) \ ++ %{G*} %{mips1} %{mips2} %{mips3} %{mips4} \ ++ %{mips32} %{mips32r2} %{mips64} %{mips64r2} \ ++ %{bestGnum} %{call_shared} %{no_archive} %{exact_version} \ ++ %(netbsd_link_spec)" diff --git a/lang/gcc45/patches/patch-gcc_config_mips_t-netbsd64 b/lang/gcc45/patches/patch-gcc_config_mips_t-netbsd64 new file mode 100644 index 000000000..725d69ea0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_mips_t-netbsd64 @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/config/mips/t-netbsd64.orig Wed May 21 19:48:54 2014 ++++ gcc/config/mips/t-netbsd64 +@@ -0,0 +1,9 @@ ++# NetBSD has (will have) "non-native" libraries in /usr/lib/. ++# For NetBSD/mips64 we thus have /usr/lib (n32), /usr/lib/o32 and /usr/lib/64. ++ ++MULTILIB_OPTIONS = mabi=n32/mabi=64/mabi=32 ++MULTILIB_DIRNAMES = n32 n64 o32 ++MULTILIB_OSDIRNAMES = . ../lib/64 ../lib/o32 ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib diff --git a/lang/gcc45/patches/patch-gcc_config_netbsd-elf.h b/lang/gcc45/patches/patch-gcc_config_netbsd-elf.h new file mode 100644 index 000000000..4ae451912 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_netbsd-elf.h @@ -0,0 +1,50 @@ +$NetBSD$ + +--- gcc/config/netbsd-elf.h.orig Mon Sep 3 16:14:04 2007 ++++ gcc/config/netbsd-elf.h +@@ -52,8 +52,11 @@ along with GCC; see the file COPYING3. If not see + %{!p:crt0%O%s}}} \ + %:if-exists(crti%O%s) \ + %{static:%:if-exists-else(crtbeginT%O%s crtbegin%O%s)} \ +- %{!static: \ +- %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}}" ++ %{!static: \ ++ %{!shared: \ ++ %{!pie:crtbegin%O%s} \ ++ %{pie:crtbeginS%O%s}} \ ++ %{shared:crtbeginS%O%s}}" + + #undef STARTFILE_SPEC + #define STARTFILE_SPEC NETBSD_STARTFILE_SPEC +@@ -64,7 +67,10 @@ along with GCC; see the file COPYING3. If not see + C++ file-scope static objects deconstructed after exiting "main". */ + + #define NETBSD_ENDFILE_SPEC \ +- "%{!shared:crtend%O%s} %{shared:crtendS%O%s} \ ++ "%{!shared: \ ++ %{!pie:crtend%O%s} \ ++ %{pie:crtendS%O%s}} \ ++ %{shared:crtendS%O%s} \ + %:if-exists(crtn%O%s)" + + #undef ENDFILE_SPEC +@@ -82,6 +88,7 @@ along with GCC; see the file COPYING3. If not see + #define NETBSD_LINK_SPEC_ELF \ + "%{assert*} %{R*} %{rpath*} \ + %{shared:-shared} \ ++ %{symbolic:-Bsymbolic} \ + %{!shared: \ + -dc -dp \ + %{!nostdlib: \ +@@ -96,3 +103,11 @@ along with GCC; see the file COPYING3. If not see + #ifdef HAVE_LD_AS_NEEDED + #define USE_LD_AS_NEEDED 1 + #endif ++ ++#define MFLIB_SPEC " %{fmudflap: -export-dynamic -lmudflap \ ++ %{static:%(link_gcc_c_sequence) -lmudflap}} \ ++ %{fmudflapth: -export-dynamic -lmudflapth -lpthread \ ++ %{static:%(link_gcc_c_sequence) -lmudflapth}} " ++ ++#undef TARGET_UNWIND_TABLES_DEFAULT ++#define TARGET_UNWIND_TABLES_DEFAULT true diff --git a/lang/gcc45/patches/patch-gcc_config_netbsd.h b/lang/gcc45/patches/patch-gcc_config_netbsd.h new file mode 100644 index 000000000..5ff28c8d2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_netbsd.h @@ -0,0 +1,137 @@ +$NetBSD$ + +--- gcc/config/netbsd.h.orig Tue Sep 22 15:11:37 2009 ++++ gcc/config/netbsd.h +@@ -37,38 +37,64 @@ along with GCC; see the file COPYING3. If not see + + /* NETBSD_NATIVE is defined when gcc is integrated into the NetBSD + source tree so it can be configured appropriately without using +- the GNU configure/build mechanism. */ ++ the GNU configure/build mechanism. + +-#ifdef NETBSD_NATIVE ++ NETBSD_TOOLS is defined when gcc is built as cross-compiler for ++ the in-tree toolchain. ++ */ + ++#if defined(NETBSD_NATIVE) || defined(NETBSD_TOOLS) ++ + /* Look for the include files in the system-defined places. */ + + #undef GPLUSPLUS_INCLUDE_DIR + #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++" + ++#undef GPLUSPLUS_BACKWARD_INCLUDE_DIR ++#define GPLUSPLUS_BACKWARD_INCLUDE_DIR "/usr/include/g++/backward" ++ ++/* ++ * XXX figure out a better way to do this ++ */ + #undef GCC_INCLUDE_DIR +-#define GCC_INCLUDE_DIR "/usr/include" ++#define GCC_INCLUDE_DIR "/usr/include/gcc-4.5" + + #undef INCLUDE_DEFAULTS +-#define INCLUDE_DEFAULTS \ +- { \ +- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \ +- { GCC_INCLUDE_DIR, "GCC", 0, 0 }, \ +- { 0, 0, 0, 0 } \ ++#define INCLUDE_DEFAULTS \ ++ { \ ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1 }, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1 }, \ ++ { GCC_INCLUDE_DIR, "GCC", 0, 0, 1 }, \ ++ { "/usr/include", "GCC", 0, 0, 1 }, \ ++ { 0, 0, 0, 0 } \ + } + ++/* Under NetBSD, the normal location of the various *crt*.o files is the ++ /usr/lib directory. */ ++ ++#undef STANDARD_STARTFILE_PREFIX ++#define STANDARD_STARTFILE_PREFIX "/usr/lib/" ++#undef STANDARD_STARTFILE_PREFIX_1 ++#define STANDARD_STARTFILE_PREFIX_1 "/usr/lib/" ++ ++#endif /* NETBSD_NATIVE || NETBSD_TOOLS */ ++ ++#if defined(NETBSD_NATIVE) + /* Under NetBSD, the normal location of the compiler back ends is the + /usr/libexec directory. */ + + #undef STANDARD_EXEC_PREFIX + #define STANDARD_EXEC_PREFIX "/usr/libexec/" + +-/* Under NetBSD, the normal location of the various *crt*.o files is the +- /usr/lib directory. */ ++#undef TOOLDIR_BASE_PREFIX ++#define TOOLDIR_BASE_PREFIX "../" + +-#undef STANDARD_STARTFILE_PREFIX +-#define STANDARD_STARTFILE_PREFIX "/usr/lib/" ++#undef STANDARD_BINDIR_PREFIX ++#define STANDARD_BINDIR_PREFIX "/usr/bin" + ++#undef STANDARD_LIBEXEC_PREFIX ++#define STANDARD_LIBEXEC_PREFIX STANDARD_EXEC_PREFIX ++ + #endif /* NETBSD_NATIVE */ + + +@@ -97,6 +123,7 @@ along with GCC; see the file COPYING3. If not see + %{!pg:-lposix}} \ + %{p:-lposix_p} \ + %{pg:-lposix_p}} \ ++ %{shared:-lc} \ + %{!shared: \ + %{!symbolic: \ + %{!p: \ +@@ -110,6 +137,7 @@ along with GCC; see the file COPYING3. If not see + %{!pg:-lposix}} \ + %{p:-lposix_p} \ + %{pg:-lposix_p}} \ ++ %{shared:-lc} \ + %{!shared: \ + %{!symbolic: \ + %{!p: \ +@@ -121,24 +149,15 @@ along with GCC; see the file COPYING3. If not see + #undef LIB_SPEC + #define LIB_SPEC NETBSD_LIB_SPEC + +-/* Provide a LIBGCC_SPEC appropriate for NetBSD. We also want to exclude +- libgcc with -symbolic. */ ++/* Pass -cxx-isystem to cc1/cc1plus. */ ++#define NETBSD_CC1_AND_CC1PLUS_SPEC \ ++ "%{cxx-isystem}" + +-#ifdef NETBSD_NATIVE +-#define NETBSD_LIBGCC_SPEC \ +- "%{!symbolic: \ +- %{!shared: \ +- %{!p: \ +- %{!pg: -lgcc}}} \ +- %{shared: -lgcc_pic} \ +- %{p: -lgcc_p} \ +- %{pg: -lgcc_p}}" +-#else +-#define NETBSD_LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}" +-#endif ++#undef CC1_SPEC ++#define CC1_SPEC NETBSD_CC1_AND_CC1PLUS_SPEC + +-#undef LIBGCC_SPEC +-#define LIBGCC_SPEC NETBSD_LIBGCC_SPEC ++#undef CC1PLUS_SPEC ++#define CC1PLUS_SPEC NETBSD_CC1_AND_CC1PLUS_SPEC + + /* When building shared libraries, the initialization and finalization + functions for the library are .init and .fini respectively. */ +@@ -227,3 +246,7 @@ __enable_execute_stack (void *addr) \ + + /* Define this so we can compile MS code for use with WINE. */ + #define HANDLE_PRAGMA_PACK_PUSH_POP 1 ++ ++#if defined(HAVE_LD_EH_FRAME_HDR) ++#define LINK_EH_SPEC "--eh-frame-hdr " ++#endif diff --git a/lang/gcc45/patches/patch-gcc_config_pa_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_pa_linux-unwind.h new file mode 100644 index 000000000..2a1a403b3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_linux-unwind.h @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/config/pa/linux-unwind.h.orig Sat Dec 5 17:45:59 2009 ++++ gcc/config/pa/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for PA Linux. +- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -63,7 +63,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *con + int i; + struct sigcontext *sc; + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *frame; + diff --git a/lang/gcc45/patches/patch-gcc_config_pa_milli64.S b/lang/gcc45/patches/patch-gcc_config_pa_milli64.S new file mode 100644 index 000000000..14298f48e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_milli64.S @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/pa/milli64.S.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/pa/milli64.S +@@ -221,7 +221,7 @@ GSYM($$dyncall) + ldw 4(%r22),%r19 ; load new LTP value + ldw 0(%r22),%r22 ; load address of target + LSYM(1) +-#ifdef LINUX ++#if defined(LINUX) || defined(NETBSD) + bv %r0(%r22) ; branch to the real target + #else + ldsid (%sr0,%r22),%r1 ; get the "space ident" selected by r22 diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa-netbsd.h b/lang/gcc45/patches/patch-gcc_config_pa_pa-netbsd.h new file mode 100644 index 000000000..57712b4d2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa-netbsd.h @@ -0,0 +1,143 @@ +$NetBSD$ + +--- gcc/config/pa/pa-netbsd.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/pa/pa-netbsd.h +@@ -0,0 +1,138 @@ ++/* Definitions for PA_RISC with ELF format ++ Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ NETBSD_OS_CPP_BUILTINS_ELF(); \ ++ } \ ++ while (0) ++ ++#undef CPP_SPEC ++#define CPP_SPEC NETBSD_CPP_SPEC ++ ++#undef ASM_SPEC ++#define ASM_SPEC \ ++ "%{v:-V} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" ++ ++#undef EXTRA_SPECS ++#define EXTRA_SPECS \ ++ { "netbsd_entry_point", NETBSD_ENTRY_POINT }, ++ ++#define NETBSD_ENTRY_POINT "__start" ++ ++#undef LINK_SPEC ++#define LINK_SPEC NETBSD_LINK_SPEC_ELF ++ ++/* NetBSD profiling functions don't need gcc to allocate counters. */ ++#define NO_DEFERRED_PROFILE_COUNTERS 1 ++ ++/* Define the strings used for the special svr4 .type and .size directives. ++ These strings generally do not vary from one system running svr4 to ++ another, but if a given system (e.g. m88k running svr) needs to use ++ different pseudo-op names for these, they may be overridden in the ++ file which includes this one. */ ++ ++#undef STRING_ASM_OP ++#define STRING_ASM_OP "\t.stringz" ++ ++#define TEXT_SECTION_ASM_OP "\t.text" ++#define DATA_SECTION_ASM_OP "\t.data" ++#define BSS_SECTION_ASM_OP "\t.section\t.bss" ++ ++#define TARGET_ASM_FILE_START pa_linux_file_start ++ ++/* We want local labels to start with period if made with asm_fprintf. */ ++#undef LOCAL_LABEL_PREFIX ++#define LOCAL_LABEL_PREFIX "." ++ ++/* Define these to generate the Linux/ELF/SysV style of internal ++ labels all the time - i.e. to be compatible with ++ ASM_GENERATE_INTERNAL_LABEL in . Compare these with the ++ ones in pa.h and note the lack of dollar signs in these. FIXME: ++ shouldn't we fix pa.h to use ASM_GENERATE_INTERNAL_LABEL instead? */ ++ ++#undef ASM_OUTPUT_ADDR_VEC_ELT ++#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ ++ if (TARGET_BIG_SWITCH) \ ++ fprintf (FILE, "\t.word .L%d\n", VALUE); \ ++ else \ ++ fprintf (FILE, "\tb .L%d\n\tnop\n", VALUE) ++ ++#undef ASM_OUTPUT_ADDR_DIFF_ELT ++#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ ++ if (TARGET_BIG_SWITCH) \ ++ fprintf (FILE, "\t.word .L%d-.L%d\n", VALUE, REL); \ ++ else \ ++ fprintf (FILE, "\tb .L%d\n\tnop\n", VALUE) ++ ++/* Use the default. */ ++#undef ASM_OUTPUT_LABEL ++ ++/* NOTE: (*targetm.asm_out.internal_label)() is defined for us by elfos.h, and ++ does what we want (i.e. uses colons). It must be compatible with ++ ASM_GENERATE_INTERNAL_LABEL(), so do not define it here. */ ++ ++/* Use the default. */ ++#undef ASM_OUTPUT_INTERNAL_LABEL ++ ++/* Use the default. */ ++#undef TARGET_ASM_GLOBALIZE_LABEL ++/* Globalizing directive for a label. */ ++#define GLOBAL_ASM_OP ".globl " ++ ++/* FIXME: Hacked from the one so that we avoid multiple ++ labels in a function declaration (since pa.c seems determined to do ++ it differently) */ ++ ++#undef ASM_DECLARE_FUNCTION_NAME ++#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ ++ do \ ++ { \ ++ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \ ++ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \ ++ } \ ++ while (0) ++ ++/* As well as globalizing the label, we need to encode the label ++ to ensure a plabel is generated in an indirect call. */ ++ ++#undef ASM_OUTPUT_EXTERNAL_LIBCALL ++#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \ ++ do \ ++ { \ ++ if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \ ++ hppa_encode_label (FUN); \ ++ (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0)); \ ++ } \ ++ while (0) ++ ++/* NetBSD always uses gas. */ ++#undef TARGET_GAS ++#define TARGET_GAS 1 ++ ++/* Use long int for these type to make hppa64 compatibility easier. */ ++#undef SIZE_TYPE ++#define SIZE_TYPE "long unsigned int" ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE "long int" diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa-protos.h b/lang/gcc45/patches/patch-gcc_config_pa_pa-protos.h new file mode 100644 index 000000000..9f3b3207b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa-protos.h @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/config/pa/pa-protos.h.orig Wed Sep 23 19:08:32 2009 ++++ gcc/config/pa/pa-protos.h +@@ -79,7 +79,6 @@ extern int move_src_operand (rtx, enum machine_mode); + extern int prefetch_cc_operand (rtx, enum machine_mode); + extern int prefetch_nocc_operand (rtx, enum machine_mode); + extern int and_operand (rtx, enum machine_mode); +-extern int ior_operand (rtx, enum machine_mode); + extern int arith32_operand (rtx, enum machine_mode); + extern int uint32_operand (rtx, enum machine_mode); + extern int reg_before_reload_operand (rtx, enum machine_mode); +@@ -94,7 +93,6 @@ extern int ireg_or_int5_operand (rtx, enum machine_mod + extern int fmpyaddoperands (rtx *); + extern int fmpysuboperands (rtx *); + extern int call_operand_address (rtx, enum machine_mode); +-extern int ior_operand (rtx, enum machine_mode); + extern void emit_bcond_fp (rtx[]); + extern int emit_move_sequence (rtx *, enum machine_mode, rtx); + extern int emit_hpdiv_const (rtx *, int); diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa.c b/lang/gcc45/patches/patch-gcc_config_pa_pa.c new file mode 100644 index 000000000..4211228d3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa.c @@ -0,0 +1,127 @@ +$NetBSD$ + +--- gcc/config/pa/pa.c.orig Sat Apr 16 18:09:58 2011 ++++ gcc/config/pa/pa.c +@@ -990,9 +990,9 @@ hppa_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNU + || GET_CODE (XEXP (x, 0)) == REG)) + { + rtx int_part, ptr_reg; +- int newoffset; +- int offset = INTVAL (XEXP (x, 1)); +- int mask; ++ HOST_WIDE_INT newoffset; ++ HOST_WIDE_INT offset = INTVAL (XEXP (x, 1)); ++ HOST_WIDE_INT mask; + + mask = (GET_MODE_CLASS (mode) == MODE_FLOAT + ? (INT14_OK_STRICT ? 0x3fff : 0x1f) : 0x3fff); +@@ -1046,7 +1046,7 @@ hppa_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNU + || GET_CODE (XEXP (x, 1)) == SUBREG) + && GET_CODE (XEXP (x, 1)) != CONST) + { +- int val = INTVAL (XEXP (XEXP (x, 0), 1)); ++ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (x, 0), 1)); + rtx reg1, reg2; + + reg1 = XEXP (x, 1); +@@ -1125,7 +1125,7 @@ hppa_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNU + && INTVAL (XEXP (idx, 1)) % INTVAL (XEXP (XEXP (idx, 0), 1)) == 0) + { + /* Divide the CONST_INT by the scale factor, then add it to A. */ +- int val = INTVAL (XEXP (idx, 1)); ++ HOST_WIDE_INT val = INTVAL (XEXP (idx, 1)); + + val /= INTVAL (XEXP (XEXP (idx, 0), 1)); + reg1 = XEXP (XEXP (idx, 0), 0); +@@ -1148,7 +1148,7 @@ hppa_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNU + && INTVAL (XEXP (idx, 1)) <= 4096 + && INTVAL (XEXP (idx, 1)) >= -4096) + { +- int val = INTVAL (XEXP (XEXP (idx, 0), 1)); ++ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (idx, 0), 1)); + rtx reg1, reg2; + + reg1 = force_reg (Pmode, gen_rtx_PLUS (Pmode, base, XEXP (idx, 1))); +@@ -1232,7 +1232,7 @@ hppa_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNU + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT + && shadd_constant_p (INTVAL (XEXP (XEXP (x, 0), 1)))) + { +- int val = INTVAL (XEXP (XEXP (x, 0), 1)); ++ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (x, 0), 1)); + rtx reg1, reg2; + + reg1 = XEXP (x, 1); +@@ -1686,6 +1686,11 @@ emit_move_sequence (rtx *operands, enum machine_mode m + /* Handle the most common case: storing into a register. */ + else if (register_operand (operand0, mode)) + { ++ /* Legitimize TLS symbol references. This happens for references ++ that aren't a legitimate constant. */ ++ if (PA_SYMBOL_REF_TLS_P (operand1)) ++ operand1 = legitimize_tls_address (operand1); ++ + if (register_operand (operand1, mode) + || (GET_CODE (operand1) == CONST_INT + && cint_ok_for_move (INTVAL (operand1))) +@@ -2650,8 +2655,8 @@ find_addr_reg (rtx addr) + const char * + output_block_move (rtx *operands, int size_is_constant ATTRIBUTE_UNUSED) + { +- int align = INTVAL (operands[5]); +- unsigned long n_bytes = INTVAL (operands[4]); ++ HOST_WIDE_INT align = INTVAL (operands[5]); ++ unsigned HOST_WIDE_INT n_bytes = INTVAL (operands[4]); + + /* We can't move more than a word at a time because the PA + has no longer integer move insns. (Could use fp mem ops?) */ +@@ -2778,8 +2783,8 @@ static int + compute_movmem_length (rtx insn) + { + rtx pat = PATTERN (insn); +- unsigned int align = INTVAL (XEXP (XVECEXP (pat, 0, 7), 0)); +- unsigned long n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 6), 0)); ++ unsigned HOST_WIDE_INT align = INTVAL (XEXP (XVECEXP (pat, 0, 7), 0)); ++ unsigned HOST_WIDE_INT n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 6), 0)); + unsigned int n_insns = 0; + + /* We can't move more than four bytes at a time because the PA +@@ -2814,8 +2819,8 @@ compute_movmem_length (rtx insn) + const char * + output_block_clear (rtx *operands, int size_is_constant ATTRIBUTE_UNUSED) + { +- int align = INTVAL (operands[3]); +- unsigned long n_bytes = INTVAL (operands[2]); ++ HOST_WIDE_INT align = INTVAL (operands[3]); ++ unsigned HOST_WIDE_INT n_bytes = INTVAL (operands[2]); + + /* We can't clear more than a word at a time because the PA + has no longer integer move insns. */ +@@ -2920,8 +2925,8 @@ static int + compute_clrmem_length (rtx insn) + { + rtx pat = PATTERN (insn); +- unsigned int align = INTVAL (XEXP (XVECEXP (pat, 0, 4), 0)); +- unsigned long n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 3), 0)); ++ unsigned HOST_WIDE_INT align = INTVAL (XEXP (XVECEXP (pat, 0, 4), 0)); ++ unsigned HOST_WIDE_INT n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 3), 0)); + unsigned int n_insns = 0; + + /* We can't clear more than a word at a time because the PA +@@ -5337,7 +5342,7 @@ pa_som_file_start (void) + static void + pa_linux_file_start (void) + { +- pa_file_start_file (1); ++ pa_file_start_file (0); + pa_file_start_level (); + pa_file_start_mcount ("CODE"); + } +@@ -5552,7 +5557,7 @@ emit_hpdiv_const (rtx *operands, int unsignedp) + const char * + output_div_insn (rtx *operands, int unsignedp, rtx insn) + { +- int divisor; ++ HOST_WIDE_INT divisor; + + /* If the divisor is a constant, try to use one of the special + opcodes .*/ diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa.h b/lang/gcc45/patches/patch-gcc_config_pa_pa.h new file mode 100644 index 000000000..4f4c45970 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa.h @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/config/pa/pa.h.orig Sat Apr 16 17:10:29 2011 ++++ gcc/config/pa/pa.h +@@ -891,6 +891,9 @@ extern int may_call_alloca; + && (NEW_HP_ASSEMBLER \ + || TARGET_GAS \ + || GET_CODE (X) != LABEL_REF) \ ++ && (!PA_SYMBOL_REF_TLS_P (X) \ ++ || (SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_GLOBAL_DYNAMIC \ ++ && SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_LOCAL_DYNAMIC)) \ + && (!TARGET_64BIT \ + || GET_CODE (X) != CONST_DOUBLE) \ + && (!TARGET_64BIT \ +@@ -1196,7 +1199,7 @@ extern int may_call_alloca; + There may be more opportunities to improve code with this hook. */ + #define LEGITIMIZE_RELOAD_ADDRESS(AD, MODE, OPNUM, TYPE, IND, WIN) \ + do { \ +- long offset, newoffset, mask; \ ++ HOST_WIDE_INT offset, newoffset, mask; \ + rtx new_rtx, temp = NULL_RTX; \ + \ + mask = (GET_MODE_CLASS (MODE) == MODE_FLOAT \ diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa.md b/lang/gcc45/patches/patch-gcc_config_pa_pa.md new file mode 100644 index 000000000..2a10f80fe --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa.md @@ -0,0 +1,189 @@ +$NetBSD$ + +--- gcc/config/pa/pa.md.orig Thu Dec 30 21:57:32 2010 ++++ gcc/config/pa/pa.md +@@ -811,7 +811,7 @@ + (match_operand:DI 3 "arith11_operand" "rI")) + (match_operand:DI 1 "register_operand" "r")))] + "TARGET_64BIT" +- "sub%I3,* %3,%2,%%r0\;add,dc %%r0,%1,%0" ++ "sub%I3 %3,%2,%%r0\;add,dc %%r0,%1,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -833,7 +833,7 @@ + (match_operand:DI 3 "register_operand" "r")) + (match_operand:DI 1 "register_operand" "r")))] + "TARGET_64BIT" +- "sub,* %2,%3,%%r0\;add,dc %%r0,%1,%0" ++ "sub %2,%3,%%r0\;add,dc %%r0,%1,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -856,7 +856,7 @@ + (match_operand:DI 3 "int11_operand" "I")) + (match_operand:DI 1 "register_operand" "r")))] + "TARGET_64BIT" +- "addi,* %k3,%2,%%r0\;add,dc %%r0,%1,%0" ++ "addi %k3,%2,%%r0\;add,dc %%r0,%1,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -902,7 +902,7 @@ + (gtu:DI (match_operand:DI 2 "register_operand" "r") + (match_operand:DI 3 "arith11_operand" "rI"))))] + "TARGET_64BIT" +- "sub%I3,* %3,%2,%%r0\;sub,db %1,%%r0,%0" ++ "sub%I3 %3,%2,%%r0\;sub,db %1,%%r0,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -924,7 +924,7 @@ + (match_operand:DI 3 "arith11_operand" "rI"))) + (match_operand:DI 4 "register_operand" "r")))] + "TARGET_64BIT" +- "sub%I3,* %3,%2,%%r0\;sub,db %1,%4,%0" ++ "sub%I3 %3,%2,%%r0\;sub,db %1,%4,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -946,7 +946,7 @@ + (ltu:DI (match_operand:DI 2 "register_operand" "r") + (match_operand:DI 3 "register_operand" "r"))))] + "TARGET_64BIT" +- "sub,* %2,%3,%%r0\;sub,db %1,%%r0,%0" ++ "sub %2,%3,%%r0\;sub,db %1,%%r0,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -968,7 +968,7 @@ + (match_operand:DI 3 "register_operand" "r"))) + (match_operand:DI 4 "register_operand" "r")))] + "TARGET_64BIT" +- "sub,* %2,%3,%%r0\;sub,db %1,%4,%0" ++ "sub %2,%3,%%r0\;sub,db %1,%4,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -991,7 +991,7 @@ + (leu:DI (match_operand:DI 2 "register_operand" "r") + (match_operand:DI 3 "int11_operand" "I"))))] + "TARGET_64BIT" +- "addi,* %k3,%2,%%r0\;sub,db %1,%%r0,%0" ++ "addi %k3,%2,%%r0\;sub,db %1,%%r0,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -1013,7 +1013,7 @@ + (match_operand:DI 3 "int11_operand" "I"))) + (match_operand:DI 4 "register_operand" "r")))] + "TARGET_64BIT" +- "addi,* %k3,%2,%%r0\;sub,db %1,%4,%0" ++ "addi %k3,%2,%%r0\;sub,db %1,%4,%0" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + +@@ -5686,7 +5686,7 @@ + (define_expand "iordi3" + [(set (match_operand:DI 0 "register_operand" "") + (ior:DI (match_operand:DI 1 "register_operand" "") +- (match_operand:DI 2 "ior_operand" "")))] ++ (match_operand:DI 2 "reg_or_cint_ior_operand" "")))] + "" + " + { +@@ -5707,7 +5707,7 @@ + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (ior:DI (match_operand:DI 1 "register_operand" "0,0") +- (match_operand:DI 2 "ior_operand" "M,i")))] ++ (match_operand:DI 2 "cint_ior_operand" "M,i")))] + "TARGET_64BIT" + "* return output_64bit_ior (operands); " + [(set_attr "type" "binary,shift") +@@ -5726,19 +5726,14 @@ + (define_expand "iorsi3" + [(set (match_operand:SI 0 "register_operand" "") + (ior:SI (match_operand:SI 1 "register_operand" "") +- (match_operand:SI 2 "arith32_operand" "")))] ++ (match_operand:SI 2 "reg_or_cint_ior_operand" "")))] + "" +- " +-{ +- if (! (ior_operand (operands[2], SImode) +- || register_operand (operands[2], SImode))) +- operands[2] = force_reg (SImode, operands[2]); +-}") ++ "") + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (ior:SI (match_operand:SI 1 "register_operand" "0,0") +- (match_operand:SI 2 "ior_operand" "M,i")))] ++ (match_operand:SI 2 "cint_ior_operand" "M,i")))] + "" + "* return output_ior (operands); " + [(set_attr "type" "binary,shift") +@@ -6566,7 +6561,7 @@ + "" + "* + { +- int x = INTVAL (operands[1]); ++ unsigned HOST_WIDE_INT x = UINTVAL (operands[1]); + operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1)); + operands[1] = GEN_INT ((x & 0xf) - 0x10); + return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\"; +@@ -6584,7 +6579,7 @@ + "exact_log2 (INTVAL (operands[1]) + 1) > 0" + "* + { +- int x = INTVAL (operands[1]); ++ HOST_WIDE_INT x = INTVAL (operands[1]); + operands[2] = GEN_INT (exact_log2 (x + 1)); + return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\"; + }" +@@ -6601,7 +6596,7 @@ + "INTVAL (operands[1]) == -2" + "* + { +- int x = INTVAL (operands[1]); ++ HOST_WIDE_INT x = INTVAL (operands[1]); + operands[2] = GEN_INT (exact_log2 ((~x) + 1)); + return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\"; + }" +@@ -6665,7 +6660,7 @@ + "TARGET_64BIT" + "* + { +- int x = INTVAL (operands[1]); ++ unsigned HOST_WIDE_INT x = UINTVAL (operands[1]); + operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1)); + operands[1] = GEN_INT ((x & 0x1f) - 0x20); + return \"depdi,z %1,%%sar,%2,%0\"; +@@ -6683,7 +6678,7 @@ + "TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0" + "* + { +- int x = INTVAL (operands[1]); ++ HOST_WIDE_INT x = INTVAL (operands[1]); + operands[2] = GEN_INT (exact_log2 (x + 1)); + return \"depdi -1,%%sar,%2,%0\"; + }" +@@ -6700,7 +6695,7 @@ + "TARGET_64BIT && INTVAL (operands[1]) == -2" + "* + { +- int x = INTVAL (operands[1]); ++ HOST_WIDE_INT x = INTVAL (operands[1]); + operands[2] = GEN_INT (exact_log2 ((~x) + 1)); + return \"depdi 0,%%sar,%2,%0\"; + }" +@@ -7131,7 +7126,7 @@ + { + rtx index = gen_reg_rtx (SImode); + +- operands[1] = GEN_INT (-INTVAL (operands[1])); ++ operands[1] = gen_int_mode (-INTVAL (operands[1]), SImode); + if (!INT_14_BITS (operands[1])) + operands[1] = force_reg (SImode, operands[1]); + emit_insn (gen_addsi3 (index, operands[0], operands[1])); diff --git a/lang/gcc45/patches/patch-gcc_config_pa_pa32-netbsd.h b/lang/gcc45/patches/patch-gcc_config_pa_pa32-netbsd.h new file mode 100644 index 000000000..70e41dab9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_pa32-netbsd.h @@ -0,0 +1,42 @@ +$NetBSD$ + +--- gcc/config/pa/pa32-netbsd.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/pa/pa32-netbsd.h +@@ -0,0 +1,37 @@ ++/* Definitions for PA_RISC with ELF-32 format ++ Copyright (C) 2000, 2002 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++/* Turn off various SOM crap we don't want. */ ++#undef TARGET_ELF32 ++#define TARGET_ELF32 1 ++ ++/* The libcall __canonicalize_funcptr_for_compare is referenced in ++ crtend.o and the reference isn't resolved in objects that don't ++ compare function pointers. Thus, we need to play games to provide ++ a reference in crtbegin.o. The rest of the define is the same ++ as that in crtstuff.c */ ++#define CTOR_LIST_BEGIN \ ++ asm (".type __canonicalize_funcptr_for_compare,@function\n" \ ++" .text\n" \ ++" .word __canonicalize_funcptr_for_compare-$PIC_pcrel$0"); \ ++ STATIC func_ptr __CTOR_LIST__[1] \ ++ __attribute__ ((__unused__, section(".ctors"), \ ++ aligned(sizeof(func_ptr)))) \ ++ = { (func_ptr) (-1) } diff --git a/lang/gcc45/patches/patch-gcc_config_pa_predicates.md b/lang/gcc45/patches/patch-gcc_config_pa_predicates.md new file mode 100644 index 000000000..a38f3537c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_predicates.md @@ -0,0 +1,32 @@ +$NetBSD$ + +--- gcc/config/pa/predicates.md.orig Sat Jul 3 22:46:51 2010 ++++ gcc/config/pa/predicates.md +@@ -411,15 +411,19 @@ + + ;; True iff depi can be used to compute (reg | OP). + +-(define_predicate "ior_operand" +- (match_code "const_int") +-{ +- return (GET_CODE (op) == CONST_INT && ior_mask_p (INTVAL (op))); +-}) ++(define_predicate "cint_ior_operand" ++ (and (match_code "const_int") ++ (match_test "ior_mask_p (INTVAL (op))"))) + +-;; True iff OP is a CONST_INT of the forms 0...0xxxx or +-;; 0...01...1xxxx. Such values can be the left hand side x in (x << +-;; r), using the zvdepi instruction. ++;; True iff OP can be used to compute (reg | OP). ++ ++(define_predicate "reg_or_cint_ior_operand" ++ (ior (match_operand 0 "register_operand") ++ (match_operand 0 "cint_ior_operand"))) ++ ++;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx, ++;; or 1...1xxxx. Such values can be the left hand side x in (x << r), ++;; using the zvdepi instruction. + + (define_predicate "lhs_lshift_cint_operand" + (match_code "const_int") diff --git a/lang/gcc45/patches/patch-gcc_config_pa_t-netbsd b/lang/gcc45/patches/patch-gcc_config_pa_t-netbsd new file mode 100644 index 000000000..898f666e3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_pa_t-netbsd @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/config/pa/t-netbsd.orig Wed May 21 19:48:54 2014 ++++ gcc/config/pa/t-netbsd +@@ -0,0 +1,14 @@ ++#Plug millicode routines into libgcc.a We want these on both native and ++#cross compiles. We use the "64-bit" routines because the "32-bit" code ++#is broken for certain corner cases. ++ ++LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI _dyncall ++LIB1ASMSRC = pa/milli64.S ++ ++# Compile libgcc2.a as PIC. ++TARGET_LIBGCC2_CFLAGS = -fPIC -DELF=1 -DNETBSD=1 ++ ++LIB2FUNCS_EXTRA=$(srcdir)/config/pa/fptr.c ++ ++# Compile crtbeginS.o and crtendS.o as PIC. ++CRTSTUFF_T_CFLAGS_S = -fPIC diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_altivec.md b/lang/gcc45/patches/patch-gcc_config_rs6000_altivec.md new file mode 100644 index 000000000..7b575bdaf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_altivec.md @@ -0,0 +1,66 @@ +$NetBSD$ + +--- gcc/config/rs6000/altivec.md.orig Fri Feb 4 16:31:48 2011 ++++ gcc/config/rs6000/altivec.md +@@ -497,7 +497,7 @@ + [(set (match_operand:VM 0 "altivec_register_operand" "=v") + (if_then_else:VM + (ne:CC (match_operand:VM 1 "altivec_register_operand" "v") +- (const_int 0)) ++ (match_operand:VM 4 "zero_constant" "")) + (match_operand:VM 2 "altivec_register_operand" "v") + (match_operand:VM 3 "altivec_register_operand" "v")))] + "VECTOR_MEM_ALTIVEC_P (mode)" +@@ -508,7 +508,7 @@ + [(set (match_operand:VM 0 "altivec_register_operand" "=v") + (if_then_else:VM + (ne:CCUNS (match_operand:VM 1 "altivec_register_operand" "v") +- (const_int 0)) ++ (match_operand:VM 4 "zero_constant" "")) + (match_operand:VM 2 "altivec_register_operand" "v") + (match_operand:VM 3 "altivec_register_operand" "v")))] + "VECTOR_MEM_ALTIVEC_P (mode)" +@@ -2396,8 +2396,8 @@ + + (define_insn "altivec_stvlx" + [(parallel +- [(set (match_operand:V4SI 0 "memory_operand" "=Z") +- (match_operand:V4SI 1 "register_operand" "v")) ++ [(set (match_operand:V16QI 0 "memory_operand" "=Z") ++ (match_operand:V16QI 1 "register_operand" "v")) + (unspec [(const_int 0)] UNSPEC_STVLX)])] + "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" + "stvlx %1,%y0" +@@ -2405,8 +2405,8 @@ + + (define_insn "altivec_stvlxl" + [(parallel +- [(set (match_operand:V4SI 0 "memory_operand" "=Z") +- (match_operand:V4SI 1 "register_operand" "v")) ++ [(set (match_operand:V16QI 0 "memory_operand" "=Z") ++ (match_operand:V16QI 1 "register_operand" "v")) + (unspec [(const_int 0)] UNSPEC_STVLXL)])] + "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" + "stvlxl %1,%y0" +@@ -2414,8 +2414,8 @@ + + (define_insn "altivec_stvrx" + [(parallel +- [(set (match_operand:V4SI 0 "memory_operand" "=Z") +- (match_operand:V4SI 1 "register_operand" "v")) ++ [(set (match_operand:V16QI 0 "memory_operand" "=Z") ++ (match_operand:V16QI 1 "register_operand" "v")) + (unspec [(const_int 0)] UNSPEC_STVRX)])] + "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" + "stvrx %1,%y0" +@@ -2423,8 +2423,8 @@ + + (define_insn "altivec_stvrxl" + [(parallel +- [(set (match_operand:V4SI 0 "memory_operand" "=Z") +- (match_operand:V4SI 1 "register_operand" "v")) ++ [(set (match_operand:V16QI 0 "memory_operand" "=Z") ++ (match_operand:V16QI 1 "register_operand" "v")) + (unspec [(const_int 0)] UNSPEC_STVRXL)])] + "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL" + "stvrxl %1,%y0" diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd.h b/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd.h new file mode 100644 index 000000000..13677bb74 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd.h @@ -0,0 +1,98 @@ +$NetBSD$ + +--- gcc/config/rs6000/netbsd.h.orig Fri Feb 20 15:20:38 2009 ++++ gcc/config/rs6000/netbsd.h +@@ -19,6 +19,22 @@ + along with GCC; see the file COPYING3. If not see + . */ + ++/* This defines which switch letters take arguments. On NetBSD, most ++ of the normal cases (defined by gcc.c) apply, and we also have -h* ++ and -z* options (for the linker) (coming from SVR4). ++ Copied from ../netbsd-elf.h and re{undef,defined} here to ++ override the powerpc sysv4.h definition. ++ netbsd-elf.h defines the default list + 'h' + 'z' + 'R'. ++ rs6000/sysv4.h defines the default list + 'G'. */ ++ ++#undef SWITCH_TAKES_ARG ++#define SWITCH_TAKES_ARG(CHAR) \ ++ (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ ++ || (CHAR) == 'h' \ ++ || (CHAR) == 'z' \ ++ || (CHAR) == 'R' \ ++ || (CHAR) == 'G') ++ + #undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */ + #define TARGET_OS_CPP_BUILTINS() \ + do \ +@@ -27,6 +43,10 @@ + builtin_define ("__powerpc__"); \ + builtin_assert ("cpu=powerpc"); \ + builtin_assert ("machine=powerpc"); \ ++ if (TARGET_SECURE_PLT) \ ++ builtin_define ("_SECURE_PLT"); \ ++ if (TARGET_SOFT_FLOAT) \ ++ builtin_define ("_SOFT_FLOAT"); \ + } \ + while (0) + +@@ -58,6 +78,17 @@ + #undef PTRDIFF_TYPE + #define PTRDIFF_TYPE "int" + ++/* Redefine some types that where redefined by rs6000 include files. */ ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "int" ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 32 ++ ++#undef WINT_TYPE ++#define WINT_TYPE "int" ++ + /* Undo the spec mess from sysv4.h, and just define the specs + the way NetBSD systems actually expect. */ + +@@ -82,10 +113,41 @@ + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ ++ { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ + { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \ + { "netbsd_entry_point", NETBSD_ENTRY_POINT }, \ + { "netbsd_endfile_spec", NETBSD_ENDFILE_SPEC }, + ++/* ++ * Add NetBSD specific defaults: -mpowerpc -mnew_mnemonics -mstrict-align ++ */ ++#undef TARGET_DEFAULT ++#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN) ++ ++/* ++ * We know we have the right binutils for this (we shouldn't need to do this ++ * but until the cross build does the right thing...) ++ */ ++#undef TARGET_SECURE_PLT ++#define TARGET_SECURE_PLT secure_plt ++#undef HAVE_AS_TLS ++#define HAVE_AS_TLS 1 ++ ++/* Attempt to enable execute permissions on the stack. */ ++#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK ++#ifdef L_trampoline ++#undef TRAMPOLINE_SIZE ++#define TRAMPOLINE_SIZE 48 ++#endif ++ ++/* Make sure _enable_execute_stack() isn't the empty function in libgcc2.c. ++ It gets defined in _trampoline.o via NETBSD_ENABLE_EXECUTE_STACK. */ ++#undef ENABLE_EXECUTE_STACK ++#define ENABLE_EXECUTE_STACK ++ ++/* Override STACK_BOUNDARY to use Altivec compliant one. */ ++#undef STACK_BOUNDARY ++#define STACK_BOUNDARY 128 + + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)"); diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd64.h b/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd64.h new file mode 100644 index 000000000..549f071f2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_netbsd64.h @@ -0,0 +1,571 @@ +$NetBSD$ + +--- gcc/config/rs6000/netbsd64.h.orig Wed May 21 19:48:54 2014 ++++ gcc/config/rs6000/netbsd64.h +@@ -0,0 +1,566 @@ ++/* Definitions of target machine for GNU compiler, ++ for 64 bit PowerPC NetBSD. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ Contributed by Matthew Green (mrg@eterna.com.au). ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 2, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING. If not, write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ++ MA 02110-1301, USA. */ ++ ++#ifndef RS6000_BI_ARCH ++ ++#undef DEFAULT_ABI ++#define DEFAULT_ABI ABI_AIX ++ ++#undef TARGET_64BIT ++#define TARGET_64BIT 1 ++ ++#define DEFAULT_ARCH64_P 1 ++#define RS6000_BI_ARCH_P 0 ++ ++#else ++ ++#define DEFAULT_ARCH64_P (TARGET_DEFAULT & MASK_64BIT) ++#define RS6000_BI_ARCH_P 1 ++ ++#endif ++ ++#ifdef IN_LIBGCC2 ++#undef TARGET_64BIT ++#ifdef __powerpc64__ ++#define TARGET_64BIT 1 ++#else ++#define TARGET_64BIT 0 ++#endif ++#endif ++ ++#undef TARGET_AIX ++#define TARGET_AIX TARGET_64BIT ++ ++#ifdef HAVE_LD_NO_DOT_SYMS ++/* New ABI uses a local sym for the function entry point. */ ++extern int dot_symbols; ++#undef DOT_SYMBOLS ++#define DOT_SYMBOLS dot_symbols ++#endif ++ ++#define TARGET_PROFILE_KERNEL profile_kernel ++ ++#undef PROCESSOR_DEFAULT ++#define PROCESSOR_DEFAULT PROCESSOR_POWER4 ++#undef PROCESSOR_DEFAULT64 ++#define PROCESSOR_DEFAULT64 PROCESSOR_POWER4 ++ ++/* We don't need to generate entries in .fixup, except when ++ -mrelocatable or -mrelocatable-lib is given. */ ++#undef RELOCATABLE_NEEDS_FIXUP ++#define RELOCATABLE_NEEDS_FIXUP \ ++ (target_flags & target_flags_explicit & MASK_RELOCATABLE) ++ ++#undef RS6000_ABI_NAME ++#define RS6000_ABI_NAME "netbsd" ++ ++#define INVALID_64BIT "-m%s not supported in this configuration" ++#define INVALID_32BIT INVALID_64BIT ++ ++#undef SUBSUBTARGET_OVERRIDE_OPTIONS ++#define SUBSUBTARGET_OVERRIDE_OPTIONS \ ++ do \ ++ { \ ++ if (!rs6000_explicit_options.alignment) \ ++ rs6000_alignment_flags = MASK_ALIGN_NATURAL; \ ++ if (TARGET_64BIT) \ ++ { \ ++ if (DEFAULT_ABI != ABI_AIX) \ ++ { \ ++ rs6000_current_abi = ABI_AIX; \ ++ error (INVALID_64BIT, "call"); \ ++ } \ ++ dot_symbols = !strcmp (rs6000_abi_name, "aixdesc"); \ ++ if (target_flags & MASK_RELOCATABLE) \ ++ { \ ++ target_flags &= ~MASK_RELOCATABLE; \ ++ error (INVALID_64BIT, "relocatable"); \ ++ } \ ++ if (target_flags & MASK_EABI) \ ++ { \ ++ target_flags &= ~MASK_EABI; \ ++ error (INVALID_64BIT, "eabi"); \ ++ } \ ++ if (TARGET_PROTOTYPE) \ ++ { \ ++ target_prototype = 0; \ ++ error (INVALID_64BIT, "prototype"); \ ++ } \ ++ if ((target_flags & MASK_POWERPC64) == 0) \ ++ { \ ++ target_flags |= MASK_POWERPC64; \ ++ error ("-m64 requires a PowerPC64 cpu"); \ ++ } \ ++ } \ ++ else \ ++ { \ ++ if (!RS6000_BI_ARCH_P) \ ++ error (INVALID_32BIT, "32"); \ ++ if (TARGET_PROFILE_KERNEL) \ ++ { \ ++ TARGET_PROFILE_KERNEL = 0; \ ++ error (INVALID_32BIT, "profile-kernel"); \ ++ } \ ++ } \ ++ } \ ++ while (0) ++ ++#ifdef RS6000_BI_ARCH ++ ++#undef OVERRIDE_OPTIONS ++#define OVERRIDE_OPTIONS \ ++ rs6000_override_options (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \ ++ ? (char *) 0 : TARGET_CPU_DEFAULT) ++ ++#endif ++ ++#undef ASM_DEFAULT_SPEC ++#undef ASM_SPEC ++#undef LINK_OS_NETBSD_SPEC ++ ++#ifndef RS6000_BI_ARCH ++#define ASM_DEFAULT_SPEC "-mppc64" ++#define ASM_SPEC "%(asm_spec64) %(asm_spec_common)" ++#define LINK_OS_NETBSD_SPEC "%(link_os_netbsd_spec64)" ++#else ++#if DEFAULT_ARCH64_P ++#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}" ++#define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)" ++#define LINK_OS_NETBSD_SPEC "%{m32:%(link_os_netbsd_spec32)}%{!m32:%(link_os_netbsd_spec64)}" ++#else ++#define ASM_DEFAULT_SPEC "-mppc%{m64:64}" ++#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)" ++#define LINK_OS_NETBSD_SPEC "%{!m64:%(link_os_netbsd_spec32)}%{m64:%(link_os_netbsd_spec64)}" ++#endif ++#endif ++ ++#define ASM_SPEC32 "-a32 %{n} %{T} %{Ym,*} %{Yd,*} \ ++%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \ ++%{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} \ ++%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ ++ %{mcall-freebsd: -mbig} \ ++ %{mcall-i960-old: -mlittle} \ ++ %{mcall-linux: -mbig} \ ++ %{mcall-gnu: -mbig} \ ++ %{mcall-netbsd: -mbig} \ ++}}}}" ++ ++#define ASM_SPEC64 "-a64" ++ ++#define ASM_SPEC_COMMON "%(asm_cpu) \ ++%{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \ ++%{v:-V} %{Qy:} %{!Qn:-Qy} %{Wa,*:%*} \ ++%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}" ++ ++#undef SUBSUBTARGET_EXTRA_SPECS ++#define SUBSUBTARGET_EXTRA_SPECS \ ++ { "asm_spec_common", ASM_SPEC_COMMON }, \ ++ { "asm_spec32", ASM_SPEC32 }, \ ++ { "asm_spec64", ASM_SPEC64 }, \ ++ { "link_os_netbsd_spec32", LINK_OS_NETBSD_SPEC32 }, \ ++ { "link_os_netbsd_spec64", LINK_OS_NETBSD_SPEC64 }, ++ ++#undef MULTILIB_DEFAULTS ++#if DEFAULT_ARCH64_P ++#define MULTILIB_DEFAULTS { "m64" } ++#else ++#define MULTILIB_DEFAULTS { "m32" } ++#endif ++ ++#ifndef RS6000_BI_ARCH ++ ++/* 64-bit PowerPC NetBSD is always big-endian. */ ++#undef TARGET_LITTLE_ENDIAN ++#define TARGET_LITTLE_ENDIAN 0 ++ ++/* 64-bit PowerPC NetBSD always has a TOC. */ ++#undef TARGET_TOC ++#define TARGET_TOC 1 ++ ++/* Some things from sysv4.h we don't do when 64 bit. */ ++#undef TARGET_RELOCATABLE ++#define TARGET_RELOCATABLE 0 ++#undef TARGET_EABI ++#define TARGET_EABI 0 ++#undef TARGET_PROTOTYPE ++#define TARGET_PROTOTYPE 0 ++#undef RELOCATABLE_NEEDS_FIXUP ++#define RELOCATABLE_NEEDS_FIXUP 0 ++ ++#endif ++ ++/* PowerPC64 NetBSD word-aligns FP doubles when -malign-power is given. */ ++#undef ADJUST_FIELD_ALIGN ++#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \ ++ ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \ ++ ? 128 \ ++ : (TARGET_64BIT \ ++ && TARGET_ALIGN_NATURAL == 0 \ ++ && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode) \ ++ ? MIN ((COMPUTED), 32) \ ++ : (COMPUTED)) ++ ++/* PowerPC64 NetBSD increases natural record alignment to doubleword if ++ the first field is an FP double, only if in power alignment mode. */ ++#undef ROUND_TYPE_ALIGN ++#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \ ++ ((TARGET_64BIT \ ++ && (TREE_CODE (STRUCT) == RECORD_TYPE \ ++ || TREE_CODE (STRUCT) == UNION_TYPE \ ++ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \ ++ && TARGET_ALIGN_NATURAL == 0) \ ++ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \ ++ : MAX ((COMPUTED), (SPECIFIED))) ++ ++/* Use the default for compiling target libs. */ ++#ifdef IN_TARGET_LIBS ++#undef TARGET_ALIGN_NATURAL ++#define TARGET_ALIGN_NATURAL 1 ++#endif ++ ++/* Indicate that jump tables go in the text section. */ ++#undef JUMP_TABLES_IN_TEXT_SECTION ++#define JUMP_TABLES_IN_TEXT_SECTION TARGET_64BIT ++ ++/* The linux ppc64 ABI isn't explicit on whether aggregates smaller ++ than a doubleword should be padded upward or downward. You could ++ reasonably assume that they follow the normal rules for structure ++ layout treating the parameter area as any other block of memory, ++ then map the reg param area to registers. i.e. pad upward. ++ Setting both of the following defines results in this behavior. ++ Setting just the first one will result in aggregates that fit in a ++ doubleword being padded downward, and others being padded upward. ++ Not a bad idea as this results in struct { int x; } being passed ++ the same way as an int. */ ++#define AGGREGATE_PADDING_FIXED TARGET_64BIT ++#define AGGREGATES_PAD_UPWARD_ALWAYS 0 ++ ++/* Specify padding for the last element of a block move between ++ registers and memory. FIRST is nonzero if this is the only ++ element. */ ++#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \ ++ (!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE)) ++ ++/* Override svr4.h */ ++#undef MD_EXEC_PREFIX ++#undef MD_STARTFILE_PREFIX ++ ++/* NetBSD doesn't support saving and restoring 64-bit regs in a 32-bit ++ process. XXXMRG? */ ++#define OS_MISSING_POWERPC64 !TARGET_64BIT ++ ++/* NetBSD has float and long double forms of math functions. */ ++#undef TARGET_C99_FUNCTIONS ++#define TARGET_C99_FUNCTIONS 1 ++ ++/* NetBSD doesn't have sincos that follows the GNU extension. */ ++#undef TARGET_HAS_SINCOS ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ NETBSD_OS_CPP_BUILTINS_ELF(); \ ++ if (TARGET_64BIT) \ ++ { \ ++ builtin_define ("__PPC__"); \ ++ builtin_define ("__PPC64__"); \ ++ builtin_define ("__powerpc__"); \ ++ builtin_define ("__powerpc64__"); \ ++ builtin_define_with_int_value ("__PIC__", 2); \ ++ builtin_assert ("cpu=powerpc64"); \ ++ builtin_assert ("machine=powerpc64"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define_std ("PPC"); \ ++ builtin_define_std ("powerpc"); \ ++ builtin_assert ("cpu=powerpc"); \ ++ builtin_assert ("machine=powerpc"); \ ++ TARGET_OS_SYSV_CPP_BUILTINS (); \ ++ } \ ++ } \ ++ while (0) ++ ++/* Override the default from rs6000.h to avoid conflicts with macros ++ defined in NetBSD header files. */ ++ ++#undef RS6000_CPU_CPP_ENDIAN_BUILTINS ++#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__BIG_ENDIAN__"); \ ++ builtin_assert ("machine=bigendian"); \ ++ } \ ++ while (0) ++ ++#undef CPP_OS_DEFAULT_SPEC ++#define CPP_OS_DEFAULT_SPEC "%(cpp_os_netbsd)" ++ ++#undef LINK_SHLIB_SPEC ++#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}" ++ ++#undef LIB_DEFAULT_SPEC ++#define LIB_DEFAULT_SPEC "%(lib_netbsd)" ++ ++#undef STARTFILE_DEFAULT_SPEC ++#define STARTFILE_DEFAULT_SPEC "%(startfile_netbsd)" ++ ++#undef ENDFILE_DEFAULT_SPEC ++#define ENDFILE_DEFAULT_SPEC "%(endfile_netbsd)" ++ ++#undef CRTSAVRES_DEFAULT_SPEC ++#define CRTSAVRES_DEFAULT_SPEC "" ++ ++#undef LINK_START_DEFAULT_SPEC ++#define LINK_START_DEFAULT_SPEC "%(link_start_netbsd)" ++ ++#undef LINK_OS_DEFAULT_SPEC ++#define LINK_OS_DEFAULT_SPEC "%(link_os_netbsd)" ++ ++#define LINK_OS_NETBSD_SPEC32 "-m elf32ppc %{!shared: %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}" ++ ++#define LINK_OS_NETBSD_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}" ++ ++#undef TOC_SECTION_ASM_OP ++#define TOC_SECTION_ASM_OP \ ++ (TARGET_64BIT \ ++ ? "\t.section\t\".toc\",\"aw\"" \ ++ : "\t.section\t\".got\",\"aw\"") ++ ++#undef MINIMAL_TOC_SECTION_ASM_OP ++#define MINIMAL_TOC_SECTION_ASM_OP \ ++ (TARGET_64BIT \ ++ ? "\t.section\t\".toc1\",\"aw\"" \ ++ : ((TARGET_RELOCATABLE || flag_pic) \ ++ ? "\t.section\t\".got2\",\"aw\"" \ ++ : "\t.section\t\".got1\",\"aw\"")) ++ ++#undef TARGET_VERSION ++#define TARGET_VERSION fprintf (stderr, " (PowerPC64 NetBSD)"); ++ ++/* Make GCC agree with . */ ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int") ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 32 ++ ++/* Override rs6000.h definition. */ ++#undef ASM_APP_ON ++#define ASM_APP_ON "#APP\n" ++ ++/* Override rs6000.h definition. */ ++#undef ASM_APP_OFF ++#define ASM_APP_OFF "#NO_APP\n" ++ ++/* PowerPC no-op instruction. */ ++#undef RS6000_CALL_GLUE ++#define RS6000_CALL_GLUE (TARGET_64BIT ? "nop" : "cror 31,31,31") ++ ++#undef RS6000_MCOUNT ++#define RS6000_MCOUNT "_mcount" ++ ++#ifdef __powerpc64__ ++/* _init and _fini functions are built from bits spread across many ++ object files, each potentially with a different TOC pointer. For ++ that reason, place a nop after the call so that the linker can ++ restore the TOC pointer if a TOC adjusting call stub is needed. */ ++#if DOT_SYMBOLS ++#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ ++ asm (SECTION_OP "\n" \ ++" bl ." #FUNC "\n" \ ++" nop\n" \ ++" .previous"); ++#else ++#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ ++ asm (SECTION_OP "\n" \ ++" bl " #FUNC "\n" \ ++" nop\n" \ ++" .previous"); ++#endif ++#endif ++ ++/* FP save and restore routines. */ ++#undef SAVE_FP_PREFIX ++#define SAVE_FP_PREFIX (TARGET_64BIT ? "._savef" : "_savefpr_") ++#undef SAVE_FP_SUFFIX ++#define SAVE_FP_SUFFIX (TARGET_64BIT ? "" : "_l") ++#undef RESTORE_FP_PREFIX ++#define RESTORE_FP_PREFIX (TARGET_64BIT ? "._restf" : "_restfpr_") ++#undef RESTORE_FP_SUFFIX ++#define RESTORE_FP_SUFFIX (TARGET_64BIT ? "" : "_l") ++ ++/* Dwarf2 debugging. */ ++#undef PREFERRED_DEBUGGING_TYPE ++#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG ++ ++/* This is how to declare the size of a function. */ ++#undef ASM_DECLARE_FUNCTION_SIZE ++#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \ ++ do \ ++ { \ ++ if (!flag_inhibit_size_directive) \ ++ { \ ++ fputs ("\t.size\t", (FILE)); \ ++ if (TARGET_64BIT && DOT_SYMBOLS) \ ++ putc ('.', (FILE)); \ ++ assemble_name ((FILE), (FNAME)); \ ++ fputs (",.-", (FILE)); \ ++ rs6000_output_function_entry (FILE, FNAME); \ ++ putc ('\n', (FILE)); \ ++ } \ ++ } \ ++ while (0) ++ ++/* Return nonzero if this entry is to be written into the constant ++ pool in a special way. We do so if this is a SYMBOL_REF, LABEL_REF ++ or a CONST containing one of them. If -mfp-in-toc (the default), ++ we also do this for floating-point constants. We actually can only ++ do this if the FP formats of the target and host machines are the ++ same, but we can't check that since not every file that uses ++ the macros includes real.h. We also do this when we can write the ++ entry into the TOC and the entry is not larger than a TOC entry. */ ++ ++#undef ASM_OUTPUT_SPECIAL_POOL_ENTRY_P ++#define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE) \ ++ (TARGET_TOC \ ++ && (GET_CODE (X) == SYMBOL_REF \ ++ || (GET_CODE (X) == CONST && GET_CODE (XEXP (X, 0)) == PLUS \ ++ && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF) \ ++ || GET_CODE (X) == LABEL_REF \ ++ || (GET_CODE (X) == CONST_INT \ ++ && GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode)) \ ++ || (GET_CODE (X) == CONST_DOUBLE \ ++ && ((TARGET_64BIT \ ++ && (TARGET_MINIMAL_TOC \ ++ || (SCALAR_FLOAT_MODE_P (GET_MODE (X)) \ ++ && ! TARGET_NO_FP_IN_TOC))) \ ++ || (!TARGET_64BIT \ ++ && !TARGET_NO_FP_IN_TOC \ ++ && !TARGET_RELOCATABLE \ ++ && SCALAR_FLOAT_MODE_P (GET_MODE (X)) \ ++ && BITS_PER_WORD == HOST_BITS_PER_INT))))) ++ ++/* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, nor can it use ++ dbxout_stab_value_internal_label_diff, because we must ++ use the function code label, not the function descriptor label. */ ++#define DBX_OUTPUT_SOURCE_LINE(FILE, LINE, COUNTER) \ ++do \ ++ { \ ++ char temp[256]; \ ++ const char *s; \ ++ ASM_GENERATE_INTERNAL_LABEL (temp, "LM", COUNTER); \ ++ dbxout_begin_stabn_sline (LINE); \ ++ assemble_name (FILE, temp); \ ++ putc ('-', FILE); \ ++ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \ ++ rs6000_output_function_entry (FILE, s); \ ++ putc ('\n', FILE); \ ++ targetm.asm_out.internal_label (FILE, "LM", COUNTER); \ ++ COUNTER += 1; \ ++ } \ ++while (0) ++ ++/* Similarly, we want the function code label here. Cannot use ++ dbxout_stab_value_label_diff, as we have to use ++ rs6000_output_function_entry. FIXME. */ ++#define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \ ++ do \ ++ { \ ++ const char *s; \ ++ dbxout_begin_stabn (BRAC); \ ++ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \ ++ /* dbxout_block passes this macro the function name as NAME, \ ++ assuming that it is the function code start label. In our \ ++ case, the function name is the OPD entry. dbxout_block is \ ++ broken, hack around it here. */ \ ++ if (NAME == s) \ ++ putc ('0', FILE); \ ++ else \ ++ { \ ++ assemble_name (FILE, NAME); \ ++ putc ('-', FILE); \ ++ rs6000_output_function_entry (FILE, s); \ ++ } \ ++ putc ('\n', FILE); \ ++ } \ ++ while (0) ++ ++#define DBX_OUTPUT_LBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_LBRAC) ++#define DBX_OUTPUT_RBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_RBRAC) ++ ++/* Another case where we want the dot name. */ ++#define DBX_OUTPUT_NFUN(FILE, LSCOPE, DECL) \ ++ do \ ++ { \ ++ const char *s; \ ++ dbxout_begin_empty_stabs (N_FUN); \ ++ assemble_name (FILE, LSCOPE); \ ++ putc ('-', FILE); \ ++ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \ ++ rs6000_output_function_entry (FILE, s); \ ++ putc ('\n', FILE); \ ++ } \ ++ while (0) ++ ++/* Select a format to encode pointers in exception handling data. CODE ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is ++ true if the symbol may be affected by dynamic relocations. */ ++#undef ASM_PREFERRED_EH_DATA_FORMAT ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ ++ ((TARGET_64BIT || flag_pic || TARGET_RELOCATABLE) \ ++ ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel \ ++ | (TARGET_64BIT ? DW_EH_PE_udata8 : DW_EH_PE_sdata4)) \ ++ : DW_EH_PE_absptr) ++ ++/* For backward compatibility, we must continue to use the AIX ++ structure return convention. */ ++#undef DRAFT_V4_STRUCT_RET ++#define DRAFT_V4_STRUCT_RET (!TARGET_64BIT) ++ ++#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack ++ ++#define TARGET_POSIX_IO ++ ++#define LINK_GCC_C_SEQUENCE_SPEC \ ++ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ++ ++/* Use --as-needed -lgcc_s for eh support. */ ++#ifdef HAVE_LD_AS_NEEDED ++#define USE_LD_AS_NEEDED 1 ++#endif ++ ++/* NetBSD ppc64 has 128-bit long double support. */ ++#undef RS6000_DEFAULT_LONG_DOUBLE_SIZE ++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128 ++#define POWERPC_NETBSD diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.c b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.c new file mode 100644 index 000000000..ef5e8ade5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.c @@ -0,0 +1,189 @@ +$NetBSD$ + +--- gcc/config/rs6000/rs6000.c.orig Fri Feb 4 16:31:48 2011 ++++ gcc/config/rs6000/rs6000.c +@@ -2511,7 +2511,7 @@ rs6000_override_options (const char *default_cpu) + if (!rs6000_explicit_options.long_double) + rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE; + +-#ifndef POWERPC_LINUX ++#if !defined(POWERPC_LINUX) && !defined(POWERPC_NETBSD) + if (!rs6000_explicit_options.ieee) + rs6000_ieeequad = 1; + #endif +@@ -5426,10 +5426,11 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_mode + + if (model == TLS_MODEL_GLOBAL_DYNAMIC) + { +- r3 = gen_rtx_REG (Pmode, 3); + tga = rs6000_tls_get_addr (); +- emit_library_call_value (tga, dest, LCT_CONST, Pmode, 1, r3, Pmode); ++ emit_library_call_value (tga, dest, LCT_CONST, Pmode, ++ 1, const0_rtx, Pmode); + ++ r3 = gen_rtx_REG (Pmode, 3); + if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT) + insn = gen_tls_gd_aix64 (r3, got, addr, tga, const0_rtx); + else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT) +@@ -5446,11 +5447,12 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_mode + } + else if (model == TLS_MODEL_LOCAL_DYNAMIC) + { +- r3 = gen_rtx_REG (Pmode, 3); + tga = rs6000_tls_get_addr (); + tmp1 = gen_reg_rtx (Pmode); +- emit_library_call_value (tga, tmp1, LCT_CONST, Pmode, 1, r3, Pmode); ++ emit_library_call_value (tga, tmp1, LCT_CONST, Pmode, ++ 1, const0_rtx, Pmode); + ++ r3 = gen_rtx_REG (Pmode, 3); + if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT) + insn = gen_tls_ld_aix64 (r3, got, tga, const0_rtx); + else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT) +@@ -6694,7 +6696,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_m + + /* Nonzero if we can use an AltiVec register to pass this arg. */ + #define USE_ALTIVEC_FOR_ARG_P(CUM,MODE,TYPE,NAMED) \ +- ((ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE)) \ ++ (ALTIVEC_OR_VSX_VECTOR_MODE (MODE) \ + && (CUM)->vregno <= ALTIVEC_ARG_MAX_REG \ + && TARGET_ALTIVEC_ABI \ + && (NAMED)) +@@ -6920,7 +6922,7 @@ function_arg_padding (enum machine_mode mode, const_tr + existing library interfaces. + + Doubleword align SPE vectors. +- Quadword align Altivec vectors. ++ Quadword align Altivec/VSX vectors. + Quadword align large synthetic vector types. */ + + int +@@ -6937,7 +6939,7 @@ function_arg_boundary (enum machine_mode mode, tree ty + && int_size_in_bytes (type) >= 8 + && int_size_in_bytes (type) < 16)) + return 64; +- else if ((ALTIVEC_VECTOR_MODE (mode) || VSX_VECTOR_MODE (mode)) ++ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) >= 16)) + return 128; +@@ -7082,8 +7084,7 @@ function_arg_advance (CUMULATIVE_ARGS *cum, enum machi + cum->nargs_prototype--; + + if (TARGET_ALTIVEC_ABI +- && (ALTIVEC_VECTOR_MODE (mode) +- || VSX_VECTOR_MODE (mode) ++ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) == 16))) + { +@@ -7677,8 +7678,7 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode + else + return gen_rtx_REG (mode, cum->vregno); + else if (TARGET_ALTIVEC_ABI +- && (ALTIVEC_VECTOR_MODE (mode) +- || VSX_VECTOR_MODE (mode) ++ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) == 16))) + { +@@ -15803,6 +15803,10 @@ rs6000_emit_vector_compare_inner (enum rtx_code code, + case EQ: + case GT: + case GTU: ++ case ORDERED: ++ case UNORDERED: ++ case UNEQ: ++ case LTGT: + mask = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, + mask, +@@ -16007,7 +16011,7 @@ rs6000_emit_vector_cond_expr (rtx dest, rtx op_true, r + op_false = tmp; + } + +- cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, const0_rtx); ++ cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, CONST0_RTX (dest_mode)); + emit_insn (gen_rtx_SET (VOIDmode, + dest, + gen_rtx_IF_THEN_ELSE (dest_mode, +@@ -18280,7 +18284,7 @@ emit_frame_save (rtx frame_reg, rtx frame_ptr, enum ma + + /* Some cases that need register indexed addressing. */ + if ((TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode)) +- || (TARGET_VSX && VSX_VECTOR_MODE (mode)) ++ || (TARGET_VSX && ALTIVEC_OR_VSX_VECTOR_MODE (mode)) + || (TARGET_E500_DOUBLE && mode == DFmode) + || (TARGET_SPE_ABI + && SPE_VECTOR_MODE (mode) +@@ -18427,7 +18431,7 @@ rs6000_savres_routine_name (rs6000_stack_t *info, int + } + else if (DEFAULT_ABI == ABI_AIX) + { +-#ifndef POWERPC_LINUX ++#if !defined(POWERPC_LINUX) && !defined(POWERPC_NETBSD) + /* No out-of-line save/restore routines for GPRs on AIX. */ + gcc_assert (!TARGET_AIX || !gpr); + #endif +@@ -18437,7 +18441,7 @@ rs6000_savres_routine_name (rs6000_stack_t *info, int + prefix = (savep + ? (lr ? "_savegpr0_" : "_savegpr1_") + : (lr ? "_restgpr0_" : "_restgpr1_")); +-#ifdef POWERPC_LINUX ++#if defined(POWERPC_LINUX) || defined(POWERPC_NETBSD) + else if (lr) + prefix = (savep ? "_savefpr_" : "_restfpr_"); + #endif +@@ -18504,7 +18508,7 @@ rs6000_emit_stack_reset (rs6000_stack_t *info, + { + /* This blockage is needed so that sched doesn't decide to move + the sp change before the register restores. */ +- if (frame_reg_rtx != sp_reg_rtx ++ if (DEFAULT_ABI == ABI_V4 + || (TARGET_SPE_ABI + && info->spe_64bit_regs_used != 0 + && info->first_gp_reg_save != 32)) +@@ -18701,7 +18705,7 @@ rs6000_savres_strategy (rs6000_stack_t *info, bool sav + strategy = (using_multiple_p + | (savres_fprs_inline << 1) + | (savres_gprs_inline << 2)); +-#ifdef POWERPC_LINUX ++#if defined(POWERPC_LINUX) || defined(POWERPC_NETBSD) + if (TARGET_64BIT) + { + if (!savres_fprs_inline) +@@ -25565,14 +25569,13 @@ rs6000_function_value (const_tree valtype, + else if (TREE_CODE (valtype) == COMPLEX_TYPE + && targetm.calls.split_complex_arg) + return rs6000_complex_function_value (mode); ++ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same ++ return register is used in both cases, and we won't see V2DImode/V2DFmode ++ for pure altivec, combine the two cases. */ + else if (TREE_CODE (valtype) == VECTOR_TYPE + && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI +- && ALTIVEC_VECTOR_MODE (mode)) ++ && ALTIVEC_OR_VSX_VECTOR_MODE (mode)) + regno = ALTIVEC_ARG_RETURN; +- else if (TREE_CODE (valtype) == VECTOR_TYPE +- && TARGET_VSX && TARGET_ALTIVEC_ABI +- && VSX_VECTOR_MODE (mode)) +- regno = ALTIVEC_ARG_RETURN; + else if (TARGET_E500_DOUBLE && TARGET_HARD_FLOAT + && (mode == DFmode || mode == DCmode + || mode == TFmode || mode == TCmode)) +@@ -25611,11 +25614,11 @@ rs6000_libcall_value (enum machine_mode mode) + && TARGET_HARD_FLOAT && TARGET_FPRS + && ((TARGET_SINGLE_FLOAT && mode == SFmode) || TARGET_DOUBLE_FLOAT)) + regno = FP_ARG_RETURN; +- else if (ALTIVEC_VECTOR_MODE (mode) ++ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same ++ return register is used in both cases, and we won't see V2DImode/V2DFmode ++ for pure altivec, combine the two cases. */ ++ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI) +- regno = ALTIVEC_ARG_RETURN; +- else if (VSX_VECTOR_MODE (mode) +- && TARGET_VSX && TARGET_ALTIVEC_ABI) + regno = ALTIVEC_ARG_RETURN; + else if (COMPLEX_MODE_P (mode) && targetm.calls.split_complex_arg) + return rs6000_complex_function_value (mode); diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.h b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.h new file mode 100644 index 000000000..18ad963f1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.h @@ -0,0 +1,63 @@ +$NetBSD$ + +--- gcc/config/rs6000/rs6000.h.orig Mon Mar 7 19:40:15 2011 ++++ gcc/config/rs6000/rs6000.h +@@ -1038,10 +1038,9 @@ extern unsigned rs6000_pointer_size; + + /* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate + enough space to account for vectors in FP regs. */ +-#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ +- (TARGET_VSX \ +- && ((MODE) == VOIDmode || VSX_VECTOR_MODE (MODE) \ +- || ALTIVEC_VECTOR_MODE (MODE)) \ ++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ ++ (TARGET_VSX \ ++ && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ + && FP_REGNO_P (REGNO) \ + ? V2DFmode \ + : choose_hard_reg_mode ((REGNO), (NREGS), false)) +@@ -1057,25 +1056,16 @@ extern unsigned rs6000_pointer_size; + ((MODE) == V4SFmode \ + || (MODE) == V2DFmode) \ + +-#define VSX_SCALAR_MODE(MODE) \ +- ((MODE) == DFmode) +- +-#define VSX_MODE(MODE) \ +- (VSX_VECTOR_MODE (MODE) \ +- || VSX_SCALAR_MODE (MODE)) +- +-#define VSX_MOVE_MODE(MODE) \ +- (VSX_VECTOR_MODE (MODE) \ +- || VSX_SCALAR_MODE (MODE) \ +- || ALTIVEC_VECTOR_MODE (MODE) \ +- || (MODE) == TImode) +- + #define ALTIVEC_VECTOR_MODE(MODE) \ + ((MODE) == V16QImode \ + || (MODE) == V8HImode \ + || (MODE) == V4SFmode \ + || (MODE) == V4SImode) + ++#define ALTIVEC_OR_VSX_VECTOR_MODE(MODE) \ ++ (ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE) \ ++ || (MODE) == V2DImode) ++ + #define SPE_VECTOR_MODE(MODE) \ + ((MODE) == V4HImode \ + || (MODE) == V2SFmode \ +@@ -1118,10 +1108,10 @@ extern unsigned rs6000_pointer_size; + ? ALTIVEC_VECTOR_MODE (MODE2) \ + : ALTIVEC_VECTOR_MODE (MODE2) \ + ? ALTIVEC_VECTOR_MODE (MODE1) \ +- : VSX_VECTOR_MODE (MODE1) \ +- ? VSX_VECTOR_MODE (MODE2) \ +- : VSX_VECTOR_MODE (MODE2) \ +- ? VSX_VECTOR_MODE (MODE1) \ ++ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \ ++ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \ ++ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \ ++ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \ + : 1) + + /* Post-reload, we can't use any new AltiVec registers, as we already diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.md b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.md new file mode 100644 index 000000000..82d02636b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_rs6000.md @@ -0,0 +1,101 @@ +$NetBSD$ + +--- gcc/config/rs6000/rs6000.md.orig Wed Nov 3 13:55:26 2010 ++++ gcc/config/rs6000/rs6000.md +@@ -2483,8 +2483,19 @@ + if (GET_CODE (addr1) == PLUS) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); +- addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); ++ if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); ++ addr2 = op2; ++ } ++ else ++ addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + } ++ else if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); ++ addr2 = op2; ++ } + else + { + emit_move_insn (op2, GEN_INT (4)); +@@ -2533,8 +2544,19 @@ + if (GET_CODE (addr1) == PLUS) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); +- addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); ++ if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); ++ addr2 = op2; ++ } ++ else ++ addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1)); + } ++ else if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); ++ addr2 = op2; ++ } + else + { + emit_move_insn (op2, GEN_INT (4)); +@@ -2614,8 +2636,19 @@ + if (GET_CODE (addr1) == PLUS) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); +- addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); ++ if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); ++ addr2 = op2; ++ } ++ else ++ addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + } ++ else if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); ++ addr2 = op2; ++ } + else + { + emit_move_insn (op2, GEN_INT (4)); +@@ -2659,8 +2692,19 @@ + if (GET_CODE (addr1) == PLUS) + { + emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4))); +- addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); ++ if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2)); ++ addr2 = op2; ++ } ++ else ++ addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1)); + } ++ else if (TARGET_AVOID_XFORM) ++ { ++ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4))); ++ addr2 = op2; ++ } + else + { + emit_move_insn (op2, GEN_INT (4)); +@@ -12473,7 +12517,11 @@ + [(set (match_operand 0 "memory_operand" "=m") + (unspec [(const_int 0)] UNSPEC_PROBE_STACK))] + "" +- "{st%U0%X0|stw%U0%X0} 0,%0" ++ "* ++{ ++ operands[1] = gen_rtx_REG (Pmode, 0); ++ return \"{st%U0%X0|stw%U0%X0} %1,%0\"; ++}" + [(set_attr "type" "store") + (set_attr "length" "4")]) + diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_sysv4.h b/lang/gcc45/patches/patch-gcc_config_rs6000_sysv4.h new file mode 100644 index 000000000..ad4b79e00 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_sysv4.h @@ -0,0 +1,89 @@ +$NetBSD$ + +--- gcc/config/rs6000/sysv4.h.orig Wed Nov 3 13:55:26 2010 ++++ gcc/config/rs6000/sysv4.h +@@ -120,7 +120,12 @@ do { \ + else if (!strcmp (rs6000_abi_name, "gnu")) \ + rs6000_current_abi = ABI_V4; \ + else if (!strcmp (rs6000_abi_name, "netbsd")) \ +- rs6000_current_abi = ABI_V4; \ ++ { \ ++ if (TARGET_64BIT) \ ++ rs6000_current_abi = ABI_AIX; \ ++ else \ ++ rs6000_current_abi = ABI_V4; \ ++ } \ + else if (!strcmp (rs6000_abi_name, "openbsd")) \ + rs6000_current_abi = ABI_V4; \ + else if (!strcmp (rs6000_abi_name, "i960-old")) \ +@@ -618,6 +623,7 @@ SVR4_ASM_SPEC \ + #endif + + /* Pass -G xxx to the compiler and set correct endian mode. */ ++#undef CC1_SPEC + #define CC1_SPEC "%{G*} %(cc1_cpu) \ + %{mlittle|mlittle-endian: %(cc1_endian_little); \ + mbig |mbig-endian : %(cc1_endian_big); \ +@@ -641,7 +647,8 @@ SVR4_ASM_SPEC \ + %{msdata: -msdata=default} \ + %{mno-sdata: -msdata=none} \ + %{!mbss-plt: %{!msecure-plt: %(cc1_secure_plt_default)}} \ +-%{profile: -p}" ++%{profile: -p} \ ++%(cc1_os_netbsd)" + + /* Don't put -Y P, for cross compilers. */ + #ifndef CROSS_DIRECTORY_STRUCTURE +@@ -913,7 +920,7 @@ SVR4_ASM_SPEC \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +-#if defined(HAVE_LD_EH_FRAME_HDR) ++#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC) + # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " + #endif + +@@ -950,28 +957,23 @@ SVR4_ASM_SPEC \ + -Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}" + + /* NetBSD support. */ +-#define LIB_NETBSD_SPEC "\ +-%{profile:-lgmon -lc_p} %{!profile:-lc}" ++#define LIB_NETBSD_SPEC NETBSD_LIB_SPEC + +-#define STARTFILE_NETBSD_SPEC "\ +-ncrti.o%s crt0.o%s \ +-%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" ++#define STARTFILE_NETBSD_SPEC NETBSD_STARTFILE_SPEC + +-#define ENDFILE_NETBSD_SPEC "\ +-%{!shared:crtend.o%s} %{shared:crtendS.o%s} \ +-ncrtn.o%s" ++#define ENDFILE_NETBSD_SPEC NETBSD_ENDFILE_SPEC + + #define LINK_START_NETBSD_SPEC "\ + " + +-#define LINK_OS_NETBSD_SPEC "\ +-%{!shared: %{!static: \ +- %{rdynamic:-export-dynamic} \ +- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}" ++#define LINK_OS_NETBSD_SPEC NETBSD_LINK_SPEC_ELF + + #define CPP_OS_NETBSD_SPEC "\ + -D__powerpc__ -D__NetBSD__ -D__KPRINTF_ATTRIBUTE__" + ++#define CC1_OS_NETBSD_SPEC "\ ++%{cxx-isystem}" ++ + /* OpenBSD support. */ + #ifndef LIB_OPENBSD_SPEC + #define LIB_OPENBSD_SPEC "%{!shared:%{pthread:-lpthread%{p:_p}%{!p:%{pg:_p}}}} %{!shared:-lc%{p:_p}%{!p:%{pg:_p}}}" +@@ -1064,6 +1066,7 @@ ncrtn.o%s" + { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ + { "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \ + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ ++ { "cc1_os_netbsd", CC1_OS_NETBSD_SPEC }, \ + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd b/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd new file mode 100644 index 000000000..47d33d55f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd @@ -0,0 +1,38 @@ +$NetBSD$ + +--- gcc/config/rs6000/t-netbsd.orig Tue Apr 21 19:03:23 2009 ++++ gcc/config/rs6000/t-netbsd +@@ -18,15 +18,12 @@ + # along with GCC; see the file COPYING3. If not see + # . + +-LIB2FUNCS_EXTRA = tramp.S ++LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/tramp.asm + + LIB2FUNCS_STATIC_EXTRA = crtsavfpr.S crtresfpr.S \ + crtsavgpr.S crtresgpr.S \ + crtresxfpr.S crtresxgpr.S + +-tramp.S: $(srcdir)/config/rs6000/tramp.asm +- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S +- + crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm + cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S + +@@ -67,9 +64,6 @@ MULTILIB_EXCEPTIONS = + MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT} + + LIBGCC = stmp-multilib +-INSTALL_LIBGCC = install-multilib +-EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \ +- crtbeginS$(objext) crtendS$(objext) crtbeginT$(objext) + + $(T)crtsavfpr$(objext): crtsavfpr.S + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext) +@@ -88,3 +82,6 @@ $(T)crtresxfpr$(objext): crtresxfpr.S + + $(T)crtresxgpr$(objext): crtresxgpr.S + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext) ++INSTALL_LIBGCC = install-multilib ++EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \ ++ crtbeginS$(objext) crtendS$(objext) crtbeginT$(objext) diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd64 b/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd64 new file mode 100644 index 000000000..5100a0c81 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_t-netbsd64 @@ -0,0 +1,39 @@ +$NetBSD$ + +--- gcc/config/rs6000/t-netbsd64.orig Wed May 21 19:48:54 2014 ++++ gcc/config/rs6000/t-netbsd64 +@@ -0,0 +1,34 @@ ++# Support for NetBSD PowerPC64 ELF targets (ELF64 ABI). ++ ++LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/tramp.asm \ ++ $(srcdir)/config/rs6000/ppc64-fp.c \ ++ $(srcdir)/config/rs6000/darwin-ldouble.c ++ ++TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc ++ ++MULTILIB_OPTIONS = m64/m32 msoft-float ++MULTILIB_DIRNAMES = 64 32 soft-float ++MULTILIB_EXTRA_OPTS = fPIC mstrict-align ++MULTILIB_EXCEPTIONS = m64/msoft-float ++MULTILIB_EXCLUSIONS = m64/!m32/msoft-float ++# XXX this is wrong ++MULTILIB_OSDIRNAMES = ../lib ../lib32 soft-float ++ ++MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) ++ ++# We want fine grained libraries, so use the new code to build the ++# floating point emulation libraries. ++# fp-bit is only to be used by 32-bit multilibs ++FPBIT = fp-bit32.c ++DPBIT = dp-bit32.c ++ ++dp-bit32.c: $(srcdir)/config/fp-bit.c ++ ( echo '#ifndef __powerpc64__'; \ ++ cat $(srcdir)/config/fp-bit.c; \ ++ echo '#endif' ) > dp-bit32.c ++ ++fp-bit32.c: $(srcdir)/config/fp-bit.c ++ ( echo '#ifndef __powerpc64__'; \ ++ echo '#define FLOAT'; \ ++ cat $(srcdir)/config/fp-bit.c; \ ++ echo '#endif' ) > fp-bit32.c diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_vector.md b/lang/gcc45/patches/patch-gcc_config_rs6000_vector.md new file mode 100644 index 000000000..a12e5ec36 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_vector.md @@ -0,0 +1,124 @@ +$NetBSD$ + +--- gcc/config/rs6000/vector.md.orig Fri Feb 4 16:31:48 2011 ++++ gcc/config/rs6000/vector.md +@@ -441,27 +441,115 @@ + "VECTOR_UNIT_ALTIVEC_P (mode)" + "") + ++(define_insn_and_split "*vector_uneq" ++ [(set (match_operand:VEC_F 0 "vfloat_operand" "") ++ (uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "") ++ (match_operand:VEC_F 2 "vfloat_operand" "")))] ++ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" ++ "#" ++ "" ++ [(set (match_dup 3) ++ (gt:VEC_F (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 4) ++ (gt:VEC_F (match_dup 2) ++ (match_dup 1))) ++ (set (match_dup 0) ++ (not:VEC_F (ior:VEC_F (match_dup 3) ++ (match_dup 4))))] ++ " ++{ ++ operands[3] = gen_reg_rtx (mode); ++ operands[4] = gen_reg_rtx (mode); ++}") ++ ++(define_insn_and_split "*vector_ltgt" ++ [(set (match_operand:VEC_F 0 "vfloat_operand" "") ++ (ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "") ++ (match_operand:VEC_F 2 "vfloat_operand" "")))] ++ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" ++ "#" ++ "" ++ [(set (match_dup 3) ++ (gt:VEC_F (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 4) ++ (gt:VEC_F (match_dup 2) ++ (match_dup 1))) ++ (set (match_dup 0) ++ (ior:VEC_F (match_dup 3) ++ (match_dup 4)))] ++ " ++{ ++ operands[3] = gen_reg_rtx (mode); ++ operands[4] = gen_reg_rtx (mode); ++}") ++ ++(define_insn_and_split "*vector_ordered" ++ [(set (match_operand:VEC_F 0 "vfloat_operand" "") ++ (ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "") ++ (match_operand:VEC_F 2 "vfloat_operand" "")))] ++ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" ++ "#" ++ "" ++ [(set (match_dup 3) ++ (ge:VEC_F (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 4) ++ (ge:VEC_F (match_dup 2) ++ (match_dup 1))) ++ (set (match_dup 0) ++ (ior:VEC_F (match_dup 3) ++ (match_dup 4)))] ++ " ++{ ++ operands[3] = gen_reg_rtx (mode); ++ operands[4] = gen_reg_rtx (mode); ++}") ++ ++(define_insn_and_split "*vector_unordered" ++ [(set (match_operand:VEC_F 0 "vfloat_operand" "") ++ (unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "") ++ (match_operand:VEC_F 2 "vfloat_operand" "")))] ++ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" ++ "#" ++ "" ++ [(set (match_dup 3) ++ (ge:VEC_F (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 4) ++ (ge:VEC_F (match_dup 2) ++ (match_dup 1))) ++ (set (match_dup 0) ++ (not:VEC_F (ior:VEC_F (match_dup 3) ++ (match_dup 4))))] ++ " ++{ ++ operands[3] = gen_reg_rtx (mode); ++ operands[4] = gen_reg_rtx (mode); ++}") ++ + ;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask + ;; which is in the reverse order that we want + (define_expand "vector_select_" + [(set (match_operand:VEC_L 0 "vlogical_operand" "") + (if_then_else:VEC_L + (ne:CC (match_operand:VEC_L 3 "vlogical_operand" "") +- (const_int 0)) ++ (match_dup 4)) + (match_operand:VEC_L 2 "vlogical_operand" "") + (match_operand:VEC_L 1 "vlogical_operand" "")))] + "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" +- "") ++ "operands[4] = CONST0_RTX (mode);") + + (define_expand "vector_select__uns" + [(set (match_operand:VEC_L 0 "vlogical_operand" "") + (if_then_else:VEC_L + (ne:CCUNS (match_operand:VEC_L 3 "vlogical_operand" "") +- (const_int 0)) ++ (match_dup 4)) + (match_operand:VEC_L 2 "vlogical_operand" "") + (match_operand:VEC_L 1 "vlogical_operand" "")))] + "VECTOR_UNIT_ALTIVEC_OR_VSX_P (mode)" +- "") ++ "operands[4] = CONST0_RTX (mode);") + + ;; Expansions that compare vectors producing a vector result and a predicate, + ;; setting CR6 to indicate a combined status diff --git a/lang/gcc45/patches/patch-gcc_config_rs6000_vsx.md b/lang/gcc45/patches/patch-gcc_config_rs6000_vsx.md new file mode 100644 index 000000000..62313a382 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rs6000_vsx.md @@ -0,0 +1,34 @@ +$NetBSD$ + +--- gcc/config/rs6000/vsx.md.orig Fri Feb 4 16:31:48 2011 ++++ gcc/config/rs6000/vsx.md +@@ -844,7 +844,7 @@ + [(set (match_operand:VSX_L 0 "vsx_register_operand" "=,?wa") + (if_then_else:VSX_L + (ne:CC (match_operand:VSX_L 1 "vsx_register_operand" ",wa") +- (const_int 0)) ++ (match_operand:VSX_L 4 "zero_constant" "")) + (match_operand:VSX_L 2 "vsx_register_operand" ",wa") + (match_operand:VSX_L 3 "vsx_register_operand" ",wa")))] + "VECTOR_MEM_VSX_P (mode)" +@@ -855,7 +855,7 @@ + [(set (match_operand:VSX_L 0 "vsx_register_operand" "=,?wa") + (if_then_else:VSX_L + (ne:CCUNS (match_operand:VSX_L 1 "vsx_register_operand" ",wa") +- (const_int 0)) ++ (match_operand:VSX_L 4 "zero_constant" "")) + (match_operand:VSX_L 2 "vsx_register_operand" ",wa") + (match_operand:VSX_L 3 "vsx_register_operand" ",wa")))] + "VECTOR_MEM_VSX_P (mode)" +@@ -1161,9 +1161,9 @@ + "VECTOR_MEM_VSX_P (mode)" + { + if (INTVAL (operands[3]) == 0) +- return \"xxpermdi %x0,%x1,%x2,1\"; ++ return \"xxpermdi %x0,%x2,%x1,1\"; + else if (INTVAL (operands[3]) == 1) +- return \"xxpermdi %x0,%x2,%x1,0\"; ++ return \"xxpermdi %x0,%x1,%x2,0\"; + else + gcc_unreachable (); + } diff --git a/lang/gcc45/patches/patch-gcc_config_rx_rx.c b/lang/gcc45/patches/patch-gcc_config_rx_rx.c new file mode 100644 index 000000000..d6b3af2e6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rx_rx.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/config/rx/rx.c.orig Wed Mar 16 11:47:59 2011 ++++ gcc/config/rx/rx.c +@@ -2158,10 +2158,10 @@ rx_expand_builtin (tree exp, + if (! valid_psw_flag (op, "clrpsw")) + return NULL_RTX; + return rx_expand_void_builtin_1_arg (op, gen_clrpsw, false); ++ case RX_BUILTIN_SETPSW: + if (! valid_psw_flag (op, "setpsw")) + return NULL_RTX; + return rx_expand_void_builtin_1_arg (op, gen_setpsw, false); +- case RX_BUILTIN_SETPSW: + case RX_BUILTIN_INT: return rx_expand_void_builtin_1_arg + (op, gen_int, false); + case RX_BUILTIN_MACHI: return rx_expand_builtin_mac (exp, gen_machi); diff --git a/lang/gcc45/patches/patch-gcc_config_rx_rx.h b/lang/gcc45/patches/patch-gcc_config_rx_rx.h new file mode 100644 index 000000000..0d60c0688 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rx_rx.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/rx/rx.h.orig Thu Mar 17 10:51:26 2011 ++++ gcc/config/rx/rx.h +@@ -168,7 +168,7 @@ extern enum rx_cpu_types rx_cpu_type; + + #define HANDLE_PRAGMA_PACK_PUSH_POP 1 + +-#define HAVE_PRE_DECCREMENT 1 ++#define HAVE_PRE_DECREMENT 1 + #define HAVE_POST_INCREMENT 1 + + #define MOVE_RATIO(SPEED) ((SPEED) ? 4 : 2) diff --git a/lang/gcc45/patches/patch-gcc_config_rx_rx.md b/lang/gcc45/patches/patch-gcc_config_rx_rx.md new file mode 100644 index 000000000..7eb56d5ae --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_rx_rx.md @@ -0,0 +1,103 @@ +$NetBSD$ + +--- gcc/config/rx/rx.md.orig Wed Apr 13 11:30:48 2011 ++++ gcc/config/rx/rx.md +@@ -709,24 +709,24 @@ + (clobber (reg:CC CC_REG))])] + "" + { +- /* ??? Support other conditions via cstore into a temporary? */ +- if (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE) ++ /* One operand must be a constant or a register, the other must be a register. */ ++ if ( ! CONSTANT_P (operands[2]) ++ && ! CONSTANT_P (operands[3]) ++ && ! (REG_P (operands[2]) && REG_P (operands[3]))) + FAIL; +- /* One operand must be a constant. */ +- if (!CONSTANT_P (operands[2]) && !CONSTANT_P (operands[3])) +- FAIL; + }) + + (define_insn_and_split "*movsicc" +- [(set (match_operand:SI 0 "register_operand" "=r,r") ++ [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (if_then_else:SI +- (match_operator 5 "rx_z_comparison_operator" +- [(match_operand:SI 3 "register_operand" "r,r") +- (match_operand:SI 4 "rx_source_operand" "riQ,riQ")]) +- (match_operand:SI 1 "nonmemory_operand" "i,ri") +- (match_operand:SI 2 "nonmemory_operand" "ri,i"))) ++ (match_operator 5 "comparison_operator" ++ [(match_operand:SI 3 "register_operand" "r,r,r") ++ (match_operand:SI 4 "rx_source_operand" "riQ,riQ,riQ")]) ++ (match_operand:SI 1 "nonmemory_operand" "i,ri,r") ++ (match_operand:SI 2 "nonmemory_operand" "ri,i,r"))) + (clobber (reg:CC CC_REG))] +- "CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])" ++ "(CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])) ++ || (REG_P (operands[1]) && REG_P (operands[2]))" + "#" + "&& reload_completed" + [(const_int 0)] +@@ -743,8 +743,11 @@ + op1 = operands[1]; + op2 = operands[2]; + +- /* If OP2 is the constant, reverse the sense of the move. */ +- if (!CONSTANT_P (operands[1])) ++ /* If OP2 is the constant, reverse the sense of the move. ++ Likewise if both operands are registers but OP1 == OP0. */ ++ if ((! CONSTANT_P (operands[1]) && CONSTANT_P (operands[2])) ++ || (REG_P (operands[1]) && REG_P (operands[2]) ++ && rtx_equal_p (op0, op1))) + { + x = op1, op1 = op2, op2 = x; + cmp_code = reverse_condition (cmp_code); +@@ -753,7 +756,7 @@ + /* If OP2 does not match the output, copy it into place. We have allowed + these alternatives so that the destination can legitimately be one of + the comparison operands without increasing register pressure. */ +- if (!rtx_equal_p (op0, op2)) ++ if (! rtx_equal_p (op0, op2)) + emit_move_insn (op0, op2); + + x = gen_rtx_fmt_ee (cmp_code, VOIDmode, flags, const0_rtx); +@@ -769,14 +772,31 @@ + [(reg CC_REG) (const_int 0)]) + (match_operand:SI 1 "immediate_operand" "Sint08,Sint16,Sint24,i") + (match_dup 0)))] +- "reload_completed" +-{ +- if (GET_CODE (operands[2]) == EQ) +- return "stz\t%1, %0"; +- else +- return "stnz\t%1, %0"; +-} ++ "reload_completed ++ && ((GET_CODE (operands[2]) == EQ) || (GET_CODE (operands[2]) == NE))" ++ { ++ if (GET_CODE (operands[2]) == EQ) ++ return "stz\t%1, %0"; ++ else ++ return "stnz\t%1, %0"; ++ } + [(set_attr "length" "4,5,6,7")] ++) ++ ++(define_insn "*stcc_reg" ++ [(set (match_operand:SI 0 "register_operand" "+r,r,r,r,r,r") ++ (if_then_else:SI ++ (match_operator 2 "comparison_operator" ++ [(reg CC_REG) (const_int 0)]) ++ (match_operand:SI 1 "nonmemory_operand" ++ "r,Uint04,Sint08,Sint16,Sint24,i") ++ (match_dup 0)))] ++ "reload_completed" ++ { ++ PUT_CODE (operands[2], reverse_condition (GET_CODE (operands[2]))); ++ return "b%B2 1f\n\tmov %1, %0\n1:"; ++ } ++ [(set_attr "length" "3,3,4,5,6,7")] + ) + + ;; Arithmetic Instructions diff --git a/lang/gcc45/patches/patch-gcc_config_sh_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_sh_linux-unwind.h new file mode 100644 index 000000000..e431b709d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sh_linux-unwind.h @@ -0,0 +1,33 @@ +$NetBSD$ + +--- gcc/config/sh/linux-unwind.h.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/sh/linux-unwind.h +@@ -1,5 +1,6 @@ + /* DWARF2 EH unwinding support for SH Linux. +- Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation, ++ Inc. + + This file is part of GCC. + +@@ -80,9 +81,9 @@ shmedia_fallback_frame_state (struct _Unwind_Context * + && (*(unsigned long *) (pc+11) == 0x6ff0fff0)) + { + struct rt_sigframe { +- struct siginfo *pinfo; ++ siginfo_t *pinfo; + void *puc; +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. +@@ -179,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *conte + && (*(unsigned short *) (pc+14) == 0x00ad)))) + { + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. diff --git a/lang/gcc45/patches/patch-gcc_config_sh_sh.c b/lang/gcc45/patches/patch-gcc_config_sh_sh.c new file mode 100644 index 000000000..1e8d6ca8c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sh_sh.c @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/config/sh/sh.c.orig Wed May 5 22:12:17 2010 ++++ gcc/config/sh/sh.c +@@ -1945,7 +1945,10 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code compar + else if (op2h != CONST0_RTX (SImode)) + msw_taken = LTU; + else +- break; ++ { ++ msw_skip = swap_condition (LTU); ++ break; ++ } + msw_skip = swap_condition (msw_taken); + } + break; +@@ -1998,6 +2001,13 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code compar + { + operands[1] = op1h; + operands[2] = op2h; ++ if (reload_completed ++ && ! arith_reg_or_0_operand (op2h, SImode) ++ && (true_regnum (op1h) || (comparison != EQ && comparison != NE))) ++ { ++ emit_move_insn (scratch, operands[2]); ++ operands[2] = scratch; ++ } + } + + operands[3] = skip_label = gen_label_rtx (); +@@ -11428,10 +11438,6 @@ sh_output_mi_thunk (FILE *file, tree thunk_fndecl ATTR + } + + sh_reorg (); +- +- if (optimize > 0 && flag_delayed_branch) +- dbr_schedule (insns); +- + shorten_branches (insns); + final_start_function (insns, file, 1); + final (insns, file, 1); diff --git a/lang/gcc45/patches/patch-gcc_config_sh_sh.md b/lang/gcc45/patches/patch-gcc_config_sh_sh.md new file mode 100644 index 000000000..c8e1196fa --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sh_sh.md @@ -0,0 +1,63 @@ +$NetBSD$ + +--- gcc/config/sh/sh.md.orig Sat Nov 21 22:51:07 2009 ++++ gcc/config/sh/sh.md +@@ -149,6 +149,7 @@ + (UNSPEC_DIV_INV_TABLE 37) + (UNSPEC_ASHIFTRT 35) + (UNSPEC_THUNK 36) ++ (UNSPEC_CHKADD 38) + (UNSPEC_SP_SET 40) + (UNSPEC_SP_TEST 41) + (UNSPEC_MOVUA 42) +@@ -8438,6 +8439,22 @@ label: + i++; + }") + ++;; op0 = op1 + r12 but hide it before reload completed. See the comment ++;; in symGOT_load expand. ++ ++(define_insn_and_split "chk_guard_add" ++ [(set (match_operand:SI 0 "register_operand" "=&r") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "r") ++ (reg:SI PIC_REG)] ++ UNSPEC_CHKADD))] ++ "TARGET_SH1" ++ "#" ++ "TARGET_SH1 && reload_completed" ++ [(set (match_dup 0) (reg:SI PIC_REG)) ++ (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))] ++ "" ++ [(set_attr "type" "arith")]) ++ + (define_expand "sym_label2reg" + [(set (match_operand:SI 0 "" "") + (const:SI (unspec:SI [(match_operand:SI 1 "" "") +@@ -8480,13 +8497,9 @@ label: + else + emit_move_insn (operands[2], operands[1]); + +- emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, +- operands[2], +- gen_rtx_REG (Pmode, PIC_REG))); +- + /* When stack protector inserts codes after the result is set to +- R0, @(rX, r12) will cause a spill failure for R0. Don't schedule +- insns to avoid combining (set A (plus rX r12)) and (set op0 (mem A)) ++ R0, @(rX, r12) will cause a spill failure for R0. Use a unspec ++ insn to avoid combining (set A (plus rX r12)) and (set op0 (mem A)) + when rX is a GOT address for the guard symbol. Ugly but doesn't + matter because this is a rare situation. */ + if (!TARGET_SHMEDIA +@@ -8496,7 +8509,10 @@ label: + && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == SYMBOL_REF + && strcmp (XSTR (XVECEXP (XEXP (operands[1], 0), 0, 0), 0), + \"__stack_chk_guard\") == 0) +- emit_insn (gen_blockage ()); ++ emit_insn (gen_chk_guard_add (operands[3], operands[2])); ++ else ++ emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, operands[2], ++ gen_rtx_REG (Pmode, PIC_REG))); + + /* N.B. This is not constant for a GOTPLT relocation. */ + mem = gen_rtx_MEM (Pmode, operands[3]); diff --git a/lang/gcc45/patches/patch-gcc_config_sh_t-netbsd b/lang/gcc45/patches/patch-gcc_config_sh_t-netbsd new file mode 100644 index 000000000..e52f33dc7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sh_t-netbsd @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/config/sh/t-netbsd.orig Sat Aug 22 21:43:07 2009 ++++ gcc/config/sh/t-netbsd +@@ -19,6 +19,10 @@ + TARGET_LIBGCC2_CFLAGS = -fpic -mieee + LIB1ASMFUNCS_CACHE = _ic_invalidate + ++# Use sh specific libgcc-std.ver to avoid exporting some ++# lib1func routines which shoud not be called via PLT. ++#SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver ++ + LIB2FUNCS_EXTRA= + + EXTRA_MULTILIB_PARTS= diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_netbsd-elf.h b/lang/gcc45/patches/patch-gcc_config_sparc_netbsd-elf.h new file mode 100644 index 000000000..2a29807cd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_netbsd-elf.h @@ -0,0 +1,79 @@ +$NetBSD$ + +--- gcc/config/sparc/netbsd-elf.h.orig Thu Aug 2 10:49:31 2007 ++++ gcc/config/sparc/netbsd-elf.h +@@ -112,7 +112,7 @@ along with GCC; see the file COPYING3. If not see + + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) + + #undef SPARC_DEFAULT_CMODEL +-#define SPARC_DEFAULT_CMODEL CM_MEDANY ++#define SPARC_DEFAULT_CMODEL CM_MEDMID + + #endif + +@@ -134,7 +134,8 @@ along with GCC; see the file COPYING3. If not see + %{!msupersparc:-mcpu=ultrasparc}}}}}}} \ + %{!mno-vis:%{!mcpu=v9:-mvis}} \ + %{p:-mcmodel=medlow} \ +- %{pg:-mcmodel=medlow}}" ++ %{pg:-mcmodel=medlow}} " \ ++ NETBSD_CC1_AND_CC1PLUS_SPEC + + #define CC1_SPEC64 \ + "%{sun4:} %{target:} \ +@@ -153,9 +154,29 @@ along with GCC; see the file COPYING3. If not see + %{!mv8*: \ + %{!msupersparc:-mcpu=cypress}}}}}}}} \ + %{!m32: \ +- %{p:-mcmodel=medlow} \ +- %{pg:-mcmodel=medlow}}" ++ %{p:-mcmodel=medlow} \ ++ %{pg:-mcmodel=medlow}} " \ ++ NETBSD_CC1_AND_CC1PLUS_SPEC + ++#if defined(SPARC_BI_ARCH) || defined(__arch64__) ++/* add code model specific object to the link line for 64bit */ ++#define LINK_SPEC_CODE_MODEL64 \ ++ "%{!shared:" \ ++ "%{!mcmodel=*:%:if-exists(%R/usr/lib/sparc_mcmedmid.o)}" \ ++ "%{mcmodel=medlow:%:if-exists(%R/usr/lib/sparc_mcmedlow.o)}" \ ++ "%{mcmodel=medmid:%:if-exists(%R/usr/lib/sparc_mcmedmid.o)}" \ ++ "%{mcmodel=medany:%:if-exists(%R/usr/lib/sparc_mcmedany.o)}" \ ++ "}" ++ ++#ifdef SPARC_BI_ARCH ++#define LINK_SPEC_CODE_MODEL "%{!m32:" LINK_SPEC_CODE_MODEL64 "}" ++#else ++#define LINK_SPEC_CODE_MODEL LINK_SPEC_CODE_MODEL64 ++#endif ++#else ++#define LINK_SPEC_CODE_MODEL "" ++#endif ++ + /* Make sure we use the right output format. Pick a default and then + make sure -m32/-m64 switch to the right one. */ + +@@ -172,7 +193,8 @@ along with GCC; see the file COPYING3. If not see + #define LINK_SPEC \ + "%(link_arch) \ + %{!mno-relax:%{!r:-relax}} \ +- %(netbsd_link_spec)" ++ %(netbsd_link_spec) " \ ++ LINK_SPEC_CODE_MODEL + + #define NETBSD_ENTRY_POINT "__start" + +@@ -263,6 +285,13 @@ along with GCC; see the file COPYING3. If not see + || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc */ + + #endif /* SPARC_BI_ARCH */ ++ ++#ifdef HAVE_AS_TLS ++#undef TARGET_SUN_TLS ++#undef TARGET_GNU_TLS ++#define TARGET_SUN_TLS 0 ++#define TARGET_GNU_TLS 1 ++#endif + + /* We use GNU ld so undefine this so that attribute((init_priority)) works. */ + #undef CTORS_SECTION_ASM_OP diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sol2-64.h b/lang/gcc45/patches/patch-gcc_config_sparc_sol2-64.h new file mode 100644 index 000000000..9349acf89 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sol2-64.h @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/config/sparc/sol2-64.h.orig Tue Mar 2 23:35:12 2010 ++++ gcc/config/sparc/sol2-64.h +@@ -1,7 +1,7 @@ + /* Definitions of target machine for GCC, for bi-arch SPARC + running Solaris 2, defaulting to 64-bit code generation. + +- Copyright (C) 1999, 2010 Free Software Foundation, Inc. ++ Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -19,7 +19,4 @@ You should have received a copy of the GNU General Pub + along with GCC; see the file COPYING3. If not see + . */ + +-#undef TARGET_DEFAULT +-#define TARGET_DEFAULT \ +- (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \ +- MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) ++#define TARGET_64BIT_DEFAULT 1 diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sol2-unwind.h b/lang/gcc45/patches/patch-gcc_config_sparc_sol2-unwind.h new file mode 100644 index 000000000..4494d2f13 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sol2-unwind.h @@ -0,0 +1,32 @@ +$NetBSD$ + +--- gcc/config/sparc/sol2-unwind.h.orig Wed Oct 27 20:34:57 2010 ++++ gcc/config/sparc/sol2-unwind.h +@@ -123,10 +123,10 @@ sparc64_fallback_frame_state (struct _Unwind_Context * + /* This matches the call_user_handler pattern for Solaris 10. + There are 2 cases so we look for the return address of the + caller's caller frame in order to do more pattern matching. */ +- unsigned int sah_pattern +- = *(unsigned int *)(*(unsigned long *)(this_cfa + 176 + 15*8) - 4); ++ unsigned long sah_address ++ = *(unsigned long *)(this_cfa + 176 + 15*8); + +- if (sah_pattern == 0x92100019) ++ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) + /* This is the same setup as for Solaris 9, see below. */ + regs_off = 176 + 176 + 176 + 304; + else +@@ -371,10 +371,10 @@ sparc_fallback_frame_state (struct _Unwind_Context *co + /* This matches the call_user_handler pattern for Solaris 10. + There are 2 cases so we look for the return address of the + caller's caller frame in order to do more pattern matching. */ +- unsigned int sah_pattern +- = *(unsigned int *)(*(unsigned int *)(this_cfa + 96 + 15*4) - 4); ++ unsigned int sah_address ++ = *(unsigned int *)(this_cfa + 96 + 15*4); + +- if (sah_pattern == 0x92100019) ++ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) + /* This is the same setup as for Solaris 9, see below. */ + regs_off = 96 + 96 + 96 + 160; + else diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sol2.h b/lang/gcc45/patches/patch-gcc_config_sparc_sol2.h new file mode 100644 index 000000000..76333a7d8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sol2.h @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/config/sparc/sol2.h.orig Sat Nov 20 22:05:08 2010 ++++ gcc/config/sparc/sol2.h +@@ -153,11 +153,18 @@ along with GCC; see the file COPYING3. If not see + #undef SUN_INTEGER_MULTIPLY_64 + #define SUN_INTEGER_MULTIPLY_64 1 + +-/* Solaris allows 64 bit out and global registers in 32 bit mode. +- sparc_override_options will disable V8+ if not generating V9 code. */ ++/* Solaris allows 64-bit out and global registers to be used in 32-bit mode. ++ sparc_override_options will disable V8+ if either not generating V9 code ++ or generating 64-bit code. */ + #undef TARGET_DEFAULT +-#define TARGET_DEFAULT (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU \ +- + MASK_LONG_DOUBLE_128) ++#ifdef TARGET_64BIT_DEFAULT ++#define TARGET_DEFAULT \ ++ (MASK_V9 + MASK_64BIT + MASK_PTR64 + MASK_STACK_BIAS + \ ++ MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) ++#else ++#define TARGET_DEFAULT \ ++ (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) ++#endif + + /* Solaris-specific #pragmas are implemented on top of attributes. Hook in + the bits from config/sol2.c. */ diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sparc-protos.h b/lang/gcc45/patches/patch-gcc_config_sparc_sparc-protos.h new file mode 100644 index 000000000..4766f0186 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sparc-protos.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/config/sparc/sparc-protos.h.orig Fri Apr 2 19:54:46 2010 ++++ gcc/config/sparc/sparc-protos.h +@@ -48,6 +48,7 @@ extern bool sparc_can_use_return_insn_p (void); + extern int check_pic (int); + extern int short_branch (int, int); + extern void sparc_profile_hook (int); ++extern void sparc_optimization_options (int, int); + extern void sparc_override_options (void); + extern void sparc_output_scratch_registers (FILE *); + diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sparc.c b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.c new file mode 100644 index 000000000..5872d8a1c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.c @@ -0,0 +1,138 @@ +$NetBSD$ + +--- gcc/config/sparc/sparc.c.orig Mon Jan 3 12:06:19 2011 ++++ gcc/config/sparc/sparc.c +@@ -627,6 +627,17 @@ sparc_handle_option (size_t code, const char *arg, int + return true; + } + ++/* Specify default optimizations. */ ++ ++void ++sparc_optimization_options (int l ATTRIBUTE_UNUSED, int s ATTRIBUTE_UNUSED) ++{ ++ /* Disable save slot sharing for call-clobbered registers by default. ++ The IRA sharing algorithm works on single registers only and this ++ pessimizes for double floating-point registers. */ ++ flag_ira_share_save_slots = 0; ++} ++ + /* Validate and override various options, and do some machine dependent + initialization. */ + +@@ -2767,11 +2778,6 @@ eligible_for_return_delay (rtx trial) + if (get_attr_length (trial) != 1) + return 0; + +- /* If there are any call-saved registers, we should scan TRIAL if it +- does not reference them. For now just make it easy. */ +- if (num_gfregs) +- return 0; +- + /* If the function uses __builtin_eh_return, the eh_return machinery + occupies the delay slot. */ + if (crtl->calls_eh_return) +@@ -4093,7 +4099,7 @@ save_or_restore_regs (int low, int high, rtx base, int + emit_move_insn (gen_rtx_REG (mode, regno), mem); + + /* Always preserve double-word alignment. */ +- offset = (offset + 7) & -8; ++ offset = (offset + 8) & -8; + } + } + +@@ -4200,7 +4206,7 @@ sparc_expand_prologue (void) + example, the regrename pass has special provisions to not rename to + non-leaf registers in a leaf function. */ + sparc_leaf_function_p +- = optimize > 0 && leaf_function_p () && only_leaf_regs_used (); ++ = optimize > 0 && current_function_is_leaf && only_leaf_regs_used (); + + /* Need to use actual_fsize, since we are also allocating + space for our callee (and our own register save area). */ +@@ -4230,8 +4236,9 @@ sparc_expand_prologue (void) + else if (actual_fsize <= 8192) + { + insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096))); +- /* %sp is still the CFA register. */ + RTX_FRAME_RELATED_P (insn) = 1; ++ ++ /* %sp is still the CFA register. */ + insn + = emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize))); + } +@@ -4253,8 +4260,18 @@ sparc_expand_prologue (void) + else if (actual_fsize <= 8192) + { + insn = emit_insn (gen_save_register_window (GEN_INT (-4096))); ++ + /* %sp is not the CFA register anymore. */ + emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize))); ++ ++ /* Make sure no %fp-based store is issued until after the frame is ++ established. The offset between the frame pointer and the stack ++ pointer is calculated relative to the value of the stack pointer ++ at the end of the function prologue, and moving instructions that ++ access the stack via the frame pointer between the instructions ++ that decrement the stack pointer could result in accessing the ++ register window save area, which is volatile. */ ++ emit_insn (gen_frame_blockage ()); + } + else + { +@@ -4324,6 +4341,7 @@ bool + sparc_can_use_return_insn_p (void) + { + return sparc_prologue_data_valid_p ++ && num_gfregs == 0 + && (actual_fsize == 0 || !sparc_leaf_function_p); + } + +@@ -4425,18 +4443,20 @@ output_return (rtx insn) + machinery occupies the delay slot. */ + gcc_assert (! final_sequence); + +- if (! flag_delayed_branch) +- fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file); ++ if (flag_delayed_branch) ++ { ++ if (TARGET_V9) ++ fputs ("\treturn\t%i7+8\n", asm_out_file); ++ else ++ fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); + +- if (TARGET_V9) +- fputs ("\treturn\t%i7+8\n", asm_out_file); ++ fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); ++ } + else +- fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); +- +- if (flag_delayed_branch) +- fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); +- else +- fputs ("\t nop\n", asm_out_file); ++ { ++ fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file); ++ fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file); ++ } + } + else if (final_sequence) + { +@@ -9104,6 +9124,7 @@ sparc_file_end (void) + void_list_node)); + DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL, + NULL_TREE, void_type_node); ++ TREE_PUBLIC (decl) = 1; + TREE_STATIC (decl) = 1; + make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl)); + DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; +@@ -9267,7 +9288,7 @@ sparc_expand_compare_and_swap_12 (rtx result, rtx mem, + bool + sparc_frame_pointer_required (void) + { +- return !(leaf_function_p () && only_leaf_regs_used ()); ++ return !(current_function_is_leaf && only_leaf_regs_used ()); + } + + /* The way this is structured, we can't eliminate SFP in favor of SP diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sparc.h b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.h new file mode 100644 index 000000000..b826b4973 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.h @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/config/sparc/sparc.h.orig Sun Dec 19 12:20:08 2010 ++++ gcc/config/sparc/sparc.h +@@ -414,6 +414,7 @@ extern enum cmodel sparc_cmodel; + %{mcpu=sparclite:-Asparclite} \ + %{mcpu=sparclite86x:-Asparclite} \ + %{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \ ++%{mcpu=v8:-Av8} \ + %{mv8plus:-Av8plus} \ + %{mcpu=v9:-Av9} \ + %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \ +@@ -501,7 +502,8 @@ extern enum cmodel sparc_cmodel; + #define CAN_DEBUG_WITHOUT_FP + + /* Option handling. */ +- ++#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \ ++ sparc_optimization_options ((LEVEL), (SIZE)) + #define OVERRIDE_OPTIONS sparc_override_options () + + /* Mask of all CPU selection flags. */ diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_sparc.md b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.md new file mode 100644 index 000000000..de33ffd56 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_sparc.md @@ -0,0 +1,151 @@ +$NetBSD$ + +--- gcc/config/sparc/sparc.md.orig Sun Dec 19 12:20:08 2010 ++++ gcc/config/sparc/sparc.md +@@ -28,6 +28,7 @@ + [(UNSPEC_MOVE_PIC 0) + (UNSPEC_UPDATE_RETURN 1) + (UNSPEC_LOAD_PCREL_SYM 2) ++ (UNSPEC_FRAME_BLOCKAGE 3) + (UNSPEC_MOVE_PIC_LABEL 5) + (UNSPEC_SETH44 6) + (UNSPEC_SETM44 7) +@@ -2477,11 +2478,9 @@ + (match_operand:I 3 "arith10_operand" "")))] + "TARGET_V9 && !(mode == DImode && TARGET_ARCH32)" + { +- enum rtx_code code = GET_CODE (operands[1]); + rtx cc_reg; + +- if (GET_MODE (XEXP (operands[1], 0)) == DImode +- && ! TARGET_ARCH64) ++ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64) + FAIL; + + if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD) +@@ -2492,12 +2491,14 @@ + if (XEXP (operands[1], 1) == const0_rtx + && GET_CODE (XEXP (operands[1], 0)) == REG + && GET_MODE (XEXP (operands[1], 0)) == DImode +- && v9_regcmp_p (code)) ++ && v9_regcmp_p (GET_CODE (operands[1]))) + cc_reg = XEXP (operands[1], 0); + else + cc_reg = gen_compare_reg (operands[1]); + +- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx); ++ operands[1] ++ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg, ++ const0_rtx); + }) + + (define_expand "movcc" +@@ -2507,11 +2508,9 @@ + (match_operand:F 3 "register_operand" "")))] + "TARGET_V9 && TARGET_FPU" + { +- enum rtx_code code = GET_CODE (operands[1]); + rtx cc_reg; + +- if (GET_MODE (XEXP (operands[1], 0)) == DImode +- && ! TARGET_ARCH64) ++ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64) + FAIL; + + if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD) +@@ -2522,12 +2521,14 @@ + if (XEXP (operands[1], 1) == const0_rtx + && GET_CODE (XEXP (operands[1], 0)) == REG + && GET_MODE (XEXP (operands[1], 0)) == DImode +- && v9_regcmp_p (code)) ++ && v9_regcmp_p (GET_CODE (operands[1]))) + cc_reg = XEXP (operands[1], 0); + else + cc_reg = gen_compare_reg (operands[1]); + +- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx); ++ operands[1] ++ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg, ++ const0_rtx); + }) + + ;; Conditional move define_insns +@@ -6315,9 +6316,7 @@ + (if_then_else (eq_attr "isa" "v9") + (const_int 2) + (const_int 3)) +- (if_then_else (eq_attr "isa" "v9") +- (const_int 3) +- (const_int 4))) ++ (const_int 4)) + (eq_attr "empty_delay_slot" "true") + (if_then_else (eq_attr "delayed_branch" "true") + (const_int 2) +@@ -6333,6 +6332,25 @@ + "" + [(set_attr "length" "0")]) + ++;; Do not schedule instructions accessing memory before this point. ++ ++(define_expand "frame_blockage" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++{ ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; ++ operands[1] = stack_pointer_rtx; ++}) ++ ++(define_insn "*frame_blockage" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_operand:P 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + (define_expand "probe_stack" + [(set (match_operand 0 "memory_operand" "") (const_int 0))] + "" +@@ -6491,8 +6509,8 @@ + (const_int 4)))]) + + ;; For __builtin_setjmp we need to flush register windows iff the function +-;; calls alloca as well, because otherwise the register window might be +-;; saved after %sp adjustment and thus setjmp would crash ++;; calls alloca as well, because otherwise the current register window might ++;; be saved after the %sp adjustment and thus setjmp would crash. + (define_expand "builtin_setjmp_setup" + [(match_operand 0 "register_operand" "r")] + "" +@@ -6531,19 +6549,26 @@ + (eq_attr "pic" "true") + (const_int 4)] (const_int 3)))]) + +-;; Pattern for use after a setjmp to store FP and the return register +-;; into the stack area. ++;; Pattern for use after a setjmp to store registers into the save area. + + (define_expand "setjmp" + [(const_int 0)] + "" + { + rtx mem; +- ++ ++ if (flag_pic) ++ { ++ mem = gen_rtx_MEM (Pmode, ++ plus_constant (stack_pointer_rtx, ++ SPARC_STACK_BIAS + 7 * UNITS_PER_WORD)); ++ emit_insn (gen_rtx_SET (VOIDmode, mem, pic_offset_table_rtx)); ++ } ++ + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, + SPARC_STACK_BIAS + 14 * UNITS_PER_WORD)); +- emit_insn (gen_rtx_SET (VOIDmode, mem, frame_pointer_rtx)); ++ emit_insn (gen_rtx_SET (VOIDmode, mem, hard_frame_pointer_rtx)); + + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, diff --git a/lang/gcc45/patches/patch-gcc_config_sparc_t-netbsd64 b/lang/gcc45/patches/patch-gcc_config_sparc_t-netbsd64 new file mode 100644 index 000000000..9c551d49e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_sparc_t-netbsd64 @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/config/sparc/t-netbsd64.orig Wed Sep 4 18:18:37 2002 ++++ gcc/config/sparc/t-netbsd64 +@@ -1,8 +1,9 @@ +-# Disable multilib fow now, as NetBSD/sparc64 does not ship with +-# a 32-bit environment. +-#MULTILIB_OPTIONS = m32/m64 +-#MULTILIB_DIRNAMES = 32 64 +-#MULTILIB_MATCHES = ++# NetBSD has (will have) "non-native" libraries in /usr/lib/. ++# For NetBSD/sparc64 we thus have /usr/lib and /usr/lib/sparc. + +-#LIBGCC = stmp-multilib +-#INSTALL_LIBGCC = install-multilib ++MULTILIB_OPTIONS = m64/m32 ++MULTILIB_DIRNAMES = 64 32 ++MULTILIB_OSDIRNAMES = . ../lib/sparc ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib diff --git a/lang/gcc45/patches/patch-gcc_config_t-minix b/lang/gcc45/patches/patch-gcc_config_t-minix new file mode 100644 index 000000000..1c147d25a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_t-minix @@ -0,0 +1,10 @@ +$NetBSD$ + +--- gcc/config/t-minix.orig Wed May 21 19:49:00 2014 ++++ gcc/config/t-minix +@@ -0,0 +1,5 @@ ++# Compile crtbeginS.o and crtendS.o with pic. ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC ++ ++# Compile libgcc.a with pic. ++TARGET_LIBGCC2_CFLAGS += -fPIC diff --git a/lang/gcc45/patches/patch-gcc_config_t-netbsd b/lang/gcc45/patches/patch-gcc_config_t-netbsd new file mode 100644 index 000000000..aa67f1e08 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_t-netbsd @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/config/t-netbsd.orig Mon Aug 6 19:58:11 2007 ++++ gcc/config/t-netbsd +@@ -1,2 +1,7 @@ + # Always build crtstuff with PIC. + CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC ++ ++# Use unwind-dw2-fde-glibc ++LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ ++ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c ++LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c diff --git a/lang/gcc45/patches/patch-gcc_config_vax_builtins.md b/lang/gcc45/patches/patch-gcc_config_vax_builtins.md new file mode 100644 index 000000000..c8ba39f50 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_vax_builtins.md @@ -0,0 +1,31 @@ +$NetBSD$ + +--- gcc/config/vax/builtins.md.orig Wed Apr 1 17:00:00 2009 ++++ gcc/config/vax/builtins.md +@@ -24,6 +24,12 @@ + ] + ) + ++(define_expand "condjump" ++ [(set (pc) ++ (if_then_else (match_operand 0) ++ (label_ref (match_operand 1)) ++ (pc)))]) ++ + (define_expand "ffssi2" + [(set (match_operand:SI 0 "nonimmediate_operand" "") + (ffs:SI (match_operand:SI 1 "general_operand" "")))] +@@ -32,7 +38,7 @@ + { + rtx label = gen_label_rtx (); + emit_insn (gen_ffssi2_internal (operands[0], operands[1])); +- emit_jump_insn (gen_bne (label)); ++ emit_jump_insn (gen_condjump (gen_rtx_NE(VOIDmode, cc0_rtx, const0_rtx), label)); + emit_insn (gen_negsi2 (operands[0], const1_rtx)); + emit_label (label); + emit_insn (gen_addsi3 (operands[0], operands[0], const1_rtx)); +@@ -189,4 +195,3 @@ + (const_int 0))])] + "" + "jbcci %1,%0,%l2") +- diff --git a/lang/gcc45/patches/patch-gcc_config_vax_constraints.md b/lang/gcc45/patches/patch-gcc_config_vax_constraints.md new file mode 100644 index 000000000..67504fad5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_vax_constraints.md @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/config/vax/constraints.md.orig Wed Apr 1 17:00:00 2009 ++++ gcc/config/vax/constraints.md +@@ -113,5 +113,6 @@ + + (define_constraint "T" + "@internal satisfies CONSTANT_P and, if pic is enabled, is not a SYMBOL_REF, LABEL_REF, or CONST." +- (ior (not (match_code "const,symbol_ref,label_ref")) +- (match_test "!flag_pic"))) ++ (and (match_test "CONSTANT_P (op)") ++ (ior (not (match_code "const,symbol_ref,label_ref")) ++ (match_test "!flag_pic")))) diff --git a/lang/gcc45/patches/patch-gcc_config_vax_elf.h b/lang/gcc45/patches/patch-gcc_config_vax_elf.h new file mode 100644 index 000000000..f1a9a34d2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_vax_elf.h @@ -0,0 +1,11 @@ +$NetBSD$ + +--- gcc/config/vax/elf.h.orig Wed Apr 1 17:00:00 2009 ++++ gcc/config/vax/elf.h +@@ -109,5 +109,5 @@ along with GCC; see the file COPYING3. If not see + fputs (integer_asm_op (SIZE, FALSE), FILE); \ + fprintf (FILE, "%%pcrel%d(", SIZE * 8); \ + assemble_name (FILE, LABEL); \ +- fputc (')', FILE); \ ++ fprintf (FILE, "%+d)", SIZE); \ + } while (0) diff --git a/lang/gcc45/patches/patch-gcc_config_vax_vax.c b/lang/gcc45/patches/patch-gcc_config_vax_vax.c new file mode 100644 index 000000000..58c654fd1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_vax_vax.c @@ -0,0 +1,272 @@ +$NetBSD$ + +--- gcc/config/vax/vax.c.orig Tue Sep 22 15:16:34 2009 ++++ gcc/config/vax/vax.c +@@ -300,7 +300,10 @@ print_operand_address (FILE * file, rtx addr) + addr = XEXP (addr, 1); + } + else +- gcc_unreachable (); ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + + if (REG_P (addr)) + { +@@ -311,9 +314,8 @@ print_operand_address (FILE * file, rtx addr) + } + else if (GET_CODE (addr) == MULT) + ireg = addr; +- else ++ else if (GET_CODE (addr) == PLUS) + { +- gcc_assert (GET_CODE (addr) == PLUS); + if (CONSTANT_ADDRESS_P (XEXP (addr, 0)) + || MEM_P (XEXP (addr, 0))) + { +@@ -321,11 +323,15 @@ print_operand_address (FILE * file, rtx addr) + { + if (CONST_INT_P (offset)) + offset = plus_constant (XEXP (addr, 0), INTVAL (offset)); +- else ++ else if (CONST_INT_P (XEXP (addr, 0))) + { +- gcc_assert (CONST_INT_P (XEXP (addr, 0))); + offset = plus_constant (offset, INTVAL (XEXP (addr, 0))); + } ++ else ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + } + offset = XEXP (addr, 0); + } +@@ -336,12 +342,15 @@ print_operand_address (FILE * file, rtx addr) + else + reg1 = XEXP (addr, 0); + } +- else ++ else if (GET_CODE (XEXP (addr, 0)) == MULT && !ireg) + { +- gcc_assert (GET_CODE (XEXP (addr, 0)) == MULT); +- gcc_assert (!ireg); + ireg = XEXP (addr, 0); + } ++ else ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + + if (CONSTANT_ADDRESS_P (XEXP (addr, 1)) + || MEM_P (XEXP (addr, 1))) +@@ -365,13 +374,21 @@ print_operand_address (FILE * file, rtx addr) + else + reg1 = XEXP (addr, 1); + } +- else ++ else if (GET_CODE (XEXP (addr, 1)) == MULT && !ireg) + { +- gcc_assert (GET_CODE (XEXP (addr, 1)) == MULT); +- gcc_assert (!ireg); + ireg = XEXP (addr, 1); + } ++ else ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + } ++ else ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + + /* If REG1 is nonzero, figure out if it is a base or index register. */ + if (reg1) +@@ -382,7 +399,11 @@ print_operand_address (FILE * file, rtx addr) + && (MEM_P (offset) + || (flag_pic && symbolic_operand (offset, SImode))))) + { +- gcc_assert (!ireg); ++ if (ireg) ++ { ++ debug_rtx (orig); ++ gcc_unreachable (); ++ } + ireg = reg1; + } + else +@@ -428,12 +449,17 @@ print_operand_address (FILE * file, rtx addr) + { + if (GET_CODE (ireg) == MULT) + ireg = XEXP (ireg, 0); +- gcc_assert (REG_P (ireg)); ++ if (! REG_P (ireg)) ++ { ++ debug_rtx (orig); ++ output_operand_lossage ("non-register index expression"); ++ } + fprintf (file, "[%s]", reg_names[REGNO (ireg)]); + } + break; + + default: ++ gcc_assert (! REG_P(addr)); + output_addr_const (file, addr); + } + } +@@ -1127,7 +1153,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *o + { + operands[1] = GEN_INT (lval); + operands[2] = GEN_INT (n); +- return "ashq %2,%1,%0"; ++ return "ashq %2,%D1,%0"; + } + #if HOST_BITS_PER_WIDE_INT == 32 + } +@@ -1139,7 +1165,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *o + { + operands[1] = GEN_INT (hval >> n); + operands[2] = GEN_INT (n + 32); +- return "ashq %2,%1,%0"; ++ return "ashq %2,%D1,%0"; + #endif + } + } +@@ -1566,6 +1592,111 @@ vax_output_int_subtract (rtx insn, rtx *operands, enum + } + } + ++static rtx ++mkrtx(enum rtx_code code, enum machine_mode mode, rtx base, HOST_WIDE_INT off) ++{ ++ rtx tmp; ++ ++ if (GET_CODE (base) == CONST) ++ base = XEXP (base, 0); ++ ++ if (GET_CODE (base) == PLUS) ++ { ++ rtx a = XEXP (base, 0); ++ rtx b = XEXP (base, 1); ++ if (GET_CODE (b) == CONST) ++ b = XEXP (b, 0); ++ if (CONST_INT_P (b)) ++ { ++ off += INTVAL (b); ++ base = a; ++ } ++ else if (REG_P (a) && GET_CODE (b) == SYMBOL_REF) ++ { ++ if (off != 0) ++ { ++ base = gen_rtx_PLUS (Pmode, a, plus_constant(b, off)); ++ off = 0; ++ } ++ } ++ else if (REG_P (a) && GET_CODE (b) == PLUS) ++ { ++ off += INTVAL (XEXP (b, 1)); ++ base = gen_rtx_PLUS (Pmode, a, plus_constant(XEXP (b, 0), off)); ++ off = 0; ++ } ++ else ++ { ++ debug_rtx(base); ++ gcc_unreachable (); ++ } ++ } ++ if (code == POST_INC) ++ tmp = gen_rtx_POST_INC (SImode, base); ++ else if (off == 0 || (REG_P (base) && code == REG)) ++ tmp = base; ++ else ++ tmp = plus_constant (base, off); ++ return gen_rtx_MEM (mode, tmp); ++} ++ ++const char * ++vax_output_movmemsi (rtx insn, rtx *operands) ++{ ++ HOST_WIDE_INT n = INTVAL (operands[2]); ++ HOST_WIDE_INT off; ++ rtx src, dest; ++ const char *pat = NULL; ++ const enum rtx_code *src_codes; ++ const enum rtx_code *dest_codes; ++ int code_idx = 0; ++ int mode_idx; ++ ++ static const enum machine_mode xmodes[4] = ++ { ++ QImode, HImode, SImode, DImode ++ }; ++ static const char * const pats[4] = ++ { ++ "movb %1,%0", "movw %1,%0", "movl %1,%0", "movq %1,%0", ++ }; ++ static const enum rtx_code codes[2][3] = ++ { ++ { PLUS, PLUS, PLUS }, ++ { POST_INC, POST_INC, REG }, ++ }; ++ ++ src = XEXP (operands[1], 0); ++ ++ src_codes = ++ codes[REG_P (src) && find_regno_note (insn, REG_DEAD, REGNO(src))]; ++ ++ dest = XEXP (operands[0], 0); ++ ++ dest_codes = ++ codes[REG_P (dest) && find_regno_note (insn, REG_DEAD, REGNO(dest))]; ++ ++ for (off = 0, code_idx = 0, mode_idx = 3; mode_idx >= 0; mode_idx--) ++ { ++ const enum machine_mode mode = xmodes[mode_idx]; ++ const HOST_WIDE_INT mode_len = GET_MODE_SIZE (mode); ++ for (; n >= mode_len; n -= mode_len, off += mode_len) ++ { ++ if (pat != NULL) ++ output_asm_insn (pat, operands); ++ if (n == mode_len) ++ code_idx = 2; ++ operands[0] = mkrtx(dest_codes[code_idx], mode, dest, off); ++ operands[1] = mkrtx(src_codes[code_idx], mode, src, off); ++ if (pat == NULL) ++ code_idx = 1; ++ pat = pats[mode_idx]; ++ } ++ } ++ ++ return pat; ++} ++ + /* True if X is an rtx for a constant that is a valid address. */ + + bool +@@ -1582,6 +1713,7 @@ legitimate_constant_address_p (rtx x) + && !SYMBOL_REF_LOCAL_P (XEXP (XEXP (x, 0), 0))) + return false; + #endif ++ gcc_assert (! REG_P (x)); + return true; + } + +@@ -1901,8 +2033,10 @@ vax_expand_addsub_di_operands (rtx * operands, enum rt + and that's just a left shift of 1. */ + if (rtx_equal_p (operands[1], operands[2])) + { +- gcc_assert (code != MINUS); +- emit_insn (gen_ashldi3 (operands[0], operands[1], const1_rtx)); ++ if (code == MINUS) ++ emit_insn (gen_movdi (operands[0], const0_rtx)); ++ else ++ emit_insn (gen_ashldi3 (operands[0], operands[1], const1_rtx)); + return; + } + diff --git a/lang/gcc45/patches/patch-gcc_config_vax_vax.md b/lang/gcc45/patches/patch-gcc_config_vax_vax.md new file mode 100644 index 000000000..dbaf360e3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_vax_vax.md @@ -0,0 +1,84 @@ +$NetBSD$ + +--- gcc/config/vax/vax.md.orig Tue May 12 09:43:48 2009 ++++ gcc/config/vax/vax.md +@@ -212,6 +212,11 @@ + "" + " + { ++ if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) <= 48) ++ { ++ emit_insn (gen_movmemsi1_2 (operands[0], operands[1], operands[2])); ++ DONE; ++ } + emit_insn (gen_movmemhi1 (operands[0], operands[1], operands[2])); + DONE; + }") +@@ -221,6 +226,13 @@ + ;; that anything generated as this insn will be recognized as one + ;; and that it won't successfully combine with anything. + ++(define_insn "movmemsi1_2" ++ [(set (match_operand:BLK 0 "memory_operand" "=B") ++ (match_operand:BLK 1 "memory_operand" "B")) ++ (use (match_operand:SI 2 "const_int_operand" "g"))] ++ "INTVAL (operands[2]) <= 48" ++ "* return vax_output_movmemsi (insn, operands);") ++ + (define_insn "movmemhi1" + [(set (match_operand:BLK 0 "memory_operand" "=o") + (match_operand:BLK 1 "memory_operand" "o")) +@@ -625,7 +637,7 @@ + "" + " + { +- if (! CONST_INT_P(operands[2])) ++ if (! CONST_INT_P (operands[2])) + operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2])); + }") + +@@ -689,14 +701,14 @@ + (ashift:DI (match_operand:DI 1 "general_operand" "g") + (match_operand:QI 2 "general_operand" "g")))] + "" +- "ashq %2,%1,%0") ++ "ashq %2,%D1,%0") + + (define_insn "" + [(set (match_operand:DI 0 "nonimmediate_operand" "=g") + (ashiftrt:DI (match_operand:DI 1 "general_operand" "g") + (neg:QI (match_operand:QI 2 "general_operand" "g"))))] + "" +- "ashq %2,%1,%0") ++ "ashq %2,%D1,%0") + + ;; We used to have expand_shift handle logical right shifts by using extzv, + ;; but this make it very difficult to do lshrdi3. Since the VAX is the +@@ -945,8 +957,8 @@ + "" + "* + { +- if (!REG_P (operands[0]) || !CONST_INT_P (operands[2]) +- || !CONST_INT_P (operands[3]) ++ if (! REG_P (operands[0]) || ! CONST_INT_P (operands[2]) ++ || ! CONST_INT_P (operands[3]) + || (INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16) + || INTVAL (operands[2]) + INTVAL (operands[3]) > 32 + || side_effects_p (operands[1]) +@@ -974,8 +986,8 @@ + "" + "* + { +- if (!REG_P (operands[0]) || !CONST_INT_P (operands[2]) +- || !CONST_INT_P (operands[3]) ++ if (! REG_P (operands[0]) || ! CONST_INT_P (operands[2]) ++ || ! CONST_INT_P (operands[3]) + || INTVAL (operands[2]) + INTVAL (operands[3]) > 32 + || side_effects_p (operands[1]) + || (MEM_P (operands[1]) +@@ -1634,3 +1646,5 @@ + emit_barrier (); + DONE; + }) ++ ++(include "builtins.md") diff --git a/lang/gcc45/patches/patch-gcc_config_xtensa_linux-unwind.h b/lang/gcc45/patches/patch-gcc_config_xtensa_linux-unwind.h new file mode 100644 index 000000000..d4e595b24 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_config_xtensa_linux-unwind.h @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/config/xtensa/linux-unwind.h.orig Thu Apr 9 15:00:19 2009 ++++ gcc/config/xtensa/linux-unwind.h +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for Xtensa. +- Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -62,7 +62,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *c + struct sigcontext *sc; + + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_; + diff --git a/lang/gcc45/patches/patch-gcc_configure b/lang/gcc45/patches/patch-gcc_configure new file mode 100644 index 000000000..ec46c150a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_configure @@ -0,0 +1,63 @@ +$NetBSD$ + +--- gcc/configure.orig Fri Dec 3 12:35:37 2010 ++++ gcc/configure +@@ -4810,7 +4810,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5 + $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; } + +-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then ++if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then + have_gnat=yes + else + have_gnat=no +@@ -22048,7 +22048,7 @@ x: .long 25 + tls_first_major=2 + tls_first_minor=14 + ;; +- hppa*-*-linux*) ++ hppa*-*-linux* | hppa*-*-netbsd*) + conftest_s=' + t1: .reg %r20 + t2: .reg %r21 +@@ -22188,7 +22188,7 @@ x: + tls_first_minor=16 + tls_as_opt='-32 --fatal-warnings' + ;; +- m68k-*-*) ++ m68k-*-*|m5407-*-*) + conftest_s=' + .section .tdata,"awT",@progbits + x: +@@ -22301,7 +22301,7 @@ foo: .long 25 + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]-*-* | sh*l*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 +@@ -24300,7 +24300,7 @@ case "$target" in + i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \ + | x86_64*-*-* | hppa*-*-* | arm*-*-* \ + | xstormy16*-*-* | cris-*-* | crisv32-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \ +- | spu-*-* | fido*-*-* | m32c-*-*) ++ | spu-*-* | fido*-*-* | m32c-*-* | m5407-*-*) + insn="nop" + ;; + ia64*-*-* | s390*-*-*) +@@ -25005,7 +25005,7 @@ else + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. + gcc_cv_libc_provides_ssp=yes;; +- *-*-darwin* | *-*-freebsd*) ++ *-*-darwin* | *-*-freebsd* | *-*-netbsd*) + ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail" + if test "x$ac_cv_func___stack_chk_fail" = x""yes; then : + gcc_cv_libc_provides_ssp=yes +@@ -26973,4 +26973,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_op + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 + $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + fi +- diff --git a/lang/gcc45/patches/patch-gcc_configure.ac b/lang/gcc45/patches/patch-gcc_configure.ac new file mode 100644 index 000000000..dcd3bc81a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_configure.ac @@ -0,0 +1,49 @@ +$NetBSD$ + +--- gcc/configure.ac.orig Fri Dec 3 12:35:37 2010 ++++ gcc/configure.ac +@@ -2628,7 +2628,7 @@ x: .long 25 + tls_first_major=2 + tls_first_minor=14 + ;; +- hppa*-*-linux*) ++ hppa*-*-linux* | hppa*-*-netbsd*) + conftest_s=' + t1: .reg %r20 + t2: .reg %r21 +@@ -2769,7 +2769,7 @@ x: + tls_first_minor=16 + tls_as_opt='-32 --fatal-warnings' + ;; +- m68k-*-*) ++ m68k-*-* | m5407-*-*) + conftest_s=' + .section .tdata,"awT",@progbits + x: +@@ -2882,7 +2882,7 @@ foo: .long 25 + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]-*-* | sh*l*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 +@@ -3689,7 +3689,7 @@ case "$target" in + i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \ + | x86_64*-*-* | hppa*-*-* | arm*-*-* \ + | xstormy16*-*-* | cris-*-* | crisv32-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \ +- | spu-*-* | fido*-*-* | m32c-*-*) ++ | spu-*-* | fido*-*-* | m32c-*-* | m5407-*-*) + insn="nop" + ;; + ia64*-*-* | s390*-*-*) +@@ -4127,7 +4127,7 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library, + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. + gcc_cv_libc_provides_ssp=yes;; +- *-*-darwin* | *-*-freebsd*) ++ *-*-darwin* | *-*-freebsd* | *-*-netbsd*) + AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], + [echo "no __stack_chk_fail on this target"]) + ;; diff --git a/lang/gcc45/patches/patch-gcc_convert.c b/lang/gcc45/patches/patch-gcc_convert.c new file mode 100644 index 000000000..e2f71745a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_convert.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/convert.c.orig Sun Aug 8 15:50:17 2010 ++++ gcc/convert.c +@@ -728,6 +728,15 @@ convert_to_integer (tree type, tree expr) + tree arg0 = get_unwidened (TREE_OPERAND (expr, 0), type); + tree arg1 = get_unwidened (TREE_OPERAND (expr, 1), type); + ++ /* Do not try to narrow operands of pointer subtraction; ++ that will interfere with other folding. */ ++ if (ex_form == MINUS_EXPR ++ && CONVERT_EXPR_P (arg0) ++ && CONVERT_EXPR_P (arg1) ++ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg0, 0))) ++ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg1, 0)))) ++ break; ++ + if (outprec >= BITS_PER_WORD + || TRULY_NOOP_TRUNCATION (outprec, inprec) + || inprec > TYPE_PRECISION (TREE_TYPE (arg0)) diff --git a/lang/gcc45/patches/patch-gcc_cp_ChangeLog b/lang/gcc45/patches/patch-gcc_cp_ChangeLog new file mode 100644 index 000000000..0a32c64b9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_ChangeLog @@ -0,0 +1,88 @@ +$NetBSD$ + +--- gcc/cp/ChangeLog.orig Thu Apr 28 14:12:32 2011 ++++ gcc/cp/ChangeLog +@@ -1,3 +1,83 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2012-01-19 Kai Tietz ++ ++ PR c++/51344 ++ * decl2.c (save_template_attributes): Use merge_attributes ++ instead of chaining up via TREE_CHAIN. ++ ++2011-12-20 Dodji Seketeli ++ ++ PR debug/49951 ++ * decl.c (cxx_maybe_build_cleanup): Don't set location of the call ++ to the destructor. ++ ++2011-12-13 Jason Merrill ++ ++ PR c++/51406 ++ PR c++/51161 ++ * typeck.c (build_static_cast_1): Fix cast of lvalue to ++ base rvalue reference. ++ ++2011-10-19 Jason Merrill ++ ++ PR c++/50793 ++ * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST. ++ ++2011-10-13 Jason Merrill ++ ++ PR c++/50618 ++ * init.c (expand_aggr_init_1): Don't zero-initialize virtual ++ bases of a base subobject. ++ ++2011-10-11 Janis Johnson ++ ++ PR c++/44473 ++ * mangle.c (write_type): Handle CV qualifiers for decimal classes. ++ ++2011-07-19 Jakub Jelinek ++ ++ Backport from mainline ++ 2011-07-07 Jakub Jelinek ++ ++ PR c/49644 ++ * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with ++ one non-complex and one complex argument, call save_expr on both ++ operands. ++ ++2011-06-23 Jason Merrill ++ ++ PR c++/49440 ++ * class.c (set_linkage_according_to_type): Hand off to ++ determine_visibility. ++ ++2011-05-31 Duncan Sands ++ ++ Backported from 4.6 branch ++ 2011-03-09 Martin Jambor ++ ++ PR tree-optimization/47714 ++ * method.c (use_thunk): Clear addressable flag of thunk arguments. ++ ++2011-05-20 Jason Merrill ++ ++ PR c++/48873 ++ * tree.c (stabilize_expr): Don't make gratuitous copies of classes. ++ ++2011-05-09 Jason Merrill ++ ++ PR c++/48936 ++ * decl2.c (mark_used): Instantiate constant variables even ++ in unevaluated context. ++ ++2011-04-27 Jason Merrill ++ ++ PR c++/48046 ++ * parser.c (cp_parser_diagnose_invalid_type_name): Commit ++ to tentative parse sooner. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_cp_Make-lang.in b/lang/gcc45/patches/patch-gcc_cp_Make-lang.in new file mode 100644 index 000000000..8a5312ea6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_Make-lang.in @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/cp/Make-lang.in.orig Fri Apr 2 19:54:46 2010 ++++ gcc/cp/Make-lang.in +@@ -107,6 +107,8 @@ cc1plus$(exeext): $(CXX_OBJS) cc1plus-checksum.o $(BAC + + # Special build rules. + $(srcdir)/cp/cfns.h: $(srcdir)/cp/cfns.gperf ++ @echo "NOT REBUILDING $@" ++NetBSD_DISABLED_cfns.h: + gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \ + $(srcdir)/cp/cfns.gperf > $(srcdir)/cp/cfns.h + diff --git a/lang/gcc45/patches/patch-gcc_cp_class.c b/lang/gcc45/patches/patch-gcc_cp_class.c new file mode 100644 index 000000000..9963f22e7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_class.c @@ -0,0 +1,29 @@ +$NetBSD$ + +--- gcc/cp/class.c.orig Fri Jul 9 19:50:25 2010 ++++ gcc/cp/class.c +@@ -681,21 +681,10 @@ get_vtable_name (tree type) + the abstract. */ + + void +-set_linkage_according_to_type (tree type, tree decl) ++set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl) + { +- /* If TYPE involves a local class in a function with internal +- linkage, then DECL should have internal linkage too. Other local +- classes have no linkage -- but if their containing functions +- have external linkage, it makes sense for DECL to have external +- linkage too. That will allow template definitions to be merged, +- for example. */ +- if (no_linkage_check (type, /*relaxed_p=*/true)) +- { +- TREE_PUBLIC (decl) = 0; +- DECL_INTERFACE_KNOWN (decl) = 1; +- } +- else +- TREE_PUBLIC (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ determine_visibility (decl); + } + + /* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE. diff --git a/lang/gcc45/patches/patch-gcc_cp_decl.c b/lang/gcc45/patches/patch-gcc_cp_decl.c new file mode 100644 index 000000000..c4f58be42 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_decl.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/cp/decl.c.orig Wed Apr 20 00:06:19 2011 ++++ gcc/cp/decl.c +@@ -12877,8 +12877,17 @@ cxx_maybe_build_cleanup (tree decl) + cleanup = call; + } + ++ /* build_delete sets the location of the destructor call to the ++ current location, even though the destructor is going to be ++ called later, at the end of the current scope. This can lead to ++ a "jumpy" behaviour for users of debuggers when they step around ++ the end of the block. So let's unset the location of the ++ destructor call instead. */ ++ if (cleanup != NULL && EXPR_P (cleanup)) ++ SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); + return cleanup; + } ++ + + /* When a stmt has been parsed, this function is called. */ + diff --git a/lang/gcc45/patches/patch-gcc_cp_decl2.c b/lang/gcc45/patches/patch-gcc_cp_decl2.c new file mode 100644 index 000000000..6f37d406a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_decl2.c @@ -0,0 +1,77 @@ +$NetBSD$ + +--- gcc/cp/decl2.c.orig Thu Apr 21 02:56:39 2011 ++++ gcc/cp/decl2.c +@@ -1189,9 +1189,9 @@ save_template_attributes (tree *attr_p, tree *decl_p) + + old_attrs = *q; + +- /* Place the late attributes at the beginning of the attribute ++ /* Merge the late attributes at the beginning with the attribute + list. */ +- TREE_CHAIN (tree_last (late_attrs)) = *q; ++ late_attrs = merge_attributes (late_attrs, *q); + *q = late_attrs; + + if (!DECL_P (*decl_p) && *decl_p == TYPE_MAIN_VARIANT (*decl_p)) +@@ -3991,8 +3991,6 @@ possibly_inlined_p (tree decl) + void + mark_used (tree decl) + { +- HOST_WIDE_INT saved_processing_template_decl = 0; +- + /* If DECL is a BASELINK for a single function, then treat it just + like the DECL for the function. Otherwise, if the BASELINK is + for an overloaded function, we don't know which function was +@@ -4029,9 +4027,6 @@ mark_used (tree decl) + error ("used here"); + return; + } +- /* If we don't need a value, then we don't need to synthesize DECL. */ +- if (cp_unevaluated_operand != 0) +- return; + + /* We can only check DECL_ODR_USED on variables or functions with + DECL_LANG_SPECIFIC set, and these are also the only decls that we +@@ -4059,9 +4054,10 @@ mark_used (tree decl) + DECL. However, if DECL is a static data member initialized with + a constant, we need the value right now because a reference to + such a data member is not value-dependent. */ +- if (TREE_CODE (decl) == VAR_DECL +- && DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) +- && DECL_CLASS_SCOPE_P (decl)) ++ if (DECL_INTEGRAL_CONSTANT_VAR_P (decl) ++ && !DECL_INITIAL (decl) ++ && DECL_LANG_SPECIFIC (decl) ++ && DECL_TEMPLATE_INSTANTIATION (decl)) + { + /* Don't try to instantiate members of dependent types. We + cannot just use dependent_type_p here because this function +@@ -4071,12 +4067,14 @@ mark_used (tree decl) + if (CLASSTYPE_TEMPLATE_INFO ((DECL_CONTEXT (decl))) + && uses_template_parms (CLASSTYPE_TI_ARGS (DECL_CONTEXT (decl)))) + return; +- /* Pretend that we are not in a template, even if we are, so +- that the static data member initializer will be processed. */ +- saved_processing_template_decl = processing_template_decl; +- processing_template_decl = 0; ++ instantiate_decl (decl, /*defer_ok=*/false, ++ /*expl_inst_class_mem_p=*/false); + } + ++ /* If we don't need a value, then we don't need to synthesize DECL. */ ++ if (cp_unevaluated_operand != 0) ++ return; ++ + if (processing_template_decl) + return; + +@@ -4149,8 +4147,6 @@ mark_used (tree decl) + need. Therefore, we always try to defer instantiation. */ + instantiate_decl (decl, /*defer_ok=*/true, + /*expl_inst_class_mem_p=*/false); +- +- processing_template_decl = saved_processing_template_decl; + } + + #include "gt-cp-decl2.h" diff --git a/lang/gcc45/patches/patch-gcc_cp_init.c b/lang/gcc45/patches/patch-gcc_cp_init.c new file mode 100644 index 000000000..efd8c68c4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_init.c @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/cp/init.c.orig Mon Apr 18 14:02:22 2011 ++++ gcc/cp/init.c +@@ -1460,7 +1460,12 @@ expand_aggr_init_1 (tree binfo, tree true_exp, tree ex + zero out the object first. */ + else if (TYPE_NEEDS_CONSTRUCTING (type)) + { +- init = build_zero_init (type, NULL_TREE, /*static_storage_p=*/false); ++ tree field_size = NULL_TREE; ++ if (exp != true_exp && CLASSTYPE_AS_BASE (type) != type) ++ /* Don't clobber already initialized virtual bases. */ ++ field_size = TYPE_SIZE (CLASSTYPE_AS_BASE (type)); ++ init = build_zero_init_1 (type, NULL_TREE, /*static_storage_p=*/false, ++ field_size); + init = build2 (INIT_EXPR, type, exp, init); + finish_expr_stmt (init); + /* And then call the constructor. */ diff --git a/lang/gcc45/patches/patch-gcc_cp_mangle.c b/lang/gcc45/patches/patch-gcc_cp_mangle.c new file mode 100644 index 000000000..c1206f567 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_mangle.c @@ -0,0 +1,29 @@ +$NetBSD$ + +--- gcc/cp/mangle.c.orig Tue Mar 8 17:40:27 2011 ++++ gcc/cp/mangle.c +@@ -1778,11 +1778,6 @@ write_type (tree type) + if (find_substitution (type)) + return; + +- /* According to the C++ ABI, some library classes are passed the +- same as the scalar type of their single member and use the same +- mangling. */ +- if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type)) +- type = TREE_TYPE (first_field (type)); + + if (write_CV_qualifiers_for_type (type) > 0) + /* If TYPE was CV-qualified, we just wrote the qualifiers; now +@@ -1801,6 +1796,12 @@ write_type (tree type) + + /* See through any typedefs. */ + type = TYPE_MAIN_VARIANT (type); ++ ++ /* According to the C++ ABI, some library classes are passed the ++ same as the scalar type of their single member and use the same ++ mangling. */ ++ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type)) ++ type = TREE_TYPE (first_field (type)); + + if (TYPE_PTRMEM_P (type)) + write_pointer_to_member_type (type); diff --git a/lang/gcc45/patches/patch-gcc_cp_method.c b/lang/gcc45/patches/patch-gcc_cp_method.c new file mode 100644 index 000000000..7f85dd8cf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_method.c @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/cp/method.c.orig Sat Mar 20 08:55:32 2010 ++++ gcc/cp/method.c +@@ -374,6 +374,7 @@ use_thunk (tree thunk_fndecl, bool emit_p) + DECL_CONTEXT (x) = thunk_fndecl; + SET_DECL_RTL (x, NULL_RTX); + DECL_HAS_VALUE_EXPR_P (x) = 0; ++ TREE_ADDRESSABLE (x) = 0; + t = x; + } + a = nreverse (t); diff --git a/lang/gcc45/patches/patch-gcc_cp_parser.c b/lang/gcc45/patches/patch-gcc_cp_parser.c new file mode 100644 index 000000000..89f34b6ce --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_parser.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/cp/parser.c.orig Wed Apr 27 05:20:46 2011 ++++ gcc/cp/parser.c +@@ -2333,6 +2333,7 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parse + location_t location) + { + tree decl, old_scope; ++ cp_parser_commit_to_tentative_parse (parser); + /* Try to lookup the identifier. */ + old_scope = parser->scope; + parser->scope = scope; +@@ -2423,7 +2424,6 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parse + else + gcc_unreachable (); + } +- cp_parser_commit_to_tentative_parse (parser); + } + + /* Check for a common situation where a type-name should be present, diff --git a/lang/gcc45/patches/patch-gcc_cp_tree.c b/lang/gcc45/patches/patch-gcc_cp_tree.c new file mode 100644 index 000000000..5c9a1f3ff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_tree.c @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/cp/tree.c.orig Sun Feb 27 17:11:19 2011 ++++ gcc/cp/tree.c +@@ -1732,7 +1732,11 @@ bot_manip (tree* tp, int* walk_subtrees, void* data) + tree u; + + if (TREE_CODE (TREE_OPERAND (t, 1)) == AGGR_INIT_EXPR) +- u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1)); ++ { ++ u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1)); ++ if (AGGR_INIT_ZERO_FIRST (TREE_OPERAND (t, 1))) ++ AGGR_INIT_ZERO_FIRST (TREE_OPERAND (u, 1)) = true; ++ } + else + u = build_target_expr_with_type (TREE_OPERAND (t, 1), TREE_TYPE (t)); + +@@ -2954,7 +2958,8 @@ stabilize_expr (tree exp, tree* initp) + if (!TREE_SIDE_EFFECTS (exp)) + init_expr = NULL_TREE; + else if (!real_lvalue_p (exp) +- || !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp))) ++ || (!TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)) ++ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (exp)))) + { + init_expr = get_target_expr (exp); + exp = TARGET_EXPR_SLOT (init_expr); diff --git a/lang/gcc45/patches/patch-gcc_cp_typeck.c b/lang/gcc45/patches/patch-gcc_cp_typeck.c new file mode 100644 index 000000000..3f2d91d6c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_cp_typeck.c @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/cp/typeck.c.orig Wed Apr 20 06:31:07 2011 ++++ gcc/cp/typeck.c +@@ -4297,6 +4297,7 @@ cp_build_binary_op (location_t location, + { + case MULT_EXPR: + case TRUNC_DIV_EXPR: ++ op1 = save_expr (op1); + imag = build2 (resultcode, real_type, imag, op1); + /* Fall through. */ + case PLUS_EXPR: +@@ -4315,6 +4316,7 @@ cp_build_binary_op (location_t location, + switch (code) + { + case MULT_EXPR: ++ op0 = save_expr (op0); + imag = build2 (resultcode, real_type, op0, imag); + /* Fall through. */ + case PLUS_EXPR: +@@ -5672,8 +5674,18 @@ build_static_cast_1 (tree type, tree expr, bool c_cast + && reference_related_p (TREE_TYPE (type), intype) + && (c_cast_p || at_least_as_qualified_p (TREE_TYPE (type), intype))) + { +- expr = build_typed_address (expr, type); +- return convert_from_reference (expr); ++ /* Handle the lvalue case here by casting to lvalue reference and ++ then changing it to an rvalue reference. Casting an xvalue to ++ rvalue reference will be handled by the main code path. */ ++ tree lref = cp_build_reference_type (TREE_TYPE (type), false); ++ result = (perform_direct_initialization_if_possible ++ (lref, expr, c_cast_p, complain)); ++ result = cp_fold_convert (type, result); ++ /* Make sure we don't fold back down to a named rvalue reference, ++ because that would be an lvalue. */ ++ if (DECL_P (result)) ++ result = build1 (NON_LVALUE_EXPR, type, result); ++ return convert_from_reference (result); + } + + orig = expr; diff --git a/lang/gcc45/patches/patch-gcc_crtstuff.c b/lang/gcc45/patches/patch-gcc_crtstuff.c new file mode 100644 index 000000000..20fda8a17 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_crtstuff.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/crtstuff.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/crtstuff.c +@@ -92,6 +92,15 @@ call_ ## FUNC (void) \ + && !defined(OBJECT_FORMAT_FLAT) \ + && defined(HAVE_LD_EH_FRAME_HDR) \ + && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \ ++ && defined(__NetBSD__) ++#include ++# define USE_PT_GNU_EH_FRAME ++#endif ++ ++#if defined(OBJECT_FORMAT_ELF) \ ++ && !defined(OBJECT_FORMAT_FLAT) \ ++ && defined(HAVE_LD_EH_FRAME_HDR) \ ++ && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \ + && defined(__GLIBC__) && __GLIBC__ >= 2 + #include + /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h. diff --git a/lang/gcc45/patches/patch-gcc_df-problems.c b/lang/gcc45/patches/patch-gcc_df-problems.c new file mode 100644 index 000000000..916f9f2ca --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_df-problems.c @@ -0,0 +1,65 @@ +$NetBSD$ + +--- gcc/df-problems.c.orig Tue Nov 16 22:17:17 2010 ++++ gcc/df-problems.c +@@ -3748,9 +3748,22 @@ df_simulate_find_defs (rtx insn, bitmap defs) + for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) + { + df_ref def = *def_rec; +- /* If the def is to only part of the reg, it does +- not kill the other defs that reach here. */ +- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) ++ bitmap_set_bit (defs, DF_REF_REGNO (def)); ++ } ++} ++ ++/* Find the set of real DEFs, which are not clobbers, for INSN. */ ++ ++void ++df_simulate_find_noclobber_defs (rtx insn, bitmap defs) ++{ ++ df_ref *def_rec; ++ unsigned int uid = INSN_UID (insn); ++ ++ for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) ++ { ++ df_ref def = *def_rec; ++ if (!(DF_REF_FLAGS (def) & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER))) + bitmap_set_bit (defs, DF_REF_REGNO (def)); + } + } +@@ -3903,13 +3916,9 @@ df_simulate_finalize_backwards (basic_block bb, bitmap + the block, starting with the first one. + ----------------------------------------------------------------------------*/ + +-/* Apply the artificial uses and defs at the top of BB in a forwards +- direction. ??? This is wrong; defs mark the point where a pseudo +- becomes live when scanning forwards (unless a def is unused). Since +- there are no REG_UNUSED notes for artificial defs, passes that +- require artificial defs probably should not call this function +- unless (as is the case for fwprop) they are correct when liveness +- bitmaps are *under*estimated. */ ++/* Initialize the LIVE bitmap, which should be copied from DF_LIVE_IN or ++ DF_LR_IN for basic block BB, for forward scanning by marking artificial ++ defs live. */ + + void + df_simulate_initialize_forwards (basic_block bb, bitmap live) +@@ -3921,7 +3930,7 @@ df_simulate_initialize_forwards (basic_block bb, bitma + { + df_ref def = *def_rec; + if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) +- bitmap_clear_bit (live, DF_REF_REGNO (def)); ++ bitmap_set_bit (live, DF_REF_REGNO (def)); + } + } + +@@ -3942,7 +3951,7 @@ df_simulate_one_insn_forwards (basic_block bb, rtx ins + while here the scan is performed forwards! So, first assume that the + def is live, and if this is not true REG_UNUSED notes will rectify the + situation. */ +- df_simulate_find_defs (insn, live); ++ df_simulate_find_noclobber_defs (insn, live); + + /* Clear all of the registers that go dead. */ + for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) diff --git a/lang/gcc45/patches/patch-gcc_df.h b/lang/gcc45/patches/patch-gcc_df.h new file mode 100644 index 000000000..6b6eb1185 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_df.h @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/df.h.orig Fri Jan 29 12:14:47 2010 ++++ gcc/df.h +@@ -51,7 +51,7 @@ union df_ref_d; + #define DF_RD 3 /* Reaching Defs. */ + #define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */ + #define DF_BYTE_LR 5 /* Subreg tracking lr. */ +-#define DF_NOTE 6 /* REG_DEF and REG_UNUSED notes. */ ++#define DF_NOTE 6 /* REG_DEAD and REG_UNUSED notes. */ + #define DF_MD 7 /* Multiple Definitions. */ + + #define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1) +@@ -978,6 +978,7 @@ extern void df_note_add_problem (void); + extern void df_md_add_problem (void); + extern void df_md_simulate_artificial_defs_at_top (basic_block, bitmap); + extern void df_md_simulate_one_insn (basic_block, rtx, bitmap); ++extern void df_simulate_find_noclobber_defs (rtx, bitmap); + extern void df_simulate_find_defs (rtx, bitmap); + extern void df_simulate_defs (rtx, bitmap); + extern void df_simulate_uses (rtx, bitmap); diff --git a/lang/gcc45/patches/patch-gcc_doc_aot-compile.1 b/lang/gcc45/patches/patch-gcc_doc_aot-compile.1 new file mode 100644 index 000000000..82db8508d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_aot-compile.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/aot-compile.1.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/aot-compile.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "AOT-COMPILE 1" +-.TH AOT-COMPILE 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH AOT-COMPILE 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_cpp.1 b/lang/gcc45/patches/patch-gcc_doc_cpp.1 new file mode 100644 index 000000000..f943ac51d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_cpp.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/cpp.1.orig Thu Apr 28 14:39:47 2011 ++++ gcc/doc/cpp.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "CPP 1" +-.TH CPP 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH CPP 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_cpp.info b/lang/gcc45/patches/patch-gcc_doc_cpp.info new file mode 100644 index 000000000..784edffc4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_cpp.info @@ -0,0 +1,11 @@ +$NetBSD$ + +--- gcc/doc/cpp.info.orig Wed May 21 19:43:29 2014 ++++ gcc/doc/cpp.info +@@ -1,5 +1,5 @@ + This is doc/cpp.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/doc/cpp.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/doc/cpp.texi. + + Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, diff --git a/lang/gcc45/patches/patch-gcc_doc_cpp.texi b/lang/gcc45/patches/patch-gcc_doc_cpp.texi new file mode 100644 index 000000000..1aa4a9066 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_cpp.texi @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/doc/cpp.texi.orig Fri Feb 25 23:20:40 2011 ++++ gcc/doc/cpp.texi +@@ -1160,6 +1160,9 @@ command line. If the same directory is named by both + @option{-isystem}, the @option{-I} option is ignored. GCC provides an + informative message when this occurs if @option{-v} is used. + ++The @option{-cxx-isystem} command line option adds its argument to the ++list of C++ system headers, similar to @option{-isystem} for C headers. ++ + @findex #pragma GCC system_header + There is also a directive, @code{@w{#pragma GCC system_header}}, which + tells GCC to consider the rest of the current include file a system +@@ -4349,6 +4352,7 @@ without notice. + @c man begin SYNOPSIS + cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}] + [@option{-I}@var{dir}@dots{}] [@option{-iquote}@var{dir}@dots{}] ++ [@option{-iremap}@var{src}:@var{dst}] + [@option{-W}@var{warn}@dots{}] + [@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}] + [@option{-MP}] [@option{-MQ} @var{target}@dots{}] diff --git a/lang/gcc45/patches/patch-gcc_doc_cppenv.texi b/lang/gcc45/patches/patch-gcc_doc_cppenv.texi new file mode 100644 index 000000000..e38cee0ff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_cppenv.texi @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/doc/cppenv.texi.orig Sun Jan 18 02:10:34 2004 ++++ gcc/doc/cppenv.texi +@@ -80,4 +80,17 @@ main input file is omitted. + @ifclear cppmanual + @xref{Preprocessor Options}. + @end ifclear ++ ++@item CPP_RESTRICTED ++@cindex only open regular files ++If this variable is defined, cpp will skip any include file which is not a ++regular file, and will continue searching for the requested name (this is ++always done if the found file is a directory). ++@ifset cppmanual ++@xref{Invocation}. ++@end ifset ++@ifclear cppmanual ++@xref{Preprocessor Options}. ++@end ifclear ++ + @end vtable diff --git a/lang/gcc45/patches/patch-gcc_doc_cppopts.texi b/lang/gcc45/patches/patch-gcc_doc_cppopts.texi index bbdc657c8..9f6caab4a 100644 --- a/lang/gcc45/patches/patch-gcc_doc_cppopts.texi +++ b/lang/gcc45/patches/patch-gcc_doc_cppopts.texi @@ -1,15 +1,34 @@ -$NetBSD: patch-gcc_doc_cppopts.texi,v 1.1 2014/03/26 11:07:27 jperkin Exp $ +$NetBSD$ -Texinfo 5 compatibility. - ---- gcc/doc/cppopts.texi.orig 2010-04-02 19:54:46.000000000 +0000 +--- gcc/doc/cppopts.texi.orig Fri Apr 2 19:54:46 2010 +++ gcc/doc/cppopts.texi -@@ -760,7 +760,7 @@ Replacement: [ ] @{ @} - Enable special code to work around file systems which only permit very - short file names, such as MS-DOS@. +@@ -504,6 +504,16 @@ is applied to the standard system directories. + If @var{dir} begins with @code{=}, then the @code{=} will be replaced + by the sysroot prefix; see @option{--sysroot} and @option{-isysroot}. --@itemx --help -+@item --help - @itemx --target-help - @opindex help - @opindex target-help ++@item -cxx-isystem @var{dir} ++@opindex cxxisystem ++Search @var{dir} for C++ header files, after all directories specified by ++@option{-I} but before the standard system directories. Mark it ++as a system directory, so that it gets the same special treatment as ++is applied to the standard system directories. ++@ifset cppmanual ++@xref{System Headers}. ++@end ifset ++ + @item -iquote @var{dir} + @opindex iquote + Search @var{dir} only for header files requested with +@@ -537,6 +547,12 @@ files previously preprocessed with @code{-E -fdirectiv + With both @option{-E} and @option{-fpreprocessed}, the rules for + @option{-fpreprocessed} take precedence. This enables full preprocessing of + files previously preprocessed with @code{-E -fdirectives-only}. ++ ++@item -iremap @var{src}:@var{dst} ++@opindex iremap ++Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time. ++This option can be specified more than once. Processing stops at the first ++match. + + @item -fdollars-in-identifiers + @opindex fdollars-in-identifiers diff --git a/lang/gcc45/patches/patch-gcc_doc_fsf-funding.7 b/lang/gcc45/patches/patch-gcc_doc_fsf-funding.7 new file mode 100644 index 000000000..fb591deaf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_fsf-funding.7 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/fsf-funding.7.orig Thu Apr 28 14:39:50 2011 ++++ gcc/doc/fsf-funding.7 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "FSF-FUNDING 7" +-.TH FSF-FUNDING 7 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH FSF-FUNDING 7 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_g++.1 b/lang/gcc45/patches/patch-gcc_doc_g++.1 new file mode 100644 index 000000000..9453a0bbd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_g++.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/g++.1.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/g++.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GCC 1" +-.TH GCC 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GCC 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gc-analyze.1 b/lang/gcc45/patches/patch-gcc_doc_gc-analyze.1 new file mode 100644 index 000000000..8affdfa29 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gc-analyze.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gc-analyze.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/gc-analyze.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GC-ANALYZE 1" +-.TH GC-ANALYZE 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GC-ANALYZE 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gcc.1 b/lang/gcc45/patches/patch-gcc_doc_gcc.1 new file mode 100644 index 000000000..ac0c6f8d8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcc.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gcc.1.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/gcc.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GCC 1" +-.TH GCC 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GCC 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gcc.info b/lang/gcc45/patches/patch-gcc_doc_gcc.info new file mode 100644 index 000000000..80a6bc540 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcc.info @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/doc/gcc.info.orig Wed May 21 19:43:29 2014 ++++ gcc/doc/gcc.info +@@ -1,5 +1,5 @@ + This is doc/gcc.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/doc/gcc.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/doc/gcc.texi. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free +@@ -61,7 +61,7 @@ Introduction + + This manual documents how to use the GNU compilers, as well as their + features and incompatibilities, and how to report bugs. It corresponds +-to the compilers (GCC) version 4.5.3. The internals of the GNU ++to the compilers (GCC) version 4.5.4. The internals of the GNU + compilers, including how to port them to new targets and some + information about how to write front ends for new languages, are + documented in a separate manual. *Note Introduction: (gccint)Top. diff --git a/lang/gcc45/patches/patch-gcc_doc_gccinstall.info b/lang/gcc45/patches/patch-gcc_doc_gccinstall.info new file mode 100644 index 000000000..42da5a18d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gccinstall.info @@ -0,0 +1,176 @@ +$NetBSD$ + +--- gcc/doc/gccinstall.info.orig Wed May 21 19:43:29 2014 ++++ gcc/doc/gccinstall.info +@@ -1,5 +1,5 @@ + This is doc/gccinstall.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/doc/install.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/doc/install.texi. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +@@ -990,7 +990,7 @@ option. + Division by zero checks use the break instruction. + + `--with-llsc' +- On MIPS targets, make `-mllsc' the default when no `-mno-lsc' ++ On MIPS targets, make `-mllsc' the default when no `-mno-llsc' + option is passed. This is the default for Linux-based targets, as + the kernel will emulate them if the ISA does not provide them. + +@@ -4454,80 +4454,80 @@ Node: Configuration15661 + Ref: with-gnu-as29803 + Ref: with-as30701 + Ref: with-gnu-ld32114 +-Node: Building75589 +-Node: Testing90900 +-Node: Final install98680 +-Node: Binaries103910 +-Node: Specific105414 +-Ref: alpha-x-x105920 +-Ref: alpha-dec-osf106409 +-Ref: arc-x-elf108710 +-Ref: arm-x-elf108810 +-Ref: avr109030 +-Ref: bfin109672 +-Ref: cris109914 +-Ref: crx110730 +-Ref: dos111393 +-Ref: x-x-freebsd111716 +-Ref: h8300-hms113529 +-Ref: hppa-hp-hpux113881 +-Ref: hppa-hp-hpux10116252 +-Ref: hppa-hp-hpux11116665 +-Ref: x-x-linux-gnu122324 +-Ref: ix86-x-linux122517 +-Ref: ix86-x-solaris289122830 +-Ref: ix86-x-solaris210123676 +-Ref: ia64-x-linux124906 +-Ref: ia64-x-hpux125676 +-Ref: x-ibm-aix126231 +-Ref: iq2000-x-elf132490 +-Ref: lm32-x-elf132630 +-Ref: lm32-x-uclinux132734 +-Ref: m32c-x-elf132862 +-Ref: m32r-x-elf132964 +-Ref: m6811-elf133066 +-Ref: m6812-elf133216 +-Ref: m68k-x-x133366 +-Ref: m68k-x-uclinux134338 +-Ref: mep-x-elf134701 +-Ref: mips-x-x134811 +-Ref: mips-sgi-irix5137488 +-Ref: mips-sgi-irix6138754 +-Ref: moxie-x-elf142085 +-Ref: powerpc-x-x142205 +-Ref: powerpc-x-darwin142410 +-Ref: powerpc-x-elf142957 +-Ref: powerpc-x-linux-gnu143042 +-Ref: powerpc-x-netbsd143137 +-Ref: powerpc-x-eabisim143225 +-Ref: powerpc-x-eabi143351 +-Ref: powerpcle-x-elf143427 +-Ref: powerpcle-x-eabisim143519 +-Ref: powerpcle-x-eabi143652 +-Ref: rx-x-elf143735 +-Ref: s390-x-linux143934 +-Ref: s390x-x-linux144006 +-Ref: s390x-ibm-tpf144093 +-Ref: x-x-solaris2144224 +-Ref: sparc-sun-solaris2148036 +-Ref: sparc-sun-solaris27150762 +-Ref: sparc-sun-solaris210153320 +-Ref: sparc-x-linux153696 +-Ref: sparc64-x-solaris2153921 +-Ref: sparcv9-x-solaris2154563 +-Ref: x-x-vxworks154650 +-Ref: x86-64-x-x156172 +-Ref: xtensa-x-elf156500 +-Ref: xtensa-x-linux157171 +-Ref: windows157512 +-Ref: x-x-cygwin159469 +-Ref: x-x-interix160022 +-Ref: x-x-mingw32160388 +-Ref: older160614 +-Ref: elf162731 +-Node: Old162989 +-Node: Configurations166126 +-Node: GNU Free Documentation License170108 +-Node: Concept Index192524 ++Node: Building75590 ++Node: Testing90901 ++Node: Final install98681 ++Node: Binaries103911 ++Node: Specific105415 ++Ref: alpha-x-x105921 ++Ref: alpha-dec-osf106410 ++Ref: arc-x-elf108711 ++Ref: arm-x-elf108811 ++Ref: avr109031 ++Ref: bfin109673 ++Ref: cris109915 ++Ref: crx110731 ++Ref: dos111394 ++Ref: x-x-freebsd111717 ++Ref: h8300-hms113530 ++Ref: hppa-hp-hpux113882 ++Ref: hppa-hp-hpux10116253 ++Ref: hppa-hp-hpux11116666 ++Ref: x-x-linux-gnu122325 ++Ref: ix86-x-linux122518 ++Ref: ix86-x-solaris289122831 ++Ref: ix86-x-solaris210123677 ++Ref: ia64-x-linux124907 ++Ref: ia64-x-hpux125677 ++Ref: x-ibm-aix126232 ++Ref: iq2000-x-elf132491 ++Ref: lm32-x-elf132631 ++Ref: lm32-x-uclinux132735 ++Ref: m32c-x-elf132863 ++Ref: m32r-x-elf132965 ++Ref: m6811-elf133067 ++Ref: m6812-elf133217 ++Ref: m68k-x-x133367 ++Ref: m68k-x-uclinux134339 ++Ref: mep-x-elf134702 ++Ref: mips-x-x134812 ++Ref: mips-sgi-irix5137489 ++Ref: mips-sgi-irix6138755 ++Ref: moxie-x-elf142086 ++Ref: powerpc-x-x142206 ++Ref: powerpc-x-darwin142411 ++Ref: powerpc-x-elf142958 ++Ref: powerpc-x-linux-gnu143043 ++Ref: powerpc-x-netbsd143138 ++Ref: powerpc-x-eabisim143226 ++Ref: powerpc-x-eabi143352 ++Ref: powerpcle-x-elf143428 ++Ref: powerpcle-x-eabisim143520 ++Ref: powerpcle-x-eabi143653 ++Ref: rx-x-elf143736 ++Ref: s390-x-linux143935 ++Ref: s390x-x-linux144007 ++Ref: s390x-ibm-tpf144094 ++Ref: x-x-solaris2144225 ++Ref: sparc-sun-solaris2148037 ++Ref: sparc-sun-solaris27150763 ++Ref: sparc-sun-solaris210153321 ++Ref: sparc-x-linux153697 ++Ref: sparc64-x-solaris2153922 ++Ref: sparcv9-x-solaris2154564 ++Ref: x-x-vxworks154651 ++Ref: x86-64-x-x156173 ++Ref: xtensa-x-elf156501 ++Ref: xtensa-x-linux157172 ++Ref: windows157513 ++Ref: x-x-cygwin159470 ++Ref: x-x-interix160023 ++Ref: x-x-mingw32160389 ++Ref: older160615 ++Ref: elf162732 ++Node: Old162990 ++Node: Configurations166127 ++Node: GNU Free Documentation License170109 ++Node: Concept Index192525 +  + End Tag Table diff --git a/lang/gcc45/patches/patch-gcc_doc_gccint.info b/lang/gcc45/patches/patch-gcc_doc_gccint.info new file mode 100644 index 000000000..a7a70c4a3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gccint.info @@ -0,0 +1,834 @@ +$NetBSD$ + +--- gcc/doc/gccint.info.orig Wed May 21 19:43:29 2014 ++++ gcc/doc/gccint.info +@@ -1,5 +1,5 @@ + This is doc/gccint.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/doc/gccint.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/doc/gccint.texi. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free +@@ -61,7 +61,7 @@ Introduction + This manual documents the internals of the GNU compilers, including how + to port them to new targets and some information about how to write + front ends for new languages. It corresponds to the compilers +-(GCC) version 4.5.3. The use of the GNU compilers is documented in a ++(GCC) version 4.5.4. The use of the GNU compilers is documented in a + separate manual. *Note Introduction: (gcc)Top. + + This manual is mainly a reference manual rather than a tutorial. It +@@ -21834,9 +21834,10 @@ pattern to accomplish a certain task. + beginning of each string. The instruction is not allowed to + prefetch more than one byte at a time since either string may end + in the first byte and reading past that may access an invalid page +- or segment and cause a fault. The effect of the instruction is to +- store a value in operand 0 whose sign indicates the result of the +- comparison. ++ or segment and cause a fault. The comparison terminates early if ++ the fetched bytes are different or if they are equal to zero. The ++ effect of the instruction is to store a value in operand 0 whose ++ sign indicates the result of the comparison. + + `cmpstrM' + String compare instruction, without known maximum length. Operand +@@ -21854,17 +21855,20 @@ pattern to accomplish a certain task. + instruction is not allowed to prefetch more than one byte at a + time since either string may end in the first byte and reading + past that may access an invalid page or segment and cause a fault. +- The effect of the instruction is to store a value in operand 0 +- whose sign indicates the result of the comparison. ++ The comparison will terminate when the fetched bytes are different ++ or if they are equal to zero. The effect of the instruction is to ++ store a value in operand 0 whose sign indicates the result of the ++ comparison. + + `cmpmemM' + Block compare instruction, with five operands like the operands of + `cmpstrM'. The two memory blocks specified are compared byte by + byte in lexicographic order starting at the beginning of each + block. Unlike `cmpstrM' the instruction can prefetch any bytes in +- the two memory blocks. The effect of the instruction is to store +- a value in operand 0 whose sign indicates the result of the +- comparison. ++ the two memory blocks. Also unlike `cmpstrM' the comparison will ++ not stop if both bytes are zero. The effect of the instruction is ++ to store a value in operand 0 whose sign indicates the result of ++ the comparison. + + `strlenM' + Compute the length of a string, with three operands. Operand 0 is +@@ -42401,7 +42405,7 @@ Concept Index + (line 6) + * ADDITIONAL_REGISTER_NAMES: Instruction Output. (line 15) + * addM3 instruction pattern: Standard Names. (line 216) +-* addMODEcc instruction pattern: Standard Names. (line 886) ++* addMODEcc instruction pattern: Standard Names. (line 890) + * addr_diff_vec: Side Effects. (line 302) + * addr_diff_vec, length of: Insn Lengths. (line 26) + * ADDR_EXPR: Storage References. (line 6) +@@ -42418,7 +42422,7 @@ Concept Index + * alias: Alias analysis. (line 6) + * ALL_COP_ADDITIONAL_REGISTER_NAMES: MIPS Coprocessors. (line 32) + * ALL_REGS: Register Classes. (line 17) +-* allocate_stack instruction pattern: Standard Names. (line 1186) ++* allocate_stack instruction pattern: Standard Names. (line 1190) + * alternate entry points: Insns. (line 140) + * anchored addresses: Anchored Addresses. (line 6) + * and: Arithmetic. (line 153) +@@ -42603,7 +42607,7 @@ Concept Index + * BLOCK_FOR_INSN, bb_for_stmt: Maintaining the CFG. + (line 40) + * BLOCK_REG_PADDING: Register Arguments. (line 228) +-* blockage instruction pattern: Standard Names. (line 1376) ++* blockage instruction pattern: Standard Names. (line 1380) + * Blocks: Blocks. (line 6) + * bool: Misc. (line 876) + * BOOL_TYPE_SIZE: Type Layout. (line 44) +@@ -42650,10 +42654,10 @@ Concept Index + (line 21) + * build6: Macros and Functions. + (line 22) +-* builtin_longjmp instruction pattern: Standard Names. (line 1279) ++* builtin_longjmp instruction pattern: Standard Names. (line 1283) + * builtin_setjmp_receiver instruction pattern: Standard Names. +- (line 1269) +-* builtin_setjmp_setup instruction pattern: Standard Names. (line 1258) ++ (line 1273) ++* builtin_setjmp_setup instruction pattern: Standard Names. (line 1262) + * byte_mode: Machine Modes. (line 336) + * BYTES_BIG_ENDIAN: Storage Layout. (line 24) + * BYTES_BIG_ENDIAN, effect on subreg: Regs and Memory. (line 221) +@@ -42664,7 +42668,7 @@ Concept Index + * c_register_pragma_with_expansion: Misc. (line 406) + * call <1>: Side Effects. (line 86) + * call: Flags. (line 239) +-* call instruction pattern: Standard Names. (line 933) ++* call instruction pattern: Standard Names. (line 937) + * call usage: Calls. (line 10) + * call, in call_insn: Flags. (line 33) + * call, in mem: Flags. (line 99) +@@ -42683,13 +42687,13 @@ Concept Index + * call_insn and /u or /i: Flags. (line 29) + * call_insn and /v: Flags. (line 44) + * CALL_INSN_FUNCTION_USAGE: Insns. (line 101) +-* call_pop instruction pattern: Standard Names. (line 961) ++* call_pop instruction pattern: Standard Names. (line 965) + * CALL_POPS_ARGS: Stack Arguments. (line 130) + * CALL_REALLY_USED_REGISTERS: Register Basics. (line 46) + * CALL_USED_REGISTERS: Register Basics. (line 35) + * call_used_regs: Register Basics. (line 59) +-* call_value instruction pattern: Standard Names. (line 953) +-* call_value_pop instruction pattern: Standard Names. (line 961) ++* call_value instruction pattern: Standard Names. (line 957) ++* call_value_pop instruction pattern: Standard Names. (line 965) + * CALLER_SAVE_PROFITABLE: Caller Saves. (line 11) + * calling conventions: Stack and Calling. (line 6) + * calling functions in RTL: Calls. (line 6) +@@ -42705,13 +42709,13 @@ Concept Index + * CANONICALIZE_COMPARISON: MODE_CC Condition Codes. + (line 55) + * canonicalize_funcptr_for_compare instruction pattern: Standard Names. +- (line 1117) ++ (line 1121) + * CASE_USE_BIT_TESTS: Misc. (line 54) + * CASE_VECTOR_MODE: Misc. (line 27) + * CASE_VECTOR_PC_RELATIVE: Misc. (line 40) + * CASE_VECTOR_SHORTEN_MODE: Misc. (line 31) +-* casesi instruction pattern: Standard Names. (line 1041) +-* cbranchMODE4 instruction pattern: Standard Names. (line 922) ++* casesi instruction pattern: Standard Names. (line 1045) ++* cbranchMODE4 instruction pattern: Standard Names. (line 926) + * cc0 <1>: CC0 Condition Codes. + (line 6) + * cc0: Regs and Memory. (line 307) +@@ -42745,7 +42749,7 @@ Concept Index + * change_address: Standard Names. (line 47) + * char: GIMPLE_ASM. (line 53) + * CHAR_TYPE_SIZE: Type Layout. (line 39) +-* check_stack instruction pattern: Standard Names. (line 1204) ++* check_stack instruction pattern: Standard Names. (line 1208) + * CHImode: Machine Modes. (line 202) + * class definitions, register: Register Classes. (line 6) + * class preference constraints: Class Preferences. (line 6) +@@ -42764,15 +42768,15 @@ Concept Index + * CLEANUP_STMT: Statements for C++. (line 6) + * Cleanups: Cleanups. (line 6) + * CLEAR_BY_PIECES_P: Costs. (line 136) +-* clear_cache instruction pattern: Standard Names. (line 1520) ++* clear_cache instruction pattern: Standard Names. (line 1524) + * CLEAR_INSN_CACHE: Trampolines. (line 99) + * CLEAR_RATIO: Costs. (line 124) + * clobber: Side Effects. (line 100) + * clz: Arithmetic. (line 212) + * CLZ_DEFINED_VALUE_AT_ZERO: Misc. (line 319) + * clzM2 instruction pattern: Standard Names. (line 621) +-* cmpmemM instruction pattern: Standard Names. (line 751) +-* cmpstrM instruction pattern: Standard Names. (line 732) ++* cmpmemM instruction pattern: Standard Names. (line 754) ++* cmpstrM instruction pattern: Standard Names. (line 733) + * cmpstrnM instruction pattern: Standard Names. (line 720) + * code generation RTL sequences: Expander Definitions. + (line 6) +@@ -42926,9 +42930,9 @@ Concept Index + * CRTSTUFF_T_CFLAGS: Target Fragment. (line 35) + * CRTSTUFF_T_CFLAGS_S: Target Fragment. (line 39) + * CSImode: Machine Modes. (line 202) +-* cstoreMODE4 instruction pattern: Standard Names. (line 893) ++* cstoreMODE4 instruction pattern: Standard Names. (line 897) + * CTImode: Machine Modes. (line 202) +-* ctrapMM4 instruction pattern: Standard Names. (line 1345) ++* ctrapMM4 instruction pattern: Standard Names. (line 1349) + * ctz: Arithmetic. (line 220) + * CTZ_DEFINED_VALUE_AT_ZERO: Misc. (line 320) + * ctzM2 instruction pattern: Standard Names. (line 630) +@@ -43052,7 +43056,7 @@ Concept Index + * declarations, RTL: RTL Declarations. (line 6) + * DECLARE_LIBRARY_RENAMES: Library Calls. (line 9) + * decrement_and_branch_until_zero instruction pattern: Standard Names. +- (line 1079) ++ (line 1083) + * def_optype_d: Manipulating GIMPLE statements. + (line 94) + * default: GTY Options. (line 81) +@@ -43140,8 +43144,8 @@ Concept Index + * DO_COND: Statements for C++. (line 6) + * DO_STMT: Statements for C++. (line 6) + * DOLLARS_IN_IDENTIFIERS: Misc. (line 491) +-* doloop_begin instruction pattern: Standard Names. (line 1110) +-* doloop_end instruction pattern: Standard Names. (line 1089) ++* doloop_begin instruction pattern: Standard Names. (line 1114) ++* doloop_end instruction pattern: Standard Names. (line 1093) + * DONE: Expander Definitions. + (line 74) + * DONT_USE_BUILTIN_SETJMP: Exception Region Output. +@@ -43182,7 +43186,7 @@ Concept Index + (line 20) + * EH_FRAME_SECTION_NAME: Exception Region Output. + (line 10) +-* eh_return instruction pattern: Standard Names. (line 1285) ++* eh_return instruction pattern: Standard Names. (line 1289) + * EH_RETURN_DATA_REGNO: Exception Handling. (line 7) + * EH_RETURN_HANDLER_RTX: Exception Handling. (line 39) + * EH_RETURN_STACKADJ_RTX: Exception Handling. (line 22) +@@ -43217,7 +43221,7 @@ Concept Index + * enum reg_class: Register Classes. (line 65) + * ENUMERAL_TYPE: Types. (line 6) + * epilogue: Function Entry. (line 6) +-* epilogue instruction pattern: Standard Names. (line 1317) ++* epilogue instruction pattern: Standard Names. (line 1321) + * EPILOGUE_USES: Function Entry. (line 152) + * eq: Comparisons. (line 52) + * eq and attributes: Expressions. (line 64) +@@ -43231,7 +43235,7 @@ Concept Index + * examining SSA_NAMEs: SSA. (line 218) + * exception handling <1>: Exception Handling. (line 6) + * exception handling: Edges. (line 96) +-* exception_receiver instruction pattern: Standard Names. (line 1249) ++* exception_receiver instruction pattern: Standard Names. (line 1253) + * exclamation point: Multi-Alternative. (line 47) + * exclusion_set: Processor pipeline description. + (line 220) +@@ -43251,15 +43255,15 @@ Concept Index + * EXPR_STMT_EXPR: Statements for C++. (line 6) + * expression: Expression trees. (line 6) + * expression codes: RTL Objects. (line 47) +-* extendMN2 instruction pattern: Standard Names. (line 808) ++* extendMN2 instruction pattern: Standard Names. (line 812) + * extensible constraints: Simple Constraints. (line 163) + * EXTRA_ADDRESS_CONSTRAINT: Old Constraints. (line 123) + * EXTRA_CONSTRAINT: Old Constraints. (line 74) + * EXTRA_CONSTRAINT_STR: Old Constraints. (line 95) + * EXTRA_MEMORY_CONSTRAINT: Old Constraints. (line 100) + * EXTRA_SPECS: Driver. (line 245) +-* extv instruction pattern: Standard Names. (line 844) +-* extzv instruction pattern: Standard Names. (line 859) ++* extv instruction pattern: Standard Names. (line 848) ++* extzv instruction pattern: Standard Names. (line 863) + * F in constraint: Simple Constraints. (line 84) + * FAIL: Expander Definitions. + (line 80) +@@ -43295,7 +43299,7 @@ Concept Index + * fix: Conversions. (line 66) + * FIX_TRUNC_EXPR: Unary and Binary Expressions. + (line 6) +-* fix_truncMN2 instruction pattern: Standard Names. (line 795) ++* fix_truncMN2 instruction pattern: Standard Names. (line 799) + * fixed register: Register Basics. (line 15) + * fixed-point fractional library: Fixed-point fractional library routines. + (line 6) +@@ -43306,10 +43310,10 @@ Concept Index + * FIXED_POINT_TYPE: Types. (line 6) + * FIXED_REGISTERS: Register Basics. (line 15) + * fixed_regs: Register Basics. (line 59) +-* fixMN2 instruction pattern: Standard Names. (line 775) ++* fixMN2 instruction pattern: Standard Names. (line 779) + * FIXUNS_TRUNC_LIKE_FIX_TRUNC: Misc. (line 100) +-* fixuns_truncMN2 instruction pattern: Standard Names. (line 799) +-* fixunsMN2 instruction pattern: Standard Names. (line 784) ++* fixuns_truncMN2 instruction pattern: Standard Names. (line 803) ++* fixunsMN2 instruction pattern: Standard Names. (line 788) + * flags in RTL expression: Flags. (line 6) + * float: Conversions. (line 58) + * FLOAT_EXPR: Unary and Binary Expressions. +@@ -43326,8 +43330,8 @@ Concept Index + * Floating Point Emulation: Target Fragment. (line 15) + * floating point emulation library, US Software GOFAST: Library Calls. + (line 44) +-* floatMN2 instruction pattern: Standard Names. (line 767) +-* floatunsMN2 instruction pattern: Standard Names. (line 771) ++* floatMN2 instruction pattern: Standard Names. (line 771) ++* floatunsMN2 instruction pattern: Standard Names. (line 775) + * FLOOR_DIV_EXPR: Unary and Binary Expressions. + (line 6) + * FLOOR_MOD_EXPR: Unary and Binary Expressions. +@@ -43347,8 +43351,8 @@ Concept Index + * FRACT_TYPE_SIZE: Type Layout. (line 68) + * fractional types: Fixed-point fractional library routines. + (line 6) +-* fractMN2 instruction pattern: Standard Names. (line 817) +-* fractunsMN2 instruction pattern: Standard Names. (line 832) ++* fractMN2 instruction pattern: Standard Names. (line 821) ++* fractunsMN2 instruction pattern: Standard Names. (line 836) + * frame layout: Frame Layout. (line 6) + * FRAME_ADDR_RTX: Frame Layout. (line 116) + * FRAME_GROWS_DOWNWARD: Frame Layout. (line 31) +@@ -43368,7 +43372,7 @@ Concept Index + * frame_related, in symbol_ref: Flags. (line 183) + * frequency, count, BB_FREQ_BASE: Profile information. + (line 30) +-* ftruncM2 instruction pattern: Standard Names. (line 790) ++* ftruncM2 instruction pattern: Standard Names. (line 794) + * function <1>: Functions for C++. (line 6) + * function: Functions. (line 6) + * function call conventions: Interface. (line 6) +@@ -43950,7 +43954,7 @@ Concept Index + * INCOMING_RETURN_ADDR_RTX: Frame Layout. (line 139) + * INCOMING_STACK_BOUNDARY: Storage Layout. (line 166) + * INDEX_REG_CLASS: Register Classes. (line 134) +-* indirect_jump instruction pattern: Standard Names. (line 1037) ++* indirect_jump instruction pattern: Standard Names. (line 1041) + * indirect_operand: Machine-Independent Predicates. + (line 71) + * INDIRECT_REF: Storage References. (line 6) +@@ -44005,7 +44009,7 @@ Concept Index + (line 6) + * instruction patterns: Patterns. (line 6) + * instruction splitting: Insn Splitting. (line 6) +-* insv instruction pattern: Standard Names. (line 862) ++* insv instruction pattern: Standard Names. (line 866) + * int: Manipulating GIMPLE statements. + (line 66) + * INT16_TYPE: Type Layout. (line 237) +@@ -44048,7 +44052,7 @@ Concept Index + * IV analysis on GIMPLE: Scalar evolutions. (line 6) + * IV analysis on RTL: loop-iv. (line 6) + * jump: Flags. (line 314) +-* jump instruction pattern: Standard Names. (line 928) ++* jump instruction pattern: Standard Names. (line 932) + * jump instruction patterns: Jump Patterns. (line 6) + * jump instructions and set: Side Effects. (line 56) + * jump, in call_insn: Flags. (line 179) +@@ -44101,7 +44105,7 @@ Concept Index + * LE_EXPR: Unary and Binary Expressions. + (line 6) + * leaf functions: Leaf Functions. (line 6) +-* leaf_function_p: Standard Names. (line 999) ++* leaf_function_p: Standard Names. (line 1003) + * LEAF_REG_REMAP: Leaf Functions. (line 39) + * LEAF_REGISTERS: Leaf Functions. (line 25) + * left rotate: Arithmetic. (line 190) +@@ -44277,7 +44281,7 @@ Concept Index + * memory model: Memory model. (line 6) + * memory reference, nonoffsettable: Simple Constraints. (line 246) + * memory references in constraints: Simple Constraints. (line 17) +-* memory_barrier instruction pattern: Standard Names. (line 1381) ++* memory_barrier instruction pattern: Standard Names. (line 1385) + * MEMORY_MOVE_COST: Costs. (line 29) + * memory_operand: Machine-Independent Predicates. + (line 58) +@@ -44337,7 +44341,7 @@ Concept Index + * movM instruction pattern: Standard Names. (line 11) + * movmemM instruction pattern: Standard Names. (line 654) + * movmisalignM instruction pattern: Standard Names. (line 126) +-* movMODEcc instruction pattern: Standard Names. (line 873) ++* movMODEcc instruction pattern: Standard Names. (line 877) + * movstr instruction pattern: Standard Names. (line 689) + * movstrictM instruction pattern: Standard Names. (line 120) + * msubMN4 instruction pattern: Standard Names. (line 387) +@@ -44413,13 +44417,13 @@ Concept Index + * nonimmediate_operand: Machine-Independent Predicates. + (line 101) + * nonlocal goto handler: Edges. (line 171) +-* nonlocal_goto instruction pattern: Standard Names. (line 1221) ++* nonlocal_goto instruction pattern: Standard Names. (line 1225) + * nonlocal_goto_receiver instruction pattern: Standard Names. +- (line 1238) ++ (line 1242) + * nonmemory_operand: Machine-Independent Predicates. + (line 97) + * nonoffsettable memory reference: Simple Constraints. (line 246) +-* nop instruction pattern: Standard Names. (line 1032) ++* nop instruction pattern: Standard Names. (line 1036) + * NOP_EXPR: Unary and Binary Expressions. + (line 6) + * normal predicates: Predicates. (line 31) +@@ -44614,7 +44618,7 @@ Concept Index + * PREFERRED_STACK_BOUNDARY: Storage Layout. (line 159) + * prefetch: Side Effects. (line 312) + * prefetch and /v: Flags. (line 232) +-* prefetch instruction pattern: Standard Names. (line 1360) ++* prefetch instruction pattern: Standard Names. (line 1364) + * PREFETCH_SCHEDULE_BARRIER_P: Flags. (line 232) + * PREINCREMENT_EXPR: Unary and Binary Expressions. + (line 6) +@@ -44627,7 +44631,7 @@ Concept Index + * PRINT_OPERAND: Instruction Output. (line 81) + * PRINT_OPERAND_ADDRESS: Instruction Output. (line 109) + * PRINT_OPERAND_PUNCT_VALID_P: Instruction Output. (line 102) +-* probe_stack instruction pattern: Standard Names. (line 1213) ++* probe_stack instruction pattern: Standard Names. (line 1217) + * processor functional units: Processor pipeline description. + (line 6) + * processor pipeline description: Processor pipeline description. +@@ -44642,7 +44646,7 @@ Concept Index + * profiling, code generation: Profiling. (line 6) + * program counter: Regs and Memory. (line 362) + * prologue: Function Entry. (line 6) +-* prologue instruction pattern: Standard Names. (line 1304) ++* prologue instruction pattern: Standard Names. (line 1308) + * PROMOTE_MODE: Storage Layout. (line 100) + * pseudo registers: Regs and Memory. (line 9) + * PSImode: Machine Modes. (line 32) +@@ -44804,7 +44808,7 @@ Concept Index + (line 6) + * relative costs: Costs. (line 6) + * RELATIVE_PREFIX_NOT_LINKDIR: Driver. (line 325) +-* reload_completed: Standard Names. (line 999) ++* reload_completed: Standard Names. (line 1003) + * reload_in instruction pattern: Standard Names. (line 99) + * reload_in_progress: Standard Names. (line 57) + * reload_out instruction pattern: Standard Names. (line 99) +@@ -44817,14 +44821,14 @@ Concept Index + (line 6) + * rest_of_decl_compilation: Parsing pass. (line 52) + * rest_of_type_compilation: Parsing pass. (line 52) +-* restore_stack_block instruction pattern: Standard Names. (line 1133) ++* restore_stack_block instruction pattern: Standard Names. (line 1137) + * restore_stack_function instruction pattern: Standard Names. +- (line 1133) ++ (line 1137) + * restore_stack_nonlocal instruction pattern: Standard Names. +- (line 1133) ++ (line 1137) + * RESULT_DECL: Declarations. (line 6) + * return: Side Effects. (line 72) +-* return instruction pattern: Standard Names. (line 986) ++* return instruction pattern: Standard Names. (line 990) + * return values in registers: Scalar Return. (line 6) + * RETURN_ADDR_IN_PREVIOUS_FRAME: Frame Layout. (line 135) + * RETURN_ADDR_OFFSET: Exception Handling. (line 60) +@@ -44912,15 +44916,15 @@ Concept Index + * same_type_p: Types. (line 88) + * SAmode: Machine Modes. (line 148) + * sat_fract: Conversions. (line 90) +-* satfractMN2 instruction pattern: Standard Names. (line 825) +-* satfractunsMN2 instruction pattern: Standard Names. (line 838) ++* satfractMN2 instruction pattern: Standard Names. (line 829) ++* satfractunsMN2 instruction pattern: Standard Names. (line 842) + * satisfies_constraint_: C Constraint Interface. + (line 47) + * SAVE_EXPR: Unary and Binary Expressions. + (line 6) +-* save_stack_block instruction pattern: Standard Names. (line 1133) +-* save_stack_function instruction pattern: Standard Names. (line 1133) +-* save_stack_nonlocal instruction pattern: Standard Names. (line 1133) ++* save_stack_block instruction pattern: Standard Names. (line 1137) ++* save_stack_function instruction pattern: Standard Names. (line 1137) ++* save_stack_nonlocal instruction pattern: Standard Names. (line 1137) + * SBSS_SECTION_ASM_OP: Sections. (line 77) + * Scalar evolutions: Scalar evolutions. (line 6) + * scalars, returned as values: Scalar Return. (line 6) +@@ -44977,7 +44981,7 @@ Concept Index + * SHORT_FRACT_TYPE_SIZE: Type Layout. (line 63) + * SHORT_IMMEDIATES_SIGN_EXTEND: Misc. (line 96) + * SHORT_TYPE_SIZE: Type Layout. (line 16) +-* sibcall_epilogue instruction pattern: Standard Names. (line 1330) ++* sibcall_epilogue instruction pattern: Standard Names. (line 1334) + * sibling call: Edges. (line 122) + * SIBLING_CALL_P: Flags. (line 179) + * SIG_ATOMIC_TYPE: Type Layout. (line 235) +@@ -45062,8 +45066,8 @@ Concept Index + * STACK_POINTER_REGNUM and virtual registers: Regs and Memory. + (line 83) + * stack_pointer_rtx: Frame Registers. (line 90) +-* stack_protect_set instruction pattern: Standard Names. (line 1501) +-* stack_protect_test instruction pattern: Standard Names. (line 1511) ++* stack_protect_set instruction pattern: Standard Names. (line 1505) ++* stack_protect_test instruction pattern: Standard Names. (line 1515) + * STACK_PUSH_CODE: Frame Layout. (line 17) + * STACK_REG_COVER_CLASS: Stack Registers. (line 23) + * STACK_REGS: Stack Registers. (line 20) +@@ -45109,7 +45113,7 @@ Concept Index + * STRING_CST: Constant expressions. + (line 6) + * STRING_POOL_ADDRESS_P: Flags. (line 183) +-* strlenM instruction pattern: Standard Names. (line 760) ++* strlenM instruction pattern: Standard Names. (line 764) + * structure value address: Aggregate Return. (line 6) + * STRUCTURE_SIZE_BOUNDARY: Storage Layout. (line 302) + * structures, returning: Interface. (line 10) +@@ -45168,35 +45172,35 @@ Concept Index + * SYMBOL_REF_USED: Flags. (line 215) + * SYMBOL_REF_WEAK: Flags. (line 220) + * symbolic label: Sharing. (line 20) +-* sync_addMODE instruction pattern: Standard Names. (line 1417) +-* sync_andMODE instruction pattern: Standard Names. (line 1417) ++* sync_addMODE instruction pattern: Standard Names. (line 1421) ++* sync_andMODE instruction pattern: Standard Names. (line 1421) + * sync_compare_and_swapMODE instruction pattern: Standard Names. +- (line 1387) +-* sync_iorMODE instruction pattern: Standard Names. (line 1417) +-* sync_lock_releaseMODE instruction pattern: Standard Names. (line 1482) ++ (line 1391) ++* sync_iorMODE instruction pattern: Standard Names. (line 1421) ++* sync_lock_releaseMODE instruction pattern: Standard Names. (line 1486) + * sync_lock_test_and_setMODE instruction pattern: Standard Names. +- (line 1456) +-* sync_nandMODE instruction pattern: Standard Names. (line 1417) +-* sync_new_addMODE instruction pattern: Standard Names. (line 1449) +-* sync_new_andMODE instruction pattern: Standard Names. (line 1449) +-* sync_new_iorMODE instruction pattern: Standard Names. (line 1449) +-* sync_new_nandMODE instruction pattern: Standard Names. (line 1449) +-* sync_new_subMODE instruction pattern: Standard Names. (line 1449) +-* sync_new_xorMODE instruction pattern: Standard Names. (line 1449) +-* sync_old_addMODE instruction pattern: Standard Names. (line 1432) +-* sync_old_andMODE instruction pattern: Standard Names. (line 1432) +-* sync_old_iorMODE instruction pattern: Standard Names. (line 1432) +-* sync_old_nandMODE instruction pattern: Standard Names. (line 1432) +-* sync_old_subMODE instruction pattern: Standard Names. (line 1432) +-* sync_old_xorMODE instruction pattern: Standard Names. (line 1432) +-* sync_subMODE instruction pattern: Standard Names. (line 1417) +-* sync_xorMODE instruction pattern: Standard Names. (line 1417) ++ (line 1460) ++* sync_nandMODE instruction pattern: Standard Names. (line 1421) ++* sync_new_addMODE instruction pattern: Standard Names. (line 1453) ++* sync_new_andMODE instruction pattern: Standard Names. (line 1453) ++* sync_new_iorMODE instruction pattern: Standard Names. (line 1453) ++* sync_new_nandMODE instruction pattern: Standard Names. (line 1453) ++* sync_new_subMODE instruction pattern: Standard Names. (line 1453) ++* sync_new_xorMODE instruction pattern: Standard Names. (line 1453) ++* sync_old_addMODE instruction pattern: Standard Names. (line 1436) ++* sync_old_andMODE instruction pattern: Standard Names. (line 1436) ++* sync_old_iorMODE instruction pattern: Standard Names. (line 1436) ++* sync_old_nandMODE instruction pattern: Standard Names. (line 1436) ++* sync_old_subMODE instruction pattern: Standard Names. (line 1436) ++* sync_old_xorMODE instruction pattern: Standard Names. (line 1436) ++* sync_subMODE instruction pattern: Standard Names. (line 1421) ++* sync_xorMODE instruction pattern: Standard Names. (line 1421) + * SYSROOT_HEADERS_SUFFIX_SPEC: Driver. (line 239) + * SYSROOT_SUFFIX_SPEC: Driver. (line 234) + * SYSTEM_INCLUDE_DIR: Driver. (line 408) + * t-TARGET: Target Fragment. (line 6) + * table jump: Basic Blocks. (line 57) +-* tablejump instruction pattern: Standard Names. (line 1061) ++* tablejump instruction pattern: Standard Names. (line 1065) + * tag: GTY Options. (line 81) + * tagging insns: Tagging Insns. (line 6) + * tail calls: Tail Calls. (line 6) +@@ -45571,7 +45575,7 @@ Concept Index + * TRAMPOLINE_SIZE: Trampolines. (line 45) + * trampolines for nested functions: Trampolines. (line 6) + * TRANSFER_FROM_TRAMPOLINE: Trampolines. (line 123) +-* trap instruction pattern: Standard Names. (line 1340) ++* trap instruction pattern: Standard Names. (line 1344) + * tree <1>: Macros and Functions. + (line 6) + * tree: Tree overview. (line 6) +@@ -45628,7 +45632,7 @@ Concept Index + * TRUNC_MOD_EXPR: Unary and Binary Expressions. + (line 6) + * truncate: Conversions. (line 38) +-* truncMN2 instruction pattern: Standard Names. (line 803) ++* truncMN2 instruction pattern: Standard Names. (line 807) + * TRUTH_AND_EXPR: Unary and Binary Expressions. + (line 6) + * TRUTH_ANDIF_EXPR: Unary and Binary Expressions. +@@ -45782,8 +45786,8 @@ Concept Index + * unsigned_sat_fract: Conversions. (line 103) + * unspec: Side Effects. (line 287) + * unspec_volatile: Side Effects. (line 287) +-* untyped_call instruction pattern: Standard Names. (line 971) +-* untyped_return instruction pattern: Standard Names. (line 1021) ++* untyped_call instruction pattern: Standard Names. (line 975) ++* untyped_return instruction pattern: Standard Names. (line 1025) + * UPDATE_PATH_HOST_CANONICALIZE (PATH): Filesystem. (line 59) + * update_ssa: SSA. (line 76) + * update_stmt <1>: SSA Operands. (line 6) +@@ -45972,7 +45976,7 @@ Concept Index + * XVECLEN: Accessors. (line 44) + * XWINT: Accessors. (line 6) + * zero_extend: Conversions. (line 28) +-* zero_extendMN2 instruction pattern: Standard Names. (line 813) ++* zero_extendMN2 instruction pattern: Standard Names. (line 817) + * zero_extract: Bit-Fields. (line 30) + * zero_extract, canonicalization of: Insn Canonicalizations. + (line 88) +@@ -46192,131 +46196,131 @@ Node: Define Constraints874656 + Node: C Constraint Interface881437 + Node: Standard Names885078 + Ref: shift patterns904006 +-Ref: prologue instruction pattern943725 +-Ref: epilogue instruction pattern944218 +-Node: Pattern Ordering953934 +-Node: Dependent Patterns955170 +-Node: Jump Patterns956790 +-Ref: Jump Patterns-Footnote-1958934 +-Node: Looping Patterns958980 +-Node: Insn Canonicalizations963708 +-Node: Expander Definitions967659 +-Node: Insn Splitting975777 +-Node: Including Patterns985379 +-Node: Peephole Definitions987159 +-Node: define_peephole988412 +-Node: define_peephole2994743 +-Node: Insn Attributes997810 +-Node: Defining Attributes998916 +-Node: Expressions1001436 +-Node: Tagging Insns1008038 +-Node: Attr Example1012391 +-Node: Insn Lengths1014765 +-Node: Constant Attributes1017824 +-Node: Delay Slots1018993 +-Node: Processor pipeline description1022217 +-Ref: Processor pipeline description-Footnote-11039835 +-Node: Conditional Execution1040157 +-Node: Constant Definitions1043010 +-Node: Iterators1044605 +-Node: Mode Iterators1045052 +-Node: Defining Mode Iterators1046030 +-Node: Substitutions1047524 +-Node: Examples1049765 +-Node: Code Iterators1051213 +-Node: Target Macros1053470 +-Node: Target Structure1056558 +-Node: Driver1057827 +-Node: Run-time Target1081508 +-Node: Per-Function Data1089380 +-Node: Storage Layout1092143 +-Node: Type Layout1117729 +-Node: Registers1132229 +-Node: Register Basics1133203 +-Node: Allocation Order1138770 +-Node: Values in Registers1140791 +-Node: Leaf Functions1148280 +-Node: Stack Registers1151138 +-Node: Register Classes1152410 +-Node: Old Constraints1180035 +-Node: Stack and Calling1187187 +-Node: Frame Layout1187721 +-Node: Exception Handling1198601 +-Node: Stack Checking1204979 +-Node: Frame Registers1209792 +-Node: Elimination1216685 +-Node: Stack Arguments1220914 +-Node: Register Arguments1227723 +-Node: Scalar Return1243201 +-Node: Aggregate Return1249293 +-Node: Caller Saves1252974 +-Node: Function Entry1254152 +-Node: Profiling1266780 +-Node: Tail Calls1268479 +-Node: Stack Smashing Protection1269845 +-Node: Varargs1270957 +-Node: Trampolines1278952 +-Node: Library Calls1285599 +-Node: Addressing Modes1290449 +-Node: Anchored Addresses1307858 +-Node: Condition Code1310507 +-Node: CC0 Condition Codes1312636 +-Node: MODE_CC Condition Codes1315882 +-Node: Cond. Exec. Macros1322111 +-Node: Costs1323090 +-Node: Scheduling1336551 +-Node: Sections1353818 +-Node: PIC1368886 +-Node: Assembler Format1370890 +-Node: File Framework1372028 +-Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1377503 +-Node: Data Output1380768 +-Node: Uninitialized Data1388527 +-Node: Label Output1394091 +-Node: Initialization1415781 +-Node: Macros for Initialization1421743 +-Node: Instruction Output1428195 +-Node: Dispatch Tables1437866 +-Node: Exception Region Output1441681 +-Node: Alignment Output1447423 +-Node: Debugging Info1451586 +-Node: All Debuggers1452256 +-Node: DBX Options1455111 +-Node: DBX Hooks1460560 +-Node: File Names and DBX1462486 +-Node: SDB and DWARF1464598 +-Node: VMS Debug1468899 +-Node: Floating Point1469469 +-Node: Mode Switching1474292 +-Node: Target Attributes1478218 +-Node: Emulated TLS1485054 +-Node: MIPS Coprocessors1488444 +-Node: PCH Target1490013 +-Node: C++ ABI1491555 +-Node: Named Address Spaces1496204 +-Node: Misc1501306 +-Ref: TARGET_SHIFT_TRUNCATION_MASK1508734 +-Node: Host Config1553245 +-Node: Host Common1554313 +-Node: Filesystem1556692 +-Node: Host Misc1560807 +-Node: Fragments1563256 +-Node: Target Fragment1564451 +-Node: Host Fragment1570341 +-Node: Collect21570581 +-Node: Header Dirs1573217 +-Node: Type Information1574640 +-Node: GTY Options1576931 +-Node: GGC Roots1587606 +-Node: Files1588326 +-Node: Invoking the garbage collector1591072 +-Node: Plugins1592125 +-Node: Funding1607947 +-Node: GNU Project1610434 +-Node: Copying1611083 +-Node: GNU Free Documentation License1648614 +-Node: Contributors1671023 +-Node: Option Index1707710 +-Node: Concept Index1708295 ++Ref: prologue instruction pattern944017 ++Ref: epilogue instruction pattern944510 ++Node: Pattern Ordering954226 ++Node: Dependent Patterns955462 ++Node: Jump Patterns957082 ++Ref: Jump Patterns-Footnote-1959226 ++Node: Looping Patterns959272 ++Node: Insn Canonicalizations964000 ++Node: Expander Definitions967951 ++Node: Insn Splitting976069 ++Node: Including Patterns985671 ++Node: Peephole Definitions987451 ++Node: define_peephole988704 ++Node: define_peephole2995035 ++Node: Insn Attributes998102 ++Node: Defining Attributes999208 ++Node: Expressions1001728 ++Node: Tagging Insns1008330 ++Node: Attr Example1012683 ++Node: Insn Lengths1015057 ++Node: Constant Attributes1018116 ++Node: Delay Slots1019285 ++Node: Processor pipeline description1022509 ++Ref: Processor pipeline description-Footnote-11040127 ++Node: Conditional Execution1040449 ++Node: Constant Definitions1043302 ++Node: Iterators1044897 ++Node: Mode Iterators1045344 ++Node: Defining Mode Iterators1046322 ++Node: Substitutions1047816 ++Node: Examples1050057 ++Node: Code Iterators1051505 ++Node: Target Macros1053762 ++Node: Target Structure1056850 ++Node: Driver1058119 ++Node: Run-time Target1081800 ++Node: Per-Function Data1089672 ++Node: Storage Layout1092435 ++Node: Type Layout1118021 ++Node: Registers1132521 ++Node: Register Basics1133495 ++Node: Allocation Order1139062 ++Node: Values in Registers1141083 ++Node: Leaf Functions1148572 ++Node: Stack Registers1151430 ++Node: Register Classes1152702 ++Node: Old Constraints1180327 ++Node: Stack and Calling1187479 ++Node: Frame Layout1188013 ++Node: Exception Handling1198893 ++Node: Stack Checking1205271 ++Node: Frame Registers1210084 ++Node: Elimination1216977 ++Node: Stack Arguments1221206 ++Node: Register Arguments1228015 ++Node: Scalar Return1243493 ++Node: Aggregate Return1249585 ++Node: Caller Saves1253266 ++Node: Function Entry1254444 ++Node: Profiling1267072 ++Node: Tail Calls1268771 ++Node: Stack Smashing Protection1270137 ++Node: Varargs1271249 ++Node: Trampolines1279244 ++Node: Library Calls1285891 ++Node: Addressing Modes1290741 ++Node: Anchored Addresses1308150 ++Node: Condition Code1310799 ++Node: CC0 Condition Codes1312928 ++Node: MODE_CC Condition Codes1316174 ++Node: Cond. Exec. Macros1322403 ++Node: Costs1323382 ++Node: Scheduling1336843 ++Node: Sections1354110 ++Node: PIC1369178 ++Node: Assembler Format1371182 ++Node: File Framework1372320 ++Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1377795 ++Node: Data Output1381060 ++Node: Uninitialized Data1388819 ++Node: Label Output1394383 ++Node: Initialization1416073 ++Node: Macros for Initialization1422035 ++Node: Instruction Output1428487 ++Node: Dispatch Tables1438158 ++Node: Exception Region Output1441973 ++Node: Alignment Output1447715 ++Node: Debugging Info1451878 ++Node: All Debuggers1452548 ++Node: DBX Options1455403 ++Node: DBX Hooks1460852 ++Node: File Names and DBX1462778 ++Node: SDB and DWARF1464890 ++Node: VMS Debug1469191 ++Node: Floating Point1469761 ++Node: Mode Switching1474584 ++Node: Target Attributes1478510 ++Node: Emulated TLS1485346 ++Node: MIPS Coprocessors1488736 ++Node: PCH Target1490305 ++Node: C++ ABI1491847 ++Node: Named Address Spaces1496496 ++Node: Misc1501598 ++Ref: TARGET_SHIFT_TRUNCATION_MASK1509026 ++Node: Host Config1553537 ++Node: Host Common1554605 ++Node: Filesystem1556984 ++Node: Host Misc1561099 ++Node: Fragments1563548 ++Node: Target Fragment1564743 ++Node: Host Fragment1570633 ++Node: Collect21570873 ++Node: Header Dirs1573509 ++Node: Type Information1574932 ++Node: GTY Options1577223 ++Node: GGC Roots1587898 ++Node: Files1588618 ++Node: Invoking the garbage collector1591364 ++Node: Plugins1592417 ++Node: Funding1608239 ++Node: GNU Project1610726 ++Node: Copying1611375 ++Node: GNU Free Documentation License1648906 ++Node: Contributors1671315 ++Node: Option Index1708002 ++Node: Concept Index1708587 +  + End Tag Table diff --git a/lang/gcc45/patches/patch-gcc_doc_gcj-dbtool.1 b/lang/gcc45/patches/patch-gcc_doc_gcj-dbtool.1 new file mode 100644 index 000000000..dba2d8fbf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcj-dbtool.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gcj-dbtool.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/gcj-dbtool.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GCJ-DBTOOL 1" +-.TH GCJ-DBTOOL 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GCJ-DBTOOL 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gcj.1 b/lang/gcc45/patches/patch-gcc_doc_gcj.1 new file mode 100644 index 000000000..91bfd5834 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcj.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gcj.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/gcj.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GCJ 1" +-.TH GCJ 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GCJ 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gcj.info b/lang/gcc45/patches/patch-gcc_doc_gcj.info new file mode 100644 index 000000000..46e493b1d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcj.info @@ -0,0 +1,11 @@ +$NetBSD$ + +--- gcc/doc/gcj.info.orig Wed May 21 19:43:28 2014 ++++ gcc/doc/gcj.info +@@ -1,5 +1,5 @@ + This is doc/gcj.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/java/gcj.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/java/gcj.texi. + + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free + Software Foundation, Inc. diff --git a/lang/gcc45/patches/patch-gcc_doc_gcov.1 b/lang/gcc45/patches/patch-gcc_doc_gcov.1 new file mode 100644 index 000000000..04daa1753 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcov.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gcov.1.orig Thu Apr 28 14:39:47 2011 ++++ gcc/doc/gcov.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GCOV 1" +-.TH GCOV 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GCOV 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gcov.texi b/lang/gcc45/patches/patch-gcc_doc_gcov.texi new file mode 100644 index 000000000..05033ebe9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gcov.texi @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/doc/gcov.texi.orig Fri Feb 20 15:20:38 2009 ++++ gcc/doc/gcov.texi +@@ -128,8 +128,9 @@ gcov [@option{-v}|@option{--version}] [@option{-h}|@op + [@option{-l}|@option{--long-file-names}] + [@option{-p}|@option{--preserve-paths}] + [@option{-f}|@option{--function-summaries}] +- [@option{-o}|@option{--object-directory} @var{directory|file}] @var{sourcefiles} ++ [@option{-o}|@option{--object-directory} @var{directory|file}] + [@option{-u}|@option{--unconditional-branches}] ++ @var{sourcefiles} + @c man end + @c man begin SEEALSO + gpl(7), gfdl(7), fsf-funding(7), gcc(1) and the Info entry for @file{gcc}. diff --git a/lang/gcc45/patches/patch-gcc_doc_generic.texi b/lang/gcc45/patches/patch-gcc_doc_generic.texi deleted file mode 100644 index d7a825d62..000000000 --- a/lang/gcc45/patches/patch-gcc_doc_generic.texi +++ /dev/null @@ -1,22 +0,0 @@ -$NetBSD: patch-gcc_doc_generic.texi,v 1.1 2014/03/26 11:07:27 jperkin Exp $ - -Texinfo 5 compatibility. - ---- gcc/doc/generic.texi.orig 2010-07-06 20:23:53.000000000 +0000 -+++ gcc/doc/generic.texi -@@ -1407,13 +1407,13 @@ generate these expressions anyhow, if it - not matter. The type of the operands and that of the result are - always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}. - --@itemx POINTER_PLUS_EXPR -+@item POINTER_PLUS_EXPR - This node represents pointer arithmetic. The first operand is always - a pointer/reference type. The second operand is always an unsigned - integer type compatible with sizetype. This is the only binary - arithmetic operand that can operate on pointer types. - --@itemx PLUS_EXPR -+@item PLUS_EXPR - @itemx MINUS_EXPR - @itemx MULT_EXPR - These nodes represent various binary arithmetic operations. diff --git a/lang/gcc45/patches/patch-gcc_doc_gfdl.7 b/lang/gcc45/patches/patch-gcc_doc_gfdl.7 new file mode 100644 index 000000000..cdbd41de6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gfdl.7 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gfdl.7.orig Thu Apr 28 14:39:50 2011 ++++ gcc/doc/gfdl.7 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GFDL 7" +-.TH GFDL 7 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GFDL 7 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gfortran.1 b/lang/gcc45/patches/patch-gcc_doc_gfortran.1 new file mode 100644 index 000000000..1164cd9b8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gfortran.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gfortran.1.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/gfortran.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GFORTRAN 1" +-.TH GFORTRAN 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GFORTRAN 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gij.1 b/lang/gcc45/patches/patch-gcc_doc_gij.1 new file mode 100644 index 000000000..9d10713b0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gij.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gij.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/gij.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GIJ 1" +-.TH GIJ 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GIJ 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_gpl.7 b/lang/gcc45/patches/patch-gcc_doc_gpl.7 new file mode 100644 index 000000000..b79f9571d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_gpl.7 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/gpl.7.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/gpl.7 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GPL 7" +-.TH GPL 7 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GPL 7 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_grmic.1 b/lang/gcc45/patches/patch-gcc_doc_grmic.1 new file mode 100644 index 000000000..05d780ba6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_grmic.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/grmic.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/grmic.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "GRMIC 1" +-.TH GRMIC 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH GRMIC 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_install.texi b/lang/gcc45/patches/patch-gcc_doc_install.texi new file mode 100644 index 000000000..3a212f991 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_install.texi @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/install.texi.orig Sun Jan 30 18:27:47 2011 ++++ gcc/doc/install.texi +@@ -1194,7 +1194,7 @@ Division by zero checks use the break instruction. + + @item --with-llsc + On MIPS targets, make @option{-mllsc} the default when no +-@option{-mno-lsc} option is passed. This is the default for ++@option{-mno-llsc} option is passed. This is the default for + Linux-based targets, as the kernel will emulate them if the ISA does + not provide them. + diff --git a/lang/gcc45/patches/patch-gcc_doc_invoke.texi b/lang/gcc45/patches/patch-gcc_doc_invoke.texi index 58d2d64d4..e2f6246ec 100644 --- a/lang/gcc45/patches/patch-gcc_doc_invoke.texi +++ b/lang/gcc45/patches/patch-gcc_doc_invoke.texi @@ -1,61 +1,52 @@ -$NetBSD: patch-gcc_doc_invoke.texi,v 1.1 2014/03/26 11:07:27 jperkin Exp $ +$NetBSD$ -Texinfo 5 compatibility. - ---- gcc/doc/invoke.texi.orig 2011-03-23 22:03:29.000000000 +0000 +--- gcc/doc/invoke.texi.orig Wed Mar 23 22:03:29 2011 +++ gcc/doc/invoke.texi -@@ -4875,11 +4875,11 @@ Dump after duplicating the computed goto - @option{-fdump-rtl-ce3} enable dumping after the three - if conversion passes. +@@ -404,6 +404,7 @@ Objective-C and Objective-C++ Dialects}. + -include @var{file} -imacros @var{file} @gol + -iprefix @var{file} -iwithprefix @var{dir} @gol + -iwithprefixbefore @var{dir} -isystem @var{dir} @gol ++-cxx-isystem @var{dir} @gol + -imultilib @var{dir} -isysroot @var{dir} @gol + -M -MM -MF -MG -MP -MQ -MT -nostdinc @gol + -P -fworking-directory -remap @gol +@@ -425,7 +426,8 @@ Objective-C and Objective-C++ Dialects}. --@itemx -fdump-rtl-cprop_hardreg -+@item -fdump-rtl-cprop_hardreg - @opindex fdump-rtl-cprop_hardreg - Dump after hard register copy propagation. + @item Directory Options + @xref{Directory Options,,Options for Directory Search}. +-@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} -L@var{dir} ++@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} ++-iremap@var{src}:@var{dst} -L@var{dir} + -specs=@var{file} -I- --sysroot=@var{dir}} --@itemx -fdump-rtl-csa -+@item -fdump-rtl-csa - @opindex fdump-rtl-csa - Dump after combining stack adjustments. + @item Target Options +@@ -3246,11 +3248,11 @@ Furthermore, the prior value shall be read only to det + to be stored.''. If a program breaks these rules, the results on any + particular implementation are entirely unpredictable. -@@ -4890,11 +4890,11 @@ Dump after combining stack adjustments. - @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after - the two common sub-expression elimination passes. +-Examples of code with undefined behavior are @code{a = a++;}, @code{a[n] +-= b[n++]} and @code{a[i++] = i;}. Some more complicated cases are not +-diagnosed by this option, and it may give an occasional false positive +-result, but in general it has been found fairly effective at detecting +-this sort of problem in programs. ++Examples of code with undefined behavior are @code{a = a++;}, ++@code{a[n] = b[n++]} and @code{a[i++] = i;}. Some more complicated cases ++are not diagnosed by this option, and it may give an occasional false ++positive result, but in general it has been found fairly effective at ++detecting this sort of problem in programs. --@itemx -fdump-rtl-dce -+@item -fdump-rtl-dce - @opindex fdump-rtl-dce - Dump after the standalone dead code elimination passes. - --@itemx -fdump-rtl-dbr -+@item -fdump-rtl-dbr - @opindex fdump-rtl-dbr - Dump after delayed branch scheduling. - -@@ -4939,7 +4939,7 @@ Dump after the initialization of the reg - @opindex fdump-rtl-initvals - Dump after the computation of the initial value sets. - --@itemx -fdump-rtl-into_cfglayout -+@item -fdump-rtl-into_cfglayout - @opindex fdump-rtl-into_cfglayout - Dump after converting to cfglayout mode. - -@@ -4969,7 +4969,7 @@ Dump after removing redundant mode switc - @opindex fdump-rtl-rnreg - Dump after register renumbering. - --@itemx -fdump-rtl-outof_cfglayout -+@item -fdump-rtl-outof_cfglayout - @opindex fdump-rtl-outof_cfglayout - Dump after converting from cfglayout mode. - -@@ -4981,7 +4981,7 @@ Dump after the peephole pass. - @opindex fdump-rtl-postreload - Dump after post-reload optimizations. - --@itemx -fdump-rtl-pro_and_epilogue -+@item -fdump-rtl-pro_and_epilogue - @opindex fdump-rtl-pro_and_epilogue - Dump after generating the function pro and epilogues. + The standard is worded confusingly, therefore there is some debate + over the precise meaning of the sequence point rules in subtle cases. +@@ -8872,6 +8874,12 @@ Add the directory @var{dir} to the head of the list of + be searched for header files only for the case of @samp{#include + "@var{file}"}; they are not searched for @samp{#include <@var{file}>}, + otherwise just like @option{-I}. ++ ++@item -iremap @var{src}:@var{dst} ++@opindex iremap ++Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time. ++This option can be specified more than once. Processing stops at the first ++match. + @item -L@var{dir} + @opindex L diff --git a/lang/gcc45/patches/patch-gcc_doc_jcf-dump.1 b/lang/gcc45/patches/patch-gcc_doc_jcf-dump.1 new file mode 100644 index 000000000..f6404ec64 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_jcf-dump.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/jcf-dump.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/jcf-dump.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "JCF-DUMP 1" +-.TH JCF-DUMP 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH JCF-DUMP 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_jv-convert.1 b/lang/gcc45/patches/patch-gcc_doc_jv-convert.1 new file mode 100644 index 000000000..49a29a35b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_jv-convert.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/jv-convert.1.orig Thu Apr 28 15:11:19 2011 ++++ gcc/doc/jv-convert.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "JV-CONVERT 1" +-.TH JV-CONVERT 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH JV-CONVERT 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_doc_md.texi b/lang/gcc45/patches/patch-gcc_doc_md.texi new file mode 100644 index 000000000..0d745212f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_md.texi @@ -0,0 +1,43 @@ +$NetBSD$ + +--- gcc/doc/md.texi.orig Tue Dec 15 18:36:44 2009 ++++ gcc/doc/md.texi +@@ -4503,8 +4503,9 @@ byte by byte in lexicographic order starting at the be + string. The instruction is not allowed to prefetch more than one byte + at a time since either string may end in the first byte and reading past + that may access an invalid page or segment and cause a fault. The +-effect of the instruction is to store a value in operand 0 whose sign +-indicates the result of the comparison. ++comparison terminates early if the fetched bytes are different or if ++they are equal to zero. The effect of the instruction is to store a ++value in operand 0 whose sign indicates the result of the comparison. + + @cindex @code{cmpstr@var{m}} instruction pattern + @item @samp{cmpstr@var{m}} +@@ -4522,8 +4523,10 @@ The two memory blocks specified are compared byte by b + order starting at the beginning of each string. The instruction is not allowed + to prefetch more than one byte at a time since either string may end in the + first byte and reading past that may access an invalid page or segment and +-cause a fault. The effect of the instruction is to store a value in operand 0 +-whose sign indicates the result of the comparison. ++cause a fault. The comparison will terminate when the fetched bytes ++are different or if they are equal to zero. The effect of the ++instruction is to store a value in operand 0 whose sign indicates the ++result of the comparison. + + @cindex @code{cmpmem@var{m}} instruction pattern + @item @samp{cmpmem@var{m}} +@@ -4531,9 +4534,10 @@ Block compare instruction, with five operands like the + of @samp{cmpstr@var{m}}. The two memory blocks specified are compared + byte by byte in lexicographic order starting at the beginning of each + block. Unlike @samp{cmpstr@var{m}} the instruction can prefetch +-any bytes in the two memory blocks. The effect of the instruction is +-to store a value in operand 0 whose sign indicates the result of the +-comparison. ++any bytes in the two memory blocks. Also unlike @samp{cmpstr@var{m}} ++the comparison will not stop if both bytes are zero. The effect of ++the instruction is to store a value in operand 0 whose sign indicates ++the result of the comparison. + + @cindex @code{strlen@var{m}} instruction pattern + @item @samp{strlen@var{m}} diff --git a/lang/gcc45/patches/patch-gcc_doc_rebuild-gcj-db.1 b/lang/gcc45/patches/patch-gcc_doc_rebuild-gcj-db.1 new file mode 100644 index 000000000..0cc0ea73f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_doc_rebuild-gcj-db.1 @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/doc/rebuild-gcj-db.1.orig Thu Apr 28 15:20:27 2011 ++++ gcc/doc/rebuild-gcj-db.1 +@@ -132,7 +132,7 @@ + .\" ======================================================================== + .\" + .IX Title "REBUILD-GCJ-DB 1" +-.TH REBUILD-GCJ-DB 1 "2011-04-28" "gcc-4.5.3" "GNU" ++.TH REBUILD-GCJ-DB 1 "2012-07-02" "gcc-4.5.4" "GNU" + .\" For nroff, turn off justification. Always turn off hyphenation; it makes + .\" way too many mistakes in technical documents. + .if n .ad l diff --git a/lang/gcc45/patches/patch-gcc_dojump.c b/lang/gcc45/patches/patch-gcc_dojump.c new file mode 100644 index 000000000..871402aad --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_dojump.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/dojump.c.orig Fri Feb 19 18:19:06 2010 ++++ gcc/dojump.c +@@ -1022,7 +1022,7 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_co + } + else + { +- if (GET_MODE_CLASS (mode) == MODE_FLOAT ++ if (SCALAR_FLOAT_MODE_P (mode) + && ! can_compare_p (code, mode, ccp_jump) + && can_compare_p (swap_condition (code), mode, ccp_jump)) + { +@@ -1033,7 +1033,7 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_co + op1 = tmp; + } + +- else if (GET_MODE_CLASS (mode) == MODE_FLOAT ++ else if (SCALAR_FLOAT_MODE_P (mode) + && ! can_compare_p (code, mode, ccp_jump) + + /* Never split ORDERED and UNORDERED. These must be implemented. */ diff --git a/lang/gcc45/patches/patch-gcc_dwarf2out.c b/lang/gcc45/patches/patch-gcc_dwarf2out.c new file mode 100644 index 000000000..ef31c3cdd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_dwarf2out.c @@ -0,0 +1,296 @@ +$NetBSD$ + +--- gcc/dwarf2out.c.orig Mon Apr 18 17:38:13 2011 ++++ gcc/dwarf2out.c +@@ -4254,6 +4254,12 @@ typedef struct GTY(()) dw_loc_list_struct { + Only on head of list */ + const char *section; /* Section this loclist is relative to */ + dw_loc_descr_ref expr; ++ /* True if all addresses in this and subsequent lists are known to be ++ resolved. */ ++ bool resolved_addr; ++ /* True if this list has been replaced by dw_loc_next. */ ++ bool replaced; ++ bool emitted; + } dw_loc_list_node; + + #if defined (DWARF2_DEBUGGING_INFO) || defined (DWARF2_UNWIND_INFO) +@@ -5757,6 +5763,19 @@ typedef struct var_loc_list_def var_loc_list; + /* Table of decl location linked lists. */ + static GTY ((param_is (var_loc_list))) htab_t decl_loc_table; + ++/* A cached location list. */ ++struct GTY (()) cached_dw_loc_list_def { ++ /* The DECL_UID of the decl that this entry describes. */ ++ unsigned int decl_id; ++ ++ /* The cached location list. */ ++ dw_loc_list_ref loc_list; ++}; ++typedef struct cached_dw_loc_list_def cached_dw_loc_list; ++ ++/* Table of cached location lists. */ ++static GTY ((param_is (cached_dw_loc_list))) htab_t cached_dw_loc_list_table; ++ + /* A pointer to the base of a list of references to DIE's that + are uniquely identified by their tag, presence/absence of + children DIE's, and list of attribute/value pairs. */ +@@ -6110,7 +6129,7 @@ static bool add_const_value_attribute (dw_die_ref, rtx + static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *); + static void insert_float (const_rtx, unsigned char *); + static rtx rtl_for_decl_location (tree); +-static bool add_location_or_const_value_attribute (dw_die_ref, tree, ++static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool, + enum dwarf_attribute); + static bool tree_add_const_value_attribute (dw_die_ref, tree); + static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree); +@@ -7729,6 +7748,24 @@ lookup_decl_loc (const_tree decl) + htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl)); + } + ++/* Returns a hash value for X (which really is a cached_dw_loc_list_list). */ ++ ++static hashval_t ++cached_dw_loc_list_table_hash (const void *x) ++{ ++ return (hashval_t) ((const cached_dw_loc_list *) x)->decl_id; ++} ++ ++/* Return nonzero if decl_id of cached_dw_loc_list X is the same as ++ UID of decl *Y. */ ++ ++static int ++cached_dw_loc_list_table_eq (const void *x, const void *y) ++{ ++ return (((const cached_dw_loc_list *) x)->decl_id ++ == DECL_UID ((const_tree) y)); ++} ++ + /* Equate a DIE to a particular declaration. */ + + static void +@@ -10353,6 +10390,10 @@ output_loc_list (dw_loc_list_ref list_head) + { + dw_loc_list_ref curr = list_head; + ++ if (list_head->emitted) ++ return; ++ list_head->emitted = true; ++ + ASM_OUTPUT_LABEL (asm_out_file, list_head->ll_symbol); + + /* Walk the location list, and output each range + expression. */ +@@ -15918,15 +15959,22 @@ fortran_common (tree decl, HOST_WIDE_INT *value) + these things can crop up in other ways also.) Note that one type of + constant value which can be passed into an inlined function is a constant + pointer. This can happen for example if an actual argument in an inlined +- function call evaluates to a compile-time constant address. */ ++ function call evaluates to a compile-time constant address. + ++ CACHE_P is true if it is worth caching the location list for DECL, ++ so that future calls can reuse it rather than regenerate it from scratch. ++ This is true for BLOCK_NONLOCALIZED_VARS in inlined subroutines, ++ since we will need to refer to them each time the function is inlined. */ ++ + static bool +-add_location_or_const_value_attribute (dw_die_ref die, tree decl, ++add_location_or_const_value_attribute (dw_die_ref die, tree decl, bool cache_p, + enum dwarf_attribute attr) + { + rtx rtl; + dw_loc_list_ref list; + var_loc_list *loc_list; ++ cached_dw_loc_list *cache; ++ void **slot; + + if (TREE_CODE (decl) == ERROR_MARK) + return false; +@@ -15962,7 +16010,34 @@ add_location_or_const_value_attribute (dw_die_ref die, + && add_const_value_attribute (die, rtl)) + return true; + } +- list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2); ++ /* If this decl is from BLOCK_NONLOCALIZED_VARS, we might need its ++ list several times. See if we've already cached the contents. */ ++ list = NULL; ++ if (loc_list == NULL || cached_dw_loc_list_table == NULL) ++ cache_p = false; ++ if (cache_p) ++ { ++ cache = (cached_dw_loc_list *) ++ htab_find_with_hash (cached_dw_loc_list_table, decl, DECL_UID (decl)); ++ if (cache) ++ list = cache->loc_list; ++ } ++ if (list == NULL) ++ { ++ list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2); ++ /* It is usually worth caching this result if the decl is from ++ BLOCK_NONLOCALIZED_VARS and if the list has at least two elements. */ ++ if (cache_p && list && list->dw_loc_next) ++ { ++ slot = htab_find_slot_with_hash (cached_dw_loc_list_table, decl, ++ DECL_UID (decl), INSERT); ++ cache = (cached_dw_loc_list *) ++ ggc_alloc_cleared (sizeof (cached_dw_loc_list)); ++ cache->decl_id = DECL_UID (decl); ++ cache->loc_list = list; ++ *slot = cache; ++ } ++ } + if (list) + { + add_AT_location_description (die, attr, list); +@@ -16592,9 +16667,9 @@ add_byte_size_attribute (dw_die_ref die, tree tree_nod + + /* Note that `size' might be -1 when we get to this point. If it is, that + indicates that the byte size of the entity in question is variable. We +- have no good way of expressing this fact in Dwarf at the present time, +- so just let the -1 pass on through. */ +- add_AT_unsigned (die, DW_AT_byte_size, size); ++ have no good way of expressing this fact in Dwarf at the present time. ++ GCC/35998: Avoid passing negative size values to Dtrace and gdb. */ ++ add_AT_unsigned (die, DW_AT_byte_size, (size != (unsigned)-1 ? size : 0)); + } + + /* For a FIELD_DECL node which represents a bit-field, output an attribute +@@ -17530,7 +17605,7 @@ gen_formal_parameter_die (tree node, tree origin, bool + equate_decl_number_to_die (node, parm_die); + if (! DECL_ABSTRACT (node_or_origin)) + add_location_or_const_value_attribute (parm_die, node_or_origin, +- DW_AT_location); ++ node == NULL, DW_AT_location); + + break; + +@@ -17710,6 +17785,7 @@ dwarf2out_abstract_function (tree decl) + tree context; + int was_abstract; + htab_t old_decl_loc_table; ++ htab_t old_cached_dw_loc_list_table; + + /* Make sure we have the actual abstract inline, not a clone. */ + decl = DECL_ORIGIN (decl); +@@ -17723,7 +17799,9 @@ dwarf2out_abstract_function (tree decl) + DIE. Be sure to not clobber the outer location table nor use it or we would + get locations in abstract instantces. */ + old_decl_loc_table = decl_loc_table; ++ old_cached_dw_loc_list_table = cached_dw_loc_list_table; + decl_loc_table = NULL; ++ cached_dw_loc_list_table = NULL; + + /* Be sure we've emitted the in-class declaration DIE (if any) first, so + we don't get confused by DECL_ABSTRACT. */ +@@ -17748,6 +17826,7 @@ dwarf2out_abstract_function (tree decl) + + current_function_decl = save_fn; + decl_loc_table = old_decl_loc_table; ++ cached_dw_loc_list_table = old_cached_dw_loc_list_table; + pop_cfun (); + } + +@@ -18429,9 +18508,8 @@ gen_variable_die (tree decl, tree origin, dw_die_ref c + && !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin))) + defer_location (decl_or_origin, var_die); + else +- add_location_or_const_value_attribute (var_die, +- decl_or_origin, +- DW_AT_location); ++ add_location_or_const_value_attribute (var_die, decl_or_origin, ++ decl == NULL, DW_AT_location); + add_pubname (decl_or_origin, var_die); + } + else +@@ -20037,6 +20115,7 @@ dwarf2out_function_decl (tree decl) + dwarf2out_decl (decl); + + htab_empty (decl_loc_table); ++ htab_empty (cached_dw_loc_list_table); + } + + /* Output a marker (i.e. a label) for the beginning of the generated code for +@@ -20637,6 +20716,11 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED) + decl_loc_table = htab_create_ggc (10, decl_loc_table_hash, + decl_loc_table_eq, NULL); + ++ /* Allocate the cached_dw_loc_list_table. */ ++ cached_dw_loc_list_table ++ = htab_create_ggc (10, cached_dw_loc_list_table_hash, ++ cached_dw_loc_list_table_eq, NULL); ++ + /* Allocate the initial hunk of the decl_scope_table. */ + decl_scope_table = VEC_alloc (tree, gc, 256); + +@@ -21261,30 +21345,53 @@ resolve_addr (dw_die_ref die) + { + dw_die_ref c; + dw_attr_ref a; +- dw_loc_list_ref *curr; ++ dw_loc_list_ref *curr, *start, loc; + unsigned ix; + + for (ix = 0; VEC_iterate (dw_attr_node, die->die_attr, ix, a); ix++) + switch (AT_class (a)) + { + case dw_val_class_loc_list: +- curr = AT_loc_list_ptr (a); +- while (*curr) ++ start = curr = AT_loc_list_ptr (a); ++ loc = *curr; ++ gcc_assert (loc); ++ /* The same list can be referenced more than once. See if we have ++ already recorded the result from a previous pass. */ ++ if (loc->replaced) ++ *curr = loc->dw_loc_next; ++ else if (!loc->resolved_addr) + { +- if (!resolve_addr_in_expr ((*curr)->expr)) ++ /* As things stand, we do not expect or allow one die to ++ reference a suffix of another die's location list chain. ++ References must be identical or completely separate. ++ There is therefore no need to cache the result of this ++ pass on any list other than the first; doing so ++ would lead to unnecessary writes. */ ++ while (*curr) + { +- dw_loc_list_ref next = (*curr)->dw_loc_next; +- if (next && (*curr)->ll_symbol) ++ gcc_assert (!(*curr)->replaced && !(*curr)->resolved_addr); ++ if (!resolve_addr_in_expr ((*curr)->expr)) + { +- gcc_assert (!next->ll_symbol); +- next->ll_symbol = (*curr)->ll_symbol; ++ dw_loc_list_ref next = (*curr)->dw_loc_next; ++ if (next && (*curr)->ll_symbol) ++ { ++ gcc_assert (!next->ll_symbol); ++ next->ll_symbol = (*curr)->ll_symbol; ++ } ++ *curr = next; + } +- *curr = next; ++ else ++ curr = &(*curr)->dw_loc_next; + } ++ if (loc == *start) ++ loc->resolved_addr = 1; + else +- curr = &(*curr)->dw_loc_next; ++ { ++ loc->replaced = 1; ++ loc->dw_loc_next = *start; ++ } + } +- if (!AT_loc_list (a)) ++ if (!*start) + { + remove_AT (die, a->dw_attr); + ix--; +@@ -21344,6 +21451,7 @@ dwarf2out_finish (const char *filename) + add_location_or_const_value_attribute ( + VEC_index (deferred_locations, deferred_locations_list, i)->die, + VEC_index (deferred_locations, deferred_locations_list, i)->variable, ++ false, + DW_AT_location); + } + diff --git a/lang/gcc45/patches/patch-gcc_expr.c b/lang/gcc45/patches/patch-gcc_expr.c new file mode 100644 index 000000000..a7ee4cf9f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_expr.c @@ -0,0 +1,222 @@ +$NetBSD$ + +--- gcc/expr.c.orig Sun Jan 16 20:23:01 2011 ++++ gcc/expr.c +@@ -2220,6 +2220,111 @@ copy_blkmode_from_reg (rtx tgtblk, rtx srcreg, tree ty + return tgtblk; + } + ++/* Copy BLKmode value SRC into a register of mode MODE. Return the ++ register if it contains any data, otherwise return null. ++ ++ This is used on targets that return BLKmode values in registers. */ ++ ++rtx ++copy_blkmode_to_reg (enum machine_mode mode, tree src) ++{ ++ int i, n_regs; ++ unsigned HOST_WIDE_INT bitpos, xbitpos, padding_correction = 0, bytes; ++ unsigned int bitsize; ++ rtx *dst_words, dst, x, src_word = NULL_RTX, dst_word = NULL_RTX; ++ enum machine_mode dst_mode; ++ ++ gcc_assert (TYPE_MODE (TREE_TYPE (src)) == BLKmode); ++ ++ x = expand_normal (src); ++ ++ bytes = int_size_in_bytes (TREE_TYPE (src)); ++ if (bytes == 0) ++ return NULL_RTX; ++ ++ /* If the structure doesn't take up a whole number of words, see ++ whether the register value should be padded on the left or on ++ the right. Set PADDING_CORRECTION to the number of padding ++ bits needed on the left side. ++ ++ In most ABIs, the structure will be returned at the least end of ++ the register, which translates to right padding on little-endian ++ targets and left padding on big-endian targets. The opposite ++ holds if the structure is returned at the most significant ++ end of the register. */ ++ if (bytes % UNITS_PER_WORD != 0 ++ && (targetm.calls.return_in_msb (TREE_TYPE (src)) ++ ? !BYTES_BIG_ENDIAN ++ : BYTES_BIG_ENDIAN)) ++ padding_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD) ++ * BITS_PER_UNIT)); ++ ++ n_regs = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD; ++ dst_words = XALLOCAVEC (rtx, n_regs); ++ bitsize = MIN (TYPE_ALIGN (TREE_TYPE (src)), BITS_PER_WORD); ++ ++ /* Copy the structure BITSIZE bits at a time. */ ++ for (bitpos = 0, xbitpos = padding_correction; ++ bitpos < bytes * BITS_PER_UNIT; ++ bitpos += bitsize, xbitpos += bitsize) ++ { ++ /* We need a new destination pseudo each time xbitpos is ++ on a word boundary and when xbitpos == padding_correction ++ (the first time through). */ ++ if (xbitpos % BITS_PER_WORD == 0 ++ || xbitpos == padding_correction) ++ { ++ /* Generate an appropriate register. */ ++ dst_word = gen_reg_rtx (word_mode); ++ dst_words[xbitpos / BITS_PER_WORD] = dst_word; ++ ++ /* Clear the destination before we move anything into it. */ ++ emit_move_insn (dst_word, CONST0_RTX (word_mode)); ++ } ++ ++ /* We need a new source operand each time bitpos is on a word ++ boundary. */ ++ if (bitpos % BITS_PER_WORD == 0) ++ src_word = operand_subword_force (x, bitpos / BITS_PER_WORD, BLKmode); ++ ++ /* Use bitpos for the source extraction (left justified) and ++ xbitpos for the destination store (right justified). */ ++ store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode, ++ extract_bit_field (src_word, bitsize, ++ bitpos % BITS_PER_WORD, 1, ++ NULL_RTX, word_mode, word_mode)); ++ } ++ ++ if (mode == BLKmode) ++ { ++ /* Find the smallest integer mode large enough to hold the ++ entire structure. */ ++ for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT); ++ mode != VOIDmode; ++ mode = GET_MODE_WIDER_MODE (mode)) ++ /* Have we found a large enough mode? */ ++ if (GET_MODE_SIZE (mode) >= bytes) ++ break; ++ ++ /* A suitable mode should have been found. */ ++ gcc_assert (mode != VOIDmode); ++ } ++ ++ if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode)) ++ dst_mode = word_mode; ++ else ++ dst_mode = mode; ++ dst = gen_reg_rtx (dst_mode); ++ ++ for (i = 0; i < n_regs; i++) ++ emit_move_insn (operand_subword (dst, i, 0, dst_mode), dst_words[i]); ++ ++ if (mode != dst_mode) ++ dst = gen_lowpart (mode, dst); ++ ++ return dst; ++} ++ + /* Add a USE expression for REG to the (possibly empty) list pointed + to by CALL_FUSAGE. REG must denote a hard register. */ + +@@ -3764,7 +3869,8 @@ emit_push_insn (rtx x, enum machine_mode mode, tree ty + xinner = x; + + if (mode == BLKmode +- || (STRICT_ALIGNMENT && align < GET_MODE_ALIGNMENT (mode))) ++ || (STRICT_ALIGNMENT && align < GET_MODE_ALIGNMENT (mode) ++ && type != NULL_TREE)) + { + /* Copy a block into the stack, entirely or partially. */ + +@@ -4380,7 +4486,9 @@ expand_assignment (tree to, tree from, bool nontempora + if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from, from) + && COMPLETE_TYPE_P (TREE_TYPE (from)) + && TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST +- && ! (((TREE_CODE (to) == VAR_DECL || TREE_CODE (to) == PARM_DECL) ++ && ! (((TREE_CODE (to) == VAR_DECL ++ || TREE_CODE (to) == PARM_DECL ++ || TREE_CODE (to) == RESULT_DECL) + && REG_P (DECL_RTL (to))) + || TREE_CODE (to) == SSA_NAME)) + { +@@ -4426,12 +4534,15 @@ expand_assignment (tree to, tree from, bool nontempora + rtx temp; + + push_temp_slots (); +- temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL); ++ if (REG_P (to_rtx) && TYPE_MODE (TREE_TYPE (from)) == BLKmode) ++ temp = copy_blkmode_to_reg (GET_MODE (to_rtx), from); ++ else ++ temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL); + + if (GET_CODE (to_rtx) == PARALLEL) + emit_group_load (to_rtx, temp, TREE_TYPE (from), + int_size_in_bytes (TREE_TYPE (from))); +- else ++ else if (temp) + emit_move_insn (to_rtx, temp); + + preserve_temp_slots (to_rtx); +@@ -6906,6 +7017,14 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum ma + modifier == EXPAND_INITIALIZER + ? EXPAND_INITIALIZER : EXPAND_CONST_ADDRESS); + ++ if (TREE_ADDRESSABLE (exp) ++ && ! MEM_P (result) ++ && ! targetm.calls.allocate_stack_slots_for_args ()) ++ { ++ error ("local frame unavailable (naked function?)"); ++ return result; ++ } ++ + /* If the DECL isn't in memory, then the DECL wasn't properly + marked TREE_ADDRESSABLE, which will be either a front-end + or a tree optimizer bug. */ +@@ -8144,7 +8263,10 @@ expand_expr_real_2 (sepops ops, rtx target, enum machi + op1 = gen_label_rtx (); + jumpifnot_1 (code, treeop0, treeop1, op1, -1); + +- emit_move_insn (target, const1_rtx); ++ if (TYPE_PRECISION (type) == 1 && !TYPE_UNSIGNED (type)) ++ emit_move_insn (target, constm1_rtx); ++ else ++ emit_move_insn (target, const1_rtx); + + emit_label (op1); + return target; +@@ -8517,11 +8639,15 @@ expand_expr_real_1 (tree exp, rtx target, enum machine + return temp; + } + +- /* If the mode of DECL_RTL does not match that of the decl, it +- must be a promoted value. We return a SUBREG of the wanted mode, +- but mark it so that we know that it was already extended. */ ++ /* If the mode of DECL_RTL does not match that of the decl, ++ there are two cases: we are dealing with a BLKmode value ++ that is returned in a register, or we are dealing with ++ a promoted value. In the latter case, return a SUBREG ++ of the wanted mode, but mark it so that we know that it ++ was already extended. */ + + if (REG_P (decl_rtl) ++ && DECL_MODE (exp) != BLKmode + && GET_MODE (decl_rtl) != DECL_MODE (exp)) + { + enum machine_mode pmode; +@@ -10036,7 +10162,8 @@ do_store_flag (sepops ops, rtx target, enum machine_mo + + if ((code == NE || code == EQ) + && TREE_CODE (arg0) == BIT_AND_EXPR && integer_zerop (arg1) +- && integer_pow2p (TREE_OPERAND (arg0, 1))) ++ && integer_pow2p (TREE_OPERAND (arg0, 1)) ++ && (TYPE_PRECISION (ops->type) != 1 || TYPE_UNSIGNED (ops->type))) + { + tree type = lang_hooks.types.type_for_mode (mode, unsignedp); + return expand_expr (fold_single_bit_test (loc, +@@ -10056,7 +10183,9 @@ do_store_flag (sepops ops, rtx target, enum machine_mo + + /* Try a cstore if possible. */ + return emit_store_flag_force (target, code, op0, op1, +- operand_mode, unsignedp, 1); ++ operand_mode, unsignedp, ++ (TYPE_PRECISION (ops->type) == 1 ++ && !TYPE_UNSIGNED (ops->type)) ? -1 : 1); + } + + diff --git a/lang/gcc45/patches/patch-gcc_expr.h b/lang/gcc45/patches/patch-gcc_expr.h new file mode 100644 index 000000000..66284785c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_expr.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/expr.h.orig Fri Feb 19 09:53:51 2010 ++++ gcc/expr.h +@@ -460,6 +460,8 @@ extern void emit_group_store (rtx, rtx, tree, int); + /* Copy BLKmode object from a set of registers. */ + extern rtx copy_blkmode_from_reg (rtx, rtx, tree); + ++extern rtx copy_blkmode_to_reg (enum machine_mode, tree); ++ + /* Mark REG as holding a parameter for the next CALL_INSN. */ + extern void use_reg (rtx *, rtx); + diff --git a/lang/gcc45/patches/patch-gcc_final.c b/lang/gcc45/patches/patch-gcc_final.c new file mode 100644 index 000000000..d64aab259 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_final.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/final.c.orig Fri Mar 26 16:18:51 2010 ++++ gcc/final.c +@@ -2241,6 +2241,11 @@ final_scan_insn (rtx insn, FILE *file, int optimize AT + location_t loc; + expanded_location expanded; + ++ /* Make sure we flush any queued register saves in case this ++ clobbers affected registers. */ ++ if (dwarf2out_do_frame ()) ++ dwarf2out_frame_debug (insn, false); ++ + /* There's no telling what that did to the condition codes. */ + CC_STATUS_INIT; + diff --git a/lang/gcc45/patches/patch-gcc_fold-const.c b/lang/gcc45/patches/patch-gcc_fold-const.c new file mode 100644 index 000000000..4dd92fff6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_fold-const.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/fold-const.c.orig Mon Apr 18 14:02:22 2011 ++++ gcc/fold-const.c +@@ -2784,8 +2784,6 @@ fold_convert_loc (location_t loc, tree type, tree arg) + + case VOID_TYPE: + tem = fold_ignored_result (arg); +- if (TREE_CODE (tem) == MODIFY_EXPR) +- goto fold_convert_exit; + return fold_build1_loc (loc, NOP_EXPR, type, tem); + + default: diff --git a/lang/gcc45/patches/patch-gcc_function.c b/lang/gcc45/patches/patch-gcc_function.c new file mode 100644 index 000000000..54a4c977e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_function.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/function.c.orig Mon Aug 16 20:18:08 2010 ++++ gcc/function.c +@@ -1,7 +1,7 @@ + /* Expands front end tree to back end RTL for GCC. + Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +- 2010 Free Software Foundation, Inc. ++ 2010, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -1643,7 +1643,7 @@ instantiate_virtual_regs_in_insn (rtx insn) + if (!check_asm_operands (PATTERN (insn))) + { + error_for_asm (insn, "impossible constraint in %"); +- delete_insn (insn); ++ delete_insn_and_edges (insn); + } + } + else diff --git a/lang/gcc45/patches/patch-gcc_fwprop.c b/lang/gcc45/patches/patch-gcc_fwprop.c new file mode 100644 index 000000000..cb7c8411a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_fwprop.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/fwprop.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/fwprop.c +@@ -228,7 +228,10 @@ single_def_use_enter_block (struct dom_walk_data *walk + + process_uses (df_get_artificial_uses (bb_index), DF_REF_AT_TOP); + process_defs (df_get_artificial_defs (bb_index), DF_REF_AT_TOP); +- df_simulate_initialize_forwards (bb, local_lr); ++ ++ /* We don't call df_simulate_initialize_forwards, as it may overestimate ++ the live registers if there are unused artificial defs. We prefer ++ liveness to be underestimated. */ + + FOR_BB_INSNS (bb, insn) + if (INSN_P (insn)) diff --git a/lang/gcc45/patches/patch-gcc_gcc.c b/lang/gcc45/patches/patch-gcc_gcc.c new file mode 100644 index 000000000..b3557d812 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gcc.c @@ -0,0 +1,88 @@ +$NetBSD$ + +--- gcc/gcc.c.orig Sun Apr 18 17:46:08 2010 ++++ gcc/gcc.c +@@ -1760,7 +1760,7 @@ init_gcc_specs (struct obstack *obstack, const char *s + static_name, " --as-needed ", shared_name, " --no-as-needed" + "}" + "%{shared-libgcc:", +- shared_name, "%{!shared: ", static_name, "}" ++ "--as-needed ", shared_name, " --no-as-needed ", static_name, + "}" + #else + "%{!shared:" +@@ -3154,10 +3154,11 @@ execute (void) + else + #endif + fatal_ice ("\ +-Internal error: %s (program %s)\n\ ++Internal error: %s (program %s received signal %d)\n\ + Please submit a full bug report.\n\ + See %s for instructions.", + strsignal (WTERMSIG (status)), commands[i].prog, ++ WTERMSIG (status), + bug_report_url); + } + else if (WIFEXITED (status) +@@ -3629,6 +3630,10 @@ process_command (int argc, const char **argv) + /* FIXME: make_relative_prefix doesn't yet work for VMS. */ + if (!gcc_exec_prefix) + { ++#ifdef NETBSD_NATIVE ++ add_prefix (&exec_prefixes, standard_libexec_prefix, "GCC", ++ PREFIX_PRIORITY_LAST, 0, 0); ++#else + gcc_exec_prefix = get_relative_prefix (argv[0], + standard_bindir_prefix, + standard_exec_prefix); +@@ -3637,6 +3642,7 @@ process_command (int argc, const char **argv) + standard_libexec_prefix); + if (gcc_exec_prefix) + xputenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL)); ++#endif + } + else + { +@@ -6938,6 +6944,7 @@ main (int argc, char **argv) + else + init_spec (); + ++#ifndef NETBSD_NATIVE + /* We need to check standard_exec_prefix/just_machine_suffix/specs + for any override of as, ld and libraries. */ + specs_file = (char *) alloca (strlen (standard_exec_prefix) +@@ -6948,6 +6955,7 @@ main (int argc, char **argv) + strcat (specs_file, "specs"); + if (access (specs_file, R_OK) == 0) + read_specs (specs_file, TRUE); ++#endif + + /* Process any configure-time defaults specified for the command line + options, via OPTION_DEFAULT_SPECS. */ +@@ -7077,14 +7085,18 @@ main (int argc, char **argv) + PREFIX_PRIORITY_LAST, 0, 1); + else if (*cross_compile == '0') + { ++/* XXXMRG not sure this one is right? */ ++#if !defined(NETBSD_NATIVE) && !defined(NETBSD_TOOLS) + add_prefix (&startfile_prefixes, + concat (gcc_exec_prefix + ? gcc_exec_prefix : standard_exec_prefix, + machine_suffix, + standard_startfile_prefix, NULL), + NULL, PREFIX_PRIORITY_LAST, 0, 1); ++#endif /* NETBSD_NATIVE */ + } + ++#if !defined(NETBSD_NATIVE) && !defined(NETBSD_TOOLS) + /* Sysrooted prefixes are relocated because target_system_root is + also relocated by gcc_exec_prefix. */ + if (*standard_startfile_prefix_1) +@@ -7095,6 +7107,7 @@ main (int argc, char **argv) + add_sysrooted_prefix (&startfile_prefixes, + standard_startfile_prefix_2, "BINUTILS", + PREFIX_PRIORITY_LAST, 0, 1); ++#endif /* NETBSD_NATIVE */ + } + + /* Process any user specified specs in the order given on the command diff --git a/lang/gcc45/patches/patch-gcc_gcc.h b/lang/gcc45/patches/patch-gcc_gcc.h new file mode 100644 index 000000000..a2c267ea3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gcc.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/gcc.h.orig Sun Jan 3 17:03:38 2010 ++++ gcc/gcc.h +@@ -50,6 +50,7 @@ struct spec_function + || !strcmp (STR, "iwithprefix") || !strcmp (STR, "iwithprefixbefore") \ + || !strcmp (STR, "iquote") || !strcmp (STR, "isystem") \ + || !strcmp (STR, "isysroot") \ ++ || !strcmp (STR, "cxx-isystem") || !strcmp (STR, "-iremap") \ + || !strcmp (STR, "-param") || !strcmp (STR, "specs") \ + || !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ") \ + || !strcmp (STR, "fintrinsic-modules-path") \ diff --git a/lang/gcc45/patches/patch-gcc_gcov-iov.c b/lang/gcc45/patches/patch-gcc_gcov-iov.c new file mode 100644 index 000000000..9d9f30a45 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gcov-iov.c @@ -0,0 +1,31 @@ +$NetBSD$ + +--- gcc/gcov-iov.c.orig Thu Jul 26 08:37:01 2007 ++++ gcc/gcov-iov.c +@@ -19,8 +19,8 @@ You should have received a copy of the GNU General Pub + along with GCC; see the file COPYING3. If not see + . */ + +-#include +-#include ++#include "bconfig.h" ++#include "system.h" + + /* Command line arguments are the base GCC version and the development + phase (the latter may be an empty string). */ +@@ -48,8 +48,14 @@ main (int argc, char **argv) + if (*ptr == '.') + minor = strtoul (ptr + 1, 0, 10); + ++ /* For releases the development phase is an empty string, for ++ prerelease versions on a release branch it is "prerelease". ++ Consider both equal as patch-level releases do not change ++ the GCOV version either. ++ On the trunk the development phase is "experimental". */ + phase = argv[2][0]; +- if (phase == '\0') ++ if (phase == '\0' ++ || strcmp (argv[2], "prerelease") == 0) + phase = '*'; + + v[0] = (major < 10 ? '0' : 'A' - 10) + major; diff --git a/lang/gcc45/patches/patch-gcc_gcov.c b/lang/gcc45/patches/patch-gcc_gcov.c new file mode 100644 index 000000000..1012b27a6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gcov.c @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/gcov.c.orig Sat Jan 9 00:00:42 2010 ++++ gcc/gcov.c +@@ -58,6 +58,10 @@ along with Gcov; see the file COPYING3. If not see + + #define STRING_SIZE 200 + ++#if defined(__minix) ++#define block_t gcc_block_t ++#endif ++ + struct function_info; + struct block_info; + struct source_info; diff --git a/lang/gcc45/patches/patch-gcc_genemit.c b/lang/gcc45/patches/patch-gcc_genemit.c new file mode 100644 index 000000000..7f0e8430f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_genemit.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/genemit.c.orig Fri Nov 27 11:37:06 2009 ++++ gcc/genemit.c +@@ -250,9 +250,9 @@ gen_exp (rtx x, enum rtx_code subroutine_type, char *u + printf ("const_true_rtx"); + else + { +- printf ("GEN_INT ("); +- printf (HOST_WIDE_INT_PRINT_DEC_C, INTVAL (x)); +- printf (")"); ++ printf ("GEN_INT (HOST_WIDE_INT_CONSTANT ("); ++ printf (HOST_WIDE_INT_PRINT_DEC, INTVAL (x)); ++ printf ("))"); + } + return; + diff --git a/lang/gcc45/patches/patch-gcc_gengtype-lex.c b/lang/gcc45/patches/patch-gcc_gengtype-lex.c new file mode 100644 index 000000000..2058db966 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gengtype-lex.c @@ -0,0 +1,410 @@ +$NetBSD$ + +--- gcc/gengtype-lex.c.orig Thu Apr 28 14:32:36 2011 ++++ gcc/gengtype-lex.c +@@ -933,7 +933,7 @@ int yy_flex_debug = 0; + #define YY_MORE_ADJ 0 + #define YY_RESTORE_YY_MORE_OFFSET + char *yytext; +-#line 1 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 1 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* -*- indented-text -*- */ + /* Process source files and output type information. + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 +@@ -955,7 +955,7 @@ You should have received a copy of the GNU General Pub + along with GCC; see the file COPYING3. If not see + . */ + #define YY_NO_INPUT 1 +-#line 25 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 25 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + #include "bconfig.h" + #include "system.h" + +@@ -1165,7 +1165,7 @@ YY_DECL + register char *yy_cp, *yy_bp; + register int yy_act; + +-#line 59 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 59 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + + /* Do this on entry to yylex(): */ + *yylval = 0; +@@ -1262,7 +1262,7 @@ case 1: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 70 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 70 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return TYPEDEF; +@@ -1274,7 +1274,7 @@ case 2: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 74 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 74 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return STRUCT; +@@ -1286,7 +1286,7 @@ case 3: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 78 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 78 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return UNION; +@@ -1298,7 +1298,7 @@ case 4: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 82 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 82 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return EXTERN; +@@ -1310,7 +1310,7 @@ case 5: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 86 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 86 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return STATIC; +@@ -1322,7 +1322,7 @@ case 6: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 91 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 91 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return DEFVEC_OP; +@@ -1334,7 +1334,7 @@ case 7: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 95 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 95 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return DEFVEC_I; +@@ -1346,7 +1346,7 @@ case 8: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 99 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 99 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + BEGIN(in_struct); + return DEFVEC_ALLOC; +@@ -1356,19 +1356,19 @@ YY_RULE_SETUP + + case 9: + YY_RULE_SETUP +-#line 107 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 107 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { BEGIN(in_struct_comment); } + YY_BREAK + case 10: + /* rule 10 can match eol */ + YY_RULE_SETUP +-#line 109 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 109 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { update_lineno (yytext, yyleng); } + YY_BREAK + case 11: + /* rule 11 can match eol */ + YY_RULE_SETUP +-#line 110 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 110 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { lexer_line.line++; } + YY_BREAK + case 12: +@@ -1377,7 +1377,7 @@ case 12: + (yy_c_buf_p) = yy_cp = yy_bp + 5; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 112 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 112 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* don't care */ + YY_BREAK + case 13: +@@ -1386,7 +1386,7 @@ case 13: + (yy_c_buf_p) = yy_cp = yy_bp + 3; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 113 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 113 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return GTY_TOKEN; } + YY_BREAK + case 14: +@@ -1395,7 +1395,7 @@ case 14: + (yy_c_buf_p) = yy_cp = yy_bp + 3; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 114 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 114 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return VEC_TOKEN; } + YY_BREAK + case 15: +@@ -1404,7 +1404,7 @@ case 15: + (yy_c_buf_p) = yy_cp = yy_bp + 5; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 115 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 115 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return UNION; } + YY_BREAK + case 16: +@@ -1413,7 +1413,7 @@ case 16: + (yy_c_buf_p) = yy_cp = yy_bp + 6; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 116 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 116 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return STRUCT; } + YY_BREAK + case 17: +@@ -1422,7 +1422,7 @@ case 17: + (yy_c_buf_p) = yy_cp = yy_bp + 4; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 117 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 117 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return ENUM; } + YY_BREAK + case 18: +@@ -1431,7 +1431,7 @@ case 18: + (yy_c_buf_p) = yy_cp = yy_bp + 9; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 118 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 118 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return PTR_ALIAS; } + YY_BREAK + case 19: +@@ -1440,12 +1440,12 @@ case 19: + (yy_c_buf_p) = yy_cp = yy_bp + 10; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 119 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 119 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return NESTED_PTR; } + YY_BREAK + case 20: + YY_RULE_SETUP +-#line 120 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 120 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return NUM; } + YY_BREAK + case 21: +@@ -1454,7 +1454,7 @@ case 21: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 121 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 121 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); + return PARAM_IS; +@@ -1465,11 +1465,11 @@ case 22: + *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ +-#line 127 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 127 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + case 23: + /* rule 23 can match eol */ + YY_RULE_SETUP +-#line 127 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 127 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + size_t len; + +@@ -1487,7 +1487,7 @@ case 24: + (yy_c_buf_p) = yy_cp -= 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 139 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 139 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); + return ID; +@@ -1496,7 +1496,7 @@ YY_RULE_SETUP + case 25: + /* rule 25 can match eol */ + YY_RULE_SETUP +-#line 144 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 144 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); + return STRING; +@@ -1506,7 +1506,7 @@ YY_RULE_SETUP + case 26: + /* rule 26 can match eol */ + YY_RULE_SETUP +-#line 149 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 149 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); + return ARRAY; +@@ -1515,7 +1515,7 @@ YY_RULE_SETUP + case 27: + /* rule 27 can match eol */ + YY_RULE_SETUP +-#line 153 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 153 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng); + return CHAR; +@@ -1523,24 +1523,24 @@ YY_RULE_SETUP + YY_BREAK + case 28: + YY_RULE_SETUP +-#line 158 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 158 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return ELLIPSIS; } + YY_BREAK + case 29: + YY_RULE_SETUP +-#line 159 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 159 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { return yytext[0]; } + YY_BREAK + /* ignore pp-directives */ + case 30: + /* rule 30 can match eol */ + YY_RULE_SETUP +-#line 162 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 162 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + {lexer_line.line++;} + YY_BREAK + case 31: + YY_RULE_SETUP +-#line 164 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 164 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + error_at_line (&lexer_line, "unexpected character `%s'", yytext); + } +@@ -1548,30 +1548,30 @@ YY_RULE_SETUP + + case 32: + YY_RULE_SETUP +-#line 169 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 169 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { BEGIN(in_comment); } + YY_BREAK + case 33: + /* rule 33 can match eol */ + YY_RULE_SETUP +-#line 170 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 170 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { lexer_line.line++; } + YY_BREAK + case 34: +-#line 172 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 172 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + case 35: + /* rule 35 can match eol */ +-#line 173 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 173 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + case 36: + /* rule 36 can match eol */ + YY_RULE_SETUP +-#line 173 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 173 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* do nothing */ + YY_BREAK + case 37: + /* rule 37 can match eol */ + YY_RULE_SETUP +-#line 174 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 174 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { update_lineno (yytext, yyleng); } + YY_BREAK + case 38: +@@ -1580,21 +1580,21 @@ case 38: + (yy_c_buf_p) = yy_cp = yy_bp + 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 175 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 175 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* do nothing */ + YY_BREAK + + case 39: + /* rule 39 can match eol */ + YY_RULE_SETUP +-#line 178 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 178 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { lexer_line.line++; } + YY_BREAK + case 40: +-#line 180 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 180 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + case 41: + YY_RULE_SETUP +-#line 180 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 180 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* do nothing */ + YY_BREAK + case 42: +@@ -1603,25 +1603,25 @@ case 42: + (yy_c_buf_p) = yy_cp = yy_bp + 1; + YY_DO_BEFORE_ACTION; /* set up yytext again */ + YY_RULE_SETUP +-#line 181 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 181 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* do nothing */ + YY_BREAK + + case 43: + YY_RULE_SETUP +-#line 183 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 183 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { BEGIN(INITIAL); } + YY_BREAK + case 44: + YY_RULE_SETUP +-#line 184 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 184 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { BEGIN(in_struct); } + YY_BREAK + case 45: +-#line 187 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 187 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + case 46: + YY_RULE_SETUP +-#line 187 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 187 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + { + error_at_line (&lexer_line, + "unterminated comment or string; unexpected EOF"); +@@ -1630,12 +1630,12 @@ YY_RULE_SETUP + case 47: + /* rule 47 can match eol */ + YY_RULE_SETUP +-#line 192 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 192 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + /* do nothing */ + YY_BREAK + case 48: + YY_RULE_SETUP +-#line 194 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 194 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + #line 1642 "gengtype-lex.c" +@@ -2602,7 +2602,7 @@ void yyfree (void * ptr ) + + #define YYTABLES_NAME "yytables" + +-#line 194 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l" ++#line 194 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l" + + + diff --git a/lang/gcc45/patches/patch-gcc_genmultilib b/lang/gcc45/patches/patch-gcc_genmultilib new file mode 100644 index 000000000..4510c9fcd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_genmultilib @@ -0,0 +1,43 @@ +$NetBSD$ + +--- gcc/genmultilib.orig Thu Jul 26 08:37:01 2007 ++++ gcc/genmultilib +@@ -136,8 +136,10 @@ cd ./tmpmultilib.$$ || exit 1 + # Since not all versions of sh support functions, we achieve recursion + # by creating a temporary shell script which invokes itself. + rm -f tmpmultilib +-cat >tmpmultilib <<\EOF +-#!/bin/sh ++cat >tmpmultilib <>tmpmultilib <<\EOF + # This recursive script basically outputs all combinations of its + # input arguments, handling mutually exclusive sets of options by + # repetition. When the script is called, ${initial} is the list of +@@ -172,8 +174,10 @@ combinations=`initial=/ ./tmpmultilib ${options}` + + # If there exceptions, weed them out now + if [ -n "${exceptions}" ]; then +- cat >tmpmultilib2 <<\EOF +-#!/bin/sh ++ cat >tmpmultilib2 <>tmpmultilib2 <<\EOF + # This recursive script weeds out any combination of multilib + # switches that should not be generated. The output looks like + # a list of subdirectory names with leading and trailing slashes. +@@ -271,8 +275,10 @@ fi + # opt1/opt2 nopt1 nopt2 + # In other words, we must output all combinations of matches. + rm -f tmpmultilib2 +-cat >tmpmultilib2 <<\EOF +-#!/bin/sh ++cat >tmpmultilib2 <>tmpmultilib2 <<\EOF + # The positional parameters are a list of matches to consider. + # ${dirout} is the directory name and ${optout} is the current list of + # options. diff --git a/lang/gcc45/patches/patch-gcc_genrecog.c b/lang/gcc45/patches/patch-gcc_genrecog.c new file mode 100644 index 000000000..95f3bc02f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_genrecog.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/genrecog.c.orig Mon Jun 22 10:29:13 2009 ++++ gcc/genrecog.c +@@ -1849,11 +1849,13 @@ write_afterward (struct decision *start, struct decisi + static void + print_host_wide_int (HOST_WIDE_INT val) + { ++ /* XXX: the "min" below is computed for build, not host!!! */ + HOST_WIDE_INT min = (unsigned HOST_WIDE_INT)1 << (HOST_BITS_PER_WIDE_INT-1); + if (val == min) +- printf ("(" HOST_WIDE_INT_PRINT_DEC_C "-1)", val + 1); ++ printf ("(HOST_WIDE_INT_CONSTANT (" HOST_WIDE_INT_PRINT_DEC ")-1)", ++ val + 1); + else +- printf (HOST_WIDE_INT_PRINT_DEC_C, val); ++ printf ("HOST_WIDE_INT_CONSTANT (" HOST_WIDE_INT_PRINT_DEC")", val); + } + + /* Emit a switch statement, if possible, for an initial sequence of diff --git a/lang/gcc45/patches/patch-gcc_gimplify.c b/lang/gcc45/patches/patch-gcc_gimplify.c new file mode 100644 index 000000000..a938b05f7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_gimplify.c @@ -0,0 +1,75 @@ +$NetBSD$ + +--- gcc/gimplify.c.orig Thu Apr 7 18:27:20 2011 ++++ gcc/gimplify.c +@@ -1953,8 +1953,14 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_ + ret = MIN (ret, tret); + } + } ++ else ++ { ++ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, ++ is_gimple_reg, fb_rvalue); ++ ret = MIN (ret, tret); ++ } + +- if (!TREE_OPERAND (t, 3)) ++ if (TREE_OPERAND (t, 3) == NULL_TREE) + { + tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0))); + tree elmt_size = unshare_expr (array_ref_element_size (t)); +@@ -1973,11 +1979,17 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_ + ret = MIN (ret, tret); + } + } ++ else ++ { ++ tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p, ++ is_gimple_reg, fb_rvalue); ++ ret = MIN (ret, tret); ++ } + } + else if (TREE_CODE (t) == COMPONENT_REF) + { + /* Set the field offset into T and gimplify it. */ +- if (!TREE_OPERAND (t, 2)) ++ if (TREE_OPERAND (t, 2) == NULL_TREE) + { + tree offset = unshare_expr (component_ref_field_offset (t)); + tree field = TREE_OPERAND (t, 1); +@@ -1996,6 +2008,12 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_ + ret = MIN (ret, tret); + } + } ++ else ++ { ++ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, ++ is_gimple_reg, fb_rvalue); ++ ret = MIN (ret, tret); ++ } + } + } + +@@ -2496,7 +2514,9 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree * + new_locus); + append_to_statement_list (t, &expr); + } +- else if (TREE_CODE (pred) == COND_EXPR) ++ else if (TREE_CODE (pred) == COND_EXPR ++ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 1))) ++ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 2)))) + { + location_t new_locus; + +@@ -2504,7 +2524,10 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree * + if (a) + if (b) goto yes; else goto no; + else +- if (c) goto yes; else goto no; */ ++ if (c) goto yes; else goto no; ++ ++ Don't do this if one of the arms has void type, which can happen ++ in C++ when the arm is throw. */ + + /* Keep the original source location on the first 'if'. Set the source + location of the ? on the second 'if'. */ diff --git a/lang/gcc45/patches/patch-gcc_ginclude_stddef.h b/lang/gcc45/patches/patch-gcc_ginclude_stddef.h new file mode 100644 index 000000000..3302e6a59 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_ginclude_stddef.h @@ -0,0 +1,13 @@ +--- gcc/ginclude/stddef.h.orig Tue Mar 8 13:03:34 2011 ++++ gcc/ginclude/stddef.h + + /* On 4.3bsd-net2, make sure ansi.h is included, so we have + one less case to deal with in the following. */ +-#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) ++#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) || defined(__minix) ++#ifndef inhibit_libc + #include ++#endif + #endif + /* On FreeBSD 5, machine/ansi.h does not exist anymore... */ + #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) diff --git a/lang/gcc45/patches/patch-gcc_hwint.h b/lang/gcc45/patches/patch-gcc_hwint.h new file mode 100644 index 000000000..0bdd205c5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_hwint.h @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/hwint.h.orig Wed Nov 25 10:55:54 2009 ++++ gcc/hwint.h +@@ -78,6 +78,7 @@ extern char sizeof_long_long_must_be_8[sizeof(long lon + #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG + # define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT + # define HOST_WIDE_INT_PRINT_C "L" ++# define HOST_WIDE_INT_CONSTANT(x) x ## L + /* 'long' might be 32 or 64 bits, and the number of leading zeroes + must be tweaked accordingly. */ + # if HOST_BITS_PER_WIDE_INT == 64 +@@ -90,6 +91,7 @@ extern char sizeof_long_long_must_be_8[sizeof(long lon + #else + # define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT + # define HOST_WIDE_INT_PRINT_C "LL" ++# define HOST_WIDE_INT_CONSTANT(x) x ## LL + /* We can assume that 'long long' is at least 64 bits. */ + # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ + "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x" diff --git a/lang/gcc45/patches/patch-gcc_ifcvt.c b/lang/gcc45/patches/patch-gcc_ifcvt.c new file mode 100644 index 000000000..f58308764 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_ifcvt.c @@ -0,0 +1,97 @@ +$NetBSD$ + +--- gcc/ifcvt.c.orig Tue Nov 16 22:17:17 2010 ++++ gcc/ifcvt.c +@@ -3818,7 +3818,7 @@ dead_or_predicable (basic_block test_bb, basic_block m + basic_block other_bb, basic_block new_dest, int reversep) + { + rtx head, end, jump, earliest = NULL_RTX, old_dest, new_label = NULL_RTX; +- bitmap merge_set = NULL; ++ bitmap merge_set = NULL, merge_set_noclobber = NULL; + /* Number of pending changes. */ + int n_validated_changes = 0; + +@@ -3951,11 +3951,14 @@ dead_or_predicable (basic_block test_bb, basic_block m + + /* Collect: + MERGE_SET = set of registers set in MERGE_BB ++ MERGE_SET_NOCLOBBER = like MERGE_SET, but only includes registers ++ that are really set, not just clobbered. + TEST_LIVE = set of registers live at EARLIEST +- TEST_SET = set of registers set between EARLIEST and the +- end of the block. */ ++ TEST_SET = set of registers set between EARLIEST and the ++ end of the block. */ + + merge_set = BITMAP_ALLOC (®_obstack); ++ merge_set_noclobber = BITMAP_ALLOC (®_obstack); + + /* If we allocated new pseudos (e.g. in the conditional move + expander called from noce_emit_cmove), we must resize the +@@ -3967,13 +3970,8 @@ dead_or_predicable (basic_block test_bb, basic_block m + { + if (NONDEBUG_INSN_P (insn)) + { +- unsigned int uid = INSN_UID (insn); +- df_ref *def_rec; +- for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) +- { +- df_ref def = *def_rec; +- bitmap_set_bit (merge_set, DF_REF_REGNO (def)); +- } ++ df_simulate_find_defs (insn, merge_set); ++ df_simulate_find_noclobber_defs (insn, merge_set_noclobber); + } + } + +@@ -3984,7 +3982,7 @@ dead_or_predicable (basic_block test_bb, basic_block m + unsigned i; + bitmap_iterator bi; + +- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi) ++ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi) + { + if (i < FIRST_PSEUDO_REGISTER + && ! fixed_regs[i] +@@ -4015,12 +4013,14 @@ dead_or_predicable (basic_block test_bb, basic_block m + } + + /* We can perform the transformation if +- MERGE_SET & (TEST_SET | TEST_LIVE) ++ MERGE_SET_NOCLOBBER & TEST_SET + and ++ MERGE_SET & TEST_LIVE ++ and + TEST_SET & DF_LIVE_IN (merge_bb) + are empty. */ + +- if (bitmap_intersect_p (merge_set, test_set) ++ if (bitmap_intersect_p (merge_set_noclobber, test_set) + || bitmap_intersect_p (merge_set, test_live) + || bitmap_intersect_p (test_set, df_get_live_in (merge_bb))) + intersect = true; +@@ -4104,10 +4104,11 @@ dead_or_predicable (basic_block test_bb, basic_block m + unsigned i; + bitmap_iterator bi; + +- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi) ++ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi) + remove_reg_equal_equiv_notes_for_regno (i); + + BITMAP_FREE (merge_set); ++ BITMAP_FREE (merge_set_noclobber); + } + + reorder_insns (head, end, PREV_INSN (earliest)); +@@ -4128,7 +4129,10 @@ dead_or_predicable (basic_block test_bb, basic_block m + cancel_changes (0); + fail: + if (merge_set) +- BITMAP_FREE (merge_set); ++ { ++ BITMAP_FREE (merge_set); ++ BITMAP_FREE (merge_set_noclobber); ++ } + return FALSE; + } + diff --git a/lang/gcc45/patches/patch-gcc_ipa-prop.c b/lang/gcc45/patches/patch-gcc_ipa-prop.c new file mode 100644 index 000000000..ee3567029 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_ipa-prop.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/ipa-prop.c.orig Sat Jul 31 12:11:25 2010 ++++ gcc/ipa-prop.c +@@ -2134,9 +2134,9 @@ ipa_prop_read_section (struct lto_file_decl_data *file + { + const struct lto_function_header *header = + (const struct lto_function_header *) data; +- const int32_t cfg_offset = sizeof (struct lto_function_header); +- const int32_t main_offset = cfg_offset + header->cfg_size; +- const int32_t string_offset = main_offset + header->main_size; ++ const int cfg_offset = sizeof (struct lto_function_header); ++ const int main_offset = cfg_offset + header->cfg_size; ++ const int string_offset = main_offset + header->main_size; + struct data_in *data_in; + struct lto_input_block ib_main; + unsigned int i; diff --git a/lang/gcc45/patches/patch-gcc_libgcc2.c b/lang/gcc45/patches/patch-gcc_libgcc2.c new file mode 100644 index 000000000..e19d8f2bd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_libgcc2.c @@ -0,0 +1,64 @@ +$NetBSD$ + +--- gcc/libgcc2.c.orig Thu Sep 24 19:02:44 2009 ++++ gcc/libgcc2.c +@@ -1802,15 +1802,19 @@ NAME (TYPE x, int m) + #define isfinite(x) __builtin_expect (!isnan((x) - (x)), 1) + #define isinf(x) __builtin_expect (!isnan(x) & !isfinite(x), 0) + ++#if TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT + #define INFINITY CONCAT2(__builtin_huge_val, CEXT) () ++#endif + #define I 1i + + /* Helpers to make the following code slightly less gross. */ + #define COPYSIGN CONCAT2(__builtin_copysign, CEXT) + #define FABS CONCAT2(__builtin_fabs, CEXT) + ++#ifdef INFINITY + /* Verify that MTYPE matches up with CEXT. */ + extern void *compile_type_assert[sizeof(INFINITY) == sizeof(MTYPE) ? 1 : -1]; ++#endif + + /* Ensure that we've lost any extra precision. */ + #if NOTRUNC +@@ -1841,6 +1845,7 @@ CONCAT3(__mul,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYP + x = ac - bd; + y = ad + bc; + ++#ifdef INFINITY + if (isnan (x) && isnan (y)) + { + /* Recover infinities that computed as NaN + iNaN. */ +@@ -1882,6 +1887,7 @@ CONCAT3(__mul,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYP + y = INFINITY * (a * d + b * c); + } + } ++#endif + + __real__ res = x; + __imag__ res = y; +@@ -1917,6 +1923,7 @@ CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYP + y = (b - (a * ratio)) / denom; + } + ++#ifdef INFINITY + /* Recover infinities and zeros that computed as NaN+iNaN; the only cases + are nonzero/zero, infinite/finite, and finite/infinite. */ + if (isnan (x) && isnan (y)) +@@ -1941,6 +1948,7 @@ CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYP + y = 0.0 * (b * c - a * d); + } + } ++#endif + + __real__ res = x; + __imag__ res = y; +@@ -1948,6 +1956,7 @@ CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYP + } + #endif /* complex divide */ + ++#undef INFINITY + #endif /* all complex float routines */ + + /* From here on down, the routines use normal data types. */ diff --git a/lang/gcc45/patches/patch-gcc_libgcov.c b/lang/gcc45/patches/patch-gcc_libgcov.c new file mode 100644 index 000000000..773e66a39 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_libgcov.c @@ -0,0 +1,34 @@ +$NetBSD$ + +--- gcc/libgcov.c.orig Sat Nov 28 16:21:00 2009 ++++ gcc/libgcov.c +@@ -40,6 +40,11 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + #define GCOV_LINKAGE /* nothing */ + #endif + #endif ++ ++#ifndef L_gcov_merge_add ++#include "gcov-minix-fs-wrapper.h" ++#endif ++ + #include "gcov-io.h" + + #if defined(inhibit_libc) +@@ -152,7 +157,7 @@ gcov_version (struct gcov_info *ptr, gcov_unsigned_t v + in two separate programs, and we must keep the two program + summaries separate. */ + +-static void ++void + gcov_exit (void) + { + struct gcov_info *gi_ptr; +@@ -564,7 +569,7 @@ __gcov_init (struct gcov_info *info) + gcov_crc32 = crc32; + + if (!gcov_list) +- atexit (gcov_exit); ++ atexit (gcov_exit_wrapper); + + info->next = gcov_list; + gcov_list = info; diff --git a/lang/gcc45/patches/patch-gcc_loop-doloop.c b/lang/gcc45/patches/patch-gcc_loop-doloop.c new file mode 100644 index 000000000..df38fef0e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_loop-doloop.c @@ -0,0 +1,63 @@ +$NetBSD$ + +--- gcc/loop-doloop.c.orig Mon Jul 19 09:58:53 2010 ++++ gcc/loop-doloop.c +@@ -334,14 +334,11 @@ add_test (rtx cond, edge *e, basic_block dest) + describes the loop, DESC describes the number of iterations of the + loop, and DOLOOP_INSN is the low-overhead looping insn to emit at the + end of the loop. CONDITION is the condition separated from the +- DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. +- ZERO_EXTEND_P says to zero extend COUNT after the increment of it to +- word_mode from FROM_MODE. */ ++ DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. */ + + static void + doloop_modify (struct loop *loop, struct niter_desc *desc, +- rtx doloop_seq, rtx condition, rtx count, +- bool zero_extend_p, enum machine_mode from_mode) ++ rtx doloop_seq, rtx condition, rtx count) + { + rtx counter_reg; + rtx tmp, noloop = NULL_RTX; +@@ -415,12 +412,8 @@ doloop_modify (struct loop *loop, struct niter_desc *d + } + + if (increment_count) +- count = simplify_gen_binary (PLUS, from_mode, count, const1_rtx); ++ count = simplify_gen_binary (PLUS, mode, count, const1_rtx); + +- if (zero_extend_p) +- count = simplify_gen_unary (ZERO_EXTEND, word_mode, +- count, from_mode); +- + /* Insert initialization of the count register into the loop header. */ + start_sequence (); + tmp = force_operand (count, counter_reg); +@@ -555,7 +548,6 @@ doloop_optimize (struct loop *loop) + struct niter_desc *desc; + unsigned word_mode_size; + unsigned HOST_WIDE_INT word_mode_max; +- bool zero_extend_p = false; + + if (dump_file) + fprintf (dump_file, "Doloop: Processing loop %d.\n", loop->num); +@@ -630,7 +622,8 @@ doloop_optimize (struct loop *loop) + { + if (word_mode_size > GET_MODE_BITSIZE (mode)) + { +- zero_extend_p = true; ++ count = simplify_gen_unary (ZERO_EXTEND, word_mode, ++ count, mode); + iterations = simplify_gen_unary (ZERO_EXTEND, word_mode, + iterations, mode); + iterations_max = simplify_gen_unary (ZERO_EXTEND, word_mode, +@@ -674,8 +667,7 @@ doloop_optimize (struct loop *loop) + return false; + } + +- doloop_modify (loop, desc, doloop_seq, condition, count, +- zero_extend_p, mode); ++ doloop_modify (loop, desc, doloop_seq, condition, count); + return true; + } + diff --git a/lang/gcc45/patches/patch-gcc_lto-opts.c b/lang/gcc45/patches/patch-gcc_lto-opts.c new file mode 100644 index 000000000..f8da619b2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto-opts.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/lto-opts.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/lto-opts.c +@@ -351,7 +351,7 @@ lto_read_file_options (struct lto_file_decl_data *file + size_t len; + const char *data; + const struct lto_simple_header *header; +- int32_t opts_offset; ++ int opts_offset; + struct lto_input_block ib; + + data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len); diff --git a/lang/gcc45/patches/patch-gcc_lto-section-in.c b/lang/gcc45/patches/patch-gcc_lto-section-in.c new file mode 100644 index 000000000..c9c5f9c66 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto-section-in.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/lto-section-in.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/lto-section-in.c +@@ -294,7 +294,7 @@ lto_create_simple_input_block (struct lto_file_decl_da + = (const struct lto_simple_header *) data; + + struct lto_input_block* ib_main; +- int32_t main_offset = sizeof (struct lto_simple_header); ++ int main_offset = sizeof (struct lto_simple_header); + + if (!data) + return NULL; diff --git a/lang/gcc45/patches/patch-gcc_lto-streamer-in.c b/lang/gcc45/patches/patch-gcc_lto-streamer-in.c new file mode 100644 index 000000000..70334037b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto-streamer-in.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/lto-streamer-in.c.orig Wed Jun 2 20:43:42 2010 ++++ gcc/lto-streamer-in.c +@@ -1445,9 +1445,9 @@ lto_read_body (struct lto_file_decl_data *file_data, t + { + const struct lto_function_header *header; + struct data_in *data_in; +- int32_t cfg_offset; +- int32_t main_offset; +- int32_t string_offset; ++ int cfg_offset; ++ int main_offset; ++ int string_offset; + struct lto_input_block ib_cfg; + struct lto_input_block ib_main; + diff --git a/lang/gcc45/patches/patch-gcc_lto-streamer-out.c b/lang/gcc45/patches/patch-gcc_lto-streamer-out.c new file mode 100644 index 000000000..c0e91ce14 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto-streamer-out.c @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/lto-streamer-out.c.orig Fri May 28 19:02:24 2010 ++++ gcc/lto-streamer-out.c +@@ -2302,7 +2302,7 @@ write_symbol_vec (struct lto_streamer_cache_d *cache, + enum gcc_plugin_symbol_kind kind; + enum gcc_plugin_symbol_visibility visibility; + int slot_num; +- uint64_t size; ++ unsigned HOST_WIDEST_INT size; + const char *comdat; + + /* None of the following kinds of symbols are needed in the +@@ -2367,10 +2367,9 @@ write_symbol_vec (struct lto_streamer_cache_d *cache, + } + + if (kind == GCCPK_COMMON +- && DECL_SIZE (t) +- && TREE_CODE (DECL_SIZE (t)) == INTEGER_CST) +- size = (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE (t))) << 32) +- | TREE_INT_CST_LOW (DECL_SIZE (t)); ++ && DECL_SIZE_UNIT (t) ++ && TREE_CODE (DECL_SIZE_UNIT (t)) == INTEGER_CST) ++ size = TREE_INT_CST_LOW (DECL_SIZE_UNIT (t)); + else + size = 0; + diff --git a/lang/gcc45/patches/patch-gcc_lto_ChangeLog b/lang/gcc45/patches/patch-gcc_lto_ChangeLog new file mode 100644 index 000000000..1fd68725a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto_ChangeLog @@ -0,0 +1,24 @@ +$NetBSD$ + +--- gcc/lto/ChangeLog.orig Thu Apr 28 14:12:14 2011 ++++ gcc/lto/ChangeLog +@@ -1,3 +1,19 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-12-14 Eric Botcazou ++ ++ * lto.h (lto_parse_hex): Reinstate. ++ * lto.c (lto_parse_hex): Make global again. ++ ++2011-12-13 Eric Botcazou ++ ++ * lto.h (lto_parse_hex): Delete. ++ * lto.c (lto_read_decls): Use 'int' for offsets. ++ (lto_parse_hex): Make static and return proper 64-bit host type. ++ (lto_resolution_read): Use proper 64-bit host type. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_lto_lto.c b/lang/gcc45/patches/patch-gcc_lto_lto.c new file mode 100644 index 000000000..737687d9e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto_lto.c @@ -0,0 +1,69 @@ +$NetBSD$ + +--- gcc/lto/lto.c.orig Mon Jun 14 10:38:18 2010 ++++ gcc/lto/lto.c +@@ -157,7 +157,7 @@ lto_read_in_decl_state (struct data_in *data_in, const + uint32_t ix; + tree decl; + uint32_t i, j; +- ++ + ix = *data++; + decl = lto_streamer_cache_get (data_in->reader_cache, (int) ix); + if (TREE_CODE (decl) != FUNCTION_DECL) +@@ -200,9 +200,9 @@ lto_read_decls (struct lto_file_decl_data *decl_data, + VEC(ld_plugin_symbol_resolution_t,heap) *resolutions) + { + const struct lto_decl_header *header = (const struct lto_decl_header *) data; +- const int32_t decl_offset = sizeof (struct lto_decl_header); +- const int32_t main_offset = decl_offset + header->decl_state_size; +- const int32_t string_offset = main_offset + header->main_size; ++ const int decl_offset = sizeof (struct lto_decl_header); ++ const int main_offset = decl_offset + header->decl_state_size; ++ const int string_offset = main_offset + header->main_size; + struct lto_input_block ib_main; + struct data_in *data_in; + unsigned int i; +@@ -250,17 +250,20 @@ lto_read_decls (struct lto_file_decl_data *decl_data, + + if (data_ptr != data_end) + internal_error ("bytecode stream: garbage at the end of symbols section"); +- ++ + /* Set the current decl state to be the global state. */ + decl_data->current_decl_state = decl_data->global_decl_state; + + lto_data_in_delete (data_in); + } + +-/* strtoll is not portable. */ +-int64_t +-lto_parse_hex (const char *p) { +- uint64_t ret = 0; ++/* Custom version of strtoll, which is not portable. */ ++ ++HOST_WIDEST_INT ++lto_parse_hex (const char *p) ++{ ++ HOST_WIDEST_INT ret = 0; ++ + for (; *p != '\0'; ++p) + { + char c = *p; +@@ -276,6 +279,7 @@ lto_parse_hex (const char *p) { + internal_error ("could not parse hex number"); + ret |= part; + } ++ + return ret; + } + +@@ -311,7 +315,7 @@ lto_resolution_read (FILE *resolution, lto_file *file) + { + int t; + char offset_p[17]; +- int64_t offset; ++ HOST_WIDEST_INT offset; + t = fscanf (resolution, "@0x%16s", offset_p); + if (t != 1) + internal_error ("could not parse file offset"); diff --git a/lang/gcc45/patches/patch-gcc_lto_lto.h b/lang/gcc45/patches/patch-gcc_lto_lto.h new file mode 100644 index 000000000..177e306e2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_lto_lto.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/lto/lto.h.orig Thu Jun 24 21:06:37 2010 ++++ gcc/lto/lto.h +@@ -58,6 +58,6 @@ struct lto_section_slot + size_t len; + }; + +-int64_t lto_parse_hex (const char *p); ++extern HOST_WIDEST_INT lto_parse_hex (const char *p); + + #endif /* LTO_H */ diff --git a/lang/gcc45/patches/patch-gcc_objc_ChangeLog b/lang/gcc45/patches/patch-gcc_objc_ChangeLog new file mode 100644 index 000000000..39e669b62 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_objc_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/objc/ChangeLog.orig Thu Apr 28 14:12:26 2011 ++++ gcc/objc/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_objcp_ChangeLog b/lang/gcc45/patches/patch-gcc_objcp_ChangeLog new file mode 100644 index 000000000..6eabfcf9a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_objcp_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/objcp/ChangeLog.orig Thu Apr 28 14:12:38 2011 ++++ gcc/objcp/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_output.h b/lang/gcc45/patches/patch-gcc_output.h new file mode 100644 index 000000000..d945971b8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_output.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/output.h.orig Mon Oct 26 21:57:10 2009 ++++ gcc/output.h +@@ -115,7 +115,7 @@ extern void output_addr_const (FILE *, rtx); + + /* Output a string of assembler code, substituting numbers, strings + and fixed syntactic prefixes. */ +-#if GCC_VERSION >= 3004 ++#if GCC_VERSION >= 3004 && !defined(__clang__) + #define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m) + /* This is a magic identifier which allows GCC to figure out the type + of HOST_WIDE_INT for %wd specifier checks. You must issue this diff --git a/lang/gcc45/patches/patch-gcc_po_ChangeLog b/lang/gcc45/patches/patch-gcc_po_ChangeLog new file mode 100644 index 000000000..694d5aacd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_po_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/po/ChangeLog.orig Thu Apr 28 14:11:47 2011 ++++ gcc/po/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_profile.c b/lang/gcc45/patches/patch-gcc_profile.c new file mode 100644 index 000000000..c09976a68 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_profile.c @@ -0,0 +1,50 @@ +$NetBSD$ + +--- gcc/profile.c.orig Wed Dec 30 10:53:31 2009 ++++ gcc/profile.c +@@ -989,6 +989,45 @@ branch_prob (void) + fprintf (dump_file, "Adding fake entry edge to bb %i\n", + bb->index); + make_edge (ENTRY_BLOCK_PTR, bb, EDGE_FAKE); ++ /* Avoid bbs that have both fake entry edge and also some ++ exit edge. One of those edges wouldn't be added to the ++ spanning tree, but we can't instrument any of them. */ ++ if (have_exit_edge || need_exit_edge) ++ { ++ gimple_stmt_iterator gsi; ++ gimple first; ++ tree fndecl; ++ ++ gsi = gsi_after_labels (bb); ++#ifdef ENABLE_CHECKING ++ gcc_assert (!gsi_end_p (gsi)); ++#endif ++ first = gsi_stmt (gsi); ++ if (is_gimple_debug (first)) ++ { ++ gsi_next_nondebug (&gsi); ++#ifdef ENABLE_CHECKING ++ gcc_assert (!gsi_end_p (gsi)); ++#endif ++ first = gsi_stmt (gsi); ++ } ++ /* Don't split the bbs containing __builtin_setjmp_receiver ++ or __builtin_setjmp_dispatcher calls. These are very ++ special and don't expect anything to be inserted before ++ them. */ ++ if (!is_gimple_call (first) ++ || (fndecl = gimple_call_fndecl (first)) == NULL ++ || DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL ++ || (DECL_FUNCTION_CODE (fndecl) != BUILT_IN_SETJMP_RECEIVER ++ && (DECL_FUNCTION_CODE (fndecl) ++ != BUILT_IN_SETJMP_DISPATCHER))) ++ { ++ if (dump_file) ++ fprintf (dump_file, "Splitting bb %i after labels\n", ++ bb->index); ++ split_block_after_labels (bb); ++ } ++ } + } + } + diff --git a/lang/gcc45/patches/patch-gcc_real.c b/lang/gcc45/patches/patch-gcc_real.c new file mode 100644 index 000000000..461b9cf40 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_real.c @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/real.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/real.c +@@ -1008,15 +1008,25 @@ real_arithmetic (REAL_VALUE_TYPE *r, int icode, const + switch (code) + { + case PLUS_EXPR: ++ /* Clear any padding areas in *r if it isn't equal to one of the ++ operands so that we can later do bitwise comparisons later on. */ ++ if (r != op0 && r != op1) ++ memset (r, '\0', sizeof (*r)); + return do_add (r, op0, op1, 0); + + case MINUS_EXPR: ++ if (r != op0 && r != op1) ++ memset (r, '\0', sizeof (*r)); + return do_add (r, op0, op1, 1); + + case MULT_EXPR: ++ if (r != op0 && r != op1) ++ memset (r, '\0', sizeof (*r)); + return do_multiply (r, op0, op1); + + case RDIV_EXPR: ++ if (r != op0 && r != op1) ++ memset (r, '\0', sizeof (*r)); + return do_divide (r, op0, op1); + + case MIN_EXPR: diff --git a/lang/gcc45/patches/patch-gcc_recog.c b/lang/gcc45/patches/patch-gcc_recog.c new file mode 100644 index 000000000..2a8a47d6c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_recog.c @@ -0,0 +1,32 @@ +$NetBSD$ + +--- gcc/recog.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/recog.c +@@ -2991,6 +2991,7 @@ peep2_find_free_register (int from, int to, const char + static int search_ofs; + enum reg_class cl; + HARD_REG_SET live; ++ df_ref *def_rec; + int i; + + gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1); +@@ -3008,13 +3009,15 @@ peep2_find_free_register (int from, int to, const char + + while (from != to) + { +- HARD_REG_SET this_live; ++ gcc_assert (peep2_insn_data[from].insn != NULL_RTX); + ++ /* Don't use registers set or clobbered by the insn. */ ++ for (def_rec = DF_INSN_DEFS (peep2_insn_data[from].insn); ++ *def_rec; def_rec++) ++ SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec)); ++ + if (++from >= MAX_INSNS_PER_PEEP2 + 1) + from = 0; +- gcc_assert (peep2_insn_data[from].insn != NULL_RTX); +- REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before); +- IOR_HARD_REG_SET (live, this_live); + } + + cl = (class_str[0] == 'r' ? GENERAL_REGS diff --git a/lang/gcc45/patches/patch-gcc_regmove.c b/lang/gcc45/patches/patch-gcc_regmove.c new file mode 100644 index 000000000..ddd59470d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_regmove.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/regmove.c.orig Sun Jan 16 20:16:30 2011 ++++ gcc/regmove.c +@@ -859,7 +859,7 @@ fixup_match_2 (rtx insn, rtx dst, rtx src, rtx offset) + if (REG_N_CALLS_CROSSED (REGNO (src)) == 0) + break; + +- if (call_used_regs [REGNO (dst)] ++ if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)]) + || find_reg_fusage (p, CLOBBER, dst)) + break; + } diff --git a/lang/gcc45/patches/patch-gcc_reload.c b/lang/gcc45/patches/patch-gcc_reload.c new file mode 100644 index 000000000..f716688b3 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_reload.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/reload.c.orig Mon Dec 21 16:32:44 2009 ++++ gcc/reload.c +@@ -6795,6 +6795,15 @@ find_equiv_reg (rtx goal, rtx insn, enum reg_class rcl + || num > PARAM_VALUE (PARAM_MAX_RELOAD_SEARCH_INSNS)) + return 0; + ++ /* Don't reuse register contents from before a setjmp-type ++ function call; on the second return (from the longjmp) it ++ might have been clobbered by a later reuse. It doesn't ++ seem worthwhile to actually go and see if it is actually ++ reused even if that information would be readily available; ++ just don't reuse it across the setjmp call. */ ++ if (CALL_P (p) && find_reg_note (p, REG_SETJMP, NULL_RTX)) ++ return 0; ++ + if (NONJUMP_INSN_P (p) + /* If we don't want spill regs ... */ + && (! (reload_reg_p != 0 diff --git a/lang/gcc45/patches/patch-gcc_reload1.c b/lang/gcc45/patches/patch-gcc_reload1.c new file mode 100644 index 000000000..cd0691d45 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_reload1.c @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/reload1.c.orig Wed Apr 20 11:05:09 2011 ++++ gcc/reload1.c +@@ -4487,6 +4487,13 @@ reload_as_needed (int live_known) + { + AND_COMPL_HARD_REG_SET (reg_reloaded_valid, call_used_reg_set); + AND_COMPL_HARD_REG_SET (reg_reloaded_valid, reg_reloaded_call_part_clobbered); ++ ++ /* If this is a call to a setjmp-type function, we must not ++ reuse any reload reg contents across the call; that will ++ just be clobbered by other uses of the register in later ++ code, before the longjmp. */ ++ if (find_reg_note (insn, REG_SETJMP, NULL_RTX)) ++ CLEAR_HARD_REG_SET (reg_reloaded_valid); + } + } + diff --git a/lang/gcc45/patches/patch-gcc_reorg.c b/lang/gcc45/patches/patch-gcc_reorg.c new file mode 100644 index 000000000..73f65a7fd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_reorg.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/reorg.c.orig Wed Sep 15 22:51:44 2010 ++++ gcc/reorg.c +@@ -3557,9 +3557,11 @@ relax_delay_slots (rtx first) + } + } + ++ /* See if we have a simple (conditional) jump that is useless. */ + if (! INSN_ANNULLED_BRANCH_P (delay_insn) +- && prev_active_insn (target_label) == insn + && ! condjump_in_parallel_p (delay_insn) ++ && prev_active_insn (target_label) == insn ++ && ! BARRIER_P (prev_nonnote_insn (target_label)) + #ifdef HAVE_cc0 + /* If the last insn in the delay slot sets CC0 for some insn, + various code assumes that it is in a delay slot. We could diff --git a/lang/gcc45/patches/patch-gcc_stmt.c b/lang/gcc45/patches/patch-gcc_stmt.c new file mode 100644 index 000000000..04bc855e7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_stmt.c @@ -0,0 +1,46 @@ +$NetBSD$ + +--- gcc/stmt.c.orig Fri Oct 29 16:58:36 2010 ++++ gcc/stmt.c +@@ -1232,11 +1232,11 @@ check_operand_nalternatives (tree outputs, tree inputs + static bool + check_unique_operand_names (tree outputs, tree inputs, tree labels) + { +- tree i, j; ++ tree i, j, i_name = NULL_TREE; + + for (i = outputs; i ; i = TREE_CHAIN (i)) + { +- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i)); ++ i_name = TREE_PURPOSE (TREE_PURPOSE (i)); + if (! i_name) + continue; + +@@ -1247,7 +1247,7 @@ check_unique_operand_names (tree outputs, tree inputs, + + for (i = inputs; i ; i = TREE_CHAIN (i)) + { +- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i)); ++ i_name = TREE_PURPOSE (TREE_PURPOSE (i)); + if (! i_name) + continue; + +@@ -1261,7 +1261,7 @@ check_unique_operand_names (tree outputs, tree inputs, + + for (i = labels; i ; i = TREE_CHAIN (i)) + { +- tree i_name = TREE_PURPOSE (i); ++ i_name = TREE_PURPOSE (i); + if (! i_name) + continue; + +@@ -1276,8 +1276,7 @@ check_unique_operand_names (tree outputs, tree inputs, + return true; + + failure: +- error ("duplicate asm operand name %qs", +- TREE_STRING_POINTER (TREE_PURPOSE (TREE_PURPOSE (i)))); ++ error ("duplicate asm operand name %qs", TREE_STRING_POINTER (i_name)); + return false; + } + diff --git a/lang/gcc45/patches/patch-gcc_target-def.h b/lang/gcc45/patches/patch-gcc_target-def.h new file mode 100644 index 000000000..fb46a0a55 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_target-def.h @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/target-def.h.orig Thu Jun 24 21:06:37 2010 ++++ gcc/target-def.h +@@ -706,6 +706,7 @@ + } + + #ifndef TARGET_UNWIND_TABLES_DEFAULT ++#error "Missing unwind_tables_default" + #define TARGET_UNWIND_TABLES_DEFAULT false + #endif + diff --git a/lang/gcc45/patches/patch-gcc_targhooks.c b/lang/gcc45/patches/patch-gcc_targhooks.c new file mode 100644 index 000000000..a9afe265c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_targhooks.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/targhooks.c.orig Sat Mar 27 10:27:39 2010 ++++ gcc/targhooks.c +@@ -569,7 +569,17 @@ default_hidden_stack_protect_fail (void) + DECL_ARTIFICIAL (t) = 1; + DECL_IGNORED_P (t) = 1; + DECL_VISIBILITY_SPECIFIED (t) = 1; ++#if 1 ++ /* ++ * This is a hack: ++ * It appears that our gas does not generate @PLT for hidden ++ * symbols. It could be that we need a newer version, or that ++ * this local function is handled differently on linux. ++ */ ++ DECL_VISIBILITY (t) = VISIBILITY_DEFAULT; ++#else + DECL_VISIBILITY (t) = VISIBILITY_HIDDEN; ++#endif + + stack_chk_fail_decl = t; + } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_ChangeLog b/lang/gcc45/patches/patch-gcc_testsuite_ChangeLog new file mode 100644 index 000000000..89653bb1c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_ChangeLog @@ -0,0 +1,705 @@ +$NetBSD$ + +--- gcc/testsuite/ChangeLog.orig Thu Apr 28 14:11:59 2011 ++++ gcc/testsuite/ChangeLog +@@ -1,3 +1,656 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2012-06-20 Richard Guenther ++ ++ Backport from mainline ++ 2012-05-21 Joseph Myers ++ ++ PR c/53418 ++ * gcc.c-torture/compile/pr53418-1.c, ++ gcc.c-torture/compile/pr53418-2.c: New tests. ++ ++2012-06-20 Richard Guenther ++ ++ Backport from mainline ++ 2010-12-18 Jakub Jelinek ++ ++ PR tree-optimization/46985 ++ * gfortran.dg/pr46985.f90: New test. ++ ++ 2011-02-18 Jakub Jelinek ++ ++ PR debug/47780 ++ * gcc.target/i386/pr47780.c: New test. ++ ++2012-06-04 Edmar Wienskoski ++ ++ * gcc.target/powerpc/cell_builtin_1.c: New test case. ++ * gcc.target/powerpc/cell_builtin_2.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_3.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_4.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_5.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_6.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_7.c: Ditto. ++ * gcc.target/powerpc/cell_builtin_8.c: Ditto. ++ ++2012-05-03 Michael Meissner ++ ++ Backport from mainline ++ 2012-05-03 Michael Meissner ++ ++ PR target/53199 ++ * gcc.target/powwerpc/pr53199.c: New file. ++ ++2012-04-30 Uros Bizjak ++ ++ Backport from mainline ++ 2012-04-27 Paolo Bonzini ++ ++ PR target/53138 ++ * gcc.c-torture/execute/20120427-1.c: New testcase. ++ ++2012-03-28 Martin Jambor ++ ++ Backported from mainline ++ 2012-03-27 Martin Jambor ++ ++ PR middle-end/52693 ++ * gcc.dg/torture/pr52693.c: New test. ++ ++2012-03-24 Steven Bosscher ++ ++ PR middle-end/52640 ++ * gcc.c-torture/compile/limits-externdecl.c: New test. ++ ++2012-03-06 Tobias Burnus ++ ++ Backport from mainline ++ 2012-03-02 Tobias Burnus ++ ++ PR fortran/52452 ++ * gfortran.dg/intrinsic_8.f90: New. ++ ++2012-03-06 Jakub Jelinek ++ ++ Backported from 4.6 branch ++ 2012-01-25 Jason Merrill ++ ++ PR target/51934 ++ * g++.dg/torture/pr51344.C: Limit to x86. ++ ++2012-03-03 Peter Bergner ++ ++ Revert: ++ Backport from mainline ++ 2012-03-02 Peter Bergner ++ ++ * gcc.target/powerpc/pr52457.c: New test. ++ ++2012-03-02 Peter Bergner ++ ++ Backport from mainline ++ 2012-03-02 Peter Bergner ++ ++ * gcc.target/powerpc/pr52457.c: New test. ++ ++2012-02-23 Tobias Burnus ++ ++ PR fortran/52335 ++ * gfortran.dg/io_constraints_10.f90: New. ++ ++2012-02-23 Uros Bizjak ++ ++ PR c/52290 ++ * gcc.dg/noncompile/pr52290.c: New test. ++ ++2012-02-22 Uros Bizjak ++ ++ PR target/52330 ++ * gcc.target/i386/pr52330.c: New test. ++ ++2012-02-14 Bin Cheng ++ ++ Backport from mainline. ++ 2012-01-30 Bin Cheng ++ ++ PR target/51835 ++ * gcc.target/arm/pr51835.c: New testcase. ++ ++2012-02-09 Jakub Jelinek ++ ++ Backported from mainline ++ 2012-02-08 Jakub Jelinek ++ ++ PR rtl-optimization/52139 ++ * gcc.dg/pr52139.c: New test. ++ ++ 2012-01-05 Jakub Jelinek ++ ++ PR rtl-optimization/51767 ++ * gcc.c-torture/compile/pr51767.c: New test. ++ ++ PR middle-end/51768 ++ * c-c++-common/pr51768.c: New test. ++ ++ PR middle-end/44777 ++ * gcc.dg/tree-prof/pr44777.c: New test. ++ ++2012-02-09 Peter Bergner ++ ++ Backport from mainline ++ 2012-02-09 Peter Bergner ++ ++ PR middle-end/52140 ++ * gcc.dg/dfp/pr52140.c: New test. ++ ++2012-02-09 Andrey Belevantsev ++ ++ Backport from mainline ++ 2012-01-20 Jakub Jelinek ++ ++ PR target/51106 ++ * gcc.dg/torture/pr51106-1.c: New test. ++ * gcc.dg/torture/pr51106-2.c: New test. ++ ++2012-01-28 Tobias Burnus ++ ++ PR fortran/52022 ++ * gfortran.dg/dummy_procedure_7.f90: New. ++ ++2012-01-21 Eric Botcazou ++ ++ * gnat.dg/renaming5.ad[sb]: New test. ++ ++2012-01-20 Kai Tietz ++ ++ * g++.dg/torture/pr51344.C: Fix typo. ++ ++2012-01-19 Kai Tietz ++ ++ * g++.dg/torture/pr51344.C: New test. ++ ++2012-01-15 Uros Bizjak ++ ++ PR rtl-optimization/51821 ++ * gcc.dg/pr51821.c: New test. ++ ++2012-01-12 Matthew Gretton-Dann ++ ++ Backport from mainline: ++ 2011-01-11 Matthew Gretton-Dann ++ ++ * gcc.c-torture/execute/20120110-1.c: New testcase. ++ ++2012-01-10 Joseph Myers ++ ++ * gcc.c-torture/execute/doloop-1.c, ++ gcc.c-torture/execute/doloop-2.c: New tests. ++ ++2012-01-09 Martin Jambor ++ ++ PR tree-optimization/51759 ++ * gcc.dg/ipa/pr45644.c: New test. ++ * g++.dg/ipa/pr51759.C: Likewise. ++ ++2012-01-06 Richard Sandiford ++ ++ PR middle-end/48660 ++ * g++.dg/pr48660.C: New test. ++ ++2012-01-06 Eric Botcazou ++ ++ * ada/acats/overflow.lst: Add cb20004. ++ ++2012-01-04 Richard Guenther ++ ++ Backport from mainline ++ 2011-07-14 Richard Guenther ++ ++ PR tree-optimization/49651 ++ * gcc.dg/torture/pr49651.c: New testcase. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-10-12 Paul Koning ++ ++ PR tree-optimization/50189 ++ * g++.dg/torture/pr50189.C: New testcase. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-10-06 Jakub Jelinek ++ ++ PR tree-optimization/49279 ++ * gcc.c-torture/execute/pr49279.c: New test. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-12 Richard Guenther ++ ++ PR tree-optimization/48172 ++ * gcc.dg/vect/pr48172.c: New testcase. ++ ++2011-12-20 Dodji Seketeli ++ ++ PR debug/49951 ++ * g++.dg/gcov/gcov-2.C: Adjust. ++ ++2011-12-13 Jason Merrill ++ ++ PR c++/51406 ++ PR c++/51161 ++ * g++.dg/cpp0x/rv-cast3.C: New. ++ * g++.dg/cpp0x/rv-cast4.C: New. ++ ++2011-12-09 Kazu Hirata ++ ++ Backport from mainline: ++ ++ 2011-12-05 Kazu Hirata ++ ++ PR target/51408 ++ * gcc.dg/pr51408.c: New. ++ ++2011-12-04 Uros Bizjak ++ Jérémie Detrey ++ ++ PR target/51393 ++ * gcc.target/i386/pr51393.c: New test. ++ ++2011-11-19 Eric Botcazou ++ ++ * gcc.dg/delay-slot-2.c: New test. ++ ++2011-10-30 Uros Bizjak ++ ++ PR target/50875 ++ * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn ++ constraints. Change alternative 1 to "x,m,1". ++ ++2011-10-23 Uros Bizjak ++ ++ PR target/50788 ++ * gcc.target/i386/pr50788.c: New test. ++ ++2011-10-19 Jason Merrill ++ ++ PR c++/50793 ++ * g++.dg/init/value9.C: New. ++ ++2011-10-13 Jason Merrill ++ ++ PR c++/50618 ++ * g++.dg/init/vbase1.C: New. ++ ++2011-10-13 Janus Weil ++ ++ PR fortran/50659 ++ * gfortran.dg/proc_decl_27.f90: New. ++ ++2011-10-12 Joseph Myers ++ ++ PR c/50565 ++ * gcc.c-torture/compile/pr50565-1.c, ++ gcc.c-torture/compile/pr50565-2.c: New tests. ++ ++2011-10-11 Janis Johnson ++ ++ PR c++/44473 ++ * g++.dg/dfp/44473-1.C: New test. ++ * g++.dg/dfp/44473-2.C: New test. ++ * g++.dg/dfp/mangle-1.C: New test. ++ * g++.dg/dfp/mangle-2.C: New test. ++ * g++.dg/dfp/mangle-3.C: New test. ++ * g++.dg/dfp/mangle-4.C: New test. ++ * g++.dg/dfp/mangle-5.C: New test. ++ ++2011-10-11 Tobias Burnus ++ ++ PR fortran/50273 ++ * gfortran.dg/common_16.f90: New. ++ ++2011-09-22 Uros Bizjak ++ ++ PR target/50464 ++ * g++.dg/other/pr50464.C: New test. ++ ++2011-09-08 Martin Jambor ++ ++ Backport from mainline ++ 2011-09-07 Martin Jambor ++ ++ PR tree-optimization/49911 ++ * g++.dg/tree-ssa/pr49911.C: New test. ++ ++2011-09-01 Mikael Morin ++ ++ PR fortran/50050 ++ * gfortran.dg/alloc_comp_initializer_3.f90: New test. ++ * gfortran.dg/pointer_comp_init.f90: New test. ++ ++2011-08-30 Thomas Koenig ++ ++ Backport from trunk ++ PR libfortran/50192 ++ * gfortran.dg/widechar_compare_1.f90: New test. ++ ++2011-08-30 Tobias Burnus ++ ++ PR fortran/50163 ++ * gfortran.dg/initialization_28.f90: New. ++ ++2011-08-19 Tobias Burnus ++ ++ Backport from mainline ++ 2011-08-18 Tobias Burnus ++ ++ PR fortran/50109 ++ * gfortran.dg/namelist_73.f90: New. ++ ++2011-08-16 Paul Thomas ++ ++ PR fortran/42051 ++ PR fortran/43896 ++ PR fortran/49962 ++ * gfortran.dg/class_23.f03: New test. ++ ++2011-07-31 Uros Bizjak ++ ++ PR target/49920 ++ * gcc.target/i386/pr49920.c: New test. ++ ++2011-07-27 Tobias Burnus ++ ++ Backported from mainline ++ 2011-07-23 Tobias Burnus ++ ++ PR fortran/49791 ++ * gfortran.dg/namelist_72.f: New. ++ ++2011-07-27 Uros Bizjak ++ ++ * gcc.target/i386/avx-os-support.h: New. ++ * gcc.target/i386/avx-check.h: Include avx-os-support.h ++ (main): Check avx_os_support before the test is run. ++ * gcc.target/i386/aes-avx-check.h: Ditto. ++ * gcc.target/i386/pclmul-avx-check.h: Ditto. ++ ++2011-07-23 Janus Weil ++ ++ PR fortran/49708 ++ * gfortran.dg/allocate_error_3.f90: New. ++ ++2011-07-22 Rainer Orth ++ ++ PR debug/47393 ++ * g++.dg/debug/dwarf2/icf.C: XFAIL some scan-assembler on ++ mips-sgi-irix*. ++ ++2011-07-21 Uros Bizjak ++ ++ * lib/target-supports.exp (check_avx_os_support_available): New. ++ (check_effective_target_avx_runtime): Use it. ++ ++2011-07-19 Jakub Jelinek ++ ++ Backport from mainline ++ 2011-07-08 Jakub Jelinek ++ ++ PR target/49621 ++ * gcc.target/powerpc/altivec-34.c: New test. ++ ++ 2011-07-07 Jakub Jelinek ++ ++ PR c/49644 ++ * g++.dg/torture/pr49644.C: New test. ++ ++ PR c/49644 ++ * gcc.c-torture/execute/pr49644.c: New test. ++ ++ PR middle-end/49640 ++ * gcc.dg/gomp/pr49640.c: New test. ++ ++ 2011-07-04 Jakub Jelinek ++ ++ PR rtl-optimization/49619 ++ * gcc.dg/pr49619.c: New test. ++ ++ 2011-05-27 Jakub Jelinek ++ ++ PR c++/49165 ++ * g++.dg/eh/cond6.C: New test. ++ ++ 2011-05-26 Jakub Jelinek ++ ++ PR c++/49165 ++ * g++.dg/eh/cond5.C: New test. ++ ++ PR tree-optimization/49161 ++ * gcc.c-torture/execute/pr49161.c: New test. ++ ++ 2011-05-23 Jakub Jelinek ++ ++ PR c/49120 ++ * c-decl.c (start_decl): Convert expr to void_type_node. ++ ++ PR middle-end/48973 ++ * gcc.c-torture/execute/pr48973-1.c: New test. ++ * gcc.c-torture/execute/pr48973-2.c: New test. ++ ++ 2011-05-18 Jakub Jelinek ++ ++ PR tree-optimization/49039 ++ * gcc.c-torture/execute/pr49039.c: New test. ++ * gcc.dg/tree-ssa/pr49039.c: New test. ++ * g++.dg/torture/pr49039.C: New test. ++ ++2011-07-15 Jason Merrill ++ ++ PR testsuite/49643 ++ * g++.dg/rtti/anon-ns1.C: Allow for null-termination. ++ ++2011-07-07 Rainer Orth ++ ++ * gcc.target/sparc/cas64.c: New test. ++ ++2011-07-05 Rainer Orth ++ ++ * ada/acats/run_acats (which): Extract last field from type -p, ++ type output only if command succeeded. ++ ++2011-07-04 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-02 Richard Guenther ++ ++ PR tree-optimization/48822 ++ * gcc.dg/torture/pr48822.c: New testcase. ++ ++2011-07-04 Richard Guenther ++ ++ Backport from mainline ++ 2011-05-23 Richard Guenther ++ ++ PR tree-optimization/49115 ++ * g++.dg/torture/pr49115.C: New testcase. ++ ++2011-07-04 Richard Guenther ++ ++ PR tree-optimization/49615 ++ * g++.dg/torture/pr49615.C: New testcase. ++ ++2011-06-30 Rainer Orth ++ ++ PR ada/49511 ++ * ada/acats/run_acats (which): Use last field of type -p output. ++ ++2011-06-30 Richard Guenther ++ ++ PR tree-optimization/38752 ++ * gcc.c-torture/compile/pr38752.c: New testcase. ++ ++2011-06-28 Eric Botcazou ++ ++ * gnat.dg/opt17.ad[sb]: New test. ++ ++2011-06-23 Jason Merrill ++ ++ PR c++/49440 ++ * g++.dg/rtti/anon-ns1.C: New. ++ ++2011-06-17 Hans-Peter Nilsson ++ ++ Backport from mainline ++ 2011-06-17 Hans-Peter Nilsson ++ ++ PR rtl-optimization/48542 ++ * gcc.dg/torture/pr48542.c: New test. ++ ++2011-06-16 Kaz Kojima ++ ++ Backport form main line ++ 2011-06-09 Kaz Kojima ++ ++ PR target/49307 ++ * gcc.dg/pr49307.c: New. ++ ++2011-06-08 Kaz Kojima ++ ++ Backport from mainline ++ 2011-06-01 Kaz Kojima ++ ++ PR target/49238 ++ * gcc.c-torture/compile/pr49238.c: New. ++ ++2011-06-05 Kaz Kojima ++ ++ Backport from mainline ++ 2011-05-30 Kaz Kojima ++ ++ PR target/49186 ++ * gcc.c-torture/execute/pr49186.c: New. ++ ++2011-06-04 Ira Rosen ++ ++ PR tree-optimization/49038 ++ * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: New test. ++ * gcc.dg/vect/pr49038.c: New test. ++ ++2011-06-02 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/45786 ++ * gfortran.dg/operator_7.f90: New test case. ++ ++2011-05-31 Duncan Sands ++ ++ Backported from 4.6 branch ++ 2011-03-09 Martin Jambor ++ ++ PR tree-optimization/47714 ++ * g++.dg/torture/pr47714.C: New test. ++ ++2011-05-29 Richard Sandiford ++ ++ * gcc.target/mips/reg-var-1.c: New test. ++ ++2011-05-25 Uros Bizjak ++ ++ PR target/49133 ++ * g++.dg/other/pr49133.C: New test. ++ ++2011-05-20 Jason Merrill ++ ++ * g++.dg/init/new32.C: New. ++ ++2011-05-19 Rainer Orth ++ ++ * gcc.c-torture/execute/960321-1.x: Remove. ++ ++2011-05-11 Michael Meissner ++ ++ Backport from mainline ++ 2011-05-10 Michael Meissner ++ ++ PR target/48857 ++ * gcc.target/powerpc/pr48857.c: New file, make sure V2DI arguments ++ are passed and returned in vector registers. ++ ++2011-05-10 Jakub Jelinek ++ ++ Backported from mainline ++ 2011-05-07 Zdenek Dvorak ++ ++ PR tree-optimization/48837 ++ * gcc.dg/pr48837.c: New testcase. ++ ++2011-05-09 Jason Merrill ++ ++ * g++.dg/template/nontype23.C: New. ++ ++2011-05-05 Jason Merrill ++ ++ * g++.dg/init/new30.C: New. ++ ++2011-05-05 Julian Brown ++ ++ * gcc.target/arm/neon-vset_lanes8.c: New test. ++ ++2011-05-05 Ira Rosen ++ ++ Backport from mainline: ++ 2011-04-18 Ulrich Weigand ++ Ira Rosen ++ ++ PR target/48252 ++ * gcc.target/arm/pr48252.c: New test. ++ ++2011-05-04 Uros Bizjak ++ ++ Backport from mainline ++ 2011-04-21 Uros Bizjak ++ ++ PR target/48708 ++ * gcc.target/i386/pr48708.c: New test. ++ ++2011-05-04 Uros Bizjak ++ ++ Backport from mainline ++ 2010-12-08 H.J. Lu ++ ++ * gcc.target/i386/sse2-init-v2di-2.c: Add "-dp" and update ++ expected scan. ++ ++2011-05-03 Jakub Jelinek ++ ++ PR target/48774 ++ * gcc.dg/pr48774.c: New test. ++ ++ Backport from mainline ++ 2011-04-30 Jakub Jelinek ++ ++ PR tree-optimization/48809 ++ * gcc.c-torture/execute/pr48809.c: New test. ++ ++ 2011-04-27 Jakub Jelinek ++ ++ PR c/48742 ++ * gcc.c-torture/compile/pr48742.c: New test. ++ ++ 2011-04-23 Jakub Jelinek ++ ++ PR c/48685 ++ * gcc.dg/pr48685.c: New test. ++ ++2011-04-27 Jason Merrill ++ ++ * g++.dg/parse/ambig6.C: New. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. +@@ -48,7 +701,7 @@ + + 2011-04-18 Richard Guenther + +- Backported from 4.6 branch ++ Backported from 4.6 branch + 2011-03-11 Jakub Jelinek + + PR c++/48035 +@@ -318,7 +971,7 @@ + * gcc.dg/torture/pr45967.c: New testcase. + * gcc.dg/torture/pr45967-2.c: Likewise. + * gcc.dg/torture/pr45967-3.c: Likewise. +- * gcc.dg/torture/pr39074-2.c: Adjust. ++ * gcc.dg/torture/pr39074-2.c: Adjust. + * gcc.dg/torture/pta-escape-1.c: Likewise + * gcc.dg/torture/pta-ptrarith-1.c: Likewise + * gcc.dg/tree-ssa/pta-callused.c: Likewise +@@ -1284,11 +1937,11 @@ + + 2010-09-06 Dodji Seketeli + +- PR c++/45200 +- PR c++/45293 +- PR c++/45558 +- * g++.dg/template/typedef34.C: New test. +- * g++.dg/template/typedef35.C: New test. ++ PR c++/45200 ++ PR c++/45293 ++ PR c++/45558 ++ * g++.dg/template/typedef34.C: New test. ++ * g++.dg/template/typedef35.C: New test. + + 2010-09-04 Tobias Burnus + +@@ -4146,7 +4799,7 @@ + * gfortran.dg/read_x_eof.f90: New test. + * gfortran.dg/read_x_past.f: Update test. + +-2010-03-10 Jan Hubicka ++2010-03-10 Jan Hubicka + + * gcc.c-torture/compile/pr43288.c: New test. + diff --git a/lang/gcc45/patches/patch-gcc_testsuite_c-c++-common_pr51768.c b/lang/gcc45/patches/patch-gcc_testsuite_c-c++-common_pr51768.c new file mode 100644 index 000000000..f569a2fb4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_c-c++-common_pr51768.c @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/c-c++-common/pr51768.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/c-c++-common/pr51768.c +@@ -0,0 +1,25 @@ ++/* PR middle-end/51768 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++ ++void ++foo (void) ++{ ++ asm goto ("" : : : : lab, lab, lab2, lab); /* { dg-error "duplicate asm operand name" } */ ++lab:; ++lab2:; ++} ++ ++void ++bar (void) ++{ ++ asm goto ("" : : [lab] "i" (0) : : lab); /* { dg-error "duplicate asm operand name" } */ ++lab:; ++} ++ ++void ++baz (void) ++{ ++ int x; ++ asm ("" : [lab] "=r" (x) : [lab] "r" (x)); /* { dg-error "duplicate asm operand name" } */ ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C new file mode 100644 index 000000000..0dfbe6934 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast3.C @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/cpp0x/rv-cast3.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/cpp0x/rv-cast3.C +@@ -0,0 +1,18 @@ ++// PR c++/51406 ++// { dg-do run } ++// { dg-options "-std=c++0x" } ++ ++extern "C" int printf(const char *,...); ++extern "C" void abort(); ++ ++struct A { int a; A() : a(1) {} }; ++struct B { int b; B() : b(2) {} }; ++struct X : A, B {}; ++ ++int main() { ++ X x; ++ int a=static_cast(x).a; ++ int b=static_cast(x).b; ++ // printf ("%d %d\n", a, b); ++ if (a!=1 || b!=2) abort(); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C new file mode 100644 index 000000000..a29c768cc --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_cpp0x_rv-cast4.C @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/cpp0x/rv-cast4.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/cpp0x/rv-cast4.C +@@ -0,0 +1,13 @@ ++// PR c++/51161 ++// { dg-options "-std=c++0x" } ++ ++struct A{}; ++struct B : A{}; ++struct C : A{}; ++struct D : B, C{}; ++ ++int main() ++{ ++ D d; ++ static_cast(d); // { dg-error "ambiguous" } ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C new file mode 100644 index 000000000..36c69e30b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_debug_dwarf2_icf.C @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/debug/dwarf2/icf.C.orig Thu Oct 8 21:00:04 2009 ++++ gcc/testsuite/g++.dg/debug/dwarf2/icf.C +@@ -40,11 +40,11 @@ test2(A* a) + + // Verify that we get .debug_dcall and .debug_vcall tables generated + // and that we see entries for both virtual calls. +-// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } } ++// { dg-final { scan-assembler "\\.section.*\.debug_dcall" { xfail mips-sgi-irix* } } } + // { dg-final { scan-assembler "\\.section.*\.debug_vcall" } } +-// { dg-final { scan-assembler "New caller" } } +-// { dg-final { scan-assembler "Caller DIE offset" } } ++// { dg-final { scan-assembler "New caller" { xfail mips-sgi-irix* } } } ++// { dg-final { scan-assembler "Caller DIE offset" { xfail mips-sgi-irix* } } } + // { dg-final { scan-assembler "Point of call" } } +-// { dg-final { scan-assembler "Callee DIE offset" } } ++// { dg-final { scan-assembler "Callee DIE offset" { xfail mips-sgi-irix* } } } + // { dg-final { scan-assembler "0x0.*Vtable slot" } } + // { dg-final { scan-assembler "0x1.*Vtable slot" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-1.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-1.C new file mode 100644 index 000000000..26bae07a4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-1.C @@ -0,0 +1,127 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/44473-1.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/44473-1.C +@@ -0,0 +1,122 @@ ++/* { dg-do assemble } */ ++ ++/* Minimized from the testcase in PR c++/44473; mangling of decimal types ++ did not include CV qualifiers. */ ++ ++namespace std ++{ ++ namespace decimal ++ { ++ class decimal32 ++ { ++ public: ++ typedef float __decfloat32 __attribute__ ((mode (SD))); ++ explicit decimal32 (float __r):__val (__r) {} ++ private: ++ __decfloat32 __val; ++ }; ++ }; ++ ++ template ++ _BI2 copy_backward (_BI1 __first, _BI2 __result); ++} ++ ++namespace __gnu_cxx ++{ ++ template ++ class __normal_iterator ++ { ++ public: ++ explicit __normal_iterator (const _Iterator & __i) {} ++ const _Iterator & base () const {} ++ }; ++ ++ template ++ bool operator== (const __normal_iterator <_IteratorL, _Container> &__lhs, ++ const __normal_iterator <_IteratorR, _Container> &__rhs) ++ { ++ return __lhs.base () == __rhs.base (); ++ } ++ ++ template ++ class new_allocator ++ { ++ public: ++ typedef _Tp *pointer; ++ typedef const _Tp *const_pointer; ++ template ++ struct rebind ++ { ++ typedef new_allocator <_Tp1> other; ++ }; ++ }; ++} ++ ++namespace std ++{ ++ template ++ class allocator:public __gnu_cxx::new_allocator <_Tp> {}; ++ ++ template ++ struct _Vector_base ++ { ++ typedef typename _Alloc::template rebind <_Tp>::other _Tp_alloc_type; ++ struct _Vector_impl:public _Tp_alloc_type ++ { ++ typename _Tp_alloc_type::pointer _M_finish; ++ }; ++ public: _Vector_impl _M_impl; ++ }; ++ ++ template > ++ class vector:protected _Vector_base <_Tp, _Alloc> ++ { ++ typedef _Vector_base <_Tp, _Alloc> _Base; ++ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; ++ public: ++ typedef _Tp value_type; ++ typedef typename _Tp_alloc_type::pointer pointer; ++ typedef typename _Tp_alloc_type::const_pointer const_pointer; ++ typedef __gnu_cxx::__normal_iterator iterator; ++ typedef __gnu_cxx::__normal_iterator ++ const_iterator; ++ const_iterator begin () const; ++ iterator end () ++ { ++ return iterator (this->_M_impl._M_finish); ++ } ++ const_iterator end () const ++ { ++ return const_iterator (this->_M_impl._M_finish); ++ } ++ bool empty () const ++ { ++ return begin () == end (); ++ } ++ void push_back (const value_type & __x) ++ { ++ _M_insert_aux (end ()); ++ } ++ void _M_insert_aux (iterator __position); ++ }; ++ ++ template ++ void vector <_Tp, _Alloc>::_M_insert_aux (iterator __position) ++ { ++ std::copy_backward (__position.base (), this->_M_impl._M_finish - 1); ++ } ++} ++ ++std::vector vec; ++ ++int ++foo () ++{ ++ return (vec.empty ()) ? 1 : 0; ++} ++ ++bool ++bar () ++{ ++ vec.push_back (std::decimal::decimal32 (0)); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-2.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-2.C new file mode 100644 index 000000000..aada47555 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_44473-2.C @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/44473-2.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/44473-2.C +@@ -0,0 +1,25 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++ ++namespace std { ++ namespace decimal { ++ class decimal64 { ++ public: ++ typedef float __decfloat64 __attribute__ ((mode (DD))); ++ explicit decimal64 (int __r):__val (__r) {} ++ private: ++ __decfloat64 __val; ++ }; ++ } ++} ++ ++int bar (const std::decimal::decimal64 & x) { } ++ ++int foo () ++{ ++ std::decimal::decimal64 x(0); ++ bar (x); ++} ++ ++// { dg-final { scan-assembler "_Z3barRKDd:" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-1.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-1.C new file mode 100644 index 000000000..580dad1fa --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-1.C @@ -0,0 +1,45 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/mangle-1.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/mangle-1.C +@@ -0,0 +1,40 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++// Derived from g++.dg/abi/mangle13.C. ++ ++namespace std { ++ namespace decimal { ++ class decimal64 { ++ public: ++ typedef float __decfloat64 __attribute__ ((mode (DD))); ++ explicit decimal64 (float __r):__val (__r) {} ++ private: ++ __decfloat64 __val; ++ }; ++ } ++} ++ ++struct A { ++ template std::decimal::decimal64 f (); ++ std::decimal::decimal64 operator+(); ++ operator std::decimal::decimal64 (); ++ template ++ std::decimal::decimal64 operator-(); ++}; ++ ++typedef std::decimal::decimal64 (A::*P)(); ++ ++template

struct S {}; ++ ++template void g (S<&T::template f >) {} ++template void g (S<&T::operator+ >) {} ++template void g (S<&T::operator std::decimal::decimal64>) {} ++template void g (S<&T::template operator- >) {} ++ ++template void g (S<&A::f >); ++template void g (S<&A::operator+>); ++template void g (S<&A::operator std::decimal::decimal64>); ++ ++// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_1fIDdEEE\[: \t\n\]" } } ++// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_plEE\[: \t\n\]" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-2.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-2.C new file mode 100644 index 000000000..7cc667e9e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-2.C @@ -0,0 +1,33 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/mangle-2.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/mangle-2.C +@@ -0,0 +1,28 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++// Derived from g++.dg/abi/mangle15.C. ++ ++namespace std { ++ namespace decimal { ++ class decimal64 { ++ public: ++ typedef float __decfloat64 __attribute__ ((mode (DD))); ++ explicit decimal64 (float __r):__val (__r) {} ++ private: ++ __decfloat64 __val; ++ }; ++ } ++} ++ ++struct A { ++ template std::decimal::decimal64 f (); ++}; ++ ++typedef std::decimal::decimal64 (A::*P)(); ++ ++template

struct S {}; ++ ++void g (S<&A::f >) {} ++ ++// { dg-final { scan-assembler "\n?_Z1g1SIXadL_ZN1A1fIDdEEDdvEEE\[: \t\n\]" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-3.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-3.C new file mode 100644 index 000000000..89f0eb554 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-3.C @@ -0,0 +1,33 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/mangle-3.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/mangle-3.C +@@ -0,0 +1,28 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++// Derived from g++.dg/abi/mangle20-1.C. ++ ++namespace std { ++ namespace decimal { ++ class decimal64 { ++ public: ++ typedef float __decfloat64 __attribute__ ((mode (DD))); ++ explicit decimal64 (int __r):__val (__r) {} ++ private: ++ __decfloat64 __val; ++ }; ++ } ++} ++ ++template void f(std::decimal::decimal64 (*)[2]) {} ++template void g(std::decimal::decimal64 (*)[I+2]) {} ++ ++static const std::decimal::decimal64 I(1); ++static const std::decimal::decimal64 J(2); ++ ++template void f<1>(std::decimal::decimal64 (*)[2]); ++template void g<1>(std::decimal::decimal64 (*)[3]); ++ ++// { dg-final { scan-assembler "\n_?_Z1fILi1EEvPA2_Dd\[: \t\n\]" } } ++// { dg-final { scan-assembler "\n_?_Z1gILi1EEvPAplT_Li2E_Dd\[: \t\n\]" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-4.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-4.C new file mode 100644 index 000000000..f3f52b5eb --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-4.C @@ -0,0 +1,40 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/mangle-4.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/mangle-4.C +@@ -0,0 +1,35 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++// Derived from g++.dg/abi/mangle30.C. ++ ++namespace std { ++ namespace decimal { ++ class decimal64 { ++ public: ++ typedef float __decfloat64 __attribute__ ((mode (DD))); ++ explicit decimal64 (int __r):__val (__r) {} ++ private: ++ __decfloat64 __val; ++ }; ++ } ++} ++ ++struct A ++{ ++ template ++ struct B ++ { ++ typedef T myT; ++ }; ++}; ++ ++template ++void f (T t, typename T::template B::myT u, typename T::template B::myT v); ++ ++void foo () ++{ ++ f (A(), std::decimal::decimal64(0), 1); ++} ++ ++// { dg-final { scan-assembler "_Z1fI1AEvT_NS1_1BIDdE3myTENS2_IiE3myTE" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-5.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-5.C new file mode 100644 index 000000000..61a59bfd5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_dfp_mangle-5.C @@ -0,0 +1,34 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/dfp/mangle-5.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/dfp/mangle-5.C +@@ -0,0 +1,29 @@ ++// { dg-do compile } ++ ++// Mangling of classes from std::decimal are special-cased. ++// Derived from g++.dg/abi/mangle35.C. ++ ++namespace std { ++ namespace decimal { ++ class decimal128 { ++ public: ++ typedef float __decfloat128 __attribute__ ((mode (TD))); ++ explicit decimal128 (int __r):__val (__r) {} ++ private: ++ __decfloat128 __val; ++ }; ++ } ++} ++ ++template struct A {}; ++ ++template void foo(); ++ ++template A > bar(); ++ ++void baz() ++{ ++ bar(); ++} ++ ++// { dg-final { scan-assembler "_Z3barIDeE1AIX3fooIT_EEEv" } } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond5.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond5.C new file mode 100644 index 000000000..9fb6f8f2f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond5.C @@ -0,0 +1,48 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/eh/cond5.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/eh/cond5.C +@@ -0,0 +1,43 @@ ++// PR c++/49165 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++foo (bool x, int y) ++{ ++ if (y < 10 && (x ? true : throw 1)) ++ y++; ++ if (y > 20 || (x ? true : throw 2)) ++ y++; ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (true, 0) != 2 ++ || foo (true, 10) != 11 ++ || foo (false, 30) != 31) ++ abort (); ++ try ++ { ++ foo (false, 0); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 1) ++ abort (); ++ } ++ try ++ { ++ foo (false, 10); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 2) ++ abort (); ++ } ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond6.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond6.C new file mode 100644 index 000000000..305409be5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_eh_cond6.C @@ -0,0 +1,48 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/eh/cond6.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/eh/cond6.C +@@ -0,0 +1,43 @@ ++// PR c++/49165 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++foo (bool x, int y) ++{ ++ if (y < 10 && (x ? 1 : throw 1)) ++ y++; ++ if (y > 20 || (x ? 1 : throw 2)) ++ y++; ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (true, 0) != 2 ++ || foo (true, 10) != 11 ++ || foo (false, 30) != 31) ++ abort (); ++ try ++ { ++ foo (false, 0); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 1) ++ abort (); ++ } ++ try ++ { ++ foo (false, 10); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 2) ++ abort (); ++ } ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_gcov_gcov-2.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_gcov_gcov-2.C new file mode 100644 index 000000000..a7281dcd2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_gcov_gcov-2.C @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/gcov/gcov-2.C.orig Thu Jul 16 22:29:52 2009 ++++ gcc/testsuite/g++.dg/gcov/gcov-2.C +@@ -20,7 +20,7 @@ class C { (private) + + void foo() + { +- C c; /* count(2) */ ++ C c; /* count(1) */ + c.seti (1); /* count(1) */ + } + diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new30.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new30.C new file mode 100644 index 000000000..08feb9c6e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new30.C @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/init/new30.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/init/new30.C +@@ -0,0 +1,15 @@ ++// PR c++/40975 ++ ++struct data_type ++{ ++ // constructor required to reproduce compiler bug ++ data_type() {} ++}; ++ ++struct ptr_type ++{ ++ // array new as default argument required to reproduce compiler bug ++ ptr_type (data_type* ptr = new data_type[1]) { delete[] ptr; } ++}; ++ ++ptr_type obj; diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new32.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new32.C new file mode 100644 index 000000000..0cc4ebbcf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_new32.C @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/init/new32.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/init/new32.C +@@ -0,0 +1,16 @@ ++// PR c++/48873 ++ ++#include ++ ++struct D { ++private: ++ ~D(); ++}; ++ ++template ++T& create(); ++ ++void f() ++{ ++ D* dp = new (((void*) 0)) D(create()); // # ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_value9.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_value9.C new file mode 100644 index 000000000..edc78a6f1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_value9.C @@ -0,0 +1,37 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/init/value9.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/init/value9.C +@@ -0,0 +1,32 @@ ++// PR c++/50793 ++// { dg-do run } ++ ++struct NonTrivial ++{ ++ NonTrivial() { } ++}; ++ ++struct S ++{ ++ NonTrivial nt; ++ int i; ++}; ++ ++int f(S s) ++{ ++ s.i = 0xdeadbeef; ++ return s.i; ++} ++ ++int g(S s = S()) ++{ ++ return s.i; ++} ++ ++int main() ++{ ++ f(S()); // make stack dirty ++ ++ if ( g() ) ++ __builtin_abort(); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_vbase1.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_vbase1.C new file mode 100644 index 000000000..d9cb4e813 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_init_vbase1.C @@ -0,0 +1,44 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/init/vbase1.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/init/vbase1.C +@@ -0,0 +1,39 @@ ++// PR c++/50618 ++// { dg-do run } ++ ++struct Base ++{ ++ const int text; ++ Base():text(1) {} ++ Base(int aText) ++ : text(aText) {} ++}; ++struct SubA : public virtual Base ++{ ++protected: ++ int x; ++public: ++ SubA(int aX) ++ : x(aX) {} ++}; ++class SubB : public virtual Base ++{}; ++struct Diamond : public SubA, public SubB ++{ ++ Diamond(int text) ++ : Base(text), SubA(5), SubB() {} ++ ++ void printText() ++ { ++ if(text != 2) ++ __builtin_abort(); ++ if(x!=5) ++ __builtin_abort(); ++ } ++}; ++ ++int main(int, char**) ++{ ++ Diamond x(2); ++ x.printText(); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_ipa_pr51759.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_ipa_pr51759.C new file mode 100644 index 000000000..262ac28a5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_ipa_pr51759.C @@ -0,0 +1,31 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/ipa/pr51759.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/ipa/pr51759.C +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++extern "C" void abort (void); ++struct S ++{ ++ void __attribute__((noinline)) set(unsigned val) ++ { ++ data = val; ++ if (data != val) ++ abort (); ++ } ++ int pad0; ++ unsigned pad1 : 8; ++ unsigned data : 24; ++ int pad2; ++}; ++int main() ++{ ++ S s; ++ s.pad2 = -1; ++ s.set(0); ++ if (s.pad2 != -1) ++ abort (); ++} ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr49133.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr49133.C new file mode 100644 index 000000000..b12be0bd0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr49133.C @@ -0,0 +1,42 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/other/pr49133.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/other/pr49133.C +@@ -0,0 +1,37 @@ ++/* { dg-do run { target i?86-*-* x86_64-*-* } } */ ++/* { dg-options "-O2 -msse2" } */ ++/* { dg-require-effective-target sse2 } */ ++/* { dg-require-effective-target sse2_runtime } */ ++ ++#include ++ ++extern "C" void abort (); ++ ++typedef double double_a __attribute__((__may_alias__)); ++ ++struct V ++{ ++ __m128d data; ++}; ++ ++int ++main() ++{ ++ V a; ++ __m128d b; ++ ++ b = _mm_set_pd (1., 0.); ++ a.data = _mm_set_pd (1., 0.); ++ a.data = _mm_add_pd (a.data, ++ _mm_and_pd (_mm_cmpeq_pd (a.data, _mm_set1_pd (0.)), ++ _mm_set1_pd (2.))); ++ reinterpret_cast(&a.data)[1] += 1.; ++ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (0.)), ++ _mm_set1_pd (1.))); ++ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (1.)), ++ _mm_set1_pd (1.))); ++ if (_mm_movemask_pd (_mm_cmpeq_pd (a.data, b)) != 0x3) ++ abort(); ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr50464.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr50464.C new file mode 100644 index 000000000..4f807526d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_other_pr50464.C @@ -0,0 +1,175 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/other/pr50464.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/other/pr50464.C +@@ -0,0 +1,170 @@ ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-options "-O3 -mxop" } ++ ++typedef long unsigned int size_t; ++typedef unsigned long ulong_t; ++typedef signed long slong_t; ++ ++ template ++ struct iterator_traits ++ { ++ typedef typename _Iterator::reference reference; ++ }; ++ ++ template ++ struct iterator_traits<_Tp*> ++ { ++ typedef _Tp& reference; ++ }; ++ ++ template ++ class __normal_iterator ++ { ++ protected: ++ _Iterator _M_current; ++ typedef iterator_traits<_Iterator> __traits_type; ++ ++ public: ++ typedef typename __traits_type::reference reference; ++ ++ explicit ++ __normal_iterator(const _Iterator& __i) : _M_current(__i) { } ++ ++ reference ++ operator*() const ++ { return *_M_current; } ++ ++ __normal_iterator& ++ operator++() ++ { ++ ++_M_current; ++ return *this; ++ } ++ ++ const _Iterator& ++ base() const ++ { return _M_current; } ++ }; ++ ++ template ++ inline bool ++ operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, ++ const __normal_iterator<_Iterator, _Container>& __rhs) ++ { return __lhs.base() != __rhs.base(); } ++ ++ template ++ class allocator ++ { ++ public: ++ typedef _Tp* pointer; ++ typedef _Tp value_type; ++ ++ template ++ struct rebind ++ { typedef allocator<_Tp1> other; }; ++ ++ pointer allocate(size_t __n, const void* = 0) ++ { ++ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); ++ } ++ }; ++ ++ template ++ struct _Vector_base ++ { ++ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; ++ ++ struct _Vector_impl ++ : public _Tp_alloc_type ++ { ++ typename _Tp_alloc_type::pointer _M_start; ++ typename _Tp_alloc_type::pointer _M_finish; ++ typename _Tp_alloc_type::pointer _M_end_of_storage; ++ ++ _Vector_impl(_Tp_alloc_type const& __a) { } ++ }; ++ ++ public: ++ typedef _Alloc allocator_type; ++ ++ _Vector_base(size_t __n, const allocator_type& __a) ++ : _M_impl(__a) ++ { ++ this->_M_impl._M_start = this->_M_allocate(__n); ++ this->_M_impl._M_finish = this->_M_impl._M_start; ++ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; ++ } ++ ++ public: ++ _Vector_impl _M_impl; ++ ++ typename _Tp_alloc_type::pointer ++ _M_allocate(size_t __n) ++ { return __n != 0 ? _M_impl.allocate(__n) : 0; } ++ ++ }; ++ ++ template > ++ class vector : protected _Vector_base<_Tp, _Alloc> ++ { ++ typedef _Vector_base<_Tp, _Alloc> _Base; ++ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; ++ ++ public: ++ typedef _Tp value_type; ++ typedef typename _Tp_alloc_type::pointer pointer; ++ typedef __normal_iterator iterator; ++ typedef _Alloc allocator_type; ++ ++ protected: ++ using _Base::_M_allocate; ++ using _Base::_M_impl; ++ ++ public: ++ ++ explicit ++ vector(size_t __n, const value_type& __value = value_type(), ++ const allocator_type& __a = allocator_type()) ++ : _Base(__n, __a) ++ { _M_fill_initialize(__n, __value); } ++ ++ iterator begin() ++ { return iterator(this->_M_impl._M_start); } ++ ++ iterator end() ++ { return iterator(this->_M_impl._M_finish); } ++ ++ protected: ++ void ++ _M_fill_initialize(size_t __n, const value_type& __value) ++ { ++ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage; ++ } ++ }; ++ ++ template ++ _OutputIterator ++ replace_copy(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, ++ const _Tp& __old_value, const _Tp& __new_value) ++ { ++ ; ++ for (; __first != __last; ++__first, ++__result) ++ if (*__first == __old_value) ++ *__result = __new_value; ++ else ++ *__result = *__first; ++ return __result; ++ } ++ ++extern size_t shape_rank; ++ ++void createDataspaceIdentifier() ++{ ++ vector< ulong_t > dataspaceDims( shape_rank ); ++ vector< ulong_t > maxDataspaceDims( shape_rank ); ++ ++ replace_copy( ++ dataspaceDims.begin(), dataspaceDims.end(), ++ maxDataspaceDims.begin(), ulong_t( 0 ), ((ulong_t)(slong_t)(-1)) ); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_parse_ambig6.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_parse_ambig6.C new file mode 100644 index 000000000..27ac2e297 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_parse_ambig6.C @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/parse/ambig6.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/parse/ambig6.C +@@ -0,0 +1,12 @@ ++// PR c++/48046 ++ ++namespace N1 { typedef int T; } // { dg-error "" } ++namespace N2 { typedef float T; } // { dg-error "" } ++ ++int main() ++{ ++ using namespace N1; ++ using namespace N2; ++ ++ static T t; // { dg-error "" } ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_pr48660.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_pr48660.C new file mode 100644 index 000000000..0da66a166 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_pr48660.C @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/pr48660.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/pr48660.C +@@ -0,0 +1,22 @@ ++template struct val { char a[N]; }; ++ ++class Base ++{ ++public: ++ virtual val<1> get1() const = 0; ++ virtual val<2> get2() const = 0; ++ virtual val<3> get3() const = 0; ++ virtual val<4> get4() const = 0; ++}; ++ ++class Derived : public virtual Base ++{ ++public: ++ virtual val<1> get1() const { return foo->get1(); } ++ virtual val<2> get2() const { return foo->get2(); } ++ virtual val<3> get3() const { return foo->get3(); } ++ virtual val<4> get4() const { return foo->get4(); } ++ Base *foo; ++}; ++ ++Base* make() { return new Derived; } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C new file mode 100644 index 000000000..dddd16a78 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_rtti_anon-ns1.C @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/rtti/anon-ns1.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/rtti/anon-ns1.C +@@ -0,0 +1,15 @@ ++// PR c++/49440 ++// The typeinfo name for A should start with * so we compare ++// it by address rather than contents. ++ ++// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE" } } ++ ++namespace ++{ ++ class A { }; ++} ++ ++void f() ++{ ++ throw A(); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_template_nontype23.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_template_nontype23.C new file mode 100644 index 000000000..e665334b9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_template_nontype23.C @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/template/nontype23.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/template/nontype23.C +@@ -0,0 +1,9 @@ ++// PR c++/48936 ++ ++template int foo (void); ++template struct S ++{ ++ static const unsigned int a = sizeof (T); ++ enum { c = sizeof (foo <(a == 0)> ()) }; ++}; ++S x; diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr47714.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr47714.C new file mode 100644 index 000000000..4ab7da18d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr47714.C @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr47714.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr47714.C +@@ -0,0 +1,16 @@ ++struct A { virtual ~A () {} }; ++struct B { virtual ~B () {} }; ++struct C { virtual const A *foo (int) const = 0; }; ++struct E : public B, public A { }; ++struct F : public C ++{ ++ virtual const E *foo (int) const; ++}; ++void bar (int &); ++ ++const E * ++F::foo (int x) const ++{ ++ bar (x); ++ return __null; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49039.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49039.C new file mode 100644 index 000000000..519453d01 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49039.C @@ -0,0 +1,81 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr49039.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr49039.C +@@ -0,0 +1,76 @@ ++// PR tree-optimization/49039 ++// { dg-do run } ++ ++template ++struct pair ++{ ++ T1 first; ++ T2 second; ++ pair (const T1 & a, const T2 & b):first (a), second (b) {} ++}; ++ ++template ++inline pair ++make_pair (T1 x, T2 y) ++{ ++ return pair (x, y); ++} ++ ++typedef __SIZE_TYPE__ size_t; ++struct S ++{ ++ const char *Data; ++ size_t Length; ++ static size_t min (size_t a, size_t b) { return a < b ? a : b; } ++ static size_t max (size_t a, size_t b) { return a > b ? a : b; } ++ S () :Data (0), Length (0) { } ++ S (const char *Str) : Data (Str), Length (__builtin_strlen (Str)) {} ++ S (const char *data, size_t length) : Data (data), Length (length) {} ++ bool empty () const { return Length == 0; } ++ size_t size () const { return Length; } ++ S slice (size_t Start, size_t End) const ++ { ++ Start = min (Start, Length); ++ End = min (max (Start, End), Length); ++ return S (Data + Start, End - Start); ++ } ++ pair split (char Separator) const ++ { ++ size_t Idx = find (Separator); ++ if (Idx == ~size_t (0)) ++ return make_pair (*this, S ()); ++ return make_pair (slice (0, Idx), slice (Idx + 1, ~size_t (0))); ++ } ++ size_t find (char C, size_t From = 0) const ++ { ++ for (size_t i = min (From, Length), e = Length; i != e; ++i) ++ if (Data[i] == C) ++ return i; ++ return ~size_t (0); ++ } ++}; ++ ++void ++Test (const char *arg) ++{ ++ S Desc (arg); ++ while (!Desc.empty ()) ++ { ++ pair Split = Desc.split ('-'); ++ S Token = Split.first; ++ Desc = Split.second; ++ if (Token.empty ()) ++ continue; ++ Split = Token.split (':'); ++ S Specifier = Split.first; ++ if (Specifier.empty ()) ++ __builtin_abort (); ++ } ++} ++ ++int ++main () ++{ ++ Test ("-"); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49115.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49115.C new file mode 100644 index 000000000..a7df2641c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49115.C @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr49115.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr49115.C +@@ -0,0 +1,25 @@ ++// { dg-do run } ++ ++extern "C" void abort (void); ++struct MyException {}; ++struct Data { ++ int nr; ++ Data() : nr(66) {} ++}; ++Data __attribute__((noinline,noclone)) getData(int i) ++{ ++ if (i) throw MyException(); ++ Data data; ++ data.nr = i; ++ return data; ++} ++int main(int, char **) ++{ ++ Data data; ++ try { ++ data = getData(1); ++ } catch (MyException& e) { ++ if (data.nr != 66) ++ abort (); ++ } ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49615.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49615.C new file mode 100644 index 000000000..27f9b390a --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49615.C @@ -0,0 +1,34 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr49615.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr49615.C +@@ -0,0 +1,29 @@ ++/* { dg-do compile } */ ++/* { dg-options "-g" } */ ++ ++template ++static inline bool Dispatch (T* obj, void (T::*func) ()) ++{ ++ (obj->*func) (); ++} ++class C ++{ ++ bool f (int); ++ void g (); ++}; ++bool C::f (int n) ++{ ++ bool b; ++ switch (n) ++ { ++ case 0: ++ b = Dispatch (this, &C::g); ++ case 1: ++ b = Dispatch (this, &C::g); ++ } ++} ++void C::g () ++{ ++ for (;;) { } ++} ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49644.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49644.C new file mode 100644 index 000000000..df0a8b4b0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr49644.C @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr49644.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr49644.C +@@ -0,0 +1,17 @@ ++// PR c/49644 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++main () ++{ ++ _Complex double a[12], *c = a, s = 3.0 + 1.0i; ++ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b; ++ int i; ++ for (i = 0; i < 6; i++) ++ *c++ = *d++ * s; ++ if (c != a + 6 || d != b + 6) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr50189.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr50189.C new file mode 100644 index 000000000..dae17c0c5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr50189.C @@ -0,0 +1,125 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr50189.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr50189.C +@@ -0,0 +1,120 @@ ++// { dg-do run } ++ ++extern "C" void abort (void); ++class CCUTILS_KeyedScalarLevelPosition ++{ ++public: ++ ++ typedef enum ++ { ++ UNINITED = 0, ++ AT_BEGIN = 1, ++ AT_END = 2, ++ AT_KEY = 3 ++ ++ } position_t; ++ ++ bool is_init() const ++ { return(m_timestamp != UNINITED); } ++ ++ bool is_at_begin() const ++ { return(m_timestamp == AT_BEGIN); } ++ ++ position_t get_state() const ++ { ++ return((m_timestamp >= AT_KEY) ++ ? AT_KEY ++ : ((position_t)m_timestamp)); ++ } ++ ++ void set_at_begin() ++ { m_timestamp = AT_BEGIN; } ++ ++ unsigned int get_index() const ++ { return(m_index); } ++ ++ void set_pos(unsigned int a_index, unsigned int a_timestmap) ++ { ++ m_index = a_index; ++ m_timestamp = a_timestmap; ++ } ++ ++ bool check_pos(unsigned int a_num_entries, unsigned int a_timestamp) const ++ { ++ if (get_state() != AT_KEY) ++ return(false); ++ ++ if (m_timestamp != a_timestamp) ++ return(false); ++ ++ return(m_index < a_num_entries); ++ } ++ ++ void set_not_init() ++ { m_timestamp = 0; } ++ ++private: ++ ++ unsigned int m_timestamp; ++ unsigned int m_index; ++ ++}; ++ ++class CCUTILS_KeyedScalarPosition ++{ ++public: ++ ++ CCUTILS_KeyedScalarLevelPosition m_L1; ++ CCUTILS_KeyedScalarLevelPosition m_L2; ++}; ++ ++class baz ++{ ++public: ++ int *n[20]; ++ unsigned int m_cur_array_len; ++ unsigned int m_timestamp; ++ ++ unsigned int _get_timestamp() const ++ { return(m_timestamp); } ++ ++ bool _check_L1_pos(const CCUTILS_KeyedScalarPosition &a_position) const ++ { ++ return(a_position.m_L1.check_pos( ++ m_cur_array_len, _get_timestamp())); ++ } ++ ++ void *next (CCUTILS_KeyedScalarPosition &); ++}; ++ ++void * baz::next (CCUTILS_KeyedScalarPosition &a_position) ++{ ++ if (a_position.m_L1.is_at_begin() || (!a_position.m_L1.is_init())) ++ { ++ a_position.m_L1.set_pos(0, _get_timestamp()); ++ a_position.m_L2.set_at_begin(); ++ } ++ else if (!_check_L1_pos(a_position)) ++ return(0); ++ ++ return n[a_position.m_L1.get_index ()]; ++} ++ ++int main (int, char **) ++{ ++ baz obj; ++ CCUTILS_KeyedScalarPosition a_pos; ++ void *ret; ++ int n[5]; ++ ++ obj.n[0] = n; ++ obj.m_cur_array_len = 1; ++ obj.m_timestamp = 42; ++ ++ a_pos.m_L1.set_pos (0, 42); ++ ++ ret = obj.next (a_pos); ++ if (ret == 0) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr51344.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr51344.C new file mode 100644 index 000000000..31ad78325 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_torture_pr51344.C @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/torture/pr51344.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/torture/pr51344.C +@@ -0,0 +1,11 @@ ++/* { dg-do compile { target { i?86-*-* && ilp32 } } } */ ++class A; ++ ++template ++class B ++{ ++ friend __attribute__((cdecl)) A& operator >>(A& a, B& b) ++ { ++ return a; ++ } ++}; diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C new file mode 100644 index 000000000..c21c71cf1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.dg_tree-ssa_pr49911.C @@ -0,0 +1,46 @@ +$NetBSD$ + +--- gcc/testsuite/g++.dg/tree-ssa/pr49911.C.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/g++.dg/tree-ssa/pr49911.C +@@ -0,0 +1,41 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-rtti -fno-exceptions -fno-strict-aliasing -fdump-tree-vrp2" } */ ++ ++ ++extern void JS_Assert(); ++typedef enum { ++eax, ecx, edx, ebx, esp, ebp, ++esi, edi } ++RegisterID; ++union StateRemat { ++ RegisterID reg_; ++ int offset_; ++}; ++static StateRemat FromRegister(RegisterID reg) { ++ StateRemat sr; ++ sr.reg_ = reg; ++ return sr; ++} ++static StateRemat FromAddress3(int address) { ++ StateRemat sr; ++ sr.offset_ = address; ++ //sr.offset_ = 0; ++ if (address < 46 && address >= 0) { ++ JS_Assert(); ++ } ++ return sr; ++} ++struct FrameState { ++ StateRemat dataRematInfo2(bool y, int z) { ++ if (y) return FromRegister(RegisterID(1)); ++ return FromAddress3(z); ++ } ++}; ++FrameState frame; ++StateRemat x; ++void jsop_setelem(bool y, int z) { ++ x = frame.dataRematInfo2(y, z); ++} ++ ++/* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */ ++/* { dg-final { cleanup-tree-dump "vrp2" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_g++.old-deja_g++.oliva_ChangeLog b/lang/gcc45/patches/patch-gcc_testsuite_g++.old-deja_g++.oliva_ChangeLog new file mode 100644 index 000000000..e98885b0d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_g++.old-deja_g++.oliva_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog.orig Thu Apr 28 14:12:05 2011 ++++ gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_limits-externdecl. b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_limits-externdecl. new file mode 100644 index 000000000..c293a6aff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_limits-externdecl. @@ -0,0 +1,61 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c +@@ -0,0 +1,56 @@ ++/* Inspired by the test case for PR middle-end/52640. */ ++ ++typedef struct ++{ ++ char *value; ++} REFERENCE; ++ ++/* Add a few "extern int Xxxxxx ();" declarations. */ ++#undef DEF ++#undef LIM1 ++#undef LIM2 ++#undef LIM3 ++#undef LIM4 ++#undef LIM5 ++#undef LIM6 ++#define DEF(x) extern int x () ++#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \ ++ DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9); ++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \ ++ LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9) ++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \ ++ LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9) ++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \ ++ LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9) ++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \ ++ LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9) ++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \ ++ LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9) ++LIM5 (X); ++ ++/* Add references to them, or GCC will simply ignore the extern decls. */ ++#undef DEF ++#undef LIM1 ++#undef LIM2 ++#undef LIM3 ++#undef LIM4 ++#undef LIM5 ++#undef LIM6 ++#define DEF(x) (char *) x ++#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \ ++ DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9), ++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \ ++ LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9) ++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \ ++ LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9) ++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \ ++ LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9) ++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \ ++ LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9) ++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \ ++ LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9) ++REFERENCE references[] = { ++ LIM5 (X) ++ 0 ++}; ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr38752.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr38752.c new file mode 100644 index 000000000..584137fa5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr38752.c @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr38752.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr38752.c +@@ -0,0 +1,25 @@ ++typedef struct ++{ ++ int baddr; ++} mstruct_t; ++ ++static struct ++{ ++ unsigned int mapnum; ++ mstruct_t unused; ++} mtab; ++ ++static mstruct_t *mactab = &mtab.unused; ++ ++int ++main(void) ++{ ++ int i; ++ int addr; ++ ++ for (i=1; i <= mtab.mapnum; i++) ++ if (addr < mactab[i].baddr) ++ break; ++ return 0; ++} ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr48742.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr48742.c new file mode 100644 index 000000000..3ae61e464 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr48742.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr48742.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr48742.c +@@ -0,0 +1,15 @@ ++/* PR c/48742 */ ++ ++void baz (int); ++ ++int ++foo (void) ++{ ++ return 1 / 0 > 0; ++} ++ ++void ++bar (void) ++{ ++ baz (1 <= 2 % (3 >> 1 > 5 / 6 == 3)); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr49238.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr49238.c new file mode 100644 index 000000000..91d6ee313 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr49238.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr49238.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr49238.c +@@ -0,0 +1,18 @@ ++/* PR target/49238 */ ++extern int bar (void); ++ ++void ++foo (unsigned long long a, int b) ++{ ++ int i; ++ ++ if (b) ++ for (a = -12; a >= 10; a = bar ()) ++ break; ++ else ++ return; ++ ++ for (i = 0; i < 10; i += 10) ++ if ((i == bar ()) | (bar () >= a)) ++ bar (); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-1.c new file mode 100644 index 000000000..f0f788342 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-1.c @@ -0,0 +1,9 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr50565-1.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr50565-1.c +@@ -0,0 +1,4 @@ ++struct s { char p[2]; }; ++static struct s v; ++const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0U; ++const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1U; diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-2.c new file mode 100644 index 000000000..0a22f54c2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr50565-2.c @@ -0,0 +1,9 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr50565-2.c.orig Wed May 21 19:48:57 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr50565-2.c +@@ -0,0 +1,4 @@ ++struct s { char p[2]; }; ++static struct s v; ++const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0; ++const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1; diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr51767.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr51767.c new file mode 100644 index 000000000..c91aa37f7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr51767.c @@ -0,0 +1,28 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr51767.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr51767.c +@@ -0,0 +1,23 @@ ++/* PR rtl-optimization/51767 */ ++ ++extern void fn1 (void), fn2 (void); ++ ++static inline __attribute__((always_inline)) int ++foo (int *x, long y) ++{ ++ asm goto ("" : : "r" (x), "r" (y) : "memory" : lab); ++ return 0; ++lab: ++ return 1; ++} ++ ++void ++bar (int *x) ++{ ++ if (foo (x, 23)) ++ fn1 (); ++ else ++ fn2 (); ++ ++ foo (x, 2); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-1.c new file mode 100644 index 000000000..5370afa60 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-1.c @@ -0,0 +1,10 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr53418-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr53418-1.c +@@ -0,0 +1,5 @@ ++void ++f (void) ++{ ++ int i = (0 ? 1 : 0U / 0); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-2.c new file mode 100644 index 000000000..51dbb728b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_compile_pr53418-2.c @@ -0,0 +1,10 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/compile/pr53418-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/compile/pr53418-2.c +@@ -0,0 +1,5 @@ ++void ++f (void) ++{ ++ int i = (1 ? 0U / 0 : 1); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120111-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120111-1.c new file mode 100644 index 000000000..c1fa4c6ca --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120111-1.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/20120111-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/20120111-1.c +@@ -0,0 +1,18 @@ ++#include ++#include ++ ++uint32_t f0a (uint64_t arg2) __attribute__((noinline)); ++ ++uint32_t ++f0a (uint64_t arg) ++{ ++ return ~(arg > -3); ++} ++ ++int main() { ++ uint32_t r1; ++ r1 = f0a (12094370573988097329ULL); ++ if (r1 != ~0U) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120427-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120427-1.c new file mode 100644 index 000000000..565379f22 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_20120427-1.c @@ -0,0 +1,41 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/20120427-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/20120427-1.c +@@ -0,0 +1,36 @@ ++typedef struct sreal ++{ ++ unsigned sig; /* Significant. */ ++ int exp; /* Exponent. */ ++} sreal; ++ ++sreal_compare (sreal *a, sreal *b) ++{ ++ if (a->exp > b->exp) ++ return 1; ++ if (a->exp < b->exp) ++ return -1; ++ if (a->sig > b->sig) ++ return 1; ++ return -(a->sig < b->sig); ++} ++ ++sreal a[] = { ++ { 0, 0 }, ++ { 1, 0 }, ++ { 0, 1 }, ++ { 1, 1 } ++}; ++ ++int main() ++{ ++ int i, j; ++ for (i = 0; i <= 3; i++) { ++ for (j = 0; j < 3; j++) { ++ if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort(); ++ if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort(); ++ if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort(); ++ } ++ } ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_960321-1.x b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_960321-1.x new file mode 100644 index 000000000..19ed01a6f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_960321-1.x @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/960321-1.x.orig Mon Jun 7 21:15:05 2010 ++++ gcc/testsuite/gcc.c-torture/execute/960321-1.x +@@ -1,15 +0,0 @@ +-# This test fails to link on 64-bit Solaris 2/x86 due to a Sun as bug. +-if { [istarget "i?86-*-solaris2*"] +- && ! [check_effective_target_ilp32] +- && ! [check_effective_target_gas] } { +- set torture_eval_before_compile { +- global compiler_conditional_xfail_data +- set compiler_conditional_xfail_data { +- "64-bit Sun as bug" \ +- { "i?86-*-solaris2*" } \ +- { "-O[1-3s]" } \ +- { "" } +- } +- } +-} +-return 0 diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-1.c new file mode 100644 index 000000000..531132395 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-1.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/doloop-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/doloop-1.c +@@ -0,0 +1,18 @@ ++#include ++ ++extern void exit (int); ++extern void abort (void); ++ ++volatile unsigned int i; ++ ++int ++main (void) ++{ ++ unsigned char z = 0; ++ ++ do ++i; ++ while (--z > 0); ++ if (i != UCHAR_MAX + 1U) ++ abort (); ++ exit (0); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-2.c new file mode 100644 index 000000000..73531b9fb --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_doloop-2.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/doloop-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/doloop-2.c +@@ -0,0 +1,18 @@ ++#include ++ ++extern void exit (int); ++extern void abort (void); ++ ++volatile unsigned int i; ++ ++int ++main (void) ++{ ++ unsigned short z = 0; ++ ++ do ++i; ++ while (--z > 0); ++ if (i != USHRT_MAX + 1U) ++ abort (); ++ exit (0); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48809.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48809.c new file mode 100644 index 000000000..9db1a1613 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48809.c @@ -0,0 +1,65 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr48809.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr48809.c +@@ -0,0 +1,60 @@ ++/* PR tree-optimization/48809 */ ++ ++extern void abort (void); ++ ++int ++foo (signed char x) ++{ ++ int y = 0; ++ switch (x) ++ { ++ case 0: y = 1; break; ++ case 1: y = 7; break; ++ case 2: y = 2; break; ++ case 3: y = 19; break; ++ case 4: y = 5; break; ++ case 5: y = 17; break; ++ case 6: y = 31; break; ++ case 7: y = 8; break; ++ case 8: y = 28; break; ++ case 9: y = 16; break; ++ case 10: y = 31; break; ++ case 11: y = 12; break; ++ case 12: y = 15; break; ++ case 13: y = 111; break; ++ case 14: y = 17; break; ++ case 15: y = 10; break; ++ case 16: y = 31; break; ++ case 17: y = 7; break; ++ case 18: y = 2; break; ++ case 19: y = 19; break; ++ case 20: y = 5; break; ++ case 21: y = 107; break; ++ case 22: y = 31; break; ++ case 23: y = 8; break; ++ case 24: y = 28; break; ++ case 25: y = 106; break; ++ case 26: y = 31; break; ++ case 27: y = 102; break; ++ case 28: y = 105; break; ++ case 29: y = 111; break; ++ case 30: y = 17; break; ++ case 31: y = 10; break; ++ case 32: y = 31; break; ++ case 98: y = 18; break; ++ case -62: y = 19; break; ++ } ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (98) != 18 || foo (97) != 0 || foo (99) != 0) ++ abort (); ++ if (foo (-62) != 19 || foo (-63) != 0 || foo (-61) != 0) ++ abort (); ++ if (foo (28) != 105 || foo (27) != 102 || foo (29) != 111) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-1.c new file mode 100644 index 000000000..12060708f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-1.c @@ -0,0 +1,25 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr48973-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr48973-1.c +@@ -0,0 +1,20 @@ ++/* PR middle-end/48973 */ ++ ++extern void abort (void); ++struct S { int f : 1; } s; ++int v = -1; ++ ++void ++foo (unsigned int x) ++{ ++ if (x != -1U) ++ abort (); ++} ++ ++int ++main () ++{ ++ s.f = (v & 1) > 0; ++ foo (s.f); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-2.c new file mode 100644 index 000000000..fd271f08f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr48973-2.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr48973-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr48973-2.c +@@ -0,0 +1,14 @@ ++/* PR middle-end/48973 */ ++ ++extern void abort (void); ++struct S { int f : 1; } s; ++int v = -1; ++ ++int ++main () ++{ ++ s.f = v < 0; ++ if ((unsigned int) s.f != -1U) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49039.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49039.c new file mode 100644 index 000000000..e088b1828 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49039.c @@ -0,0 +1,31 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr49039.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr49039.c +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/49039 */ ++extern void abort (void); ++int cnt; ++ ++__attribute__((noinline, noclone)) void ++foo (unsigned int x, unsigned int y) ++{ ++ unsigned int minv, maxv; ++ if (x == 1 || y == -2U) ++ return; ++ minv = x < y ? x : y; ++ maxv = x > y ? x : y; ++ if (minv == 1) ++ ++cnt; ++ if (maxv == -2U) ++ ++cnt; ++} ++ ++int ++main () ++{ ++ foo (-2U, 1); ++ if (cnt != 2) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49161.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49161.c new file mode 100644 index 000000000..93887eeaa --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49161.c @@ -0,0 +1,51 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr49161.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr49161.c +@@ -0,0 +1,46 @@ ++/* PR tree-optimization/49161 */ ++ ++extern void abort (void); ++ ++int c; ++ ++__attribute__((noinline, noclone)) void ++bar (int x) ++{ ++ if (x != c++) ++ abort (); ++} ++ ++__attribute__((noinline, noclone)) void ++foo (int x) ++{ ++ switch (x) ++ { ++ case 3: goto l1; ++ case 4: goto l2; ++ case 6: goto l3; ++ default: return; ++ } ++l1: ++ goto l4; ++l2: ++ goto l4; ++l3: ++ bar (-1); ++l4: ++ bar (0); ++ if (x != 4) ++ bar (1); ++ if (x != 3) ++ bar (-1); ++ bar (2); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (c != 3) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49186.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49186.c new file mode 100644 index 000000000..479d5c0bb --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49186.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr49186.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr49186.c +@@ -0,0 +1,15 @@ ++/* PR target/49186 */ ++extern void abort (void); ++ ++int ++main () ++{ ++ int x; ++ unsigned long long uv = 0x1000000001ULL; ++ ++ x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3); ++ if (x != 3) ++ abort (); ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49279.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49279.c new file mode 100644 index 000000000..71586c344 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49279.c @@ -0,0 +1,40 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr49279.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr49279.c +@@ -0,0 +1,35 @@ ++/* PR tree-optimization/49279 */ ++extern void abort (void); ++ ++struct S { int a; int *__restrict p; }; ++ ++__attribute__((noinline, noclone)) ++struct S *bar (struct S *p) ++{ ++ struct S *r; ++ asm volatile ("" : "=r" (r) : "0" (p) : "memory"); ++ return r; ++} ++ ++__attribute__((noinline, noclone)) ++int ++foo (int *p, int *q) ++{ ++ struct S s, *t; ++ s.a = 1; ++ s.p = p; ++ t = bar (&s); ++ t->p = q; ++ s.p[0] = 0; ++ t->p[0] = 1; ++ return s.p[0]; ++} ++ ++int ++main () ++{ ++ int a, b; ++ if (foo (&a, &b) != 1) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49644.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49644.c new file mode 100644 index 000000000..ab16e84ce --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.c-torture_execute_pr49644.c @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.c-torture/execute/pr49644.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.c-torture/execute/pr49644.c +@@ -0,0 +1,16 @@ ++/* PR c/49644 */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++ _Complex double a[12], *c = a, s = 3.0 + 1.0i; ++ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b; ++ int i; ++ for (i = 0; i < 6; i++) ++ *c++ = *d++ * s; ++ if (c != a + 6 || d != b + 6) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h new file mode 100644 index 000000000..8a487e57f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_cpp_#cmdlne-M-2.h @@ -0,0 +1,6 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h.orig Thu Mar 6 18:08:40 2008 ++++ gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h +@@ -1 +0,0 @@ +-/* empty */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_delay-slot-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_delay-slot-2.c new file mode 100644 index 000000000..46ff5716b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_delay-slot-2.c @@ -0,0 +1,121 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/delay-slot-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/delay-slot-2.c +@@ -0,0 +1,116 @@ ++/* PR rtl-optimization/51187 */ ++/* Reported by Jurij Smakov */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-g -O2" } */ ++ ++extern int printf (__const char *__restrict __format, ...); ++extern void print_c_condition (const char *); ++ ++enum decision_type ++{ ++ DT_num_insns, ++ DT_mode, DT_code, DT_veclen, ++ DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe, ++ DT_const_int, ++ DT_veclen_ge, DT_dup, DT_pred, DT_c_test, ++ DT_accept_op, DT_accept_insn ++}; ++ ++struct decision_test ++{ ++ struct decision_test *next; ++ enum decision_type type; ++ ++ union ++ { ++ int num_insns; ++ ++ struct ++ { ++ const char *name; ++ } pred; ++ ++ const char *c_test; ++ int veclen; ++ int dup; ++ long intval; ++ int opno; ++ ++ struct { ++ int code_number; ++ int lineno; ++ int num_clobbers_to_add; ++ } insn; ++ } u; ++}; ++ ++enum routine_type { ++ RECOG, SPLIT, PEEPHOLE2 ++}; ++ ++void ++write_cond (struct decision_test *p, int depth, ++ enum routine_type subroutine_type) ++{ ++ switch (p->type) ++ { ++ case DT_num_insns: ++ printf ("peep2_current_count >= %d", p->u.num_insns); ++ break; ++ ++ case DT_code: ++ printf ("GET_CODE (x%d) == ", depth); ++ break; ++ ++ case DT_veclen: ++ printf ("XVECLEN (x%d, 0) == %d", depth, p->u.veclen); ++ break; ++ ++ case DT_elt_zero_int: ++ printf ("XINT (x%d, 0) == %d", depth, (int) p->u.intval); ++ break; ++ ++ case DT_elt_one_int: ++ printf ("XINT (x%d, 1) == %d", depth, (int) p->u.intval); ++ break; ++ ++ case DT_elt_zero_wide: ++ case DT_elt_zero_wide_safe: ++ printf ("XWINT (x%d, 0) == ", depth); ++ print_host_wide_int (p->u.intval); ++ break; ++ ++ case DT_const_int: ++ printf ("x%d == const_int_rtx[MAX_SAVED_CONST_INT + (%d)]", ++ depth, (int) p->u.intval); ++ break; ++ ++ case DT_veclen_ge: ++ printf ("XVECLEN (x%d, 0) >= %d", depth, p->u.veclen); ++ break; ++ ++ case DT_dup: ++ printf ("rtx_equal_p (x%d, operands[%d])", depth, p->u.dup); ++ break; ++ ++ case DT_pred: ++ printf ("%s (x%d)", p->u.pred.name, depth); ++ break; ++ ++ case DT_c_test: ++ print_c_condition (p->u.c_test); ++ break; ++ ++ case DT_accept_insn: ++ ((void)(__builtin_expect(!(subroutine_type == RECOG), 0) ? __builtin_unreachable(), 0 : 0)); ++ ((void)(__builtin_expect(!(p->u.insn.num_clobbers_to_add), 0) ? __builtin_unreachable(), 0 : 0)); ++ printf ("pnum_clobbers != NULL"); ++ break; ++ ++ default: ++ __builtin_unreachable(); ++ } ++} ++ ++/* { dg-final { scan-assembler "printf" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_dfp_pr52140.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_dfp_pr52140.c new file mode 100644 index 000000000..965491dde --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_dfp_pr52140.c @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/dfp/pr52140.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/dfp/pr52140.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1" } */ ++ ++/* This used to result in an ICE. */ ++ ++int ++foo (_Decimal64 x, _Decimal64 y) ++{ ++ return (x < y) || (x > y); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_gomp_pr49640.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_gomp_pr49640.c new file mode 100644 index 000000000..263f4e851 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_gomp_pr49640.c @@ -0,0 +1,34 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/gomp/pr49640.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/gomp/pr49640.c +@@ -0,0 +1,29 @@ ++/* PR middle-end/49640 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -std=gnu99 -fopenmp" } */ ++ ++void ++foo (int N, int M, int K, int P, int Q, int R, int i, int j, int k, ++ unsigned char x[P][Q][R], int y[N][M][K]) ++{ ++ int ii, jj, kk; ++ ++#pragma omp parallel for private(ii,jj,kk) ++ for (ii = 0; ii < P; ++ii) ++ for (jj = 0; jj < Q; ++jj) ++ for (kk = 0; kk < R; ++kk) ++ y[i + ii][j + jj][k + kk] = x[ii][jj][kk]; ++} ++ ++void ++bar (int N, int M, int K, int P, int Q, int R, int i, int j, int k, ++ unsigned char x[P][Q][R], float y[N][M][K], float factor, float zero) ++{ ++ int ii, jj, kk; ++ ++#pragma omp parallel for private(ii,jj,kk) ++ for (ii = 0; ii < P; ++ii) ++ for (jj = 0; jj < Q; ++jj) ++ for (kk = 0; kk < R; ++kk) ++ y[i + ii][j + jj][k + kk] = factor * x[ii][jj][kk] + zero; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_ipa_pr45644.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_ipa_pr45644.c new file mode 100644 index 000000000..bc3e51a8f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_ipa_pr45644.c @@ -0,0 +1,40 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/ipa/pr45644.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/ipa/pr45644.c +@@ -0,0 +1,35 @@ ++/* Verify that we do not IPA-SRA bitfields. */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++extern void abort (void); ++ ++struct S ++{ ++ int j : 8; ++ int i : 24; ++ int l; ++}; ++ ++static int __attribute__((noinline)) foo (struct S *s) ++{ ++ int z = s->i; ++ if (z != 777) ++ abort (); ++ return 0; ++} ++ ++int __attribute__((noinline)) bar (struct S *s) ++{ ++ return foo (s); ++} ++ ++int main (int argc, char *argv[]) ++{ ++ struct S s; ++ s.j = 5; ++ s.i = 777; ++ s.l = -1; ++ ++ return bar (&s); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_noncompile_pr52290.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_noncompile_pr52290.c new file mode 100644 index 000000000..01036ea63 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_noncompile_pr52290.c @@ -0,0 +1,8 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/noncompile/pr52290.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/noncompile/pr52290.c +@@ -0,0 +1,3 @@ ++/* { dg-error "undeclared here" "" { target *-*-* } 3 } */ ++/* { dg-error "expected" "" { target *-*-* } 3 } */ ++int f()[j] diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48685.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48685.c new file mode 100644 index 000000000..ca8d2a209 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48685.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr48685.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr48685.c +@@ -0,0 +1,11 @@ ++/* PR c/48685 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++main () ++{ ++ int v = 1; ++ (void) (1 == 2 ? (void) 0 : (v = 0)); ++ return v; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48774.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48774.c new file mode 100644 index 000000000..ebd8ca2c1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48774.c @@ -0,0 +1,43 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr48774.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr48774.c +@@ -0,0 +1,38 @@ ++/* PR target/48774 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -funroll-loops" } */ ++ ++extern void abort (void); ++unsigned long int s[24] ++ = { 12, ~1, 12, ~2, 12, ~4, 12, ~8, 12, ~16, 12, ~32, ++ 12, ~64, 12, ~128, 12, ~256, 12, ~512, 12, ~1024, 12, ~2048 }; ++struct { int n; unsigned long *e[12]; } g ++ = { 12, { &s[0], &s[2], &s[4], &s[6], &s[8], &s[10], &s[12], &s[14], ++ &s[16], &s[18], &s[20], &s[22] } }; ++int c[12]; ++ ++__attribute__((noinline, noclone)) void ++foo (void) ++{ ++ int i, j; ++ for (i = 0; i < g.n; i++) ++ for (j = 0; j < g.n; j++) ++ { ++ if (i == j && j < g.e[0][0] && (g.e[i][1] & (1UL << j))) ++ abort (); ++ if (j < g.e[0][0] && (g.e[i][1] & (1UL << j))) ++ c[i]++; ++ } ++} ++ ++int ++main () ++{ ++ int i; ++ asm volatile ("" : "+m" (s), "+m" (g), "+m" (c)); ++ foo (); ++ for (i = 0; i < 12; i++) ++ if (c[i] != 11) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48837.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48837.c new file mode 100644 index 000000000..1186bbc2d --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr48837.c @@ -0,0 +1,35 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr48837.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr48837.c +@@ -0,0 +1,30 @@ ++/* PR tree-optimization/48837 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++void abort (void); ++ ++__attribute__((noinline)) ++int baz(void) ++{ ++ return 1; ++} ++ ++inline const int *bar(const int *a, const int *b) ++{ ++ return *a ? a : b; ++} ++ ++int foo(int a, int b) ++{ ++ return a || b ? baz() : foo(*bar(&a, &b), 1) + foo(1, 0); ++} ++ ++int main(void) ++{ ++ if (foo(0, 0) != 2) ++ abort(); ++ ++ return 0; ++} ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49120.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49120.c new file mode 100644 index 000000000..0f7432884 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49120.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr49120.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr49120.c +@@ -0,0 +1,11 @@ ++/* PR c/49120 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wall" } */ ++ ++int ++main () ++{ ++ int a = 1; ++ int c = ({ char b[a + 1]; b[0] = 0; b[0]; }); ++ return c; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49307.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49307.c new file mode 100644 index 000000000..76b42d8fd --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49307.c @@ -0,0 +1,26 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr49307.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr49307.c +@@ -0,0 +1,21 @@ ++/* PR target/49307 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fpic -fstack-protector" } */ ++/* { dg-require-effective-target fpic } */ ++/* { dg-require-effective-target fstack_protector } */ ++ ++extern void bar (char **pp, void *vp); ++extern void free (void *p); ++ ++int ++foo (void) ++{ ++ char *p; ++ char fext[128]; ++ ++ p = fext; ++ bar (&p, (void *)0); ++ if (p) ++ free (p); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49619.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49619.c new file mode 100644 index 000000000..c7f13db69 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr49619.c @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr49619.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr49619.c +@@ -0,0 +1,13 @@ ++/* PR rtl-optimization/49619 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-fre" } */ ++ ++extern int a, b; ++ ++void ++foo (int x) ++{ ++ a = 2; ++ b = 0; ++ b = (a && ((a = 1, 0 >= b) || (short) (x + (b & x)))); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51408.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51408.c new file mode 100644 index 000000000..21edc1fc8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51408.c @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr51408.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr51408.c +@@ -0,0 +1,22 @@ ++/* This testcase used to fail because of a bug in ++ arm.md:*minmax_arithsi. */ ++ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++extern void abort (void); ++ ++int __attribute__((noinline)) ++foo (int a, int b) ++{ ++ int max = (b > 0) ? b : 0; ++ return max - a; ++} ++ ++int ++main (void) ++{ ++ if (foo (3, -1) != -3) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51821.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51821.c new file mode 100644 index 000000000..11581f78e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr51821.c @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr51821.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr51821.c +@@ -0,0 +1,25 @@ ++/* { dg-do run } */ ++/* { dg-options "-std=c99 -O2" } */ ++/* { dg-options "-std=c99 -O2 -msse" { target { i?86-*-* x86_64-*-* } } } */ ++/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */ ++ ++extern void abort (void); ++ ++unsigned int __attribute__((noinline)) ++test (int shift_size) ++{ ++ unsigned long long res = ~0; ++ ++ return res << shift_size; ++} ++ ++int ++main () ++{ ++ int dst = 32; ++ ++ if (test (dst) != 0) ++ abort (); ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr52139.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr52139.c new file mode 100644 index 000000000..e744c83dc --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_pr52139.c @@ -0,0 +1,54 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/pr52139.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/pr52139.c +@@ -0,0 +1,49 @@ ++/* PR rtl-optimization/52139 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre" } */ ++/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre -fpic" { target fpic } } */ ++ ++void *p; ++ ++void ++foo (int a) ++{ ++ switch (a) ++ { ++ case 0: ++ a0: ++ case 1: ++ a1: ++ p = &&a1; ++ case 2: ++ a2: ++ p = &&a2; ++ case 3: ++ a3: ++ p = &&a3; ++ case 4: ++ a4: ++ p = &&a4; ++ case 5: ++ a5: ++ p = &&a5; ++ case 6: ++ a6: ++ p = &&a6; ++ case 7: ++ a7: ++ p = &&a7; ++ case 8: ++ a8: ++ p = &&a8; ++ case 9: ++ a9: ++ p = &&a9; ++ case 10: ++ a10: ++ p = &&a10; ++ default: ++ p = &&a0; ++ } ++ goto *p; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48542.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48542.c new file mode 100644 index 000000000..a00c5ff89 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48542.c @@ -0,0 +1,62 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr48542.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr48542.c +@@ -0,0 +1,57 @@ ++/* { dg-do run } */ ++/* The return-address was clobbered. */ ++#include ++#include ++ ++jmp_buf env; ++extern void sub(void); ++extern void sub3(void); ++int called; ++__attribute__ ((__noinline__)) ++int sjtest() ++{ ++ int i; ++ if (setjmp(env)) ++ return 99; ++ ++ for (i = 0; i < 10; i++) ++ sub(); ++ ++ longjmp(env, 1); ++} ++ ++__attribute__ ((__noinline__)) ++void sub(void) ++{ ++ called++; ++} ++ ++int called3; ++__attribute__ ((__noinline__)) ++int sjtest3() ++{ ++ int i; ++ if (setjmp(env)) ++ return 42; ++ ++ for (i = 0; i < 10; i++) ++ sub3(); ++ return 0; ++} ++ ++__attribute__ ((__noinline__)) ++void sub3(void) ++{ ++ called3++; ++ if (called3 == 10) ++ longjmp (env, 1); ++} ++ ++int main(void) ++{ ++ if (sjtest() != 99 || called != 10) ++ abort(); ++ if (sjtest3() != 42 || called3 != 10) ++ abort(); ++ exit (0); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48822.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48822.c new file mode 100644 index 000000000..4a64094c6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr48822.c @@ -0,0 +1,25 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr48822.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr48822.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++ ++void foo (int *, int *); ++int bar () ++{ ++ int a = 0; ++ int b = 0; ++ if (b != 0) ++ { ++ int ax = a; ++ int bx = b; ++ while (bx != 0) ++ { ++ int tem = ax % bx; ++ ax = bx; ++ bx = tem; ++ } ++ } ++ foo (&a, &b); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr49651.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr49651.c new file mode 100644 index 000000000..251cd7782 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr49651.c @@ -0,0 +1,36 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr49651.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr49651.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++struct X { ++ int *p; ++ int *q; ++}; ++ ++void __attribute__((noinline, noclone)) ++foo (struct X x) { *x.q = 0; } ++ ++volatile int what; ++struct X y; ++ ++int main() ++{ ++ int i, j; ++ struct X x, *p; ++ x.p = &i; ++ x.q = &j; ++ if (what) ++ p = &y; ++ else ++ p = &x; ++ j = 1; ++ foo (*p); ++ if (j != 0) ++ abort (); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-1.c new file mode 100644 index 000000000..63fa37428 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-1.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr51106-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr51106-1.c +@@ -0,0 +1,14 @@ ++/* PR target/51106 */ ++/* { dg-do "compile" } */ ++/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */ ++ ++int ++foo (int x) ++{ ++ asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */ ++ return 1; ++lab: ++ return 0; ++} ++ ++/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-2.c new file mode 100644 index 000000000..e9ebf83f8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr51106-2.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr51106-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr51106-2.c +@@ -0,0 +1,14 @@ ++/* PR target/51106 */ ++/* { dg-do "compile" } */ ++/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */ ++ ++int ++bar (int x) ++{ ++ asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */ ++ __builtin_unreachable (); ++lab: ++ return 0; ++} ++ ++/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr52693.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr52693.c new file mode 100644 index 000000000..981c46fda --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_torture_pr52693.c @@ -0,0 +1,38 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/torture/pr52693.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/torture/pr52693.c +@@ -0,0 +1,33 @@ ++/* { dg-do run } */ ++ ++struct pair ++{ ++ int x; ++ int y; ++}; ++ ++struct array ++{ ++ struct pair elems[ 2 ]; ++ unsigned index; ++}; ++ ++extern void abort (); ++ ++void __attribute__ ((noinline,noclone)) ++test_results (int x1, int y1, int x2, int y2) ++{ ++ if (x1 != x2 || y1 != y2) ++ abort (); ++} ++ ++int ++main (void) ++{ ++ struct array arr = {{{1,2}, {3,4}}, 1}; ++ struct pair last = arr.elems[arr.index]; ++ ++ test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y); ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-prof_pr44777.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-prof_pr44777.c new file mode 100644 index 000000000..f327745e8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-prof_pr44777.c @@ -0,0 +1,48 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/tree-prof/pr44777.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/tree-prof/pr44777.c +@@ -0,0 +1,43 @@ ++/* PR middle-end/44777 */ ++/* { dg-options "-O0" } */ ++/* A variant of gcc.c-torture/execute/comp-goto-2.c. */ ++ ++extern void abort (void); ++extern void exit (int); ++ ++#ifdef STACK_SIZE ++#define DEPTH ((STACK_SIZE) / 512 + 1) ++#else ++#define DEPTH 1000 ++#endif ++ ++#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) ++int ++x (int a) ++{ ++ __label__ xlab; ++ void y (int a) ++ { ++ void *x = &&llab; ++ if (a==-1) ++ goto *x; ++ if (a==0) ++ goto xlab; ++ llab: ++ y (a-1); ++ } ++ y (a); ++ xlab:; ++ return a; ++} ++#endif ++ ++int ++main () ++{ ++#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) ++ if (x (DEPTH) != DEPTH) ++ abort (); ++#endif ++ exit (0); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c new file mode 100644 index 000000000..874512e41 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_tree-ssa_pr49039.c @@ -0,0 +1,36 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/tree-ssa/pr49039.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/tree-ssa/pr49039.c +@@ -0,0 +1,31 @@ ++/* PR tree-optimization/49039 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-vrp1" } */ ++ ++extern void bar (void); ++ ++void ++foo (unsigned int x, unsigned int y) ++{ ++ unsigned int minv, maxv; ++ if (x >= 3 && x <= 6) ++ return; ++ if (y >= 5 && y <= 8) ++ return; ++ minv = x < y ? x : y; ++ maxv = x > y ? x : y; ++ if (minv == 5) ++ bar (); ++ if (minv == 6) ++ bar (); ++ if (maxv == 5) ++ bar (); ++ if (maxv == 6) ++ bar (); ++} ++ ++/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 5 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 6 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 5 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 6 to 0" "vrp1" } } */ ++/* { dg-final { cleanup-tree-dump "vrp1" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr48172.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr48172.c new file mode 100644 index 000000000..145277f24 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr48172.c @@ -0,0 +1,38 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/vect/pr48172.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/vect/pr48172.c +@@ -0,0 +1,33 @@ ++/* { dg-do run } */ ++ ++extern void *memset(void *s, int c, __SIZE_TYPE__ n); ++extern void abort (void); ++ ++#define ASIZE 1028 ++#define HALF (ASIZE/2) ++ ++int main() { ++ unsigned int array[ASIZE]; ++ int i; ++ ++ memset(array, 0, sizeof(array)); ++ ++ /* initialize first half of the array */ ++ for (i = 0; i < HALF; i++) ++ array[i] = i; ++ ++ /* fill second half of array in by summing earlier elements of the array ++ gcc 4.5.1 and 4.5.2 incorrectly vectorize this loop! aray[1025] is left ++ at 0 for ASIZE=1028 */ ++ for (i = 0; i < HALF-1; i++) ++ array[HALF+i] = array[2*i] + array[2*i + 1]; ++ ++ /* see if we have any failures */ ++ for (i = 0; i < HALF - 1; i++) ++ if (array[HALF+i] != array[2*i] + array[2*i + 1]) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr49038.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr49038.c new file mode 100644 index 000000000..b65fec21f --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_pr49038.c @@ -0,0 +1,47 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/vect/pr49038.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/vect/pr49038.c +@@ -0,0 +1,42 @@ ++#include ++#include ++ ++#define COUNT 320 ++#define MMAP_SIZE 0x10000 ++#define ADDRESS 0x1122000000 ++#define TYPE unsigned short ++ ++#ifndef MAP_ANONYMOUS ++#define MAP_ANONYMOUS MAP_ANON ++#endif ++ ++void __attribute__((noinline)) ++foo (TYPE *__restrict a, TYPE *__restrict b) ++{ ++ int n; ++ ++ for (n = 0; n < COUNT; n++) ++ a[n] = b[n * 2]; ++} ++ ++int ++main (void) ++{ ++ void *x; ++ size_t b_offset; ++ ++ x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); ++ if (x == MAP_FAILED) ++ { ++ perror ("mmap"); ++ return 1; ++ } ++ ++ b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE); ++ foo ((unsigned short *) x, ++ (unsigned short *) ((char *) x + b_offset)); ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn new file mode 100644 index 000000000..4af1cc219 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.dg_vect_vect-strided-u8-i8-gap4-unkn @@ -0,0 +1,121 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c +@@ -0,0 +1,116 @@ ++/* { dg-require-effective-target vect_int } */ ++ ++#include ++#include ++#include "tree-vect.h" ++ ++#define N 160 ++ ++typedef struct { ++ unsigned char a; ++ unsigned char b; ++ unsigned char c; ++ unsigned char d; ++ unsigned char e; ++ unsigned char f; ++ unsigned char g; ++ unsigned char h; ++} s; ++ ++__attribute__ ((noinline)) int ++main1 (s *arr, int n) ++{ ++ int i; ++ s *ptr = arr; ++ s res[N]; ++ unsigned char x; ++ ++ for (i = 0; i < N; i++) ++ { ++ res[i].a = 0; ++ res[i].b = 0; ++ res[i].c = 0; ++ res[i].d = 0; ++ res[i].e = 0; ++ res[i].f = 0; ++ res[i].g = 0; ++ res[i].h = 0; ++ __asm__ volatile (""); ++ } ++ ++ /* Check peeling for gaps for unknown loop bound. */ ++ for (i = 0; i < n; i++) ++ { ++ res[i].c = ptr->b + ptr->c; ++ x = ptr->c + ptr->f; ++ res[i].a = x + ptr->b; ++ res[i].d = ptr->b + ptr->c; ++ res[i].b = ptr->c; ++ res[i].f = ptr->f + ptr->e; ++ res[i].e = ptr->b + ptr->e; ++ res[i].h = ptr->c; ++ res[i].g = ptr->b + ptr->c; ++ ptr++; ++ } ++ ++ /* check results: */ ++ for (i = 0; i < n; i++) ++ { ++ if (res[i].c != arr[i].b + arr[i].c ++ || res[i].a != arr[i].c + arr[i].f + arr[i].b ++ || res[i].d != arr[i].b + arr[i].c ++ || res[i].b != arr[i].c ++ || res[i].f != arr[i].f + arr[i].e ++ || res[i].e != arr[i].b + arr[i].e ++ || res[i].h != arr[i].c ++ || res[i].g != arr[i].b + arr[i].c) ++ abort (); ++ } ++ ++ /* Check also that we don't do more iterations than needed. */ ++ for (i = n; i < N; i++) ++ { ++ if (res[i].c == arr[i].b + arr[i].c ++ || res[i].a == arr[i].c + arr[i].f + arr[i].b ++ || res[i].d == arr[i].b + arr[i].c ++ || res[i].b == arr[i].c ++ || res[i].f == arr[i].f + arr[i].e ++ || res[i].e == arr[i].b + arr[i].e ++ || res[i].h == arr[i].c ++ || res[i].g == arr[i].b + arr[i].c) ++ abort (); ++ } ++ ++ return 0; ++} ++ ++ ++int main (void) ++{ ++ int i; ++ s arr[N]; ++ ++ check_vect (); ++ ++ for (i = 0; i < N; i++) ++ { ++ arr[i].a = 5; ++ arr[i].b = 6; ++ arr[i].c = 17; ++ arr[i].d = 3; ++ arr[i].e = 16; ++ arr[i].f = 16; ++ arr[i].g = 3; ++ arr[i].h = 56; ++ if (arr[i].a == 178) ++ abort(); ++ } ++ ++ main1 (arr, N-2); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_neon-vset__lanes8.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_neon-vset__lanes8.c new file mode 100644 index 000000000..a971c1efe --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_neon-vset__lanes8.c @@ -0,0 +1,26 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c +@@ -0,0 +1,21 @@ ++/* Test the `vset_lane_s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O0" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include ++#include ++ ++int8x8_t x = { 1, 2, 3, 4, 5, 6, 7, 8 }; ++int8x8_t y = { 1, 2, 3, 16, 5, 6, 7, 8 }; ++ ++int main (void) ++{ ++ x = vset_lane_s8 (16, x, 3); ++ if (memcmp (&x, &y, sizeof (x)) != 0) ++ abort(); ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr48252.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr48252.c new file mode 100644 index 000000000..fefca04f2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr48252.c @@ -0,0 +1,36 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/arm/pr48252.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/arm/pr48252.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O2" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include ++ ++int main(void) ++{ ++ uint8x8_t v1 = {1, 1, 1, 1, 1, 1, 1, 1}; ++ uint8x8_t v2 = {2, 2, 2, 2, 2, 2, 2, 2}; ++ uint8x8x2_t vd1, vd2; ++ union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4; ++ int i; ++ ++ vd1 = vzip_u8(v1, vdup_n_u8(0)); ++ vd2 = vzip_u8(v2, vdup_n_u8(0)); ++ ++ vst1_u8(d1.buf, vd1.val[0]); ++ vst1_u8(d2.buf, vd1.val[1]); ++ vst1_u8(d3.buf, vd2.val[0]); ++ vst1_u8(d4.buf, vd2.val[1]); ++ ++ for (i = 0; i < 8; i++) ++ if ((i % 2 == 0 && d4.buf[i] != 2) ++ || (i % 2 == 1 && d4.buf[i] != 0)) ++ abort (); ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr51835.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr51835.c new file mode 100644 index 000000000..8ba930924 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_arm_pr51835.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/arm/pr51835.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/arm/pr51835.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfloat-abi=hard -mfpu=fpv4-sp-d16" } */ ++/* { dg-require-effective-target arm_thumb2_ok } */ ++ ++int func1 (double d) ++{ ++ return (int)d; ++} ++unsigned int func2 (double d) ++{ ++ return (unsigned int)d; ++} ++ ++/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_aes-avx-check.h b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_aes-avx-check.h new file mode 100644 index 000000000..39d5bdbf5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_aes-avx-check.h @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/aes-avx-check.h.orig Mon Jun 7 11:08:46 2010 ++++ gcc/testsuite/gcc.target/i386/aes-avx-check.h +@@ -3,6 +3,7 @@ + #endif + #include + #include "cpuid.h" ++#include "avx-os-support.h" + + static void aes_avx_test (void); + +@@ -22,7 +23,9 @@ main () + return 0; + + /* Run AES + AVX test only if host has AES + AVX support. */ +- if ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES)) ++ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_AES)) ++ == (bit_AVX | bit_OSXSAVE | bit_AES)) ++ && avx_os_support ()) + { + do_test (); + #ifdef DEBUG diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-check.h b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-check.h new file mode 100644 index 000000000..f2148c5e9 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-check.h @@ -0,0 +1,22 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/avx-check.h.orig Mon Feb 7 13:15:14 2011 ++++ gcc/testsuite/gcc.target/i386/avx-check.h +@@ -1,6 +1,7 @@ + #include + #include "cpuid.h" + #include "m256-check.h" ++#include "avx-os-support.h" + + static void avx_test (void); + +@@ -20,7 +21,8 @@ main () + return 0; + + /* Run AVX test only if host has AVX support. */ +- if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE)) ++ if (((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE)) ++ && avx_os_support ()) + { + do_test (); + #ifdef DEBUG diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-os-support.h b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-os-support.h new file mode 100644 index 000000000..46d35ce65 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_avx-os-support.h @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/avx-os-support.h.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/avx-os-support.h +@@ -0,0 +1,10 @@ ++/* Check if the OS supports executing AVX instructions. */ ++ ++static int ++avx_os_support (void) ++{ ++ unsigned int eax, edx; ++ ++ __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ return (eax & 6) == 6; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pclmul-avx-check.h b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pclmul-avx-check.h new file mode 100644 index 000000000..cb832b4ce --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pclmul-avx-check.h @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pclmul-avx-check.h.orig Mon Jun 7 11:08:46 2010 ++++ gcc/testsuite/gcc.target/i386/pclmul-avx-check.h +@@ -3,6 +3,7 @@ + #endif + #include + #include "cpuid.h" ++#include "avx-os-support.h" + + static void pclmul_avx_test (void); + +@@ -22,7 +23,9 @@ main () + return 0; + + /* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */ +- if ((ecx & (bit_AVX | bit_PCLMUL)) == (bit_AVX | bit_PCLMUL)) ++ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL)) ++ == (bit_AVX | bit_OSXSAVE | bit_PCLMUL)) ++ && avx_os_support ()) + { + do_test (); + #ifdef DEBUG diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr47780.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr47780.c new file mode 100644 index 000000000..cf0fa06ba --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr47780.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr47780.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr47780.c +@@ -0,0 +1,14 @@ ++/* PR debug/47780 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -fgcse -fgcse-las -fstack-protector-all -fno-tree-ccp -fno-tree-dominator-opts -fcompare-debug -Wno-psabi" } */ ++ ++typedef int V2SF __attribute__ ((vector_size (128))); ++ ++V2SF ++foo (int x, V2SF a) ++{ ++ V2SF b = a + (V2SF) {}; ++ while (x--) ++ a += b; ++ return a; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr48708.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr48708.c new file mode 100644 index 000000000..5b2eaf6da --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr48708.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr48708.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr48708.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -msse2" } */ ++ ++#include ++ ++typedef long long T __attribute__((may_alias)); ++struct S { __m128i d; }; ++ ++__m128i ++foo (long long *x, struct S *y, __m128i *z) ++{ ++ struct S s = *y; ++ ((T *) &s.d)[0] = *x; ++ return _mm_cmpeq_epi16 (s.d, *z); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr49920.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr49920.c new file mode 100644 index 000000000..605533292 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr49920.c @@ -0,0 +1,28 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr49920.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr49920.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++/* { dg-require-effective-target ilp32 } */ ++ ++typedef __SIZE_TYPE__ size_t; ++extern void *malloc (size_t); ++ ++register unsigned int MR_mr0 asm ("esi"); ++register unsigned int MR_mr1 asm ("edi"); ++ ++void ml_backend__ml_closure_gen_module11 (void) ++{ ++ unsigned int MR_tempr1, MR_tempr2, MR_tempr3; ++ ++ MR_tempr1 = (unsigned int)((char *) malloc (sizeof (unsigned int)) + 4); ++ MR_tempr3 = ((unsigned int *) MR_mr0)[0]; ++ ++ ((unsigned int *) (MR_tempr1 - 4))[0] = MR_tempr3; ++ ++ MR_tempr2 = (unsigned int)((char *) malloc (2 * sizeof (unsigned int))); ++ ++ ((unsigned int *) MR_tempr2)[1] = MR_tempr1; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr50788.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr50788.c new file mode 100644 index 000000000..ca896b5d0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr50788.c @@ -0,0 +1,15 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr50788.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr50788.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mavx -fpeel-loops -fstack-protector-all" } */ ++ ++typedef long long __m256i __attribute__ ((__vector_size__ (32))); ++typedef double __m256d __attribute__ ((__vector_size__ (32))); ++ ++__m256d foo (__m256d *__P, __m256i __M) ++{ ++ return __builtin_ia32_maskloadpd256 ( __P, __M); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr51393.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr51393.c new file mode 100644 index 000000000..1ef209ca6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr51393.c @@ -0,0 +1,27 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr51393.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr51393.c +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target avx } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O -mavx" } */ ++ ++#include "avx-check.h" ++#include ++ ++static void ++__attribute__((noinline)) ++avx_test (void) ++{ ++ long long in = 0x800000000ll; ++ long long out; ++ ++ __m256i zero = _mm256_setzero_si256(); ++ __m256i tmp = _mm256_insert_epi64 (zero, in, 0); ++ out = _mm256_extract_epi64(tmp, 0); ++ ++ if (in != out) ++ abort (); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr52330.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr52330.c new file mode 100644 index 000000000..acb7f0f78 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_pr52330.c @@ -0,0 +1,12 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/pr52330.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/i386/pr52330.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O0" } */ ++ ++void foo (int a) ++{ ++ asm volatile ("# %H0" : : "r" (a)); /* { dg-error "not an offsettable" } */ ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_sse2-init-v2di-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_sse2-init-v2di-2.c new file mode 100644 index 000000000..2e43b5cbf --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_i386_sse2-init-v2di-2.c @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c.orig Wed Aug 20 13:22:30 2008 ++++ gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c +@@ -1,6 +1,6 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target lp64 } */ +-/* { dg-options "-O2 -msse4 -march=core2" } */ ++/* { dg-options "-O2 -msse4 -march=core2 -dp" } */ + + #include + +@@ -10,4 +10,4 @@ test (long long b) + return _mm_cvtsi64_si128 (b); + } + +-/* { dg-final { scan-assembler "movq" } } */ ++/* { dg-final { scan-assembler-times "\\*vec_concatv2di_rex64_sse4_1/3" 1 } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_mips_reg-var-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_mips_reg-var-1.c new file mode 100644 index 000000000..64b9ed0c7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_mips_reg-var-1.c @@ -0,0 +1,21 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/mips/reg-var-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/mips/reg-var-1.c +@@ -0,0 +1,16 @@ ++/* { dg-do run } */ ++register int g asm ("$18"); ++ ++void __attribute__((noinline)) ++test (void) ++{ ++ g = g + 1; ++} ++ ++int ++main (void) ++{ ++ g = 2; ++ test (); ++ return g != 3; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_altivec-34.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_altivec-34.c new file mode 100644 index 000000000..fca713d1c --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_altivec-34.c @@ -0,0 +1,29 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/altivec-34.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/altivec-34.c +@@ -0,0 +1,24 @@ ++/* PR target/49621 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -maltivec" } */ ++ ++#include ++ ++int ++foo (void) ++{ ++ vector unsigned a, b, c; ++ unsigned k = 1; ++ ++ a = (vector unsigned) { 0, 0, 0, 1 }; ++ b = c = (vector unsigned) { 0, 0, 0, 0 }; ++ ++ a = vec_add (a, vec_splats (k)); ++ b = vec_add (b, a); ++ c = vec_sel (c, a, b); ++ ++ if (vec_any_eq (b, c)) ++ return 1; ++ ++ return 0; ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-1.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-1.c new file mode 100644 index 000000000..7afaca9ce --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-1.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "lvlx" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++vsc lc1(long a, void *p) { return __builtin_altivec_lvlx (a,p); } ++vsf llx01(long a, vsf *p) { return __builtin_vec_lvlx (a,p); } ++vsf llx02(long a, sf *p) { return __builtin_vec_lvlx (a,p); } ++vbi llx03(long a, vbi *p) { return __builtin_vec_lvlx (a,p); } ++vsi llx04(long a, vsi *p) { return __builtin_vec_lvlx (a,p); } ++vsi llx05(long a, si *p) { return __builtin_vec_lvlx (a,p); } ++vui llx06(long a, vui *p) { return __builtin_vec_lvlx (a,p); } ++vui llx07(long a, ui *p) { return __builtin_vec_lvlx (a,p); } ++vbs llx08(long a, vbs *p) { return __builtin_vec_lvlx (a,p); } ++vp llx09(long a, vp *p) { return __builtin_vec_lvlx (a,p); } ++vss llx10(long a, vss *p) { return __builtin_vec_lvlx (a,p); } ++vss llx11(long a, ss *p) { return __builtin_vec_lvlx (a,p); } ++vus llx12(long a, vus *p) { return __builtin_vec_lvlx (a,p); } ++vus llx13(long a, us *p) { return __builtin_vec_lvlx (a,p); } ++vbc llx14(long a, vbc *p) { return __builtin_vec_lvlx (a,p); } ++vsc llx15(long a, vsc *p) { return __builtin_vec_lvlx (a,p); } ++vsc llx16(long a, sc *p) { return __builtin_vec_lvlx (a,p); } ++vuc llx17(long a, vuc *p) { return __builtin_vec_lvlx (a,p); } ++vuc llx18(long a, uc *p) { return __builtin_vec_lvlx (a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-2.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-2.c new file mode 100644 index 000000000..5ebf100d7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-2.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "lvlxl" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++vsc lc2(long a, void *p) { return __builtin_altivec_lvlxl (a,p); } ++vsf llxl01(long a, vsf *p) { return __builtin_vec_lvlxl (a,p); } ++vsf llxl02(long a, sf *p) { return __builtin_vec_lvlxl (a,p); } ++vbi llxl03(long a, vbi *p) { return __builtin_vec_lvlxl (a,p); } ++vsi llxl04(long a, vsi *p) { return __builtin_vec_lvlxl (a,p); } ++vsi llxl05(long a, si *p) { return __builtin_vec_lvlxl (a,p); } ++vui llxl06(long a, vui *p) { return __builtin_vec_lvlxl (a,p); } ++vui llxl07(long a, ui *p) { return __builtin_vec_lvlxl (a,p); } ++vbs llxl08(long a, vbs *p) { return __builtin_vec_lvlxl (a,p); } ++vp llxl09(long a, vp *p) { return __builtin_vec_lvlxl (a,p); } ++vss llxl10(long a, vss *p) { return __builtin_vec_lvlxl (a,p); } ++vss llxl11(long a, ss *p) { return __builtin_vec_lvlxl (a,p); } ++vus llxl12(long a, vus *p) { return __builtin_vec_lvlxl (a,p); } ++vus llxl13(long a, us *p) { return __builtin_vec_lvlxl (a,p); } ++vbc llxl14(long a, vbc *p) { return __builtin_vec_lvlxl (a,p); } ++vsc llxl15(long a, vsc *p) { return __builtin_vec_lvlxl (a,p); } ++vsc llxl16(long a, sc *p) { return __builtin_vec_lvlxl (a,p); } ++vuc llxl17(long a, vuc *p) { return __builtin_vec_lvlxl (a,p); } ++vuc llxl18(long a, uc *p) { return __builtin_vec_lvlxl (a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-3.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-3.c new file mode 100644 index 000000000..1dedf35d6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-3.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "lvrx" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++vsc lc3(long a, void *p) { return __builtin_altivec_lvrx (a,p); } ++vsf lrx01(long a, vsf *p) { return __builtin_vec_lvrx (a,p); } ++vsf lrx02(long a, sf *p) { return __builtin_vec_lvrx (a,p); } ++vbi lrx03(long a, vbi *p) { return __builtin_vec_lvrx (a,p); } ++vsi lrx04(long a, vsi *p) { return __builtin_vec_lvrx (a,p); } ++vsi lrx05(long a, si *p) { return __builtin_vec_lvrx (a,p); } ++vui lrx06(long a, vui *p) { return __builtin_vec_lvrx (a,p); } ++vui lrx07(long a, ui *p) { return __builtin_vec_lvrx (a,p); } ++vbs lrx08(long a, vbs *p) { return __builtin_vec_lvrx (a,p); } ++vp lrx09(long a, vp *p) { return __builtin_vec_lvrx (a,p); } ++vss lrx10(long a, vss *p) { return __builtin_vec_lvrx (a,p); } ++vss lrx11(long a, ss *p) { return __builtin_vec_lvrx (a,p); } ++vus lrx12(long a, vus *p) { return __builtin_vec_lvrx (a,p); } ++vus lrx13(long a, us *p) { return __builtin_vec_lvrx (a,p); } ++vbc lrx14(long a, vbc *p) { return __builtin_vec_lvrx (a,p); } ++vsc lrx15(long a, vsc *p) { return __builtin_vec_lvrx (a,p); } ++vsc lrx16(long a, sc *p) { return __builtin_vec_lvrx (a,p); } ++vuc lrx17(long a, vuc *p) { return __builtin_vec_lvrx (a,p); } ++vuc lrx18(long a, uc *p) { return __builtin_vec_lvrx (a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-4.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-4.c new file mode 100644 index 000000000..2488eccf1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-4.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "lvrxl" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++vsc lc4(long a, void *p) { return __builtin_altivec_lvrxl (a,p); } ++vsf lrxl01(long a, vsf *p) { return __builtin_vec_lvrxl (a,p); } ++vsf lrxl02(long a, sf *p) { return __builtin_vec_lvrxl (a,p); } ++vbi lrxl03(long a, vbi *p) { return __builtin_vec_lvrxl (a,p); } ++vsi lrxl04(long a, vsi *p) { return __builtin_vec_lvrxl (a,p); } ++vsi lrxl05(long a, si *p) { return __builtin_vec_lvrxl (a,p); } ++vui lrxl06(long a, vui *p) { return __builtin_vec_lvrxl (a,p); } ++vui lrxl07(long a, ui *p) { return __builtin_vec_lvrxl (a,p); } ++vbs lrxl08(long a, vbs *p) { return __builtin_vec_lvrxl (a,p); } ++vp lrxl09(long a, vp *p) { return __builtin_vec_lvrxl (a,p); } ++vss lrxl10(long a, vss *p) { return __builtin_vec_lvrxl (a,p); } ++vss lrxl11(long a, ss *p) { return __builtin_vec_lvrxl (a,p); } ++vus lrxl12(long a, vus *p) { return __builtin_vec_lvrxl (a,p); } ++vus lrxl13(long a, us *p) { return __builtin_vec_lvrxl (a,p); } ++vbc lrxl14(long a, vbc *p) { return __builtin_vec_lvrxl (a,p); } ++vsc lrxl15(long a, vsc *p) { return __builtin_vec_lvrxl (a,p); } ++vsc lrxl16(long a, sc *p) { return __builtin_vec_lvrxl (a,p); } ++vuc lrxl17(long a, vuc *p) { return __builtin_vec_lvrxl (a,p); } ++vuc lrxl18(long a, uc *p) { return __builtin_vec_lvrxl (a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-5.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-5.c new file mode 100644 index 000000000..503cb4052 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-5.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "stvlx" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++void sc1(vsc v, long a, void *p) { __builtin_altivec_stvlx (v,a,p); } ++void slx01(vsf v, long a, vsf *p) { __builtin_vec_stvlx (v,a,p); } ++void slx02(vsf v, long a, sf *p) { __builtin_vec_stvlx (v,a,p); } ++void slx03(vbi v, long a, vbi *p) { __builtin_vec_stvlx (v,a,p); } ++void slx04(vsi v, long a, vsi *p) { __builtin_vec_stvlx (v,a,p); } ++void slx05(vsi v, long a, si *p) { __builtin_vec_stvlx (v,a,p); } ++void slx06(vui v, long a, vui *p) { __builtin_vec_stvlx (v,a,p); } ++void slx07(vui v, long a, ui *p) { __builtin_vec_stvlx (v,a,p); } ++void slx08(vbs v, long a, vbs *p) { __builtin_vec_stvlx (v,a,p); } ++void slx09(vp v, long a, vp *p) { __builtin_vec_stvlx (v,a,p); } ++void slx10(vss v, long a, vss *p) { __builtin_vec_stvlx (v,a,p); } ++void slx11(vss v, long a, ss *p) { __builtin_vec_stvlx (v,a,p); } ++void slx12(vus v, long a, vus *p) { __builtin_vec_stvlx (v,a,p); } ++void slx13(vus v, long a, us *p) { __builtin_vec_stvlx (v,a,p); } ++void slx14(vbc v, long a, vbc *p) { __builtin_vec_stvlx (v,a,p); } ++void slx15(vsc v, long a, vsc *p) { __builtin_vec_stvlx (v,a,p); } ++void slx16(vsc v, long a, sc *p) { __builtin_vec_stvlx (v,a,p); } ++void slx17(vuc v, long a, vuc *p) { __builtin_vec_stvlx (v,a,p); } ++void slx18(vuc v, long a, uc *p) { __builtin_vec_stvlx (v,a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-6.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-6.c new file mode 100644 index 000000000..26f674991 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-6.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "stvlxl" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++void sc2(vsc v, long a, void *p) { __builtin_altivec_stvlxl (v,a,p); } ++void slxl01(vsf v, long a, vsf *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl02(vsf v, long a, sf *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl03(vbi v, long a, vbi *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl04(vsi v, long a, vsi *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl05(vsi v, long a, si *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl06(vui v, long a, vui *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl07(vui v, long a, ui *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl08(vbs v, long a, vbs *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl09(vp v, long a, vp *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl10(vss v, long a, vss *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl11(vss v, long a, ss *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl12(vus v, long a, vus *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl13(vus v, long a, us *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl14(vbc v, long a, vbc *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl15(vsc v, long a, vsc *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl16(vsc v, long a, sc *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl17(vuc v, long a, vuc *p) { __builtin_vec_stvlxl (v,a,p); } ++void slxl18(vuc v, long a, uc *p) { __builtin_vec_stvlxl (v,a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-7.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-7.c new file mode 100644 index 000000000..6fefee6ac --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-7.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "stvrx" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++void sc3(vsc v, long a, void *p) { __builtin_altivec_stvrx (v,a,p); } ++void srx01(vsf v, long a, vsf *p) { __builtin_vec_stvrx (v,a,p); } ++void srx02(vsf v, long a, sf *p) { __builtin_vec_stvrx (v,a,p); } ++void srx03(vbi v, long a, vbi *p) { __builtin_vec_stvrx (v,a,p); } ++void srx04(vsi v, long a, vsi *p) { __builtin_vec_stvrx (v,a,p); } ++void srx05(vsi v, long a, si *p) { __builtin_vec_stvrx (v,a,p); } ++void srx06(vui v, long a, vui *p) { __builtin_vec_stvrx (v,a,p); } ++void srx07(vui v, long a, ui *p) { __builtin_vec_stvrx (v,a,p); } ++void srx08(vbs v, long a, vbs *p) { __builtin_vec_stvrx (v,a,p); } ++void srx09(vp v, long a, vp *p) { __builtin_vec_stvrx (v,a,p); } ++void srx10(vss v, long a, vss *p) { __builtin_vec_stvrx (v,a,p); } ++void srx11(vss v, long a, ss *p) { __builtin_vec_stvrx (v,a,p); } ++void srx12(vus v, long a, vus *p) { __builtin_vec_stvrx (v,a,p); } ++void srx13(vus v, long a, us *p) { __builtin_vec_stvrx (v,a,p); } ++void srx14(vbc v, long a, vbc *p) { __builtin_vec_stvrx (v,a,p); } ++void srx15(vsc v, long a, vsc *p) { __builtin_vec_stvrx (v,a,p); } ++void srx16(vsc v, long a, sc *p) { __builtin_vec_stvrx (v,a,p); } ++void srx17(vuc v, long a, vuc *p) { __builtin_vec_stvrx (v,a,p); } ++void srx18(vuc v, long a, uc *p) { __builtin_vec_stvrx (v,a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-8.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-8.c new file mode 100644 index 000000000..a99f36fa6 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_cell__builtin-8.c @@ -0,0 +1,53 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mcpu=cell" } */ ++/* { dg-final { scan-assembler-times "stvrxl" 19 } } */ ++ ++#include ++ ++typedef __vector signed char vsc; ++typedef __vector signed short vss; ++typedef __vector signed int vsi; ++typedef __vector unsigned char vuc; ++typedef __vector unsigned short vus; ++typedef __vector unsigned int vui; ++typedef __vector bool char vbc; ++typedef __vector bool short vbs; ++typedef __vector bool int vbi; ++typedef __vector float vsf; ++typedef __vector pixel vp; ++typedef signed char sc; ++typedef signed short ss; ++typedef signed int si; ++typedef signed long sl; ++typedef unsigned char uc; ++typedef unsigned short us; ++typedef unsigned int ui; ++typedef unsigned long ul; ++typedef float sf; ++ ++void sc4(vsc v, long a, void *p) { __builtin_altivec_stvrxl (v,a,p); } ++void srxl01(vsf v, long a, vsf *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl02(vsf v, long a, sf *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl03(vbi v, long a, vbi *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl04(vsi v, long a, vsi *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl05(vsi v, long a, si *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl06(vui v, long a, vui *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl07(vui v, long a, ui *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl08(vbs v, long a, vbs *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl09(vp v, long a, vp *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl10(vss v, long a, vss *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl11(vss v, long a, ss *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl12(vus v, long a, vus *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl13(vus v, long a, us *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl14(vbc v, long a, vbc *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl15(vsc v, long a, vsc *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl16(vsc v, long a, sc *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl17(vuc v, long a, vuc *p) { __builtin_vec_stvrxl (v,a,p); } ++void srxl18(vuc v, long a, uc *p) { __builtin_vec_stvrxl (v,a,p); } diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr48857.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr48857.c new file mode 100644 index 000000000..1bb8f1e99 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr48857.c @@ -0,0 +1,30 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/pr48857.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/pr48857.c +@@ -0,0 +1,25 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++/* { dg-options "-O2 -mcpu=power7 -mabi=altivec" } */ ++/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */ ++/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */ ++/* { dg-final { scan-assembler-not "ld" } } */ ++/* { dg-final { scan-assembler-not "lwz" } } */ ++/* { dg-final { scan-assembler-not "stw" } } */ ++/* { dg-final { scan-assembler-not "addi" } } */ ++ ++typedef vector long long v2di_type; ++ ++v2di_type ++return_v2di (v2di_type *ptr) ++{ ++ return *ptr; /* should generate lxvd2x 34,0,3. */ ++} ++ ++void ++pass_v2di (v2di_type arg, v2di_type *ptr) ++{ ++ *ptr = arg; /* should generate stxvd2x 34,0,{3,5}. */ ++} ++ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr53199.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr53199.c new file mode 100644 index 000000000..b5a976cf5 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_powerpc_pr53199.c @@ -0,0 +1,55 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/powerpc/pr53199.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/powerpc/pr53199.c +@@ -0,0 +1,50 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */ ++/* { dg-final { scan-assembler-times "lwbrx" 6 } } */ ++/* { dg-final { scan-assembler-times "stwbrx" 6 } } */ ++ ++/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in ++ creating the two lwbrx instructions. */ ++ ++long long ++load64_reverse_1 (long long *p) ++{ ++ return __builtin_bswap64 (*p); ++} ++ ++long long ++load64_reverse_2 (long long *p) ++{ ++ return __builtin_bswap64 (p[1]); ++} ++ ++long long ++load64_reverse_3 (long long *p, int i) ++{ ++ return __builtin_bswap64 (p[i]); ++} ++ ++void ++store64_reverse_1 (long long *p, long long x) ++{ ++ *p = __builtin_bswap64 (x); ++} ++ ++void ++store64_reverse_2 (long long *p, long long x) ++{ ++ p[1] = __builtin_bswap64 (x); ++} ++ ++void ++store64_reverse_3 (long long *p, long long x, int i) ++{ ++ p[i] = __builtin_bswap64 (x); ++} ++ ++long long ++reg_reverse (long long x) ++{ ++ return __builtin_bswap64 (x); ++} diff --git a/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_sparc_cas64.c b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_sparc_cas64.c new file mode 100644 index 000000000..6b8f186a0 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_gcc.target_sparc_cas64.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/testsuite/gcc.target/sparc/cas64.c.orig Wed May 21 19:48:58 2014 ++++ gcc/testsuite/gcc.target/sparc/cas64.c +@@ -0,0 +1,15 @@ ++/* PR target/49660 */ ++ ++/* { dg-do compile { target sparc*-*-solaris2.* } } */ ++ ++#include ++ ++extern int64_t *val, old, new; ++ ++int ++cas64 (void) ++{ ++ return __sync_bool_compare_and_swap (val, old, new); ++} ++ ++/* { dg-final { scan-assembler-not "compare_and_swap_8" } } */ diff --git a/lang/gcc45/patches/patch-gcc_testsuite_lib_target-supports.exp b/lang/gcc45/patches/patch-gcc_testsuite_lib_target-supports.exp new file mode 100644 index 000000000..510de7a27 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_testsuite_lib_target-supports.exp @@ -0,0 +1,55 @@ +$NetBSD$ + +--- gcc/testsuite/lib/target-supports.exp.orig Tue Apr 12 16:37:04 2011 ++++ gcc/testsuite/lib/target-supports.exp +@@ -960,8 +960,8 @@ proc check_sse_os_support_available { } { + check_runtime_nocache sse_os_support_available { + int main () + { +- __asm__ volatile ("movss %xmm2,%xmm1"); +- return 0; ++ asm volatile ("movss %xmm2,%xmm1"); ++ return 0; + } + } "-msse" + } else { +@@ -970,6 +970,29 @@ proc check_sse_os_support_available { } { + }] + } + ++# Return 1 if the target OS supports running AVX executables, 0 ++# otherwise. Cache the result. ++ ++proc check_avx_os_support_available { } { ++ return [check_cached_effective_target avx_os_support_available { ++ # If this is not the right target then we can skip the test. ++ if { !([istarget x86_64-*-*] || [istarget i?86-*-*]) } { ++ expr 0 ++ } else { ++ # Check that OS has AVX and SSE saving enabled. ++ check_runtime_nocache avx_os_support_available { ++ int main () ++ { ++ unsigned int eax, edx; ++ ++ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ return (eax & 6) != 6; ++ } ++ } "" ++ } ++ }] ++} ++ + # Return 1 if the target supports executing SSE instructions, 0 + # otherwise. Cache the result. + +@@ -1064,7 +1087,8 @@ proc check_effective_target_sse2_runtime { } { + + proc check_effective_target_avx_runtime { } { + if { [check_effective_target_avx] +- && [check_avx_hw_available] } { ++ && [check_avx_hw_available] ++ && [check_avx_os_support_available] } { + return 1 + } + return 0 diff --git a/lang/gcc45/patches/patch-gcc_tree-cfg.c b/lang/gcc45/patches/patch-gcc_tree-cfg.c new file mode 100644 index 000000000..87b16d56b --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-cfg.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/tree-cfg.c.orig Mon Nov 29 19:20:48 2010 ++++ gcc/tree-cfg.c +@@ -7092,7 +7092,8 @@ execute_warn_function_return (void) + } + if (location == UNKNOWN_LOCATION) + location = cfun->function_end_locus; +- warning_at (location, 0, "% function does return"); ++ if (warn_missing_noreturn) ++ warning_at (location, 0, "% function does return"); + } + + /* If we see "return;" in some basic block, then we do reach the end +@@ -7294,4 +7295,3 @@ struct gimple_opt_pass pass_warn_unused_result = + 0, /* todo_flags_finish */ + } + }; +- diff --git a/lang/gcc45/patches/patch-gcc_tree-cfgcleanup.c b/lang/gcc45/patches/patch-gcc_tree-cfgcleanup.c new file mode 100644 index 000000000..914fa1545 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-cfgcleanup.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/tree-cfgcleanup.c.orig Fri May 21 09:27:30 2010 ++++ gcc/tree-cfgcleanup.c +@@ -560,7 +560,7 @@ split_bbs_on_noreturn_calls (void) + BB is present in the cfg. */ + if (bb == NULL + || bb->index < NUM_FIXED_BLOCKS +- || bb->index >= n_basic_blocks ++ || bb->index >= last_basic_block + || BASIC_BLOCK (bb->index) != bb + || last_stmt (bb) == stmt + || !gimple_call_noreturn_p (stmt)) diff --git a/lang/gcc45/patches/patch-gcc_tree-inline.c b/lang/gcc45/patches/patch-gcc_tree-inline.c new file mode 100644 index 000000000..5eb46578e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-inline.c @@ -0,0 +1,23 @@ +$NetBSD$ + +--- gcc/tree-inline.c.orig Tue Mar 8 13:03:34 2011 ++++ gcc/tree-inline.c +@@ -4179,14 +4179,16 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data + CONSTRUCTOR_ELTS (*tp)); + *tp = new_tree; + } ++ else if (code == STATEMENT_LIST) ++ /* We used to just abort on STATEMENT_LIST, but we can run into them ++ with statement-expressions (c++/40975). */ ++ copy_statement_list (tp); + else if (TREE_CODE_CLASS (code) == tcc_type) + *walk_subtrees = 0; + else if (TREE_CODE_CLASS (code) == tcc_declaration) + *walk_subtrees = 0; + else if (TREE_CODE_CLASS (code) == tcc_constant) + *walk_subtrees = 0; +- else +- gcc_assert (code != STATEMENT_LIST); + return NULL_TREE; + } + diff --git a/lang/gcc45/patches/patch-gcc_tree-mudflap.c b/lang/gcc45/patches/patch-gcc_tree-mudflap.c new file mode 100644 index 000000000..ba873dea8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-mudflap.c @@ -0,0 +1,58 @@ +$NetBSD$ + +--- gcc/tree-mudflap.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/tree-mudflap.c +@@ -72,6 +72,13 @@ static tree mx_xfn_xform_decls (gimple_stmt_iterator * + static gimple_seq mx_register_decls (tree, gimple_seq, location_t); + static unsigned int execute_mudflap_function_decls (void); + ++/* Return true if DECL is artificial stub that shouldn't be instrumented by ++ mf. We should instrument clones of non-artificial functions. */ ++static inline bool ++mf_artificial (const_tree decl) ++{ ++ return DECL_ARTIFICIAL (DECL_ORIGIN (decl)); ++} + + /* ------------------------------------------------------------------------ */ + /* Some generally helpful functions for mudflap instrumentation. */ +@@ -437,8 +444,8 @@ execute_mudflap_function_ops (void) + + /* Don't instrument functions such as the synthetic constructor + built during mudflap_finish_file. */ +- if (mf_marked_p (current_function_decl) || +- DECL_ARTIFICIAL (current_function_decl)) ++ if (mf_marked_p (current_function_decl) ++ || mf_artificial (current_function_decl)) + return 0; + + push_gimplify_context (&gctx); +@@ -1026,8 +1033,8 @@ execute_mudflap_function_decls (void) + + /* Don't instrument functions such as the synthetic constructor + built during mudflap_finish_file. */ +- if (mf_marked_p (current_function_decl) || +- DECL_ARTIFICIAL (current_function_decl)) ++ if (mf_marked_p (current_function_decl) ++ || mf_artificial (current_function_decl)) + return 0; + + push_gimplify_context (&gctx); +@@ -1109,7 +1116,7 @@ mx_register_decls (tree decl, gimple_seq seq, location + /* Add the __mf_register call at the current appending point. */ + if (gsi_end_p (initially_stmts)) + { +- if (!DECL_ARTIFICIAL (decl)) ++ if (!mf_artificial (decl)) + warning (OPT_Wmudflap, + "mudflap cannot track %qE in stub function", + DECL_NAME (decl)); +@@ -1280,7 +1287,7 @@ mudflap_enqueue_decl (tree obj) + during mudflap_finish_file (). That would confuse the user, + since the text would refer to variables that don't show up in the + user's source code. */ +- if (DECL_P (obj) && DECL_EXTERNAL (obj) && DECL_ARTIFICIAL (obj)) ++ if (DECL_P (obj) && DECL_EXTERNAL (obj) && mf_artificial (obj)) + return; + + VEC_safe_push (tree, gc, deferred_static_decls, obj); diff --git a/lang/gcc45/patches/patch-gcc_tree-outof-ssa.c b/lang/gcc45/patches/patch-gcc_tree-outof-ssa.c new file mode 100644 index 000000000..e0735faa4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-outof-ssa.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/tree-outof-ssa.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/tree-outof-ssa.c +@@ -233,9 +233,10 @@ insert_value_copy_on_edge (edge e, int dest, tree src, + + var = SSA_NAME_VAR (partition_to_var (SA.map, dest)); + src_mode = TYPE_MODE (TREE_TYPE (src)); +- dest_mode = promote_decl_mode (var, &unsignedp); ++ dest_mode = GET_MODE (SA.partition_to_pseudo[dest]); + gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (var))); +- gcc_assert (dest_mode == GET_MODE (SA.partition_to_pseudo[dest])); ++ gcc_assert (!REG_P (SA.partition_to_pseudo[dest]) ++ || dest_mode == promote_decl_mode (var, &unsignedp)); + + if (src_mode != dest_mode) + { diff --git a/lang/gcc45/patches/patch-gcc_tree-scalar-evolution.c b/lang/gcc45/patches/patch-gcc_tree-scalar-evolution.c new file mode 100644 index 000000000..822a40403 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-scalar-evolution.c @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/tree-scalar-evolution.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/tree-scalar-evolution.c +@@ -2557,7 +2557,8 @@ instantiate_scev_r (basic_block instantiate_below, + if (size_expr++ > PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE)) + return chrec_dont_know; + +- if (automatically_generated_chrec_p (chrec) ++ if (chrec == NULL_TREE ++ || automatically_generated_chrec_p (chrec) + || is_gimple_min_invariant (chrec)) + return chrec; + diff --git a/lang/gcc45/patches/patch-gcc_tree-sra.c b/lang/gcc45/patches/patch-gcc_tree-sra.c new file mode 100644 index 000000000..b57f426d7 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-sra.c @@ -0,0 +1,64 @@ +$NetBSD$ + +--- gcc/tree-sra.c.orig Tue Dec 21 11:05:49 2010 ++++ gcc/tree-sra.c +@@ -771,12 +771,13 @@ create_access (tree expr, gimple stmt, bool write) + disqualify_candidate (base, "Encountered a variable sized access."); + return NULL; + } +- if ((offset % BITS_PER_UNIT) != 0 || (size % BITS_PER_UNIT) != 0) ++ if (TREE_CODE (expr) == COMPONENT_REF ++ && DECL_BIT_FIELD (TREE_OPERAND (expr, 1))) + { +- disqualify_candidate (base, +- "Encountered an acces not aligned to a byte."); ++ disqualify_candidate (base, "Encountered a bit-field access."); + return NULL; + } ++ gcc_assert ((offset % BITS_PER_UNIT) == 0); + + if (ptr) + mark_parm_dereference (base, offset + size, stmt); +@@ -1854,13 +1855,25 @@ analyze_access_subtree (struct access *root, bool allo + && build_ref_for_offset (NULL, TREE_TYPE (root->base), root->offset, + root->type, false)) + { ++ bool new_integer_type; ++ if (TREE_CODE (root->type) == ENUMERAL_TYPE) ++ { ++ tree rt = root->type; ++ root->type = build_nonstandard_integer_type (TYPE_PRECISION (rt), ++ TYPE_UNSIGNED (rt)); ++ new_integer_type = true; ++ } ++ else ++ new_integer_type = false; ++ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Marking "); + print_generic_expr (dump_file, root->base, 0); +- fprintf (dump_file, " offset: %u, size: %u: ", ++ fprintf (dump_file, " offset: %u, size: %u ", + (unsigned) root->offset, (unsigned) root->size); +- fprintf (dump_file, " to be replaced.\n"); ++ fprintf (dump_file, " to be replaced%s.\n", ++ new_integer_type ? " with an integer": ""); + } + + root->grp_to_be_replaced = 1; +@@ -2730,7 +2743,13 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator + } + else + { +- if (access_has_children_p (lacc) && access_has_children_p (racc)) ++ if (access_has_children_p (lacc) ++ && access_has_children_p (racc) ++ /* When an access represents an unscalarizable region, it usually ++ represents accesses with variable offset and thus must not be used ++ to generate new memory accesses. */ ++ && !lacc->grp_unscalarizable_region ++ && !racc->grp_unscalarizable_region) + { + gimple_stmt_iterator orig_gsi = *gsi; + enum unscalarized_data_handling refreshed; diff --git a/lang/gcc45/patches/patch-gcc_tree-ssa-dce.c b/lang/gcc45/patches/patch-gcc_tree-ssa-dce.c new file mode 100644 index 000000000..8c7cdd3e2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-ssa-dce.c @@ -0,0 +1,20 @@ +$NetBSD$ + +--- gcc/tree-ssa-dce.c.orig Wed Nov 17 10:46:36 2010 ++++ gcc/tree-ssa-dce.c +@@ -509,7 +509,14 @@ mark_aliased_reaching_defs_necessary_1 (ao_ref *ref, t + + /* If the stmt lhs kills ref, then we can stop walking. */ + if (gimple_has_lhs (def_stmt) +- && TREE_CODE (gimple_get_lhs (def_stmt)) != SSA_NAME) ++ && TREE_CODE (gimple_get_lhs (def_stmt)) != SSA_NAME ++ /* The assignment is not necessarily carried out if it can throw ++ and we can catch it in the current function where we could inspect ++ the previous value. ++ ??? We only need to care about the RHS throwing. For aggregate ++ assignments or similar calls and non-call exceptions the LHS ++ might throw as well. */ ++ && !stmt_can_throw_internal (def_stmt)) + { + tree base, lhs = gimple_get_lhs (def_stmt); + HOST_WIDE_INT size, offset, max_size; diff --git a/lang/gcc45/patches/patch-gcc_tree-ssa-dom.c b/lang/gcc45/patches/patch-gcc_tree-ssa-dom.c new file mode 100644 index 000000000..1b8e41445 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-ssa-dom.c @@ -0,0 +1,18 @@ +$NetBSD$ + +--- gcc/tree-ssa-dom.c.orig Tue Jul 20 12:44:16 2010 ++++ gcc/tree-ssa-dom.c +@@ -209,12 +209,11 @@ initialize_hash_element (gimple stmt, tree lhs, + { + enum tree_code subcode = gimple_assign_rhs_code (stmt); + +- expr->type = NULL_TREE; +- + switch (get_gimple_rhs_class (subcode)) + { + case GIMPLE_SINGLE_RHS: + expr->kind = EXPR_SINGLE; ++ expr->type = TREE_TYPE (gimple_assign_rhs1 (stmt)); + expr->ops.single.rhs = gimple_assign_rhs1 (stmt); + break; + case GIMPLE_UNARY_RHS: diff --git a/lang/gcc45/patches/patch-gcc_tree-ssa-sccvn.c b/lang/gcc45/patches/patch-gcc_tree-ssa-sccvn.c new file mode 100644 index 000000000..e3972a4df --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-ssa-sccvn.c @@ -0,0 +1,45 @@ +$NetBSD$ + +--- gcc/tree-ssa-sccvn.c.orig Wed Mar 2 13:56:41 2011 ++++ gcc/tree-ssa-sccvn.c +@@ -1805,12 +1805,26 @@ print_scc (FILE *out, VEC (tree, heap) *scc) + static inline bool + set_ssa_val_to (tree from, tree to) + { +- tree currval; ++ tree currval = SSA_VAL (from); + +- if (from != to +- && TREE_CODE (to) == SSA_NAME +- && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to)) +- to = from; ++ if (from != to) ++ { ++ if (currval == from) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, "Not changing value number of "); ++ print_generic_expr (dump_file, from, 0); ++ fprintf (dump_file, " from VARYING to "); ++ print_generic_expr (dump_file, to, 0); ++ fprintf (dump_file, "\n"); ++ } ++ return false; ++ } ++ else if (TREE_CODE (to) == SSA_NAME ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to)) ++ to = from; ++ } + + /* The only thing we allow as value numbers are VN_TOP, ssa_names + and invariants. So assert that here. */ +@@ -1826,8 +1840,6 @@ set_ssa_val_to (tree from, tree to) + fprintf (dump_file, " to "); + print_generic_expr (dump_file, to, 0); + } +- +- currval = SSA_VAL (from); + + if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME)) + { diff --git a/lang/gcc45/patches/patch-gcc_tree-ssa-structalias.c b/lang/gcc45/patches/patch-gcc_tree-ssa-structalias.c new file mode 100644 index 000000000..de6eb0d57 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-ssa-structalias.c @@ -0,0 +1,110 @@ +$NetBSD$ + +--- gcc/tree-ssa-structalias.c.orig Tue Mar 8 13:31:13 2011 ++++ gcc/tree-ssa-structalias.c +@@ -266,6 +266,7 @@ static varinfo_t first_vi_for_offset (varinfo_t, unsig + static varinfo_t first_or_preceding_vi_for_offset (varinfo_t, + unsigned HOST_WIDE_INT); + static varinfo_t lookup_vi_for_tree (tree); ++static inline bool type_can_have_subvars (const_tree); + + /* Pool of variable info structures. */ + static alloc_pool variable_info_pool; +@@ -3187,10 +3188,51 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **resul + { + case INDIRECT_REF: + { ++ struct constraint_expr cs; ++ varinfo_t vi, curr; + get_constraint_for_1 (TREE_OPERAND (t, 0), results, address_p, + lhs_p); + do_deref (results); +- return; ++ ++ /* If we are not taking the address then make sure to process ++ all subvariables we might access. */ ++ if (address_p) ++ return; ++ ++ cs = *VEC_last (ce_s, *results); ++ if (cs.type == DEREF ++ && type_can_have_subvars (TREE_TYPE (t))) ++ { ++ /* For dereferences this means we have to defer it ++ to solving time. */ ++ VEC_last (ce_s, *results)->offset = UNKNOWN_OFFSET; ++ return; ++ } ++ if (cs.type != SCALAR) ++ return; ++ ++ vi = get_varinfo (cs.var); ++ curr = vi->next; ++ if (!vi->is_full_var ++ && curr) ++ { ++ unsigned HOST_WIDE_INT size; ++ if (host_integerp (TYPE_SIZE (TREE_TYPE (t)), 1)) ++ size = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (t))); ++ else ++ size = -1; ++ for (; curr; curr = curr->next) ++ { ++ if (curr->offset - vi->offset < size) ++ { ++ cs.var = curr->id; ++ VEC_safe_push (ce_s, heap, *results, &cs); ++ } ++ else ++ break; ++ } ++ } ++ return; + } + case ARRAY_REF: + case ARRAY_RANGE_REF: +@@ -3968,15 +4010,6 @@ find_func_aliases (gimple origt) + && DECL_P (lhsop) + && is_global_var (lhsop)) + make_escape_constraint (rhsop); +- /* If this is a conversion of a non-restrict pointer to a +- restrict pointer track it with a new heapvar. */ +- else if (gimple_assign_cast_p (t) +- && POINTER_TYPE_P (TREE_TYPE (rhsop)) +- && POINTER_TYPE_P (TREE_TYPE (lhsop)) +- && !TYPE_RESTRICT (TREE_TYPE (rhsop)) +- && TYPE_RESTRICT (TREE_TYPE (lhsop))) +- make_constraint_from_restrict (get_vi_for_tree (lhsop), +- "CAST_RESTRICT"); + } + /* Handle escapes through return. */ + else if (gimple_code (t) == GIMPLE_RETURN +@@ -4210,6 +4243,15 @@ sort_fieldstack (VEC(fieldoff_s,heap) *fieldstack) + fieldoff_compare); + } + ++/* Return true if T is a type that can have subvars. */ ++ ++static inline bool ++type_can_have_subvars (const_tree t) ++{ ++ /* Aggregates without overlapping fields can have subvars. */ ++ return TREE_CODE (t) == RECORD_TYPE; ++} ++ + /* Return true if V is a tree that we can have subvars for. + Normally, this is any aggregate type. Also complex + types which are not gimple registers can have subvars. */ +@@ -4225,11 +4267,7 @@ var_can_have_subvars (const_tree v) + if (!DECL_P (v)) + return false; + +- /* Aggregates without overlapping fields can have subvars. */ +- if (TREE_CODE (TREE_TYPE (v)) == RECORD_TYPE) +- return true; +- +- return false; ++ return type_can_have_subvars (TREE_TYPE (v)); + } + + /* Return true if T is a type that does contain pointers. */ diff --git a/lang/gcc45/patches/patch-gcc_tree-switch-conversion.c b/lang/gcc45/patches/patch-gcc_tree-switch-conversion.c new file mode 100644 index 000000000..667b50d66 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-switch-conversion.c @@ -0,0 +1,107 @@ +$NetBSD$ + +--- gcc/tree-switch-conversion.c.orig Thu Sep 2 13:05:30 2010 ++++ gcc/tree-switch-conversion.c +@@ -549,7 +549,7 @@ static void + build_arrays (gimple swtch) + { + tree arr_index_type; +- tree tidx, sub, tmp; ++ tree tidx, sub, tmp, utype; + gimple stmt; + gimple_stmt_iterator gsi; + int i; +@@ -557,14 +557,20 @@ build_arrays (gimple swtch) + + gsi = gsi_for_stmt (swtch); + ++ /* Make sure we do not generate arithmetics in a subrange. */ ++ utype = TREE_TYPE (info.index_expr); ++ if (TREE_TYPE (utype)) ++ utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1); ++ else ++ utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1); ++ + arr_index_type = build_index_type (info.range_size); +- tmp = create_tmp_var (TREE_TYPE (info.index_expr), "csti"); ++ tmp = create_tmp_var (utype, "csui"); + add_referenced_var (tmp); + tidx = make_ssa_name (tmp, NULL); +- sub = fold_build2_loc (loc, MINUS_EXPR, +- TREE_TYPE (info.index_expr), info.index_expr, +- fold_convert_loc (loc, TREE_TYPE (info.index_expr), +- info.range_min)); ++ sub = fold_build2_loc (loc, MINUS_EXPR, utype, ++ fold_convert_loc (loc, utype, info.index_expr), ++ fold_convert_loc (loc, utype, info.range_min)); + sub = force_gimple_operand_gsi (&gsi, sub, + false, NULL, true, GSI_SAME_STMT); + stmt = gimple_build_assign (tidx, sub); +@@ -673,12 +679,7 @@ gen_inbound_check (gimple swtch) + tree label_decl2 = create_artificial_label (UNKNOWN_LOCATION); + tree label_decl3 = create_artificial_label (UNKNOWN_LOCATION); + gimple label1, label2, label3; +- +- tree utype; +- tree tmp_u_1, tmp_u_2, tmp_u_var; +- tree cast; +- gimple cast_assign, minus_assign; +- tree ulb, minus; ++ tree utype, tidx; + tree bound; + + gimple cond_stmt; +@@ -692,49 +693,24 @@ gen_inbound_check (gimple swtch) + gcc_assert (info.default_values); + bb0 = gimple_bb (swtch); + +- /* Make sure we do not generate arithmetics in a subrange. */ +- if (TREE_TYPE (TREE_TYPE (info.index_expr))) +- utype = lang_hooks.types.type_for_mode +- (TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1); +- else +- utype = lang_hooks.types.type_for_mode +- (TYPE_MODE (TREE_TYPE (info.index_expr)), 1); ++ tidx = gimple_assign_lhs (info.arr_ref_first); ++ utype = TREE_TYPE (tidx); + + /* (end of) block 0 */ + gsi = gsi_for_stmt (info.arr_ref_first); +- tmp_u_var = create_tmp_var (utype, "csui"); +- add_referenced_var (tmp_u_var); +- tmp_u_1 = make_ssa_name (tmp_u_var, NULL); ++ gsi_next (&gsi); + +- cast = fold_convert_loc (loc, utype, info.index_expr); +- cast_assign = gimple_build_assign (tmp_u_1, cast); +- SSA_NAME_DEF_STMT (tmp_u_1) = cast_assign; +- gsi_insert_before (&gsi, cast_assign, GSI_SAME_STMT); +- update_stmt (cast_assign); +- +- ulb = fold_convert_loc (loc, utype, info.range_min); +- minus = fold_build2_loc (loc, MINUS_EXPR, utype, tmp_u_1, ulb); +- minus = force_gimple_operand_gsi (&gsi, minus, false, NULL, true, +- GSI_SAME_STMT); +- tmp_u_2 = make_ssa_name (tmp_u_var, NULL); +- minus_assign = gimple_build_assign (tmp_u_2, minus); +- SSA_NAME_DEF_STMT (tmp_u_2) = minus_assign; +- gsi_insert_before (&gsi, minus_assign, GSI_SAME_STMT); +- update_stmt (minus_assign); +- + bound = fold_convert_loc (loc, utype, info.range_size); +- cond_stmt = gimple_build_cond (LE_EXPR, tmp_u_2, bound, NULL_TREE, NULL_TREE); ++ cond_stmt = gimple_build_cond (LE_EXPR, tidx, bound, NULL_TREE, NULL_TREE); + gsi_insert_before (&gsi, cond_stmt, GSI_SAME_STMT); + update_stmt (cond_stmt); + + /* block 2 */ +- gsi = gsi_for_stmt (info.arr_ref_first); + label2 = gimple_build_label (label_decl2); + gsi_insert_before (&gsi, label2, GSI_SAME_STMT); + last_assign = gen_def_assigns (&gsi); + + /* block 1 */ +- gsi = gsi_for_stmt (info.arr_ref_first); + label1 = gimple_build_label (label_decl1); + gsi_insert_before (&gsi, label1, GSI_SAME_STMT); + diff --git a/lang/gcc45/patches/patch-gcc_tree-tailcall.c b/lang/gcc45/patches/patch-gcc_tree-tailcall.c new file mode 100644 index 000000000..f8da42668 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-tailcall.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/tree-tailcall.c.orig Fri Apr 23 15:47:44 2010 ++++ gcc/tree-tailcall.c +@@ -1007,6 +1007,14 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls) + integer_one_node); + } + ++ if (a_acc || m_acc) ++ { ++ /* When the tail call elimination using accumulators is performed, ++ statements adding the accumulated value are inserted at all exits. ++ This turns all other tail calls to non-tail ones. */ ++ opt_tailcalls = false; ++ } ++ + for (; tailcalls; tailcalls = next) + { + next = tailcalls->next; diff --git a/lang/gcc45/patches/patch-gcc_tree-vect-data-refs.c b/lang/gcc45/patches/patch-gcc_tree-vect-data-refs.c new file mode 100644 index 000000000..e28645708 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vect-data-refs.c @@ -0,0 +1,63 @@ +$NetBSD$ + +--- gcc/tree-vect-data-refs.c.orig Fri Apr 2 19:54:46 2010 ++++ gcc/tree-vect-data-refs.c +@@ -1450,7 +1450,7 @@ vect_analyze_group_access (struct data_reference *dr) + loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); + bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info); + HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step); +- HOST_WIDE_INT stride; ++ HOST_WIDE_INT stride, last_accessed_element = 1; + bool slp_impossible = false; + + /* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the +@@ -1479,6 +1479,16 @@ vect_analyze_group_access (struct data_reference *dr) + fprintf (vect_dump, " step "); + print_generic_expr (vect_dump, step, TDF_SLIM); + } ++ ++ if (loop_vinfo) ++ { ++ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; ++ ++ if (vect_print_dump_info (REPORT_DETAILS)) ++ fprintf (vect_dump, "Data access with gaps requires scalar " ++ "epilogue loop"); ++ } ++ + return true; + } + if (vect_print_dump_info (REPORT_DETAILS)) +@@ -1531,6 +1541,7 @@ vect_analyze_group_access (struct data_reference *dr) + next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next)); + continue; + } ++ + prev = next; + + /* Check that all the accesses have the same STEP. */ +@@ -1561,6 +1572,8 @@ vect_analyze_group_access (struct data_reference *dr) + gaps += diff - 1; + } + ++ last_accessed_element += diff; ++ + /* Store the gap from the previous member of the group. If there is no + gap in the access, DR_GROUP_GAP is always 1. */ + DR_GROUP_GAP (vinfo_for_stmt (next)) = diff; +@@ -1652,6 +1665,15 @@ vect_analyze_group_access (struct data_reference *dr) + VEC_safe_push (gimple, heap, BB_VINFO_STRIDED_STORES (bb_vinfo), + stmt); + } ++ ++ /* There is a gap in the end of the group. */ ++ if (stride - last_accessed_element > 0 && loop_vinfo) ++ { ++ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; ++ if (vect_print_dump_info (REPORT_DETAILS)) ++ fprintf (vect_dump, "Data access with gaps requires scalar " ++ "epilogue loop"); ++ } + } + + return true; diff --git a/lang/gcc45/patches/patch-gcc_tree-vect-loop-manip.c b/lang/gcc45/patches/patch-gcc_tree-vect-loop-manip.c new file mode 100644 index 000000000..8f9390511 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vect-loop-manip.c @@ -0,0 +1,120 @@ +$NetBSD$ + +--- gcc/tree-vect-loop-manip.c.orig Tue Jan 19 16:05:57 2010 ++++ gcc/tree-vect-loop-manip.c +@@ -1516,7 +1516,7 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vi + edge pe; + basic_block new_bb; + gimple_seq stmts; +- tree ni_name; ++ tree ni_name, ni_minus_gap_name; + tree var; + tree ratio_name; + tree ratio_mult_vf_name; +@@ -1533,9 +1533,39 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vi + ni_name = vect_build_loop_niters (loop_vinfo, cond_expr_stmt_list); + log_vf = build_int_cst (TREE_TYPE (ni), exact_log2 (vf)); + ++ /* If epilogue loop is required because of data accesses with gaps, we ++ subtract one iteration from the total number of iterations here for ++ correct calculation of RATIO. */ ++ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) ++ { ++ ni_minus_gap_name = fold_build2 (MINUS_EXPR, TREE_TYPE (ni_name), ++ ni_name, ++ build_one_cst (TREE_TYPE (ni_name))); ++ if (!is_gimple_val (ni_minus_gap_name)) ++ { ++ var = create_tmp_var (TREE_TYPE (ni), "ni_gap"); ++ add_referenced_var (var); ++ ++ stmts = NULL; ++ ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts, ++ true, var); ++ if (cond_expr_stmt_list) ++ gimple_seq_add_seq (&cond_expr_stmt_list, stmts); ++ else ++ { ++ pe = loop_preheader_edge (loop); ++ new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts); ++ gcc_assert (!new_bb); ++ } ++ } ++ } ++ else ++ ni_minus_gap_name = ni_name; ++ + /* Create: ratio = ni >> log2(vf) */ + +- ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf); ++ ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_minus_gap_name), ++ ni_minus_gap_name, log_vf); + if (!is_gimple_val (ratio_name)) + { + var = create_tmp_var (TREE_TYPE (ni), "bnd"); +@@ -2312,26 +2342,26 @@ vect_create_cond_for_align_checks (loop_vec_info loop_ + + Input: + DR: The data reference. +- VECT_FACTOR: vectorization factor. ++ LENGTH_FACTOR: segment length to consider. + + Return an expression whose value is the size of segment which will be + accessed by DR. */ + + static tree +-vect_vfa_segment_size (struct data_reference *dr, tree vect_factor) ++vect_vfa_segment_size (struct data_reference *dr, tree length_factor) + { +- tree segment_length = fold_build2 (MULT_EXPR, integer_type_node, +- DR_STEP (dr), vect_factor); +- ++ tree segment_length; ++ segment_length = size_binop (MULT_EXPR, ++ fold_convert (sizetype, DR_STEP (dr)), ++ fold_convert (sizetype, length_factor)); + if (vect_supportable_dr_alignment (dr) == dr_explicit_realign_optimized) + { + tree vector_size = TYPE_SIZE_UNIT + (STMT_VINFO_VECTYPE (vinfo_for_stmt (DR_STMT (dr)))); + +- segment_length = fold_build2 (PLUS_EXPR, integer_type_node, +- segment_length, vector_size); ++ segment_length = size_binop (PLUS_EXPR, segment_length, vector_size); + } +- return fold_convert (sizetype, segment_length); ++ return segment_length; + } + + +@@ -2365,12 +2395,12 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_ + struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); + VEC (ddr_p, heap) * may_alias_ddrs = + LOOP_VINFO_MAY_ALIAS_DDRS (loop_vinfo); +- tree vect_factor = +- build_int_cst (integer_type_node, LOOP_VINFO_VECT_FACTOR (loop_vinfo)); ++ int vect_factor = LOOP_VINFO_VECT_FACTOR (loop_vinfo); ++ tree scalar_loop_iters = LOOP_VINFO_NITERS (loop_vinfo); + + ddr_p ddr; + unsigned int i; +- tree part_cond_expr; ++ tree part_cond_expr, length_factor; + + /* Create expression + ((store_ptr_0 + store_segment_length_0) < load_ptr_0) +@@ -2417,8 +2447,12 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_ + vect_create_addr_base_for_vector_ref (stmt_b, cond_expr_stmt_list, + NULL_TREE, loop); + +- segment_length_a = vect_vfa_segment_size (dr_a, vect_factor); +- segment_length_b = vect_vfa_segment_size (dr_b, vect_factor); ++ if (!operand_equal_p (DR_STEP (dr_a), DR_STEP (dr_b), 0)) ++ length_factor = scalar_loop_iters; ++ else ++ length_factor = size_int (vect_factor); ++ segment_length_a = vect_vfa_segment_size (dr_a, length_factor); ++ segment_length_b = vect_vfa_segment_size (dr_b, length_factor); + + if (vect_print_dump_info (REPORT_DR_DETAILS)) + { diff --git a/lang/gcc45/patches/patch-gcc_tree-vect-loop.c b/lang/gcc45/patches/patch-gcc_tree-vect-loop.c new file mode 100644 index 000000000..259c197ff --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vect-loop.c @@ -0,0 +1,33 @@ +$NetBSD$ + +--- gcc/tree-vect-loop.c.orig Tue Mar 1 17:04:26 2011 ++++ gcc/tree-vect-loop.c +@@ -711,6 +711,7 @@ new_loop_vec_info (struct loop *loop) + LOOP_VINFO_STRIDED_STORES (res) = VEC_alloc (gimple, heap, 10); + LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10); + LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1; ++ LOOP_VINFO_PEELING_FOR_GAPS (res) = false; + + return res; + } +@@ -2053,6 +2054,10 @@ vect_estimate_min_profitable_iters (loop_vec_info loop + peel_iters_prologue = niters < peel_iters_prologue ? + niters : peel_iters_prologue; + peel_iters_epilogue = (niters - peel_iters_prologue) % vf; ++ /* If we need to peel for gaps, but no peeling is required, we have ++ to peel VF iterations. */ ++ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) && !peel_iters_epilogue) ++ peel_iters_epilogue = vf; + } + } + +@@ -4212,7 +4217,8 @@ vect_transform_loop (loop_vec_info loop_vinfo) + do_peeling_for_loop_bound + = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) + || (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) +- && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0)); ++ && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0) ++ || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)); + + if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo) + || LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo)) diff --git a/lang/gcc45/patches/patch-gcc_tree-vect-stmts.c b/lang/gcc45/patches/patch-gcc_tree-vect-stmts.c new file mode 100644 index 000000000..1bb12c1c8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vect-stmts.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- gcc/tree-vect-stmts.c.orig Thu Mar 3 12:22:10 2011 ++++ gcc/tree-vect-stmts.c +@@ -1416,7 +1416,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator * + } + else + { +- vec_oprnd1 = gimple_call_arg (new_stmt, 2*i); ++ vec_oprnd1 = gimple_call_arg (new_stmt, 2*i + 1); + vec_oprnd0 + = vect_get_vec_def_for_stmt_copy (dt[i], vec_oprnd1); + vec_oprnd1 diff --git a/lang/gcc45/patches/patch-gcc_tree-vectorizer.h b/lang/gcc45/patches/patch-gcc_tree-vectorizer.h new file mode 100644 index 000000000..718802ddb --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vectorizer.h @@ -0,0 +1,25 @@ +$NetBSD$ + +--- gcc/tree-vectorizer.h.orig Tue Nov 2 12:12:56 2010 ++++ gcc/tree-vectorizer.h +@@ -242,6 +242,12 @@ typedef struct _loop_vec_info { + /* The unrolling factor needed to SLP the loop. In case of that pure SLP is + applied to the loop, i.e., no unrolling is needed, this is 1. */ + unsigned slp_unrolling_factor; ++ ++ /* When we have strided data accesses with gaps, we may introduce invalid ++ memory accesses. We peel the last iteration of the loop to prevent ++ this. */ ++ bool peeling_for_gaps; ++ + } *loop_vec_info; + + /* Access Functions. */ +@@ -266,6 +272,7 @@ typedef struct _loop_vec_info { + #define LOOP_VINFO_STRIDED_STORES(L) (L)->strided_stores + #define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances + #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor ++#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps + + #define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \ + VEC_length (gimple, (L)->may_misalign_stmts) > 0 diff --git a/lang/gcc45/patches/patch-gcc_tree-vrp.c b/lang/gcc45/patches/patch-gcc_tree-vrp.c new file mode 100644 index 000000000..979a326d2 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_tree-vrp.c @@ -0,0 +1,204 @@ +$NetBSD$ + +--- gcc/tree-vrp.c.orig Tue Jan 25 09:48:07 2011 ++++ gcc/tree-vrp.c +@@ -1,5 +1,5 @@ + /* Support routines for Value Range Propagation (VRP). +- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Diego Novillo . + +@@ -1445,7 +1445,7 @@ extract_range_from_assert (value_range_t *vr_p, tree e + + limit = avoid_overflow_infinity (limit); + +- type = TREE_TYPE (limit); ++ type = TREE_TYPE (var); + gcc_assert (limit != var); + + /* For pointer arithmetic, we only keep track of pointer equality +@@ -1619,8 +1619,8 @@ extract_range_from_assert (value_range_t *vr_p, tree e + /* For LT_EXPR, we create the range [MIN, MAX - 1]. */ + if (cond_code == LT_EXPR) + { +- tree one = build_int_cst (type, 1); +- max = fold_build2 (MINUS_EXPR, type, max, one); ++ tree one = build_int_cst (TREE_TYPE (max), 1); ++ max = fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, one); + if (EXPR_P (max)) + TREE_NO_WARNING (max) = 1; + } +@@ -1654,8 +1654,8 @@ extract_range_from_assert (value_range_t *vr_p, tree e + /* For GT_EXPR, we create the range [MIN + 1, MAX]. */ + if (cond_code == GT_EXPR) + { +- tree one = build_int_cst (type, 1); +- min = fold_build2 (PLUS_EXPR, type, min, one); ++ tree one = build_int_cst (TREE_TYPE (min), 1); ++ min = fold_build2 (PLUS_EXPR, TREE_TYPE (min), min, one); + if (EXPR_P (min)) + TREE_NO_WARNING (min) = 1; + } +@@ -2257,18 +2257,28 @@ extract_range_from_binary_expr (value_range_t *vr, + op0 + op1 == 0, so we cannot claim that the sum is in ~[0,0]. + Note that we are guaranteed to have vr0.type == vr1.type at + this point. */ +- if (code == PLUS_EXPR && vr0.type == VR_ANTI_RANGE) ++ if (vr0.type == VR_ANTI_RANGE) + { +- set_value_range_to_varying (vr); +- return; ++ if (code == PLUS_EXPR) ++ { ++ set_value_range_to_varying (vr); ++ return; ++ } ++ /* For MIN_EXPR and MAX_EXPR with two VR_ANTI_RANGEs, ++ the resulting VR_ANTI_RANGE is the same - intersection ++ of the two ranges. */ ++ min = vrp_int_const_binop (MAX_EXPR, vr0.min, vr1.min); ++ max = vrp_int_const_binop (MIN_EXPR, vr0.max, vr1.max); + } ++ else ++ { ++ /* For operations that make the resulting range directly ++ proportional to the original ranges, apply the operation to ++ the same end of each range. */ ++ min = vrp_int_const_binop (code, vr0.min, vr1.min); ++ max = vrp_int_const_binop (code, vr0.max, vr1.max); ++ } + +- /* For operations that make the resulting range directly +- proportional to the original ranges, apply the operation to +- the same end of each range. */ +- min = vrp_int_const_binop (code, vr0.min, vr1.min); +- max = vrp_int_const_binop (code, vr0.max, vr1.max); +- + /* If both additions overflowed the range kind is still correct. + This happens regularly with subtracting something in unsigned + arithmetic. +@@ -4505,28 +4515,35 @@ find_conditional_asserts (basic_block bb, gimple last) + return need_assert; + } + +-/* Compare two case labels sorting first by the destination label uid ++struct case_info ++{ ++ tree expr; ++ basic_block bb; ++}; ++ ++/* Compare two case labels sorting first by the destination bb index + and then by the case value. */ + + static int + compare_case_labels (const void *p1, const void *p2) + { +- const_tree const case1 = *(const_tree const*)p1; +- const_tree const case2 = *(const_tree const*)p2; +- unsigned int uid1 = DECL_UID (CASE_LABEL (case1)); +- unsigned int uid2 = DECL_UID (CASE_LABEL (case2)); ++ const struct case_info *ci1 = (const struct case_info *) p1; ++ const struct case_info *ci2 = (const struct case_info *) p2; ++ int idx1 = ci1->bb->index; ++ int idx2 = ci2->bb->index; + +- if (uid1 < uid2) ++ if (idx1 < idx2) + return -1; +- else if (uid1 == uid2) ++ else if (idx1 == idx2) + { + /* Make sure the default label is first in a group. */ +- if (!CASE_LOW (case1)) ++ if (!CASE_LOW (ci1->expr)) + return -1; +- else if (!CASE_LOW (case2)) ++ else if (!CASE_LOW (ci2->expr)) + return 1; + else +- return tree_int_cst_compare (CASE_LOW (case1), CASE_LOW (case2)); ++ return tree_int_cst_compare (CASE_LOW (ci1->expr), ++ CASE_LOW (ci2->expr)); + } + else + return 1; +@@ -4547,8 +4564,8 @@ find_switch_asserts (basic_block bb, gimple last) + gimple_stmt_iterator bsi; + tree op; + edge e; +- tree vec2; +- size_t n = gimple_switch_num_labels(last); ++ struct case_info *ci; ++ size_t n = gimple_switch_num_labels (last); + #if GCC_VERSION >= 4000 + unsigned int idx; + #else +@@ -4563,36 +4580,38 @@ find_switch_asserts (basic_block bb, gimple last) + return false; + + /* Build a vector of case labels sorted by destination label. */ +- vec2 = make_tree_vec (n); ++ ci = XNEWVEC (struct case_info, n); + for (idx = 0; idx < n; ++idx) +- TREE_VEC_ELT (vec2, idx) = gimple_switch_label (last, idx); +- qsort (&TREE_VEC_ELT (vec2, 0), n, sizeof (tree), compare_case_labels); ++ { ++ ci[idx].expr = gimple_switch_label (last, idx); ++ ci[idx].bb = label_to_block (CASE_LABEL (ci[idx].expr)); ++ } ++ qsort (ci, n, sizeof (struct case_info), compare_case_labels); + + for (idx = 0; idx < n; ++idx) + { + tree min, max; +- tree cl = TREE_VEC_ELT (vec2, idx); ++ tree cl = ci[idx].expr; ++ basic_block cbb = ci[idx].bb; + + min = CASE_LOW (cl); + max = CASE_HIGH (cl); + + /* If there are multiple case labels with the same destination + we need to combine them to a single value range for the edge. */ +- if (idx + 1 < n +- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx + 1))) ++ if (idx + 1 < n && cbb == ci[idx + 1].bb) + { + /* Skip labels until the last of the group. */ + do { + ++idx; +- } while (idx < n +- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx))); ++ } while (idx < n && cbb == ci[idx].bb); + --idx; + + /* Pick up the maximum of the case label range. */ +- if (CASE_HIGH (TREE_VEC_ELT (vec2, idx))) +- max = CASE_HIGH (TREE_VEC_ELT (vec2, idx)); ++ if (CASE_HIGH (ci[idx].expr)) ++ max = CASE_HIGH (ci[idx].expr); + else +- max = CASE_LOW (TREE_VEC_ELT (vec2, idx)); ++ max = CASE_LOW (ci[idx].expr); + } + + /* Nothing to do if the range includes the default label until we +@@ -4601,7 +4620,7 @@ find_switch_asserts (basic_block bb, gimple last) + continue; + + /* Find the edge to register the assert expr on. */ +- e = find_edge (bb, label_to_block (CASE_LABEL (cl))); ++ e = find_edge (bb, cbb); + + /* Register the necessary assertions for the operand in the + SWITCH_EXPR. */ +@@ -4619,6 +4638,7 @@ find_switch_asserts (basic_block bb, gimple last) + } + } + ++ XDELETEVEC (ci); + return need_assert; + } + diff --git a/lang/gcc45/patches/patch-gcc_unwind-dw2-fde-glibc.c b/lang/gcc45/patches/patch-gcc_unwind-dw2-fde-glibc.c new file mode 100644 index 000000000..5127cef1e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_unwind-dw2-fde-glibc.c @@ -0,0 +1,17 @@ +$NetBSD$ + +--- gcc/unwind-dw2-fde-glibc.c.orig Wed Nov 25 10:55:54 2009 ++++ gcc/unwind-dw2-fde-glibc.c +@@ -57,6 +57,12 @@ + # define USE_PT_GNU_EH_FRAME + #endif + ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ ++ && defined(__NetBSD__) ++# define ElfW(n) Elf_##n ++# define USE_PT_GNU_EH_FRAME ++#endif ++ + #if defined(USE_PT_GNU_EH_FRAME) + + #ifndef __RELOC_POINTER diff --git a/lang/gcc45/patches/patch-gcc_unwind-dw2-fde.c b/lang/gcc45/patches/patch-gcc_unwind-dw2-fde.c new file mode 100644 index 000000000..e20c9b4b8 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_unwind-dw2-fde.c @@ -0,0 +1,14 @@ +$NetBSD$ + +--- gcc/unwind-dw2-fde.c.orig Sun Sep 20 11:03:33 2009 ++++ gcc/unwind-dw2-fde.c +@@ -209,7 +209,9 @@ __deregister_frame_info_bases (const void *begin) + + out: + __gthread_mutex_unlock (&object_mutex); ++#if 0 + gcc_assert (ob); ++#endif + return (void *) ob; + } + diff --git a/lang/gcc45/patches/patch-gcc_unwind-dw2.c b/lang/gcc45/patches/patch-gcc_unwind-dw2.c new file mode 100644 index 000000000..05f311ff1 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_unwind-dw2.c @@ -0,0 +1,19 @@ +$NetBSD$ + +--- gcc/unwind-dw2.c.orig Tue Apr 27 09:41:30 2010 ++++ gcc/unwind-dw2.c +@@ -1076,12 +1076,14 @@ execute_cfa_program (const unsigned char *insn_ptr, + break; + + case DW_CFA_GNU_window_save: ++#ifdef __sparc__ + /* ??? Hardcoded for SPARC register window configuration. */ + for (reg = 16; reg < 32; ++reg) + { + fs->regs.reg[reg].how = REG_SAVED_OFFSET; + fs->regs.reg[reg].loc.offset = (reg - 16) * sizeof (void *); + } ++#endif + break; + + case DW_CFA_GNU_args_size: diff --git a/lang/gcc45/patches/patch-gcc_var-tracking.c b/lang/gcc45/patches/patch-gcc_var-tracking.c new file mode 100644 index 000000000..e9a33c98e --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_var-tracking.c @@ -0,0 +1,39 @@ +$NetBSD$ + +--- gcc/var-tracking.c.orig Sat Nov 6 06:28:59 2010 ++++ gcc/var-tracking.c +@@ -4134,8 +4134,9 @@ find_mem_expr_in_1pdv (tree expr, rtx val, htab_t vars + VALUE_RECURSED_INTO (val) = true; + + for (node = var->var_part[0].loc_chain; node; node = node->next) +- if (MEM_P (node->loc) && MEM_EXPR (node->loc) == expr +- && MEM_OFFSET (node->loc) == 0) ++ if (MEM_P (node->loc) ++ && MEM_EXPR (node->loc) == expr ++ && INT_MEM_OFFSET (node->loc) == 0) + { + where = node; + break; +@@ -4198,11 +4199,10 @@ dataflow_set_preserve_mem_locs (void **slot, void *dat + { + for (loc = var->var_part[0].loc_chain; loc; loc = loc->next) + { +- /* We want to remove dying MEMs that doesn't refer to +- DECL. */ ++ /* We want to remove dying MEMs that doesn't refer to DECL. */ + if (GET_CODE (loc->loc) == MEM + && (MEM_EXPR (loc->loc) != decl +- || MEM_OFFSET (loc->loc)) ++ || INT_MEM_OFFSET (loc->loc) != 0) + && !mem_dies_at_call (loc->loc)) + break; + /* We want to move here MEMs that do refer to DECL. */ +@@ -4246,7 +4246,7 @@ dataflow_set_preserve_mem_locs (void **slot, void *dat + + if (GET_CODE (loc->loc) != MEM + || (MEM_EXPR (loc->loc) == decl +- && MEM_OFFSET (loc->loc) == 0) ++ && INT_MEM_OFFSET (loc->loc) == 0) + || !mem_dies_at_call (loc->loc)) + { + if (old_loc != loc->loc && emit_notes) diff --git a/lang/gcc45/patches/patch-gcc_varasm.c b/lang/gcc45/patches/patch-gcc_varasm.c new file mode 100644 index 000000000..5e62010a4 --- /dev/null +++ b/lang/gcc45/patches/patch-gcc_varasm.c @@ -0,0 +1,67 @@ +$NetBSD$ + +--- gcc/varasm.c.orig Tue Mar 8 13:03:34 2011 ++++ gcc/varasm.c +@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "pointer-set.h" + #include "tm.h" + #include "rtl.h" + #include "tree.h" +@@ -2302,6 +2303,19 @@ contains_pointers_p (tree type) + it all the way to final. See PR 17982 for further discussion. */ + static GTY(()) tree pending_assemble_externals; + ++/* FIXME: Trunk is at GCC 4.8 now and the above problem still hasn't been ++ addressed properly. This caused PR 52640 due to O(external_decls**2) ++ lookups in the pending_assemble_externals TREE_LIST in assemble_external. ++ Paper over with this pointer set, which we use to see if we have already ++ added a decl to pending_assemble_externals without first traversing ++ the entire pending_assemble_externals list. See assemble_external(). */ ++static struct pointer_set_t *pending_assemble_externals_set; ++ ++/* Some targets delay some output to final using TARGET_ASM_FILE_END. ++ As a result, assemble_external can be called after the list of externals ++ is processed and the pointer set destroyed. */ ++static bool pending_assemble_externals_processed; ++ + #ifdef ASM_OUTPUT_EXTERNAL + /* True if DECL is a function decl for which no out-of-line copy exists. + It is assumed that DECL's assembler name has been set. */ +@@ -2351,6 +2365,8 @@ process_pending_assemble_externals (void) + assemble_external_real (TREE_VALUE (list)); + + pending_assemble_externals = 0; ++ pending_assemble_externals_processed = true; ++ pointer_set_destroy (pending_assemble_externals_set); + #endif + } + +@@ -2391,7 +2407,13 @@ assemble_external (tree decl ATTRIBUTE_UNUSED) + weak_decls = tree_cons (NULL, decl, weak_decls); + + #ifdef ASM_OUTPUT_EXTERNAL +- if (value_member (decl, pending_assemble_externals) == NULL_TREE) ++ if (pending_assemble_externals_processed) ++ { ++ assemble_external_real (decl); ++ return; ++ } ++ ++ if (! pointer_set_insert (pending_assemble_externals_set, decl)) + pending_assemble_externals = tree_cons (NULL, decl, + pending_assemble_externals); + #endif +@@ -5952,6 +5974,10 @@ init_varasm_once (void) + + if (readonly_data_section == NULL) + readonly_data_section = text_section; ++ ++#ifdef ASM_OUTPUT_EXTERNAL ++ pending_assemble_externals_set = pointer_set_create (); ++#endif + } + + enum tls_model diff --git a/lang/gcc45/patches/patch-include_ChangeLog b/lang/gcc45/patches/patch-include_ChangeLog new file mode 100644 index 000000000..43a6c8bc1 --- /dev/null +++ b/lang/gcc45/patches/patch-include_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- include/ChangeLog.orig Thu Apr 28 14:09:36 2011 ++++ include/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-include_objalloc.h b/lang/gcc45/patches/patch-include_objalloc.h new file mode 100644 index 000000000..fed484654 --- /dev/null +++ b/lang/gcc45/patches/patch-include_objalloc.h @@ -0,0 +1,20 @@ +$NetBSD$ + +--- include/objalloc.h.orig Tue May 10 15:22:21 2005 ++++ include/objalloc.h +@@ -1,5 +1,5 @@ + /* objalloc.h -- routines to allocate memory for objects +- Copyright 1997, 2001 Free Software Foundation, Inc. ++ Copyright 1997-2012 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Solutions. + + This program is free software; you can redistribute it and/or modify it +@@ -91,7 +91,7 @@ extern void *_objalloc_alloc (struct objalloc *, unsig + if (__len == 0) \ + __len = 1; \ + __len = (__len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1); \ +- (__len <= __o->current_space \ ++ (__len != 0 && __len <= __o->current_space \ + ? (__o->current_ptr += __len, \ + __o->current_space -= __len, \ + (void *) (__o->current_ptr - __len)) \ diff --git a/lang/gcc45/patches/patch-intl_ChangeLog b/lang/gcc45/patches/patch-intl_ChangeLog new file mode 100644 index 000000000..14e9740ef --- /dev/null +++ b/lang/gcc45/patches/patch-intl_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- intl/ChangeLog.orig Thu Apr 28 14:09:12 2011 ++++ intl/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libcpp_ChangeLog b/lang/gcc45/patches/patch-libcpp_ChangeLog new file mode 100644 index 000000000..66a23b67a --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libcpp/ChangeLog.orig Thu Apr 28 14:10:07 2011 ++++ libcpp/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libcpp_Makefile.in b/lang/gcc45/patches/patch-libcpp_Makefile.in new file mode 100644 index 000000000..3a017f876 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_Makefile.in @@ -0,0 +1,13 @@ +$NetBSD$ + +--- libcpp/Makefile.in.orig Thu Apr 28 14:31:38 2011 ++++ libcpp/Makefile.in +@@ -141,7 +141,7 @@ $(srcdir)/config.in: @MAINT@ $(srcdir)/configure.ac + localedir.h: localedir.hs; @true + localedir.hs: Makefile + echo "#define LOCALEDIR \"$(localedir)\"" > localedir.new +- $(srcdir)/../move-if-change localedir.new localedir.h ++ $(SHELL) $(srcdir)/../move-if-change localedir.new localedir.h + echo timestamp > localedir.hs + + # Installation rules and other phony targets diff --git a/lang/gcc45/patches/patch-libcpp_configure b/lang/gcc45/patches/patch-libcpp_configure new file mode 100644 index 000000000..a5b3eb17a --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_configure @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libcpp/configure.orig Thu Apr 28 14:31:38 2011 ++++ libcpp/configure +@@ -6870,6 +6870,7 @@ fi + case $target in + alpha*-*-* | \ + arm*-*-*eabi* | \ ++ arm*-*-minix* | \ + arm*-*-symbianelf* | \ + x86_64-*-* | \ + ia64-*-* | \ diff --git a/lang/gcc45/patches/patch-libcpp_files.c b/lang/gcc45/patches/patch-libcpp_files.c new file mode 100644 index 000000000..a53044e05 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_files.c @@ -0,0 +1,46 @@ +$NetBSD$ + +--- libcpp/files.c.orig Tue Sep 22 08:37:31 2009 ++++ libcpp/files.c +@@ -30,6 +30,7 @@ along with this program; see the file COPYING3. If no + #include "obstack.h" + #include "hashtab.h" + #include "md5.h" ++#include "../gcc/defaults.h" + #include + + /* Variable length record files on VMS will have a stat size that includes +@@ -219,20 +220,32 @@ static bool check_file_against_entries (cpp_reader *, + static bool + open_file (_cpp_file *file) + { ++ const char *cpp_restricted; ++ ++ GET_ENVIRONMENT(cpp_restricted, "CPP_RESTRICTED"); ++ + if (file->path[0] == '\0') + { + file->fd = 0; + set_stdin_to_binary_mode (); + } + else +- file->fd = open (file->path, O_RDONLY | O_NOCTTY | O_BINARY, 0666); ++ file->fd = open (file->path, O_RDONLY | O_NOCTTY | O_BINARY ++ | (cpp_restricted != NULL) ? O_NONBLOCK : 0, 0666); + ++ + if (file->fd != -1) + { + if (fstat (file->fd, &file->st) == 0) + { + if (!S_ISDIR (file->st.st_mode)) ++ if (cpp_restricted != NULL ++ ? S_ISREG (file->st.st_mode) : !S_ISDIR (file->st.st_mode)) ++ + { ++ if (cpp_restricted) ++ fcntl(file->fd, F_SETFL, ++ fcntl(file->fd, F_GETFL, 0) & ~O_NONBLOCK); + file->err_no = 0; + return true; + } diff --git a/lang/gcc45/patches/patch-libcpp_include_cpplib.h b/lang/gcc45/patches/patch-libcpp_include_cpplib.h new file mode 100644 index 000000000..efb41cd5b --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_include_cpplib.h @@ -0,0 +1,14 @@ +$NetBSD$ + +--- libcpp/include/cpplib.h.orig Fri Nov 20 08:18:16 2009 ++++ libcpp/include/cpplib.h +@@ -674,6 +674,9 @@ extern void cpp_set_lang (cpp_reader *, enum c_lang); + /* Set the include paths. */ + extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int); + ++/* Provide src:dst pair for __FILE__ remapping. */ ++extern void add_cpp_remap_path (const char *); ++ + /* Call these to get pointers to the options, callback, and deps + structures for a given reader. These pointers are good until you + call cpp_finish on that reader. You can either edit the callbacks diff --git a/lang/gcc45/patches/patch-libcpp_init.c b/lang/gcc45/patches/patch-libcpp_init.c new file mode 100644 index 000000000..010082565 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_init.c @@ -0,0 +1,14 @@ +$NetBSD$ + +--- libcpp/init.c.orig Thu Feb 11 19:49:17 2010 ++++ libcpp/init.c +@@ -25,7 +25,9 @@ along with this program; see the file COPYING3. If no + #include "cpplib.h" + #include "internal.h" + #include "mkdeps.h" ++#ifdef ENABLE_NLS + #include "localedir.h" ++#endif + + static void init_library (void); + static void mark_named_operators (cpp_reader *, int); diff --git a/lang/gcc45/patches/patch-libcpp_internal.h b/lang/gcc45/patches/patch-libcpp_internal.h new file mode 100644 index 000000000..18a9db7a3 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_internal.h @@ -0,0 +1,14 @@ +$NetBSD$ + +--- libcpp/internal.h.orig Mon Mar 29 20:07:29 2010 ++++ libcpp/internal.h +@@ -179,6 +179,9 @@ struct lexer_state + /* Nonzero if first token on line is CPP_HASH. */ + unsigned char in_directive; + ++ /* Nonzero if we are collecting macro arguments */ ++ unsigned char collecting_args; ++ + /* Nonzero if in a directive that will handle padding tokens itself. + #include needs this to avoid problems with computed include and + spacing between tokens. */ diff --git a/lang/gcc45/patches/patch-libcpp_lex.c b/lang/gcc45/patches/patch-libcpp_lex.c new file mode 100644 index 000000000..ef66b7305 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_lex.c @@ -0,0 +1,31 @@ +$NetBSD$ + +--- libcpp/lex.c.orig Tue Apr 26 10:04:18 2011 ++++ libcpp/lex.c +@@ -1092,6 +1092,8 @@ save_comment (cpp_reader *pfile, cpp_token *token, con + { + unsigned char *buffer; + unsigned int len, clen; ++ int convert_to_c = (pfile->state.in_directive || pfile->state.collecting_args) ++ && type == '/'; + + len = pfile->buffer->cur - from + 1; /* + 1 for the initial '/'. */ + +@@ -1106,7 +1108,7 @@ save_comment (cpp_reader *pfile, cpp_token *token, con + + Note that the only time we encounter a directive here is + when we are saving comments in a "#define". */ +- clen = (pfile->state.in_directive && type == '/') ? len + 2 : len; ++ clen = convert_to_c ? len + 2 : len; + + buffer = _cpp_unaligned_alloc (pfile, clen); + +@@ -1118,7 +1120,7 @@ save_comment (cpp_reader *pfile, cpp_token *token, con + memcpy (buffer + 1, from, len - 1); + + /* Finish conversion to a C comment, if necessary. */ +- if (pfile->state.in_directive && type == '/') ++ if (convert_to_c) + { + buffer[1] = '*'; + buffer[clen - 2] = '*'; diff --git a/lang/gcc45/patches/patch-libcpp_macro.c b/lang/gcc45/patches/patch-libcpp_macro.c new file mode 100644 index 000000000..d10c6ed03 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_macro.c @@ -0,0 +1,106 @@ +$NetBSD$ + +--- libcpp/macro.c.orig Fri Nov 20 08:18:16 2009 ++++ libcpp/macro.c +@@ -111,6 +111,61 @@ static const char * const monthnames[] = + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; + ++static size_t remap_pairs; ++static char **remap_src; ++static char **remap_dst; ++ ++void ++add_cpp_remap_path (const char *arg) ++{ ++ const char *arg_dst; ++ size_t len; ++ ++ arg_dst = strchr(arg, ':'); ++ if (arg_dst == NULL) { ++ fprintf(stderr, "Invalid argument for -iremap"); ++ exit(1); ++ } ++ len = arg_dst - arg; ++ ++arg_dst; ++ ++ remap_src = (char **) xrealloc(remap_src, sizeof(char *) * (remap_pairs + 1)); ++ remap_dst = (char **) xrealloc(remap_dst, sizeof(char *) * (remap_pairs + 1)); ++ ++ remap_src[remap_pairs] = (char *) xmalloc(len + 1); ++ memcpy(remap_src[remap_pairs], arg, len); ++ remap_src[remap_pairs][len] = '\0'; ++ remap_dst[remap_pairs] = xstrdup(arg_dst); ++ ++remap_pairs; ++} ++ ++static const char * ++cpp_remap_file (const char *arg, char **tmp_name) ++{ ++ char *result; ++ size_t i, len; ++ ++ for (i = 0; i < remap_pairs; ++i) { ++ len = strlen (remap_src[i]); ++ if (strncmp (remap_src[i], arg, len)) ++ continue; ++ if (arg[len] == '\0') ++ return xstrdup (remap_dst[i]); ++ if (arg[len] != '/') ++ continue; ++ arg += len; ++ len = strlen (remap_dst[i]); ++ result = (char *) xmalloc (len + strlen (arg) + 1); ++ memcpy(result, remap_dst[i], len); ++ strcpy(result + len, arg); ++ *tmp_name = result; ++ ++ return result; ++ } ++ ++ return arg; ++} ++ + /* Helper function for builtin_macro. Returns the text generated by + a builtin macro. */ + const uchar * +@@ -170,6 +225,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashno + { + unsigned int len; + const char *name; ++ char *tmp_name; + uchar *buf; + map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line); + +@@ -177,12 +233,14 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashno + while (! MAIN_FILE_P (map)) + map = INCLUDED_FROM (pfile->line_table, map); + +- name = map->to_file; ++ tmp_name = NULL; ++ name = cpp_remap_file (map->to_file, &tmp_name); + len = strlen (name); + buf = _cpp_unaligned_alloc (pfile, len * 2 + 3); + result = buf; + *buf = '"'; + buf = cpp_quote_string (buf + 1, (const unsigned char *) name, len); ++ free (tmp_name); + *buf++ = '"'; + *buf = '\0'; + } +@@ -607,6 +665,7 @@ collect_args (cpp_reader *pfile, const cpp_hashnode *n + memset (args, 0, argc * sizeof (macro_arg)); + buff->cur = (unsigned char *) &args[argc]; + arg = args, argc = 0; ++ pfile->state.collecting_args = 1; + + /* Collect the tokens making up each argument. We don't yet know + how many arguments have been supplied, whether too many or too +@@ -721,6 +780,7 @@ collect_args (cpp_reader *pfile, const cpp_hashnode *n + } + } + while (token->type != CPP_CLOSE_PAREN && token->type != CPP_EOF); ++ pfile->state.collecting_args = 0; + + if (token->type == CPP_EOF) + { diff --git a/lang/gcc45/patches/patch-libcpp_po_ChangeLog b/lang/gcc45/patches/patch-libcpp_po_ChangeLog new file mode 100644 index 000000000..03fb2bc65 --- /dev/null +++ b/lang/gcc45/patches/patch-libcpp_po_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libcpp/po/ChangeLog.orig Thu Apr 28 14:10:01 2011 ++++ libcpp/po/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libdecnumber_ChangeLog b/lang/gcc45/patches/patch-libdecnumber_ChangeLog new file mode 100644 index 000000000..fb8efb90e --- /dev/null +++ b/lang/gcc45/patches/patch-libdecnumber_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libdecnumber/ChangeLog.orig Thu Apr 28 14:08:32 2011 ++++ libdecnumber/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libgcc_ChangeLog b/lang/gcc45/patches/patch-libgcc_ChangeLog new file mode 100644 index 000000000..94924e560 --- /dev/null +++ b/lang/gcc45/patches/patch-libgcc_ChangeLog @@ -0,0 +1,27 @@ +$NetBSD$ + +--- libgcc/ChangeLog.orig Thu Apr 28 14:11:15 2011 ++++ libgcc/ChangeLog +@@ -1,3 +1,13 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-08-23 Uros Bizjak ++ ++ * config/i386/64/sfp-machine.h (ASM_INVALID): New define. ++ (ASM_DIVZERO): Ditto. ++ (FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. +@@ -21,7 +31,7 @@ + 2010-09-12 Gerald Pfeifer + Andrew Pinski + +- PR target/40959 ++ PR target/40959 + * config.host (ia64*-*-freebsd*): Set extra_parts. Set tmake_file. + + 2010-07-31 Release Manager diff --git a/lang/gcc45/patches/patch-libgcc_config.host b/lang/gcc45/patches/patch-libgcc_config.host new file mode 100644 index 000000000..bcb635128 --- /dev/null +++ b/lang/gcc45/patches/patch-libgcc_config.host @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libgcc/config.host.orig Wed May 21 19:48:59 2014 ++++ libgcc/config.host +@@ -203,6 +203,8 @@ arm-wrs-vxworks) + ;; + arm*-*-freebsd*) + ;; ++arm*-*-minix*) ++ ;; + arm*-*-netbsdelf*) + ;; + arm*-*-netbsd*) +@@ -279,6 +281,8 @@ x86_64-*-darwin*) + i[34567]86-*-elf*) + ;; + x86_64-*-elf*) ++ ;; ++i[34567]86-*-minix*) + ;; + i[34567]86-*-freebsd*) + ;; diff --git a/lang/gcc45/patches/patch-libgcc_config_i386_64_sfp-machine.h b/lang/gcc45/patches/patch-libgcc_config_i386_64_sfp-machine.h new file mode 100644 index 000000000..5cc9f00b6 --- /dev/null +++ b/lang/gcc45/patches/patch-libgcc_config_i386_64_sfp-machine.h @@ -0,0 +1,32 @@ +$NetBSD$ + +--- libgcc/config/i386/64/sfp-machine.h.orig Mon Jun 22 14:04:19 2009 ++++ libgcc/config/i386/64/sfp-machine.h +@@ -79,17 +79,25 @@ struct fenv + unsigned short int __unused5; + }; + ++#ifdef __AVX__ ++ #define ASM_INVALID "vdivss %0, %0, %0" ++ #define ASM_DIVZERO "vdivss %1, %0, %0" ++#else ++ #define ASM_INVALID "divss %0, %0" ++ #define ASM_DIVZERO "divss %1, %0" ++#endif ++ + #define FP_HANDLE_EXCEPTIONS \ + do { \ + if (_fex & FP_EX_INVALID) \ + { \ + float f = 0.0; \ +- __asm__ __volatile__ ("divss %0, %0 " : : "x" (f)); \ ++ __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \ + } \ + if (_fex & FP_EX_DIVZERO) \ + { \ + float f = 1.0, g = 0.0; \ +- __asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g)); \ ++ __asm__ __volatile__ (ASM_DIVZERO : : "x" (f), "x" (g)); \ + } \ + if (_fex & FP_EX_OVERFLOW) \ + { \ diff --git a/lang/gcc45/patches/patch-libgcc_config_libbid_ChangeLog b/lang/gcc45/patches/patch-libgcc_config_libbid_ChangeLog new file mode 100644 index 000000000..2f1bea9a4 --- /dev/null +++ b/lang/gcc45/patches/patch-libgcc_config_libbid_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libgcc/config/libbid/ChangeLog.orig Thu Apr 28 14:11:21 2011 ++++ libgcc/config/libbid/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libgcc_config_t-slibgcc-darwin b/lang/gcc45/patches/patch-libgcc_config_t-slibgcc-darwin deleted file mode 100644 index d786fb452..000000000 --- a/lang/gcc45/patches/patch-libgcc_config_t-slibgcc-darwin +++ /dev/null @@ -1,26 +0,0 @@ -$NetBSD: patch-libgcc_config_t-slibgcc-darwin,v 1.1 2014/05/08 10:14:46 pho Exp $ - -If we don't install libgcc_s.10.[45].dylib, our gcc links binaries -with *both* /usr/lib/libgcc_s.1.dylib and -${GCC_PREFIX}/lib/libgcc_s.1.dylib, which is certainly a bad thing. - -The problem was already reported to the upstream but it caught -seemingly no attention: -http://gcc.gnu.org/ml/gcc-help/2010-07/msg00164.html - ---- libgcc/config/t-slibgcc-darwin.orig 2010-02-02 08:18:48.000000000 +0000 -+++ libgcc/config/t-slibgcc-darwin -@@ -26,13 +26,7 @@ SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.a - SHLIB_MKMAP_OPTS = -v leading_underscore=1 - SHLIB_MAPFILES += $(gcc_srcdir)/libgcc-std.ver $(gcc_srcdir)/libgcc-libsystem.ver - --# we're only going to build the stubs if the target slib is /usr/lib --# there is no other case in which they're useful in a live system. --ifeq (/usr/lib,$(shlib_slibdir)) - LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib --else --LGCC_STUBS = --endif - - LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) - LGCC_FILES += $(LGCC_STUBS) diff --git a/lang/gcc45/patches/patch-libgomp_ChangeLog b/lang/gcc45/patches/patch-libgomp_ChangeLog new file mode 100644 index 000000000..38d08977d --- /dev/null +++ b/lang/gcc45/patches/patch-libgomp_ChangeLog @@ -0,0 +1,24 @@ +$NetBSD$ + +--- libgomp/ChangeLog.orig Thu Apr 28 14:09:48 2011 ++++ libgomp/ChangeLog +@@ -1,3 +1,19 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-05-06 Jakub Jelinek ++ ++ PR fortran/48894 ++ * fortran.c: Include limits.h. ++ (TO_INT): Define. ++ (omp_set_dynamic_8_, omp_set_num_threads_8_): Use !!*set instead of ++ *set. ++ (omp_set_num_threads_8_, omp_set_schedule_8_, ++ omp_set_max_active_levels_8_, omp_get_ancestor_thread_num_8_, ++ omp_get_team_size_8_): Use TO_INT macro. ++ * testsuite/libgomp.fortran/pr48894.f90: New test. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libgomp_fortran.c b/lang/gcc45/patches/patch-libgomp_fortran.c new file mode 100644 index 000000000..3dcbaafcf --- /dev/null +++ b/lang/gcc45/patches/patch-libgomp_fortran.c @@ -0,0 +1,90 @@ +$NetBSD$ + +--- libgomp/fortran.c.orig Thu Apr 9 15:00:19 2009 ++++ libgomp/fortran.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2005, 2007, 2008, 2009, 2011 Free Software Foundation, Inc. + Contributed by Jakub Jelinek . + + This file is part of the GNU OpenMP Library (libgomp). +@@ -27,6 +27,7 @@ + #include "libgomp.h" + #include "libgomp_f.h" + #include ++#include + + #ifdef HAVE_ATTRIBUTE_ALIAS + /* Use internal aliases if possible. */ +@@ -244,6 +245,8 @@ omp_lock_symver (omp_unset_nest_lock_) + omp_lock_symver (omp_test_nest_lock_) + #endif + ++#define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN) ++ + void + omp_set_dynamic_ (const int32_t *set) + { +@@ -253,7 +256,7 @@ omp_set_dynamic_ (const int32_t *set) + void + omp_set_dynamic_8_ (const int64_t *set) + { +- omp_set_dynamic (*set); ++ omp_set_dynamic (!!*set); + } + + void +@@ -265,7 +268,7 @@ omp_set_nested_ (const int32_t *set) + void + omp_set_nested_8_ (const int64_t *set) + { +- omp_set_nested (*set); ++ omp_set_nested (!!*set); + } + + void +@@ -277,7 +280,7 @@ omp_set_num_threads_ (const int32_t *set) + void + omp_set_num_threads_8_ (const int64_t *set) + { +- omp_set_num_threads (*set); ++ omp_set_num_threads (TO_INT (*set)); + } + + int32_t +@@ -343,7 +346,7 @@ omp_set_schedule_ (const int32_t *kind, const int32_t + void + omp_set_schedule_8_ (const int32_t *kind, const int64_t *modifier) + { +- omp_set_schedule (*kind, *modifier); ++ omp_set_schedule (*kind, TO_INT (*modifier)); + } + + void +@@ -381,7 +384,7 @@ omp_set_max_active_levels_ (const int32_t *levels) + void + omp_set_max_active_levels_8_ (const int64_t *levels) + { +- omp_set_max_active_levels (*levels); ++ omp_set_max_active_levels (TO_INT (*levels)); + } + + int32_t +@@ -405,7 +408,7 @@ omp_get_ancestor_thread_num_ (const int32_t *level) + int32_t + omp_get_ancestor_thread_num_8_ (const int64_t *level) + { +- return omp_get_ancestor_thread_num (*level); ++ return omp_get_ancestor_thread_num (TO_INT (*level)); + } + + int32_t +@@ -417,7 +420,7 @@ omp_get_team_size_ (const int32_t *level) + int32_t + omp_get_team_size_8_ (const int64_t *level) + { +- return omp_get_team_size (*level); ++ return omp_get_team_size (TO_INT (*level)); + } + + int32_t diff --git a/lang/gcc45/patches/patch-libgomp_libgomp.info b/lang/gcc45/patches/patch-libgomp_libgomp.info new file mode 100644 index 000000000..85d124ca2 --- /dev/null +++ b/lang/gcc45/patches/patch-libgomp_libgomp.info @@ -0,0 +1,11 @@ +$NetBSD$ + +--- libgomp/libgomp.info.orig Wed May 21 19:43:28 2014 ++++ libgomp/libgomp.info +@@ -1,5 +1,5 @@ + This is libgomp.info, produced by makeinfo version 4.12 from +-/space/rguenther/gcc-4.5.3/gcc-4.5.3/libgomp/libgomp.texi. ++/space/rguenther/gcc-4.5.4/gcc-4.5.4/libgomp/libgomp.texi. + + Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. + diff --git a/lang/gcc45/patches/patch-libgomp_testsuite_libgomp.fortran_pr48894.f90 b/lang/gcc45/patches/patch-libgomp_testsuite_libgomp.fortran_pr48894.f90 new file mode 100644 index 000000000..f102ee647 --- /dev/null +++ b/lang/gcc45/patches/patch-libgomp_testsuite_libgomp.fortran_pr48894.f90 @@ -0,0 +1,28 @@ +$NetBSD$ + +--- libgomp/testsuite/libgomp.fortran/pr48894.f90.orig Wed May 21 19:48:59 2014 ++++ libgomp/testsuite/libgomp.fortran/pr48894.f90 +@@ -0,0 +1,23 @@ ++! PR fortran/48894 ++! { dg-do run } ++! { dg-options "-fdefault-integer-8" } ++ ++ use omp_lib ++ integer, parameter :: zero = 0 ++ integer :: err ++ logical :: l ++ err = 0 ++ !$omp parallel ++ !$omp parallel private (l) ++ l = omp_get_ancestor_thread_num (-HUGE (zero)) .ne. -1 ++ l = l .or. (omp_get_ancestor_thread_num (HUGE (zero)) .ne. -1) ++ l = l .or. (omp_get_team_size (-HUGE (zero)) .ne. -1) ++ l = l .or. (omp_get_team_size (HUGE (zero)) .ne. -1) ++ if (l) then ++ !$omp atomic ++ err = err + 1 ++ endif ++ !$omp end parallel ++ !$omp end parallel ++ if (err .ne. 0) call abort ++end diff --git a/lang/gcc45/patches/patch-libiberty_ChangeLog b/lang/gcc45/patches/patch-libiberty_ChangeLog new file mode 100644 index 000000000..457050a9d --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_ChangeLog @@ -0,0 +1,62 @@ +$NetBSD$ + +--- libiberty/ChangeLog.orig Thu Apr 28 14:10:57 2011 ++++ libiberty/ChangeLog +@@ -1,3 +1,30 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2012-02-09 Jakub Jelinek ++ ++ Backported from mainline ++ 2012-01-26 Jakub Jelinek ++ ++ * make-relative-prefix.c (make_relative_prefix_1): Avoid warning ++ about using preprocessor directives inside of macro arguments. ++ ++ 2012-01-02 Jakub Jelinek ++ ++ * make-relative-prefix.c (make_relative_prefix_1): Avoid ++ stack overflow if PATH contains just a single entry and ++ HOST_EXECUTABLE_SUFFIX needs to be used. ++ ++ PR driver/48306 ++ * make-relative-prefix.c: Include sys/stat.h. ++ (make_relative_prefix_1): If access succeeds, check also stat ++ if nstore is a regular file. ++ ++2011-08-06 Uros Bizjak ++ ++ * testsuite/test-expandargv.c (writeout_test): Check result of fwrite. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. +@@ -284,7 +311,7 @@ + + 2009-04-29 Julian Brown + +- * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT. ++ * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT. + (pex_win32_exec_child): Ensure each process has only one handle open + on pipe endpoints. Close standard input after creating child for + symmetry with standard output/standard error. +@@ -302,7 +329,7 @@ + section, so that the native build does detect them at configure + time. + * configure: Regenerated. +- ++ + 2009-04-13 Ozkan Sezer + + PR target/39397 +@@ -402,7 +429,7 @@ + 2008-10-08 David Edelsohn + + * xstrdup.c: Include after "config.h" +- ++ + 2008-10-07 Jan Kratochvil + + * configure.ac: Call AC_SYS_LARGEFILE. diff --git a/lang/gcc45/patches/patch-libiberty_floatformat.c b/lang/gcc45/patches/patch-libiberty_floatformat.c new file mode 100644 index 000000000..82dfd38cf --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_floatformat.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- libiberty/floatformat.c.orig Tue Nov 13 00:37:43 2007 ++++ libiberty/floatformat.c +@@ -473,7 +473,11 @@ floatformat_to_double (const struct floatformat *fmt, + if (nan) + dto = NAN; + else ++#ifdef __vax__ ++ dto = HUGE_VAL; ++#else + dto = INFINITY; ++#endif + + if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1)) + dto = -dto; diff --git a/lang/gcc45/patches/patch-libiberty_make-relative-prefix.c b/lang/gcc45/patches/patch-libiberty_make-relative-prefix.c new file mode 100644 index 000000000..18fd262d9 --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_make-relative-prefix.c @@ -0,0 +1,57 @@ +$NetBSD$ + +--- libiberty/make-relative-prefix.c.orig Mon Mar 24 17:11:21 2008 ++++ libiberty/make-relative-prefix.c +@@ -57,6 +57,9 @@ relative prefix can be found, return @code{NULL}. + #ifdef HAVE_UNISTD_H + #include + #endif ++#ifdef HAVE_SYS_STAT_H ++#include ++#endif + + #include + +@@ -244,10 +247,15 @@ make_relative_prefix_1 (const char *progname, const ch + { + char *startp, *endp, *nstore; + size_t prefixlen = strlen (temp) + 1; ++ size_t len; + if (prefixlen < 2) + prefixlen = 2; + +- nstore = (char *) alloca (prefixlen + strlen (progname) + 1); ++ len = prefixlen + strlen (progname) + 1; ++#ifdef HAVE_HOST_EXECUTABLE_SUFFIX ++ len += strlen (HOST_EXECUTABLE_SUFFIX); ++#endif ++ nstore = (char *) alloca (len); + + startp = endp = temp; + while (1) +@@ -262,7 +270,7 @@ make_relative_prefix_1 (const char *progname, const ch + } + else + { +- strncpy (nstore, startp, endp - startp); ++ memcpy (nstore, startp, endp - startp); + if (! IS_DIR_SEPARATOR (endp[-1])) + { + nstore[endp - startp] = DIR_SEPARATOR; +@@ -278,8 +286,14 @@ make_relative_prefix_1 (const char *progname, const ch + #endif + ) + { +- progname = nstore; +- break; ++#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG) ++ struct stat st; ++ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode)) ++#endif ++ { ++ progname = nstore; ++ break; ++ } + } + + if (*endp == 0) diff --git a/lang/gcc45/patches/patch-libiberty_objalloc.c b/lang/gcc45/patches/patch-libiberty_objalloc.c new file mode 100644 index 000000000..2d85bb7de --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_objalloc.c @@ -0,0 +1,34 @@ +$NetBSD$ + +--- libiberty/objalloc.c.orig Fri Jul 22 03:21:19 2005 ++++ libiberty/objalloc.c +@@ -1,5 +1,5 @@ + /* objalloc.c -- routines to allocate memory for objects +- Copyright 1997 Free Software Foundation, Inc. ++ Copyright 1997-2012 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Solutions. + + This program is free software; you can redistribute it and/or modify it +@@ -112,14 +112,21 @@ objalloc_create (void) + /* Allocate space from an objalloc structure. */ + + PTR +-_objalloc_alloc (struct objalloc *o, unsigned long len) ++_objalloc_alloc (struct objalloc *o, unsigned long original_len) + { ++ unsigned long len = original_len; ++ + /* We avoid confusion from zero sized objects by always allocating + at least 1 byte. */ + if (len == 0) + len = 1; + + len = (len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1); ++ ++ /* Check for overflow in the alignment operation above and the ++ malloc argument below. */ ++ if (len + CHUNK_HEADER_SIZE < original_len) ++ return NULL; + + if (len <= o->current_space) + { diff --git a/lang/gcc45/patches/patch-libiberty_strerror.c b/lang/gcc45/patches/patch-libiberty_strerror.c new file mode 100644 index 000000000..b899e2a12 --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_strerror.c @@ -0,0 +1,13 @@ +$NetBSD$ + +--- libiberty/strerror.c.orig Mon Mar 28 01:28:01 2005 ++++ libiberty/strerror.c +@@ -347,7 +347,7 @@ static const struct error_info error_table[] = + ENTRY(EPROTOTYPE, "EPROTOTYPE", "Protocol wrong type for socket"), + #endif + #if defined (ENOPROTOOPT) +- ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol not available"), ++ ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol option not available"), + #endif + #if defined (EPROTONOSUPPORT) + ENTRY(EPROTONOSUPPORT, "EPROTONOSUPPORT", "Protocol not supported"), diff --git a/lang/gcc45/patches/patch-libiberty_testsuite_test-expandargv.c b/lang/gcc45/patches/patch-libiberty_testsuite_test-expandargv.c new file mode 100644 index 000000000..06f688193 --- /dev/null +++ b/lang/gcc45/patches/patch-libiberty_testsuite_test-expandargv.c @@ -0,0 +1,25 @@ +$NetBSD$ + +--- libiberty/testsuite/test-expandargv.c.orig Thu Oct 8 15:14:41 2009 ++++ libiberty/testsuite/test-expandargv.c +@@ -189,7 +189,7 @@ writeout_test (int test, const char * test_data) + { + char filename[256]; + FILE *fd; +- size_t len; ++ size_t len, sys_fwrite; + char * parse; + + /* Unique filename per test */ +@@ -208,7 +208,10 @@ writeout_test (int test, const char * test_data) + /* Run all possible replaces */ + run_replaces (parse); + +- fwrite (parse, len, sizeof (char), fd); ++ sys_fwrite = fwrite (parse, sizeof (char), len, fd); ++ if (sys_fwrite != len) ++ fatal_error (__LINE__, "Failed to write to test file.", errno); ++ + free (parse); + fclose (fd); + } diff --git a/lang/gcc45/patches/patch-libmudflap_ChangeLog b/lang/gcc45/patches/patch-libmudflap_ChangeLog new file mode 100644 index 000000000..3c6483f88 --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_ChangeLog @@ -0,0 +1,20 @@ +$NetBSD$ + +--- libmudflap/ChangeLog.orig Thu Apr 28 14:11:02 2011 ++++ libmudflap/ChangeLog +@@ -1,3 +1,15 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2012-02-09 Jakub Jelinek ++ ++ Backported from mainline ++ 2012-01-19 Jakub Jelinek ++ ++ PR libmudflap/40778 ++ * testsuite/libmudflap.c/fail68-frag.c: New test. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libmudflap_mf-hooks1.c b/lang/gcc45/patches/patch-libmudflap_mf-hooks1.c new file mode 100644 index 000000000..5273ac217 --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_mf-hooks1.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libmudflap/mf-hooks1.c.orig Tue Sep 1 18:13:18 2009 ++++ libmudflap/mf-hooks1.c +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + + /* These attempt to coax various unix flavours to declare all our + needed tidbits in the system headers. */ +-#if !defined(__FreeBSD__) && !defined(__APPLE__) ++#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__) + #define _POSIX_SOURCE + #endif /* Some BSDs break if this is defined. */ + #define _GNU_SOURCE +@@ -238,7 +238,7 @@ WRAPPER(void, free, void *buf) + static int freeq_initialized = 0; + DECLARE(void, free, void *); + +- BEGIN_PROTECT (free, buf); ++ BEGIN_PROTECTV (free, buf); + + if (UNLIKELY(buf == NULL)) + return; diff --git a/lang/gcc45/patches/patch-libmudflap_mf-hooks2.c b/lang/gcc45/patches/patch-libmudflap_mf-hooks2.c new file mode 100644 index 000000000..d2009408b --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_mf-hooks2.c @@ -0,0 +1,16 @@ +$NetBSD$ + +--- libmudflap/mf-hooks2.c.orig Thu Apr 9 15:00:19 2009 ++++ libmudflap/mf-hooks2.c +@@ -32,9 +32,10 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + + /* These attempt to coax various unix flavours to declare all our + needed tidbits in the system headers. */ +-#if !defined(__FreeBSD__) && !defined(__APPLE__) ++#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__) + #define _POSIX_SOURCE + #endif /* Some BSDs break if this is defined. */ ++#define _NETBSD_SOURCE + #define _GNU_SOURCE + #define _XOPEN_SOURCE + #define _BSD_TYPES diff --git a/lang/gcc45/patches/patch-libmudflap_mf-impl.h b/lang/gcc45/patches/patch-libmudflap_mf-impl.h new file mode 100644 index 000000000..38815733f --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_mf-impl.h @@ -0,0 +1,49 @@ +$NetBSD$ + +--- libmudflap/mf-impl.h.orig Thu Apr 9 15:00:19 2009 ++++ libmudflap/mf-impl.h +@@ -273,12 +273,12 @@ extern struct __mf_options __mf_opts; + #ifdef LIBMUDFLAPTH + #define VERBOSE_TRACE(...) \ + do { if (UNLIKELY (__mf_opts.verbose_trace)) { \ +- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \ ++ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \ + fprintf (stderr, __VA_ARGS__); \ + } } while (0) + #define TRACE(...) \ + do { if (UNLIKELY (__mf_opts.trace_mf_calls)) { \ +- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \ ++ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \ + fprintf (stderr, __VA_ARGS__); \ + } } while (0) + #else +@@ -390,6 +390,29 @@ ret __mfwrap_ ## fname (__VA_ARGS__) + else if (UNLIKELY (__mf_get_state () == in_malloc)) \ + { \ + return CALL_REAL(fname, __VA_ARGS__); \ ++ } \ ++ else \ ++ { \ ++ TRACE ("%s\n", __PRETTY_FUNCTION__); \ ++ } ++ ++#define BEGIN_PROTECTV(fname, ...) \ ++ if (UNLIKELY (__mf_starting_p)) \ ++ { \ ++ CALL_BACKUP(fname, __VA_ARGS__); \ ++ return; \ ++ } \ ++ else if (UNLIKELY (__mf_get_state () == reentrant)) \ ++ { \ ++ extern unsigned long __mf_reentrancy; \ ++ __mf_reentrancy ++; \ ++ CALL_REAL(fname, __VA_ARGS__); \ ++ return; \ ++ } \ ++ else if (UNLIKELY (__mf_get_state () == in_malloc)) \ ++ { \ ++ CALL_REAL(fname, __VA_ARGS__); \ ++ return; \ + } \ + else \ + { \ diff --git a/lang/gcc45/patches/patch-libmudflap_mf-runtime.c b/lang/gcc45/patches/patch-libmudflap_mf-runtime.c new file mode 100644 index 000000000..f551e7525 --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_mf-runtime.c @@ -0,0 +1,102 @@ +$NetBSD$ + +--- libmudflap/mf-runtime.c.orig Sat Jan 9 00:00:42 2010 ++++ libmudflap/mf-runtime.c +@@ -31,9 +31,10 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + + /* These attempt to coax various unix flavours to declare all our + needed tidbits in the system headers. */ +-#if !defined(__FreeBSD__) && !defined(__APPLE__) ++#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__) + #define _POSIX_SOURCE + #endif /* Some BSDs break if this is defined. */ ++#define _NETBSD_SOURCE + #define _GNU_SOURCE + #define _XOPEN_SOURCE + #define _BSD_TYPES +@@ -165,7 +166,7 @@ begin_recursion_protect1 (const char *pf) + #define LOOKUP_CACHE_SHIFT_DFL 2 + + struct __mf_cache __mf_lookup_cache [LOOKUP_CACHE_SIZE_MAX]; +-uintptr_t __mf_lc_mask = LOOKUP_CACHE_MASK_DFL; ++__mf_uintptr_t __mf_lc_mask = LOOKUP_CACHE_MASK_DFL; + unsigned char __mf_lc_shift = LOOKUP_CACHE_SHIFT_DFL; + #define LOOKUP_CACHE_SIZE (__mf_lc_mask + 1) + +@@ -192,13 +193,19 @@ pthread_mutex_t __mf_biglock = + /* Use HAVE_PTHREAD_H here instead of LIBMUDFLAPTH, so that even + the libmudflap.la (no threading support) can diagnose whether + the application is linked with -lpthread. See __mf_usage() below. */ +-#if HAVE_PTHREAD_H +-#ifdef _POSIX_THREADS +-#pragma weak pthread_join ++#ifdef LIBMUDFLAPTH ++# if HAVE_PTHREAD_H ++# ifdef _POSIX_THREADS ++# include ++# else ++# define pthread_join NULL ++# endif ++# else ++# define pthread_join NULL ++# endif + #else +-#define pthread_join NULL ++# define pthread_join NULL + #endif +-#endif + + + /* ------------------------------------------------------------------------ */ +@@ -1762,7 +1769,7 @@ __mf_describe_object (__mf_object_t *obj) + "bounds=[%p,%p] size=%lu area=%s check=%ur/%uw liveness=%u%s\n" + "alloc time=%lu.%06lu pc=%p" + #ifdef LIBMUDFLAPTH +- " thread=%u" ++ " thread=%ju" + #endif + "\n", + (obj->deallocated_p ? "dead " : ""), +@@ -1781,7 +1788,7 @@ __mf_describe_object (__mf_object_t *obj) + obj->alloc_time.tv_sec, obj->alloc_time.tv_usec, + (void *) obj->alloc_pc + #ifdef LIBMUDFLAPTH +- , (unsigned) obj->alloc_thread ++ , (intmax_t)(intptr_t)obj->alloc_thread + #endif + ); + +@@ -1798,13 +1805,13 @@ __mf_describe_object (__mf_object_t *obj) + { + fprintf (stderr, "dealloc time=%lu.%06lu pc=%p" + #ifdef LIBMUDFLAPTH +- " thread=%u" ++ " thread=%ju" + #endif + "\n", + obj->dealloc_time.tv_sec, obj->dealloc_time.tv_usec, + (void *) obj->dealloc_pc + #ifdef LIBMUDFLAPTH +- , (unsigned) obj->dealloc_thread ++ , (intmax_t)(intptr_t)obj->dealloc_thread + #endif + ); + +@@ -2318,7 +2325,7 @@ __mf_sigusr1_respond () + #ifndef NDEBUG + + static void +-write_itoa (int fd, unsigned n) ++write_itoa (int fd, intmax_t n) + { + enum x { bufsize = sizeof(n)*4 }; + char buf [bufsize]; +@@ -2347,7 +2354,7 @@ __assert_fail (const char *msg, const char *file, unsi + write2("mf"); + #ifdef LIBMUDFLAPTH + write2("("); +- write_itoa (2, (unsigned) pthread_self ()); ++ write_itoa (2, (intmax_t)(intptr_t)pthread_self ()); + write2(")"); + #endif + write2(": assertion failure: `"); diff --git a/lang/gcc45/patches/patch-libmudflap_mf-runtime.h b/lang/gcc45/patches/patch-libmudflap_mf-runtime.h new file mode 100644 index 000000000..006d21a27 --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_mf-runtime.h @@ -0,0 +1,28 @@ +$NetBSD$ + +--- libmudflap/mf-runtime.h.orig Thu Apr 9 15:00:19 2009 ++++ libmudflap/mf-runtime.h +@@ -31,7 +31,7 @@ see the files COPYING3 and COPYING.RUNTIME respectivel + #define MF_RUNTIME_H + + typedef void *__mf_ptr_t; +-typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__))); ++typedef unsigned long __mf_uintptr_t __attribute__ ((__mode__ (__pointer__))); + typedef __SIZE_TYPE__ __mf_size_t; + + /* Global declarations used by instrumentation. When _MUDFLAP is +@@ -81,11 +81,11 @@ extern "C" { + #endif + + extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location) +- __attribute((nothrow)); ++ __attribute__((nothrow)); + extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name) +- __attribute((nothrow)); ++ __attribute__((nothrow)); + extern void __mf_unregister (void *ptr, __mf_size_t sz, int type) +- __attribute((nothrow)); ++ __attribute__((nothrow)); + extern unsigned __mf_watch (void *ptr, __mf_size_t sz); + extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz); + extern void __mf_report (); diff --git a/lang/gcc45/patches/patch-libmudflap_testsuite_libmudflap.c_fail68-frag.c b/lang/gcc45/patches/patch-libmudflap_testsuite_libmudflap.c_fail68-frag.c new file mode 100644 index 000000000..7dcc67587 --- /dev/null +++ b/lang/gcc45/patches/patch-libmudflap_testsuite_libmudflap.c_fail68-frag.c @@ -0,0 +1,32 @@ +$NetBSD$ + +--- libmudflap/testsuite/libmudflap.c/fail68-frag.c.orig Wed May 21 19:48:59 2014 ++++ libmudflap/testsuite/libmudflap.c/fail68-frag.c +@@ -0,0 +1,27 @@ ++/* PR libmudflap/40778 */ ++ ++char p[32]; ++static int j; ++ ++__attribute__((noinline)) ++static void foo (int i) ++{ ++ if (j++ == 0) ++ p[i + 4] = 12; ++ else ++ p[i - 4] = 13; ++} ++ ++int ++main () ++{ ++ foo (30); ++ foo (30); ++ foo (30); ++ return 0; ++} ++ ++/* { dg-output "mudflap violation 1.*" } */ ++/* { dg-output "Nearby object 1.*" } */ ++/* { dg-output "mudflap object.*name.*p" } */ ++/* { dg-do run { xfail *-*-* } } */ diff --git a/lang/gcc45/patches/patch-libobjc_ChangeLog b/lang/gcc45/patches/patch-libobjc_ChangeLog new file mode 100644 index 000000000..a01afda64 --- /dev/null +++ b/lang/gcc45/patches/patch-libobjc_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libobjc/ChangeLog.orig Thu Apr 28 14:09:30 2011 ++++ libobjc/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libobjc_archive.c b/lang/gcc45/patches/patch-libobjc_archive.c new file mode 100644 index 000000000..a506940b5 --- /dev/null +++ b/lang/gcc45/patches/patch-libobjc_archive.c @@ -0,0 +1,121 @@ +$NetBSD$ + +--- libobjc/archive.c.orig Thu Apr 9 15:00:19 2009 ++++ libobjc/archive.c +@@ -365,7 +365,7 @@ __objc_write_extension (struct objc_typed_stream *stre + } + } + +-inline int ++int + __objc_write_object (struct objc_typed_stream *stream, id object) + { + unsigned char buf = '\0'; +@@ -431,7 +431,7 @@ objc_write_object (struct objc_typed_stream *stream, i + } + } + +-inline int ++int + __objc_write_class (struct objc_typed_stream *stream, struct objc_class *class) + { + __objc_write_extension (stream, _BX_CLASS); +@@ -460,7 +460,7 @@ objc_write_class (struct objc_typed_stream *stream, + } + + +-inline int ++int + __objc_write_selector (struct objc_typed_stream *stream, SEL selector) + { + const char *sel_name; +@@ -503,7 +503,7 @@ objc_write_selector (struct objc_typed_stream *stream, + ** Read operations + */ + +-inline int ++int + objc_read_char (struct objc_typed_stream *stream, char *val) + { + unsigned char buf; +@@ -530,7 +530,7 @@ objc_read_char (struct objc_typed_stream *stream, char + } + + +-inline int ++int + objc_read_unsigned_char (struct objc_typed_stream *stream, unsigned char *val) + { + unsigned char buf; +@@ -551,7 +551,7 @@ objc_read_unsigned_char (struct objc_typed_stream *str + return len; + } + +-inline int ++int + objc_read_short (struct objc_typed_stream *stream, short *value) + { + unsigned char buf[sizeof (short) + 1]; +@@ -579,7 +579,7 @@ objc_read_short (struct objc_typed_stream *stream, sho + return len; + } + +-inline int ++int + objc_read_unsigned_short (struct objc_typed_stream *stream, + unsigned short *value) + { +@@ -607,7 +607,7 @@ objc_read_unsigned_short (struct objc_typed_stream *st + } + + +-inline int ++int + objc_read_int (struct objc_typed_stream *stream, int *value) + { + unsigned char buf[sizeof (int) + 1]; +@@ -634,7 +634,7 @@ objc_read_int (struct objc_typed_stream *stream, int * + return len; + } + +-inline int ++int + objc_read_long (struct objc_typed_stream *stream, long *value) + { + unsigned char buf[sizeof (long) + 1]; +@@ -661,7 +661,7 @@ objc_read_long (struct objc_typed_stream *stream, long + return len; + } + +-inline int ++int + __objc_read_nbyte_uint (struct objc_typed_stream *stream, + unsigned int nbytes, unsigned int *val) + { +@@ -680,7 +680,7 @@ __objc_read_nbyte_uint (struct objc_typed_stream *stre + } + + +-inline int ++int + objc_read_unsigned_int (struct objc_typed_stream *stream, + unsigned int *value) + { +@@ -717,7 +717,7 @@ __objc_read_nbyte_ulong (struct objc_typed_stream *str + } + + +-inline int ++int + objc_read_unsigned_long (struct objc_typed_stream *stream, + unsigned long *value) + { +@@ -735,7 +735,7 @@ objc_read_unsigned_long (struct objc_typed_stream *str + return len; + } + +-inline int ++int + objc_read_string (struct objc_typed_stream *stream, + char **string) + { diff --git a/lang/gcc45/patches/patch-libobjc_encoding.c b/lang/gcc45/patches/patch-libobjc_encoding.c new file mode 100644 index 000000000..ca7a64035 --- /dev/null +++ b/lang/gcc45/patches/patch-libobjc_encoding.c @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libobjc/encoding.c.orig Sat Nov 28 20:31:39 2009 ++++ libobjc/encoding.c +@@ -544,7 +544,7 @@ objc_promoted_size (const char *type) + occurring in method prototype encodings. + */ + +-inline const char * ++const char * + objc_skip_type_qualifiers (const char *type) + { + while (*type == _C_CONST +@@ -682,7 +682,7 @@ objc_skip_typespec (const char *type) + Skip an offset as part of a method encoding. This is prepended by a + '+' if the argument is passed in registers. + */ +-inline const char * ++const char * + objc_skip_offset (const char *type) + { + if (*type == '+') diff --git a/lang/gcc45/patches/patch-libobjc_hash.c b/lang/gcc45/patches/patch-libobjc_hash.c new file mode 100644 index 000000000..dec8ec173 --- /dev/null +++ b/lang/gcc45/patches/patch-libobjc_hash.c @@ -0,0 +1,15 @@ +$NetBSD$ + +--- libobjc/hash.c.orig Thu Apr 9 15:00:19 2009 ++++ libobjc/hash.c +@@ -151,8 +151,8 @@ objc_hash_add (cache_ptr *cachep, const void *key, voi + (*cachep)->hash_func, + (*cachep)->compare_func); + +- DEBUG_PRINTF ("Expanding cache %#x from %d to %d\n", +- (int) *cachep, (*cachep)->size, new->size); ++ DEBUG_PRINTF ("Expanding cache %p from %d to %d\n", ++ *cachep, (*cachep)->size, new->size); + + /* Copy the nodes from the first hash table to the new one. */ + while ((node1 = objc_hash_next (*cachep, node1))) diff --git a/lang/gcc45/patches/patch-libobjc_sendmsg.c b/lang/gcc45/patches/patch-libobjc_sendmsg.c new file mode 100644 index 000000000..2ebe0d0ae --- /dev/null +++ b/lang/gcc45/patches/patch-libobjc_sendmsg.c @@ -0,0 +1,44 @@ +$NetBSD$ + +--- libobjc/sendmsg.c.orig Thu Apr 9 15:00:19 2009 ++++ libobjc/sendmsg.c +@@ -90,7 +90,6 @@ Method_t search_for_method_in_list (MethodList_t list, + id nil_method (id, SEL); + + /* Given a selector, return the proper forwarding implementation. */ +-inline + IMP + __objc_get_forward_imp (id rcv, SEL sel) + { +@@ -129,7 +128,6 @@ __objc_get_forward_imp (id rcv, SEL sel) + } + + /* Given a class and selector, return the selector's implementation. */ +-inline + IMP + get_imp (Class class, SEL sel) + { +@@ -190,7 +188,6 @@ get_imp (Class class, SEL sel) + /* Query if an object can respond to a selector, returns YES if the + object implements the selector otherwise NO. Does not check if the + method can be forwarded. */ +-inline + BOOL + __objc_responds_to (id object, SEL sel) + { +@@ -215,7 +212,6 @@ __objc_responds_to (id object, SEL sel) + /* This is the lookup function. All entries in the table are either a + valid method *or* zero. If zero then either the dispatch table + needs to be installed or it doesn't exist and forwarding is attempted. */ +-inline + IMP + objc_msg_lookup (id receiver, SEL op) + { +@@ -705,7 +701,6 @@ __objc_print_dtable_stats () + /* Returns the uninstalled dispatch table indicator. + If a class' dispatch table points to __objc_uninstalled_dtable + then that means it needs its dispatch table to be installed. */ +-inline + struct sarray * + objc_get_uninstalled_dtable () + { diff --git a/lang/gcc45/patches/patch-libssp_ChangeLog b/lang/gcc45/patches/patch-libssp_ChangeLog new file mode 100644 index 000000000..020515e6e --- /dev/null +++ b/lang/gcc45/patches/patch-libssp_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- libssp/ChangeLog.orig Thu Apr 28 14:11:09 2011 ++++ libssp/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libstdc++-v3_ChangeLog b/lang/gcc45/patches/patch-libstdc++-v3_ChangeLog new file mode 100644 index 000000000..84a5b0539 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_ChangeLog @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libstdc++-v3/ChangeLog.orig Thu Apr 28 14:09:18 2011 ++++ libstdc++-v3/ChangeLog +@@ -1,3 +1,17 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ ++2011-07-24 Uros Bizjak ++ ++ Backport from mainline ++ 2011-06-07 Paolo Carlini ++ ++ PR libstdc++/49293 ++ * testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: Tweak ++ for glibc 2.14. ++ * testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h new file mode 100644 index 000000000..eb1c24ce9 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h @@ -0,0 +1,44 @@ +$NetBSD$ + +--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h +@@ -30,7 +30,7 @@ + // Full details can be found from the CVS files at: + // anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h + // See www.netbsd.org for details of access. +- ++ + _GLIBCXX_BEGIN_NAMESPACE(std) + + /// @brief Base class for ctype. +@@ -41,18 +41,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. +- typedef unsigned char mask; +- static const mask upper = _U; +- static const mask lower = _L; +- static const mask alpha = _U | _L; +- static const mask digit = _N; +- static const mask xdigit = _N | _X; +- static const mask space = _S; +- static const mask print = _P | _U | _L | _N | _B; +- static const mask graph = _P | _U | _L | _N; +- static const mask cntrl = _C; +- static const mask punct = _P; +- static const mask alnum = _U | _L | _N; ++ typedef unsigned short mask; ++ static const mask upper = _CTYPE_U; ++ static const mask lower = _CTYPE_L; ++ static const mask alpha = _CTYPE_A; ++ static const mask digit = _CTYPE_D; ++ static const mask xdigit = _CTYPE_X; ++ static const mask space = _CTYPE_S; ++ static const mask print = _CTYPE_R; ++ static const mask graph = _CTYPE_G; ++ static const mask cntrl = _CTYPE_C; ++ static const mask punct = _CTYPE_P; ++ static const mask alnum = _CTYPE_A | _CTYPE_D; + }; + + _GLIBCXX_END_NAMESPACE diff --git a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h index 3346b161e..e0198191f 100644 --- a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h +++ b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h @@ -1,6 +1,6 @@ -$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $ +$NetBSD$ ---- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2009-04-09 15:00:19.000000000 +0000 +--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig Thu Apr 9 15:00:19 2009 +++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h @@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) is(const char* __low, const char* __high, mask* __vec) const diff --git a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h index 4ab8acac9..f61e79a55 100644 --- a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h +++ b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h @@ -1,27 +1,22 @@ -$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $ +$NetBSD$ ---- libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h.orig 2009-04-09 15:00:19.000000000 +0000 +--- libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h.orig Thu Apr 9 15:00:19 2009 +++ libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h -@@ -33,11 +33,17 @@ +@@ -33,11 +33,11 @@ // Information as gleaned from /usr/include/ctype.h -+#ifndef _CTYPE_BL - extern "C" const u_int8_t _C_ctype_[]; -+#endif +- extern "C" const u_int8_t _C_ctype_[]; ++ extern "C" const unsigned short _C_ctype_tab_[]; const ctype_base::mask* ctype::classic_table() throw() - { return _C_ctype_ + 1; } -+#ifdef _CTYPE_BL + { return _C_ctype_tab_ + 1; } -+#else -+ { return _C_ctype_ + 1; } -+#endif ctype::ctype(__c_locale, const mask* __table, bool __del, size_t __refs) -@@ -64,14 +70,14 @@ +@@ -64,14 +64,14 @@ char ctype::do_toupper(char __c) const @@ -38,7 +33,7 @@ $NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h,v 1.1 2013/0 ++__low; } return __high; -@@ -79,14 +85,14 @@ +@@ -79,14 +79,14 @@ char ctype::do_tolower(char __c) const diff --git a/lang/gcc45/patches/patch-libstdc++-v3_configure b/lang/gcc45/patches/patch-libstdc++-v3_configure new file mode 100644 index 000000000..d31349445 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_configure @@ -0,0 +1,103 @@ +--- libstdc++-v3/configure.orig Mon May 26 15:34:21 2014 ++++ libstdc++-v3/configure Mon May 26 15:32:43 2014 +@@ -5845,7 +5845,7 @@ else + lt_cv_sys_max_cmd_len=8192; + ;; + +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly* | minix*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +@@ -6257,7 +6257,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd*) ++netbsd*|minix*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +@@ -9261,7 +9261,7 @@ _LT_EOF + fi + ;; + +- netbsd*) ++ netbsd*|minix*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -9821,7 +9821,7 @@ rm -f core conftest.err conftest.$ac_objext \ + link_all_deplibs=yes + ;; + +- netbsd*) ++ netbsd*|minix*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -10801,6 +10801,18 @@ fi + dynamic_linker='GNU/Linux ld.so' + ;; + ++minix*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Minix ld.elf_so' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ + netbsd*) + version_type=sunos + need_lib_prefix=no +@@ -12824,7 +12836,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib: + esac + ;; + +- netbsd*) ++ netbsd*|minix*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= +@@ -13560,7 +13572,7 @@ $as_echo_n "checking for $compiler option to produce P + ;; + esac + ;; +- netbsd*) ++ netbsd*|minix*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise +@@ -14488,6 +14500,18 @@ fi + dynamic_linker='GNU/Linux ld.so' + ;; + ++minix*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Minix ld.elf_so' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ + netbsd*) + version_type=sunos + need_lib_prefix=no +@@ -56606,7 +56630,7 @@ done + CXXFLAGS="$ac_save_CXXFLAGS" + + ;; +- *-netbsd*) ++ *-netbsd*|*-minix*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' + + diff --git a/lang/gcc45/patches/patch-libstdc++-v3_crossconfig.m4 b/lang/gcc45/patches/patch-libstdc++-v3_crossconfig.m4 new file mode 100644 index 000000000..4bdc5db3b --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_crossconfig.m4 @@ -0,0 +1,56 @@ +$NetBSD$ + +--- libstdc++-v3/crossconfig.m4.orig Tue Jun 2 19:15:03 2009 ++++ libstdc++-v3/crossconfig.m4 +@@ -159,14 +159,51 @@ case "${host}" in + SECTION_FLAGS='-ffunction-sections -fdata-sections' + AC_SUBST(SECTION_FLAGS) + GLIBCXX_CHECK_LINKER_FEATURES ++ ++ AC_DEFINE(HAVE_ICONV) ++ AC_DEFINE(HAVE_ICONV_CLOSE) ++ AC_DEFINE(HAVE_ICONV_OPEN) ++ AC_DEFINE(HAVE_LC_MESSAGES) ++ ++ AC_DEFINE(HAVE_MMAP) ++ AC_DEFINE(HAVE_GETPAGESIZE) ++ AC_DEFINE(HAVE_SETENV) ++ AC_DEFINE(HAVE_SIGSETJMP) ++ + AC_DEFINE(HAVE_FINITEF) + AC_DEFINE(HAVE_FINITE) + AC_DEFINE(HAVE_FREXPF) ++ AC_DEFINE(HAVE_HYPOT) + AC_DEFINE(HAVE_HYPOTF) + AC_DEFINE(HAVE_ISINF) + AC_DEFINE(HAVE_ISINFF) + AC_DEFINE(HAVE_ISNAN) + AC_DEFINE(HAVE_ISNANF) ++ AC_DEFINE(HAVE_ACOSF) ++ AC_DEFINE(HAVE_ASINF) ++ AC_DEFINE(HAVE_ATAN2F) ++ AC_DEFINE(HAVE_ATANF) ++ AC_DEFINE(HAVE_CEILF) ++ AC_DEFINE(HAVE_COSF) ++ AC_DEFINE(HAVE_COSHF) ++ AC_DEFINE(HAVE_EXPF) ++ AC_DEFINE(HAVE_FABSF) ++ AC_DEFINE(HAVE_FLOORF) ++ AC_DEFINE(HAVE_FMODF) ++ AC_DEFINE(HAVE_FREXPF) ++ AC_DEFINE(HAVE_LDEXPF) ++ AC_DEFINE(HAVE_LOG10F) ++ AC_DEFINE(HAVE_LOGF) ++ AC_DEFINE(HAVE_MODF) ++ AC_DEFINE(HAVE_MODFF) ++ AC_DEFINE(HAVE_POWF) ++ AC_DEFINE(HAVE_SINF) ++ AC_DEFINE(HAVE_SINHF) ++ AC_DEFINE(HAVE_SQRTF) ++ AC_DEFINE(HAVE_STRTOF) ++ AC_DEFINE(HAVE_STRTOLD) ++ AC_DEFINE(HAVE_TANF) ++ AC_DEFINE(HAVE_TANHF) + if test x"long_double_math_on_this_cpu" = x"yes"; then + AC_DEFINE(HAVE_FINITEL) + AC_DEFINE(HAVE_ISINFL) diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_bits_locale__facets.tcc b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_locale__facets.tcc new file mode 100644 index 000000000..e6e0eb6be --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_locale__facets.tcc @@ -0,0 +1,31 @@ +$NetBSD$ + +--- libstdc++-v3/include/bits/locale_facets.tcc.orig Sat Jul 18 22:58:10 2009 ++++ libstdc++-v3/include/bits/locale_facets.tcc +@@ -464,7 +464,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE + bool __testfail = false; + bool __testoverflow = false; + const __unsigned_type __max = +- (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) ++ (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed_val) + ? -__gnu_cxx::__numeric_traits<_ValueT>::__min + : __gnu_cxx::__numeric_traits<_ValueT>::__max; + const __unsigned_type __smax = __max / __base; +@@ -568,7 +568,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE + else if (__testoverflow) + { + if (__negative +- && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) ++ && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed_val) + __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; + else + __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; +@@ -891,7 +891,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE + if (__v >= 0) + { + if (bool(__flags & ios_base::showpos) +- && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) ++ && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed_val) + *--__cs = __lit[__num_base::_S_oplus], ++__len; + } + else diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__algobase.h b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__algobase.h new file mode 100644 index 000000000..6bb014ca8 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__algobase.h @@ -0,0 +1,15 @@ +$NetBSD$ + +--- libstdc++-v3/include/bits/stl_algobase.h.orig Tue Mar 23 14:32:35 2010 ++++ libstdc++-v3/include/bits/stl_algobase.h +@@ -929,8 +929,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + typedef typename iterator_traits<_II2>::value_type _ValueType2; + const bool __simple = + (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value +- && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed +- && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed ++ && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed_val ++ && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed_val + && __is_pointer<_II1>::__value + && __is_pointer<_II2>::__value); + diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__pair.h b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__pair.h new file mode 100644 index 000000000..d36057986 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__pair.h @@ -0,0 +1,29 @@ +$NetBSD$ + +--- libstdc++-v3/include/bits/stl_pair.h.orig Thu Jun 10 10:26:14 2010 ++++ libstdc++-v3/include/bits/stl_pair.h +@@ -107,6 +107,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + pair(_U1&& __x, _U2&& __y) + : first(std::forward<_U1>(__x)), + second(std::forward<_U2>(__y)) { } ++ ++ pair(const pair &) = default; ++ pair(pair &&) = default; + #endif + + /** There is also a templated copy ctor for the @c pair class itself. */ +@@ -120,6 +123,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + pair(pair<_U1, _U2>&& __p) + : first(std::forward<_U1>(__p.first)), + second(std::forward<_U2>(__p.second)) { } ++ ++ pair& ++ operator=(const pair& __p) ++ { ++ first = __p.first; ++ second = __p.second; ++ return *this; ++ } + + pair& + operator=(pair&& __p) diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__queue.h b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__queue.h new file mode 100644 index 000000000..4796247fb --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_bits_stl__queue.h @@ -0,0 +1,47 @@ +$NetBSD$ + +--- libstdc++-v3/include/bits/stl_queue.h.orig Thu Feb 4 18:20:34 2010 ++++ libstdc++-v3/include/bits/stl_queue.h +@@ -1,6 +1,6 @@ + // Queue implementation -*- C++ -*- + +-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 ++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + // Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free +@@ -137,16 +137,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + explicit + queue(_Sequence&& __c = _Sequence()) + : c(std::move(__c)) { } +- +- queue(queue&& __q) +- : c(std::move(__q.c)) { } +- +- queue& +- operator=(queue&& __q) +- { +- c = std::move(__q.c); +- return *this; +- } + #endif + + /** +@@ -451,17 +441,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) + c.insert(c.end(), __first, __last); + std::make_heap(c.begin(), c.end(), comp); + } +- +- priority_queue(priority_queue&& __pq) +- : c(std::move(__pq.c)), comp(std::move(__pq.comp)) { } +- +- priority_queue& +- operator=(priority_queue&& __pq) +- { +- c = std::move(__pq.c); +- comp = std::move(__pq.comp); +- return *this; +- } + #endif + + /** diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_ext_numeric__traits.h b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_numeric__traits.h new file mode 100644 index 000000000..46920bbde --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_numeric__traits.h @@ -0,0 +1,40 @@ +$NetBSD$ + +--- libstdc++-v3/include/ext/numeric_traits.h.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/include/ext/numeric_traits.h +@@ -58,7 +58,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + + // NB: these two also available in std::numeric_limits as compile + // time constants, but is big and we avoid including it. +- static const bool __is_signed = __glibcxx_signed(_Value); ++ static const bool __is_signed_val = __glibcxx_signed(_Value); + static const int __digits = __glibcxx_digits(_Value); + }; + +@@ -69,7 +69,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + const _Value __numeric_traits_integer<_Value>::__max; + + template +- const bool __numeric_traits_integer<_Value>::__is_signed; ++ const bool __numeric_traits_integer<_Value>::__is_signed_val; + + template + const int __numeric_traits_integer<_Value>::__digits; +@@ -101,7 +101,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + static const int __max_digits10 = __glibcxx_max_digits10(_Value); + + // See above comment... +- static const bool __is_signed = true; ++ static const bool __is_signed_val = true; + static const int __digits10 = __glibcxx_digits10(_Value); + static const int __max_exponent10 = __glibcxx_max_exponent10(_Value); + }; +@@ -110,7 +110,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + const int __numeric_traits_floating<_Value>::__max_digits10; + + template +- const bool __numeric_traits_floating<_Value>::__is_signed; ++ const bool __numeric_traits_floating<_Value>::__is_signed_val; + + template + const int __numeric_traits_floating<_Value>::__digits10; diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_ext_rope b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_rope new file mode 100644 index 000000000..d6dded653 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_rope @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libstdc++-v3/include/ext/rope.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/include/ext/rope +@@ -727,7 +727,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) (protected) + if (_M_data != this->_M_c_string) + this->_M_free_c_string(); + +- __STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator()); ++ this->__STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator()); + } + #endif + protected: +@@ -1168,7 +1168,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) (protected) + operator*() + { + if (0 == this->_M_buf_ptr) +- _S_setcache(*this); ++ this->_S_setcache(*this); + return *this->_M_buf_ptr; + } + diff --git a/lang/gcc45/patches/patch-libstdc++-v3_include_ext_ropeimpl.h b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_ropeimpl.h new file mode 100644 index 000000000..aa357c858 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_include_ext_ropeimpl.h @@ -0,0 +1,67 @@ +$NetBSD$ + +--- libstdc++-v3/include/ext/ropeimpl.h.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/include/ext/ropeimpl.h +@@ -378,7 +378,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + _Rope_RopeLeaf<_CharT, _Alloc>* __l + = (_Rope_RopeLeaf<_CharT, _Alloc>*)this; + __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf(); +- _L_deallocate(__l, 1); ++ this->_L_deallocate(__l, 1); + break; + } + case __detail::_S_concat: +@@ -387,7 +387,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this; + __c->_Rope_RopeConcatenation<_CharT, _Alloc>:: + ~_Rope_RopeConcatenation(); +- _C_deallocate(__c, 1); ++ this->_C_deallocate(__c, 1); + break; + } + case __detail::_S_function: +@@ -395,7 +395,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + _Rope_RopeFunction<_CharT, _Alloc>* __f + = (_Rope_RopeFunction<_CharT, _Alloc>*)this; + __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction(); +- _F_deallocate(__f, 1); ++ this->_F_deallocate(__f, 1); + break; + } + case __detail::_S_substringfn: +@@ -404,7 +404,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + (_Rope_RopeSubstring<_CharT, _Alloc>*)this; + __ss->_Rope_RopeSubstring<_CharT, _Alloc>:: + ~_Rope_RopeSubstring(); +- _S_deallocate(__ss, 1); ++ this->_S_deallocate(__ss, 1); + break; + } + } +@@ -428,7 +428,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + { + size_t __old_len = __r->_M_size; + _CharT* __new_data = (_CharT*) +- _Data_allocate(_S_rounded_up_size(__old_len + __len)); ++ _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__old_len + __len)); + _RopeLeaf* __result; + + uninitialized_copy_n(__r->_M_data, __old_len, __new_data); +@@ -509,7 +509,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + } + __catch(...) + { +- _C_deallocate(__result,1); ++ rope::_C_deallocate(__result,1); + __throw_exception_again; + } + // In case of exception, we need to deallocate +@@ -812,7 +812,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + if (__result_len > __lazy_threshold) + goto lazy; + __section = (_CharT*) +- _Data_allocate(_S_rounded_up_size(__result_len)); ++ _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__result_len)); + __try + { (*(__f->_M_fn))(__start, __result_len, __section); } + __catch(...) diff --git a/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_eh__arm.cc b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_eh__arm.cc new file mode 100644 index 000000000..0934b2088 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_eh__arm.cc @@ -0,0 +1,28 @@ +$NetBSD$ + +--- libstdc++-v3/libsupc++/eh_arm.cc.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/libsupc++/eh_arm.cc +@@ -92,7 +92,12 @@ __cxa_type_match(_Unwind_Exception* ue_header, + } + + // ABI defined routine called at the start of a cleanup handler. +-extern "C" bool ++extern "C" ++#ifdef __ARM_EABI_UNWINDER__ ++void ++#else ++bool ++#endif + __cxa_begin_cleanup(_Unwind_Exception* ue_header) + { + __cxa_eh_globals *globals = __cxa_get_globals(); +@@ -121,7 +126,9 @@ __cxa_begin_cleanup(_Unwind_Exception* ue_header) + globals->propagatingExceptions = header; + } + ++#ifndef __ARM_EABI_UNWINDER__ + return true; ++#endif + } + + // Do the work for __cxa_end_cleanup. Returns the currently propagating diff --git a/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_exception__ptr.h b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_exception__ptr.h new file mode 100644 index 000000000..db2cb8617 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_exception__ptr.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- libstdc++-v3/libsupc++/exception_ptr.h.orig Mon Nov 9 22:09:30 2009 ++++ libstdc++-v3/libsupc++/exception_ptr.h +@@ -129,7 +129,7 @@ namespace std + operator==(const exception_ptr&, const exception_ptr&) throw() + __attribute__ ((__pure__)); + +- const type_info* ++ const class type_info* + __cxa_exception_type() const throw() __attribute__ ((__pure__)); + }; + diff --git a/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_nested__exception.h b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_nested__exception.h new file mode 100644 index 000000000..4afe396cd --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_nested__exception.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- libstdc++-v3/libsupc++/nested_exception.h.orig Thu Feb 18 17:20:16 2010 ++++ libstdc++-v3/libsupc++/nested_exception.h +@@ -119,7 +119,7 @@ namespace std + // with a type that has an accessible nested_exception base. + template + inline void +- __throw_with_nested(_Ex&& __ex, const nested_exception* = 0) ++ __throw_with_nested(_Ex&& __ex, const nested_exception*) + { throw __ex; } + + template diff --git a/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h new file mode 100644 index 000000000..8192efb6d --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h @@ -0,0 +1,15 @@ +$NetBSD$ + +--- libstdc++-v3/libsupc++/unwind-cxx.h.orig Sun May 3 16:51:50 2009 ++++ libstdc++-v3/libsupc++/unwind-cxx.h +@@ -196,8 +196,8 @@ typedef enum { + ctm_succeeded = 1, + ctm_succeeded_with_ptr_to_base = 2 + } __cxa_type_match_result; +-extern "C" bool __cxa_type_match(_Unwind_Exception*, const std::type_info*, +- bool, void**); ++extern "C" __cxa_type_match_result __cxa_type_match(_Unwind_Exception*, ++ const std::type_info*, bool, void**); + extern "C" void __cxa_begin_cleanup (_Unwind_Exception*); + extern "C" void __cxa_end_cleanup (void); + #endif diff --git a/lang/gcc45/patches/patch-libstdc++-v3_src_atomic.cc b/lang/gcc45/patches/patch-libstdc++-v3_src_atomic.cc new file mode 100644 index 000000000..236335d96 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_src_atomic.cc @@ -0,0 +1,22 @@ +$NetBSD$ + +--- libstdc++-v3/src/atomic.cc.orig Tue Dec 22 08:23:08 2009 ++++ libstdc++-v3/src/atomic.cc +@@ -80,7 +80,7 @@ namespace std + atomic_flag_test_and_set_explicit(__atomic_flag_base* __a, + memory_order __m) throw() + { +- atomic_flag* d = static_cast(__a); ++ atomic_flag* d = static_cast(__a); + return d->test_and_set(__m); + } + +@@ -88,7 +88,7 @@ namespace std + atomic_flag_clear_explicit(__atomic_flag_base* __a, + memory_order __m) throw() + { +- atomic_flag* d = static_cast(__a); ++ atomic_flag* d = static_cast(__a); + return d->clear(__m); + } + diff --git a/lang/gcc45/patches/patch-libstdc++-v3_src_locale-inst.cc b/lang/gcc45/patches/patch-libstdc++-v3_src_locale-inst.cc new file mode 100644 index 000000000..608bd155d --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_src_locale-inst.cc @@ -0,0 +1,18 @@ +$NetBSD$ + +--- libstdc++-v3/src/locale-inst.cc.orig Thu Apr 9 15:00:19 2009 ++++ libstdc++-v3/src/locale-inst.cc +@@ -175,11 +175,11 @@ _GLIBCXX_END_LDBL_NAMESPACE + template class messages_byname; + + // ctype +- inline template class __ctype_abstract_base; ++ template class __ctype_abstract_base; + template class ctype_byname; + + // codecvt +- inline template class __codecvt_abstract_base; ++ template class __codecvt_abstract_base; + template class codecvt_byname; + + // collate diff --git a/lang/gcc45/patches/patch-libstdc++-v3_testsuite_22__locale_time__get_get__weekd b/lang/gcc45/patches/patch-libstdc++-v3_testsuite_22__locale_time__get_get__weekd new file mode 100644 index 000000000..e008e0572 --- /dev/null +++ b/lang/gcc45/patches/patch-libstdc++-v3_testsuite_22__locale_time__get_get__weekd @@ -0,0 +1,37 @@ +$NetBSD$ + +--- libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc.orig Mon Jan 25 18:02:41 2010 ++++ libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc +@@ -2,7 +2,7 @@ + + // 2010-01-05 Paolo Carlini + +-// Copyright (C) 2010 Free Software Foundation ++// Copyright (C) 2010, 2011 Free Software Foundation + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -50,6 +50,15 @@ void test01() + // get_weekday(iter_type, iter_type, ios_base&, + // ios_base::iostate&, tm*) const + ++#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14) ++ const char* awdays[7] = { "\u0412\u0441\u002E", ++ "\u041F\u043D\u002E", ++ "\u0412\u0442\u002E", ++ "\u0421\u0440\u002E", ++ "\u0427\u0442\u002E", ++ "\u041F\u0442\u002E", ++ "\u0421\u0431\u002E" }; ++#else + const char* awdays[7] = { "\u0412\u0441\u043A", + "\u041F\u043D\u0434", + "\u0412\u0442\u0440", +@@ -57,6 +66,7 @@ void test01() + "\u0427\u0442\u0432", + "\u041F\u0442\u043D", + "\u0421\u0431\u0442" }; ++#endif + + for (int i = 0; i < 7; ++i) + { diff --git a/lang/gcc45/patches/patch-lto-plugin_ChangeLog b/lang/gcc45/patches/patch-lto-plugin_ChangeLog new file mode 100644 index 000000000..edc60903b --- /dev/null +++ b/lang/gcc45/patches/patch-lto-plugin_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- lto-plugin/ChangeLog.orig Thu Apr 28 14:10:37 2011 ++++ lto-plugin/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-maintainer-scripts_ChangeLog b/lang/gcc45/patches/patch-maintainer-scripts_ChangeLog new file mode 100644 index 000000000..07db32e49 --- /dev/null +++ b/lang/gcc45/patches/patch-maintainer-scripts_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- maintainer-scripts/ChangeLog.orig Thu Apr 28 14:09:24 2011 ++++ maintainer-scripts/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-zlib_ChangeLog b/lang/gcc45/patches/patch-zlib_ChangeLog new file mode 100644 index 000000000..bf6434db1 --- /dev/null +++ b/lang/gcc45/patches/patch-zlib_ChangeLog @@ -0,0 +1,12 @@ +$NetBSD$ + +--- zlib/ChangeLog.orig Thu Apr 28 14:10:44 2011 ++++ zlib/ChangeLog +@@ -1,3 +1,7 @@ ++2012-07-02 Release Manager ++ ++ * GCC 4.5.4 released. ++ + 2011-04-28 Release Manager + + * GCC 4.5.3 released. diff --git a/lang/gcc45/patches/patch-zlib_zconf.in.h b/lang/gcc45/patches/patch-zlib_zconf.in.h new file mode 100644 index 000000000..963ee9c14 --- /dev/null +++ b/lang/gcc45/patches/patch-zlib_zconf.in.h @@ -0,0 +1,13 @@ +$NetBSD$ + +--- zlib/zconf.in.h.orig Mon Sep 12 17:42:53 2005 ++++ zlib/zconf.in.h +@@ -3,7 +3,7 @@ + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +-/* @(#) $Id$ */ ++/* @(#) $Id: zconf.in.h,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */ + + #ifndef ZCONF_H + #define ZCONF_H