Richard Biener [Tue, 12 Jan 2016 08:36:24 +0000 (08:36 +0000)]
re PR tree-optimization/69168 (ICE in vect_analyze_loop_2, at tree-vect-loop.c:2182)
2016-01-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/69168
* tree-vect-loop.c (vect_analyze_loop_2): Reset both main and
pattern stmt SLP type.
* tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Patterns may
end up unused so cope with that case.
Richard Biener [Tue, 12 Jan 2016 08:30:44 +0000 (08:30 +0000)]
re PR tree-optimization/69157 (ICE in vect_transform_stmt, at tree-vect-stmts.c:8176)
2016-01-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/69157
* tree-vect-stmts.c (vectorizable_mask_load_store): Check
stmts def type only during analyze phase.
(vectorizable_call): Likewise.
(vectorizable_simd_clone_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
* gcc.dg/torture/pr69157.c: New testcase.
2016-01-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/69174
* tree-vect-stmts.c (vect_mark_relevant): Remove excessive vertical
space.
(vectorizable_load): Properly compute the number of loads needed
for permuted strided SLP loads and do not spuriously assign
to SLP_TREE_VEC_STMTS.
Andris Pavenis [Tue, 12 Jan 2016 04:57:10 +0000 (06:57 +0200)]
[PATCH 5/6] [DJGPP] Update DJGPP configuration related files
* config/i386/djgpp.h (PREFERRED_DEBUGGING_TYPE): Define to DWARF2
(TARGET_ASM_OUTPUT_IDENT): Define to default_asm_output_ident_directive
(MD_EXEC_PREFIX): Remove.
(MD_STARTFILE_PREFIX) Removee.
(FILE_NAME_ABSOLUTE_P): Remove.
(CPP_SPEC): Do not read macros from sys/version.h.
(LINK_COMMAND_SPEC): Remove.
(LOCAL_INCLUDE_DIR): Remove.
(TARGET_ASM_NAMED_SECTION): Define to i386_djgpp_asm_named_section
(TARGET_OS_CPP_BUILTINS): Add DJGPP (non ISO only), __DJGPP, __DJGPP__, unix.
(POST_LINK_SPEC): Define to invoke stubify after linker
(LIBSTDCXX): Remove define
(DBX_REGISTER_NUMBER): Define to svr4_dbx_register_map.
(DEFAULT_PCC_STRUCT_RETURN): Define to 1.
(SUBTARGET_OVERRIDE_OPTIONS): Remove warning about -mbnu2210.
(SUBTARGET_OVERRIDE_OPTIONS): Ignore -fPIC and generate message.
(SUBTARGET_OVERRIDE_OPTIONS): Default to DWARF2 debugging info.
(IX86_MAYBE_NO_LIBGCC_TFMODE): Remove.
(i386_djgpp_asm_named_section): Add propotype of new procedure
* config/i386/xm-djgpp.h (NATIVE_SYSTEM_HEADER_DIR): Define.
(MD_EXEC_PREFIX): Define (moved from config/i386/djgpp.h).
(STANDARD_STARTFILE_PREFIX_1): Define (moved from MD_STARTFILE_PREFIX in config/i386/djgpp.h).
(STANDARD_STARTFILE_PREFIX_2): Define identical to STANDARD_STARTFILE_PREFIX_1.
(LOCAL_INCLUDE_DIR): Define (moved from config/i386/djgpp.h).
(GCC_DRIVER_HOST_INITIALIZATION): Fix reporting fatal installation errors.
(MAX_OFILE_ALIGNMENT): Define to 128.
(HAVE_FTW_H): Undefine as DJGPP do not have nftw, but have ftw.h.
* config/i386/djgpp.c: New file. Add implementation of i386_djgpp_asm_named_section.
Bill Schmidt [Tue, 12 Jan 2016 04:49:55 +0000 (04:49 +0000)]
rs6000.c (v2df_reduction_p): New function.
[gcc]
2016-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (v2df_reduction_p): New function.
(rtx_is_swappable_p): Reductions are swappable.
(insn_is_swappable_p): V2DF reductions are swappable.
[gcc/testsuite]
2016-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/swaps-p8-23.c: New test.
* gcc.target/powerpc/swaps-p8-24.c: Likewise.
Jakub Jelinek [Mon, 11 Jan 2016 19:06:34 +0000 (20:06 +0100)]
re PR target/69071 (ICE: in decompose, at rtl.h:2107 with -g)
PR target/69071
* lra-eliminations.c (move_plus_up): Only move plus up
if subreg of the constant can be simplified into constant
and use the simplified subreg of the constant instead of
the original constant.
David Malcolm [Mon, 11 Jan 2016 18:03:15 +0000 (18:03 +0000)]
PR c++/68795: fix uninitialized close_paren_loc in cp_parser_postfix_expression
gcc/cp/ChangeLog:
PR c++/68795
* parser.c (cp_parser_postfix_expression): Initialize
close_paren_loc to UNKNOWN_LOCATION; only use it if
it has been written to by
cp_parser_parenthesized_expression_list.
(cp_parser_parenthesized_expression_list): Document the behavior
with respect to the CLOSE_PAREN_LOC param.
Jakub Jelinek [Mon, 11 Jan 2016 17:59:22 +0000 (18:59 +0100)]
re PR c++/69211 (g++ ICE on x86_64-linux-gnu (verify_gimple failed))
PR c++/69211
* cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
folded operands have side-effects, but folding changed any of them,
build a new tree with the folded operands instead of returning the
unfolded tree.
Jakub Jelinek [Mon, 11 Jan 2016 17:57:43 +0000 (18:57 +0100)]
fold-const.c (fold_convertible_p): Don't return true for conversion of VECTOR_TYPE to same sized integral type.
* fold-const.c (fold_convertible_p): Don't return true
for conversion of VECTOR_TYPE to same sized integral type.
(fold_convert_loc): Fix up formatting. Fold conversion of
VECTOR_TYPE to same sized integral type using VIEW_CONVERT_EXPR
instead of NOP_EXPR.
Jakub Jelinek [Mon, 11 Jan 2016 17:56:39 +0000 (18:56 +0100)]
re PR tree-optimization/69214 (ICE (segfault) at -Os on x86_64-linux-gnu in "fail_abnormal_edge_coalesce")
PR tree-optimization/69214
* tree-vrp.c (simplify_cond_using_ranges): Don't propagate
innerop into a comparison if SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
Formatting fix.
Ian Lance Taylor [Mon, 11 Jan 2016 17:55:39 +0000 (17:55 +0000)]
re PR go/68980 (ps -o cmd in gotest isn't portable)
PR 68980
libgo/testsuite: portable ps usage in gotest
gotest is using "ps" to list descendant sleep
processes in its timeout handling, grepping
the command name.
We are currently using the "cmd" ps output
formatter, which is non-portable. We should
use "comm" which is part of the POSIX
standard, and outputs only the command name
and not the arguments.
Jakub Jelinek [Mon, 11 Jan 2016 17:55:38 +0000 (18:55 +0100)]
re PR tree-optimization/69207 (gcc.target/aarch64/vldN_1.c ICEs at -O3)
PR tree-optimization/69207
* tree-vect-slp.c (vect_get_constant_vectors): For
VECTOR_BOOLEAN_TYPE_P, assert op has integral type instead of
fold_convertible_p to vector_type's element type, and always
use VCE for non-VECTOR_BOOLEAN_TYPE_P.
Uros Bizjak [Mon, 11 Jan 2016 15:48:40 +0000 (16:48 +0100)]
re PR middle-end/68999 (FAIL: gfortran.fortran-torture/execute/save_1.f90 execution)
PR middle-end/68999
* alias.c (base_alias_check): Move check for addresses with
alignment ANDs before the call for compare_base_decls.
(memrefs_conflict_p): Return -1 for different decls
that went through alignment adjustments.
Kyrylo Tkachov [Mon, 11 Jan 2016 14:44:22 +0000 (14:44 +0000)]
[AArch64] PR rtl-optimization/68796: Add patterns for QImode and HImode comparison with zero
PR rtl-optimization/68796
* config/aarch64/aarch64.md (*and<mode>_compare0): New pattern.
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Handle HImode
and QImode comparisons against zero with CC_NZmode.
* config/aarch64/iterators.md (short_mask): New mode_attr.
* gcc.target/aarch64/tst_5.c: New test.
* gcc.target/aarch64/tst_6.c: Likewise.
When link_ptx runs, a CUDA device is already bound to current thread, so the
driver library knows the target architecture. There isn't any benefit from
forcing a specific target here; on the contrary, hardcoding sm_30 breaks
offloading on later (Maxwell, sm_5x) devices.
* plugin/plugin-nvptx.c (link_ptx): Do not set CU_JIT_TARGET.
Kyrylo Tkachov [Mon, 11 Jan 2016 12:13:50 +0000 (12:13 +0000)]
[RTL-ifcvt] PR rtl-optimization/68841: Make sure one basic block doesn't clobber CC reg usage of the other
PR rtl-optimization/68841
* ifcvt.c (struct noce_if_info): Add orig_x field.
(bbs_ok_for_cmove_arith): Add to_rename parameter.
Don't record conflicts on to_rename if it's present.
Allow memory destinations in sets.
(noce_try_cmove_arith): Call bbs_ok_for_cmove_arith even on simple
blocks, passing orig_x to the checks.
(noce_process_if_block): Set if_info->orig_x appropriately.
* gcc.dg/pr68841.c: New test.
* gcc.c-torture/execute/pr68841.c: New test.
Yuri Rumyantsev [Mon, 11 Jan 2016 12:07:31 +0000 (12:07 +0000)]
re PR rtl-optimization/68920 (Undesirable if-conversion for a rarely taken branch)
gcc/
2016-01-11 Yuri Rumyantsev <ysrumyan@gmail.com>
PR rtl-optimization/68920
* config/i386/i386.c (ix86_option_override_internal): Restrict number
of conditional moves for RTL if-conversion to 1 for
TARGET_ONE_IF_CONV_INSN.
* config/i386/i386.h (TARGET_ONE_IF_CONV_INSN): New macros.
* config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): New macros.
* params.def (PARAM_MAX_RTL_IF_CONVERSION_INSNS) : Introduce new
parameter to restirct number of conditional moves for
RTL if-conversion.
* doc/invoke.texi (max-rtl-if-conversion-insns): Document it.
* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Limit number of
conditionl moves.
gcc/testsuite/
2016-01-11 Yuri Rumyantsev <ysrumyan@gmail.com>
PR rtl-optimization/68920
* gcc.dg/ifcvt-4.c: Add "--param max-rtl-if-conversion-insns=3" option
for ix86 targets.
* gcc.dg/ifcvt-5.c: New test.
Alexandre Oliva [Mon, 11 Jan 2016 10:40:33 +0000 (10:40 +0000)]
[PR69123] fix handling of MEMs in VTA to avoid dataflow oscillation
The problem arises because we used to drop overwritten MEMs from loc
lists of VALUEs, but not of other onepart variables, and it just so
happens that, by doing so, block 6 in the testcase has no D#5 in its
output in the first pass, because the MEM holding its (previous) value
was correctly dropped from value 88:88, but gains it in the second
pass because D#5 has the MEM location incoming directly in its loc
list, rather than indirectly in a VALUE.
This incorrect binding enables other blocks to believe they have a
tentative binding for D#5 in some cycles, but others, still operating
on the early conclusion, believe there isn't, and they oscillate from
that.
Since we check for escaping MEMs in clobbers, we won't lose anything
relevant by dropping call-clobbered or overwritten MEMs in all onepart
variables, and this ensures the loc intersection operation in onepart
vars won't let a MEM through that wasn't present in earlier
iterations.
for gcc/ChangeLog
PR bootstrap/69123
* var-tracking.c (drop_overlapping_mem_locs): Operate on all
onepart vars. Fix typo in comment. Fix reversed condition in
unshare test.
(dataflow_set_remove_mem_locs): Operate on all onepart vars.
Alexandre Oliva [Mon, 11 Jan 2016 10:40:12 +0000 (10:40 +0000)]
[PR69123] make dataflow_set_different details more verbose
for gcc/ChangeLog
PR bootstrap/69123
* var-tracking.c (dump_onepart_variable_differences): New.
(dataflow_set_different): If a detailed dump is requested,
delay early returns and dump differences between onepart
variables present before and after, and added variables.
Ilya Enkovich [Mon, 11 Jan 2016 10:27:17 +0000 (10:27 +0000)]
re PR target/69010 (Boolean vector constant with a scalar mode is expanded incorrectly)
gcc/
PR target/69010
* expr.c (expand_expr_real_1): For boolean vector constants
with a scalar mode use const_scalar_mask_from_tree.
(const_scalar_mask_from_tree): New.
* optabs.c (expand_vec_cond_mask_expr): Use mask mode
assigned to a mask type to handle constants.
gcc/testsuite/
PR target/69010
* gcc.target/i386/pr69010.c: New test.
Thomas Koenig [Sun, 10 Jan 2016 13:18:54 +0000 (13:18 +0000)]
re PR fortran/69154 (ICE in gfc_trans_where_2, at fortran/trans-stmt.c:5005 on *-linux)
2016-01-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/69154
* frontend-passes.c (in_where): New variable.
(inline_matmul_assign): Don't try this if we are within
a WHERE statement.
(gfc_code_walker): Keep track of in_where.
2016-01-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/69154
* gfortran.dg/inline_matmul_12.f90: New test.
Tom de Vries [Sun, 10 Jan 2016 12:44:57 +0000 (12:44 +0000)]
Don't parallelize loops containing phis with addr_exprs
2016-01-10 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/69062
* tree-parloops.c (loop_has_phi_with_address_arg): New function.
(parallelize_loops): Don't paralelize loop that has phi with address
arg.
Jakub Jelinek [Sat, 9 Jan 2016 07:37:04 +0000 (08:37 +0100)]
re PR middle-end/50865 (Invalid code generation for INT64_MIN % 1 on x86_64)
PR middle-end/50865
PR tree-optimization/69097
* fold-const.h (expr_not_equal_to): New prototype.
* fold-const.c: Include stringpool.h and tree-ssanames.h.
(expr_not_equal_to): New function.
* match.pd (X % -Y is the same as X % Y): Don't optimize
unless X is known not to be equal to minimum or Y is known
not to be equal to -1.
* tree-vrp.c (simplify_div_or_mod_using_ranges): Add GSI argument.
fold TRUNC_MOD_EXPR if the second argument is not a power of two.
(simplify_stmt_using_ranges): Adjust caller.
(vrp_finalize): Call set_value_range on SSA_NAMEs before calling
substitute_and_fold.
* gcc.c-torture/execute/pr50865.c: New test.
* gcc.c-torture/execute/pr69097-1.c: New test.
* gcc.c-torture/execute/pr69097-2.c: New test.
* gcc.dg/pr69097-1.c: New test.
* gcc.dg/pr69097-2.c: New test.
Jakub Jelinek [Fri, 8 Jan 2016 20:50:24 +0000 (21:50 +0100)]
re PR tree-optimization/69167 (internal compiler error: SSA corruption)
PR tree-optimization/69167
* gimple-fold.c (replace_stmt_with_simplification): Also punt if
new SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs appear in operands of
ops[0] comparison.
* gimple-match-head.c (maybe_push_res_to_seq): Likewise.
Alan Lawrence [Fri, 8 Jan 2016 18:02:35 +0000 (18:02 +0000)]
[PATCH] Fix PR68707
gcc/:
* tree-vect-slp.c (vect_analyze_slp_instance): Cancel permuted SLP
instances that can be handled via vect_load_lanes.
gcc/testsuite/:
* lib/target-supports.exp (check_effective_target_vect_load_lanes): New.
* gcc.dg/vect/slp-perm-1.c: Look for vect_load_lanes instead of SLP
on platforms supporting it.
* gcc.dg/vect/slp-perm-2.c: Likewise.
* gcc.dg/vect/slp-perm-3.c: Likewise.
* gcc.dg/vect/slp-perm-5.c: Likewise.
* gcc.dg/vect/slp-perm-7.c: Likewise.
* gcc.dg/vect/slp-perm-8.c: Likewise.
* gcc.dg/vect/slp-perm-6.c: Look for vect_load_lanes in addition to SLP
on platforms supporting it.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r232174
Uros Bizjak [Fri, 8 Jan 2016 16:13:18 +0000 (17:13 +0100)]
symtab.c (symtab_node::equal_address_to): Return -1 instead of 2 if we can't determine address equivalence.
* symtab.c (symtab_node::equal_address_to): Return -1 instead of 2
if we can't determine address equivalence.
* alias.c (compare_base_decl): Update for changed return value of
symtab_node::equal_address_to.
Jakub Jelinek [Fri, 8 Jan 2016 10:14:29 +0000 (11:14 +0100)]
re PR tree-optimization/69162 (ICE in create_tmp_var, at gimple-expr.c:468)
PR tree-optimization/69162
* gimplify.c (gimplify_va_arg_expr): Encode original type of
valist argument in another argument.
(gimplify_modify_expr): Adjust for the above change. Cleanup.
* tree-stdarg.c (expand_ifn_va_arg_1): Use new 3rd argument
to determine the va_list type, build a MEM_REF instead of
build_fold_indirect_ref.
re PR tree-optimization/67781 (wrong code generated on big-endian with -O1 -fexpensive-optimizations)
2016-01-08 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
PR tree-optimization/67781
* tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg
and cmpnop in two steps: first the ones not accessed in original
gimple expression in a endian independent way and then the ones not
accessed in the final result in an endian-specific way.
gcc/testsuite/
PR tree-optimization/67781
* gcc.c-torture/execute/pr67781.c: New file.
Jakub Jelinek [Fri, 8 Jan 2016 08:37:17 +0000 (09:37 +0100)]
re PR tree-optimization/69083 (ICE at -O3 in 64-bit mode on x86_64-linux-gnu (verify_gimple failed))
PR tree-optimization/69083
* tree-vect-slp.c (vect_get_constant_vectors): For
VECTOR_BOOLEAN_TYPE_P assert op is fold_convertible_p to vector_type's
element type. If op is fold_convertible_p to vector_type's element
type, use NOP_EXPR instead of VCE.
Sujoy Saraswati [Fri, 8 Jan 2016 08:35:02 +0000 (08:35 +0000)]
Restrict to linux and gnu targets as not all math.h implementations support the issignaling macro.
Restrict to linux and gnu targets as not all math.h implementations support the
issignaling macro. Use -fexcess-precision=standard for compiler options. Use fabs()
only when __FLT_EVAL_METHOD__ == 0.
gcc/testsuite/
* gcc.dg/pr61441.c: Restrict to linux and gnu targets.
Use -fexcess-precision=standard for compiler options.
Use fabs() only when __FLT_EVAL_METHOD__ == 0.
Jakub Jelinek [Fri, 8 Jan 2016 06:45:18 +0000 (07:45 +0100)]
re PR fortran/69128 (OpenMP workshare problem with SUM())
PR fortran/69128
* trans.h (OMPWS_SCALARIZER_BODY): Define.
(OMPWS_NOWAIT): Renumber.
* trans-stmt.c (gfc_trans_where_3): Only set OMPWS_SCALARIZER_WS
if OMPWS_SCALARIZER_BODY is not set already, and set also
OMPWS_SCALARIZER_BODY until the final loop creation.
* trans-expr.c (gfc_trans_assignment_1): Likewise.
* trans-openmp.c (gfc_trans_omp_workshare): Also clear
OMPWS_SCALARIZER_BODY.
* trans-array.c (gfc_trans_scalarized_loop_end): Don't create
OMP_FOR if OMPWS_SCALARIZER_BODY is set.
shrink-wrap: Once more PRs 67778, 68634, and now 68909
If a candidate PRE cannot get the prologue because a block BB is
reachable from it, but PRE does not dominate BB, we try again with the
dominators of PRE. That "try again" needs to again consider BB though,
we aren't done with it.
PR rtl-optimization/67778
PR rtl-optimization/68634
PR rtl-optimization/68909
* shrink-wrap.c (try_shrink_wrapping): Add comment. Don't pop
block from the stack until done with it. Remove a superfluous
bitmap set. Remove a superfluous bitmap test.
Andreas Tobler [Thu, 7 Jan 2016 20:35:53 +0000 (21:35 +0100)]
freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to SUBTARGET_OVERRIDE_INTERNAL_OPTIONS.
2016-01-07 Andreas Tobler <andreast@gcc.gnu.org>
* config/arm/freebsd.h: Rename SUBTARGET_OVERRIDE_OPTIONS to
SUBTARGET_OVERRIDE_INTERNAL_OPTIONS. Adjust to check
unaligned_access on the gcc_options set.
* config/arm/arm.c (arm_option_override_internal): Use
SUBTARGET_OVERRIDE_INTERNAL_OPTIONS.
Uros Bizjak [Thu, 7 Jan 2016 19:06:37 +0000 (20:06 +0100)]
re PR target/69140 (stack alignment + O1 breaks with Microsoft ABI)
2016-01-07 Uros Bizjak <ubizjak@gmail.com>
PR target/69140
* config/i386/i386.c (ix86_frame_pointer_required): Enable
frame pointer for TARGET_64BIT_MS_ABI when stack is misaligned.
2016-01-07 Uros Bizjak <ubizjak@gmail.com>
Revert
2016-01-06 Uros Bizjak <ubizjak@gmail.com>
PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
Jakub Jelinek [Thu, 7 Jan 2016 08:47:44 +0000 (09:47 +0100)]
re PR tree-optimization/69141 (-O2 -fdump-tree-fre ICEs)
PR tree-optimization/69141
* tree-ssa-pre.c: Include langhooks.h.
(eliminate_dom_walker::before_dom_children): Use
lang_hooks.decl_printable_name instead of
cgraph_node::get ()->name ().
Uros Bizjak [Wed, 6 Jan 2016 20:19:04 +0000 (21:19 +0100)]
re PR target/69140 (stack alignment + O1 breaks with Microsoft ABI)
PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
testsuite/ChangeLog:
PR target/69140
* gcc.target/i386/pr69140.c: New test