Michael Meissner [Wed, 10 Jun 2015 17:16:58 +0000 (17:16 +0000)]
backport: re PR target/66474 (Document the use of %x in powerpc asm statements)
2015-06-10 Michael Meissner <meissner@linux.vnet.ibm.com>
Backport from mainline:
2015-06-10 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/66474
* doc/md.texi (Machine Constraints): Document that on the PowerPC
if you use a constraint that targets a VSX register, you must use
%x<n> in the template.
Jakub Jelinek [Wed, 10 Jun 2015 09:26:06 +0000 (11:26 +0200)]
re PR target/66470 (TLS ICE due to ix86_split_long_move)
PR target/66470
* config/i386/i386.c (ix86_split_long_move): For collisions
involving direct tls segment refs, move the UNSPEC_TP possibly
wrapped in ZERO_EXTEND out of the address for lea, to each of
the memory loads.
* gcc.dg/tls/pr66470.c: New test.
* gcc.target/i386/pr66470.c: New test.
Uros Bizjak [Mon, 8 Jun 2015 20:07:08 +0000 (22:07 +0200)]
backport: re PR target/66275 (__attribute__((sysv_abi)) with x86_64-w64-mingw32-gcc generates incorrect code)
Backport from mainline:
2015-06-03 Uros Bizjak <ubizjak@gmail.com>
PR target/66275
* config/i386/i386.c (ix86_function_arg_regno): Use ix86_cfun_abi
to determine current function ABI.
(ix86_function_value_regno_p): Ditto.
testsuite/ChangeLog:
Backport from mainline:
2015-06-03 Uros Bizjak <ubizjak@gmail.com>
PR target/66275
* gcc.target/i386/pr66275.c: New test.
Jonathan Wakely [Mon, 8 Jun 2015 14:42:02 +0000 (15:42 +0100)]
re PR libstdc++/66354 ([UBSAN] stl_algobase.h:708:7: runtime error: null pointer passed as argument)
PR libstdc++/66354
* include/bits/stl_algobase.h (__fill_a): Check length before calling
memset.
PR libstdc++/66327
* include/bits/stl_algobase.h (__equal<true>::equal): Do not call
memcmp for empty ranges.
(__lexicographical_compare<true>::__lc): Likewise.
Jakub Jelinek [Wed, 3 Jun 2015 15:35:03 +0000 (17:35 +0200)]
backport: re PR middle-end/66133 (Wrong-code with noreturn #pragma omp task body)
Backported from mainline
2015-05-13 Jakub Jelinek <jakub@redhat.com>
PR middle-end/66133
* omp-low.c (expand_omp_taskreg): For GIMPLE_OMP_TASK expansion,
make sure it is never noreturn, even when the task body does not
return.
(lower_omp_taskreg): For GIMPLE_OMP_TASK, emit GIMPLE_OMP_CONTINUE
right before GIMPLE_OMP_RETURN.
(make_gimple_omp_edges): Accept GIMPLE_OMP_CONTINUE as ->cont
for GIMPLE_OMP_TASK. For GIMPLE_OMP_RETURN corresponding to
GIMPLE_OMP_TASK add an EDGE_ABNORMAL edge from entry to exit.
Jakub Jelinek [Wed, 3 Jun 2015 15:33:59 +0000 (17:33 +0200)]
backport: re PR middle-end/65984 (ICE: definition in block 4 does not dominate use in block 2 with -fnon-call-exceptions -fsanitize=enum)
Backported from mainline
2015-05-04 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/65984
* ubsan.c: Include tree-cfg.h.
(instrument_bool_enum_load): Use stmt_ends_bb_p instead of
stmt_could_throw_p test, rename can_throw variable to ends_bb.
Jakub Jelinek [Wed, 3 Jun 2015 15:31:46 +0000 (17:31 +0200)]
backport: re PR middle-end/65597 (ICE in build_outer_var_ref, at omp-low.c:1043)
Backported from mainline
2015-03-30 Jakub Jelinek <jakub@redhat.com>
PR fortran/65597
* trans-openmp.c (gfc_trans_omp_do): For !simple simd with explicit
linear clause for the iterator set OMP_CLAUSE_LINEAR_NO_COPYIN.
For implcitly added !simple OMP_CLAUSE_LINEAR set it too. Use step 1
instead of the original step on the new iterator - count.
* testsuite/libgomp.fortran/pr65597.f90: New test.
Jakub Jelinek [Wed, 3 Jun 2015 15:30:58 +0000 (17:30 +0200)]
backport: re PR target/65504 (select case with strings and -fgcse -O)
2015-06-03 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
2015-03-23 Jakub Jelinek <jakub@redhat.com>
PR target/65504
* config/i386/i386.c (ix86_copy_addr_to_reg): Set REG_POINTER
on the pseudo.
(expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): Set
REG_POINTER on *destptr after adjusting it for prologue size.
Jakub Jelinek [Wed, 3 Jun 2015 15:27:43 +0000 (17:27 +0200)]
backport: re PR tree-optimization/65450 (Unaligned access with -O3 -mtune=k8)
Backported from mainline
2015-03-18 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/65450
* tree-vect-data-refs.c (vect_duplicate_ssa_name_ptr_info): New
function.
(vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr): Use
it instead of duplicate_ssa_name_ptr_info.
Jakub Jelinek [Wed, 3 Jun 2015 15:25:15 +0000 (17:25 +0200)]
backport: re PR gcov-profile/64634 (gcov reports catch(...) as not executed)
Backported from mainline
2015-02-18 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/64634
* tree-eh.c (frob_into_branch_around): Fix up typos
in function comment.
(lower_catch): Put eh_seq resulting from EH lowering of
the cleanup sequence after the cleanup rather than before
it.
Backport from mainline
2015-05-26 Michael Matz <matz@suse.de>
PR middle-end/66251
* tree-vect-stmts.c (vect_create_vectorized_demotion_stmts): Always set
STMT_VINFO_VEC_STMT, also with SLP.
* gcc.dg/vect/pr66251.c: New test.
2015-05-22 Richard Biener <rguenther@suse.de>
PR tree-optimization/66251
* tree-vect-stmts.c (vectorizable_conversion): Properly
set STMT_VINFO_VEC_STMT even for the SLP case.
* gfortran.fortran-torture/compile/pr66251.f90: New testcase.
2015-05-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/66272
Revert parts of
2014-08-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/62031
* tree-data-ref.c (dr_analyze_indices): Do not set
DR_UNCONSTRAINED_BASE.
(dr_may_alias_p): All indirect accesses have to go the
formerly DR_UNCONSTRAINED_BASE path.
* tree-data-ref.h (struct indices): Remove
unconstrained_base member.
(DR_UNCONSTRAINED_BASE): Remove.
* gcc.dg/torture/pr66272.c: New testcase.
2015-05-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/66123
* tree-ssa-dom.c (propagate_rhs_into_lhs): Check if we found
a taken edge.
* gcc.dg/torture/pr66123.c: New testcase.
2015-06-02 Richard Biener <rguenther@suse.de>
PR debug/65549
* dwarf2out.c (lookup_context_die): New function.
(resolve_addr): Avoid forcing a full DIE for the
target of a DW_TAG_GNU_call_site during late compilation.
Instead create a stub DIE without a type if we have a
context DIE present.
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>