blob: 32f3efc988bfff818ede40e9fc293a9ae0c7a69e [file] [log] [blame]
2015-12-30 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_assemble_undefined_decl): Check
it's not a constant pool object.
2015-12-29 Michael Meissner <>
* config/rs6000/rs6000.c (init_float128_ieee): Remove IEEE 128-bit
comparison functions in cmp_optab and ucmp_optab.
(rs6000_generate_compare): Rewrite IEEE 128-bit floating point
software emulation comparisons to only use __eqkf2, __gekf2,
__lekf2, and __unordkf2 functions.
(rs6000_invalid_binary_op): Add support for -mfloat128-convert.
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
__FLOAT128_HARDWARE__ if hardware IEEE 128-bit support is
* config/rs6000/rs6000.opt (-mfloat128-convert): Add debug switch
to allow IBM extended double and IEEE 128-bit floating point to be
converted with default conversions.
* config/rs6000/ (extendkftf2): Add converters between
KFmode and TFmode if -mabi=ieeelongdouble.
(trunctfkf2): Likewise.
(ieee128_mfvsrd): Split 64-bit integer conversions into 32-bit and
64-bit insns.
(ieee128_mfvsrd_64bit): Likewise.
(ieee128_mfvsrd_32bit): Likewise.
(ieee128_mtvsrd): Likewise.
(ieee128_mtvsrd_64bit): Likewise.
(ieee128_mtvsrd_32bit): Likewise.
* doc/extend.texi (Floating Types): Document that complex
__float128 does not work currently.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document that
-mfloat128 is only supported on PowerPC 64-bit Linux systems.
2015-12-28 Bill Schmidt <>
* config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Verify that
this is never called when lxvx/stxvx are available.
(pass_analyze_swaps::gate): Don't perform swap optimization when
lxvx/stxvx are available.
* config/rs6000/ (mov<mode>): Don't call
rs6000_emit_le_vsx_move when lxvx/stxvx are available.
* config/rs6000/ (*p9_vecload_<mode>): New define_insn.
(*p9_vecstore_<mode>): Likewise.
(*vsx_le_perm_load_<mode>:VSX_LE): Disable when lxvx/stxvx are
(*vsx_le_perm_load_<mode>:VSX_W): Likewise.
(*vsx_le_perm_load_v8hi): Likewise.
(*vsx_le_perm_load_v16qi): Likewise.
(*vsx_le_perm_store_<mode>:VSX_LE): Likewise.
([related define_splits]): Likewise.
(*vsx_le_perm_store_<mode>:VSX_W): Likewise.
([related define_splits]): Likewise.
(*vsx_le_perm_store_v8hi): Likewise.
([related define_splits]): Likewise.
(*vsx_le_perm_store_v16qi): Likewise.
([related define_splits]): Likewise.
(*vsx_lxvd2x2_le_<mode>): Likewise.
(*vsx_lxvd2x4_le_<mode>): Likewise.
(*vsx_lxvd2x8_le_V8HI): Likewise.
(*vsx_lvxd2x16_le_V16QI): Likewise.
(*vsx_stxvd2x2_le_<mode>): Likewise.
(*vsx_stxvd2x4_le_<mode>): Likewise.
(*vsx_stxvd2x8_le_V8HI): Likewise.
(*vsx_stxvdx16_le_V16QI): Likewise.
([define_peepholes for vector load fusion]): Likewise.
2015-12-28 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_output_call_insn): Expect hard regs.
* config/nvptx/ (nvptx_reg_or_mem_operand): Rename to ...
(nvptx_nonimmediate_operand): ... here. Update all uses.
(call_insn_operand): Use REG_P.
(call_operation): Allow hard regs.
2015-12-25 Jan Hubicka <>
* ipa-visibility.c (function_and_variable_visibility): Do not
dissolve comdat groups when in LTO mode.
2015-12-25 Andreas Tobler <>
* config/rs6000/freebsd64.h: Delete FREEBSD_DYNAMIC_LINKER32/64
defines. Use FBSD_DYNAMIC_LINKER instead.
Rename and simplify LINK_OS_FREEBSD_SPEC_DEF32/64 to
2015-12-24 Aditya Kumar <>
* graphite-sese-to-poly.c (build_loop_iteration_domains): Use ref instead of value.
* sese.c (invariant_in_sese_p_rec): Use const ref instead of value.
(scalar_evolution_in_region): Same
* sese.h (bb_in_region): Same
(bb_in_sese_p): Same.
(stmt_in_sese_p): Same.
(defined_in_sese_p): Same.
(loop_in_sese_p): Same.
2015-12-24 Aditya Kumar <>
* graphite-scop-detection.c
(scop_detection::get_nearest_dom_with_single_entry): Check l == l2.
(scop_detection::get_nearest_pdom_with_single_exit): Same.
(scop_detection::merge_sese): Whitespace.
(scop_detection::add_scop): Comment.
(build_scops): Whitespace.
2015-12-24 Kirill Yukhin <>
* common/config/i386/i386-common.c (OPTION_MASK_ISA_PKU_SET): New.
(ix86_handle_option): Handle OPT_mpku.
* config.gcc: Add pkuintrin.h to i[34567]86-*-* and x86_64-*-*
* config/i386/cpuid.h (host_detect_local_cpu): Detect PKU feature.
* config/i386/i386-c.c (ix86_target_macros_internal): Handle PKU ISA
* config/i386/i386.c (ix86_target_string): Add "-mpku" to
(ix86_option_override_internal): Define PTA_PKU, mention new key
in skylake-avx512. Handle new ISA bits.
(ix86_valid_target_attribute_inner_p): Add "pku".
(enum ix86_builtins): Add IX86_BUILTIN_RDPKRU and IX86_BUILTIN_WRPKRU.
(builtin_description bdesc_special_args[]): Add new built-ins.
* config/i386/i386.h (define TARGET_PKU): New.
(define TARGET_PKU_P): Ditto.
* config/i386/ (define_c_enum "unspecv"): Add UNSPEC_PKU.
(define_expand "rdpkru"): New.
(define_insn "*rdpkru"): Ditto.
(define_expand "wrpkru"): Ditto.
(define_insn "*wrpkru"): Ditto.
* config/i386/i386.opt (mpku): Ditto.
* config/i386/pkuintrin.h: New file.
* config/i386/x86intrin.h: Include pkuintrin.h
* doc/extend.texi: Describe new built-ins.
* doc/invoke.texi: Describe new switches.
2015-12-23 Richard Henderson <>
PR ipa/67811
* tree-cfg.c (make_edges_bb): Add abort edge for outer transactions.
2015-12-23 Nathan Sidwell <>
* cgraph.h (decl_in_symtab_p): Revert check DECL_IN_CONSTANT_POOL.
2015-12-23 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h
(nvptx_maybe_convert_symbolic_operand): Delete prototype.
* config/nvptx/nvptx.c (nvptx_maybe_convert_symbolic_operand): Delete.
(nvptx_output_mov_insn): Record fnsym here.
(nvptx_wpropagate): Don't create UNSPEC_TO_GENERIC unspec.
* config/nvptx/ (UNSPEC_TO_GENERIC): Delete.
(symbolic_operand): Delete predicate.
(nvptx_nonimmediate_operand): Delete predicate.
(mov<mode>): Hard regs are perfectly ok here.
(convaddr_<mode>): Delete.
2015-12-23 Nathan Sidwell <>
* alias.c (compare_base_decls): Simplify in-symtab check.
* cgraph.h (decl_in_symtab_p): Check DECL_IN_CONSTANT_POOL.
2015-12-23 Dominik Vogt <>
* config/s390/ ("larl_operand"): Remove now superfluous
const_int and const_double.
* genrecog.c (safe_predicate_mode): Return false for VOIDmode
LABEL_REFs even if the predicate does not handle const_int,
const_double or const_wide_int.
* genpreds.c (add_mode_tests): Treat LABEL_REF like CONST_INT.
2015-12-23 Thomas Schwinge <>
* tree-core.h (enum omp_clause_code): Merge OMP_CLAUSE_USE_DEVICE
into OMP_CLAUSE_USE_DEVICE_PTR. Adjust all users.
2015-12-23 David Sherwood <>
* config/arm/ (VMAXMINFNM): New int iterator.
(fmaxmin): New int attribute.
(fmaxmin_op): Likewise.
* config/arm/ (UNSPEC_VMAXNM): New unspec.
(UNSPEC_VMINNM): Likewise.
* config/arm/ (fmaxmin): New pattern.
* config/arm/ (fmaxmin): Likewise.
2015-12-23 H.J. Lu <>
PR target/66232
* config/i386/ (Bs): Allow GOT slot for x32 with
64-bit Pmode.
(Bw): Likewise.
(Bz): Likewise.
* config/i386/ (call_insn_operand): Likewise.
(sibcall_insn_operand): Likewise.
2015-12-22 David Malcolm <>
PR c/68473
* diagnostic-show-locus.c (layout::layout): Make loc_range const.
Sanitize the layout_range against ranges that finish before they
2015-12-22 Jeff Law <>
* gimple-ssa-split-paths.c (split_paths): Avoid unnecessary block
2015-12-22 Jakub Jelinek <>
PR c++/67376
* fold-const.c (size_low_cst): Removed.
(fold_comparison): For POINTER_PLUS_EXPR where base is ADDR_EXPR
call get_inner_reference and handle INDIRECT_REF base of it. Use
offset_int for computation of the bitpos.
(fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Formatting
fixes for X +- Y CMP X and C - X CMP X folding. Add X CMP X +- Y
and X CMP C - X folding.
2015-12-22 Richard Henderson <>
PR ipa/67811
* gimple.h (struct gtransaction): Add label_norm, label_uninst;
replace label with label_over.
(gimple_build_transaction): Remove label parameter.
(gimple_transaction_label_norm): New.
(gimple_transaction_label_uninst): New.
(gimple_transaction_label_over): Rename from gimple_transaction_label.
(gimple_transaction_label_norm_ptr): New.
(gimple_transaction_label_uninst_ptr): New.
(gimple_transaction_label_over_ptr): Rename from
(gimple_transaction_set_label_norm): New.
(gimple_transaction_set_label_uninst): New.
(gimple_transaction_set_label_over): Rename from
* gimple-pretty-print.c (dump_gimple_transaction): Update.
* gimple-streamer-in.c (input_gimple_stmt) [GIMPLE_TRANSACTION]: Same.
* gimple-streamer-out.c (output_gimple_stmt) [GIMPLE_TRANSACTION]: Same.
* gimple-walk.c (walk_gimple_op) [GIMPLE_TRANSACTION]: Same.
* tree-cfg.c (make_edges_bb) [GIMPLE_TRANSACTION]: Same.
(cleanup_dead_labels) [GIMPLE_TRANSACTION]: Same.
(verify_gimple_transaction): Same.
(gimple_redirect_edge_and_branch) [GIMPLE_TRANSACTION]: Same.
* tree-inline.c (remap_gimple_stmt) [GIMPLE_TRANSACTION]: Same.
* gimple.c (gimple_build_transaction): Remove label parameter;
initialize all three label memebers.
* gimplify.c (gimplify_transaction): Update call
to gimple_build_transaction.
* trans-mem.c (make_tm_uninst): New.
(lower_transaction): Create uninstrumented code path here...
(ipa_tm_scan_calls_transaction): ... not here.
(ipa_uninstrument_transaction): Remove.
* tree-eh.c (honor_protect_cleanup_actions): Do not wrap eh_else
in a must-not-throw; set ehp_region for it too.
2015-12-22 Peter Bergner <>
PR target/68872
* config/rs6000/rs6000.h (ASM_CPU_SPEC): For -mcpu=powerpc64le,
pass %(asm_cpu_power8).
2015-12-22 H.J. Lu <>
PR target/68937
* config/i386/i386.c (ix86_function_ok_for_sibcall): Count
call to global function via GOT slot as indirect call.
* config/i386/ (*sibcall_GOT_32): New pattern.
(*sibcall_value_GOT_32): Likewise.
* config/i386/ (sibcall_memory_operand): Rewrite.
Allow 32-bit GOT slot only with pseudo register as GOT base.
(GOT32_symbol_operand): New predicate.
2015-12-22 Sujoy Saraswati <>
* fold-const.c (const_binop): Convert sNaN to qNaN when
flag_signaling_nans is off.
(const_unop): Avoid the operation, other than NEGATE and
ABS, if flag_signaling_nans is on and the operand is an sNaN.
(fold_convert_const_real_from_real): Avoid the operation if
flag_signaling_nans is on and the operand is an sNaN.
(integer_valued_real_unary_p): Update comment stating it
returns false for sNaN values.
(integer_valued_real_binary_p, integer_valued_real_call_p): Same.
(integer_valued_real_single_p): Same.
(integer_valued_real_invalid_p, integer_valued_real_p): Same.
* fold-const-call.c (fold_const_pow): Avoid the operation
if flag_signaling_nans is on and the operand is an sNaN.
(fold_const_builtin_load_exponent) Same.
(fold_const_call_sss): Same for CASE_CFN_POWI.
* gimple-fold.c (gimple_assign_integer_valued_real_p): Same.
(gimple_call_integer_valued_real_p): Same.
(gimple_phi_integer_valued_real_p): Same.
(gimple_stmt_integer_valued_real_p): Same.
* simplify-rtx.c (simplify_const_unary_operation): Avoid the
operation if flag_signaling_nans is on and the operand is an sNaN.
(simplify_const_binary_operation): Same.
* tree-ssa-math-opts.c (gimple_expand_builtin_pow): Avoid the
operation if flag_signaling_nans is on and the operand is an sNaN.
2015-12-22 Kyrylo Tkachov <>
* combine.c (simplify_comparison): Convert preprocessor check of
WORD_REGISTER_OPERATIONS into runtime check.
2015-12-22 Eric Botcazou <>
PR debug/60756
* var-tracking.c (tracked_record_parameter_p): New predicate.
(track_expr_p): Invoke it.
(add_stores): Likewise.
2015-12-21 Jeff Law <>
* dbgcnt.def (dom_unreachable_edges): New debug counter.
* tree-ssa-dom.c: Include dbgcnt.h
(dom_opt_dom_walker::before_dom_children): Handle the new counter.
2015-12-21 Andrew Pinski <>
* config/aarch64/aarch64-option-extensions.def (LSE): Change
FEAT_STRING to "atomics".
2015-12-21 Pierre-Marie de Rodat <>
* dwarf2out.c (add_data_member_location_attribute): Do not
disable dynamic data member offsets descriptions for TREE_BINFO
2015-12-21 Eric Botcazou <>
PR tree-optimization/65337
* tree-ssa-pre.c (eliminate): Also clean up abnormal edges if need be.
2015-12-21 Dominik Vogt <>
* config/s390/s390.c (s390_emit_prologue): Fix base reg condition.
2015-12-21 Claudiu Zissulescu <>
* config/arc/builtins.def: New file.
* config/arc/arc.c (arc_init_simd_builtins): Remove.
(arc_builtins): Likewise.
(arc_builtin_id): New enum.
(arc_builtin_description): New structure.
(arc_bdesc): New variable.
(arc_tolower): New function.
(def_mbuiltin): Remove.
(arc_builtin_decl): New function.
(arc_expand_builtin_aligned ): Likewise.
(apply_GEN_FCN): Likewise.
(arc_init_builtins): Refurbish.
(arc_expand_builtin): Likewise.
(simd_insn_args_type): Remove.
(builtin_description): Likewise
(arc_simd_builtin_desc_list): Likewise.
(arc_expand_simd_builtin): Likewise.
(arc_process_double_reg_moves): Use the new builtin name format.
* config/arc/ (unspec): New builtin function UNSPEC codes.
(vunspec): New builtin function VUNSPEC codes.
(mul64, mulu64): Remove patterns.
(store_direct, *movdf_insn_nolrsr, casesi, casesi_load)
(casesi_compact_jump, nopv, swap, divaw, flag, brk, rtie, sync)
(swi, sleep, core_read, core_write, lr, sr, trap_s, unimp_s)
(doloop_begin_i): Use new builtin function code naming.
(kflag, clri, ffs, ffs_f, ffssi2, fls, seti): New patterns.
* config/arc/builtins.def: New file.
* config/arc/ Use new builtin function code naming.
* config/arc/ New SIMD builtin function UNSPEC
codes. Use them in the SIMD patterns.
2015-12-21 Sujoy Saraswati <>
PR tree-optimization/61441
* real.c (do_add): Make resulting NaN value to be qNaN.
(do_multiply, do_divide, do_fix_trunc): Same.
(real_arithmetic, real_ldexp, real_convert): Same.
(real_isinteger): Updated comment stating it returns false for sNaN.
2015-12-20 Jeff Law <>
PR tree-optimization/64910
* config/i386/ (testqi_ext_3): Allow HImode.
2015-12-20 Andrew Pinsi <>
* config/aarch64/
(aarch64_atomic_<atomic_optab>_fetch<mode>_lse): Add early clobber
to the scratch register.
2015-12-20 Sujoy Saraswati <>
PR tree-optimization/61441
* match.pd (f(x) -> x): Removed flag_errno_math check for RINT.
2015-12-20 Sujoy Saraswati <>
PR tree-optimization/61441
* fold-const.c (const_binop): Use REAL_VALUE_ISSIGNALING_NAN instead
of REAL_VALUE_ISNAN to avoid the operation for sNaN operands.
* simplify-rtx.c (simplify_const_binary_operation): Same.
2015-12-19 Jan Hubicka <>
PR tree-optimization/65337
* tree-ssa-dce.c (bb_postorder): New static var.
(mark_stmt_necessary): Add guard for setting bb_contains_live_stmts.
(forward_edge_to_pdom): Remove.
(remove_dead_stmt): Instead of redirecting edges only keep an edge
on a path to nearest live BB.
(eliminate_unnecessary_stmts): Free bb_postorder.
* cfganal.c (dfs_find_deadend): Add START_POINTES.
* cfganal.h (inverted_post_order_compute): Update prototype.
2015-12-19 Eric Botcazou <>
PR rtl-optimization/68910
* emit-rtl.c (set_unique_reg_note) <REG_EQUAL>: Add bypass for USEs.
* config/sparc/ (anddi3): Enable only in 64-bit mode.
(iordi3): Likewise.
(xordi3): Likewise.
(one_cmpldi2): Likewise.
(*anddi3_sp32): Delete.
(*and_not_di_sp32): Likewise.
(*iordi3_sp32): Likewise.
(*or_not_di_sp32): Likewise.
(*xordi3_sp32): Likewise.
(*xor_not_di_sp32): Likewise.
(32-bit DImode logical operations splitter): Likewise.
(*one_cmpldi2_sp32): Likewise.
2015-12-19 Andrew Burgess <>
* config/arc/ (*storeqi_update): Use 'any_mem_operand' and
fix RTL pattern to include the plus.
(*storehi_update): Likewise.
(*storesi_update): Likewise.
(*storesf_update): Likewise.
* config/arc/ (store_update_operand): Delete.
2015-12-19 Andrew Burgess <>
* config/arc/ (*loadqi_update): Use new 'any_mem_operand'
and fix RTL pattern to include the plus.
(*load_zeroextendqisi_update): Likewise.
(*load_signextendqisi_update): Likewise.
(*loadhi_update): Likewise.
(*load_zeroextendhisi_update): Likewise.
(*load_signextendhisi_update): Likewise.
(*loadsi_update): Likewise.
(*loadsf_update): Likewise.
* config/arc/ (load_update_operand): Delete.
(any_mem_operand): New predicate.
2015-12-19 Sujoy Saraswati <>
PR tree-optimization/61441
* real.c (real_issignaling_nan): New.
* real.h (real_issignaling_nan, REAL_VALUE_ISSIGNALING_NAN): New.
2015-13-18 John David Anglin <>
PR target/68729
* config/pa/pa.c (pa_emit_move_sequence): Reorganize handling of
floating-point reloads. Only reload operands that are not valid
floating-point memory operands.
2015-12-18 Jakub Jelinek <>
PR debug/68860
* ipa-split.c (split_function): Only perform caller side
modifications for decl_debug_args here.
* cgraph.c: Include gimplify.h.
(cgraph_edge::redirect_call_stmt_to_callee): Add caller side
debug stmts for decl_debug_args. Spelling fix in a comment.
* tree-inline.c (tree_function_versioning): Populate decl_debug_args
for args_to_skip arguments and add callee side debug stmts.
Formatting fixes. Avoid shadowing i variable.
2015-12-18 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_maybe_convert_symbolic_operand):
Remove UNSPEC_TO_GENERIC generation.
(nvptx_output_mov_insn): Generate cvta for symbolic src.
* config/nvptx/ (nvptx_register_operand): Allow hard reg.
(nvptx_reg_or_mem_operand): Likewise.
(nvptx_nonmemory_operand): Likewise.
(nvptx_general_operand): Delete.
(*mov<mode>_insn): Use nonimmediate_operand, permit hardregs.
(oacc_fork, oacc_join): Use general_operand.
2015-12-18 Daniel Kahn Gillmor <>
* dwarf2out.c (gen_producer_string): Ignore -fdebug-prefix-map.
2015-12-18 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_option_override): Emit sorry for
stabs debug.
(nvptx_assemble_undefined_decl): Use nvptx_assemble_decl_end.
2015-12-18 Jeff Law <>
PR rtl-optimization/49847
* cse.c (record_jump_equiv): Handle fold_rtx returning NULL_RTX.
2015-12-18 Nathan Sidwell <>
* config/nvptx/nvptx.c (worker_bcast_name, worker_red_name): Delete.
(nvptx_option_override): Adjust worker symbol creation.
(nvptx_gen_wcast): Wrap worker address in UNSPEC_TO_GENERIC.
(write_worker_buffer): New.
(nvptx_file_end): Call write_worker_buffer.
* config/nvptx/ (UNSPEC_SHARED_DATA): Delete.
(worker_load<mode>, worker_store<mode>): Delete.
2015-12-18 Richard Biener <>
PR testsuite/68776
* tree-vect-patterns.c (struct vect_recog_func): New.
(vect_vect_recog_func_ptrs): Make an array of function name pairs.
(vect_pattern_recog_1): Print the recognized pattern name. Return
true if a pattern was recognized.
(vect_pattern_recog): Adjust. Stop iterating over pattern recognition
functions on a stmt if a pattern was recognized.
2015-12-18 Andreas Krebbel <>
* ira.c (ira_setup_alts): Move the scan for commutative modifier
to the first loop to make it work even with disabled alternatives.
2015-12-18 Dominik Vogt <>
* config/s390/s390.c (s390_init_frame_layout): Try r4 to r2 for the
literal pool pointer.
2015-12-18 Yuri Rumyantsev <>
PR tree-optimization/68906
* tree-ssa-loop-unswitch.c (tree_unswitch_outer_loop): Add check
that an exit block belongs to LOOP.
2015-12-18 Ilya Enkovich <>
PR tree-optimization/68956
* tree-vect-stmts.c (vect_init_vector): Fix constants
used for boolean vectors.
2015-12-18 Kyrylo Tkachov <>
PR rtl-optimization/68796
* config/aarch64/ (*and<mode>3nr_compare0_zextract):
New pattern.
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Handle
ZERO_EXTRACT comparison with zero.
(aarch64_mask_from_zextract_ops): New function.
* config/aarch64/aarch64-protos.h (aarch64_mask_from_zextract_ops):
New prototype.
2015-12-18 Robin Dapp <>
* config/s390/ Change and rename
constm1_operand to all_ones_operand
* config/s390/s390.c (s390_expand_vcond): Use all_ones_operand
* config/s390/ Likewise
2015-12-18 Robin Dapp <>
* config/s390/s390.c (s390_expand_vcond): Convert vector
conditional into shift.
* config/s390/ Change operand predicate.
2015-12-18 Andreas Krebbel <>
* config/s390/driver-native.c (s390_host_detect_local_cpu): Pick
z900 -march -mtune even on g5 and g6 machines.
* config/s390/s390.c (s390_option_override_internal): New argument
to distingiush between options and target attributes. Emit
deprecation warning for g5 and g6 arch/tune options.
(s390_option_override): Set new s390_option_override_internal
argument to true.
(s390_valid_target_attribute_tree): Set new
s390_option_override_internal argument to false.
* config/s390/s390.h: Default to z900 in the driver.
* doc/invoke.texi: Document the deprecation of g5 and g6.
2015-12-18 Andris Pavenis <>
* config/i386/djgpp-stdint.h: update typedefs for integer types
2015-12-17 Jeff Law <>
* passes.def: Put the split-paths pass immediately before the
tracer pass.
* doc/invoke.texi (-O2 options): Remove -fsplit-paths.
(-O3 options): Add -fsplit-paths.
* gimple-ssa-split-paths.c: Include predict.h
(split_paths): Only split paths in a loop that should be
optimized for speed.
* opts.c (default_options_table): Move -fsplit-paths from -O2 to
2015-12-17 Nathan Sidwell <>
* ipa-icf.c (sem_item_optimizer::merge): Don't pick 'main' as the
source function.
2015-12-17 Sebastian Pop <>
* Replace ISL with isl.
* common.opt: Same.
* configure: Regenerate.
* Same.
* doc/install.texi: Same.
* doc/invoke.texi: Same.
* graphite-isl-ast-to-gimple.c: Same.
* graphite-scop-detection.c: Same.
* graphite-sese-to-poly.c: Same.
* graphite.c: Same.
* graphite.h: Same.
* params.def: Same.
* testsuite/gcc.dg/graphite/fuse-1.c: Same.
* testsuite/gcc.dg/graphite/fuse-2.c: Same.
* testsuite/gcc.dg/graphite/interchange-1.c: Same.
* testsuite/gcc.dg/graphite/pr35356-1.c: Same.
* toplev.c: Same.
2015-12-17 Sebastian Pop <>
* graphite-dependences.c: Move all isl include files to...
* graphite-isl-ast-to-gimple.c: Same.
* graphite-optimize-isl.c: Same.
* graphite-poly.c: Same.
* graphite-scop-detection.c: Same.
* graphite.c: Same.
* graphite.h: ... here.
2015-12-17 Senthil Kumar Selvaraj <>
* config/avr/avr.h (MOVE_MAX): Set value to 1.
(MOVE_RATIO): Define.
Provide target hook.
(avr_use_by_pieces_infrastructure_p): New function.
2015-12-17 Trevor Saunders <>
* config.gcc: mark *-interix* as obsolete.
2015-12-17 Trevor Saunders <>
* config.gcc: Mark openbsd 2.0 and 3.X as obsolete.
2015-12-17 Trevor Saunders <>
* config.gcc: Mark knetbsd targets as obsolete.
2015-12-17 Nathan Sidwell <>
(REGISTER_NAMES): Update and rename.
(enum_reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Reformat.
2015-12-17 Richard Biener <>
PR tree-optimization/68946
* tree-vect-slp.c (vect_slp_analyze_node_operations): Push
SLP def type to stmt operands one stmt at a time.
2015-12-17 Pierre-Marie de Rodat <>
* langhooks.h (struct lang_hooks_for_types): New get_bias_field.
* langhooks-def.h (LANG_HOOKS_GET_TYPE_BIAS): New.
* dwarf2out.c
(base_type_die): In non-strict DWARF mode, invoke the
get_type_bias language hook for INTEGER_TYPE nodes. If it
returns a bias, emit an attribute for it.
(subrange_type_die): Change signature to handle bias. If
non-strict DWARF mode, emit an attribute for it, if one passed.
(modified_type_die): For subrange types, invoke the
get_type_bias langage hook and pass the bias to
2015-12-17 Pierre-Marie de Rodat <>
* dwarf2out.h (DWARF2OUT_ARRAY_DESCR_INFO_MAX_DIMEN): New macro.
(struct array_descr_info): Use it for the dimensions array's
* dwarf2out.c (gen_type_die_with_usage): Check that the array
descr. language hook does not return an array with more
dimensions that it should.
2015-12-17 Pierre-Marie de Rodat <>
* langhooks.h (struct lang_hooks_for_types): Add a
get_fixed_point_type_info field.
get_fixed_point_type_info field.
* dwarf2out.h (enum fixed_point_scale_factor): New.
(struct fixed_point_type_info): New.
* dwarf2out.c (base_type_die): In DWARFv3 or non-strict DWARF
mode, get fixed-point type information using the debugging hook
and describe it in DWARF, if any.
2015-12-17 Pierre-Marie de Rodat <>
* langhooks.h (struct lang_hooks_for_types): Add a
get_debug_type field.
* langhooks-def.h (LANG_HOOKS_GET_DEBUG_TYPE): New macro.
get_debug_type field.
* dwarf2out.h (struct array_descr_info): Add an array-wide
stride field.
* dwarf2out.c (modified_type_die): Invoke the get_debug_type
language hook, process its result instead, if any.
(gen_descr_array_type_die): Add array-wide stride processing.
2015-12-17 Pierre-Marie de Rodat <>
* debug.h (struct gcc_debug_hooks): Add a new size_function
* debug.c (do_nothing_debug_hooks): Set the size_function field
to no-op.
* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
* sdbout.c (sdb_debug_hooks): Likewise.
* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
* stor-layout.c (finalize_size_functions): Let the debug info
back-end know about the implementation of size functions.
* dwarf2out.h (dw_discr_list_ref): New typedef.
(enum dw_val_class): Add value classes for discriminant values
and discriminant lists.
(struct dw_discr_value): New structure.
(struct dw_val_node): Add discriminant values and discriminant
lists to the union.
(struct dw_loc_descr_node): Add frame_offset_rel and
dw_loc_frame_offset (only for checking) fields to handle DWARF
procedures generation.
(struct dw_discr_list_node): New structure.
* dwarf2out.c (dwarf2out_size_function): New.
(dwarf2_debug_hooks): Set the size_function field to
(dwarf2_lineno_debug_hooks): Set the size_function field to
(new_loc_descr): Initialize the
dw_loc_frame_offset field.
(dwarf_proc_stack_usage_map): New.
(dw_val_equal_p): Handle discriminants.
(size_of_discr_value): New.
(size_of_discr_list): New.
(size_of_die): Handle discriminants.
(add_loc_descr_to_each): New.
(add_loc_list): New.
(print_discr_value): New.
(print_dw_val): Handle discriminants.
(value_format): Handle discriminants.
(output_discr_value): New.
(output_die): Handle discriminants.
(output_loc_operands): Handle DW_OP_call2 and DW_OP_call4.
(uint_loc_descriptor): New.
(uint_comparison_loc_list): New.
(loc_list_from_uint_comparison): New.
(add_discr_value): New.
(add_discr_list): New.
(AT_discr_list): New.
(loc_descr_to_next_no_op): New.
(free_loc_descr): New.
(loc_descr_without_nops): New.
(struct loc_descr_context): Add a dpi field.
(struct dwarf_procedure_info): New helper structure.
(new_dwarf_proc_die): New.
(is_handled_procedure_type): New.
(resolve_args_picking_1): New.
(resolve_args_picking): New.
(function_to_dwarf_procedure): New.
(copy_dwarf_procedure): New.
(copy_dwarf_procs_ref_in_attrs): New.
(copy_dwarf_procs_ref_in_dies): New.
(break_out_comdat_types): Copy DWARF procedures along with the
types that reference them.
(loc_list_from_tree): Rename into loc_list_from_tree_1. Handle
CALL_EXPR in the cases suitable for DWARF procedures. Handle
for PARM_DECL when generating a location description for a DWARF
procedure. Handle big unsigned INTEGER_CST nodes. Handle
NON_LVALUE_EXPR, EXACT_DIV_EXPR and all unsigned comparison
operators. Add a wrapper for loc_list_from_tree that strips
DW_OP_nop operations from the result.
(type_byte_size): New.
(struct vlr_context): New helper structure.
(field_byte_offset): Change signature to return either a
constant offset or a location description for dynamic ones.
Handle dynamic byte offsets with constant bit offsets and handle
fields in variant parts.
(add_data_member_location): Change signature to handle dynamic
member offsets and fields in variant parts. Update call to
field_byte_offset. Handle location lists. Emit a variable data
member location only when -fgnat-encodings=minimal.
(add_bound_info): Emit self-referential bounds only when
(add_byte_size_attribute): Use type_byte_size in order to handle
dynamic type sizes. Emit variable byte size only when
-fgnat-encodings=minimal and when the target DWARF version
allows them.
(add_bit_offset_attribute): Change signature to handle
variable-length records. Update call to field_byte_offset.
(gen_descr_array_type_die): Update call to gen_field_die.
Update loc_descr_context literal.
(gen_type_die_for_member): Likewise.
(gen_subprogram_die): Update calls to get_decl_die.
(gen_field_die): Change signature to handle variable-length
records. Update calls to add_bit_offset_attribute and
(gen_inheritance_die): Update call to
(gen_decl_die): Change signature to handle variable-length
records. Update call to gen_field_die.
(gen_inheritance_die): Change signature to handle
variable-length records. Update call to
(is_variant_part): New.
(analyze_discr_in_predicate): New.
(get_discr_value): New.
(analyze_variants_discr): New.
(gen_variant_part): New.
(gen_member_die): Update calls to gen_decl_die. Call instead
gen_variant_part for variant parts.
(gen_type_die_with_usage): Update calls to gen_decl_die.
(process_scope_var): Likewise.
(force_decl_die): Likewise.
(declare_in_namespace): Likewise.
(dwarf2out_decl): Likewise.
(prune_unused_types_walk_loc_descr): New.
(prune_unused_types_walk_attribs): Mark DIEs referenced by
location descriptions and loc. descr. lists.
(prune_unused_types_walk): Don't mark DWARF procedures by
default. Mark variant parts since nothing is supposed to
reference them.
(dwarf2out_init): Allocate dwarf_proc_stack_usage_map.
(dwarf2out_c_finalize): Deallocate and reset
2015-12-17 Pierre-Marie de Rodat <>
* common.opt (gnat_encodings): New variable
(dwarf_gnat_encodings): New enum type.
(fgnat_encodings): New option.
* flag-types.h (enum dwarf_gnat_encodings): New.
2015-12-17 Christian Bruel <>
* tree.h (TYPE_MODE_RAW): New macro.
* tree-streamer-out.c (pack_ts_type_common_value_fields):
2015-12-17 Jakub Jelinek <>
PR tree-optimization/68835
* tree.c (get_int_cst_ext_nunits): Return
cst.get_precision () / HOST_BITS_PER_WIDE_INT + 1
for all unsigned wi::neg_p (cst) constants.
(build_new_int_cst): If cst.get_precision is not a multiple
of HOST_BITS_PER_WIDE_INT, zero extend -1 to the precision
2015-12-17 Richard Biener <>
PR tree-optimization/68951
* tree-vect-data-refs.c (vect_peeling_hash_get_lowest_cost):
Ignore strided non-group accesses.
2015-12-17 Andrew Burgess <>
* config/arc/arc.c (arc_loop_hazard): Don't convert the jump label
rtx to an rtx_insn until we confirm it's not a return rtx.
2015-12-17 Richard Biener <>
* gimple-ssa.h (struct gimple_df): Remove modified_noreturn_calls
* tree-ssa.c (delete_tree_ssa): Do not zero it.
2015-12-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR target/67973
* (gcc_cv_as_stabs_directive): New test.
* configure: Regenerate.
* Regenerate.
* config/darwin.h (DBX_DEBUGGING_INFO): Wrap in
* config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Only include
* doc/sourcebuild.texi (Effective-Target Keywords, Environment
attributes): Document stabs.
2015-12-16 Martin Sebor <>
PR c/68868
* ginclude/stdatomic.h (atomic_init): Use atomic_store instead
of plain assignment.
2015-12-15 Michael Meissner <>
PR target/68805
* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use ROTATE
instead of VEC_SELECT for TImode.
* config/rs6000/ (VSX_LE): Move TImode from VSX_LE to
VSX_LE_128, so that we use ROTATE to swap the 64-bit words instead
of using VEC_SELECT.
(VSX_LE_128): Likewise.
(define_peephole2): Add peephole to eliminate double xxpermdi when
copying TImode.
2015-12-16 John David Anglin <>
PR target/68779
* config/pa/ (atomic_loaddi): Honor -mdisable-fpregs.
(atomic_loaddi_1): Likewise.
(atomic_storedi): Likewise.
(atomic_storedi_1): Likewise.
(atomic_loaddf): Likewise.
(atomic_loaddf_1): Likewise.
(atomic_storedf): Likewise.
(atomic_storedf_1): Likewise.
Move all atomic patterns to end of file.
2015-12-16 Abderrazek Zaafrani <>
* graphite-isl-ast-to-gimple.c: Include isl/schedule_node.h.
(set_separate_option): New.
(translate_isl_ast_to_gimple::set_options_for_schedule_tree): New.
(translate_isl_ast_to_gimple::scop_to_isl_ast): Use scop->schedule.
* graphite-optimize-isl.c (optimize_isl): Set scop->schedule, do not
free the computed schedule tree.
* graphite-poly.c (new_scop): Initialize scop->schedule.
* graphite.h: Include isl/schedule.h.
(struct scop): Add field schedule.
2015-12-16 Nathan Sidwell <>
* ipa-visibility.c (can_replace_by_local_alias): Make static,
(can_replace_by_local_alias_in_vtable): Make static.
(function_and_variable_visibility): Reformat overlong comment.
2015-12-16 Jeff Law <>
* ree.c (add_removable_extension): Use reg_overlap_mentioned_p
rather than testing hard register #s.
2015-12-16 Nathan Sidwell <>
* config/nvptx/nvptx.h (OUTGOING_STATIC_CHAIN_REGNUM): Remove.
* config/nvptx/nvptx.c (nvptx_pass_by_reference): Avoid long line.
(nvptx_static_hain): Delete.
(write_arg_mode): Don't emit initializer if argno < 0.
(write_arg_type): Fix whitespace.
(init_frame): Initialize reg to zero if frame is zero-sized.
(nvptx_declare_function_name): Use write_arg_type to emit chain
(nvptx_output_call_insn): Adjust static chain emission.
(nvptx_goacc_reduction): Make static.
(TARGET_STATIC_CHAIN): Don't override.
2015-12-16 Aditya Kumar <>
* graphite-dependences.c (scop_get_dependences): Use local pointers.
* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::scop_to_isl_ast): Use scop->dependence.
* graphite-optimize-isl.c (optimize_isl): Same.
* graphite-poly.c (new_scop): Remove initialization of removed
(free_scop): Same.
* graphite.h (struct scop): Remove individial dependence pointers and
add a scop::dependence to contain all the dependence.
2015-12-16 Aditya Kumar <>
* graphite-sese-to-poly.c (build_poly_sr): Use refs.
2015-12-16 Aditya Kumar <>
Sebastian Pop <>
* Regenerate.
* configure: Regenerate.
* Remove checks for functions that exist in isl 0.13
or later.
* graphite-isl-ast-to-gimple.c: Remove #ifdefs and code for isl 0.12.
* graphite-optimize-isl.c: Same.
* graphite-poly.c: Same.
* graphite-sese-to-poly.c: Same.
* graphite.h: Add comment for isl 0.14.
* toplev.c (print_version): Print isl version.
2015-12-10 Jan Hubicka <>
* ipa-cp.c (ipa_get_indirect_edge_target_1): Use can_refer; do not
speculate to impossible targets.
* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
2015-12-16 Aditya Kumar <>
Sebastian Pop <>
* graphite-dependences.c (scop_get_reads): Add more dumps.
(scop_get_must_writes): Same.
(scop_get_may_writes): Same.
* graphite-poly.c (new_poly_dr): Same.
* graphite-scop-detection.c (build_cross_bb_scalars_def): Same.
(gather_bbs::before_dom_children): Same.
2015-12-16 Kyrylo Tkachov <>
* config/aarch64/aarch64.c (aarch64_extend_bitfield_pattern_p):
New function.
(aarch64_rtx_costs, ZERO_EXTEND, SIGN_EXTEND cases): Use the above
to handle extend+shift rtxes.
2015-12-16 Kyrylo Tkachov <>
PR target/68696
* config/aarch64/ (*aarch64_simd_bsl<mode>_alt):
New pattern.
(aarch64_simd_bsl<mode>_internal): Update comment to reflect
the above.
2015-12-16 Richard Biener <>
PR tree-optimization/68870
* tree-cfgcleanup.c (cleanup_control_expr_graph): Add first_p
parameter, if set only perform trivial constant folding.
Queue other blocks with conditions for later processing.
(cleanup_control_flow_bb): Add first_p parameter and pass it through.
(cleanup_tree_cfg_1): Pass true for the first iteration
2015-12-16 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (nvptx_hard_regno_mode_ok): Delete.
* config/nvptx/nvptx.h (struct machine_function):
Reimplement. Adjust all users.
* config/nvptx/nvptx.c (nvptx_declare_function_name): Move stack
and frame array generation earlier.
(nvptx_call_args): Reimplement.
(nvptx_expand_call): Adjust.
(nvptx_hard_reno_mode_ok): Delete.
(nvptx_reorg): Revert scan of hard regs.
2015-12-16 Tom de Vries <>
* opts.c (default_options_optimization): Set fipa-pta on by
default for fopenacc.
* passes.def: Move kernels pass group to pass_ipa_oacc.
* tree-pass.h (make_pass_oacc_kernels2): Remove.
(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): Declare.
* tree-ssa-loop.c (pass_oacc_kernels2, make_pass_oacc_kernels2):
(pass_ipa_oacc, pass_ipa_oacc_kernels): New pass.
(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): New function.
* tree-ssa-structalias.c (pass_ipa_pta::clone): New function.
2015-12-16 Richard Biener <>
PR tree-optimization/68861
* tree-vect-slp.c (vect_build_slp_tree): Properly handle
duplicate stmts when applying swapping to stmts.
2015-12-16 Kirill Yukhin <>
* config/i386/i386-c.c (ix86_target_macros_internal): Remove
duplicate check (__CLZERO__).
2015-12-16 Matthew Wahab <>
* config/arm/arm_neon.h (vqrdmlahq_lane_s16): New.
(vqrdmlahq_lane_s32): New.
(vqrdmlah_lane_s16): New.
(vqrdmlah_lane_s32): New.
(vqrdmlshq_lane_s16): New.
(vqrdmlshq_lane_s32): New.
(vqrdmlsh_lane_s16): New.
(vqrdmlsh_lane_s32): New.
* config/arm/arm_neon_builtins.def: Add "vqrdmlah_lane" and
2015-12-16 Matthew Wahab <>
* config/arm/arm_neon.h (vqrdmlah_s16, vqrdmlah_s32): New.
(vqrdmlahq_s16, vqrdmlahq_s32): New.
(vqrdmlsh_s16, vqrdmlsh_s32): New.
(vqrdmlahq_s16, vqrdmlshq_s32): New.
* config/arm/arm_neon_builtins.def: Add "vqrdmlah" and "vqrdmlsh".
2015-12-16 Matthew Wahab <>
* doc/sourcebuild.texi (ARM-specific attributes): Add
"arm_v8_1a_neon_ok" and "arm_v8_1a_neon_hw".
2015-12-16 Matthew Wahab <>
* config/arm/arm-c.c (arm_cpu_builtins): Define
__ARM_FEATURE_QRDMX. Clean up some trailing whitespace.
2015-12-16 Matthew Wahab <>
* config/arm/ (VQRDMLH_AS): New.
(neon_rdma_as): New.
* config/arm/
(neon_vqrdml<VQRDMLH_AS:neon_rdma_as>h<mode>): New.
(neon_vqrdml<VQRDMLH_AS:neon_rdma_as>h_lane<mode>): New.
* config/arm/ (UNSPEC_VQRDMLAH): New.
2015-12-16 Matthew Wahab <>
* config/arm/t-aprofile: Make "armv8.1-a" and "armv8.1-a+crc"
matches for "armv8-a".
2015-12-16 Matthew Wahab <>
* config/arm/arm-arches.def: Add "armv8.1-a" and "armv8.1-a+crc".
* config/arm/arm-protos.h (FL2_ARCH8_1): New.
(FL2_FOR_ARCH8_1A): New.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm.c (arm_arch8_1): New.
(arm_option_override): Set arm_arch8_1.
* config/arm/arm.h (TARGET_NEON_RDMA): New.
(arm_arch8_1): Declare.
* doc/invoke.texi (ARM Options, -march): Add "armv8.1-a" and
(ARM Options, -mfpu): Fix a typo.
2015-12-16 Kyrylo Tkachov <>
PR target/68648
* config/arm/ (*andsi_iorsi3_notsi): Try to simplify
the complement of operands[3] during splitting.
2015-12-16 Richard Biener <>
PR tree-optimization/68892
* tree-vect-slp.c (vect_analyze_slp_cost_1): Properly compute
cost for permuted loads.
2015-12-16 Jakub Jelinek <>
PR rtl-optimization/65980
* jump.c (rtx_renumbered_equal_p) <case LABEL_REF>: Use
next_nonnote_nondebug_insn instead of next_real_insn and
skip over CODE_LABELs too.
2015-12-10 Jan Hubicka <>
* symtab.c (symtab_node::fixup_same_cpp_alias_visibility):
Do not copy DECL_VIRTUAL_P.
2015-12-15 Martin Sebor <>
PR c++/42121
* tree-chkp.c (chkp_find_bound_slots_1): Handle flexible array
* tree.c (type_contains_placeholder_1): Avoid assuming type has
a non-null domain or an upper bound to handle flexible array
* varasm.c (output_constructor_regular_field): Same.
(output_constructor): Set min_index to integer_zero_node rather
than null when a type has no domain to avoid crashing later.
2015-12-15 Nathan Sidwell <>
* config/nvptx/nvptx.c (write_one_arg): Rename to ...
(write_arg_mode): ... here. Update callers.
(write_arg): Rename to ...
(write__arg_type): ... here. Update callers.
(write_return_mode): New fn, broken out of ...
(write_return): ... here. Rename to ...
(write_return_type): ... here. Call it. Update callers.
(write_fn_proto_from_insn): Use write_arg_mode and
(init_frame): New fn.
(nvptx_declare_function_name): Call it for frame and varargs. Only
emit outgoing static chain, if it's live.
(nvptx_output_return): Use reg_names for return reg name.
(nvptx_output_call_insn): Likewise.
(nvptx_reorg): Mark unused hard regs too.
2015-12-15 Nathan Sidwell <>
* config/nvptx/ (nvptx_register_operand): Don't accept and
then reject subregs.
(nvptx_reg_or_mem_operand): Likewise.
(nvptx_nonmemory_operand): Likewise.
(call_insn_operand): A regular predicate, check SYMBOL_REF_FUNCTION_P.
(call_insn, call_value_insn): Address is not SImode.
* config/nvptx/nvptx.h (FIXED_REGISTERS): Make return reg fixed.
(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Remove
(PROMOTE_MODE): QI and HI are the only smaller than SI int modes.
(REGISTER_NAMES): Move earlier.
(struct nvptx_args): Remove 'off'.
(INIT_CUMULATIVE_ARGS): Don't initialize 'off'.
* config/nvptx/nvptx.c (arg_promotion): Delete.
(nvptx_expand_call): Remove check for funtype being an fntype.
2015-12-15 Jason Merrill <>
* hash-map.h, hash-table.h: Make copy constructors explicit.
2015-12-15 Ilya Verbin <>
* cgraphunit.c (output_in_order): Do not assemble "omp declare target
link" variables in ACCEL_COMPILER.
* gimplify.c (gimplify_adjust_omp_clauses): Do not remove mapping of
"omp declare target link" variables.
* omp-low.c (scan_sharing_clauses): Do not remove mapping of "omp
declare target link" variables.
(add_decls_addresses_to_decl_constructor): For "omp declare target
link" variables output address of the artificial pointer instead
of address of the variable. Set most significant bit of the size
to mark them.
(pass_data_omp_target_link): New pass_data.
(pass_omp_target_link): New class.
(find_link_var_op): New static function.
(make_pass_omp_target_link): New function.
* passes.def: Add pass_omp_target_link.
* tree-pass.h (make_pass_omp_target_link): Declare.
* varpool.c (symbol_table::output_variables): Do not assemble "omp
declare target link" variables in ACCEL_COMPILER.
2015-12-15 Bernd Schmidt <>
PR middle-end/21273
* gensupport.c (collect_insn_data): Look for number of alternatives
2015-12-15 Nathan Sidwell <>
* config/nvptx/nvptx.h (HARD_REGNO_NREGS): Reformat.
(CANNOT_CHANGE_MODE_CLASS): Always return true.
* config/nvptx/ (define_expand mov<mode>): No
RETURN_REGNUM handling here.
* config/nvptx/nvptx.c (nvptx_function_value): Set ret_reg_mode
(write_one_arg): No QI or HI mode args.
(write_fn_proto_from_insn): No argument promotion here.
(nvptx_output_return_insn): No return promotion here.
(nvptx_output_mov_insn): No RETURN_REGNUM handling needed.
(nvptx_output_call_insn): No return promotion here.
2015-12-15 Martin Jambor <>
PR ipa/68851
* cgraph.c (collect_callers_of_node_1): Do not collect thunks.
* cgraph.h (cgraph_node): Change comment of collect_callers.
2015-12-15 Jakub Jelinek <>
PR tree-optimization/66688
* tree-cfgcleanup.c (cleanup_control_flow_bb): Handle
noreturn call followed only by debug stmts by removing
the debug stmts and handling it the same as if the noreturn
call is the last stmt.
2015-12-14 Steve Ellcey <>
* config/mips/mips.c (mips_promote_function_mode): New function.
(TARGET_PROMOTE_FUNCTION_MODE): Define as above function.
2015-12-14 Jason Merrill <>
PR c++/68309
* hash-table.h: Add copy constructor.
* hash-map.h: Add copy constructor.
2015-12-14 Tom de Vries <>
PR other/68882
* gimple-pretty-print.c (dump_ssaname_info_to_file): New function.
* gimple-pretty-print.h (dump_ssaname_info_to_file): Declare.
* tree-cfg.c (dump_default_def): New function.
(dump_function_to_file): Dump default defs for arguments, static chain,
and decl-by-reference.
2015-12-14 Nathan Sidwell <>
* config/nvptx/nvptx.h (PARM_BOUNDARY): Set to 32.
* config/nvptx/nvptx.c (PASS_IN_REG_P, RETURN_IN_REG_P): Delete.
(pass_in_memory, promote_arg, promote_return): New.
(nvptx_function_arg_boundary): Delete.
(nvptx_function_value): Use promote_return.
(nvptx_pass_by_reference): Use pass_in_memory.
(nvptx_return_in_memory): Use pass_in_memory.
(nvptx_promote_function_mode): Use promote_arg.
(write_arg): Adjust arg splitting logic.
(write_return): Check and clear ret_reg_mode, if needed.
(write_fn_proto, nvptx_declare_function_name): Adust write_return
2015-12-14 Jakub Jelinek <>
PR c/68833
* common.opt (Wmissing-noreturn): Add Warning option.
* opts-common.c (control_warning_option): If opt is
alias_target with alias_arg, set arg to it.
2015-12-14 Segher Boessenkool <>
PR target/68865
PR target/68879
* config/rs6000/ (cstore_si_as_di): Force all operands
into registers.
2015-12-14 Richard Biener <>
Revert accidentially applied
PR tree-optimization/68707
PR tree-optimization/67323
* tree-vect-slp.c (vect_analyze_slp_instance): Drop SLP instances
if they can be vectorized using load/store-lane instructions.
2015-12-14 Richard Biener <>
PR tree-optimization/68852
* tree-vectorizer.h (struct _slp_tree): Add def_type member.
(SLP_TREE_DEF_TYPE): New accessor.
* tree-vect-stmts.c (vect_is_simple_use): Remove BB vectorization
* tree-vect-slp.c (vect_create_new_slp_node): Initialize
(vect_build_slp_tree): When a node is to be built up from scalars
do not push a NULL as child but instead set its def_type to
(vect_analyze_slp_cost_1): Check for child def-type instead
of NULL.
(vect_detect_hybrid_slp_stmts): Likewise.
(vect_bb_slp_scalar_cost): Likewise.
(vect_get_slp_defs): Likewise.
(vect_slp_analyze_node_operations): Likewise. Before
processing node push the children def-types to the underlying
stmts vinfo and restore it afterwards.
(vect_schedule_slp_instance): Likewise.
(vect_slp_analyze_bb_1): Do not mark stmts not in SLP instances
as not vectorizable.
2015-12-14 Richard Biener <>
PR tree-optimization/68775
* tree-vect-slp.c (vect_build_slp_tree): Make sure to apply
a operand swapping even if replacing the op with scalars.
2015-12-14 Kyrylo Tkachov <>
* combine.c (change_zero_ext): Do not create a shift of zero length.
2015-12-14 Claudiu Zissulescu <>
Provide target hook.
(arc_no_speculation_in_delay_slots_p): New function.
2015-12-14 Claudiu Zissulescu <>
Andrew Burgess <>
* config/arc/arc.c (frame_move): Set frame related flag.
(arc_save_restore): Emit epilogue related DWARF2 information.
(arc_expand_epilogue): Likewise.
* config/arc/arc.opt (mno-epilogue-cfi): Remove.
(mepilogue-cfi): Likewise.
* doc/invoke.texi: Remove -m[no]-epilogue-cfi documentation.
2015-12-14 Martin Jambor <>
PR ipa/66616
* ipa-cp.c (propagate_constants_accross_call): Move thuk check...
(find_more_scalar_values_for_callers_subset): Perform thunk checks
like propagate_constants_accross_call does.
2015-12-14 Jakub Jelinek <>
PR rtl-optimization/68730
* cfgrtl.c (cfg_layout_finalize): Free dominators.
2015-12-13 Alexandre Oliva <>
PR debug/67355
* var-tracking.c (reverse_op): Don't add dummy zero to reverse
ops that simplify back to the original value.
* alias.c (refs_newer_value_p): Cut off recursion for
expressions containing the original value.
2015-12-13 Kazu Kirata <>
* config/m68k/ (load feeding clear byte): New peephole2.
2015-12-13 Tom de Vries <>
* tree-ssa-structalias.c (find_func_clobbers): Handle sizes and kinds
parameters of GOACC_paralllel.
2015-12-10 Jan Hubicka <>
* cgraph.c (cgraph_node::get_untransformed_body): Pass compressed
flag to lto_get_section_data.
* varpool.c (varpool_node::get_constructor): Likewise.
* lto-section-in.c (lto_get_section_data): Add new flag decompress.
(lto_free_section_data): Likewise.
(lto_get_raw_section_data): New function.
(lto_free_raw_section_data): New function.
(copy_function_or_variable): Copy sections w/o decompressing.
(lto_output_decl_state_refs): Picke compressed bit.
* lto-streamer.h (lto_in_decl_state): New flag compressed.
(lto_out_decl_state): Likewise.
(lto_get_section_data, lto_free_section_data): Update prototypes
(lto_get_raw_section_data, lto_free_raw_section_data): Declare.
(lto_write_raw_data): Declare.
(lto_begin_section): Remove FIXME.
(lto_write_raw_data): New function.
(lto_write_stream): Remove FIXME.
(lto_new_out_decl_state): Set compressed flag.
2015-12-10 Jan Hubicka <>
* tree.c (free_lang_data_in_type, find_decls_types_r): Also free
unnecesary type decls.
* tree.h (is_redundant_typedef): Declare.
* dwarf2out.c (is_redundant_typedef): Export; booleanize
2015-12-12 Eric Botcazou <>
* config/sparc/sparc.h (TARGET_SUPPORTS_WIDE_INT): Define to 1.
* config/sparc/sparc.c (sparc_emit_set_const64): Remove code
conditionalized on HOST_BITS_PER_WIDE_INT == 32.
(sparc_cannot_force_const_mem) <CONST_WIDE_INT>: New case.
<CONST_DOUBLE>: Remove VOIDmode test.
(epilogue_renumber) <CONST_WIDE_INT>: New case.
(sparc_print_operand): Remove support for CONST_DOUBLE with VOIDmode.
(sparc_assemble_integer): Likewise.
(set_extends): Likewise.
(sparc_rtx_costs) <CONST_INT>: Use SMALL_INT.
<CONST_WIDE_INT>: New case.
<CONST_DOUBLE>: Remove support for VOIDmode.
<MULT>: Remove support for CONST_DOUBLE with VOIDmode.
* config/sparc/ (const_zero_operand): Add const_wide_int.
(const_all_ones_operand): Likewise.
(uns_small_int_operand): Remove const_double and code conditionalized
(arith_double_operand): Likewise.
(arith_double_add_operand): Likewise.
(input_operand): Remove support for CONST_DOUBLE with DImode.
* config/sparc/ (DImode CONST_INT splitter): Remove code
conditionalized on HOST_BITS_PER_WIDE_INT == 32.
(DFmode CONST_DOUBLE splitter): Likewise.
(*adddi3_insn_sp32): Likewise.
(*subdi3_insn_sp32): Likewise.
(DImode logical splitter): Likewise.
(DImode CONST_DOUBLE splitter): Delete.
2015-12-12 Paolo Bonzini <>
PR sanitizer/68418
* c-family/c-ubsan.c (ubsan_instrument_shift): Disable
sanitization of left shifts for wrapping signed types as well.
2015-12-11 Eric Botcazou <>
PR middle-end/68215
* tree-vect-generic.c (tree_vec_extract): Remove GSI parameter.
Do not gimplify the result.
(do_unop): Adjust call to tree_vec_extract.
(do_binop): Likewise.
(do_compare): Likewise.
(do_plus_minus): Likewise.
(do_negate): Likewise.
(expand_vector_condition): Likewise.
(do_cond): Likewise.
2015-12-11 Nathan Sidwell <>
* config/nvptx/nvptx.h (RETURN_ADDR_REGNO): Delete.
(REGISTER_NAMES): Name static chain regs.
* config/nvptx/nvptx.c (nvptx_function_arg): Add ARG_UNUSED, merge
(nvptx_incoming_arg): Merge ifs.
(nvptx_function_arg_boundary): Reimplement to avoid mixing units.
(nvptx_function_value): Tail call nvptx_libcall_value.
(nvptx_pass_by_reference): Add ARG_UNUSED.
(nvptx_static_chain): Use conditional op.
(nvptx_handle_kernel_attribute): Use VOID_TYPE_P.
2015-12-11 Jan-Benedict Glaw <>
Dominique d'Humieres <>
PR target/26427
PR target/33120
PR testsuite/35710
* config/darwin.c (darwin_use_anchors_for_symbol_p): Fix indention and
trailing whitespace.
2015-12-11 Jan Beulich <>
* cfgexpand.c (expand_one_var): Exit early for static and
external variables when adjusting stack alignment related.
2015-12-11 Dominik Vogt <>
* config/s390/s390.c (s390_rtx_costs)
(s390_cannot_force_const_mem, legitimate_pic_operand_p)
(s390_preferred_reload_class, s390_reload_symref_address)
(legitimate_reload_constant_p, print_operand): Wide int support.
* config/s390/ ("const0_operand", "constm1_operand")
("consttable_operand"): Likewise.
("larl_operand"): Add a comment.
* config/s390/s390.h (TARGET_SUPPORTS_WIDE_INT): Enable wide int
2015-12-11 Nathan Sidwell <>
* config/nvptx/nvptx.h (TARGET_SUPPORTS_WIDE_INT): Define.
* config/nvptx/nvptx.c (nvptxx_assemble_integer): Return false for
unrecognizable RTX.
2015-12-11 Tom de Vries <>
* passes.def: Remove unpaired TERMINATE_PASS_LIST.
2015-12-11 Michael Matz <>
* hash-map.h (hash_map::hash_map): Gather statistics only
* hash-set.h (hash_set::hash_set): Ditto.
* hash-table.h (hash_table::hash_table): Ditto.
(hash_table::create_ggc): Ditto.
2015-12-11 Martin Jambor <>
PR ipa/68064
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Add checking
assert that align is nonzero.
2015-12-11 Dominik Vogt <>
* config/s390/s390.c (s390_expand_setmem): Use new expanders.
* config/s390/ ("*setmem_long")
("*setmem_long_and", "*setmem_long_31z"): Fix warnings.
("*setmem_long_and_31z"): New define_insn.
("setmem_long_<P:mode>"): New expanders.
* (<modesize>): New mode attribute
2015-12-11 Dominik Vogt <>
* config/s390/ ("movstr", "*movstr"): Fix warning.
("movstr<P:mode>"): New indirect expanders used by "movstr".
2015-12-11 Martin Liska <>
Uros Bizjak <>
PR target/67484
* config/i386/i386.c (ix86_valid_target_attribute_tree):
Use ggc_strdup to copy option_strings to opts->x_ix86_arch_string and
2015-12-11 Richard Biener <>
* lto-streamer.h (lto_simple_header_with_strings): Remove
main_size field already in lto_simple_header.
2015-12-11 Ilya Enkovich <>
* tree-vect-stmts.c (vectorizable_mask_load_store): Check
mask vectype.
2015-12-11 Ilya Enkovich <>
* config/i386/i386.c (ix86_get_mask_mode): Use scalar
modes for 32 and 16 byte boolean vectors when possible.
2015-12-11 Segher Boessenkool <>
PR rtl-optimization/67778
PR rtl-optimization/68634
* shrink-wrap.c (try_shrink_wrapping): Add a comment about why we want
to put the prologue earlier. When determining if an earlier block is
suitable, make sure it dominates every block reachable from it.
2015-12-11 Segher Boessenkool <>
PR rtl-optimization/68814
* rtlanal.c (set_noop_p): Use BITS_BIG_ENDIAN instead of
2015-12-10 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_function_arg,
nvptx_function_incoming_arg, nvptx_function_arg_advance,
nvptx_strict_argument_naming, nvptx_function_arg_boundary,
nvptx_libcall_value, nvptx_function_value,
nvptx_function_value_regno_p, nvptx_pass_by_reference,
nvptx_return_in_memory, nvptx_promote_function_mode,
nvptx_static_chain): Move earlier.
(write_one_arg): Break out as helper fn for ...
(write_arg): ... this new function. Adjust all callers.
2015-12-10 Jan Hubicka <>
* lto-streamer-out.c (wrap_refs): Only wrap public decls.
2015-12-10 Jan Hubicka <>
* ipa-cp.c (ipcp_cloning_candidate_p): Use node->optimize_for_size_p.
(good_cloning_opportunity_p): Likewise.
(gather_context_independent_values): Do not return true when
polymorphic call context is known or when we have known aggregate
value of unused parameter.
(estimate_local_effects): Try to create clone for all context
when either some params are substituted or devirtualization is possible
or some params can be removed; use local flag instead of
(identify_dead_nodes): Likewise.
2015-12-10 David Malcolm <>
* doc/invoke.texi (-Wall): Add -Wmisleading-indentation to the
(-Wmisleading-indentation): Update documentation to reflect
being enabled by -Wall in C/C++.
2015-12-10 Vladimir Makarov <>
PR rtl-optimization/68691
* lra-spills.c (lra_final_code_change): Check pseudo occurrence
number in non-debug insns and remove debug insns if necessary.
2015-12-10 Martin Sebor <>
* invoke.texi (Warning Options): Update -Wall options. Clarify
when some -Wextra options are enabled. Add -Wplacement-new example.
2015-12-10 Uros Bizjak <>
* graphite-scop-detection.c (gather_bbs::before_dom_children):
Change return type to an edge. Always return NULL.
2015-12-10 Jeff Law <>
PR tree-optimization/68619
* tree-ssa-dom.c (dom_opt_dom_walker::before_dom_children): Propgate
return value from optimize_stmt.
(dom_opt_dom_walker): Add new argument to dom_walker constructor.
(pass_dominator:execute): If a block has an unreachable edge,
remove all jump threads through any successor of the affected block.
(record_equivalences_from_phis): Ignore alternative if the edge
does not have EDGE_EXECUTABLE set.
(single_incoming_edge_ignoring_loop_edges): Similarly.
(optimize_stmt): If a gimple_code has a compile-time constant
condition, return the edge taken for that constant value. Also
change the condition to true/false as necessary.
* domwalk.h (dom_walker::dom_walker): Add new argument
skip_unreachable_blocks. Don't provide empty constructor body.
(dom_walker::before_dom_children): Change return type.
(dom_walker::bb_reachable): Declare new private method.
(dom_walker::propagate_unreachable_to_edges): Likewise.
(dom_walker::m_unreachable_dom): Declare new private data member.
(dom_walker::m_skip_unreachable_blocks): Likewise.
* domwalk.c: Include dumpfile.h.
(dom_walker::dom_walker): New constructor. Initialize private data
members. If needed, set EDGE_EXECUTABLE for all edges in the CFG,
extracted from tree-ssa-sccvn.c.
(dom_walker::bb_reachable): New method extracted from tree-ssa-sccvn.c
(dom_walker::propagate_unreachable_to_edges): Likewise.
(dom_walker::walk): Only call before_dom_children on reachable
blocks. If before_dom_children returns an edge, then clear
EDGE_EXECUTABLE for all other outgoing edges from the same block.
For unreachable blocks, call propagate_unreachable_to_edges.
Similarly, only call after_dom_children on reachable blocks. For
unreachable blocks, conditionally clear m_unreachable_dom.
* tree-ssa-sccvn.c (sccvn_dom_walker::unreachable_dom): Remove
private data member.
(sccvn_dom_walker::after_dom_children): Use methods from dom_walker
(run_scc_vn): Likewise.
(sccvn_dom_walker::before_dom_children): Likewise. Return the taken
outgoing edge if a COND, SWITCH, or GOTO are optimized.
* compare-elim.c (find_comparison_dom_walker::before_dom_children):
Change return type to an edge. Always return NULL.
* fwprop.c (single_def_use_dom_walker::before_dom_children): Likewise.
* gimple-ssa-strength-reduction.c
(find_candidates_dom_walker::before_dom_children): Likewise.
* ipa-prop.c (analysis_dom_walker::before_dom_children): Likewise.
(ipcp_modif_dom_walker::before_dom_children): Likewise.
* tree-into-ssa.c (rewrite_dom_walker::before_dom_children): Likewise.
(rewrite_update_dom_walker::before_dom_children): Likewise.
(mark_def_dom_children::before_dom_children): Likewise.
* tree-ssa-dse.c (dse_dom_walker::before_dom_children): Likewise.
* tree-ssa-loop-im.c
(invariantness_dom_walker::before_dom_children): Likewise.
(move_computations_dom_walker::before_dom_walker): Likewise.
* tree-ssa-phiopt.c
(nontrapping_dom_walker::before_dom_children): Likewise.
* tree-ssa-pre.c
(eliminate_dom_walker::before_dom_children): Likewise.
* tree-ssa-propagate.c
(substitute_and_fold_dom_walker::before_dom_children): Likewise.
* tree-ssa-strlen.c
(strlen_dom_walker::before_dom_children): Likewise.
* tree-ssa-uncprop.c
(uncprop_dom_walker::before_dom_children): Likewise.
2015-12-10 Jakub Jelinek <>
PR rtl-optimization/68376
PR rtl-optimization/68670
* ifcvt.c (noce_try_abs): For one_cmpl allow < 0, >= 0
or > -1 conditions regardless of negate, and disallow
all other conditions.
2015-12-10 Ilya Enkovich <>
* tree-chkp.c (chkp_call_returns_bounds_p): Return true
for VA_ARG call.
(chkp_fixup_inlined_call): New.
* tree-chkp.h (chkp_fixup_inlined_call): New.
* tree-stdarg.c: Include tree-chkp.h.
(expand_ifn_va_arg_1): Fixup bndret calls for removed
VA_ARG calls.
2015-12-10 Martin Jambor <>
* tree-inline.c (duplicate_remap_omp_clause_seq): New function.
(replace_locals_op): Duplicate gimple sequences in OMP clauses.
2015-12-10 David Malcolm <>
* graphite-optimize-isl.c (scop_get_domains): Fix indentation.
2015-12-10 David Malcolm <>
* ifcvt.c (noce_try_inverse_constants): Fix indentation.
2015-12-10 David Malcolm <>
* regrename.c (scan_rtx_address): Fix indentation.
2015-12-10 David Malcolm <>
* function.c (locate_and_pad_parm): Fix indentation.
2015-12-10 Richard Biener <>
* tree-ssa-structalias.c (struct variable_info): Add
is_ipa_escape_point flag.
(new_var_info): Initialize to false.
(find_func_aliases): Generate escape constraints for stores
properly in IPA mode.
(ipa_pta_execute): Compute is_ipa_escape_point for globals.
2015-12-10 Claudiu Zissulescu <>
* config/arc/ Add new file.
2015-12-10 Claudiu Zissulescu <>
* config/arc/arc-protos.h (arc_expand_atomic_op): Prototype.
(arc_split_compare_and_swap): Likewise.
(arc_expand_compare_and_swap): Likewise.
* config/arc/arc.c (arc_init): Check usage atomic option.
(arc_pre_atomic_barrier): New function.
(arc_post_atomic_barrier): Likewise.
(emit_unlikely_jump): Likewise.
(arc_expand_compare_and_swap_qh): Likewise.
(arc_expand_compare_and_swap): Likewise.
(arc_split_compare_and_swap): Likewise.
(arc_expand_atomic_op): Likewise.
* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): New C macro.
(ASM_SPEC): Enable mlock option when matomic is used.
* config/arc/ (UNSPEC_ARC_MEMBAR): Define.
(VUNSPEC_ARC_CAS): Likewise.
(VUNSPEC_ARC_LL): Likewise.
(VUNSPEC_ARC_SC): Likewise.
(VUNSPEC_ARC_EX): Likewise.
* config/arc/arc.opt (matomic): New option.
* config/arc/ (ATO): New constraint.
* config/arc/ (mem_noofs_operand): New predicate.
* doc/invoke.texi: Document -matomic.
* config/arc/ New file.
2015-12-10 Richard Biener <>
PR tree-optimization/68817
* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Detect
gaps early.
2015-12-10 Ilya Enkovich <>
* tree-vect-stmts.c (vectorizable_assignment): Support
useless boolean conversion.
2015-12-10 Alan Lawrence <>
* doc/install.texi: Add note against GNAT 4.8 on ARM targets.
2015-12-10 Jakub Jelinek <>
PR tree-optimization/68785
* gimple-fold.c (fold_ctor_reference): Pass return value from
native_encode_expr to native_interpret_expr.
* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
2015-12-10 Richard Biener <>
PR ipa/68331
* tree-ssa-structalias.c (set_uids_in_ptset): Add fndecl
parameter and make vars_contains_nonlocal properly have
function-scope semantics in IPA mode.
(find_what_var_points_to): Add fndecl parameter.
(find_what_p_points_to): Likewise.
(pt_solution_includes_global): Remove IPA PTA early out.
(compute_points_to_sets): Adjust.
(ipa_pta_execute): Likewise. Clear final_solutions after
each function.
2015-12-10 Tom de Vries <>
PR ada/65102
* doc/include/fdl.texi: Add nodefaultgnufreedocumentationlicensenode
ifdef to allow disabling default @node GNU Free Documentation License.
2015-12-10 Richard Biener <>
* tree-ssa-structalias.c (create_function_info_for): Add missing
constraint from nonlocal for DECL_RESULT.
2015-12-10 Richard Biener <>
* tree-if-conv.c: Include params.h.
(ifcvt_memrefs_wont_trap): Use PARAM_ALLOW_STORE_DATA_RACES
instead of flag_tree_loop_if_convert_stores to guard cases
we'd introduce store-data-races.
2015-12-10 Richard Biener <>
PR ipa/68721
* ipa-split.c (split_function): Record return value properly
when the split part doesn't set it.
2015-12-10 Richard Biener <>
PR tree-optimization/68806
* tree-vect-loop.c (vect_analyze_loop_2): Properly detect
reduction chains and ignore SLP reductions.
2015-12-10 Richard Biener <>
* tree-if-conv.c (if_convertible_loop_p_1): Do not compute
(if_convertible_loop_p): Adjust.
2015-12-10 Tom de Vries <>
* tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Remove
invalid assert.
2015-12-10 Martin Liska <>
* tree-vect-data-refs.c: Free an overwritten dataref.
2015-12-09 John David Anglin <>
PR target/68729
* config/pa/pa.c (pa_emit_move_sequence): Don't check that mode is
consistent with modes of the input and output operands when doing
reloads to and from floating point registers. Do reload for all
address forms.
2015-12-08 Jan Hubicka <>
PR ipa/61886
PR middle-end/25140
* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use compare_base_decls
(nonoverlapping_component_refs_of_decl_p): Update sanity check.
(decl_refs_may_alias_p): Use compare_base_decls.
* alias.c: Include cgraph.h
(get_alias_set): Add cut-off for recursion.
(rtx_equal_for_memref_p): Use rtx_equal_for_memref_p.
(compare_base_decls): New function.
(base_alias_check): Likewise.
(memrefs_conflict_p): Likewise.
(nonoverlapping_memrefs_p): Likewise.
* alias.h (compare_base_decls): Declare.
2015-12-08 Jan Hubicka <>
PR ipa/61886
* ipa-visibility.c (function_and_variable_visibility): Fix vtable
rewritting guard.
2015-12-08 Jan Hubicka <>
PR ipa/61886
PR middle-end/25140
* ipa-reference.c (ipa_reference_get_not_read_global,
ipa_reference_get_not_read_global): Fix WRT aliases.
(is_improper): Break out from ...
(is_proper_for_analysis): ... here; fix WRT aliases.
(analyze_function, generate_summary,
ipa_reference_read_optimization_summary): Use ipa_reference_var_uid.
* ipa-refrence.h (ipa_reference_var_uid): New inline.
* tree-ssa-alias.c: Revert my accidental previous commit.
call_may_clobber_ref_p_1): Use ipa_reference_var_uid.
2015-12-09 Andreas Tobler <>
* config/rs6000/freebsd64.h: Remove the redefinition of WCHAR_TYPE.
2015-12-09 Aditya Kumar <>
Sebastian Pop <>
* graphite-optimize-isl.c: Include isl/ast_build.h
(optimize_isl): Set several isl_options_set_* options.
2015-12-09 Aditya Kumar <>
Sebastian Pop <>
* graphite-sese-to-poly.c (pdr_add_memory_accesses): Iterate in
the same order as adding data reference access functions.
2015-12-09 Aditya Kumar <>
Sebastian Pop <>
* graphite-optimize-isl.c (optimize_isl): Improve dump message.
2015-12-09 Marek Polacek <>
PR tree-optimization/66949
* tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Don't call
single_non_singleton_phi_for_edges to get the PHI from
factor_out_conditional_conversion. Use NULL_TREE instead of NULL.
(factor_out_conditional_conversion): Adjust declaration. Make it
return the newly-created PHI.
2015-12-09 James Greenhalgh <>
* config/aarch64/aarch64-protos.h
(aarch64_cannot_change_mode_class): Bring back.
* config/aarch64/aarch64.c
(aarch64_cannot_change_mode_class): Likewise.
* config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Likewise.
* config/aarch64/ (aarch64_movdi_<mode>low): Use
zero_extract rather than truncate.
(aarch64_movdi_<mode>high): Likewise.
2015-12-09 Jakub Jelinek <>
PR tree-optimization/68786
* tree-if-conv.c: Include builtins.h.
(predicate_mem_writes): Put result of get_object_alignment (ref)
into second argument's value.
* tree-vect-stmts.c (vectorizable_mask_load_store): Put minimum
pointer alignment into second argument's value.
* tree-data-ref.c (get_references_in_stmt): Use value of second
argument for build_aligned_type, and only the type to build
a zero second argument for MEM_REF.
* internal-fn.c (expand_mask_load_optab_fn,
expand_mask_store_optab_fn): Likewise.
2015-12-09 Richard Biener <>
PR tree-optimization/68583
* tree-if-conv.c (if_convertible_phi_p): Drop
flag_tree_loop_if_convert_stores check in favor of the
existing any_mask_load_store check.
(insert_gimplified_predicates): Likewise.
(combine_blocks): Likewise.
(tree_if_conversion): Likewise.
(ifcvt_memrefs_wont_trap): Properly check
flag_tree_loop_if_convert_stores in all places that can end
up introducing store-data-races.
(if_convertible_gimple_assign_stmt_p): Remove restriction
on flag_tree_loop_if_convert_stores for stores we can if-convert
without introducing store-data-races. Force versioning for
all if-converted stores.
2015-12-09 Tom de Vries <>
PR tree-optimization/68716
* tree-ssa-structalias.c (find_func_clobbers): Fix handling of
2015-12-09 Martin Liska <>
* hash-traits.h (struct typed_delete_remove): New function.
(typed_delete_remove ::remove): Likewise.
* tree-ssa-loop-ivopts.c (struct iv_common_cand): Replace
auto_vec with vec.
(record_common_cand): Replace XNEW with operator new.
2015-12-09 Martin Liska <>
* tree-if-conv.c (ifcvt_local_dce): Replace vec with auto_vec.
2015-12-09 Martin Liska <>
PR ipa/68790
* ipa-icf.c (sem_function::param_used_p): Return true
if ipa_node_params_sum equals to NULL.
2015-12-09 Richard Biener <>
PR tree-optimization/68583
* tree-if-conv.c (ifc_dr): Make flags bool, add w_unconditionally
flag and rename predicates to w_predicate, rw_predicate and
(hash_memrefs_baserefs_and_store_DRs_read): Adjust. Compute
unconditionally written separately from read or written.
(ifcvt_memrefs_wont_trap): Properly treat reads.
(ifcvt_could_trap_p): Inline ...
(if_convertible_gimple_assign_stmt_p): ... here. Refactor
to avoid code duplication.
(if_convertible_loop_p_1): Adjust and properly initialize
2015-12-09 Richard Biener <>
* tree-vect-stmts.c (vectorizable_load): Set new vinfo only
if it was not yet set.
* tree-vectorizer.h (set_vinfo_for_stmt): Assert we don't
overwrite an existing entry.
2015-12-09 Chung-Lin Tang <>
* c-family/c-omp.c (c_finish_oacc_wait): Remove add_stmt() call.
* c/c-parser.c (c_parser_oacc_wait): Add add_stmt() call.
* cp/parser.c (cp_parser_oacc_wait): Add finish_expr_stmt() call.
2015-12-08 Jan Hubicka <>
PR ipa/61886
* symtab.c (symtab_node::equal_address_to): New parameter
* cgraph.h (symtab_node::equal_address_to): Update prototype.
2015-12-08 DJ Delorie <>
* config/rx/rx.opt (-mjsr): Add.
* config/rx/ (rx_call_operand): Avoid overflowing
calls when -mjsr.
* config/rx/rx.c (rx_function_ok_for_sibcall): Likewise for
overflowing jumps.
* doc/invoke.texi (-mjsr): Document it.
2015-12-08 Jan Hubicka <>
PR ipa/61886
* lto-streamer.h (lto_symtab_merge_decls, lto_symtab_merge_symbols,
lto_symtab_prevailing_decl): MOve to lto-symtab.h.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Check that
DECL_ABSTRACT_ORIGIN is not error_mark_node.
2015-12-08 David Malcolm <>
* tree-nested.c (convert_tramp_reference_stmt): Fix indentation.
2015-12-08 David Malcolm <>
* tree-ssa-loop-unswitch.c (tree_unswitch_outer_loop): Fix
2015-12-08 Jan Hubicka <>
PR ipa/61886
* lto-cgraph.c (compute_ltrans_boundary): Add transparent alias targets
into the boundary.
2015-12-08 Jan Hubicka <>
PR ipa/61886
* varpool.c (varpool_node::get_availability): Recurse only on
weakrefs with definition in the target.
(symbol_table::remove_unreferenced_decls): Keep aliases in the boundary.
2015-12-08 Jan Hubicka <>
PR ipa/61886
* ipa-visibility.c (can_replace_by_local_alias): Look through
transparent aliases; refuse weakrefs.
(update_visibility_by_resolution_info): Skip transparent aliases in the
analysis part
2015-12-08 Jan Hubicka <>
PR ipa/61886
* symtab.c (symtab_node::verify_base): Fix thinko in a conditional.
(symtab_node::noninterposable_alias): Do not accept transparent
2015-12-08 Nathan Sidwell <>
* config/nvptx/nvptx.c (decl_chunk_size, decl_chunk_mode,
decl_offset, init_part, object_size, object_finished): Replace
with ...
(struct init_frag): ... this new struct variable.
(begin_decl_field, output_decl_chunk): Replace with ...
(output_init_frag): ... this new function.
(nvptx_assemble_value): Reimplement.
(nvptx_assemble_integer, nvptx_output_skip): Adjust.
(nvptx_assemble_decl_begin, nvptx_assemble_decl_end): Adjust.
(nvptx_output_aligned_decl): Call nvptx_assemble_decl_end.
2015-12-08 Eric Botcazou <>
PR middle-end/68291
PR middle-end/68292
* cfgexpand.c (set_rtl): Always accept mode mismatch for SSA names
with BLKmode promoted mode based on RESULT_DECLs.
2015-12-08 Uros Bizjak <>
PR target/68701
* config/i386/i386.c (ix86_option_override_internal): Enable
-maccumulate-outgoing-args when %ebp is fixed due to stack
realignment requirements.
2015-12-08 Tom de Vries <>
PR tree-optimization/68640
* omp-low.c (install_var_field): Clear the restrict qualifier on the var
2015-12-08 Kirill Yukhin <>
* config/i386/ (define_insn "<avx512>_vec_dup<mode>_1"): Fix
assembler to make source always 128bit.
2015-12-08 Jakub Jelinek <>
PR c/48088
PR c/68657
* common.opt (Wframe-larger-than=): Add Warning.
* opts.h (control_warning_option): Add ARG argument.
* opts-common.c (cmdline_handle_error): New function.
(read_cmdline_option): Use it.
(control_warning_option): Likewise. Add ARG argument.
If non-NULL, decode it if needed and pass through
to handle_generated_option. Handle CLVC_ENUM like
* opts.c (common_handle_option): Adjust control_warning_option
(enable_warning_as_error): Likewise.
2015-12-08 Matthew Wahab <>
* config/aarch64/aarch64-options-extensions.def: Remove
AARCH64_FL_RDMA from "fp" and "simd". Remove "pan", "lor",
* config/aarch64/aarch64.h (AARCH64_FL_PAN): Remove.
(AARCH64_FL_LOR): Remove.
(AARCH64_FL_RDMA): Remove.
(AARCH64_FL_V8_1): New.
and AARCH64_FL_RDMA with AARCH64_FL_V8_1.
(AARCH64_ISA_RDMA): Replace AARCH64_FL_RDMA with AARCH64_FL_V8_1.
* doc/invoke.texi (AArch64 -march): Rewrite initial paragraph and
section on -march=native. Group descriptions of permitted
architecture names together. Expand description of
(AArch64 -mtune): Slightly rework section on -march=native.
(AArch64 -mcpu): Slightly rework section on -march=native.
(AArch64 Feature Modifiers): Remove "pan", "lor" and "rdma".
State that -march=armv8.1-a enables "crc" and "lse".
2015-12-08 Eric Botcazou <>
* doc/invoke.texi (SPARC options): Fix typo.
2015-12-08 Eric Botcazou <>
* config/ia64/ia64.c (ia64_emit_probe_stack_range): Adjust.
(output_probe_stack_range): Rotate the loop and simplify.
2015-12-08 Uros Bizjak <>
* config/i386/i386.c (ix86_emit_swsqrtsf): Cleanup
infinity filterning code.
2015-12-08 Ilya Enkovich <>
PR tree-optimization/68766
* tree-vectorizer.c (vectorize_loops): Check for
if-converted loops when debug counters are used.
2015-12-07 DJ Delorie <>
* config/rl78/ (Wfr): Change to be a non-memory
* config/rl78/rl78-protos.h (rl78_one_far_p): Declare.
* config/rl78/rl78.c (rl78_one_far_p): Define.
* config/rl78/rl78-virt (movqi_virt): Fix far memory
(movhi_virt): Likewise.
(zero_extendqihi2_virt): Likewise.
(extendqihi2_virt): Likewise.
(add<mode>3_virt): Likewise.
(sub<mode>3_virt): Likewise.
(andqi3_virt): Likewise.
(iorqi3_virt): Likewise.
(xorqi3_virt): Likewise.
* config/rl78/ (bf,br): Use long forms to avoid reloc
overflow in large files.
2015-12-07 Eric Botcazou <>
PR target/63668
* doc/invoke.texi (SPARC options): Document -mstd-struct-return.
* config/sparc/sparc.c (sparc_struct_value_rtx): Minor tweaks.
* config/sparc/sparc.h (CALL_REALLY_USED_REGISTERS): Define.
* config/sparc/sparc.opt (mstd-struct-return): Accept negative.
2015-12-07 Steve Ellcey <>
* reorg.c (optimize_skip): Do not put frame related instructions
in annulled delay slots.
(steal_delay_list_from_target): Ditto.
(fill_slots_from_thread): Ditto.
2015-12-07 Evandro Menezes <>
* config/aarch64/aarch64-cores.def: Use the Exynos M1 sched model.
* config/aarch64/ Include "".
* config/arm/ Likewise.
* config/arm/ New file.
2015-12-07 Jan Hubicka <>
* fold-const.c (operand_equal_p): Drop flag_strict_aliasing check.
2015-12-07 Nathan Sidwell <>
* config//nvptx/nvptx.c (write_return): New.
(write_fn_proto, nvptx_declare_function_name): Call it.
2015-12-07 Jan Hubicka <>
PR ipa/61886
* symtab.c (ultimate_transparent_alias_target): New inline function.
(symbol_table::assembler_names_equal_p): New method; break out from ...
(symbol_table::decl_assembler_name_equal): ... here.
(symbol_table::change_decl_assembler_name): Also update names and
translation links of transparent aliases.
(symtab_node::dump_base): Dump transparent_alias.
(symtab_node::verify_base): Implement basic transparent alias
(symtab_node::make_decl_local): Support localization of weakrefs;
recurse to transparent aliases; set TREE_STATIC.
(symtab_node::ultimate_alias_target_1): Handle visibility of
transparent aliases.
(symtab_node::resolve_alias): New parmaeter transparent; handle
transparent aliases; recurse to aliases of aliases to fix comdat
(symtab_node::get_partitioning_class): Handle transparent aliases.
* ipa-visibility.c (cgraph_externally_visible_p,
varpool_node::externally_visible_p): Visibility of transparent alias
depends on its target.
(function_and_variable_visibility): Do not tweak visibility of
transparent laiases.
(function_and_variable_visibility): Likewise.
* ipa.c (symbol_table::remove_unreachable_nodes): Clear
transparent_alias flag.
* alias.c (cgraph_node::create_alias, cgraph_node::get_availability):
Support transparent aliases.
* cgraph.h (symtab_node): Update prototype of resolve_alias;
add transparent_alias flag.
(symbol_table: Add assembler_names_equal_p.
(symtab_node::real_symbol_p): Skip transparent aliases.
* cgraphunit.c (cgraph_node::reset): Reset transparent_alias flag.
(handle_alias_pairs): Set transparent_alias for weakref.
(cgraph_node::assemble_thunks_and_aliases): Do not asemble transparent
* lto-cgraph.c (lto_output_node): When outputting same_comdat_group
skip symbols not put into boundary; stream transparent_alias.
(lto_output_varpool_node): Likewise.
(input_overwrite_node, input_varpool_node): Stream transparent alias.
* varpool.c (ctor_for_folding, varpool_node::get_availability,
symbol_table::remove_unreferenced_decls): Handle transparent aliase.
(varpool_node::create_alias): Set transparent_alias.
2015-12-07 Eric Botcazou <>
PR middle-end/68291
PR middle-end/68292
* cfgexpand.c (set_rtl): Always accept PARALLELs with BLKmode for
SSA names based on RESULT_DECLs.
* function.c (expand_function_start): Do not create BLKmode REGs
for GIMPLE registers when coalescing is enabled.
2015-12-07 Bernd Edlinger <>
* final.c (shorten_branches): Fix check for basic asm.
* ipa-icf-gimple.c (func_checker::compare_gimple_asm): Add check for
basic asm.
2015-12-07 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_output_call_insn): Emit trap after no
return call.
2015-12-07 David Malcolm <>
* pretty-print.c (text_info::set_range): Rename to...
(text_info::set_location): ...this, converting 2nd param
from source_range to a location_t.
* pretty-print.h (text_info::set_location): Convert
from inline function to external definition.
(text_info::set_range): Delete.
2015-12-07 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Look inside
complex and vector types. Cope with packed structs.
2015-12-07 Kirill Yukhin <>
PR target/68627
* config/i386/ Make 'v' alternative work on 'avx512f' ISA only.
Force destination to 512 bits register.
2015-12-07 Kirill Yukhin <>
PR target/68633
* config/i386/ (define_insn "kunpckhi"): Fix operands order.
(define_insn "kunpcksi"): Ditto.
(define_insn "kunpckdi"): Ditto.
2015-12-06 Kaz Kojima <>
* config/sh/ (rsqrtsf2): Adjust for canonical form with unspec.
2015-12-06 Victoria Stepanyan <>
* common/config/i386/i386-common.c
(ix86_handle_option): Handle clzero.
* config.gcc (i[34567]86-*-*): Add clzerointrin.h,
(x86_64-*-*): Likewise.
* config/i386/clzerointrin.h: New header.
* config/i386/cpuid.h (bit_CLZERO): Define.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect
CLZERO support.
* config/i386/i386.opt (clzero): New.
* config/i386/i386-c.c: Define __CLZERO__ if needed.
* config/i386/i386.c (ix86_target_string): Define -mclzero option.
(ix86_option_override_internal): Handle new option.
(processor_alias_table): Added PTA_CLZERO.
(ix86_valid_target_attribute_inner_p): Add OPT_mclzero.
(ix86_builtins): Add IX86_BUILTIN_CLZERO, IX86_BUILTIN_CLZERO.
(ix86_expand_builtin): Handle IX86_BUILTIN_CLZERO and
IX86_BUILTIN_CLZERO built-ins.
* config/i386/i386.h (TARGET_CLZERO): New.
* config/i386/ (unspecv): Add UNSPEC_CLZERO.
(clzero): New pattern.
(clzero_<mode>): New pattern.
* config/i386/x86intrin.h: Include clzerointrin.h.
* doc/extend.texi: Document clzero builtins.
* doc/invoke.texi: Document -mclzero option.
2015-12-05 Jan Hubicka <>
* ipa-icf.c (sem_function::merge): Check that local_original exists.
2015-12-05 David Edelsohn <>
PR target/68609
* config/rs6000/rs6000-protos.h (rs6000_emit_swsqrt): Rename and add
bool arguement.
* config/rs6000/rs6000.c (rs6000_emit_swsqrt): Rename. Add
non-reciporcal path.
* config/rs6000/ (rsqrt<mode>2): Call new function name.
(sqrt<mode>2): Replace define_insn with define_expand that may call
2015-12-04 Aditya Kumar <>
Sebastian Pop <>
* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user):
Improve debug.
(get_rename_from_scev): Check that all the ops in an expression
have their uses dominated by corresponding defs.
2015-12-04 Aditya Kumar <>
Sebastian Pop <>
PR tree-optimization/68693
* graphite-scop-detection.c (dot_all_sese): New
(dot_all_scops_1): Renamed to dot_all_sese.
(dot_all_scops): Removed.
(dot_sese): New.
(dot_cfg): New.
(scop_detection::get_nearest_dom_with_single_entry): Check that
preds are from different loop levels.
(scop_detection::get_nearest_pdom_with_single_exit): Check that
succs are from different loop levels.
(scop_detection::print_sese): Inlined.
(scop_detection::print_edge): New.
(scop_detection::merge_sese): Added dumps.
* graphite.h: Add declarations.
2015-12-04 James Greenhalgh <>
* config/aarch64/ (add<mode>3_pluslong): Add register
2015-12-04 Vladimir Makarov <>
PR rtl-optimization/68349
* lra-eliminations.c (move_plus_up): New function.
(lra_eliminate_regs_1): Use the function.
2015-12-04 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): New, replacing ...
(init_output_initializer): ... this.
(nvptx_output_aligned_decl, nvptx_asm_declare_constant_name,
nvptx_declare_object_name, nvptx_assemble_undefined_decl): Use
2015-12-04 Dmitry Vyukov <>
* sancov.c: New file.
* (OBJS): Add sancov.o.
* invoke.texi (-fsanitize-coverage=trace-pc): Describe.
* passes.def (sancov_pass): Add.
* tree-pass.h (sancov_pass): Add.
* common.opt (-fsanitize-coverage=trace-pc): Add.
* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_PC): Add.
* builtins.def (DEF_SANITIZER_BUILTIN): Enable for
2015-12-04 Eric Botcazou <>
PR middle-end/65958
* config/arm/ (unspec): Remove UNSPEC_PROBE_STACK_RANGE.
* config/arm/ (probe_stack_range): Adjust.
* config/aarch64/ (unspec): Remove UNSPEC_PROBE_STACK_RANGE.
(probe_stack_range_<PTR:mode>): Adjust.
2015-12-04 David Malcolm <>
* convert.c (convert_to_real_1): When converting from a
REAL_TYPE, preserve the location of EXPR in the result.
* tree.c (get_pure_location): Make non-static.
(set_source_range): Return the resulting location_t.
(make_location): New function.
* tree.h (get_pure_location): New decl.
(get_finish): New inline function.
(set_source_range): Convert return type from void to location_t.
(make_location): New decl.
2015-12-04 Jakub Jelinek <>
PR c/68656
* toplev.c (init_asm_output): Pass UNKNOWN_LOCATION instead of
input_location to inform.
(process_options): Use warning_at (UNKNOWN_LOCATION instead of
warning ( and error_at (UNKNOWN_LOCATION instead of error (.
Pass UNKNOWN_LOCATION instead of input_location to fatal_error.
2015-12-04 Jan Hubicka <>
* ipa-inline.c (can_inline_edge_p) Use merged_comdat.
* cgraphclones.c (cgraph_node::create_clone): Use merged_comdat.
* cgraph.c (cgraph_node::dump): Dump merged_comdat.
* ipa-icf.c (sem_function::merge): Drop merged_comdat when merging
comdat and non-comdat.
* cgraph.h (cgraph_node): Rename merged to merged_comdat.
* ipa-inline-analysis.c (simple_edge_hints): Check both merged_comdat
and icf_merged.
2015-12-04 Segher Boessenkool <>
* config/rs6000/ (cstore<mode>4_unsigned): Use gpc_reg_operand
instead of register_operand. Remove empty constraints. Use std::swap.
(cstore_si_as_di, cstore<mode>4_signed_imm,
cstore<mode>4_unsigned_imm, cstore<mode>4 for GPR): Use
gpc_reg_operand instead of register_operand.
(cstore<mode>4 for FP): Use gpc_reg_operand instead of
register_operand. Remove empty constraints.
2015-12-04 Nick Clifton <>
* config.gcc (extra_gcc_objs): Define for MSP430.
* common/config/msp430/msp430-common.c (msp430_handle_option):
Pass both -mmcu and -mcpu on to the back end if they are both defined.
* config/msp430/msp430.c (hwmult_name): New function.
(msp430_option_override): If an unrecognised MCU name is
detected only warn if the user has not provided suitable
-mhwmult and -mcpu options. Use msp430_warn_mcu to control
warning messages. Generate warnings about conflicts between
-mmcu and -mcpu and -mhwmult options.
If neither -mcpu nor -mmcu have been specified but -mhwmult=
f5series has the select the 430X isa.
(msp430_no_hwmult): If -mmcu has not been specified and
msp430_hwmult_type is AUTO then return true.
* config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Define.
(LIB_SPEC): Add hardware multiply library selection.
* config/msp430/t-msp430: Delete hardware multiply multilibs.
Add rule to build driver-msp430.o
* config/msp430/driver-msp430.c: New file.
* config/msp430/msp430.opt (warn-mcu): New option.
* doc/invoke.texi: Update description of -mhwmult=auto.
Document -mwarn-mcu option.
2015-12-04 Segher Boessenkool <segher&>
* config/rs6000/ (cstore<mode>4_signed): New expander.
(cstore<mode>4): Call it.
2015-12-04 Jakub Jelinek <>
* tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.
PR tree-optimization/68680
* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
BUILT_IN_ALLOCA{,_WITH_ALIGN}. Don't check for __builtin_alloca
by name.
PR tree-optimization/68671
* tree-ssa-reassoc.c (maybe_optimize_range_tests): For basic
blocks starting with the successor of first bb we've modified
and ending with last_bb call reset_flow_sensitive_info_in_bb.
2015-12-04 Jeff Law <>
* tree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean
indicating if a gimple conditional was optimized to true/false.
(reassociate_bb): Bubble up return value from
(do_reassoc): Similarly, but for reassociate_bb.
(execute_reassoc): Return TODO_cleanup_cfg as needed.
2015-12-04 Kyrylo Tkachov <>
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Do not alter target_flags due to TARGET_GENERAL_REGS_ONLY_P.
* doc/invoke.texi (AArch64 options): Mention that -mgeneral-regs-only
does not affect the assembler directives.
2015-12-04 Dominik Vogt <>
* config/s390/s390.c (s390_asm_file_start): Implement hook function to
emit .machine and .machinemode to the top of the assembler file.
(TARGET_ASM_FILE_START): Provide target hook.
(s390_asm_output_machine_for_arch): Protect with
2015-12-04 Dominik Vogt <>
* config/s390/s390.opt (s390_arch_string): Remove.
(s390_tune_string): Likewise.
(s390_cost_pointer): Add Variable.
(s390_tune_flags): Add TargetVariable.
(s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp),
(mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx),
(mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=),
(mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack),
(mwarn-framesize=): Save option.
(mno-stack-guard, mno-stack-guard): New option.
(mwarn-dynamicstack): Allow mno-warn-dynamicstack.
(mwarn-framesize=): Convert to UInteger (negative values are rejected
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting
macros changeable through the GCC target pragma into a separate
(s390_cpu_cpp_builtins): Likewise.
(s390_pragma_target_parse): New function, implement GCC target pragma
if enabled.
(s390_register_target_pragmas): Register s390_pragma_target_parse if
* common/config/s390/s390-common.c (s390_handle_option):
Move setting s390_arch_flags to s390.c.
Remove s390_tune_flags.
Allow 0 as argument to -mstack-size (switch to default value).
Allow 0 as argument to -mstack-guard (switch off).
Remove now unnecessary explicit parsing code for -mwarn-framesize.
* config/s390/s390-protos.h (s390_handle_option): Export.
(s390_valid_target_attribute_tree): Export.
(s390_reset_previous_fndecl): Export.
* config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start
and end of HTM and VX builtins.
(s390_asm_output_function_prefix): Declare hook.
(s390_asm_declare_function_size): Likewise.
* config/s390/s390-builtins.h (B_GROUP): Use macro.
* config/s390/s390-opts.h: Add comment about processor_type usage.
* config/s390/vecintrin.h: Use vector definitions even if __VEC__ is
(vec_all_nan): Rewrite as macro using statement expressions to avoid
that the vector keyword needs to be defined when including the file.
(vec_all_numeric): Likewise.
(vec_any_nan): Likewise.
(vec_any_numeric): Likewise.
* config/s390/s390.c (s390_previous_fndecl): New static variable.
(s390_set_current_function): New function.
(s390_cost): Wrapper macro to allow defining the cost table pointer in
the options file.
(processor_table): Table for march= and mtune= parsing.
(s390_init_builtins): Enable all builtins and types unconditionally.
(s390_expand_builtin): Generate an error message if builtin is not
supported by current options.
Correct an error message.
(s390_function_specific_restore): New function to set s390_cost.
(s390_asm_output_machine_for_arch): New function for emitting .machine
and .machinmode directives to the assembler file.
(s390_asm_output_function_prefix): Likewise.
(s390_asm_declare_function_size): Likewise.
(s390_asm_output_function_label): Add mdebug output for feature testing.
(s390_option_override): Move implementation into internal function.
(s390_option_override_internal): Likewise.
Implement option overriding based on current options.
(s390_valid_target_attribute_inner_p): New function implementing target
attribute logic.
(s390_valid_target_attribute_tree): Likewise.
(s390_valid_target_attribute_p): Likewise.
(s390_reset_previous_fndecl): Likewise.
(s390_set_current_function): Likewise.
(TARGET_SET_CURRENT_FUNCTION): Provide target hook function.
* doc/extend.texi: S390: Document target attribute and pragma.
* Regenerated.
* configure: Regenerated.
* S390: Check for .machinemode and .machine in gas.
S390: Check for architecture modifiers support in gas.
2015-12-04 Kirill Yukhin <>
* doc/extend.texi ("simd"): Describe new flags.
2015-12-04 Ilya Enkovich <>
* config/i386/ (<avx512>_store<mode>_mask): Fix
operand checked for alignment.
2015-12-04 Nathan Sidwell <>
* config/nvptx/nvptx.c (write_one_arg): Deal with prologue
emission too. Change 'no_arg_types' to 'prototyped'.
(write_fn_proto): Use write_one_arg for stdarg, static chain &
(nvptx_declare_function_name): Use write_one_arg for prologue copies.
2015-12-04 Richard Biener <>
* tree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom
member and initialize it.
(sccvn_dom_walker::after_dom_children): Reset unreachable_dom
if necessary.
(sccvn_dom_walker::before_dom_children): If unreachable_dom
is set BB is not reachable either. Set unreachable_dom
if not set and BB is unreachable.
2015-12-04 Richard Biener <>
* bitmap.c (bitmap_find_bit): Guard the bitmap descriptor
2015-12-04 Eric Botcazou <>
PR middle-end/65958
* gimplify.c (struct gimplify_ctx): Turn boolean fields into 1-bit
fields, add keep_stack and reorder them.
(gimplify_bind_expr): Save gimplify_ctxp->keep_stack on entry then
set it to false. Do not insert a stack save/restore pair if it has
been set to true by the gimplification of the statements.
Restore it to the saved value on exit if it is still false.
(gimplify_vla_decl): Do not set gimplify_ctxp->save_stack here.
(gimplify_call_expr) <BUILT_IN_ALLOCA[_WITH_ALIGN]>: New case. Set
either save_stack or keep_stack depending on CALL_ALLOCA_FOR_VAR_P.
* doc/extend.texi (Variable Length): Document new behavior.
* doc/generic.texi (Blocks): Document new handling of VLAs.
2015-12-04 Eric Botcazou <>
Tristan Gingold <>
PR middle-end/65958
* config/aarch64/aarch64-protos.h (aarch64_output_probe_stack-range):
* config/aarch64/ Declare UNSPECV_BLOCKAGE and
(blockage): New instruction.
(probe_stack_range_<PTR:mode>): Likewise.
* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): New
(aarch64_output_probe_stack_range): Likewise.
(aarch64_expand_prologue): Invoke aarch64_emit_probe_stack_range if
static builtin stack checking is enabled.
* config/aarch64/aarch64-linux.h (STACK_CHECK_STATIC_BUILTIN):
Define to 1.
2015-12-04 Kyrylo Tkachov <>
PR target/68214
* config/arm/ (*call_mem): Delete pattern.
(*call_value_mem): Likewise.
* config/arm/arm.c (output_call_mem): Delete.
* config/arm/arm-protos.h (output_call_mem): Delete prototype.
2015-12-04 Bin Cheng <>
* config/aarch64/ (atomic_store<mode>): Use predicate
2015-12-04 Jakub Jelinek <>
PR target/68655
* config/i386/i386.c (canonicalize_vector_int_perm): New function.
(expand_vec_perm_1): Use it and recurse if everything else
failed. Use nd.perm instead of perm2.
(expand_vec_perm_even_odd_1): If testing_p, use gen_raw_REG
instead of gen_lowpart for the target.
(ix86_expand_vec_perm_const_1): Use canonicalize_vector_int_perm
and recurse if everything else failed.
2015-12-04 Richard Biener <>
PR middle-end/68636
* builtins.c (get_pointer_alignment_1): Take care of byte to
bit alignment computation overflow.
2015-12-04 Richard Biener <>
PR middle-end/67438
* match.pd: Guard ~X cmp ~Y -> Y cmp X and the variant with
a constant with single_use.
2015-12-04 Bin Cheng <>
Jiong Wang <>
* config/aarch64/aarch64.c (aarch64_legitimize_address): legitimize
address expressions like Ra + Rb + CONST and Ra + Rb<<SCALE + CONST.
2015-12-03 Jan Hubicka <>
* alias.c (alias_set_subset_of, alias_sets_must_conflict_p):
Add short circuit for !flag_strict_aliasing
(get_alias_set): Remove flag_strict_aliasing check.
(new_alias_set): Likewise.
2015-12-03 Evandro Menezes <>
* config/aarch64/aarch64-cores.def: Use the Exynos M1 cost model.
* config/aarch64/aarch64.c (exynosm1_addrcost_table): New variable.
(exynosm1_regmove_cost): Likewise.
(exynosm1_vector_cost): Likewise.
(exynosm1_tunings): Likewise.
* config/arm/aarch-cost-tables.h (exynosm1_extra_costs): Likewise.
* config/arm/arm.c (arm_exynos_m1_tune): Likewise.
2015-12-03 Alan Lawrence <>
Richard Biener <>
* cfgexpand.c (pass_expand::execute): Replace call to
redirect_edge_var_map_destroy with redirect_edge_var_map_empty.
* tree-ssa.c (delete_tree_ssa): Likewise.
* function.c (set_cfun): Call redirect_edge_var_map_empty.
* passes.c (execute_one_ipa_transform_pass, execute_one_pass): Likewise.
* tree-ssa.h (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.
* tree-ssa.c (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.
2015-12-03 Jeff Law <>
PR tree-optimization/68599
* loop-init.c (rtl_loop_init): Set LOOPS_HAVE_RECORDED_EXITS
in call to loop_optimizer_init.
* loop-iv.c (get_simple_loop_desc): Only allow unsafe loop
optimization to drop the assumptions/infinite notations if
the loop has a single exit.
2015-12-03 Richard Sandiford <>
* doc/md.texi (vec_load_lanes@var{m}@var{n}): Document that
the pattern cannot FAIL.
(vec_store_lanes@var{m}@var{n}): Likewise.
(maskload@var{m}@var{n}): Likewise.
(maskstore@var{m}@var{n}): Likewise. Fix a cut-&-paste error
in the name of the pattern.
(rsqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode and that all operands have that mode.
(fmin@var{m}3, fmax@var{m}3): Likewise. Document that the
pattern cannot FAIL.
(sqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode, that all operands have that mode, and that
the patterns cannot FAIL. Remove previous documentation referring
to @code{double} and @code{float}.
(fmod@var{m}3, remainder@var{m}3, cos@var{m}2, sin@var{m}2)
(sincos@var{m}3, log@var{m}2, pow@var{m}3, atan2@var{m}3)
(copysign@var{m}3): Likewise.
(exp@var{m}2): Likewise. Explicitly state the base.
(floor@var{m}2): As for sqrt@var{m}2, but also specify the operands.
(btrunc@var{m}2, rint@var{m}2): Likewise.
(round@var{m}2): Likewise. Fix incorrect description of rounding
(ceil@var{m}2): As for round@var{m}2.
(nearbyint@var{m}2): As for floor@var{m}2, but also mention that
the instruction must not raise an inexact condition.
(scalb@var{m}3): Document previously-undocumented pattern
(ldexp@var{m}3, tan@var{m}2, asin@var{m}2, acos@var{m}2)
(atan@var{m}2, expm1@var{m}2, exp10@var{m}2, exp2@var{m}2)
(log1p@var{m}2, log10@var{m}2, log2@var{m}2, logb@var{m}2)
(significand@var{m}2): Likewise.
(ffs@var{m}2): Fix the description of the modes, so that operand 1 has
mode m and operand 0 is defined more freely. Document that @var{m}
can be a scalar or vector integer mode and that the pattern is not
allowed to FAIL.
(clz@var{m}2, ctz@var{m}2, popcount@var{m}2, parity@var{m}2): Likewise.
(clrsb@var{m}2): Likewise, except that the description of the
mode was missing in this case.
2015-12-03 Richard Sandiford <>
* internal-fn.def (RSQRT): New function.
* optabs.def (rsqrt_optab): New optab.
* doc/md.texi (rsqrtM2): Document.
* target.def (builtin_reciprocal): Replace gcall argument with
a function decl. Restrict hook to machine functions.
* doc/tm.texi: Regenerate.
* targhooks.h (default_builtin_reciprocal): Update prototype.
* targhooks.c (default_builtin_reciprocal): Likewise.
* tree-ssa-math-opts.c: Include internal-fn.h.
(internal_fn_reciprocal): New function.
(pass_cse_reciprocals::execute): Call it, and build a call to an
internal function on success. Only call targetm.builtin_reciprocal
for machine functions.
* config/aarch64/aarch64-protos.h (aarch64_builtin_rsqrt): Remove
second argument.
* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin_rsqrt):
Rename aarch64_rsqrt_<mode>2 to rsqrt<mode>2.
(aarch64_builtin_rsqrt): Remove md_fn argument and only handle
machine functions.
* config/aarch64/aarch64.c (use_rsqrt_p): New function.
(aarch64_builtin_reciprocal): Replace gcall argument with a
function decl. Use use_rsqrt_p. Remove optimize_size check.
Only handle machine functions. Update call to aarch64_builtin_rsqrt.
(aarch64_optab_supported_p): New function.
* config/aarch64/ (aarch64_rsqrt_<mode>2): Rename to...
(rsqrt<mode>2): ...this.
* config/i386/i386.c (use_rsqrt_p): New function.
(ix86_builtin_reciprocal): Replace gcall argument with a
function decl. Use use_rsqrt_p. Remove optimize_insn_for_size_p
check. Only handle machine functions.
(ix86_optab_supported_p): Handle rsqrt_optab.
* config/rs6000/rs6000.c (TARGET_OPTAB_SUPPORTED_P): Define.
(rs6000_builtin_reciprocal): Replace gcall argument with a
function decl. Remove optimize_insn_for_size_p check.
Only handle machine functions.
(rs6000_optab_supported_p): New function.
2015-12-03 Bernd Schmidt <>
PR target/68471
PR target/68472
* config/i386/i386.c (ix86_mitigate_rop): Don't call
compute_bb_for_insn again. Call df_insn_rescan_all.
* config/i386/ (set_got_rex64): Override modrm_class.
* regrename.c (build_def_use): Ignore stack regs if regstack_completed.
2015-12-03 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (npvptx_section_from_addr_space): Delete.
* config/nvptx/nvptx.c (enum nvptx_data_area): New.
(nvptx_option_override): Set data ares for worker vars.
(nvptx_addr_space_from_sym): Delete.
(nvptx_encode_section_info): New.
(section_for_sym, section_for_decl): New.
(nvptx_maybe_convert_symbolic_operand): Get data area from symbol flags.
(nvptx_section_from_addr_space): Delete.
(nvptx_section_for_decl): Delete.
(nvptx_output_aligned, nvptx_declare_object_name,
nvptx_assemble_undefined_decl): Use section_for_decl, remove
unnecessary checks.
(nvptx_print_operand): Add 'D', adjust 'A'.
(nvptx_expand_worker_addr): Adjust unspec generation.
* config/nvptx/nvptx.h (ADDR_SPACE_GLOBAL, ADDR_SPACE_SHARED,
(nvptx_register_or_symbolic_operand): Delete.
(cvt_code, cvt_name, cvt_str): Delete.
(convaddr_<cvt_name><mode> [P]): Delete.
(convaddr_<mode> [P]): New.
2015-12-03 Kyrylo Tkachov <>
PR rtl-optimization/68624
* ifcvt.c (noce_try_cmove_arith): Check clobbers of temp regs in both
blocks if they exist and simplify the logic choosing the order to emit
them in.
2015-12-03 Richard Biener <>
PR tree-optimization/66051
* tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction
on load group size. Do not pass in vectorization_factor.
(vect_transform_slp_perm_load): Do not require any permute support.
(vect_build_slp_tree): Do not pass in vectorization factor.
(vect_analyze_slp_instance): Do not compute vectorization
factor estimate. Use vector size instead of vectorization factor
estimate to split store groups for BB vectorization.
2015-12-03 Ilya Enkovich <>
* cfgexpand.c (expand_gimple_stmt_1): Return statement with
DECL as return value is allowed to have NULL bounds.
2015-12-03 Tom de Vries <>
* graphite-isl-ast-to-gimple.c (binary_op_to_tree)
(gcc_expression_from_isl_expr_op): Guard isl_ast_op_zdiv_r usage with
2015-12-03 Richard Biener <>
PR tree-optimization/67800
PR tree-optimization/68333
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Restore
restriction to reduction contexts but allow SLP reductions as well.
(vect_recog_sad_pattern): Likewise.
(vect_recog_widen_sum_pattern): Likewise.
2015-12-03 Richard Biener <>
PR tree-optimization/68639
* tree-vect-data-refs.c (dr_group_sort_cmp): Split groups
belonging to different loops.
(vect_analyze_data_ref_accesses): Likewise.
2015-12-02 Kirill Yukhin <>
* config/i386/ (define_insn "vec_extract_hi_<mode>_maskm"):
Remove "prefix_extra".
(define_insn "vec_extract_hi_<mode>_mask"): New.
(define_insn "vec_extract_hi_<mode>"): Remove masking.
2015-12-02 Jan Hubicka <>
* ipa-pure-const.c (ignore_edge_for_pure_const): New function.
(propagate_pure_const): Use it; fix comments and optimize loops.
2015-12-02 Jan Hubicka <>
* ipa-pure-const.c (ignore_edge): Rename to ...
(ignore_edge_for_nothrow) ... this one; also ignore eges to
interposable functions or ones that can not throw.
(propagate_nothrow): Fix handling of availability.
2015-12-02 Jan Hubicka <>
PR ipa/68184
* cgraphunit.c (cgraph_node::analyze): Set can_throw_external.
2015-12-02 Aditya Kumar <>
Sebastian Pop <>
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle
(gcc_expression_from_isl_expr_op): Same.
2015-12-02 Aditya Kumar <>
Sebastian Pop <>
* graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Check
that insertion point is still in the region.
2015-12-02 Aditya Kumar <>
Sebastian Pop <>
PR tree-optimization/68550
* graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Add dump.
(copy_bb_and_scalar_dependences): Do not code generate loop peeled
2015-12-02 Ulrich Weigand <>
* Check assembler support for R_PPC64_ENTRY relocation.
* configure: Regenerate.
* Regenerate.
* config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p): New
(rs6000_output_function_prologue): Use it instead of checking
cfun->machine->r2_setup_needed. Use internal labels instead of
GNU as local label extension. Handle ELFv2 large code model.
(rs6000_output_mi_thunk): Do not set cfun->machine->r2_setup_needed.
(rs6000_elf_declare_function_name): Handle ELFv2 large code model.
2015-12-02 Jakub Jelinek <>
PR target/68647
* optabs.c (expand_doubleword_popcount, expand_doubleword_parity):
New functions.
(expand_unop): Use them.
2015-12-02 Marek Polacek <>
PR c++/68653
* tree.c (nonnull_arg_p): Allow OFFSET_TYPE.
2015-12-02 Nathan Sidwell <>
* config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New. Absorb
SHUFFLE defines.
(nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust.
2015-12-02 Aditya Kumar <>
Sebastian Pop <>
* graphite-dependences.c (scop_get_reads): Add extra dumps.
(scop_get_must_writes): Same.
(scop_get_may_writes): Same.
(compute_deps): Same.
* graphite-sese-to-poly.c (bounds_are_valid): New.
(pdr_add_data_dimensions): Call bounds_are_valid.
2015-12-02 Aditya Kumar <>
Sebastian Pop <>
* common.opt (flag_loop_optimize_isl): Renamed flag_loop_nest_optimize.
* graphite-poly.c (apply_poly_transforms): Same.
* graphite.c (gate_graphite_transforms): Same.
* toplev.c (process_options): Same.
2015-12-02 Eric Botcazou <>
* config/mips/mips.c (mips_emit_probe_stack_range): Adjust.
(mips_output_probe_stack_range): Rotate the loop and simplify.
2015-12-02 David Sherwood <>
* config/aarch64/ New pattern.
* config/aarch64/ Likewise.
* config/aarch64/ New unspecs, iterators.
2015-12-02 Pierre-Marie de Rodat <>
* dwarf2out.c (dwar2out_var_location): In addition to notes,
process indirect calls whose target is compile-time known.
Enhance pattern matching to get the SYMBOL_REF they embed.
(gen_subprogram_die): Handle such calls.
* final.c (final_scan_insn): For call instructions, invoke the
var_location debug hook only after the call has been emitted.
2015-12-02 Tom de Vries <>
* gimplify.c (enum gimplify_omp_var_data): Add enum value
(oacc_default_clause): Fix default for scalars in oacc kernels.
(gimplify_adjust_omp_clauses_1): Handle GOVD_MAP_FORCE.
2015-12-02 Tom de Vries <>
* omp-low.c (install_var_field, scan_sharing_clauses): Add and handle
parameter base_pointers_restrict.
(omp_target_base_pointers_restrict_p): New function.
(scan_omp_target): Call scan_sharing_clauses with
base_pointers_restrict arg.
2015-12-02 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (nvptx_output_mov_insn): Declare.
(nvptx_underlying_object_mode): Delete.
* config/nvptx/nvptx.c (nvptx_underlying_object_mode): Delete.
(output_reg): New.
(nvptx_declare_function_name): Use output_reg. Remove punning buffer.
(nvptx_output_mov_insn): New.
(nvptx_print_operand): Separate SUBREG handling, remove 'f' case,
Use output_reg. Merge 't' and 'u' handling.
* config/nvptx/nvptx.h (NVPTX_PUNNING_BUFFER_REGNUM): Delete.
(struct machine_function): Remvoe punning_buffer_size.
(REGISTER_NAMES): Remove %punbuffer.
* config/nvptx/ (UNSPEC_CPLX_LOWPART,
(*mov<mode>_insn [QHSDIM): Remove unnecessary constraints, use
(*mov<mode>_insn [SDFM): Reorder constraints to match integer moc.
Use nvptx_output_mov_insn.
(highpartscsf2, set_highpartscsf2, lowpartscsf2, set_lowpartscsf2):
(mov<mode> [SDCM]): Delete.
2015-12-02 Richard Biener <>
* tree.h (tree_invariant_p): Declare.
* tree.c (tree_invariant_p): Export.
* genmatch.c (dt_simplify::gen_1): For GENERIC code-gen never
create SAVE_EXPRs but reject patterns if we would need to.
2015-12-02 Tom de Vries <>
* tree-ssa-structalias.c (find_func_aliases_for_builtin_call)
(find_func_clobbers, ipa_pta_execute): Handle BUILT_IN_GOACC_PARALLEL.
2015-12-02 Segher Boessenkool <>
* config/rs6000/ (cstore_si_as_di): New expander.
(cstore<mode>4): Use it.
2015-12-02 Richard Biener <>
PR tree-optimization/68625
* tree-cfgcleanup.c (cleanup_tree_cfg_bb): Do not call
(cleanup_tree_cfg_1): First perform cleanup_control_flow_bb
on all BBs, then cleanup_tree_cfg_bb and finally iterate
over the worklist doing both.
2015-12-02 Richard Sandiford <>
PR tree-optimization/68432
* coretypes.h (optimization_type): New enum.
* doc/ (TARGET_OPTAB_SUPPORTED_P): New hook.
* doc/tm.texi: Regenerate.
* target.def (optab_supported_p): New hook.
* targhooks.h (default_optab_supported_p): Declare.
* targhooks.c (default_optab_supported_p): New function.
* predict.h (function_optimization_type): Declare.
(bb_optimization_type): Likewise.
* predict.c (function_optimization_type): New function.
(bb_optimization_type): Likewise.
* optabs-query.h (convert_optab_handler): Define an overload
that takes an optimization type.
(direct_optab_handler): Likewise.
* optabs-query.c (convert_optab_handler): Likewise.
(direct_optab_handler): Likewise.
* internal-fn.h (direct_internal_fn_supported_p): Take an
optimization_type argument.
* internal-fn.c (direct_optab_supported_p): Likewise.
(multi_vector_optab_supported_p): Likewise.
(direct_internal_fn_supported_p): Likewise.
* builtins.c (replacement_internal_fn): Update call to
* gimple-match-head.c (build_call_internal): Likewise.
* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
* tree-vect-stmts.c (vectorizable_internal_function): Likewise.
* tree.c (maybe_build_call_expr_loc): Likewise.
* config/i386/i386.c (ix86_optab_supported_p): New function.
* config/i386/ (asinxf2): Remove optimize_insn_for_size_p check.
(asin<mode>2, acosxf2, acos<mode>2, log1pxf2, log1p<mode>2)
(expNcorexf3, expxf2, exp<mode>2, exp10xf2, exp10<mode>2, exp2xf2)
(exp2<mode>2, expm1xf2, expm1<mode>2, ldexpxf3, ldexp<mode>3)
(scalbxf3, scalb<mode>3, rint<mode>2, round<mode>2)
(<rounding_insn>xf2, <rounding_insn><mode>2): Likewise.
2015-12-02 Richard Sandiford <>
* (GENSUPPORT_H): New macro.
(build/gensupport.o, build/read-rtl.o, build/genattr.o)
(build/genattr-common.o, build/genattrtab.o, build/genautomata.o)
(build/gencodes.o, build/genconditions.o, build/genconfig.o)
(build/genconstants.o, build/genextract.o, build/genflags.o)
(build/gentarget-def.o): Use it.
(build/genemit.o): Likewise. Depend on internal-fn.def.
* genopinit.c: Move block comment to optabs.def.
(optab_tag, optab_def): Move to gensupport.h
(pattern): Likewise, renaming to optab_pattern.
(match_pattern): Move to gensupport.c
(gen_insn): Use find_optab.
(patterns, pattern_cmp): Replace pattern with optab_pattern.
(main): Likewise. Use num_optabs.
* optabs.def: Add comment that was previously in genopinit.c.
* gensupport.h (optab_tag): Moved from genopinit.c
(optab_def): Likewise, expanding commentary.
(optab_pattern): Likewise, after renaming from pattern.
(optabs, num_optabs, find_optab): Declare.
* gensupport.c (optabs): Moved from genopinit.c.
(num_optabs): New variable.
(match_pattern): Moved from genopinit.c.
(find_optab): New function, extracted from genopinit.c:gen_insn.
* genemit.c (nofail_optabs): New variable.
(emit_c_code): New function.
(gen_expand): Check whether the instruction is an optab that isn't
allowed to fail. Call emit_c_code.
(gen_split): Call emit_c_code here too.
(main): Initialize nofail_optabs. Don't emit FAIL and DONE here.
2015-12-02 Andreas Krebbel <>
* config/s390/ (const_mask_operand): New predicate.
* config/s390/s390-builtins.def: Set a smaller bitmask
for a few builtins.
* config/s390/ Change predicate from immediate_operand
to either const_int_operand or const_mask_operand. Add special
insn conditions on patterns which have to exclude certain values.
* config/s390/ Likewise.
2015-12-02 Andreas Krebbel <>
* config/s390/ ("*vec_set<mode>"): Change shift count
mode from DI to SI.
2015-12-02 Andreas Krebbel <>
* config/s390/s390-builtin-types.def: New builtin types added.
* config/s390/s390-builtins.def: Add s390_vec_splat_* definitions.
* config/s390/s390.c (s390_expand_builtin): Always truncate
constants to the mode in the pattern.
* config/s390/vecintrin.h: Let the vec_splat_* macros point to the
respective builtin __builtin_s390_vec_splat_*.
2015-12-02 Andreas Krebbel <>
* config/s390/s390-builtin-types.def: Sort builtin types.
2015-12-02 Andreas Krebbel <>
* config/s390/s390-c.c (s390_get_vstring_flags): Invert the
condition for the RT flag.
2015-12-02 Andreas Krebbel <>
* config/s390/ ("jKK"): New constraint.
* config/s390/s390.c (tm-constrs.h): Include for
(s390_legitimate_constant_p): Allow jKK constants. Use
satisfies_constraint_* also for the others.
(legitimate_reload_vector_constant_p): Likewise.
(print_operand): Allow h output modifier on vectors.
* config/s390/ ("mov<mode>"): Add vrepi.
2015-12-02 Andreas Krebbel <>
* config/s390/ ("*vec_splats<mode>"): Fix constraint
letter I->K.
2015-12-02 Andreas Krebbel <>
* config/s390/ ("bswap<mode>2"): Add support for strv and strvg.
("bswaphi2"): New pattern.
New splitter for HI reg-reg bswap.
2015-11-27 Jiri Engelthaler <>
PR driver/68029
* opts-common.c (prune_options): Don't ignore -fdiagnostics-color
if it is the first parameter.
2015-12-01 Richard Sandiford <>
PR tree-optimization/68577
* tree-vect-stmts.c (simple_integer_narrowing): New function.
(vectorizable_call): Restrict internal function handling
to NONE and NARROW cases, using simple_integer_narrowing
to test for the latter. Add cost of narrowing operation
and insert it where necessary.
2015-12-01 Andreas Tobler <>
* config/rs6000/freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
rs6000_current_abi to ABI_AIX or ABI_ELFv2.
2015-12-01 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (nvptx_output_aligned_decl): Declare.
* config/nvptx/nvptx.h (ASM_OUTPUT_ALIGNED_DECL_COMMON,
ASM_OUTPUT_ALIGNED_DECL_LOCAL): Forward to nvptx_output_aligned_decl.
* config/nvptx/nvptx.c (write_fn_marker, write_var_marker): New.
(write_fn_proto, write_fn_proto_from_insn): Call write_fn_marker.
(init_output_initializer): Call write_var_marker.
(nvptx_output_aligned_decl): New.
(nvptx_assemble_undefined_decl, nvptx_file_end): Call write_var_marker.
2015-12-01 Jan Hubicka <>
* c-common.c (parse_optimize_options): Do not silently ignore
-fstrict-aliasing changes.
2015-12-01 Jan Hubicka <>
* lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
* tree-streamer-out.c (pack_ts_type_common_value_fields): Do not
* tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
2015-12-01 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't
consider mode.
2015-12-01 Bill Schmidt <>
* config/rs6000/rs6000.c (const_load_sequence_p): Handle extra
indirection for large and small code models.
(adjust_vperm): Likewise.
2015-12-01 Julian Brown <>
Cesar Philippidis <>
James Norris <>
* gimple-pretty-print.c (dump_gimple_omp_target): Add host_data support.
* gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_HOST_DATA.
(is_gimple_omp_oacc): Add support for above.
* gimplify.c (omp_region_type): Add ORT_ACC_HOST_DATA.
(omp_notice_variable): Diagnose undefined implicit uses of
use_device variables in offloaded regions.
(gimplify_scan_omp_clauses): Add host_data, use_device
support. Diagnose undefined mapping of use_device variables in
OpenACC clauses.
(gimplify_omp_workshare): Add host_data support.
(gimplify_expr): Likewise.
* omp-builtins.def (BUILT_IN_GOACC_HOST_DATA): New.
* omp-low.c (lookup_decl_in_outer_ctx)
(maybe_lookup_decl_in_outer_ctx): Add optional argument to skip
host_data regions.
(scan_sharing_clauses): Support use_device.
(check_omp_nesting_restrictions): Support host_data.
(expand_omp_target): Support host_data.
(lower_omp_target): Skip over outer host_data regions when looking
up decls. Support use_device.
(make_gimple_omp_edges): Support host_data.
* tree-nested.c (convert_nonlocal_omp_clauses): Add use_device clause.
2015-12-01 Marek Polacek <>
PR middle-end/68582
* cgraphunit.c (check_global_declaration): Only depend
2015-12-01 Richard Sandiford <>
PR tree-optimization/68474
* tree-call-cdce.c (use_internal_fn): Protect call to
2015-12-01 Christian Bruel <>
PR target/68617
* config/arm/arm.opt (unaligned_access): Save.
* config/arm/arm-c.c (__ARM_FEATURE_UNALIGNED): Conditionally define.
* config/arm/arm.c (arm_option_override): Move unaligned_access setting.
(arm_option_override_internal): ... here.
* config/arm/arm.h (TARGET_32BIT_P): New macro.
2015-12-01 Richard Biener <>
PR tree-optimization/68379
* tree-vect-stmts.c (vectorizable_load): For BB vectorization
always base loads on the first used DR of a group.
* tree-vect-data-refs.c (vect_slp_analyze_and_verify_node_alignment):
Compute alignment of the first scalar element unconditionally.
2015-12-01 Richard Biener <>
PR middle-end/68590
* genmatch.c (struct capture_info): Add match_use_count.
(capture_info::walk_match): Increment match_use_count.
(dt_simplify::gen_1): For GENERIC, only wrap multi-use
replacements in a save_expr if they occur more often than
in the original expression.
2015-12-01 Richard Biener <>
PR ipa/68470
* ipa-split.c (split_function): Handle main part not returning.
2015-12-01 Ilya Enkovich <>
PR middle-end/68595
* tree-vect-stmts.c (vect_init_vector): Cast boolean
scalars to a proper value before building a vector.
2015-12-01 Richard Sandiford <>
* genattrtab.c (check_attr_test): Take an attr_desc instead of
an is_const flag. Put the file_location argument first.
Update recursive calls. Improve error messages.
(check_attr_value): Take a file location and use it instead
of attr->loc. Improve error messages. Update calls to
(check_defs): Update call to check_attr_value.
(make_canonical): Likewise.
(gen_attr): Likewise.
(main): Likewise.
(gen_insn_reserv): Update call to check_attr_test.
2015-12-01 Ramana Radhakrishnan <>
* config/aarch64/aarch64.c (aarch64_builtin_reciprocal): Fix typo.
2015-12-01 Richard Biener <>
PR middle-end/68590
* match.pd: Merge (eq @0 @0) and (ge/le @0 @0) patterns.
2015-12-01 Jan Hubicka <>
* ipa-devirt.c (type_with_linkage_p, type_in_anonymous_namespace_p,
odr_type_p): Move to ...
* ipa-utils.h (type_with_linkage_p, type_in_anonymous_namespace_p,
odr_type_p): here; miscro-optimize.
2015-12-01 Bin Cheng <>
PR tree-optimization/68529
* tree-ssa-loop-niter.c (number_of_iterations_ne): Add new param.
Compute no-overflow information for control iv.
(number_of_iterations_lt, number_of_iterations_le): Add new param.
(number_of_iterations_cond): Pass new argument to above functions.
2015-11-30 Jan Hubicka <>
* ipa-inline-transform.c (inline_call): Drop -fstrict-aliasing when
inlining -fno-strict-aliasing into -fstrict-aliasing body.
2015-11-30 Aditya Kumar <>
Sebastian Pop <>
PR tree-optimization/68565
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Early return on
codegen_error. Fail when rhs of division operations is integer_zerop.
(ternary_op_to_tree): Early return on codegen_error.
(unary_op_to_tree): Same.
(nary_op_to_tree): Same.
(gcc_expression_from_isl_expr_op): Same.
(gcc_expression_from_isl_expression): Same.
(graphite_create_new_loop): On codegen_error continue generating
wrong code.
(graphite_create_new_loop_guard): Same.
(build_iv_mapping): Same.
(graphite_create_new_guard): Same.
2015-11-30 Aditya Kumar <>
Sebastian Pop <>
* graphite-isl-ast-to-gimple.c: Fix dump messages.
* graphite-scop-detection.c: Same.
* graphite-sese-to-poly.c (isl_id_for_ssa_name): Do not call get_name.
2015-11-30 Cesar Philippidis <>
* tree-nested.c (convert_nonlocal_omp_clauses): Add support for
(convert_local_omp_clauses): Likewise.
2015-11-30 Tom de Vries <>
PR tree-optimization/46032
* tree-ssa-structalias.c (find_func_aliases_for_call_arg): New function,
factored out of ...
(find_func_aliases_for_call): ... here.
(find_func_aliases_for_builtin_call, find_func_clobbers): Handle
(ipa_pta_execute): Same. Handle node->parallelized_function as a local
2015-11-30 Jakub Jelinek <>
PR tree-optimization/68501
* target.def (builtin_reciprocal): Replace the 3 arguments with
a gcall * one, adjust description.
* targhooks.h (default_builtin_reciprocal): Replace the 3 arguments
with a gcall * one.
* targhooks.c (default_builtin_reciprocal): Likewise.
* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Use
targetm.builtin_reciprocal even on internal functions, adjust
the arguments and allow replacing an internal function with normal
* config/i386/i386.c (ix86_builtin_reciprocal): Replace the 3 arguments
with a gcall * one. Handle internal fns too.
* config/rs6000/rs6000.c (rs6000_builtin_reciprocal): Likewise.
* config/aarch64/aarch64.c (aarch64_builtin_reciprocal): Likewise.
* doc/tm.texi (builtin_reciprocal): Document.
2015-11-30 Richard Biener <>
PR tree-optimization/68592
* tree-vect-loop.c (vect_analyze_loop_2): Reset SLP type also
on the pattern def sequence.
2015-11-30 Nathan Sidwell <>
* config/nvptx/nvptx.c (nvptx_name_replacement): Move earlier.
(write_one_arg): Reorder parms, add 'sep' param.
(nvptx_write_function_decl): Rename to ...
(write_fn_proto): ... here. Do name replacement. Emit linaer
comment marker. Deal with both decls and defns. Simplify argument
(write_function_decl_and_comment): Delete.
(write_func_decl_from_insn): Rename to ...
(write_fn_proto_from_insn): ... here. Don't do name replacement.
(nvptx_record_fndecl): Call write_fn_proto.
(nvptx_record_libfunc): Call write_fn_proto_from_insn.
(nvptx_declare_function_name): Adjust for write_fn_proto changes.
(nvotx_output_call_insn): Call write_fn_prot_from_insn.
2015-11-30 Kirill Yukhin <>
* config/i386/ (define_mode_iterator SWI1248_AVX512BW): New.
(define_insn "*k<logic><mode>"): Use new iterator.
2015-11-30 Eric Botcazou <>
PR target/28115
* config/sparc/sparc.c (supersparc_adjust_cost): Fix thinko.
(sparc_adjust_cost): Add missing space.
2015-11-30 Richard Biener <>
PR c/68162
* dwarf2out.c (gen_type_die_with_usage): Keep variant types of arrays.
2015-11-30 Venkataramanan Kumar <>
* tree-if-conv.c (struct ifc_dr): Add new tree base_predicate field.
(hash_memrefs_baserefs_and_store_DRs_read_written_info): Hash
base ref, DR pairs and store base_predicate for write type DRs.
(ifcvt_memrefs_wont_trap): Guard checks with
-ftree-loop-if-convert-stores flag.
2015-11-29 Jan Hubicka <>
* cgraph.c (cgraph_node::make_local): No name is unique during
incremental linking.
* cgraph.h (can_be_discarded_p): Update comment; also common and
WEAK in named sections can be discarded; when doing incremental
link do not rely on resolution being the final one.
* varasm.c (default_binds_local_p_3, decl_binds_to_current_def_p):
When symbol can be discarded, do not rely on resolution info.
* symtab.c (symtab_node::nonzero_address): Take into account that
symbol can be discarded.
* ipa-visibility.c (update_visibility_by_resolution_info): Handle
definition correctly.
(function_and_variable_visibility): Do not set unique_name when
incrementally linking.
2015-11-29 Nathan Sidwell <>
* config/nvptx/ (const_0_operand, global_mem_operand,
const_mem_operand, param_mem_operand, shared_mem_operand): Delete.
(ctrap<mode>): Use const0_operand.
2015-11-29 Jan Hubicka <>
* ipa-devirt.c (add_type_duplicate): Remove redundant
ODR violation dump.
2015-11-29 David Edelsohn <>
PR target/28115
* config/rs6000/rs6000.c (rs6000_adjust_cost): Correct
recog_memoized test for insn and check recog_memoized for dep_insn.
2015-11-28 Nathan Sidwell <>
* config/nvptx/nvptx.h (FIRST_PARM_OFFSET): Add void cast.
(struct nvptx_args): Use 'tree' type.
(INIT_CUMULATIVE_ARGS): Remove unnecessary do...while.
2015-11-28 Tom de Vries <>
* lto-wrapper.c (run_gcc): Handle -flinker-output argument.
2015-11-27 Jonathan Wakely <>
* doc/invoke.texi (Option Summary): Use negative form of
-Waggressive-loop-optimizations, remove redundant -Wpedantic-ms-format,
sort alphabetically and re-justify.
2015-11-27 Vladimir Makarov <>
PR rtl-optimization/68536
* lra.c (lra_emit_add): Add code for null base.
* lra-constraints.c (curr_insn_transform): Skip operators for
subreg reloads.
2015-11-27 Kyrylo Tkachov <>
2015-11-27 Kyrylo Tkachov <>
* ifcvt.c (insn_valid_noce_process_p): Reject insn if it satisfies
(noce_try_cmove_arith): Add checking asserts that orig_a and orig_b
are not modified by the final modified insns in the basic blocks.
2015-11-27 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (nvptx_addr_space_from_address):
Don't declare.
* config/nvptx/nvptx.c (nvptx_addr_space_from_sym): New.
(nvptx_maybe_convert_symbolic_operand): Simplify.
(nvptx_addr_space_from_address): Delete.
(nvptx_print_operand): Adjust 'A' case.
2015-11-27 Richard Biener <>
PR tree-optimization/68559
* tree-vect-data-refs.c (vect_analyze_group_access_1): Move
peeling for gap checks ...
* tree-vect-stmts.c (vectorizable_load): ... here and relax for SLP.
* tree-vect-loop.c (vect_analyze_loop_2): Re-set
LOOP_VINFO_PEELING_FOR_GAPS before re-trying without SLP.
2015-11-27 Nathan Sidwell <>
* config/nvptx/nvptx-protos.h (nvptx_record_needed_decl): Don't declare.
* config/nvptx/nvptx.c (write_func_decl_from_insn): Move earlier.
(nvptx_record_fndecl): Don't return value, remove force
argument. Require fndecl.
(nvptx_record_libfunc): New.