Olivier Hainque [Fri, 21 Sep 2018 12:43:46 +0000 (12:43 +0000)]
Introduce TARGET_VXWORKS64 for VxWorks 64bit ports
2018-09-21 Olivier Hainque <hainque@adacore.com>
* config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from
triplet, similar to support for VxWorks7.
* config/vxworks-dummy.h: Provide a default definition
of TARGET_VXWORKS64 to 0.
From-SVN: r264474
Olivier Hainque [Fri, 21 Sep 2018 12:39:51 +0000 (12:39 +0000)]
Fix whitespace vs tab in entry
From-SVN: r264473
Olivier Hainque [Fri, 21 Sep 2018 12:38:57 +0000 (12:38 +0000)]
Move default #define TARGET_VXWORKS7 to vxworks-dummy.h
2018-09-21 Olivier Hainque <hainque@adacore.com>
* config/vxworks.h (TARGET_VXWORKS7): Move default definition ...
* config/vxworks-dummy.h: here.
From-SVN: r264472
Olivier Hainque [Fri, 21 Sep 2018 12:35:55 +0000 (12:35 +0000)]
Prepend vxworks-dummy.h to tm_file for powerpc*
2018-09-20 Olivier Hainque <hainque@adacore.com>
* config.gcc (powerpc*-*-*): Prepend vxworks-dummy.h to tm_file.
From-SVN: r264471
Shaokun Zhang [Fri, 21 Sep 2018 12:25:12 +0000 (12:25 +0000)]
[aarch64] Add HiSilicon tsv110 CPU support
This patch adds HiSilicon's an mcpu: tsv110, which supports v8_4A.
It has been tested on aarch64 and no regressions from this patch.
2018-09-21 Shaokun Zhang <zhangshaokun@hisilicon.com>
Bo Zhou <zbo.zhou@hisilicon.com>
* config/aarch64/aarch64-cores.def (tsv110): New CPU.
* config/aarch64/aarch64-tune.md: Regenerated.
* doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110".
* config/aarch64/aarch64.c (tsv110_tunings): New tuning table.
* config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs.
Co-Authored-By: Bo Zhou <zbo.zhou@hisilicon.com>
From-SVN: r264470
Andrew Stubbs [Fri, 21 Sep 2018 11:25:54 +0000 (11:25 +0000)]
Fix co-array allocation
The Fortran front-end has a bug in which it uses "int" values for "size_t"
parameters. I don't know why this isn't problem for all 64-bit architectures,
but GCN ends up with the data in the wrong argument register and/or stack slot,
and bad things happen.
This patch corrects the issue by setting the correct type.
2018-09-21 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
gcc/fortran/
* trans-expr.c (gfc_trans_structure_assign): Ensure that the first
argument of a call to _gfortran_caf_register is of size_type_node.
* trans-intrinsic.c (conv_intrinsic_event_query): Convert computed
index to a size_type_node type.
* trans-stmt.c (gfc_trans_event_post_wait): Likewise.
Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
From-SVN: r264468
Andrew Stubbs [Fri, 21 Sep 2018 11:25:39 +0000 (11:25 +0000)]
Propagate address spaces to builtins.
At present, pointers passed to builtin functions, including atomic operators,
are stripped of their address space properties. This doesn't seem to be
deliberate, it just omits to copy them.
Not only that, but it forces pointer sizes to Pmode, which isn't appropriate
for all address spaces.
This patch attempts to correct both issues. It works for GCN atomics and
GCN OpenACC gang-private variables.
2018-09-21 Andrew Stubbs <ams@codesourcery.com>
Julian Brown <julian@codesourcery.com>
gcc/
* builtins.c (get_builtin_sync_mem): Handle address spaces.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r264467
Eric Botcazou [Fri, 21 Sep 2018 10:11:37 +0000 (10:11 +0000)]
c-ada-spec.c: Include diagnostic.h.
* c-ada-spec.c: Include diagnostic.h.
(dump_ada_declaration) <RECORD_TYPE>: Issue a warning on packed layout.
From-SVN: r264466
Eric Botcazou [Fri, 21 Sep 2018 10:01:16 +0000 (10:01 +0000)]
rs6000.c (rs6000_function_ok_for_sibcall): Return false if the call takes a static chain.
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
if the call takes a static chain.
From-SVN: r264463
Martin Liska [Fri, 21 Sep 2018 08:41:17 +0000 (10:41 +0200)]
Remove arc profile histogram in non-LTO mode.
2018-09-21 Martin Liska <mliska@suse.cz>
* auto-profile.c (autofdo_source_profile::read): Do not
set sum_all.
(read_profile): Do not add working sets.
(read_autofdo_file): Remove sum_all.
(afdo_callsite_hot_enough_for_early_inline): Remove const
qualifier.
* coverage.c (struct counts_entry): Remove gcov_summary.
(read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY,
do not support GCOV_TAG_PROGRAM_SUMMARY.
(get_coverage_counts): Remove summary and expected
arguments.
* coverage.h (get_coverage_counts): Likewise.
* doc/gcov-dump.texi: Remove -w option.
* gcov-dump.c (dump_working_sets): Remove.
(main): Do not support '-w' option.
(print_usage): Likewise.
(tag_summary): Likewise.
* gcov-io.c (gcov_write_summary): Do not dump
histogram.
(gcov_read_summary): Likewise.
(gcov_histo_index): Remove.
(gcov_histogram_merge): Likewise.
(compute_working_sets): Likewise.
* gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark
it not obsolete.
(GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete.
(GCOV_TAG_SUMMARY_LENGTH): Adjust.
(GCOV_HISTOGRAM_SIZE): Remove.
(GCOV_HISTOGRAM_BITVECTOR_SIZE): Likewise.
(struct gcov_summary): Simplify rapidly just
to runs and sum_max fields.
(gcov_histo_index): Remove.
(NUM_GCOV_WORKING_SETS): Likewise.
(compute_working_sets): Likewise.
* gcov-tool.c (print_overlap_usage_message): Remove
trailing empty line.
* gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY.
(output_lines): Remove program related line.
* ipa-profile.c (ipa_profile): Do not consider GCOV histogram.
* lto-cgraph.c (output_profile_summary): Do not stream GCOV
histogram.
(input_profile_summary): Do not read it.
(merge_profile_summaries): And do not merge it.
(input_symtab): Do not call removed function.
* modulo-sched.c (sms_schedule): Do not print sum_max.
* params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was
removed when histogram method was invented.
(HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO
mode.
* postreload-gcse.c (eliminate_partially_redundant_load): Fix
GCOV coding style.
* predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION
and dump selected value.
* profile.c (add_working_set): Remove.
(get_working_sets): Likewise.
(find_working_set): Likewise.
(get_exec_counts): Do not work with working sets.
(read_profile_edge_counts): Do not inform as sum_max is removed.
(compute_branch_probabilities): Likewise.
(compute_value_histograms): Remove argument for call of
get_coverage_counts.
* profile.h: Do not make gcov_summary const.
2018-09-21 Martin Liska <mliska@suse.cz>
* libgcov-driver.c (crc32_unsigned): Remove.
(gcov_histogram_insert): Likewise.
(gcov_compute_histogram): Likewise.
(compute_summary): Simplify rapidly.
(merge_one_data): Do not handle PROGRAM_SUMMARY tag.
(merge_summary): Rapidly simplify.
(dump_one_gcov): Ignore gcov_summary.
(gcov_do_dump): Do not handle program summary, it's not
used.
* libgcov-util.c (tag_summary): Remove.
(read_gcda_finalize): Fix coding style.
(read_gcda_file): Initialize curr_object_summary.
(compute_summary): Remove.
(calculate_overlap): Remove settings of run_max.
From-SVN: r264462
Monk Chiang [Fri, 21 Sep 2018 08:39:35 +0000 (08:39 +0000)]
[NDS32] Sync glibc and kernel structure, all use _rt_sigframe.
libgcc/
* config/nds32/linux-unwind.h (struct _rt_sigframe): Use struct
ucontext_t type instead.
(nds32_fallback_frame_state): Remove struct _sigframe statement.
From-SVN: r264461
Kito Cheng [Fri, 21 Sep 2018 08:11:40 +0000 (08:11 +0000)]
[NDS32] Add t-nds32-glibc file.
libgcc/
* config/nds32/t-nds32-glibc: New file.
From-SVN: r264460
Monk Chiang [Fri, 21 Sep 2018 07:35:49 +0000 (07:35 +0000)]
[NDS32] Turn off default option -mtlsdesc-trampoline.
gcc/
* config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0.
From-SVN: r264459
Eric Botcazou [Fri, 21 Sep 2018 07:28:42 +0000 (07:28 +0000)]
re PR tree-optimization/86990 (wrong code at -O2 on x86_64-linux-gnu in 64-bit mode)
PR tree-optimization/86990
* gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate):
Check that the entire merged store group is made of constants only for
overlapping stores.
From-SVN: r264458
GCC Administrator [Fri, 21 Sep 2018 00:17:01 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r264456
Marek Polacek [Thu, 20 Sep 2018 23:20:19 +0000 (23:20 +0000)]
PR c++/87109 - wrong ctor with maybe-rvalue semantics.
* call.c (build_user_type_conversion_1): Refine the maybe-rvalue
check to only return if we're converting the return value to a base
class.
* g++.dg/cpp0x/ref-qual19.C: Adjust the expected results.
* g++.dg/cpp0x/ref-qual20.C: New test.
From-SVN: r264452
Allan Sandfeld Jensen [Thu, 20 Sep 2018 19:38:24 +0000 (01:38 +0600)]
Fix and document -r option
The option has existed and been working for years,
make sure it implies the right extra options, and list
it in the documentation.
2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
gcc/
* gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
(VTABLE_VERIFICATION_SPEC): Likewise.
(SANITIZER_EARLY_SPEC): Likewise.
(SANITIZER_SPEC): Likewise.
* config/darwin.h (LINK_COMMAND_SPEC): Likewise.
* doc/invoke.texi (Link Options): Document -r.
gcc/cp/
* g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/fortran/
* gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/go/
* gospec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/testsuite/
* g++.dg/ipa/pr64059.C: Removed now redundant -nostdlib.
* g++.dg/lto/
20081109-1_0.C: Likewise.
* g++.dg/lto/20090302_0.C: Likewise.
* g++.dg/lto/pr45621_0.C: Likewise.
* g++.dg/lto/pr60567_0.C: Likewise.
* g++.dg/lto/pr62026.C: Likewise.
* gcc.dg/lto/pr45736_0.c: Likewise.
* gcc.dg/lto/pr52634_0.c: Likewise.
* gfortran.dg/lto/
20091016-1_0.f90: Likewise.
* gfortran.dg/lto/pr79108_0.f90: Likewise.
From-SVN: r264451
Alexandre Oliva [Thu, 20 Sep 2018 19:34:44 +0000 (19:34 +0000)]
[PR87054] fix unaligned access
Building an ADDR_EXPR uses the canonical type to build the pointer
type, but then, as we dereference it, we lose track of lax alignment
known to apply to the dereferenced object. This might not be a
problem in general, but it is when the compiler implicitly introduces
address taking and dereferencing, as it does for asm statements, and
as it may do in some loop optimizations.
From: Richard Biener <rguenther@suse.de>
for gcc/ChangeLog
PR middle-end/87054
* gimplify.c (gimplify_expr): Retain alignment of
addressable lvalue in dereference.
From: Alexandre Oliva <oliva@adacore.com>
for gcc/testsuite/ChangeLog
PR middle-end/87054
* gcc.dg/pr87054.c: New.
From-SVN: r264450
Alexandre Oliva [Thu, 20 Sep 2018 19:34:30 +0000 (19:34 +0000)]
[PR87013] check for .loc is_stmt support in the assembler
Back when we had the logic to output is_stmt but never exercised it,
it didn't matter that we didn't test for assembler support for it.
But there are still assemblers out there that do not support it, so
now that we enable the formerly latent is_stmt logic, we'd better make
sure the assembler can deal with it.
for gcc/ChangeLog
PR bootstrap/87013
* configure.ac: Check for .loc is_stmt support.
* configure, config.in: Rebuilt.
* dwarf2out.c (dwarf2out_source_line): Skip is_stmt
if not supported.
From-SVN: r264449
Janus Weil [Thu, 20 Sep 2018 19:33:05 +0000 (21:33 +0200)]
gfortran.h (gfc_str_startswith): New macro.
2018-09-20 Janus Weil <janus@gcc.gnu.org>
* gfortran.h (gfc_str_startswith): New macro.
* decl.c (variable_decl, gfc_match_end): Use it.
* iresolve.c (is_trig_resolved): Ditto.
* module.c (load_omp_udrs, read_module): Ditto.
* options.c (gfc_handle_runtime_check_option): Ditto.
* primary.c (match_arg_list_function): Ditto.
* trans-decl.c (gfc_get_symbol_decl): Ditto.
* trans-expr.c (gfc_conv_procedure_call): Ditto.
* interface.c (dtio_op): Replace strncmp by strcmp.
* resolve.c (resolve_actual_arglist, resolve_function): Ditto.
* trans-expr.c (conv_arglist_function): Ditto.
* trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro
STARTS_WITH by gfc_str_startswith.
From-SVN: r264448
Segher Boessenkool [Thu, 20 Sep 2018 19:04:42 +0000 (21:04 +0200)]
rs6000: Remove -misel={yes,no}
These options have been deprecated for many years, supplanted by -misel
and -mno-isel. This patch finally removes them.
* config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and
-misel=no.
From-SVN: r264447
Cesar Philippidis [Thu, 20 Sep 2018 18:42:57 +0000 (11:42 -0700)]
[OpenACC] handle missing OMP_LIST_ clauses in fortran's parse tree debugger
gcc/fortran/
* dump-parse-tree.c (show_omp_clauses): Add missing omp list_types
and reorder the switch cases to match the enum in gfortran.h.
From-SVN: r264446
Segher Boessenkool [Thu, 20 Sep 2018 17:21:54 +0000 (19:21 +0200)]
rs6000: Delete VECTOR_OTHER
It's never used.
* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
VECTOR_OTHER.
* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete
case VECTOR_OTHER.
From-SVN: r264444
Christophe Lyon [Thu, 20 Sep 2018 17:09:31 +0000 (17:09 +0000)]
hypot-long-double.cc: Skip on arm*.
2018-09-20 Christophe Lyon <christophe.lyon@linaro.org>
* testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
on arm*.
From-SVN: r264443
Jason Merrill [Thu, 20 Sep 2018 17:09:19 +0000 (13:09 -0400)]
PR c++/87075 - ICE with constexpr array initialization.
My patch of 2016-08-26 to avoid calling a trivial default constructor
introduced TARGET_EXPRs initialized with void_node to express trivial
initialization. But when this shows up in a VEC_INIT_EXPR, we weren't
prepared to handle it. Fixed by handling it explicitly in
cxx_eval_vec_init_1.
* constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
From-SVN: r264442
Marek Polacek [Thu, 20 Sep 2018 13:52:25 +0000 (13:52 +0000)]
* doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options.
From-SVN: r264441
Richard Sandiford [Thu, 20 Sep 2018 12:58:23 +0000 (12:58 +0000)]
Fix PEELING_FOR_NITERS calculation (PR 87288)
PEELING_FOR_GAPS now means "peel one iteration for the epilogue",
in much the same way that PEELING_FOR_ALIGNMENT > 0 means
"peel that number of iterations for the prologue". We weren't
taking this into account when deciding whether we needed to peel
further scalar iterations beyond the iterations for "gaps" and
"alignment".
Only the first test failed before the patch. The other two
are just for completeness.
2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR tree-optimization/87288
* tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS
into account when determining PEELING_FOR_NITERS.
gcc/testsuite/
PR tree-optimization/87288
* gcc.dg/vect/pr87288-1.c: New test.
* gcc.dg/vect/pr87288-2.c: Likewise,
* gcc.dg/vect/pr87288-3.c: Likewise.
From-SVN: r264440
Richard Sandiford [Thu, 20 Sep 2018 12:58:16 +0000 (12:58 +0000)]
Add missing alignment checks in epilogue loop vectorisation (PR 86877)
Epilogue loop vectorisation skips vect_enhance_data_refs_alignment
since it doesn't make sense to version or peel the epilogue loop
(that will already have happened for the main loop). But this means
that it also fails to check whether the accesses are suitably aligned
for the new vector subarch.
We don't seem to carry alignment information from the (potentially
peeled or versioned) main loop to the epilogue loop, which would be
good to fix at some point. I think we want this patch regardless,
since there's no guarantee that the alignment requirements are the
same for every subarch.
2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR tree-optimization/86877
* tree-vect-loop.c (vect_analyze_loop_2): Call
vect_verify_datarefs_alignment.
gcc/testsuite/
PR tree-optimization/86877
* gfortran.dg/vect/vect-8-epilogue.F90: New test.
From-SVN: r264439
Marek Polacek [Thu, 20 Sep 2018 01:56:58 +0000 (01:56 +0000)]
Add -Wclass-conversion.
* c.opt (Wclass-conversion): New.
* decl.c (grok_op_properties): Change a warning from -Wconversion to
-Wclass-conversion. Make it print the types.
* doc/invoke.texi: Document -Wclass-conversion.
* g++.dg/conversion/op4.C: Add dg-warning.
* g++.dg/warn/Wclass-conversion1.C: New test.
* g++.dg/warn/Wclass-conversion2.C: New test.
* g++.dg/warn/Wconversion5.C: Remove file.
* g++.dg/warn/conversion-function-1.C: Use -Wno-class-converison.
* g++.old-deja/g++.bugs/900215_01.C: Adjust dg-warning.
* g++.old-deja/g++.jason/conversion5.C: Likewise.
From-SVN: r264438
John David Anglin [Thu, 20 Sep 2018 01:46:28 +0000 (01:46 +0000)]
pa.c (pa_adjust_priority): Delete.
* config/pa/pa.c (pa_adjust_priority): Delete.
(TARGET_SCHED_ADJUST_PRIORITY): Delete define.
From-SVN: r264437
John David Anglin [Thu, 20 Sep 2018 01:04:34 +0000 (01:04 +0000)]
pa.md (atomic_storeqi): Restore deleted expander.
* config/pa/pa.md (atomic_storeqi): Restore deleted expander.
(atomic_storehi): Likewise.
(atomic_storesi): Likewise.
(atomic_loaddi): Restore compare and swap exchange loop code.
From-SVN: r264433
GCC Administrator [Thu, 20 Sep 2018 00:16:38 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264432
Paolo Carlini [Wed, 19 Sep 2018 19:35:19 +0000 (19:35 +0000)]
re PR c++/87324 (g++ ICE with overriding initializers: Segmentation fault)
/cp
2018-09-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/87324
* parser.c (cp_parser_initializer_list): Assign error_mark_node
to the index upon error.
/testsuite
2018-09-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/87324
* g++.dg/cpp0x/desig5.C: New.
From-SVN: r264428
Paul Thomas [Wed, 19 Sep 2018 17:44:36 +0000 (17:44 +0000)]
re PR fortran/84109 (ICE in adjustl on allocatable array of strings)
2018-09-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84109
* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
assignment of deferred character intrinsic elemental function
results to a realocatable lhs must not be added to the exterior
block if they are array valued but must go to the loop body.
2018-09-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84109
* gfortran.dg/elemental_function_3.f90 : New test.
From-SVN: r264427
Segher Boessenkool [Wed, 19 Sep 2018 17:38:11 +0000 (19:38 +0200)]
combine: Use correct mode in new comparison (PR86902)
This code in try_combine uses the wrong mode. This fails (with RTL
checking) in trunk, but not in any released branches.
PR rtl-optimization/86902
* combine.c (try_combine): When changing the CC mode used, don't change
an unrelated mode in other_insn to that new CC mode.
From-SVN: r264426
Marek Polacek [Wed, 19 Sep 2018 16:59:51 +0000 (16:59 +0000)]
PR c++/87357 - missing -Wconversion warning
PR c++/87357 - missing -Wconversion warning
* decl.c (grok_op_properties): Remove diagnostic parts mentioning
a conversion to a reference to void. Use
same_type_ignoring_top_level_qualifiers_p rather than comparing types
directly.
* g++.dg/warn/Wconversion5.C: New test.
From-SVN: r264425
David Malcolm [Wed, 19 Sep 2018 16:18:06 +0000 (16:18 +0000)]
dump_printf: use %T and %G throughout
As promised at Cauldron, this patch uses %T and %G with dump_printf and
dump_printf_loc calls to eliminate calls to
dump_generic_expr (MSG_*, arg, TDF_SLIM) (via %T)
and
dump_gimple_stmt (MSG_*, TDF_SLIM, stmt, 0) (via %G)
throughout the middle-end, simplifying numerous dump callsites.
A few calls to these functions didn't match the above pattern; I didn't
touch these. I wasn't able to use %E anywhere.
gcc/ChangeLog:
* tree-data-ref.c (runtime_alias_check_p): Use formatted printing
with %T in place of calls to dump_generic_expr.
(prune_runtime_alias_test_list): Likewise.
(create_runtime_alias_checks): Likewise.
* tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
(vect_analyze_data_ref_dependence): Likewise.
(vect_slp_analyze_data_ref_dependence): Likewise.
(vect_record_base_alignment): Likewise. Use %G in place of call
to dump_gimple_stmt.
(vect_compute_data_ref_alignment): Likewise.
(verify_data_ref_alignment): Likewise.
(vect_find_same_alignment_drs): Likewise.
(vect_analyze_group_access_1): Likewise.
(vect_analyze_data_ref_accesses): Likewise.
(dependence_distance_ge_vf): Likewise.
(dump_lower_bound): Likewise.
(vect_prune_runtime_alias_test_list): Likewise.
(vect_find_stmt_data_reference): Likewise.
(vect_analyze_data_refs): Likewise.
(vect_create_addr_base_for_vector_ref): Likewise.
(vect_create_data_ref_ptr): Likewise.
* tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
(vect_can_advance_ivs_p): Likewise.
(vect_update_ivs_after_vectorizer): Likewise.
(vect_gen_prolog_loop_niters): Likewise.
(vect_prepare_for_masked_peels): Likewise.
* tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
(vect_determine_vectorization_factor): Likewise.
(vect_is_simple_iv_evolution): Likewise.
(vect_analyze_scalar_cycles_1): Likewise.
(vect_analyze_loop_operations): Likewise.
(report_vect_op): Likewise.
(vect_is_slp_reduction): Likewise.
(check_reduction_path): Likewise.
(vect_is_simple_reduction): Likewise.
(vect_create_epilog_for_reduction): Likewise.
(vect_finalize_reduction:): Likewise.
(vectorizable_induction): Likewise.
(vect_transform_loop_stmt): Likewise.
(vect_transform_loop): Likewise.
(optimize_mask_stores): Likewise.
* tree-vect-patterns.c (vect_pattern_detected): Likewise.
(vect_split_statement): Likewise.
(vect_recog_over_widening_pattern): Likewise.
(vect_recog_average_pattern): Likewise.
(vect_determine_min_output_precision_1): Likewise.
(vect_determine_precisions_from_range): Likewise.
(vect_determine_precisions_from_users): Likewise.
(vect_mark_pattern_stmts): Likewise.
(vect_pattern_recog_1): Likewise.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
(vect_record_max_nunits): Likewise.
(vect_build_slp_tree_1): Likewise.
(vect_build_slp_tree_2): Likewise.
(vect_print_slp_tree): Likewise.
(vect_analyze_slp_instance): Likewise.
(vect_detect_hybrid_slp_stmts): Likewise.
(vect_detect_hybrid_slp_1): Likewise.
(vect_slp_analyze_operations): Likewise.
(vect_slp_analyze_bb_1): Likewise.
(vect_transform_slp_perm_load): Likewise.
(vect_schedule_slp_instance): Likewise.
* tree-vect-stmts.c (vect_mark_relevant): Likewise.
(vect_mark_stmts_to_be_vectorized): Likewise.
(vect_init_vector_1): Likewise.
(vect_get_vec_def_for_operand): Likewise.
(vect_finish_stmt_generation_1): Likewise.
(vect_check_load_store_mask): Likewise.
(vectorizable_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_load): Likewise.
(vect_analyze_stmt): Likewise.
(vect_is_simple_use): Likewise.
(vect_get_vector_types_for_stmt): Likewise.
(vect_get_mask_type_for_stmt): Likewise.
* tree-vectorizer.c (increase_alignment): Likewise.
From-SVN: r264424
Andrew Stubbs [Wed, 19 Sep 2018 13:25:42 +0000 (13:25 +0000)]
Remove constant vec_select restriction.
The vec_select operator is documented to require a const_int for the lane
selector operand, but GCN has an instruction that can select the lane at
runtime, so it seems reasonable to remove this restriction.
This patch simply replaces assertions that the operand is constant with early
exits from the optimizers. I think it's reasonable that vec_select with a
non-constant operand cannot be optimized, yet.
Also included is the necessary documentation tweak.
2018-09-19 Andrew Stubbs <ams@codesourcery.com>
gcc/
* doc/rtl.texi: Adjust vec_select description.
* simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
non-constant selectors.
From-SVN: r264423
Jonathan Wakely [Wed, 19 Sep 2018 11:20:51 +0000 (12:20 +0100)]
Don't use __glibcxx_assert to check class invariants
Assertions should be used to check preconditions that users must meet,
not to check whether the implementation is correct.
* include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
Remove __glibcxx_assert statements and use map::find instead of
map::operator[].
From-SVN: r264422
Matthew Malcomson [Wed, 19 Sep 2018 10:24:59 +0000 (10:24 +0000)]
[AARCH64] Use STLUR for atomic_store
Use the STLUR instruction introduced in Armv8.4-a.
This instruction has the store-release semantic like STLR but can take a
9-bit unscaled signed immediate offset.
Example test case:
```
void
foo ()
{
int32_t *atomic_vals = calloc (4, sizeof (int32_t));
atomic_store_explicit (atomic_vals + 1, 2, memory_order_release);
}
```
Before patch generates
```
foo:
stp x29, x30, [sp, -16]!
mov x1, 4
mov x0, x1
mov x29, sp
bl calloc
mov w1, 2
add x0, x0, 4
stlr w1, [x0]
ldp x29, x30, [sp], 16
ret
```
After patch generates
```
foo:
stp x29, x30, [sp, -16]!
mov x1, 4
mov x0, x1
mov x29, sp
bl calloc
mov w1, 2
stlur w1, [x0, 4]
ldp x29, x30, [sp], 16
ret
```
We introduce a new feature flag to indicate the presence of this instruction.
The feature flag is called AARCH64_ISA_RCPC8_4 and is included when targeting
armv8.4 architecture.
We also introduce an "arch" attribute to be checked called "rcpc8_4" after this
feature flag.
gcc/
2018-09-19 Matthew Malcomson <matthew.malcomson@arm.com>
* config/aarch64/aarch64-protos.h
(aarch64_offset_9bit_signed_unscaled_p): New declaration.
* config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value.
(arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
* config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
(AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
(AARCH64_FL_PROFILE): Move index so flags are ordered.
(AARCH64_ISA_RCPC8_4): New flag.
* config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
to aarch64_offset_9bit_signed_unscaled_p.
* config/aarch64/atomics.md (atomic_store<mode>): Allow offset
and use stlur.
* config/aarch64/constraints.md (Ust): New constraint.
* config/aarch64/predicates.md.
(aarch64_9bit_offset_memory_operand): New predicate.
(aarch64_rcpc_memory_operand): New predicate.
gcc/testsuite/
2018-09-19 Matthew Malcomson <matthew.malcomson@arm.com>
* gcc.target/aarch64/atomic-store.c: New.
From-SVN: r264421
Eric Botcazou [Wed, 19 Sep 2018 10:12:04 +0000 (10:12 +0000)]
re PR rtl-optimization/87361 (gcc.target/sparc/
20161111-1.c FAILs)
PR rtl-optimization/87361
* rtlanal.c (nonzero_bits1): Revert accidental change.
From-SVN: r264420
Richard Biener [Wed, 19 Sep 2018 07:10:42 +0000 (07:10 +0000)]
re PR tree-optimization/87349 (ICE: Segmentation fault (in useless_type_conversion_p or is_gimple_reg_type))
2018-09-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/87349
PR tree-optimization/87342
* tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.
* gcc.dg/torture/pr87349-1.c: New testcase.
* gcc.dg/torture/pr87349-2.c: Likewise.
* gcc.dg/torture/pr87342.c: Likewise.
From-SVN: r264419
Simon Marchi [Wed, 19 Sep 2018 04:08:49 +0000 (04:08 +0000)]
libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, [...]): Backport changes from upstream gettext.
* libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext,
dcgettext, ngettext, dngettext, dcngettext): Backport changes
from upstream gettext.
From-SVN: r264418
GCC Administrator [Wed, 19 Sep 2018 00:16:46 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264417
François Dumont [Tue, 18 Sep 2018 20:36:16 +0000 (20:36 +0000)]
re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements)
2018-09-18 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/87135
* src/c++11/hashtable_c++0x.cc:
(_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
requested size, but not necessarily greater.
(_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
strictly greater than next resize threshold.
* testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
to validate that there is no rehash as long as number of insertion is
lower or equal to the reserved number of elements.
From-SVN: r264413
Thomas Koenig [Tue, 18 Sep 2018 20:18:09 +0000 (20:18 +0000)]
re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
2018-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/29550
* gfortran.h (gfc_expr): Add external_blas flag.
* frontend-passes.c (matrix_case): Add case A2TB2T.
(optimize_namespace): Handle flag_external_blas by
calling call_external_blas.
(get_array_inq_function): Add argument okind. If
it is nonzero, use it as the kind of argument
to be used.
(inline_limit_check): Remove m_case argument, add
limit argument instead. Remove assert about m_case.
Set the limit for inlining from the limit argument.
(matmul_lhs_realloc): Handle case A2TB2T.
(inline_matmul_assign): Handle inline limit for other cases with
two rank-two matrices. Remove no-op calls to inline_limit_check.
(call_external_blas): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
argument to external BLAS if external_blas is already set.
2018-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/29550
* gfortran.dg/inline_matmul_13.f90: Adjust count for
_gfortran_matmul.
* gfortran.dg/inline_matmul_16.f90: Likewise.
* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1. Scan
for dgemm instead of dgemm_. Add call to random_number to make
standard conforming.
* gfortran.dg/matmul_blas_1.f90: New test.
* gfortran.dg/matmul_bounds_14.f: New test.
* gfortran.dg/matmul_bounds_15.f: New test.
* gfortran.dg/matmul_bounds_16.f: New test.
* gfortran.dg/blas_gemm_routines.f: New test / additional file for
preceding tests.
From-SVN: r264412
Thomas Koenig [Tue, 18 Sep 2018 19:59:46 +0000 (19:59 +0000)]
re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
2018-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/29550
* gfortran.h (gfc_expr): Add external_blas flag.
* frontend-passes.c (matrix_case): Add case A2TB2T.
(optimize_namespace): Handle flag_external_blas by
calling call_external_blas.
(get_array_inq_function): Add argument okind. If
it is nonzero, use it as the kind of argument
to be used.
(inline_limit_check): Remove m_case argument, add
limit argument instead. Remove assert about m_case.
Set the limit for inlining from the limit argument.
(matmul_lhs_realloc): Handle case A2TB2T.
(inline_matmul_assign): Handle inline limit for other cases with
two rank-two matrices. Remove no-op calls to inline_limit_check.
(call_external_blas): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
argument to external BLAS if external_blas is already set.
2018-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/29550
* gfortran.dg/inline_matmul_13.f90: Adjust count for
_gfortran_matmul.
* gfortran.dg/inline_matmul_16.f90: Likewise.
* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1. Scan
for dgemm instead of dgemm_. Add call to random_number to make
standard conforming.
* gfortran.dg/matmul_blas_1.f90: New test.
* gfortran.dg/matmul_bounds_14.f: New test.
* gfortran.dg/matmul_bounds_15.f: New test.
* gfortran.dg/matmul_bounds_16.f: New test.
* gfortran.dg/blas_gemm_routines.f: New test / additional file for
preceding tests.
From-SVN: r264411
Paul Thomas [Tue, 18 Sep 2018 19:35:53 +0000 (19:35 +0000)]
re PR fortran/87239 (ICE in deferred-length string)
2018-09-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87239
* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
assignment of deferred character elemental function results to
a realocatable lhs must not be added to the exterior block but
must go to the loop body.
2018-09-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87239
* gfortran.dg/elemental_function_2.f90 : New test.
From-SVN: r264409
Marek Polacek [Tue, 18 Sep 2018 19:16:28 +0000 (19:16 +0000)]
P1064R0 - Allowing Virtual Function Calls in Constant Expressions
P1064R0 - Allowing Virtual Function Calls in Constant Expressions
* call.c (build_over_call): No longer check if we're outside a template
function.
* class.c (build_vtbl_initializer): Build vtable's constructor with
indexes.
* constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
initializer. Handle OBJ_TYPE_REF.
(potential_constant_expression_1): Handle OBJ_TYPE_REF.
* decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
(initialize_artificial_var): Mark the variable as constexpr.
(grokdeclarator): Change error to pedwarn. Only warn when
pedantic and not C++2a.
* gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.
* g++.dg/cpp0x/constexpr-virtual5.C: Adjust dg-error.
* g++.dg/cpp2a/constexpr-virtual1.C: New test.
* g++.dg/cpp2a/constexpr-virtual2.C: New test.
* g++.dg/cpp2a/constexpr-virtual3.C: New test.
* g++.dg/cpp2a/constexpr-virtual4.C: New test.
* g++.dg/cpp2a/constexpr-virtual5.C: New test.
* g++.dg/cpp2a/constexpr-virtual6.C: New test.
* g++.dg/cpp2a/constexpr-virtual7.C: New test.
* g++.dg/cpp2a/constexpr-virtual8.C: New test.
* g++.dg/cpp2a/constexpr-virtual9.C: New test.
* g++.dg/diagnostic/virtual-constexpr.C: Skip for C++2a. Use
-pedantic-errors. Adjust dg-error.
From-SVN: r264408
Paul Thomas [Tue, 18 Sep 2018 17:58:20 +0000 (17:58 +0000)]
re PR fortran/87336 (wrong output for pointer dummy assiocated to target actual argument)
2018-09-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87336
* trans-array.c (gfc_get_array_span): Try to get the element
length of incomplete types. Return NULL_TREE otherwise.
(gfc_conv_expr_descriptor): Only set the 'span' field if the
above does not return NULL_TREE. Set 'span' field if possible
for all new descriptors.
2018-09-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87336
* gfortran.dg/pointer_array_10.f90 : New test.
* gfortran.dg/assign_10.f90 : Increase 'parm' count to 20.
* gfortran.dg/transpose_optimization_2.f90 : Increase 'parm'
count to 72.
From-SVN: r264405
Segher Boessenkool [Tue, 18 Sep 2018 17:37:40 +0000 (19:37 +0200)]
rs6000: Remove old "Cygnus sibcall" comment
This comment is quite cryptic and very out-of-date by now. Committing.
* config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment.
From-SVN: r264403
Paolo Carlini [Tue, 18 Sep 2018 16:35:27 +0000 (16:35 +0000)]
re PR c++/85065 ([concepts] ICE with invalid use of a concept)
/cp
2018-09-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85065
* cp-tree.h (NON_ERROR): New.
* pt.c (auto_hash::hash): Use it.
(do_auto_deduction): Likewise.
/testsuite
2018-09-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85065
* g++.dg/concepts/pr85065.C: New.
From-SVN: r264402
Segher Boessenkool [Tue, 18 Sep 2018 16:19:56 +0000 (18:19 +0200)]
Handle CLOBBER in reg_overlap_mentioned_p (PR86882)
Combine will put CLOBBER (with a non-void mode) anywhere in a pattern
to poison it. reg_overlap_mentioned_p did not handle this. This patch
fixes that.
PR rtl-optimization/86882
* rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.
From-SVN: r264400
Jonathan Wakely [Tue, 18 Sep 2018 16:05:36 +0000 (17:05 +0100)]
Fix location of invocable check for unique_ptr deleter
The deleter only needs to be invocable when the unique_ptr destructor
and reset member function are instantiated. In other contexts it might
not be possible to pass unique_ptr<T, D>::pointer to the deleter, if
that requires a derived-to-base conversion from T* and T is incomplete.
* include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
checking invocable condition.
(unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
here, where types must be complete. Pass pointer to deleter as an
rvalue.
* testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
From-SVN: r264399
Uros Bizjak [Tue, 18 Sep 2018 15:51:54 +0000 (17:51 +0200)]
i386.md (*<code>extend<mode>xf2): Macroize insn from *<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode...
* config/i386/i386.md (*<code>extend<mode>xf2): Macroize insn from
*<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.
From-SVN: r264398
Cesar Philippidis [Tue, 18 Sep 2018 15:41:54 +0000 (08:41 -0700)]
[nvptx] Remove use of CUDA unified memory in libgomp
libgomp/
* plugin/plugin-nvptx.c (struct cuda_map): New.
(struct ptx_stream): Replace d, h, h_begin, h_end, h_next, h_prev,
h_tail with (cuda_map *) map.
(cuda_map_create): New function.
(cuda_map_destroy): New function.
(map_init): Update to use a linked list of cuda_map objects.
(map_fini): Likewise.
(map_pop): Likewise.
(map_push): Likewise. Return CUdeviceptr instead of void.
(init_streams_for_device): Remove stales references to ptx_stream
members.
(select_stream_for_async): Likewise.
(nvptx_exec): Update call to map_init.
From-SVN: r264397
Jonathan Wakely [Tue, 18 Sep 2018 14:19:55 +0000 (15:19 +0100)]
PR other/87353 fix formatting and grammar in manual
The changes to invoke.texi in r242433 left some unwanted spaces that
texi2pod.pl interprets as verbatim formatting. There are also some
grammatical errors due to the removal of references to GCJ, where the
G++ driver is referred to in the plural.
PR other/87353
* doc/invoke.texi (Link Options): Fix formatting and grammar.
From-SVN: r264395
Nathan Sidwell [Tue, 18 Sep 2018 14:14:57 +0000 (14:14 +0000)]
Fix dg-do target
From-SVN: r264394
Kyrylo Tkachov [Tue, 18 Sep 2018 14:09:54 +0000 (14:09 +0000)]
Add PR marker to previous commit
From-SVN: r264393
Kyrylo Tkachov [Tue, 18 Sep 2018 13:54:36 +0000 (13:54 +0000)]
Fix gcc.dg/warn-abs-1.c for arm and aarch64-none-elf
This new test has some difficulties on the fabsl function.
On arm this is because we don't support the _Float128 type which the test uses.
This is handled in the patch by requiring a float128 target selector.
On aarch64-none-elf, a Newlib target, it fails because fabsl is not available.
long double support is known to be incomplete in newlib, and the fabsl function is not available
for targets where long double is larger than a double.
Therefore this patch skips the test on such targets.
* gcc.dg/warn-abs-1.c: Require float128 target.
Skip if large_long_double newlib target.
From-SVN: r264392
Nathan Sidwell [Tue, 18 Sep 2018 13:52:30 +0000 (13:52 +0000)]
[PATCH c++/86881] -Wshadow-local-compatible ICE
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00984.html
PR c++/86881
cp/
* name-lookup.c (check_local_shadow): Ignore auto types.
testsuite/
* g++.dg/warn/pr86881.C: New.
From-SVN: r264391
Kyrylo Tkachov [Tue, 18 Sep 2018 13:32:12 +0000 (13:32 +0000)]
[AArch64][committed] Fix gcc.target/aarch64/spellcheck_1.c and spellcheck_4.c
These two tests started failing after commit r264335 that adjusted the cutoff point at which the diagnostic suggestions machinery decides a suggestion is meaningful.
For these tests it means we no longer suggest anything as an alternative to "armv8-a-typo" as an "arch=" pargma value. We do still list the valid options, we just don't prefer one particular value over the others.
When I first wrote this test it wasn't with a particular architecture suggestion in mind, but rather to test that the suggestion machinery is being sanely invoked.
So this patch changes the dg-message check to treat the "did you mean...?" hunk as optional (in case the heuristics in the suggestions machinery change again).
With this patch the two tests PASS again on aarch64.
* gcc.target/aarch64/spellcheck_1.c:
Make architecture suggestion optional.
* gcc.target/aarch64/spellcheck_4.c:
Likewise.
From-SVN: r264390
Kyrylo Tkachov [Tue, 18 Sep 2018 13:28:50 +0000 (13:28 +0000)]
[AArch64][testsuite][committed] Fix gcc.target/aarch64/combine_bfxil.c for -mabi=ilp32
As described in https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00963.html this test generates UXTW instructions with -mabi=ilp32
because the foo* functions take pointers and store results into them. In ILP32 the callee clears the top bits with a UXTW.
This trips the scan-assembler-not UXTW test that checks that the zero_extend form of the BFXIL pattern is used, which it is.
This patch avoids this problem by not passing pointers to the results, but instead using global variables for which the foo* functions
will synthesise the address using ADRP, avoiding the UXTW instructions.
With this patch the test PASSes fully with -mabi=ilp32 and still PASSes on LP64.
* gcc.target/aarch64/combine_bfxil.c: Avoid passing pointers to
functions.
From-SVN: r264389
Richard Biener [Tue, 18 Sep 2018 13:26:05 +0000 (13:26 +0000)]
re PR middle-end/63155 (memory hog)
2018-09-18 Richard Biener <rguenther@suse.de>
PR middle-end/63155
* tree-ssa-coalesce.c (tree_int_map_hasher): Remove.
(compute_samebase_partition_bases): Likewise.
(coalesce_ssa_name): Always use compute_optimized_partition_bases.
(gimple_can_coalesce_p): Simplify.
From-SVN: r264388
Rainer Orth [Tue, 18 Sep 2018 07:04:15 +0000 (07:04 +0000)]
Use v2 map syntax in libgcc-unwind.map if Solaris ld supports it
* configure.ac (solaris_ld_v2_maps): New test.
* configure: Regenerate.
* Makefile.in (solaris_ld_v2_maps): New variable.
* config/t-slibgcc-sld (libgcc-unwind.map): Emit v2 mapfile syntax
if supported.
From-SVN: r264382
Hans-Peter Nilsson [Tue, 18 Sep 2018 02:42:15 +0000 (02:42 +0000)]
Handle a library implementation of ffs calling __builtin_ffs.
* config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with...
(mmix_init_libfuncs): New function: make __builtin_ffs expand
to __ffsdi2.
From-SVN: r264381
GCC Administrator [Tue, 18 Sep 2018 00:16:45 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264380
David Malcolm [Mon, 17 Sep 2018 23:32:12 +0000 (23:32 +0000)]
Add range_idx param to range_label::get_text
This patch updates the pure virtual function range_label::get_text
(and its implementations) so that the index of the range is passed
in, allowing for one label instance to be shared by multiple ranges.
gcc/c-family/ChangeLog:
* c-format.c (range_label_for_format_type_mismatch::get_text):
Update for new param.
gcc/c/ChangeLog:
* c-objc-common.c (range_label_for_type_mismatch::get_text):
Update for new param.
* c-typeck.c (maybe_range_label_for_tree_type_mismatch::get_text):
Likewise.
gcc/cp/ChangeLog:
* error.c (range_label_for_type_mismatch::get_text): Update for
new param.
gcc/ChangeLog:
* diagnostic-show-locus.c (class layout_range): Add field
"m_original_idx".
(layout_range::layout_range): Add "original_idx" param and use it
to initialize new field.
(make_range): Use 0 for original_idx.
(layout::layout): Pass in index to calls to
maybe_add_location_range.
(layout::maybe_add_location_range): Add param "original_idx" and
pass it on to layout_range.
(layout::print_any_labels): Pass on range->m_original_idx to
get_text call.
(gcc_rich_location::add_location_if_nearby): Use 0 for
original_idx.
* gcc-rich-location.h (text_range_label::get_text): Update for new
param.
(range_label_for_type_mismatch::get_text): Likewise.
libcpp/ChangeLog:
* include/line-map.h (range_label::get_text): Add param
"range_idx".
From-SVN: r264376
Uros Bizjak [Mon, 17 Sep 2018 20:33:04 +0000 (22:33 +0200)]
i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.
* config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.
From-SVN: r264373
David Malcolm [Mon, 17 Sep 2018 20:31:01 +0000 (20:31 +0000)]
substring-locations: add class format_string_diagnostic_t
With the addition of ranges in r263564, format_warning_at_substring_n
has 10 arguments.
Reduce the number of args by bundling the shared ones into a
class format_string_diagnostic_t.
gcc/c-family/ChangeLog:
* c-format.c (format_warning_at_char): Update for introduction of
format_string_diagnostic_t.
(format_type_warning): Likewise.
gcc/ChangeLog:
* gimple-ssa-sprintf.c (fmtwarn): Update for introduction of
format_string_diagnostic_t.
(fmtwarn_n): Likewise.
* substring-locations.c
(format_string_diagnostic_t::format_string_diagnostic_t) New ctor.
(format_warning_n_va): Convert to...
(format_string_diagnostic_t::emit_warning_n_va): ...this.
(format_warning_va): Convert to...
(format_string_diagnostic_t::emit_warning_va): ...this.
(format_warning_at_substring): Convert to...
(format_string_diagnostic_t::emit_warning): ...this.
(format_warning_at_substring_n): Convert to...
(format_string_diagnostic_t::emit_warning_n): ...this.
* substring-locations.h (class format_string_diagnostic_t): New
class.
(format_warning_va): Convert to
format_string_diagnostic_t::emit_warning_va.
(format_warning_n_va): Convert to
format_string_diagnostic_t::emit_warning_n_va.
(format_warning_at_substring): Convert to
format_string_diagnostic_t::emit_warning.
(format_warning_at_substring_n): Convert to
format_string_diagnostic_t::emit_warning_n.
From-SVN: r264372
Cesar Philippidis [Mon, 17 Sep 2018 19:59:19 +0000 (12:59 -0700)]
[nvptx] Add atomic_fetch* support for SImode arguments.
gcc/
* config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with
SImode args.
gcc/testsuite/
* gcc.target/nvptx/atomic-fetch-2.c: Rename to ...
* gcc.target/nvptx/atomic_fetch-2.c: ... this.
* gcc.target/nvptx/atomic_fetch-3.c: New test.
Co-Authored-By: Bernd Schmidt <bernds_cb1@t-online.de>
From-SVN: r264371
Uros Bizjak [Mon, 17 Sep 2018 15:00:57 +0000 (17:00 +0200)]
i386.md (truncxf<mode>2_i387_noop_unspec): Change operand 0 predicate to nonimmediate operand.
* config/i386/i386.md (truncxf<mode>2_i387_noop_unspec): Change
operand 0 predicate to nonimmediate operand.
(rint<mode>2_frndint): Remove insn pattern.
(rint<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate rintxf2 insn.
(frndintxf2_<rounding>): Rename from frndint<mode>2_<rounding>.
Do not use X87MODEF mode macro.
(frndintxf2_<rounding>_i387): Rename from
frndint<mode>2_<rounding>_i387. Do not use X87MODEF mode macro.
(<rounding_insn><mode>2): For non-SSE modes, extend operand 1
to XFmode and generate significandxf3 insn.
From-SVN: r264370
Richard Biener [Mon, 17 Sep 2018 13:28:04 +0000 (13:28 +0000)]
re PR tree-optimization/87328 (ICE in do_rpo_vn, at tree-ssa-sccvn.c:6566)
2018-09-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/87328
* tree-ssa-sccvn.c (process_bb): Remove assertion about not
visiting unexecutable backedges when not iterating.
(do_rpo_vn): Mark all edges not executable even when not
iterating.
* gcc.dg/torture/pr87328.c: New testcase.
From-SVN: r264369
Martin Jambor [Mon, 17 Sep 2018 13:12:12 +0000 (15:12 +0200)]
Add -Wabsolute-value
2018-09-17 Martin Jambor <mjambor@suse.cz>
gcc/
* doc/invoke.texi (Warning Options): Likewise.
gcc/c-family/
* c.opt (Wabsolute-value): New.
gcc/c/
* c-parser.c: (warn_for_abs): New function.
(c_parser_postfix_expression_after_primary): Call it.
testsuite/
* gcc.dg/warn-abs-1.c: New test.
* gcc.dg/dfp/warn-abs-2.c: Likewise.
From-SVN: r264368
Bernd Edlinger [Mon, 17 Sep 2018 12:41:58 +0000 (12:41 +0000)]
ms-sysv.exp: Don't pass TEST_ALWAYS_FLAGS to HOSTCXX.
2018-09-17 Bernd Edlinger <bernd.edlinger@hotmail.de>
* gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp: Don't pass
TEST_ALWAYS_FLAGS to HOSTCXX.
From-SVN: r264367
Paul Thomas [Mon, 17 Sep 2018 11:22:27 +0000 (11:22 +0000)]
re PR fortran/64120 ([F03] Wrong handling of allocatable character string)
2018-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/64120
* trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar
characters with a variable length expression for deferred init.
(gfc_trans_deferred_vars): Perform the assignment for these
symbols by calling gfc_conv_string_length.
2018-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/64120
* gfortran.dg/allocatable_scalar_14.f90 : New test.
From-SVN: r264365
Richard Biener [Mon, 17 Sep 2018 10:21:21 +0000 (10:21 +0000)]
re PR tree-optimization/87301 (ICE: verify_gimple failed (error: statement marked for throw, but doesn't))
2018-09-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/87301
* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
clean EH info from leftover copy assignments.
* gcc.dg/torture/pr87301.c: New testcase.
From-SVN: r264364
Martin Liska [Mon, 17 Sep 2018 10:19:02 +0000 (12:19 +0200)]
Fix out-of-bounds in gcov.c (PR gcov-profile/85871).
2018-09-17 Martin Liska <mliska@suse.cz>
PR gcov-profile/85871
* gcov.c (output_intermediate_file): Fix out of bounds
access.
From-SVN: r264363
Vineet Gupta [Mon, 17 Sep 2018 08:52:22 +0000 (08:52 +0000)]
[ARC] Enable DBNZ for core3 and newer CPUs.
2018-09-17 Vineet Gupta <vgupta@synopsys.com>
* config/arc/arc.c: Object attributes for core4 not reflected
correctly.
* config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes
core3).
From-SVN: r264362
Alexey Brodkin [Mon, 17 Sep 2018 08:52:10 +0000 (08:52 +0000)]
[ARC] Update LINK_EH_SPEC linker spec.
With no trailing space in LINK_EH_SPEC linker spec gets generated as:
------------------------>8---------------------
%{!r:--build-id} --eh-frame-hdr%{h*} ...
------------------------>8---------------------
or even worse if hash style is added:
------------------------>8---------------------
%{!r:--build-id} --eh-frame-hdr--hash-style=sysv %{h*} ...
------------------------>8---------------------
Now if that spec is really used by LD then it fails inevitably
saying that it doesn't know option "--eh-frame-hdr--hash-style=sysv".
2018-09-17 Alexey Brodkin <abrodkin@synopsys.com>
* config/arc/linux.h (LINK_EH_SPEC): Add missing space.
From-SVN: r264361
Martin Liska [Mon, 17 Sep 2018 08:49:09 +0000 (10:49 +0200)]
gcov: emit hotness colors to easily find hot code.
2018-09-17 Martin Liska <mliska@suse.cz>
* doc/gcov.texi: Document new option --use-hotness-colors.
* gcov.c (struct source_info): Declare new field.
(source_info::source_info): Set default for maximum_count.
(print_usage): Add new -q option.
(process_args): Process it.
(accumulate_line_info): Save src->maximum_count.
(output_line_beginning): Make color line number if
flag_use_hotness_colors is set.
(output_line_details): Pass default argument value.
(output_lines): Pass src->maximum_count.
From-SVN: r264360
Martin Liska [Mon, 17 Sep 2018 08:47:38 +0000 (10:47 +0200)]
i386: move alignment defaults to processor_costs.
2018-09-17 Martin Liska <mliska@suse.cz>
* common/config/i386/i386-common.c (ix86_get_valid_option_values):
Use processor_names table.
* config/i386/i386.c (ix86_default_align): Use
processor_cost_table for alignment values.
(ix86_option_override_internal): Use processor_names.
(ix86_function_specific_print): Likewise.
* config/i386/i386.h (struct processor_costs):
Add alignment values.
(struct ptt): Remove and replace with const char *.
* config/i386/x86-tune-costs.h (struct processor_costs):
Declare default alignments for all costs.
From-SVN: r264359
Paul Thomas [Mon, 17 Sep 2018 07:18:17 +0000 (07:18 +0000)]
re PR fortran/85954 (ICE in make_ssa_name_fn, at tree-ssanames.c:266)
2018-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/85954
* resolve.c (resolve_assoc_var): If the target expression is a
deferred charlen dummy and the associate name shares the
charlen, generate a new one. Make sure that new charlens are in
the namespace list so that they get cleaned up.
* trans-array.c (gfc_is_reallocatable_lhs): Associate names are
not reallocatable.
* trans-decl.c (gfc_get_symbol_decl): Put deferred character
length dummy and result arrays on the deferred initialization
list so that the variable length arrays can be correctly dealt
with.
* trans-expr.c (gfc_conv_string_length): Return if 'expr' is
NULL rather than ICEing..
2018-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/85954
* gfortran.dg/deferred_character_21.f90 : New test.
From-SVN: r264358
Aldy Hernandez [Mon, 17 Sep 2018 06:07:52 +0000 (06:07 +0000)]
tree-vrp.c (extract_range_from_unary_expr): Do not special case symbolics or VR_VARYING ranges for ABS_EXPR.
* tree-vrp.c (extract_range_from_unary_expr): Do not special case
symbolics or VR_VARYING ranges for ABS_EXPR.
* wide-int-range.cc (wide_int_range_abs): Return positive numbers
when range will wrap.
From-SVN: r264356
GCC Administrator [Mon, 17 Sep 2018 00:16:33 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264355
Janus Weil [Sun, 16 Sep 2018 19:57:52 +0000 (21:57 +0200)]
fix PR 86484 and PR 84543
2018-09-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/86484
PR fortran/84543
* match.c (gfc_match_assignment): For a polymorphic assignment,
make sure that the vtab for the rhs type is generated.
2018-09-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/86484
PR fortran/84543
* gfortran.dg/class_assign_2.f90: New test case.
* gfortran.dg/class_assign_3.f90: New test case.
From-SVN: r264350
Thomas Koenig [Sun, 16 Sep 2018 19:37:44 +0000 (19:37 +0000)]
re PR fortran/37802 (Improve wording for matmul bound checking)
2018-09-16 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37802
* frontend-passes.c (B_ERROR): New macro for matmul bounds
checking error messages.
(C_ERROR): Likewise.
(inline_matmul_assign): Reorganize bounds checking, use B_ERROR
and C_ERROR macros.
2018-09-16 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37802
* gfortran.dg/matmul_bounds_13.f90: New test case.
* gfortran.dg/inline_matmul_15.f90: Adjust test for runtime
error.
* gfortran.dg/matmul_5.f90: Likewise.
* gfortran.dg/matmul_bounds_10.f90: Likewise.
* gfortran.dg/matmul_bounds_11.f90: Likewise.
* gfortran.dg/matmul_bounds_2.f90: Likewise.
* gfortran.dg/matmul_bounds_4.f90: Likewise.
* gfortran.dg/matmul_bounds_5.f90: Likewise.
2018-09-16 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37802
* m4/matmul_internal.m4: Adjust error messages.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Regenerated.
* generated/matmul_c4.c: Regenerated.
* generated/matmul_c8.c: Regenerated.
* generated/matmul_i1.c: Regenerated.
* generated/matmul_i16.c: Regenerated.
* generated/matmul_i2.c: Regenerated.
* generated/matmul_i4.c: Regenerated.
* generated/matmul_i8.c: Regenerated.
* generated/matmul_r10.c: Regenerated.
* generated/matmul_r16.c: Regenerated.
* generated/matmul_r4.c: Regenerated.
* generated/matmul_r8.c: Regenerated.
* generated/matmulavx128_c10.c: Regenerated.
* generated/matmulavx128_c16.c: Regenerated.
* generated/matmulavx128_c4.c: Regenerated.
* generated/matmulavx128_c8.c: Regenerated.
* generated/matmulavx128_i1.c: Regenerated.
* generated/matmulavx128_i16.c: Regenerated.
* generated/matmulavx128_i2.c: Regenerated.
* generated/matmulavx128_i4.c: Regenerated.
* generated/matmulavx128_i8.c: Regenerated.
* generated/matmulavx128_r10.c: Regenerated.
* generated/matmulavx128_r16.c: Regenerated.
* generated/matmulavx128_r4.c: Regenerated.
* generated/matmulavx128_r8.c: Regenerated.
From-SVN: r264349
GCC Administrator [Sun, 16 Sep 2018 00:16:43 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264346
Eric Botcazou [Sat, 15 Sep 2018 09:21:09 +0000 (09:21 +0000)]
re PR middle-end/86864 (ICE in commit_one_edge_insertion on switch construct)
PR middle-end/86864
* cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
before and after a JUMP_TABLE_DATA.
From-SVN: r264342
GCC Administrator [Sat, 15 Sep 2018 00:16:27 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264341
John David Anglin [Fri, 14 Sep 2018 23:26:12 +0000 (23:26 +0000)]
re PR middle-end/87188 (Function pointer canonicalization optimized away)
PR middle-end/87188
* dojump.c (do_compare_and_jump): Canonicalize function pointers
when one operand is a function pointer. Use POINTER_TYPE_P and
FUNC_OR_METHOD_TYPE_P.
* expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P.
* fold-const.c (build_range_check): Likewise.
* match.pd (simple_comparison): Likewise.
From-SVN: r264336
David Malcolm [Fri, 14 Sep 2018 22:02:58 +0000 (22:02 +0000)]
Fix overeager spelling corrections (PR c/82967)
This patch tunes class best_match's cutoff for rejecting meaningless
spelling suggestions.
Previously, we allowed an edit distance of up to half of the length of the
longer of the goal string and closest candidate strings, rounded down.
With this patch, we now allow only up to a third - with some tuning of
rounding (and for very short strings), to ensure that:
(a) everything that worked before still works (with the removal of a
couple of cases that shouldn't), and that
(b) the new threshold is always at least as conservative as the old
threshold and thus shouldn't offer new nonsensical suggestions (with
the possible exception of cases where transposition has helped; see
r261521 aka Damerau-Levenshtein; PR other/69968).
In particular, all of the bogus suggestions from PR c/82967 are now
no longer offered.
gcc/ChangeLog:
PR c/82967
* spellcheck.c (get_edit_distance_cutoff): New function.
(selftest::test_edit_distance_unit_test_oneway): Rename to...
(selftest::test_get_edit_distance_one_way): ...this.
(selftest::test_get_edit_distance_unit): Rename to...
(selftest::test_get_edit_distance_both_ways): ...this.
(selftest::test_edit_distances): Move tests to this new function,
and test some more pairs of strings. Update for above renaming.
(selftest::get_old_cutoff): New function.
(selftest::test_get_edit_distance_cutoff): New function.
(selftest::assert_suggested_for): New function.
(ASSERT_SUGGESTED_FOR): New macro.
(selftest::assert_not_suggested_for): New function.
(ASSERT_NOT_SUGGESTED_FOR): New macro.
(selftest::test_suggestions): New function.
(selftest::spellcheck_c_tests): Move test_get_edit_distance_unit
tests to selftest::test_edit_distances and call it. Add calls to
selftest::test_get_edit_distance_cutoff and
selftest::test_suggestions.
* spellcheck.h (get_edit_distance_cutoff): New function declaration.
(best_match::consider): Replace hard-coded cutoff calculation with
a call to...
(best_match::get_cutoff): New declaration.
(best_match::get_best_meaningful_candidate): Likewise.
gcc/testsuite/ChangeLog:
PR c/82967
* c-c++-common/attributes-1.c: Remove bogus suggestion from
dg-prune-output.
* gcc.dg/diagnostic-token-ranges.c (undeclared_identifier): Remove
bogus suggestion.
* gcc.dg/spellcheck-identifiers-4.c: New test.
From-SVN: r264335
Bernd Edlinger [Fri, 14 Sep 2018 20:36:19 +0000 (20:36 +0000)]
builtins.c (fold_builtin_strlen): Remove TODO comment.
2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
* builtins.c (fold_builtin_strlen): Remove TODO comment.
testsuite:
2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
* gcc.dg/warn-strlen-no-nul.c: Add some missing test cases.
From-SVN: r264334
Bernd Edlinger [Fri, 14 Sep 2018 20:14:20 +0000 (20:14 +0000)]
fix previous commit message
From-SVN: r264333
Bernd Edlinger [Fri, 14 Sep 2018 19:56:32 +0000 (19:56 +0000)]
2018-09-14 Bernd Edlinger msebor@redhat.com>
revert:
2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
* tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
terminated string literal.
From-SVN: r264332
Ian Lance Taylor [Fri, 14 Sep 2018 19:42:01 +0000 (19:42 +0000)]
cmd/go: correct gccgo buildid file on ARM
Bring in https://golang.org/cl/135297 from the gc repository to fix a
GCC bug report.
Original CL description:
The GNU assembler for ARM treats @ as a comment character, so section
types must be written using % instead.
Fixes https://gcc.gnu.org/PR87260.
Reviewed-on: https://go-review.googlesource.com/135360
From-SVN: r264330
Martin Sebor [Fri, 14 Sep 2018 18:35:26 +0000 (18:35 +0000)]
builtins.c (unterminated_array): Handle ARRAY_REF.
* builtins.c (unterminated_array): Handle ARRAY_REF.
(expand_builtin_stpcpy_1): Detect unterminated char arrays.
* builtins.h (unterminated_array): Declare extern.
* gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated
arrays.
(gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed
calls.
* gcc.dg/warn-stpcpy-no-nul.c: New test.
From-SVN: r264328
Martin Sebor [Fri, 14 Sep 2018 18:23:58 +0000 (18:23 +0000)]
builtins.c (unterminated_array): New.
* builtins.c (unterminated_array): New.
(expand_builtin_strcpy): Adjust.
(expand_builtin_strcpy_args): Detect unterminated arrays.
* gimple-fold.c (get_maxval_strlen): Add argument. Detect
unterminated arrays.
* gimple-fold.h (get_maxval_strlen): Add argument.
(gimple_fold_builtin_strcpy): Detec unterminated arrays.
* gimple-fold.c (get_range_strlen): Add argument.
(get_maxval_strlen): Adjust.
* gimple-fold.h (get_range_strlen): Add argument.
* gcc.dg/warn-strcpy-no-nul.c: New test.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264327
Wei Xiao [Fri, 14 Sep 2018 17:03:09 +0000 (17:03 +0000)]
* config/i386/movdirintrin.h: Fix copyright year.
From-SVN: r264326
Ian Lance Taylor [Fri, 14 Sep 2018 16:55:41 +0000 (16:55 +0000)]
compiler: don't use address of temporary for deferred delete
This CL corrects the handling of a deferred delete in a loop, to not
use a temporary whose value will, at deferred execution time, wind up
being the last value in the loop.
The test for this is TestDeferDeleteSlow in the 1.11 runtime package.
Reviewed-on: https://go-review.googlesource.com/135358
From-SVN: r264325