backport: varasm.c (output_constant_pool_1): Pass down alignment from constant pool entry's descriptor to output_constant_pool_2.
Backported from mainline
2015-05-14 Rohit Arul Raj <rohitarulraj@freescale.com>
* varasm.c (output_constant_pool_1): Pass down alignment from
constant pool entry's descriptor to output_constant_pool_2.
(output_object_block): Add comment prior to call to
output_constant_pool_1.
Andreas Krebbel [Tue, 12 May 2015 11:29:35 +0000 (11:29 +0000)]
S/390: Adjust zEC12 scheduling
* config/s390/2827.md: Split zEC12_simple into zEC12_simple_int
and zEC12_simple_fp.
* config/s390/s390.c (s390_issue_rate): Set issue rate for zEC12
to 1.
Jack Howarth [Wed, 6 May 2015 00:33:49 +0000 (00:33 +0000)]
backport: re PR target/61352 (gcc 4.9.0 fails to execute dsymutil when linking executables on darwin)
2015-05-05 Jack Howarth <howarth.at.gcc@gmail.com>
Backport from mainline
2014-05-29 Mike Stump <mikestump@comcast.net>
PR debug/61352
* collect2.c (maybe_run_lto_and_relink): Be sure to always run
post ld passes when lto is used.
Peter Bergner [Tue, 5 May 2015 14:25:35 +0000 (09:25 -0500)]
backport: re PR target/64579 (__TM_end __builtin_tend failed to return transactional state)
gcc/
Backport from mainline.
2015-04-27 Peter Bergner <bergner@vnet.ibm.com>
PR target/64579
* config/rs6000/htm.md: Remove all define_expands.
(UNSPECV_HTM_TABORTDC, UNSPECV_HTM_TABORTDCI, UNSPECV_HTM_TABORTWC,
UNSPECV_HTM_TABORTWCI): Remove.
(UNSPECV_HTM_TABORTXC, UNSPECV_HTM_TABORTXCI, UNSPECV_HTM_TTEST): New.
(tabort_internal, tbegin_internal, tcheck_internal, tend_internal,
trechkpt_internal, treclaim_internal, tsr_internal): Rename from this...
(tabort, tbegin, tcheck, tend, trechkpt, treclaim, tsr): ...to this.
(tabortdc_internal, tabortdci_internal, tabortwc_internal,
tabortwci_internal): Remove define_insns.
(tabort<wd>c, tabort<wd>ci): New define_insns.
(tabort): Use gpc_reg_operand.
(tcheck): Remove operand.
(htm_mfspr_<mode>, htm_mtspr_<mode>): Use GPR mode macro.
* config/rs6000/htmxlintrin.h (__TM_end): Use _HTM_TRANSACTIONAL as
expected value.
* config/rs6000/rs6000-builtin.def (BU_HTM_SPR0): Remove.
(BU_HTM_SPR1): Rename to BU_HTM_V1. Remove use of RS6000_BTC_SPR.
(tabort, tabortdc, tabortdci, tabortwc, tabortwci, tbegin,
tcheck, tend, tendall, trechkpt, treclaim, tresume, tsuspend,
tsr, ttest): Pass in the RS6000_BTC_CR attribute.
(get_tfhar, set_tfhar, get_tfiar, set_tfiar, get_texasr, set_texasr,
get_texasru, set_texasru): Pass in the RS6000_BTC_SPR attribute.
(tcheck): Remove builtin argument.
* config/rs6000/rs6000.c (rs6000_htm_spr_icode): Use TARGET_POWERPC64
not TARGET_64BIT.
(htm_expand_builtin): Fix usage of expandedp. Disallow usage of the
tabortdc and tabortdci builtins when not in 64-bit mode.
Modify code to handle the loss of the HTM define_expands.
Emit code to copy the CR register to TARGET.
(htm_init_builtins): Modify code to handle the loss of the HTM
define_expands.
* config/rs6000/rs6000.h (RS6000_BTC_32BIT): Delete.
(RS6000_BTC_64BIT): Likewise.
(RS6000_BTC_CR): New macro.
* doc/extend.texi: Update documentation for htm builtins.
gcc/testsuite/
Backport from mainline.
2015-04-27 Peter Bergner <bergner@vnet.ibm.com>
PR target/64579
* gcc.target/powerpc/htm-1.c: New test.
* gcc.target/powerpc/htm-builtin-1.c (__builtin_tabortdc): Only test
on 64-bit compiles.
(__builtin_tabortdci): Likewise.
(__builtin_tcheck): Remove operand.
* lib/target-supports.exp (check_htm_hw_available): New function.
[...]/source-gcc/gcc/testsuite/g++.dg/gomp/tpl-target-update.C: In instantiation of 'void f(T, T) [with T = int]':
[...]/source-gcc/gcc/testsuite/g++.dg/gomp/tpl-target-update.C:19:9: required from here
[...]/source-gcc/gcc/testsuite/g++.dg/gomp/tpl-target-update.C:10:9: internal compiler error: tree check: expected oacc_parallel or oacc_kernels or oacc_data or oacc_host_data or omp_parallel or omp_task or omp_for or omp_simd or cilk_simd or cilk_for or omp_distribute or oacc_loop or omp_teams or omp_target_data or omp_target or omp_sections or omp_single, have omp_target_update in tsubst_expr, at cp/pt.c:14209
0xf5aae1 tree_range_check_failed(tree_node const*, char const*, int, char const*, tree_code, tree_code)
[...]/source-gcc/gcc/tree.c:9384
0x66e201 tree_range_check
[...]/source-gcc/gcc/tree.h:2979
0x66e201 tsubst_expr
[...]/source-gcc/gcc/cp/pt.c:14209
0x6695e3 tsubst_expr
[...]/source-gcc/gcc/cp/pt.c:13752
0x66ac07 tsubst_expr
[...]/source-gcc/gcc/cp/pt.c:13938
0x667c41 instantiate_decl(tree_node*, int, bool)
[...]/source-gcc/gcc/cp/pt.c:20367
0x6ae386 instantiate_pending_templates(int)
[...]/source-gcc/gcc/cp/pt.c:20484
0x6edc3d cp_write_global_declarations()
[...]/source-gcc/gcc/cp/decl2.c:4456
Backport from trunk r222564:
gcc/cp/
* pt.c (tsubst_expr) <OMP_TARGET_UPDATE>: Use
OMP_TARGET_UPDATE_CLAUSES instead of OMP_CLAUSES.
gcc/testsuite/
* g++.dg/gomp/tpl-target-update.C: New file.
Backport from Mainline
2014-11-20 Tejas Belagod <tejas.belagod@arm.com>
* config/aarch64/aarch64-protos.h (aarch64_classify_symbol):
Fixup prototype.
* config/aarch64/aarch64.c (aarch64_expand_mov_immediate,
aarch64_cannot_force_const_mem, aarch64_classify_address,
aarch64_classify_symbolic_expression): Fixup call to
aarch64_classify_symbol.
(aarch64_classify_symbol): Add range-checking for
symbol + offset addressing for tiny and small models.
Backport from mainline
2014-11-20 Tejas Belagod <tejas.belagod@arm.com>
Michael Meissner [Fri, 24 Apr 2015 23:44:41 +0000 (23:44 +0000)]
backport: re PR target/65849 (Add missing tuning knobs to #pragma target/attribute target support)
2015-04-24 Michael Meissner <meissner@linux.vnet.ibm.com>
Backport from mainline
2015-04-24 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/65849
* config/rs6000/rs6000.opt (-mvsx-align-128): Make options that
save to independent variables use the Save attribute. This will
allow these options to be modified with the #pragma/attribute
target support.
(-mallow-movmisalign): Likewise.
(-mallow-df-permute): Likewise.
(-msched-groups): Likewise.
(-malways-hint): Likewise.
(-malign-branch-targets): Likewise.
(-mvectorize-builtins): Likewise.
(-msave-toc-indirect): Likewise.
* config/rs6000/rs6000.c (rs6000_opt_masks): Add more options that
can be set via the #pragma/attribute target support.
(rs6000_opt_vars): Likewise.
(rs6000_inner_target_options): If VSX was set, also set
-mno-avoid-indexed-addresses.
Bill Schmidt [Fri, 24 Apr 2015 21:16:35 +0000 (21:16 +0000)]
backport: altivec.md (*altivec_lvx_<mode>_internal): Remove asterisk from name so this can be generated directly.
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222385
2015-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/altivec.md (*altivec_lvx_<mode>_internal): Remove
asterisk from name so this can be generated directly.
(*altivec_stvx_<mode>_internal): Likewise.
* config/rs6000/rs6000.c (rs6000_emit_le_vsx_store): Add assert
that this is never called during or after reload/lra.
(rs6000_frame_related): Remove split_reg
argument and logic that references it.
(emit_frame_save): Remove last parameter from call to
rs6000_frame_related.
(rs6000_emit_prologue): Remove last parameter from eight calls to
rs6000_frame_related. Force generation of stvx instruction for
Altivec register saves. Remove split_reg handling, which is no
longer needed.
(rs6000_emit_epilogue): Force generation of lvx instruction for
Altivec register restores.
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222351
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rtx_is_swappable_p): Commentary
adjustments.
(insn_is_swappable_p): Return 1 for a convert from double to
single precision when all of its uses are splats of BE element
zero.
[gcc/testsuite]
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222351
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Bill Schmidt [Fri, 24 Apr 2015 13:45:08 +0000 (13:45 +0000)]
backport: re PR target/65456 (powerpc64le autovectorized copy loop missed optimization)
[gcc]
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222349
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/65456
* config/rs6000/rs6000.c (rs6000_option_override_internal): For
VSX + POWER8, enable TARGET_ALLOW_MOVMISALIGN and
TARGET_EFFICIENT_UNALIGNED_VSX if not selected by command line
option.
(rs6000_builtin_mask_for_load): Return 0 for targets with
efficient unaligned VSX accesses so that the vectorizer will use
direct unaligned loads.
(rs6000_builtin_support_vector_misalignment): Always return true
for targets with efficient unaligned VSX accesses.
(rs6000_builtin_vectorization_cost): Cost of unaligned loads and
stores on targets with efficient unaligned VSX accesses is almost
always the same as the cost of an aligned load or store, so model
it that way.
* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Return 0 for
unaligned vectors if we have efficient unaligned VSX accesses.
* config/rs6000/rs6000.opt (mefficient-unaligned-vector): New
undocumented option.
[gcc/testsuite]
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222349
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Bill Schmidt [Sun, 19 Apr 2015 16:51:12 +0000 (16:51 +0000)]
backport: re PR target/65787 (Miscompile due to bad vector swap optimization for little endian)
[gcc]
2015-04-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Jakub Jelinek <jakub@redhat.com>
Backport from mainline r222205
2015-04-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Jakub Jelinek <jakub@redhat.com>
PR target/65787
* config/rs6000/rs6000.c (rtx_is_swappable_p): Ensure that a
subsequent SH_NONE operand does not overwrite an existing *special
value.
(adjust_extract): Handle case where a vec_extract operation is
wrapped in a PARALLEL.
[gcc/testsuite]
2015-04-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222205
2015-04-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Mikael Morin [Tue, 14 Apr 2015 09:18:15 +0000 (09:18 +0000)]
re PR fortran/56674 (ICE in check_sym_interfaces)
PR fortran/56674
PR fortran/58813
PR fortran/59016
PR fortran/59024
fortran/
* symbol.c (save_symbol_data, gfc_save_symbol_data): Rename the
former to the latter and make it non-static. Update callers.
* gfortran.h (gfc_save_symbol_data): New prototype.
* decl.c (gfc_match_decl_type_spec): Call 'gfc_save_symbol_data'
before modifying symbols 'sym' and 'dt_sym'.
testsuite/
* gfortran.dg/used_types_27.f90: New.
Jonathan Wakely [Sat, 11 Apr 2015 11:47:25 +0000 (12:47 +0100)]
shared_mutex (shared_timed_mutex): Add comments to explain the logic in the non-pthread_rwlock_t version.
* include/std/shared_mutex (shared_timed_mutex): Add comments to
explain the logic in the non-pthread_rwlock_t version.
(_Mutex): Remove redundant type.
(_M_n_readers): Rename to _S_max_readers.
(_M_write_entered, _M_readers): New convenience functions.
(lock, lock_shared, try_lock_shared, unlock_shared): Use convenience
functions. Use predicates with condition variables. Simplify bitwise
operations.
(try_lock_for, try_shared_lock_for): Convert duration to time_point
and call try_lock_until or try_shared_lock_until respectively.
(try_lock_until, try_shared_lock_until): Wait on the condition
variables until the specified time passes.
(unlock): Add Debug Mode assertion.
(unlock_shared): Add Debug Mode assertion.
* testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: New.
Jonathan Wakely [Sat, 11 Apr 2015 11:47:09 +0000 (12:47 +0100)]
re PR libstdc++/58038 (std::this_thread::sleep_until can cause inifinite sleep)
PR libstdc++/58038
* include/std/thread (this_thread::sleep_for): Check for negative
durations.
(this_thread::sleep_until): Check for times in the past.
* testsuite/30_threads/this_thread/58038.cc: New.
* testsuite/30_threads/this_thread/60421.cc: New.
re PR target/65710 (Thumb1 ICE caused by no register to spill)
2015-04-09 Vladimir Makarov <vmakarov@redhat.com>
PR target/65710
* lra-int.h (lra_bad_spill_regno_start): New.
* lra.c (lra_bad_spill_regno_start): New.
(lra): Set up lra_bad_spill_regno_start. Set up
lra_constraint_new_regno_start unconditionally.
* lra-assigns.c (spill_for): Use lra_bad_spill_regno_start for
spill preferences.
Richard Biener [Tue, 7 Apr 2015 13:40:24 +0000 (13:40 +0000)]
backport: re PR tree-optimization/64909 (Missed vectorization with bdver1)
2015-04-07 Richard Biener <rguenther@suse.de>
Backport from mainline
2015-04-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/64909
PR tree-optimization/65660
* tree-vectorizer.h (vect_get_known_peeling_cost): Adjust
to take a cost vector for scalar iteration cost.
(vect_get_single_scalar_iteration_cost): Likewise.
* tree-vect-loop.c (vect_get_single_scalar_iteration_cost):
Compute the scalar iteration cost into a cost vector.
(vect_get_known_peeling_cost): Use the scalar cost vector to
account for the cost of the peeled iterations.
(vect_estimate_min_profitable_iters): Likewise.
* tree-vect-data-refs.c (vect_peeling_hash_get_lowest_cost):
Likewise.