gcc.git
7 years agoAdd documentation for fcf-protection option and nocf_check attribute
Igor Tsimbalist [Fri, 20 Oct 2017 14:03:07 +0000 (16:03 +0200)]
Add documentation for fcf-protection option and nocf_check attribute

gcc/doc/
* extend.texi: Add 'nocf_check' documentation.
* gimple.texi: Add second parameter to gimple_build_call_from_tree.
* invoke.texi: Add -fcf-protection documentation.
* rtl.texi: Add REG_CALL_NOTRACK documenation.

From-SVN: r253938

7 years agore PR tree-optimization/82473 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect...
Richard Biener [Fri, 20 Oct 2017 13:43:47 +0000 (13:43 +0000)]
re PR tree-optimization/82473 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1524)

2017-10-20  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82473
* tree-vect-loop.c (vectorizable_reduction): Properly get at
the largest input type.

* gcc.dg/torture/pr82473.c: New testcase.

From-SVN: r253937

7 years agoAdd generic part for Intel CET enabling. The spec is available at
Igor Tsimbalist [Fri, 20 Oct 2017 13:09:38 +0000 (15:09 +0200)]
Add generic part for Intel CET enabling. The spec is available at

https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf

A proposal is to introduce a target independent flag
-fcf-protection=[none|branch|return|full] with a semantic to
instrument a code to control validness or integrity of control-flow
transfers using jump and call instructions. The main goal is to detect
and block a possible malware execution through transfer the execution
to unknown target address. Implementation could be either software or
target based. Any target platforms can provide their implementation
for instrumentation under this option.

The compiler should instrument any control-flow transfer points in a
program (ex. call/jmp/ret) as well as any landing pads, which are
targets of control-flow transfers.

A new 'nocf_check' attribute is introduced to provide hand tuning
support. The attribute directs the compiler to skip a call to a
function and a function's landing pad from instrumentation. The
attribute can be used for function and pointer to function types,
otherwise it will be ignored.

Currently all platforms except i386 will report the error and do no
instrumentation. i386 will provide the implementation based on a
specification published by Intel for a new technology called
Control-flow Enforcement Technology (CET).

gcc/c-family/
* c-attribs.c (handle_nocf_check_attribute): New function.
(c_common_attribute_table): Add 'nocf_check' handling.

gcc/c/
* gimple-parser.c: Add second argument NULL to
gimple_build_call_from_tree.

gcc/
* attrib.c (comp_type_attributes): Check nocf_check attribute.
* cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
call insn.
* combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
* common.opt: Add fcf-protection flag.
* emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
* flag-types.h: Add enum cf_protection_level.
* gimple.c (gimple_build_call_from_tree): Add second parameter.
Add 'nocf_check' attribute propagation to gimple call.
* gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
(gimple_build_call_from_tree): Update prototype.
(gimple_call_nocf_check_p): New function.
(gimple_call_set_nocf_check): Likewise.
* gimplify.c: Add second argument to gimple_build_call_from_tree.
* ipa-icf.c: Add nocf_check attribute in statement hash.
* recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
* reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
* toplev.c (process_options): Add flag_cf_protection handling.

From-SVN: r253936

7 years ago[arm] Fix architecture selection when building libatomic with automatic FPU selection
Richard Earnshaw [Fri, 20 Oct 2017 12:33:39 +0000 (12:33 +0000)]
[arm] Fix architecture selection when building libatomic with automatic FPU selection

Libatomic builds a few functions for Arm with an explicit -march
option.  This option does not specify an FPU, which can lead to
problems when targeting a hard-float or softfp environment since the
architecture appears to be incompatible with the selected ABI.

The fix is simple enough, just add +fp (the minimum floating point
option) to the architecture.  We don't use anything from the FP
architecture, so it shouldn't really change anything; and if we are
building for -mfloat-abi=soft the canonicalization process will remove
the unnecessary fp attributes anyway.

* Makefile.am: (IFUNC_OPTIONS): Set the architecture to
-march=armv7-a+fp on Linux/Arm.
* Makefile.in: Regenerated.

From-SVN: r253935

7 years ago* x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
Jan Hubicka [Fri, 20 Oct 2017 12:25:18 +0000 (14:25 +0200)]
* x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.

From-SVN: r253934

7 years agore PR tree-optimization/82603 (ICE in ifcvt_local_dce w/ -O2 -ftree-loop-vectorize)
Richard Biener [Fri, 20 Oct 2017 11:21:11 +0000 (11:21 +0000)]
re PR tree-optimization/82603 (ICE in ifcvt_local_dce w/ -O2 -ftree-loop-vectorize)

2017-10-20  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82603
* tree-if-conv.c (predicate_mem_writes): Make sure to only
remove false predicated stores.

* gcc.dg/torture/pr82603.c: New testcase.

From-SVN: r253933

