2012-12-11 Yvan Roux GCC Linaro 4.7-2012.12 released. gcc/ * LINARO-VERSION: Update. 2012-12-05 Michael Hope Merge from FSF arm/aarch64-4.7-branch r193937..r194154. Backport arm-aarch64-4.7 r193937: gcc/ChangeLog.aarch64 Backport from mainline. 2012-11-20 James Greenhalgh Tejas Belagod * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_type_bits): Rename to... (aarch64_simd_builtin_type_mode): ...this, make sequential. (aarch64_simd_builtin_datum): Refactor members. (VAR1, VAR2, ..., VAR12): Update accordingly. (aarch64_simd_builtin_data): Include from aarch64-simd-builtins.def. (aarch64_builtins): Update accordingly. (init_aarch64_simd_builtins): Refactor, rename to... (aarch64_init_simd_builtins): ...this. (aarch64_simd_builtin_compare): Remove. (locate_simd_builtin_icode): Likewise. * config/aarch64/aarch64-protos.h (aarch64_init_builtins): New. (aarch64_expand_builtin): Likewise. (aarch64_load_tp): Likewise. * config/aarch64/aarch64-simd-builtins.def: New file. * config/aarch64/aarch64.c (aarch64_init_builtins): Move to aarch64-builtins.c. (aarch64_expand_builtin): Likewise. (aarch64_load_tp): Remove static designation. * config/aarch64/aarch64.h (aarch64_builtins): Move to aarch64-builtins.c. Backport arm-aarch64-4.7 r193939: gcc/ Backport from mainline. 2012-11-26 James Greenhalgh * config/aarch64/aarch64-builtins.c (aarch64_builtin_decls): New. (aarch64_init_simd_builtins): Store declaration after builtin initialisation. (aarch64_init_builtins): Likewise. (aarch64_builtin_decl): New. * config/aarch64/aarch64-protos.h (aarch64_builtin_decl): New. * config/aarch64/aarch64.c (TARGET_BUILTIN_DECL): Define. Backport arm-aarch64-4.7 r194079: [AARCH64-4.7] Refactor constant generation. 2012-12-03 Sofiane Naci * config/aarch64/aarch64.c (aarch64_build_constant): Update prototype. Call emit_move_insn instead of printing movi/movn/movz instructions. Call gen_insv_immdi instead of printing movk instruction. (aarch64_add_constant): Update prototype. Generate RTL instead of printing add/sub instructions. (aarch64_output_mi_thunk): Update calls to aarch64_build_constant and aarch64_add_constant. Backport arm-aarch64-4.7 r194089: [AARCH64-4.7] Backport - Add vcond, vcondu support. Backport of revision 192985. gcc/ * config/aarch64/aarch64-simd.md (aarch64_simd_bsl_internal): New pattern. (aarch64_simd_bsl): Likewise. (aarch64_vcond_internal): Likewise. (vcondu): Likewise. (vcond): Likewise. * config/aarch64/iterators.md (UNSPEC_BSL): Add to define_constants. Backport arm-aarch64-4.7 r194131: 2012-12-04 Tejas Belagod * config/aarch64/aarch64.c (aarch64_simd_vector_alignment, aarch64_simd_vector_alignment_reachable): New. (TARGET_VECTOR_ALIGNMENT, TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE): Define. Backport arm-aarch64-4.7 r194148: AArch64: Fix ICE due to missing TYPE_STUB_DECL on builtin va_list. 2012-12-04 Marcus Shawcroft * config/aarch64/aarch64.c (aarch64_build_builtin_va_list): Set TYPE_STUB_DECL. Backport arm-aarch64-4.7 r194153: AArch64-4.7: Backport refactor of sfp-machine.h Backport arm-aarch64-4.7 r194154: AArch64-4.7: Backport implement FP_TRAPPING_EXCEPTIONS. 2012-12-05 Yvan Roux Merge from FSF GCC 4.7.2 (svn branches/gcc-4_7-branch 194184). 2012-11-26 Michael Hope Merge from FSF arm/aarch64-4.7-branch r193473..r193768. Backport arm-aarch64-4.7 r193473: Backport from mainline: Optimise comparison where intermediate result not used (AArch64) Backport arm-aarch64-4.7 r193474: Backport from mainline: Use CSINC instead of CSEL to return 1 (AArch64) Backport arm-aarch64-4.7 r193496: Fixed up changelogs Backport arm-aarch64-4.7 r193533: Update soft-fp from glibc. 2012-11-15 Marcus Shawcroft * soft-fp: Updated from glibc upstream. Backport arm-aarch64-4.7 r193541: Move ChangeLog entry to ChangeLog.aarch64. The previous commit put the ChangeLog entry into the wrong file. Backport arm-aarch64-4.7 r193572: Fix commit of testcase which got truncated somehow. Backport arm-aarch64-4.7 r193650: Backport from mainline: r193630. gcc/ * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Refactor to generate RTL patterns. Backport arm-aarch64-4.7 r193652: Backport from trunk revision 193651. gcc/ * config/aarch64/aarch64.md (define_attr "sync_*"): Remove. (define_attr "length"): Update. Include atomics.md. * config/aarch64/aarch64-protos.h (aarch64_expand_compare_and_swap): Add function prototype. (aarch64_split_compare_and_swap): Likewise. (aarch64_split_atomic_op): Likewise. (aarch64_expand_sync): Remove function prototype. (aarch64_output_sync_insn): Likewise. (aarch64_output_sync_lock_release): Likewise. (aarch64_sync_loop_insns): Likewise. (struct aarch64_sync_generator): Remove. (enum aarch64_sync_generator_tag): Likewise. * config/aarch64/aarch64.c (aarch64_legitimize_sync_memory): Remove function. (aarch64_emit): Likewise. (aarch64_insn_count): Likewise. (aarch64_output_asm_insn): Likewise. (aarch64_load_store_suffix): Likewise. (aarch64_output_sync_load): Likewise. (aarch64_output_sync_store): Likewise. (aarch64_output_op2): Likewise. (aarch64_output_op3): Likewise. (aarch64_output_sync_loop): Likewise. (aarch64_get_sync_operand): Likewise. (aarch64_process_output_sync_insn): Likewise. (aarch64_output_sync_insn): Likewise. (aarch64_output_sync_lock_release): Likewise. (aarch64_sync_loop_insns): Likewise. (aarch64_call_generator): Likewise. (aarch64_expand_sync): Likewise. (* emit_f): Remove variable. (aarch64_insn_count): Likewise. (FETCH_SYNC_OPERAND): Likewise. (aarch64_emit_load_exclusive): New function. (aarch64_emit_store_exclusive): Likewise. (aarch64_emit_unlikely_jump): Likewise. (aarch64_expand_compare_and_swap): Likewise. (aarch64_split_compare_and_swap): Likewise. (aarch64_split_atomic_op): Likewise. * config/aarch64/iterators.md (atomic_sfx): New mode attribute. (atomic_optab): New code attribute. (atomic_op_operand): Likewise. (atomic_op_str): Likewise. (syncop): Rename to atomic_op. * config/aarch64/sync.md: Delete. * config/aarch64/atomics.md: New file. gcc/testsuite * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: New testcase. * gcc.target/aarch64/atomic-op-acq_rel.c: Likewise. * gcc.target/aarch64/atomic-op-acquire.c: Likewise. * gcc.target/aarch64/atomic-op-char.c: Likewise. * gcc.target/aarch64/atomic-op-consume.c: Likewise. * gcc.target/aarch64/atomic-op-imm.c: Likewise. * gcc.target/aarch64/atomic-op-int.c: Likewise. * gcc.target/aarch64/atomic-op-long.c: Likewise. * gcc.target/aarch64/atomic-op-relaxed.c: Likewise. * gcc.target/aarch64/atomic-op-release.c: Likewise. * gcc.target/aarch64/atomic-op-seq_cst.c: Likewise. * gcc.target/aarch64/atomic-op-short.c: Likewise. Backport arm-aarch64-4.7 r193655: Fix to commit 193652. gcc/ * config/aarch64/atomics.md: Actually add this file. gcc/testsuite/ * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Actually add this file. * gcc.target/aarch64/atomic-op-acq_rel.c: Likewise. * gcc.target/aarch64/atomic-op-acquire.c: Likewise. * gcc.target/aarch64/atomic-op-char.c: Likewise. * gcc.target/aarch64/atomic-op-consume.c: Likewise. * gcc.target/aarch64/atomic-op-imm.c: Likewise. * gcc.target/aarch64/atomic-op-int.c: Likewise. * gcc.target/aarch64/atomic-op-long.c: Likewise. * gcc.target/aarch64/atomic-op-relaxed.c: Likewise. * gcc.target/aarch64/atomic-op-release.c: Likewise. * gcc.target/aarch64/atomic-op-seq_cst.c: Likewise. * gcc.target/aarch64/atomic-op-short.c: Likewise. Backport arm-aarch64-4.7 r193689: gcc/ * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Use 4.7 API for plus_constant. Backport arm-aarch64-4.7 r193693: Fix race in parallel build. The gengtype-lex.c is built twice, once for BUILD and once for HOST, but the HOST flavour is missing a dependency on $(BCONFIG_H). 2012-11-21 Marcus Shawcroft * Makefile.in (gengtype-lex.o): Add dependency on $(BCONFIG_H). Backport arm-aarch64-4.7 r193696: gcc/ * ChangeLog: Move recent entries to... * ChangeLog.aarch64: ...Here. gcc/testsuite/ * ChangeLog: Move recent entries to... * ChangeLog.aarch64: ...Here Backport arm-aarch64-4.7 r193730: Backport of Implement bswaphi2 with rev16 (AArch64) Backport arm-aarch64-4.7 r193733: [AARCH64-47] Backported removal of Utf documentation. 2012-11-22 Marcus Shawcroft * doc/md.texi (AArch64 family): Remove Utf. Backport arm-aarch64-4.7 r193765: Backport of builtin_bswap16 support Backport arm-aarch64-4.7 r193768: [AARCH64-47] Reverting backport of builtin_bswap16. Reverted: r193765 | ibolton | 2012-11-23 17:53:08 +0000 (Fri, 23 Nov 2012) | 1 line Backport of builtin_bswap16 support 2012-11-19 Ulrich Weigand Backport from mainline gcc/ 2012-11-13 Andrew Stubbs Ulrich Weigand * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Fix comment. * config/arm/arm.md (opt, opt_enabled): New attributes. (enabled): Use opt_enabled. (ashldi3, ashrdi3, lshrdi3): Add TARGET_NEON case. (ashldi3): Allow general operands for TARGET_NEON case. * config/arm/iterators.md (rshifts): New code iterator. (shift, shifttype): New code attributes. * config/arm/neon.md (UNSPEC_LOAD_COUNT): New unspec type. (neon_load_count, ashldi3_neon_noclobber, ashldi3_neon, signed_shift_di3_neon, unsigned_shift_di3_neon, ashrdi3_neon_imm_noclobber, lshrdi3_neon_imm_noclobber, di3_neon): New patterns. 2012-11-13 Matthew Gretton-Dann gcc/ * LINARO-VERSION: Bump version. 2012-11-13 Matthew Gretton-Dann GCC Linaro 4.7-2012.11 released. gcc/ * LINARO-VERSION: Update. 2012-11-09 Michael Hope Merge from FSF arm/aarch64-4.7-branch r193293..r193328. Backport arm-aarch64-4.7 r193293: Merge from gcc trunk 193291. gcc/ChangeLog 2012-11-07 Yufeng Zhang * config/aarch64/aarch64.c (aarch64_expand_prologue): For the load-pair with writeback instruction, replace aarch64_set_frame_expr with add_reg_note (REG_CFA_ADJUST_CFA); add new local variable 'cfa_reg' and use it. gcc/testsuite/ChangeLog 2012-11-07 Yufeng Zhang * gcc.target/aarch64/dwarf-cfa-reg.c: New test. Backport arm-aarch64-4.7 r193300: Merge from gcc trunk 193299. gcc/ChangeLog 2012-11-07 Yufeng Zhang * config/aarch64/aarch64.c (aarch64_expand_prologue): add the missing argument 'Pmode' to the 'plus_constant' call. Backport arm-aarch64-4.7 r193328: gcc/ChangeLog 2012-11-08 Yufeng Zhang Revert: 2012-11-07 Yufeng Zhang * config/aarch64/aarch64.c (aarch64_expand_prologue): add the missing argument 'Pmode' to the 'plus_constant' call. 2012-11-07 Michael Hope Merge from FSF GCC 4.7.2 (svn branches/gcc-4_7-branch 193200). 2012-10-18 Michael Hope Merge from FSF arm/aarch64-4.7-branch r192117..r192536. Backport arm-aarch64-4.7 r192117: [AARCH64-4.7] Add missing constraints to fnmadd. * config/aarch64/aarch64.md (*fnmadd4): Add missing constraints. Backport arm-aarch64-4.7 r192127: [AARCH64-4.7] Remove inline asm implementations of vqdmlxl. Backport arm-aarch64-4.7 r192501: [AARCH64-4.7] Add predefines for AArch64 code models. 2012-10-16 Chris Schlumberger-Socha * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Add predefine for AArch64 code models. Backport arm-aarch64-4.7 r192504: [AARCH64-4.7] Fix ICE in aarch64_split_doubleword_move. 2012-10-16 Marcus Shawcroft * config/aarch64/aarch64-protos.h (aarch64_split_doubleword_move): Rename to aarch64_split_128bit_move. (aarch64_split_128bit_move_p): New. * config/aarch64/aarch64.c (aarch64_split_doubleword_move): Rename to aarch64_split_128bit_move. (aarch64_split_128bit_move_p): New. * config/aarch64/aarch64.md: Adjust TImode move split. Backport arm-aarch64-4.7 r192507: Only permit valid operand range for SBFIZ Backport arm-aarch64-4.7 r192508: [AARCH64-4.7] Fix saturating doubling multiply NEON Intrinsics. Backport arm-aarch64-4.7 r192536: [AArch64] Update logical immediate instruction pattern. * config/aarch64/aarch64.md (3): Update constraint for operand 0. Update scheduling attribute for the second alternative. 2012-10-09 Matthew Gretton-Dann gcc/ * LINARO-VERSION: Bump version. 2012-10-09 Matthew Gretton-Dann GCC Linaro 4.7-2012.10 released. gcc/ * LINARO-VERSION: Update. 2012-10-05 Matthew Gretton-Dann Merge from fsf gcc arm/aarch64-4.7-branch (svn branches/arm/aarch64-4.7-branch 192093). 2012-10-03 Matthew Gretton-Dann Merge from fsf gcc arm/aarch64-4.7-branch (svn branches/arm/aarch64-4.7-branch 191926). 2012-10-02 Matthew Gretton-Dann LP: #1053348 Re-merge binary files from GCC 4.7: libgo/ * go/archive/zip/testdata/r.zip: Remove. * go/archive/zip/testdata/crc32-not-streamed.zip: New file. * go/archive/zip/testdata/go-no-datadesc-sig.zip: Likewise. * go/archive/zip/testdata/go-with-datadesc-sig.zip: Likewise. * go/debug/dwarf/testdata/typedef.elf: Update. * go/debug/dwarf/testdata/typedef.macho: Likewise. 2012-10-01 Matthew Gretton-Dann Merge from FSF GCC 4.7.2 (svn branches/gcc-4_7-branch 191881). 2012-09-20 Ulrich Weigand Backport from mainline: gcc/ 2012-09-17 Ulrich Weigand * config/arm/arm.c (arm_rtx_costs_1): Handle vec_extract and vec_set patterns. * config/arm/arm.md ("vec_set_internal"): Support memory source operands, implemented via vld1 instruction. ("vec_extract"): Support memory destination operands, implemented via vst1 instruction. ("neon_vst1_lane"): Use UNSPEC_VST1_LANE instead of vec_select. * config/arm/predicates.md ("neon_lane_number"): Remove. 2012-09-20 Ulrich Weigand Backport from mainline: gcc/ 2012-09-17 Ramana Radhakrishnan Ulrich Weigand * config/arm/arm.c (output_move_neon): Update comment. Use vld1.64/vst1.64 instead of vldm/vstm where possible. (neon_vector_mem_operand): Support double-word modes. * config/arm/neon.md (*neon_mov VD): Call output_move_neon instead of output_move_vfp. Change constraint from Uv to Un. 2012-09-12 Michael Hope gcc/ * LINARO-VERSION: Bump version. 2012-09-12 Michael Hope GCC Linaro 4.7-2012.09 released. gcc/ * LINARO-VERSION: Update. 2012-09-11 Michael Hope Merge from FSF GCC 4.7.1 (svn branches/gcc-4_7-branch 191123). 2012-09-11 Michael Hope LP: #1046999 Revert: gcc/ 2012-08-17 Richard Earnshaw * arm.md (arm_addsi3): New variant for Thumb2 16-bit ADD instruction. * arm.c (thumb2_reorg): Don't convert an ADD instruction that's already 16 bits. Backport from mainline r190530: gcc/testsuite/ 2012-08-20 Richard Earnshaw * gcc.target/arm/thumb-16bit-ops.c (f): This test uses a 16-bit add instruction. (f2): New test that really does need adds. 2012-09-05 Christophe Lyon Backport from mainline r190911: 2012-09-04 Christophe Lyon gcc/ * config/arm/arm.c (arm_evpc_neon_vext): New function. (arm_expand_vec_perm_const_1): Add call to arm_evpc_neon_vext. gcc/testsuite/ * gcc.target/arm/neon-vext.c: New test. * gcc.target/arm/neon-vext-execute.c: Ditto. 2012-09-04 Michael Hope Backport from mainline r189610: 2012-07-18 Andrew Stubbs Mark Shinwell Julian Brown gcc/ * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp) (*movdi_vfp_cortexa8, *movsf_vfp, *thumb2_movsf_vfp) (*movdf_vfp, *thumb2_movdf_vfp, *movsfcc_vfp) (*thumb2_movsfcc_vfp, *movdfcc_vfp, *thumb2_movdfcc_vfp): Add neon_type. * config/arm/arm.md (neon_type): Update comment. 2012-08-27 Michael Hope Backport from mainline r190472: gcc/ 2012-08-17 Richard Earnshaw * arm.md (arm_addsi3): New variant for Thumb2 16-bit ADD instruction. * arm.c (thumb2_reorg): Don't convert an ADD instruction that's already 16 bits. Backport from mainline r190530: gcc/testsuite/ 2012-08-20 Richard Earnshaw * gcc.target/arm/thumb-16bit-ops.c (f): This test uses a 16-bit add instruction. (f2): New test that really does need adds. 2012-08-06 Michael Hope Backport from mainline r190088: gcc/ 2012-08-02 Richard Earnshaw * arm.c (arm_gen_constant): Use UBFX for some AND operations when available. Backport from mainline r190143: gcc/ 2012-08-04 Richard Earnshaw * arm.c (arm_gen_constant): Use SImode when preparing operands for gen_extzv_t2. 2012-08-13 Matthew Gretton-Dann gcc/ * LINARO-VERSION: Bump version. 2012-08-13 Matthew Gretton-Dann GCC Linaro 4.7-2012.08 released. gcc/ * LINARO-VERSION: Update. 2012-08-10 Ulrich Weigand Backport from mainline: gcc/ 2012-07-30 Ulrich Weigand Richard Earnshaw * target.def (vector_alignment): New target hook. * doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook. * doc/tm.texi: Regenerate. * targhooks.c (default_vector_alignment): New function. * targhooks.h (default_vector_alignment): Add prototype. * stor-layout.c (layout_type): Use targetm.vector_alignment. * config/arm/arm.c (arm_vector_alignment): New function. (TARGET_VECTOR_ALIGNMENT): Define. * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use vector type alignment instead of size. * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use element type size directly instead of computing it from alignment. Fix variable naming and comment. gcc/testsuite/ 2012-07-30 Ulrich Weigand * lib/target-supports.exp (check_effective_target_vect_natural_alignment): New function. * gcc.dg/align-2.c: Only run on targets with natural alignment of vector types. * gcc.dg/vect/slp-25.c: Adjust tests for targets without natural alignment of vector types. 2012-08-01 Michael Hope Merge from FSF GCC 4.7.1 (svn branches/gcc-4_7-branch 189992). 2012-07-26 Ulrich Weigand LP 1020601 Backport from mainline: 2012-07-16 Ulrich Weigand gcc/ * tree-ssa-ccp.c (optimize_unreachable): Check gsi_end_p before calling gsi_stmt. 2012-07-06 Tom de Vries Richard Guenther gcc/ * tree-ssa-ccp.c (optimize_unreachable): New function. (execute_fold_all_builtins): Use optimize_unreachable to optimize BUILT_IN_UNREACHABLE. Don't optimize after BUILT_IN_UNREACHABLE. gcc/testsuite/ * gcc.dg/builtin-unreachable-6.c: New test. * gcc.dg/builtin-unreachable-5.c: New test. 2012-05-04 Michael Hope Backport from mainline r189611: gcc/ 2012-07-18 Jie Zhang Julian Brown * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for CONST_VECTOR. (arm_size_rtx_costs): Likewise. (neon_valid_immediate): Add a case for double 0.0. gcc/testsuite/ 2012-07-18 Jie Zhang Julian Brown * gcc.target/arm/neon-vdup-1.c: New test case. * gcc.target/arm/neon-vdup-2.c: New test case. * gcc.target/arm/neon-vdup-3.c: New test case. * gcc.target/arm/neon-vdup-4.c: New test case. * gcc.target/arm/neon-vdup-5.c: New test case. * gcc.target/arm/neon-vdup-6.c: New test case. * gcc.target/arm/neon-vdup-7.c: New test case. * gcc.target/arm/neon-vdup-8.c: New test case. * gcc.target/arm/neon-vdup-9.c: New test case. * gcc.target/arm/neon-vdup-10.c: New test case. * gcc.target/arm/neon-vdup-11.c: New test case. * gcc.target/arm/neon-vdup-12.c: New test case. * gcc.target/arm/neon-vdup-13.c: New test case. * gcc.target/arm/neon-vdup-14.c: New test case. * gcc.target/arm/neon-vdup-15.c: New test case. * gcc.target/arm/neon-vdup-16.c: New test case. * gcc.target/arm/neon-vdup-17.c: New test case. * gcc.target/arm/neon-vdup-18.c: New test case. * gcc.target/arm/neon-vdup-19.c: New test case. * gcc.target/arm/neon-combine-sub-abs-into-vabd.c: Make intrinsic arguments non-constant. 2012-07-24 Michael Hope Backport from mainline r186859: gcc/ 2012-04-28 Joern Rennecke Steven Bosscher Maxim Kuvyrkov PR tree-optimization/38785 * common.opt (ftree-partial-pre): New option. * doc/invoke.texi: Document it. * opts.c (default_options_table): Initialize flag_tree_partial_pre. * tree-ssa-pre.c (do_partial_partial_insertion): Insert only if it will benefit speed path. (execute_pre): Use flag_tree_partial_pre. 2012-07-02 Michael Hope Backport from mainline r189102: gcc/ 2012-07-01 Wei Guozhi PR target/53447 * config/arm/arm-protos.h (const_ok_for_dimode_op): New prototype. * config/arm/arm.c (const_ok_for_dimode_op): New function. * config/arm/constraints.md (Dd): New constraint. * config/arm/predicates.md (arm_adddi_operand): New predicate. * config/arm/arm.md (adddi3): Extend it to handle constants. (arm_adddi3): Likewise. (addsi3_carryin_): Extend it to handle sbc case. (addsi3_carryin_alt2_): Likewise. * config/arm/neon.md (adddi3_neon): Extend it to handle constants. gcc/testsuite/ 2012-07-01 Wei Guozhi PR target/53447 * gcc.target/arm/pr53447-1.c: New testcase. * gcc.target/arm/pr53447-2.c: New testcase. * gcc.target/arm/pr53447-3.c: New testcase. * gcc.target/arm/pr53447-4.c: New testcase. 2012-07-05 Ramana Radhakrishnan gcc/ * LINARO-VERSION: Bump version. 2012-07-05 Ramana Radhakrishnan GCC Linaro 4.7-2012.07 released. gcc/ * LINARO-VERSION: Update. 2012-07-02 Michael Hope Merge from FSF (GCC SVN branches/gcc-4_7-branch:189098) 2012-06-29 Ulrich Weigand Backport from mainline: gcc/ PR tree-optimization/53729 PR tree-optimization/53636 * tree-vect-slp.c (vect_slp_analyze_bb_1): Delay call to vect_verify_datarefs_alignment until after statements have been marked as relevant/irrelevant. * tree-vect-data-refs.c (vect_verify_datarefs_alignment): Skip irrelevant statements. (vect_enhance_data_refs_alignment): Use STMT_VINFO_RELEVANT_P instead of STMT_VINFO_RELEVANT. (vect_get_data_access_cost): Do not check for supportable alignment before calling vect_get_load_cost/vect_get_store_cost. * tree-vect-stmts.c (vect_get_store_cost): Do not abort when handling unsupported alignment. (vect_get_load_cost): Likewise. 2012-06-21 Ramana Radhakrishnan gcc/ * tree-ssa-loop-ivopts.c (add_autoinc_candidates, get_address_cost): Replace use of HAVE_{POST/PRE}_{INCREMENT/DECREMENT} with USE_{LOAD/STORE}_{PRE/POST}_{INCREMENT/DECREMENT} appropriately. * config/arm/arm.h (ARM_AUTOINC_VALID_FOR_MODE_P): New. (USE_LOAD_POST_INCREMENT): Define. (USE_LOAD_PRE_INCREMENT): Define. (USE_LOAD_POST_DECREMENT): Define. (USE_LOAD_PRE_DECREMENT): Define. (USE_STORE_PRE_DECREMENT): Define. (USE_STORE_PRE_INCREMENT): Define. (USE_STORE_POST_DECREMENT): Define. (USE_STORE_POST_INCREMENT): Define. (enum arm_auto_incmodes): New. * config/arm/arm-protos.h (arm_autoinc_modes_ok_p): Declare. * config/arm/arm.c (arm_autoinc_modes_ok_p): Define. 2012-06-15 Ulrich Weigand LP 1010826 Backport from mainline: gcc/ PR tree-optimization/53636 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Verify stride when doing basic-block vectorization. gcc/testsuite/ PR tree-optimization/53636 * gcc.target/arm/pr53636.c: New test. 2012-06-14 Michael Hope gcc/ * LINARO-VERSION: Bump version. 2012-06-12 Michael Hope GCC Linaro 4.7-2012.06 released. gcc/ * LINARO-VERSION: Update. 2012-06-06 Ramana Radhakrishnan For Andrew Stubbs. 2012-05-31 Andrew Stubbs Merge from FSF (GCC SVN branches/gcc-4_7-branch:188038) 2012-06-06 Ramana Radhakrishnan Backport from mainline: gcc/ 2012-03-15 Ramana Radhakrishnan * config.gcc (target_type_format_char): New. Document it. Set it for arm*-*-* . 2012-06-04 Zhenqiang Chen Backport from mainline r187327 and r187323 gcc/ 2012-05-09 Terry Guo * genmultilib: Update copyright dates. * doc/fragments.texi: Ditto. 2012-05-09 Terry Guo * Makefile.in (s-mlib): Add new argument MULTILIB_REQUIRED. * genmultilib (MULTILIB_REQUIRED): New. * doc/fragments.texi: Document the MULTILIB_REQUIRED. 2012-05-26 Ramana Radhakrishnan gcc/ * config/arm/arm.c (arm_evpc_neon_vrev): Fix off by one error and make sure we generate vrev instructions. gcc/testsuite * gcc.target/arm/neon-vrev.c: New. 2012-05-23 Ramana Radhakrishnan LP:990530 gcc/ 2012-03-12 Richard Guenther * config/arm/arm.c (neon_dereference_pointer): Do not call covert during RTL expansion. 2012-05-18 Andrew Stubbs Backport from mainline: 2012-05-18 Andrew Stubbs gcc/ * config/arm/arm-protos.h (arm_emit_coreregs_64bit_shift): New prototype. * config/arm/arm.c (arm_emit_coreregs_64bit_shift): New function. * config/arm/arm.md (ashldi3): Use arm_emit_coreregs_64bit_shift. (ashrdi3,lshrdi3): Likewise. (arm_cond_branch): Remove '*' to enable gen_arm_cond_branch. 2012-05-15 Andrew Stubbs gcc/ * LINARO-VERSION: Bump version. 2012-05-15 Andrew Stubbs GCC Linaro 4.7-2012.05 released. gcc/ * LINARO-VERSION: Update. 2012-05-15 Andrew Stubbs Merge from FSF (GCC SVN branches/gcc-4_7-branch:187448) 2012-05-08 Ulrich Weigand LP 959242 Backport from mainline: gcc/ PR tree-optimization/52633 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern. (vect_recog_over_widening_pattern): Remove handling of code that was already detected as over-widening pattern. Remove special handling of "unsigned" cases. Instead, support general case of conversion of the shift result to another type. gcc/testsuite/ PR tree-optimization/52633 * gcc.dg/vect/vect-over-widen-1.c: Two patterns should now be recognized as widening shifts instead of over-widening. * gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise. * gcc.dg/vect/vect-over-widen-4.c: Likewise. * gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise. * gcc.target/arm/pr52633.c: New test. gcc/ * tree-vect-patterns.c (vect_single_imm_use): New function. (vect_recog_widen_mult_pattern): Use it instead of open-coding loop. (vect_recog_over_widening_pattern): Likewise. (vect_recog_widen_shift_pattern): Likewise. gcc/ * tree-vect-patterns.c (vect_same_loop_or_bb_p): New function. (vect_handle_widen_op_by_const): Use it instead of open-coding test. (vect_recog_widen_mult_pattern): Likewise. (vect_operation_fits_smaller_type): Likewise. (vect_recog_over_widening_pattern): Likewise. (vect_recog_widen_shift_pattern): Add to vect_same_loop_or_bb_p test. 2012-05-04 Michael Hope Backport from mainline r186859: gcc/ 2012-04-26 Michael Hope Richard Earnshaw * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define. (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define. (GLIBC_DYNAMIC_LINKER_DEFAULT): Define. (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path. Backport from mainline r187012: gcc/ 2012-05-01 Richard Earnshaw * arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_DEFAULT): Avoid ifdef comparing enumeration values. Update comments. 2012-04-30 Andrew Stubbs gcc/ * config/arm/arm.md (negdi2): Use gen_negdi2_neon. * config/arm/neon.md (negdi2_neon): New insn. Also add splitters for core and NEON registers. 2012-04-30 Andrew Stubbs gcc/ * config/arm/arm.c (neon_valid_immediate): Allow const_int. (arm_print_operand): Add 'x' format. * config/arm/constraints.md (Dn): Allow const_int. * config/arm/neon.md (neon_mov): Use VDX to allow DImode. Use 'x' format to print constants. * config/arm/predicates.md (imm_for_neon_mov_operand): Allow const_int. * config/arm/vfp.md (movdi_vfp): Disable for const_int when neon is enabled. (movdi_vfp_cortexa8): Likewise. 2012-04-13 Ulrich Weigand LP 968766 Backport from mainline: gcc/ PR tree-optimization/52870 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that presumed pattern statement is within the same loop or basic block. gcc/testsuite/ PR tree-optimization/52870 * gcc.dg/vect/pr52870.c: New test. 2012-04-10 Andrew Stubbs gcc/ * LINARO-VERSION: Bump version. 2012-04-10 Andrew Stubbs GCC Linaro 4.7-2012.04 released. gcc/ * LINARO-VERSION: New file. * configure.ac: Add Linaro version string. * configure: Regenerate. 2012-04-05 Andrew Stubbs Backport from mainline r186167: 2012-04-05 Andrew Stubbs gcc/ * config/arm/arm.md (arch): Add neon_onlya8 and neon_nota8. (arch_enabled): Handle new arch types. (one_cmpldi2): Add NEON support. 2012-04-02 Andrew Stubbs Merge from FSF (GCC SVN branches/gcc-4_7-branch:186061) 2012-04-04 Andrew Stubbs Backport from mainline r185855: 2012-03-27 Ramana Radhakrishnan * gcc.target/arm/thumb-ifcvt.c: Only run for -mthumb. * gcc.target/arm/thumb-16bit-ops.c: Likewise. 2012-03-26 Michael Hope Backport from mainline r185702: libcpp/ 2012-03-22 Richard Earnshaw * lex.c (search_line_fast): Provide Neon-optimized version for ARM. 2012-03-23 Michael Hope Backport from mainline r184957: libgcc/ 2012-03-05 Richard Henderson * longlong.h [ARM] (umul_ppmm): Use umull for arm3m and later. [ARM] (count_trailing_zeros): Use the builtin. Backport from mainline r185202: 2012-03-11 Michael Hope * longlong.h [ARM] (add_ssaaaa, sub_ddmmss, umul_ppmm): Enable for Thumb-2. Backport from mainline r185698: 2012-03-22 Richard Earnshaw * arm/lib1funcs.asm (ctzsi2): New function. * arm/t-elf (LIB1ASMFUNCS): Add _ctzsi2. * arm/t-linux (LIB1ASMFUNCS): Likewise. * arm/t-strongarm-elf (LIB1ASMFUNCS): Likewise. * arm/t-symbian (LIB1ASMFUNCS): Likewise. * arm/t-vxworks (LIB1ASMFUNCS): Likewise. * arm/t-wince-pe (LIB1ASMFUNCS): Likewise. 2012-03-23 Michael Hope Backport from mainline r185603: gcc/ 2012-03-20 Richard Earnshaw * arm/predicates.md (zero_operand, reg_or_zero_operand): New predicates. * arm/neon.md (neon_vceq, neon_vcge): Use reg_or_zero_operand predicate. (neon_vcle, neon_vclt): Use zero_operand predicate. 2012-03-23 Michael Hope Backport from mainline r185603: gcc/ 2012-03-21 Richard Earnshaw * neon.md (neon_vget_lanev2di): Use gen_lowpart and gen_highpart. * config/arm/neon.ml (Fixed_return_reg): Renamed to fixed_vector_reg. All callers changed. (Fixed_core_reg): New feature. (Vget_lane [sizes S64 and U64]): Add Fixed_core_reg. Allow fmrrd in disassembly. * neon-testgen.ml: Handle Fixed_core_reg. gcc/testsuite/ * gcc.target/arm/neon/vgetQ_laneu64.c: Regenerated. * gcc.target/arm/neon/vgetQ_lanes64.c: Likewise. 2012-03-26 Ulrich Weigand LP 960283 LP 960274 LP 960817 Backport from mainline: gcc/ PR tree-optimization/52686 * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle WIDEN_LSHIFT_EXPR. gcc/testsuite/ PR tree-optimization/52686 * gcc.target/arm/pr52686.c: New test. 2012-03-21 Andrew Stubbs Backport from FSF mainline: 2012-03-21 Andrew Stubbs gcc/ * config/arm/arm.c (thumb2_reorg): Add complete support for 16-bit instructions. * config/arm/thumb2.md: Delete obsolete flag-clobbering peepholes. gcc/testsuite/ * gcc.target/arm/thumb-16bit-ops.c: New file. * gcc.target/arm/thumb-ifcvt.c: New file. 2012-03-06 Ulrich Weigand Backport from mainline: gcc/ * config/arm/arm.c (arm_sat_operator_match): New function. * config/arm/arm-protos.h (arm_sat_operator_match): Add prototype. * config/arm/arm.md ("insn" attribute): Add "sat" value. ("SAT", "SATrev"): New code iterators. ("SATlo", "SAThi"): New code iterator attributes. ("*satsi_"): New pattern. ("*satsi__shift"): Likewise. * config/arm/arm-fixed.md ("arm_ssatsihi_shift"): Add "insn" and "shift" attributes. ("arm_usatsihi"): Add "insn" attribute. * config/arm/predicates.md (sat_shift_operator): Allow multiplication by powers of two. Do not allow shift by 32. gcc/testsuite/ * gcc.target/arm/sat-1.c: New test. 2012-02-29 Andrew Stubbs Merge from FSF trunk SVN revision 184662. 2012-02-27 Ulrich Weigand gcc/ * combine.c (apply_distributive_law): Do not distribute SUBREG. 2012-02-27 Richard Sandiford gcc/ * fwprop.c (propagate_rtx): Also set PR_CAN_APPEAR for subregs. 2012-02-24 Ulrich Weigand Backport from mainline: 2012-02-22 Ulrich Weigand gcc/testsuite/ * lib/target-supports.exp (check_effective_target_vect_condition): Return true for NEON. 2012-02-24 Ulrich Weigand Merged from Linaro GCC 4.6, still need to be merged upstream: 2011-11-27 Ira Rosen gcc/ * tree-vectorizer.h (vect_pattern_recog): Add new argument. * tree-vect-loop.c (vect_analyze_loop_2): Update call to vect_pattern_recog. * tree-vect-patterns.c (widened_name_p): Pass basic block info to vect_is_simple_use. (vect_recog_dot_prod_pattern): Fail for basic blocks. (vect_recog_widen_sum_pattern): Likewise. (vect_handle_widen_op_by_const): Support basic blocks. (vect_operation_fits_smaller_type, vect_recog_over_widening_pattern): Likewise. (vect_recog_vector_vector_shift_pattern): Support basic blocks. Update call to vect_is_simple_use. (vect_recog_mixed_size_cond_pattern): Support basic blocks. Add printing. (check_bool_pattern): Add an argument, update call to vect_is_simple_use and the recursive calls. (vect_recog_bool_pattern): Update relevant function calls. Add printing. (vect_mark_pattern_stmts): Update calls to new_stmt_vec_info. (vect_pattern_recog_1): Check for reduction only in loops. (vect_pattern_recog): Add new argument. Support basic blocks. * tree-vect-stmts.c (vectorizable_conversion): Pass basic block info to vect_is_simple_use_1. * tree-vect-slp.c (vect_get_and_check_slp_defs): Support basic blocks. (vect_slp_analyze_bb_1): Call vect_pattern_recog. gcc/testsuite/ * gcc.dg/vect/bb-slp-pattern-1.c: New test. * gcc.dg/vect/bb-slp-pattern-2.c: New test. 2011-11-27 Ira Rosen gcc/ * tree-vect-patterns.c (widened_name_p): Rename to ... (type_conversion_p): ... this. Add new argument to determine if it's a promotion or demotion operation. Check for CONVERT_EXPR_CODE_P instead of NOP_EXPR. (vect_recog_dot_prod_pattern): Call type_conversion_p instead widened_name_p. (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern, vect_operation_fits_smaller_type, vect_recog_widen_shift_pattern): Likewise. (vect_recog_mixed_size_cond_pattern): Likewise and allow non-constant then and else clauses. gcc/testsuite/ * gcc.dg/vect/slp-cond-3.c: New test. * gcc.dg/vect/slp-cond-4.c: New test. 2012-02-17 Ulrich Weigand gcc/ * common/config/arm/arm-common.c (arm_option_optimization_table): Enable -fsched-pressure using -fsched-pressure-algorithm=model by default when optimizing. 2012-02-17 Richard Sandiford gcc/ * sched-deps.c (fixup_sched_groups): Rename to... (chain_to_prev_insn): ...this. (chain_to_prev_insn_p): New function. (deps_analyze_insn): Use it instead of SCHED_GROUP_P. 2012-02-17 Richard Sandiford gcc/ * sched-int.h (_haifa_insn_data): Move priority_status. Add model_index. (INSN_MODEL_INDEX): New macro. * haifa-sched.c (insn_delay): New function. (sched_regno_pressure_class): Update commentary. (mark_regno_birth_or_death): Pass the liveness bitmap and pressure array as arguments, instead of using curr_reg_live and curr_reg_pressure. Only update the pressure if the bit in the liveness set has changed. (initiate_reg_pressure_info): Always trust the live-in set for SCHED_PRESSURE_MODEL. (initiate_bb_reg_pressure_info): Update call to mark_regno_birth_or_death. (dep_list_size): Take the list as argument. (calculate_reg_deaths): New function, extracted from... (setup_insn_reg_pressure_info): ...here. (MODEL_BAR): New macro. (model_pressure_data, model_insn_info, model_pressure_limit) (model_pressure_group): New structures. (model_schedule, model_worklist, model_insns, model_num_insns) (model_curr_point, model_before_pressure, model_next_priority): New variables. (MODEL_PRESSURE_DATA, MODEL_MAX_PRESSURE, MODEL_REF_PRESSURE) (MODEL_INSN_INFO, MODEL_INSN): New macros. (model_index, model_update_limit_points_in_group): New functions. (model_update_limit_points, model_last_use_except): Likewise. (model_start_update_pressure, model_update_pressure): Likewise. (model_recompute, model_spill_cost, model_excess_group_cost): Likewise. (model_excess_cost, model_dump_pressure_points): Likewise. (model_set_excess_costs): Likewise. (rank_for_schedule): Extend SCHED_PRIORITY_WEIGHTED ordering to SCHED_PRIORITY_MODEL. Use insn_delay. Use the order in the model schedule as an alternative tie-breaker. Update the call to dep_list_size. (ready_sort): Call model_set_excess_costs. (update_register_pressure): Update call to mark_regno_birth_or_death. Rely on that function to check liveness rather than doing it here. (model_classify_pressure, model_order_p, model_add_to_worklist_at) (model_remove_from_worklist, model_add_to_worklist, model_promote_insn) (model_add_to_schedule, model_analyze_insns, model_init_pressure_group) (model_record_pressure, model_record_pressures): New functions. (model_record_final_pressures, model_add_successors_to_worklist) (model_promote_predecessors, model_choose_insn): Likewise. (model_reset_queue_indices, model_dump_pressure_summary): Likewise. (model_start_schedule, model_finalize_pressure_group): Likewise. (model_end_schedule): Likewise. (schedule_insn): Say when we're scheduling the next instruction in the model schedule. (schedule_insn): Handle SCHED_PRESSURE_MODEL. (queue_to_ready): Do not add instructions that are MAX_SCHED_READY_INSNS beyond the current point of the model schedule. Always allow the next instruction in the model schedule to be added. (debug_ready_list): Print the INSN_REG_PRESSURE_EXCESS_COST_CHANGE and delay for SCHED_PRESSURE_MODEL too. (prune_ready_list): Extend SCHED_PRIORITY_WEIGHTED handling to SCHED_PRIORITY_MODEL, but also take the DFA into account. (schedule_block): Call model_start_schedule and model_end_schedule. Extend SCHED_PRIORITY_WEIGHTED stall handling to SCHED_PRIORITY_MODEL. (sched_init): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling to SCHED_PRESSURE_MODEL, but don't allocate saved_reg_live or region_ref_regs. (sched_finish): Update accordingly. (fix_tick_ready): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling to SCHED_PRESSURE_MODEL. (add_jump_dependencies): Update call to dep_list_size. (haifa_finish_h_i_d): Fix leak of max_reg_pressure. (haifa_init_insn): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling to SCHED_PRESSURE_MODEL. * sched-deps.c (init_insn_reg_pressure_info): Likewise, but don't allocate INSN_MAX_REG_PRESSURE for SCHED_PRESSURE_MODEL. (sched_analyze_insn): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling to SCHED_PRESSURE_MODEL. 2012-02-17 Richard Sandiford gcc/ * common.opt (fsched-pressure-algorithm=): New option. * flag-types.h (sched_pressure_algorithm): New enum. * sched-int.h (sched_pressure_p): Replace with... (sched_pressure): ...this new variable. * haifa-sched.c (sched_pressure_p): Replace with... (sched_pressure): ...this new variable. (sched_regno_pressure_class, rank_for_schedule, ready_sort) (update_reg_and_insn_max_reg_pressure, schedule_insn) (debug_ready_list, prune_ready_list, schedule_block, sched_init) (sched_finish, fix_tick_ready, haifa_init_insn): Update accordingly. * sched-deps.c (init_insn_reg_pressure_info): Likewise. (sched_analyze_insn): Likewise. * sched-rgn.c (schedule_region): Likewise. * config/m68k/m68k.c (m68k_sched_variable_issue): Likewise. 2012-02-15 Andrew Stubbs Merge from FSF trunk SVN revision 184223. Imported GCC from FSF trunk SVN revision 183796.