7 years ago2017-10-20 Richard Biener <rguenther@suse.de>
Richard Biener [Fri, 20 Oct 2017 10:49:24 +0000 (10:49 +0000)]
2017-10-20  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
Remove return value and simplify, dump copied stmt after lhs
adjustment.
(translate_isl_ast_to_gimple::translate_isl_ast_node_user):
Reduce dump verbosity.
(gsi_insert_earliest): Likewise.
(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
* graphite.c (print_global_statistics): Adjust dumping.
(print_graphite_scop_statistics): Likewise.
(print_graphite_statistics): Do not dump loops here.
(graphite_transform_loops): But here.

From-SVN: r253930

7 years agoReduce stack size in gcc.dg/tree-ssa/ldist-27.c
Tom de Vries [Fri, 20 Oct 2017 10:02:49 +0000 (10:02 +0000)]
Reduce stack size in gcc.dg/tree-ssa/ldist-27.c

2017-10-20  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/tree-ssa/ldist-27.c: Remove dg-require-stack-size.
(main): Move s ...
(s): ... here.

From-SVN: r253929

7 years agoconfigure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.
Nicolas Roche [Fri, 20 Oct 2017 09:29:35 +0000 (09:29 +0000)]
configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.

* configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.
* configure: Regenerate.

From-SVN: r253928

7 years agore PR target/82158 (_Noreturn functions that do return clobber caller's registers...
Jakub Jelinek [Fri, 20 Oct 2017 07:35:48 +0000 (09:35 +0200)]
re PR target/82158 (_Noreturn functions that do return clobber caller's registers on ARM32 (but not other arches))

PR target/82158
* tree-cfg.c (pass_warn_function_return::execute): In noreturn
functions when optimizing replace GIMPLE_RETURN stmts with
calls to __builtin_unreachable ().

* gcc.dg/tree-ssa/noreturn-1.c: New test.

From-SVN: r253926

7 years agore PR sanitizer/82595 (bootstrap fails in libsanitizer on powerpc64-unknown-linux...
Jakub Jelinek [Fri, 20 Oct 2017 07:32:35 +0000 (09:32 +0200)]
re PR sanitizer/82595 (bootstrap fails in libsanitizer on powerpc64-unknown-linux-gnu)

PR sanitizer/82595
* config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
for -fsanitize=thread link of executables.
(LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
link of executables.

* lsan/lsan.h (__lsan_init): Add SANITIZER_INTERFACE_ATTRIBUTE.
* lsan/Makefile.am (nodist_toolexeclib_HEADERS): Add
liblsan_preinit.o.
(lsan_files): Remove lsan_preinit.cc.
(liblsan_preinit.o): New rule.
* lsan/Makefile.in: Regenerated.

From-SVN: r253925

7 years agore PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but...
Jakub Jelinek [Fri, 20 Oct 2017 07:30:33 +0000 (09:30 +0200)]
re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.)

PR target/82370
* config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
New mode iterators.
(<shift_insn><mode>3<mask_name>): Change the last of the 3
define_insns for logical vector shifts to use VI248_AVX512BW
iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
condition, useless isa and prefix attributes.  Change the first
2 of these define_insns to ...
(<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
define_insn for avx512vl.
(<shift_insn><mode>3): ... and this, new define_insn without
masking for non-avx512vl.

* gcc.target/i386/avx-pr82370.c: New test.
* gcc.target/i386/avx2-pr82370.c: New test.
* gcc.target/i386/avx512f-pr82370.c: New test.
* gcc.target/i386/avx512bw-pr82370.c: New test.
* gcc.target/i386/avx512vl-pr82370.c: New test.
* gcc.target/i386/avx512vlbw-pr82370.c: New test.

From-SVN: r253924

7 years agore PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but...
Jakub Jelinek [Fri, 20 Oct 2017 07:28:25 +0000 (09:28 +0200)]
re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.)

PR target/82370
* config/i386/sse.md (*andnot<mode>3,
<mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
(=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
and 256-bit vectors, the (=x,x,xm) alternative and when mask is
not applied use empty suffix even for TARGET_AVX512VL.
* config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
is applied, supply evex,evex or evex,evex,evex instead of just
evex.

From-SVN: r253923

7 years agoAdd GFNI command line options and macros
Julia Koval [Fri, 20 Oct 2017 06:31:33 +0000 (08:31 +0200)]
Add GFNI command line options and macros

gcc/
* common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
(OPTION_MASK_ISA_GFNI_UNSET): New.
(ix86_handle_option): Handle OPT_mgfni.
* config/i386/cpuid.h (bit_GFNI): New.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
* config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
* config/i386/i386.c (ix86_target_string): Add -mgfni.
(ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
* config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
* config/i386/i386.opt: Add mgfni.

From-SVN: r253922

7 years agomsp430.c (msp430_option_override): Disable -fdelete-null-pointer-checks.
Orlando Arias [Fri, 20 Oct 2017 04:49:57 +0000 (04:49 +0000)]
msp430.c (msp430_option_override): Disable -fdelete-null-pointer-checks.

* config/msp430/msp430.c (msp430_option_override): Disable
-fdelete-null-pointer-checks.
* doc/invoke.text (-fdelete-null-pointer-checks): Document that.

* lib/target-supports.exp (check_effective_target_keeps_null_pointer_checks):
Add msp430 to the list.

From-SVN: r253921

7 years agore PR c++/82308 ([C++17] deduction of template arguments results in internal compiler...
Paolo Carlini [Fri, 20 Oct 2017 00:30:41 +0000 (00:30 +0000)]
re PR c++/82308 ([C++17] deduction of template arguments results in internal compiler error)

2017-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82308
* g++.dg/cpp1z/class-deduction45.C: New.

From-SVN: r253920

7 years agoDaily bump.
GCC Administrator [Fri, 20 Oct 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253919

7 years agoexp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" should be "T".
Bob Duff [Thu, 19 Oct 2017 23:12:27 +0000 (23:12 +0000)]
exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" should be "T".

2017-10-19  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ"
should be "T".  Handle case of a subtype of a class-wide type.

From-SVN: r253916

7 years ago[multiple changes]
Pierre-Marie de Rodat [Thu, 19 Oct 2017 23:08:29 +0000 (23:08 +0000)]
[multiple changes]

2017-10-19  Bob Duff  <duff@adacore.com>

* exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify
which node kinds can legitimately be ignored, and raise Program_Error
for others.

2017-10-19  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Compilation_Unit): Handle the case of a subprogram
instantiation that acts as a compilation unit.
(Find_Code_Unit): Reimplemented.
(Find_Top_Unit): Reimplemented.
(Find_Unit_Entity): New routine.
(Process_Instantiation_SPARK): Correct the elaboration requirement a
package instantiation imposes on a unit.

2017-10-19  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place
for a narrow set of controlled types.

2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>

* sinput.ads (Line_Start): Add pragma Inline.
* widechar.ads (Is_Start_Of_Wide_Char): Likewise.

2017-10-19  Bob Duff  <duff@adacore.com>

* exp_attr.adb (Expand_N_Attribute_Reference): Disable
Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a
build-in-place function call so that the temp is declared in the right
place.

From-SVN: r253915

7 years agoPR82575, lto debugobj references __gnu_lto_slim, ld test liblto-17 fails
Alan Modra [Thu, 19 Oct 2017 23:06:20 +0000 (09:36 +1030)]
PR82575, lto debugobj references __gnu_lto_slim, ld test liblto-17 fails

If __gnu_lto_slim is global, undefined, default visibility in the
early debug object, then it finds its way into .dynsym when creating
shared libraries.  __gnu_lto_slim in a symbol table (.dynsym or
.symtab) signals nm and other binutils that the object is an LTO
object needing a plugin, but that isn't the case for the ld liblti-17
tests.  So, make __gnu_lto_slim hidden to prevent it becoming
dynamic.  Further, make it weak because some linkers may warn on
finding an undefined global non-default visibility symbol.

PR lto/82575
* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Make discarded non-local symbols weak and hidden.

From-SVN: r253914

7 years agox86-tune-costs.h (generic_cost, core_cost): Correct costs of x87 and SSE instructions.
Jan Hubicka [Thu, 19 Oct 2017 20:43:30 +0000 (22:43 +0200)]
x86-tune-costs.h (generic_cost, core_cost): Correct costs of x87 and SSE instructions.

* x86-tune-costs.h (generic_cost, core_cost): Correct costs
of x87 and SSE instructions.

From-SVN: r253911

7 years agoasan.c (create_cond_insert_point): Do not update edge count.
Jan Hubicka [Thu, 19 Oct 2017 20:19:15 +0000 (22:19 +0200)]
asan.c (create_cond_insert_point): Do not update edge count.

* asan.c (create_cond_insert_point): Do not update edge count.
* auto-profile.c (afdo_propagate_edge): Update for edge count removal.
(afdo_propagate_circuit): Likewise.
(afdo_calculate_branch_prob): Likewise.
(afdo_annotate_cfg): Likewise.
* basic-block.h (struct edge_def): Remove count.
(edge_def::count): New accessor.
* bb-reorder.c (rotate_loop): Update.
(find_traces_1_round): Update.
(connect_traces): Update.
(sanitize_hot_paths): Update.
* cfg.c (unchecked_make_edge): Update.
(make_single_succ_edge): Update.
(check_bb_profile): Update.
(dump_edge_info): Update.
(update_bb_profile_for_threading): Update.
(scale_bbs_frequencies_int): Update.
(scale_bbs_frequencies_gcov_type): Update.
(scale_bbs_frequencies_profile_count): Update.
(scale_bbs_frequencies): Update.
* cfganal.c (connect_infinite_loops_to_exit): Update.
* cfgbuild.c (compute_outgoing_frequencies): Update.
(find_many_sub_basic_blocks): Update.
* cfgcleanup.c (try_forward_edges): Update.
(try_crossjump_to_edge): Update
* cfgexpand.c (expand_gimple_cond): Update
(expand_gimple_tailcall): Update
(construct_exit_block): Update
* cfghooks.c (verify_flow_info): Update
(redirect_edge_succ_nodup): Update
(split_edge): Update
(make_forwarder_block): Update
(duplicate_block): Update
(account_profile_record): Update
* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
* cfgloopmanip.c (scale_loop_profile): Update.
(loopify): Update.
(lv_adjust_loop_entry_edge): Update.
* cfgrtl.c (try_redirect_by_replacing_jump): Update.
(force_nonfallthru_and_redirect): Update.
(purge_dead_edges): Update.
(rtl_flow_call_edges_add): Update.
* cgraphunit.c (init_lowered_empty_function): Update.
(cgraph_node::expand_thunk): Update.
* gimple-pretty-print.c (dump_probability): Update.
(dump_edge_probability): Update.
* gimple-ssa-isolate-paths.c (isolate_path): Update.
* haifa-sched.c (sched_create_recovery_edges): Update.
* hsa-gen.c (convert_switch_statements): Update.
* ifcvt.c (dead_or_predicable): Update.
* ipa-inline-transform.c (inline_transform): Update.
* ipa-split.c (split_function): Update.
* ipa-utils.c (ipa_merge_profiles): Update.
* loop-doloop.c (add_test): Update.
* loop-unroll.c (unroll_loop_runtime_iterations): Update.
* lto-streamer-in.c (input_cfg): Update.
(input_function): Update.
* lto-streamer-out.c (output_cfg): Update.
* modulo-sched.c (sms_schedule): Update.
* postreload-gcse.c (eliminate_partially_redundant_load): Update.
* predict.c (maybe_hot_edge_p): Update.
(unlikely_executed_edge_p): Update.
(probably_never_executed_edge_p): Update.
(dump_prediction): Update.
(drop_profile): Update.
(propagate_unlikely_bbs_forward): Update.
(determine_unlikely_bbs): Update.
(force_edge_cold): Update.
* profile.c (compute_branch_probabilities): Update.
* reg-stack.c (better_edge): Update.
* shrink-wrap.c (handle_simple_exit): Update.
* tracer.c (better_p): Update.
* trans-mem.c (expand_transaction): Update.
(split_bb_make_tm_edge): Update.
* tree-call-cdce.c: Update.
* tree-cfg.c (gimple_find_sub_bbs): Update.
(gimple_split_edge): Update.
(gimple_duplicate_sese_region): Update.
(gimple_duplicate_sese_tail): Update.
(gimple_flow_call_edges_add): Update.
(insert_cond_bb): Update.
(execute_fixup_cfg): Update.
* tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
* tree-complex.c (expand_complex_div_wide): Update.
* tree-eh.c (lower_resx): Update.
(unsplit_eh): Update.
(cleanup_empty_eh_move_lp): Update.
* tree-inline.c (copy_edges_for_bb): Update.
(freqs_to_counts): Update.
(copy_cfg_body): Update.
* tree-ssa-dce.c (remove_dead_stmt): Update.
* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
(unloop_loops): Update.
* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
* tree-ssa-loop-split.c (connect_loops): Update.
(split_loop): Update.
* tree-ssa-loop-unswitch.c (hoist_guard): Update.
* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
* tree-ssa-reassoc.c (branch_fixup): Update.
* tree-ssa-tail-merge.c (replace_block_by): Update.
* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
(compute_path_counts): Update.
(update_profile): Update.
(recompute_probabilities): Update.
(update_joiner_offpath_counts): Update.
(estimated_freqs_path): Update.
(freqs_to_counts_path): Update.
(clear_counts_path): Update.
(ssa_fix_duplicate_block_edges): Update.
(duplicate_thread_path): Update.
* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
(case_bit_test_cmp): Update.
(collect_switch_conv_info): Update.
(gen_inbound_check): Update.
(do_jump_if_equal): Update.
(emit_cmp_and_jump_insns): Update.
* tree-tailcall.c (decrease_profile): Update.
(eliminate_tail_call): Update.
* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
(vect_do_peeling): Update.
* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
* ubsan.c (ubsan_expand_null_ifn): Update.
(ubsan_expand_ptr_ifn): Update.
* value-prof.c (gimple_divmod_fixed_value): Update.
(gimple_mod_pow2): Update.
(gimple_mod_subtract): Update.
(gimple_ic): Update.
(gimple_stringop_fixed_value): Update.

From-SVN: r253910

7 years agoFix oversights
Eric Botcazou [Thu, 19 Oct 2017 19:14:41 +0000 (19:14 +0000)]
Fix oversights

From-SVN: r253909

7 years agore PR target/82618 (Inefficient double-word subtraction on x86_64)
Uros Bizjak [Thu, 19 Oct 2017 17:35:39 +0000 (19:35 +0200)]
re PR target/82618 (Inefficient double-word subtraction on x86_64)

PR target/82618
* config/i386/i386.md (sub to cmp): New peephole2 pattern.

testsuite/ChangeLog:

PR target/82618
* gcc.target/i386/pr82618.c: New test.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r253905

7 years agoira-color: fix allocno_priority_compare_func for qsort (PR 82395)
Alexander Monakov [Thu, 19 Oct 2017 16:48:34 +0000 (19:48 +0300)]
ira-color: fix allocno_priority_compare_func for qsort (PR 82395)

PR rtl-optimization/82395
* ira-color.c (allocno_priority_compare_func): Fix comparison step
based on non_spilled_static_chain_regno_p.

From-SVN: r253904

7 years agoi386.c (output_387_binary_op): Rewrite SSE part.
Uros Bizjak [Thu, 19 Oct 2017 16:32:55 +0000 (18:32 +0200)]
i386.c (output_387_binary_op): Rewrite SSE part.

* config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
(ix86_emit_mode_set): Rewrite insn mnemonic construction.
(ix86_prepare_fp_compare_args): Redefine is_sse as bool.

From-SVN: r253903

7 years agoPR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
Martin Sebor [Thu, 19 Oct 2017 16:03:07 +0000 (16:03 +0000)]
PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds

PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
  index into string literal

gcc/ChangeLog:
* tree.c (array_at_struct_end_p): Handle STRING_CST.

gcc/testsuite/ChangeLog:
* gcc/testsuite/gcc.dg/pr82596.c: New test.

From-SVN: r253902

7 years agoasan.c (handle_builtin_alloca): Deal with all alloca variants.
Eric Botcazou [Thu, 19 Oct 2017 15:58:05 +0000 (15:58 +0000)]
asan.c (handle_builtin_alloca): Deal with all alloca variants.

* asan.c (handle_builtin_alloca): Deal with all alloca variants.
(get_mem_refs_of_builtin_call): Likewise.
* builtins.c (expand_builtin_apply): Adjust call to
allocate_dynamic_stack_space.
(expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
the third argument to allocate_dynamic_stack_space, otherwise -1.
(expand_builtin): Deal with all alloca variants.
(is_inexpensive_builtin): Likewise.
* builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
* calls.c (special_function_p): Deal with all alloca variants.
(initialize_argument_information): Adjust call to
allocate_dynamic_stack_space.
(expand_call): Likewise.
* cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
* doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
* explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
use it for the stack usage computation.
* explow.h (allocate_dynamic_stack_space): Adjust prototype.
* function.c (gimplify_parameters): Turn BUILT_IN_ALLOCA_WITH_ALIGN
into BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
* gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
Take into account 3rd argument of __builtin_alloca_with_align_and_max.
(in_loop_p): Remove first argument and useless check.
(pass_walloca::execute): Remove useless test and adjust call to above.
* gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
* gimplify.c (gimplify_vla_decl): Turn BUILT_IN_ALLOCA_WITH_ALIGN into
BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
(gimplify_call_expr): Deal with all alloca variants.
* hsa-gen.c (gen_hsa_alloca): Likewise.
(gen_hsa_insns_for_call): Likewise.
* ipa-pure-const.c (special_builtin_state): Likewise.
* tree-chkp.c (chkp_build_returned_bound): Likewise.
* tree-object-size.c (alloc_object_size): Likewise.
* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
(call_may_clobber_ref_p_1): Likewise.
* tree-ssa-ccp.c (evaluate_stmt): Likewise.
(ccp_fold_stmt): Likewise.
(optimize_stack_restore): Likewise.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
(mark_all_reaching_defs_necessary_1): Likewise.
(propagate_necessity): Likewise.
(eliminate_unnecessary_stmts): Likewise.
* tree.c (build_common_builtin_nodes): Build
BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
* tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
(CASE_BUILT_IN_ALLOCA): Likewise.
* varasm.c (incorporeal_function_p): Deal with all alloca variants.
c-family/
* c-common.c (check_builtin_function_arguments): Also check arguments
of __builtin_alloca_with_align_and_max.

From-SVN: r253901

7 years agore PR c++/82600 (Address of local variable returned [-Werror=return-local-addr] when...
Jakub Jelinek [Thu, 19 Oct 2017 14:24:39 +0000 (16:24 +0200)]
re PR c++/82600 (Address of local variable returned [-Werror=return-local-addr] when building mozilla-central)

PR c++/82600
* typeck.c (check_return_expr): Don't call
maybe_warn_about_returning_address_of_local in templates.

* g++.dg/warn/Wreturn-local-addr-4.C: New test.

From-SVN: r253899

7 years agoImprove tests for error reporting in Filesystem TS
Jonathan Wakely [Thu, 19 Oct 2017 13:57:10 +0000 (14:57 +0100)]
Improve tests for error reporting in Filesystem TS

* testsuite/experimental/filesystem/iterators/
recursive_directory_iterator.cc: Ensure that error_code arguments are
cleared when required.
* testsuite/experimental/filesystem/operations/create_directory.cc:
Remove redundant check.
* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
Ensure that error_code argument is cleared when required.

From-SVN: r253897

7 years agoFix path::iterator post-increment and post-decrement
Jonathan Wakely [Thu, 19 Oct 2017 13:57:06 +0000 (14:57 +0100)]
Fix path::iterator post-increment and post-decrement

* include/experimental/bits/fs_path.h (path::iterator++(int))
(path::iterator--(int)): Fix for paths with only one component.
* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
post-increment and post-decrement.

From-SVN: r253896

7 years agoUpdate references to C++17 in libstdc++ manual
Jonathan Wakely [Thu, 19 Oct 2017 13:57:02 +0000 (14:57 +0100)]
Update references to C++17 in libstdc++ manual

* doc/xml/manual/status_cxx2017.xml: Update references to C++17
section numbers.

From-SVN: r253895

7 years agoUse __LONG_LONG_MAX__ instead of LONG_LONG_MAX in test
Jonathan Wakely [Thu, 19 Oct 2017 13:56:55 +0000 (14:56 +0100)]
Use __LONG_LONG_MAX__ instead of LONG_LONG_MAX in test

* testsuite/decimal/conversion-to-integral.cc: Use predefined macro
instead of non-standard glibc one.

From-SVN: r253894

7 years agore PR debug/82509 (DW_AT_endianity issues with attribute scalar_storage_order)
Eric Botcazou [Thu, 19 Oct 2017 13:50:10 +0000 (13:50 +0000)]
re PR debug/82509 (DW_AT_endianity issues with attribute scalar_storage_order)

PR debug/82509
* dwarf2out.c (new_die_raw): New static inline function.
(new_die): Use it to create the DIE.
(add_AT_external_die_ref): Likewise.
(clone_die): Likewise.
(clone_as_declaration): Likewise.
(dwarf2out_vms_debug_main_pointer): Likewise.
(base_type_die): Likewise.  Remove early return for corner cases.
Do not call add_pubtype on the DIE here.
(is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
(modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
typedefs for base types with DW_AT_endianity.  Make sure a DIE with
native order exists for base types, attach the DIE manually and call
add_pubtype on it.  Do not equate a reverse order DIE to the type.

From-SVN: r253893

7 years ago[ARM] PR 82445 - suppress 32-bit aligned ldrd/strd peepholing with -mno-unaligned...
Richard Earnshaw [Thu, 19 Oct 2017 13:10:42 +0000 (13:10 +0000)]
[ARM] PR 82445 - suppress 32-bit aligned ldrd/strd peepholing with -mno-unaligned-access

Peephole patterns exist in the arm backend to spot load/store
operations to adjacent memory operations in order to convert them into
ldrd/strd instructions.  However, when we have strict alignment
enforced, then we can only do this if the accesses are known to be
64-bit aligned; this is unlikely to be the case for most loads.  The
patch adds some alignment checking to the code that validates the
addresses for use in the peephole patterns.  This should also fix
incorrect generation of ldrd/strd with unaligned accesses that could
previously have occurred on ARMv5e where all such operations must be
64-bit aligned.

I've added some new tests as well.  In doing so I discovered that the
ldrd/strd peephole tests could never fail since they would match the
source file name in the scanned assembly as well as any instructions
of the intended type.  I've fixed those by tightening the scan results
slightly.

gcc:

* config/arm/arm.c (align_ok_ldrd_strd): New function.
(mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of the
mem into it.
(gen_operands_ldrd_strd): Validate the alignment of the accesses.

testsuite:

* gcc.target/arm/peep-ldrd-1.c: Tighten test scan pattern.
* gcc.target/arm/peep-strd-1.c: Likewise.
* gcc.target/arm/peep-ldrd-2.c: New test.
* gcc.target/arm/peep-strd-2.c: New test.

From-SVN: r253890

7 years agoflag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.
Jakub Jelinek [Thu, 19 Oct 2017 12:09:52 +0000 (14:09 +0200)]
flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.

* flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
* opts.c (sanitizer_opts): Add builtin.
* ubsan.c (instrument_builtin): New function.
(pass_ubsan::execute): Call it.
(pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
* doc/invoke.texi: Document -fsanitize=builtin.

* c-c++-common/ubsan/builtin-1.c: New test.

From-SVN: r253888

7 years agoubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch builtins...
Jakub Jelinek [Thu, 19 Oct 2017 11:23:59 +0000 (13:23 +0200)]
ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch builtins...

* ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
builtins, store max (log2 (align), 0) into uchar field instead of
align into uptr field.
(ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
store uchar 0 field instead of uptr 0 field.
(instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
instead of passing one address of struct with 2 locations pass
two addresses of structs with 1 location each.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.

* c-c++-common/ubsan/float-cast-overflow-1.c: Drop value keyword
from expected output regexps.
* c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-3.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-5.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-6.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
* g++.dg/ubsan/float-cast-overflow-bf.C: Likewise.
* gcc.dg/ubsan/float-cast-overflow-bf.c: Likewise.
* g++.dg/asan/default-options-1.C (__asan_default_options): Add
used attribute.
* g++.dg/asan/asan_test.C: Run with ASAN_OPTIONS=handle_segv=2
in the environment.

* All source files: Merge from upstream 315899.
        * asan/Makefile.am (nodist_saninclude_HEADERS): Add
include/sanitizer/tsan_interface.h.
        * asan/libtool-version: Bump the libasan SONAME.
* lsan/Makefile.am (sanitizer_lsan_files): Add lsan_common_mac.cc.
(lsan_files): Add lsan_linux.cc, lsan_mac.cc and lsan_malloc_mac.cc.
        * sanitizer_common/Makefile.am (sanitizer_common_files): Add
sancov_flags.cc, sanitizer_allocator_checks.cc,
sanitizer_coverage_libcdep_new.cc, sanitizer_errno.cc,
sanitizer_file.cc, sanitizer_mac_libcdep.cc and
sanitizer_stoptheworld_mac.cc.  Remove sanitizer_coverage_libcdep.cc
and sanitizer_coverage_mapping_libcdep.cc.
        * tsan/Makefile.am (tsan_files): Add tsan_external.cc.
* ubsan/Makefile.am (DEFS): Add -DUBSAN_CAN_USE_CXXABI=1.
(ubsan_files): Add ubsan_init_standalone.cc and
ubsan_signals_standalone.cc.
* ubsan/libtool-version: Bump the libubsan SONAME.
        * asan/Makefile.in: Regenerate.
        * lsan/Makefile.in: Regenerate.
        * sanitizer_common/Makefile.in: Regenerate.
        * tsan/Makefile.in: Regenerate.
* ubsan/Makefile.in: Regenerate.

From-SVN: r253887

7 years agoRevert r238089 (PR driver/81829).
Martin Liska [Thu, 19 Oct 2017 11:08:28 +0000 (13:08 +0200)]
Revert r238089 (PR driver/81829).

2017-10-19  Martin Liska  <mliska@suse.cz>

PR driver/81829
* file-find.c (remove_prefix): Remove.
* file-find.h (remove_prefix): Likewise.
* gcc-ar.c: Remove smartness of lookup.

From-SVN: r253886

7 years agors6000: Fix "missing mode" on UNSPEC_TOCSLOT
Segher Boessenkool [Thu, 19 Oct 2017 10:55:51 +0000 (12:55 +0200)]
rs6000: Fix "missing mode" on UNSPEC_TOCSLOT

Currently gen* warn about a missing mode on an UNSPEC_TOCSLOT unspec in
some call patterns.  Those unspecs are created from rs6000.c, with Pmode
always.  This patch fixes the patterns to say :P as well.

* config/rs6000/rs6000.md (*call_indirect_aix<mode>,
*call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
*call_value_indirect_elfv2<mode>): Add correct mode to the unspec.

From-SVN: r253885

7 years agore PR target/82580 (Optimize comparisons for __int128 on x86-64)
Jakub Jelinek [Thu, 19 Oct 2017 08:37:04 +0000 (10:37 +0200)]
re PR target/82580 (Optimize comparisons for __int128 on x86-64)

PR target/82580
* config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
(setcc + and to xor + setcc): New peephole2.

* gcc.target/i386/pr82580.c: Use {\msbb} instead of "sbb" in
scan-assembler-times.  Check that there are no movzb* instructions
if lp64.

From-SVN: r253884

7 years agoSpecify required stack size for gcc.dg/tree-ssa/ldist-27.c
Tom de Vries [Thu, 19 Oct 2017 08:24:26 +0000 (08:24 +0000)]
Specify required stack size for gcc.dg/tree-ssa/ldist-27.c

2017-10-19  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/tree-ssa/ldist-27.c: Use dg-require-stack-size.

From-SVN: r253883

7 years agoAdd dg-require-stack-size
Tom de Vries [Thu, 19 Oct 2017 08:11:26 +0000 (08:11 +0000)]
Add dg-require-stack-size

2017-10-19  Tom de Vries  <tom@codesourcery.com>

* lib/target-supports-dg.exp (dg-require-stack-size): New proc.
* gcc.c-torture/execute/20030209-1.c: Use dg-require-stack-size.
* gcc.c-torture/execute/20040805-1.c: Same.
* gcc.c-torture/execute/920410-1.c: Same.
* gcc.c-torture/execute/921113-1.c: Same.
* gcc.c-torture/execute/921208-2.c: Same.
* gcc.c-torture/execute/comp-goto-1.c: Same.
* gcc.c-torture/execute/pr20621-1.c: Same.
* gcc.c-torture/execute/pr28982b.c: Same.
* gcc.dg/tree-prof/comp-goto-1.c: Same.

* doc/sourcebuild.texi (Test Directives, Variants of
dg-require-support): Add dg-require-stack-size.

From-SVN: r253882

7 years agoDerive interface buffers from max name length
Bernhard Reutner-Fischer [Thu, 19 Oct 2017 07:55:43 +0000 (09:55 +0200)]
Derive interface buffers from max name length

2017-10-19  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

* interface.c (check_sym_interfaces, check_uop_interfaces,
gfc_check_interfaces): Base interface_name buffer off
GFC_MAX_SYMBOL_LEN.

From-SVN: r253881

7 years agoUpdate my last ChangeLog entry to properly specify overloaded functions.
Aldy Hernandez [Thu, 19 Oct 2017 07:51:54 +0000 (07:51 +0000)]
Update my last ChangeLog entry to properly specify overloaded functions.

From-SVN: r253880

7 years agoDo not instrument use-after-scope for vars with large alignment (PR sanitizer/82517).
Martin Liska [Thu, 19 Oct 2017 07:50:48 +0000 (09:50 +0200)]
Do not instrument use-after-scope for vars with large alignment (PR sanitizer/82517).

2017-10-19  Martin Liska  <mliska@suse.cz>

PR sanitizer/82517
* gimplify.c (gimplify_decl_expr): Do not instrument variables
that have a large alignment.
(gimplify_target_expr): Likewise.
2017-10-19  Martin Liska  <mliska@suse.cz>

PR sanitizer/82517
* gcc.dg/asan/pr82517.c: New test.

From-SVN: r253879

7 years agore PR fortran/82568 ([6/7/8] ICE with do-loop inside BLOCK inside omp)
Jakub Jelinek [Thu, 19 Oct 2017 07:38:59 +0000 (09:38 +0200)]
re PR fortran/82568 ([6/7/8] ICE with do-loop inside BLOCK inside omp)

PR fortran/82568
* gfortran.h (gfc_resolve_do_iterator): Add a bool arg.
(gfc_resolve_omp_local_vars): New declaration.
* openmp.c (omp_current_ctx): Make static.
(gfc_resolve_omp_parallel_blocks): Handle EXEC_OMP_TASKLOOP
and EXEC_OMP_TASKLOOP_SIMD.
(gfc_resolve_do_iterator): Add ADD_CLAUSE argument, if false,
don't actually add any clause.  Move omp_current_ctx test
earlier.
(handle_local_var, gfc_resolve_omp_local_vars): New functions.
* resolve.c (gfc_resolve_code): Call gfc_resolve_omp_parallel_blocks
instead of just gfc_resolve_omp_do_blocks for EXEC_OMP_TASKLOOP
and EXEC_OMP_TASKLOOP_SIMD.
(gfc_resolve_code): Adjust gfc_resolve_do_iterator caller.
(resolve_codes): Call gfc_resolve_omp_local_vars.

* gfortran.dg/gomp/pr82568.f90: New test.

From-SVN: r253878

7 years agoUse Levenshtein spelling suggestions in Fortran FE
Bernhard Reutner-Fischer [Thu, 19 Oct 2017 07:24:33 +0000 (09:24 +0200)]
Use Levenshtein spelling suggestions in Fortran FE

gcc/fortran/ChangeLog

2017-10-19  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

* gfortran.h (gfc_lookup_function_fuzzy): New declaration.
(gfc_closest_fuzzy_match): New declaration.
(vec_push): New definition.
* misc.c (gfc_closest_fuzzy_match): New definition.
* resolve.c: Include spellcheck.h.
(lookup_function_fuzzy_find_candidates): New static function.
(lookup_uop_fuzzy_find_candidates): Likewise.
(lookup_uop_fuzzy): Likewise.
(resolve_operator) <INTRINSIC_USER>: Call lookup_uop_fuzzy.
(gfc_lookup_function_fuzzy): New definition.
(resolve_unknown_f): Call gfc_lookup_function_fuzzy.
* interface.c (check_interface0): Likewise.
(lookup_arg_fuzzy_find_candidates): New static function.
(lookup_arg_fuzzy ): Likewise.
(compare_actual_formal): Call lookup_arg_fuzzy.
* symbol.c: Include spellcheck.h.
(lookup_symbol_fuzzy_find_candidates): New static function.
(lookup_symbol_fuzzy): Likewise.
(gfc_set_default_type): Call lookup_symbol_fuzzy.
(lookup_component_fuzzy_find_candidates): New static function.
(lookup_component_fuzzy): Likewise.
(gfc_find_component): Call lookup_component_fuzzy.

gcc/testsuite/ChangeLog

2017-10-19  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

* gfortran.dg/spellcheck-operator.f90: New testcase.
* gfortran.dg/spellcheck-procedure_1.f90: New testcase.
* gfortran.dg/spellcheck-procedure_2.f90: New testcase.
* gfortran.dg/spellcheck-structure.f90: New testcase.
* gfortran.dg/spellcheck-parameter.f90: New testcase.

From-SVN: r253877

7 years agoDaily bump.
GCC Administrator [Thu, 19 Oct 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253876

7 years agore PR fortran/82567 ([6/7/8] gfortran takes a long time to compile a simple implied...
Thomas Koenig [Wed, 18 Oct 2017 21:29:37 +0000 (21:29 +0000)]
re PR fortran/82567 ([6/7/8] gfortran takes a long time to compile a simple implied-do with -Optimization.)

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/82567
* frontend-passes.c (combine_array_constructor): If an array
constructor is all constants and has more elements than a small
constant, don't convert a*[b,c] to [a*b,a*c] to reduce compilation
times.

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/82567
* gfortran.dg/array_constructor_51.f90: New test.

From-SVN: r253872

7 years agoira: volatile asm's are not moveable (PR82602)
Segher Boessenkool [Wed, 18 Oct 2017 21:08:18 +0000 (23:08 +0200)]
ira: volatile asm's are not moveable (PR82602)

A volatile asm statement can not be moved (relative to other volatile
asm, etc.), but IRA would do it nevertheless.  This patch fixes it.

PR rtl-optimization/82602
* ira.c (rtx_moveable_p): Return false for volatile asm.

From-SVN: r253869

7 years agore PR fortran/79795 (Fortran ICE in resolve_symbol starting with r163221)
Thomas Koenig [Wed, 18 Oct 2017 20:32:34 +0000 (20:32 +0000)]
re PR fortran/79795 (Fortran ICE in resolve_symbol starting with r163221)

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/79795
* resolve.c (resovle_symbol): Change gcc_assert to
sensible error message.

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/79795
* gfortran.dg/assumed_size_2.f90: New test.

From-SVN: r253868

7 years agore PR target/82580 (Optimize comparisons for __int128 on x86-64)
Uros Bizjak [Wed, 18 Oct 2017 20:19:05 +0000 (22:19 +0200)]
re PR target/82580 (Optimize comparisons for __int128 on x86-64)

PR target/82580
* config/i386/i386-modes.def (CCGZ): New CC mode.
* config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
* config/i386/predicates.md (ix86_comparison_operator):
Handle CCGZmode.
* config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
with double-word subtraction.
(put_condition_code): Handle CCGZmode.

testsuite/ChangeLog:

PR target/82580
* gcc.target/i386/pr82580.c: New test.

From-SVN: r253867

7 years agowide-int.cc (debug): New.
Aldy Hernandez [Wed, 18 Oct 2017 19:49:08 +0000 (19:49 +0000)]
wide-int.cc (debug): New.

* wide-int.cc (debug) [const wide_int &]: New.
(debug) [const wide_int *]: New.
(debug) [const widest_int &]: New.
(debug) [const widest_int *]: New.

From-SVN: r253866

7 years agore PR libfortran/82233 (execute_command_line causes program to stop when command...
Thomas Koenig [Wed, 18 Oct 2017 17:54:18 +0000 (17:54 +0000)]
re PR libfortran/82233 (execute_command_line causes program to stop when command fails (or does not exist))

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/82233
* gfortran.dg/execute_command_line_3.f90:  Remove unneeded output.
Move test with wait=.false. before the last test.

From-SVN: r253865

7 years agore PR middle-end/82556 (internal compiler error in curr_insn_transform, at lra-constr...
Vladimir Makarov [Wed, 18 Oct 2017 16:44:27 +0000 (16:44 +0000)]
re PR middle-end/82556 (internal compiler error in curr_insn_transform, at lra-constraints.c:4307)

2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>

PR middle-end/82556
* lra-constraints.c (curr_insn_transform): Use non-input operand
instead of output one for matched reload.

2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>

PR middle-end/82556
* gcc.target/i386/pr82556.c: New.

From-SVN: r253862

7 years agotree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
Bin Cheng [Wed, 18 Oct 2017 16:04:16 +0000 (16:04 +0000)]
tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.

* tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
(tree-ssa-loop-ivopts.h): New header file.
(struct builtin_info): New fields.
(classify_builtin_1): Compute and record base and offset parts for
memset builtin partition by calling strip_offset.
(offset_cmp, fuse_memset_builtins): New functions.
(finalize_partitions): Fuse adjacent memset partitions by calling
above function.
* tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
Expose the interface.
* tree-ssa-loop-ivopts.h (strip_offset): New declaration.

* gcc.dg/tree-ssa/ldist-17.c: Adjust test string.
* gcc.dg/tree-ssa/ldist-32.c: New test.
* gcc.dg/tree-ssa/ldist-35.c: New test.
* gcc.dg/tree-ssa/ldist-36.c: New test.

From-SVN: r253859

7 years agore PR tree-optimization/82574 (wrong code at -O3 on x86_64-linux-gnu)
Bin Cheng [Wed, 18 Oct 2017 15:56:15 +0000 (15:56 +0000)]
re PR tree-optimization/82574 (wrong code at -O3 on x86_64-linux-gnu)

PR tree-optimization/82574
* tree-loop-distribution.c (find_single_drs): New parameter.  Check
that data reference must be executed exactly once per iteration
against the outermost loop in nest.
(classify_partition): Update call to above function.

gcc/testsuite
* gcc.dg/tree-ssa/pr82574.c: New test.

From-SVN: r253857

7 years agore PR tree-optimization/82591 ([graphite] Compile-time hog w/ -O2 -floop-nest-optimize)
Richard Biener [Wed, 18 Oct 2017 14:35:26 +0000 (14:35 +0000)]
re PR tree-optimization/82591 ([graphite] Compile-time hog w/ -O2 -floop-nest-optimize)

2017-10-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82591
* graphite.c (graphite_transform_loops): Move code gen message
printing ...
* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
Here.  Handle scop_to_isl_ast failing.
(scop_to_isl_ast): Limit the number of ISL operations.

From-SVN: r253856

7 years ago2017-10-18 Richard Biener <rguenther@suse.de>
Richard Biener [Wed, 18 Oct 2017 13:34:00 +0000 (13:34 +0000)]
2017-10-18  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::set_rename): Simplify.
(translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
(graphite_copy_stmts_from_block): ... here.
(copy_bb_and_scalar_dependences): Simplify.
(add_parameters_to_ivs_params): Canonicalize.
(generate_entry_out_of_ssa_copies): Simplify.
* graphite-sese-to-poly.c (extract_affine_name): Simplify
by passing in ISL dimension.
(parameter_index_in_region_1): Rename to ...
(parameter_index_in_region): ... this.
(extract_affine): Adjust assert, pass down parameter index.
(add_param_constraints): Use range-info when available.
(build_scop_context): Adjust.
* sese.c (new_sese_info): Adjust.
(free_sese_info): Likewise.
* sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
Remove unused typedefs.
(struct sese_info_t): Simplify rename_map, remove incomplete_phis.

From-SVN: r253855

7 years agoFix failing test-case
Martin Liska [Wed, 18 Oct 2017 12:44:08 +0000 (14:44 +0200)]
Fix failing test-case

2017-10-18  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-prof/switch-case-2.c: Scan IPA profile dump
file instead of expand. Reason is that switch statement is
not yet expanded as decision tree, which also contains a BB
with count == 2000.

From-SVN: r253854

7 years agoFix -Wimplicit-fallthrough in combine.c
Martin Liska [Wed, 18 Oct 2017 11:23:50 +0000 (13:23 +0200)]
Fix -Wimplicit-fallthrough in combine.c

2017-10-18  Martin Liska  <mliska@suse.cz>

* combine.c (simplify_compare_const): Add gcc_fallthrough.

From-SVN: r253853

7 years agomisc.c (gnat_tree_size): Move around.
Eric Botcazou [Wed, 18 Oct 2017 10:41:03 +0000 (10:41 +0000)]
misc.c (gnat_tree_size): Move around.

* gcc-interface/misc.c (gnat_tree_size): Move around.

* gcc-interface/utils.c (max_size): Deal with SSA names.

From-SVN: r253852

7 years agore PR lto/82598 (lto debugobj lacks .note.GNU-stack)
Jakub Jelinek [Wed, 18 Oct 2017 09:20:31 +0000 (11:20 +0200)]
re PR lto/82598 (lto debugobj lacks .note.GNU-stack)

PR lto/82598
* simple-object.c (handle_lto_debug_sections): Copy over also
.note.GNU-stack section with unchanged name.
* simple-object-elf.c (SHF_EXECINSTR): Define.
(simple_object_elf_copy_lto_debug_section): Drop SHF_EXECINSTR bit
on .note.GNU-stack section.

From-SVN: r253851

7 years agoS/390: Do not end groups after fallthru edge.
Robin Dapp [Wed, 18 Oct 2017 09:14:16 +0000 (09:14 +0000)]
S/390: Do not end groups after fallthru edge.

gcc/ChangeLog:

2017-10-17  Robin Dapp  <rdapp@linux.vnet.ibm.com>

* config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
(s390_sched_init): Do not reset s390_sched_state if we entered the
current basic block via a fallthru edge and all others are unlikely.

From-SVN: r253850

7 years agoS/390: Handle long-running instructions.
Robin Dapp [Wed, 18 Oct 2017 09:10:09 +0000 (09:10 +0000)]
S/390: Handle long-running instructions.

gcc/ChangeLog:

2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>

* config/s390/s390.c (NUM_SIDES): New variable.
(LONGRUNNING_THRESHOLD): New variable.
(LATENCY_FACTOR): New variable.
(s390_sched_score): Decrease score for long-running instructions on
wrong side.
(s390_sched_variable_issue): Perform bookkeeping for long-running
instructions.

From-SVN: r253849

7 years agore PR fortran/82550 (program using submodules fails to link)
Paul Thomas [Wed, 18 Oct 2017 08:55:27 +0000 (08:55 +0000)]
re PR fortran/82550 (program using submodules fails to link)

2017-10-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82550
* trans_decl.c (gfc_get_symbol_decl): Procedure symbols that
have the 'used_in_submodule' attribute should be processed by
'gfc_get_extern_function_decl'.

2017-10-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82550
* gfortran.dg/submodule_30.f08 : New test.

From-SVN: r253848

7 years agographite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id): Simplify with...
Richard Biener [Wed, 18 Oct 2017 08:30:45 +0000 (08:30 +0000)]
graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id): Simplify with removal of the parameter rename map.

2017-10-18  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
Simplify with removal of the parameter rename map.
(set_rename): Likewise.
(should_copy_to_new_region): Likewise.
(graphite_copy_stmts_from_block): Likewise.
(copy_bb_and_scalar_dependences): Remove initialization of
unused copied_bb_map.
(copy_def): Remove.
(copy_internal_parameters): Likewise.
(graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
Use INTEGRAL_TYPE_P.
(parameter_index_in_region_1): Rename to ...
(assign_parameter_index_in_region): ... this.  Assert we have
a parameter we handle.
(scan_tree_for_params): Adjust.
* sese.h (parameter_rename_map_t): Remove.
(struct sese_info_t): Remove unused parameter_rename_map and
copied_bb_map members.
* sese.c (new_sese_info): Adjust.
(free_sese_info): Likewise.

From-SVN: r253847

7 years agoS/390: Fix vec-cmp-2 testcase
Andreas Krebbel [Wed, 18 Oct 2017 08:21:45 +0000 (08:21 +0000)]
S/390: Fix vec-cmp-2 testcase

The functions all call foo and therefore need a stack frame what makes
them subject to shrink wrapping.  Also all the additional instructions
in the function body makes it fragile wrt instruction scheduling.  Just
set a global variable instead to circumvent this.

gcc/testsuite/ChangeLog:

2017-10-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/zvector/vec-cmp-2.c
(all_eq_double, all_ne_double, all_gt_double)
(all_lt_double, all_ge_double, all_le_double)
(any_eq_double, any_ne_double, any_gt_double)
(any_lt_double, any_ge_double, any_le_double)
(all_eq_int, all_ne_int, all_gt_int)
(all_lt_int, all_ge_int, all_le_int)
(any_eq_int, any_ne_int, any_gt_int)
(any_lt_int, any_ge_int, any_le_int): Set global variable instead
of calling foo().  Fix return type.

From-SVN: r253846

7 years agoDo not put gimple stmt on an abnormal edge (PR sanitizer/82545).
Martin Liska [Wed, 18 Oct 2017 08:14:47 +0000 (10:14 +0200)]
Do not put gimple stmt on an abnormal edge (PR sanitizer/82545).

2017-10-18  Martin Liska  <mliska@suse.cz>

PR sanitizer/82545
* asan.c (asan_expand_poison_ifn): Do not put gimple stmt
on an abnormal edge.
2017-10-18  Martin Liska  <mliska@suse.cz>

PR sanitizer/82545
* gcc.dg/asan/pr82545.c: New test.

From-SVN: r253845

7 years agore PR c++/69057 ([C++14] constexpr static variable template assertion segmentation...
Paolo Carlini [Wed, 18 Oct 2017 07:53:27 +0000 (07:53 +0000)]
re PR c++/69057 ([C++14] constexpr static variable template assertion segmentation fault)

2017-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69057
* g++.dg/cpp1y/auto-fn45.C: New.

From-SVN: r253844

7 years agore PR c++/68884 (template of value template crashes the compiler)
Paolo Carlini [Wed, 18 Oct 2017 07:43:06 +0000 (07:43 +0000)]
re PR c++/68884 (template of value template crashes the compiler)

2017-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/68884
* g++.dg/cpp0x/variadic-crash4.C: New.

From-SVN: r253843

7 years agoUpdate -ffunction/data-sections documentation
Sebastian Huber [Wed, 18 Oct 2017 07:36:38 +0000 (07:36 +0000)]
Update -ffunction/data-sections documentation

gcc/
* doc/invoke.texi (ffunction-sections and fdata-sections):
Update.

From-SVN: r253842

7 years agore PR c++/79474 (Multiple definitions of user-defined conversion operator cause ICE...
Paolo Carlini [Wed, 18 Oct 2017 07:24:50 +0000 (07:24 +0000)]
re PR c++/79474 (Multiple definitions of user-defined conversion operator cause ICE (internal compiler error))

2017-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79474
* g++.dg/cpp1y/auto-fn44.C: New.

From-SVN: r253841

7 years agoDaily bump.
GCC Administrator [Wed, 18 Oct 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253840

7 years agotree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if the use statement...
Eric Botcazou [Tue, 17 Oct 2017 21:53:34 +0000 (21:53 +0000)]
tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if the use statement can throw internally.

* tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
the use statement can throw internally.

From-SVN: r253834

7 years ago* gcc.dg/attr-alloc_size-11.c: UnXFAIL for visium-*-*.
Eric Botcazou [Tue, 17 Oct 2017 20:34:29 +0000 (20:34 +0000)]
* gcc.dg/attr-alloc_size-11.c: UnXFAIL for visium-*-*.

From-SVN: r253831

7 years agovisium.c (visium_select_cc_mode): Return CCmode for any RTX present on the RHS of...
Eric Botcazou [Tue, 17 Oct 2017 20:28:33 +0000 (20:28 +0000)]
visium.c (visium_select_cc_mode): Return CCmode for any RTX present on the RHS of a SET.

* config/visium/visium.c (visium_select_cc_mode): Return CCmode
for any RTX present on the RHS of a SET.
* compare-elim.c (try_eliminate_compare): Restore comment.

From-SVN: r253830

7 years agolanghooks.h (struct lang_hooks): Document that tree_size langhook may be also called...
Jakub Jelinek [Tue, 17 Oct 2017 20:11:00 +0000 (22:11 +0200)]
langhooks.h (struct lang_hooks): Document that tree_size langhook may be also called on tcc_type nodes.

* langhooks.h (struct lang_hooks): Document that tree_size langhook
may be also called on tcc_type nodes.
* langhooks.c (lhd_tree_size): Likewise.

* gcc-interface/misc.c (gnat_tree_size): New function.
(LANG_HOOKS_TREE_SIZE): Redefine.

From-SVN: r253829

7 years agore PR c++/71821 (ICE on invalid C++11 code (incorrect argument for alignas): unexpect...
Paolo Carlini [Tue, 17 Oct 2017 19:49:06 +0000 (19:49 +0000)]
re PR c++/71821 (ICE on invalid C++11 code (incorrect argument for alignas): unexpected expression ‘f<int>’ of kind template_id_expr)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71821
* g++.dg/cpp0x/alignas12.C: New.

From-SVN: r253828

7 years agoSimplify format_warning_at_substring API
David Malcolm [Tue, 17 Oct 2017 19:41:01 +0000 (19:41 +0000)]
Simplify format_warning_at_substring API

The format_warning_at_substring API has a rather clunk way of indicating
the location of the pertinent param (if any): a source_range * is passed
in, which can be NULL.  Doing so requires extracting a range from the
location_t and passing around a pointer to it, or NULL, as needed.

This patch simplifies things by eliminating the source_range * in
favor of a location_t, with UNKNOWN_LOCATION used to signify that
no param location is available.

gcc/c-family/ChangeLog:
* c-format.c (format_warning_at_char): Pass UNKNOWN_LOCATION
rather than NULL to format_warning_va.
(check_format_types): Likewise when calling format_type_warning.
Remove code to extract source_ranges and source_range * in favor
of just a location_t.
(format_type_warning): Convert source_range * param to a
location_t.

gcc/ChangeLog:
* gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
format_warning_at_substring.
(maybe_warn): Convert source_range * param to a location_t.  Pass
UNKNOWN_LOCATION rather than NULL to fmtwarn.
(format_directive): Remove code to extract source_ranges and
source_range * in favor of just a location_t.
(parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
fmtwarn.
* substring-locations.c (format_warning_va): Convert
source_range * param to a location_t.
(format_warning_at_substring): Likewise.
* substring-locations.h (format_warning_va): Likewise.
(format_warning_at_substring): Likewise.

From-SVN: r253827

7 years agore PR c++/71368 ([concepts] ICE on constrained compound requirement)
Paolo Carlini [Tue, 17 Oct 2017 19:36:49 +0000 (19:36 +0000)]
re PR c++/71368 ([concepts] ICE on constrained compound requirement)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71368
* g++.dg/concepts/pr71368.C: New.

From-SVN: r253826

7 years agoAdd gcc_checking_assert for sbitmap.c.
Martin Liska [Tue, 17 Oct 2017 19:17:36 +0000 (19:17 +0000)]
Add gcc_checking_assert for sbitmap.c.

From-SVN: r253825

7 years ago* i386/i386.c (x86_builtin_vectorization_cost): Likewise.
Jan Hubicka [Tue, 17 Oct 2017 17:37:23 +0000 (19:37 +0200)]
* i386/i386.c (x86_builtin_vectorization_cost): Likewise.

From-SVN: r253824

7 years agotarget.h (enum vect_cost_for_stmt): Add vec_gather_load and vec_scatter_store
Jan Hubicka [Tue, 17 Oct 2017 17:35:54 +0000 (19:35 +0200)]
target.h (enum vect_cost_for_stmt): Add vec_gather_load and vec_scatter_store

* target.h (enum vect_cost_for_stmt): Add vec_gather_load and
vec_scatter_store
* tree-vect-stmts.c (record_stmt_cost): Make difference between normal
and scatter/gather ops.

* aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
vec_gather_load and vec_scatter_store.
* arm/arm.c (arm_builtin_vectorization_cost): Likewise.
* powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
* rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
* s390/s390.c (s390_builtin_vectorization_cost): Likewise.
* spu/spu.c (spu_builtin_vectorization_cost): Likewise.

From-SVN: r253823

7 years agoreg-stack.c (compare_for_stack_reg): Add bool argument.
Uros Bizjak [Tue, 17 Oct 2017 16:35:11 +0000 (18:35 +0200)]
reg-stack.c (compare_for_stack_reg): Add bool argument.

* reg-stack.c (compare_for_stack_reg): Add bool argument.
Detect FTST instruction and handle its register pops.  Only pop
second operand if can_pop_second_op is true.
(subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
set can_pop_second_op to false in the compare_for_stack_reg call.

* config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
output_fp_compare for stack register operands.
* config/i386/i386.c (output_fp_compare): Do not output SSE compare
instructions here.  Do not emit stack register pops here.  Assert
that FCOMPP pops next to top stack register.  Rewrite function.

From-SVN: r253821

7 years ago[C++ PATCH 82560] missing dtor call
Nathan Sidwell [Tue, 17 Oct 2017 15:52:21 +0000 (15:52 +0000)]
[C++ PATCH 82560] missing dtor call

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01068.html
PR c++/82560
* call.c (build_over_call): Don't pass tf_no_cleanup to nested
calls.

PR c++/82560
* g++.dg/cpp0x/pr82560.C: New.

From-SVN: r253820

7 years ago[PATCH, middle-end/82577] Fix DECL_ASSEMBLER_NAME ICE
Nathan Sidwell [Tue, 17 Oct 2017 15:42:19 +0000 (15:42 +0000)]
[PATCH, middle-end/82577] Fix DECL_ASSEMBLER_NAME ICE

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01067.html
gcc/
PR middle-end/82577
* alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
use DECL_ASSEMBLER_NAME_RAW.

gcc/testsuite/
PR middle-end/82577
* g++.dg/opt/pr82577.C: New.

From-SVN: r253819

7 years ago[PATCH PR/82546] tree node size
Nathan Sidwell [Tue, 17 Oct 2017 14:49:05 +0000 (14:49 +0000)]
[PATCH PR/82546] tree node size

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00899.html
PR middle-end/82546
gcc/
* tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
TYPE nodes.
gcc/cp/
* cp-objcp-common.c (cp_tree_size): Reformat.  Adjust returns size
of TYPE nodes.
gcc/objc/
* objc-act.c (objc_common_tree_size): Return size of TYPE nodes.

From-SVN: r253817

7 years agore PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)
Qing Zhao [Tue, 17 Oct 2017 14:17:17 +0000 (14:17 +0000)]
re PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)

gcc/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        * builtins.c (expand_builtin_update_setjmp_buf): Add a
        converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        PR middle-end/80295
        * gcc.target/aarch64/pr80295.c: New test.

From-SVN: r253815

7 years agore PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)
Qing Zhao [Tue, 17 Oct 2017 14:16:35 +0000 (14:16 +0000)]
re PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)

gcc/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        * builtins.c (expand_builtin_update_setjmp_buf): Add a
        converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        PR middle-end/80295
        * gcc.target/aarch64/pr80295.c: New test.

Co-Authored-By: Wilco Dijkstra <wdijkstr@arm.com>
From-SVN: r253814

7 years agographite-dependences.c (scop_get_reads_and_writes): Change output parameters to refer...
Richard Biener [Tue, 17 Oct 2017 13:56:14 +0000 (13:56 +0000)]
graphite-dependences.c (scop_get_reads_and_writes): Change output parameters to references.

2017-10-17  Richard Biener  <rguenther@suse.de>

* graphite-dependences.c (scop_get_reads_and_writes): Change
output parameters to references.

From-SVN: r253813

7 years agoFactor out division by squares and remove division around comparisons (0/2)
Jackson Woodruff [Tue, 17 Oct 2017 13:22:48 +0000 (13:22 +0000)]
Factor out division by squares and remove division around comparisons (0/2)

Commit gcc/fold-const.c missing from r252827:

    gcc/
PR 71026/tree-optimization
* fold-const.c (distribute_real_division): Removed.
(fold_binary_loc): Remove calls to distribute_real_divison.

From-SVN: r253812

7 years ago2017-10-17 Richard Biener <rguenther@suse.de>
Richard Biener [Tue, 17 Oct 2017 13:19:51 +0000 (13:19 +0000)]
2017-10-17  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c
(scop_detection::stmt_has_simple_data_refs_p): Always use
the full nest as region.
(try_generate_gimple_bb): Likewise.
* sese.c (scalar_evolution_in_region): Simplify now that
SCEV can handle instantiation in regions.
* tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
in the non-loop part of a function if requested.

From-SVN: r253811

7 years agore PR tree-optimization/82563 ([graphite] ICE in check_loop_closed_ssa_def, at tree...
Richard Biener [Tue, 17 Oct 2017 13:17:30 +0000 (13:17 +0000)]
re PR tree-optimization/82563 ([graphite] ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709)

2017-10-17  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82563
* graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
New function.
(graphite_regenerate_ast_isl): Call it.
* graphite-scop-detection.c (build_scops): Remove entry edge split.

* gcc.dg/graphite/pr82563.c: New testcase.

From-SVN: r253809

7 years agoRestore "dg-do run" directives for libgomp.oacc-fortran/declare-*.f90
Thomas Schwinge [Tue, 17 Oct 2017 11:17:00 +0000 (13:17 +0200)]
Restore "dg-do run" directives for libgomp.oacc-fortran/declare-*.f90

libgomp/
* testsuite/libgomp.oacc-fortran/declare-1.f90: Restore "dg-do
run" directive.
* testsuite/libgomp.oacc-fortran/declare-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-3.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-4.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-5.f90: Likewise.

From-SVN: r253808

7 years agore PR c++/67831 (Internal error on complicated constexpr initialization.)
Paolo Carlini [Tue, 17 Oct 2017 09:06:53 +0000 (09:06 +0000)]
re PR c++/67831 (Internal error on complicated constexpr initialization.)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67831
* g++.dg/cpp0x/constexpr-ice18.C: New.

From-SVN: r253807

7 years agore PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements)
Paolo Carlini [Tue, 17 Oct 2017 08:38:07 +0000 (08:38 +0000)]
re PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82570
* g++.dg/cpp1z/constexpr-lambda18.C: New.

From-SVN: r253806

7 years agore PR tree-optimization/82549 (ICE at -O1 and above: verify_gimple failed)
Jakub Jelinek [Tue, 17 Oct 2017 07:38:32 +0000 (09:38 +0200)]
re PR tree-optimization/82549 (ICE at -O1 and above: verify_gimple failed)

PR tree-optimization/82549
* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
Formatting fixes.  Instead of calling make_bit_field_ref with negative
bitpos return 0.

* gcc.c-torture/compile/pr82549.c: New test.

From-SVN: r253805

7 years agoImprove FAIL message for dump-*-times functions.
Martin Liska [Tue, 17 Oct 2017 07:31:30 +0000 (09:31 +0200)]
Improve FAIL message for dump-*-times functions.

2017-10-17  Martin Liska  <mliska@suse.cz>

* lib/scanasm.exp: Print how many times a regex pattern is
found.
* lib/scandump.exp: Likewise.

From-SVN: r253804

7 years agoAdd missing REDUCE[SD,SS] intrinsics
Olga Makhotina [Tue, 17 Oct 2017 07:12:45 +0000 (07:12 +0000)]
Add missing REDUCE[SD,SS] intrinsics

gcc/
* config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
_mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
_mm_maskz_reduce_ss): New.
* config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
__builtin_ia32_reducess_mask): Ditto..
(__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
* config/i386/sse.md (reduces<mode>): Renamed to ...
(reduces<mode><mask_scalar_name>): ... this.
(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}): Changed
to ...
(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
%0<mask_scalar_operand4>, %1, %2, %3}): ... this.

gcc/testsuite/
* gcc.target/i386/avx512dq-vreducesd-1.c (_mm_mask_reduce_sd,
_mm_maskz_reduce_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vreducesd-2.c: New.
* gcc.target/i386/avx512dq-vreducess-1.c (_mm_mask_reduce_ss,
_mm_maskz_reduce_ss): Test new intrinsics.
* gcc.target/i386/avx512dq-vreducess-2.c: New.
* gcc.target/i386/avx-1.c (__builtin_ia32_reducesd,
__builtin_ia32_reducess): Remove builtin.
(__builtin_ia32_reducesd_mask,
__builtin_ia32_reducess_mask): Test new builtin.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.

From-SVN: r253803