gcc.git
6 years agors6000: Some mfcr pattern simplification
Segher Boessenkool [Fri, 5 Oct 2018 19:40:36 +0000 (21:40 +0200)]
rs6000: Some mfcr pattern simplification

* config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator
patterns): Merge SI and DI patterns to a GPR pattern.
(unnamed define_insn and define_split for record form of that): Merge
to a single define_insn_and_split pattern.

From-SVN: r264889

6 years agostring_merge1.adb: Fix test expectations.
Bernd Edlinger [Fri, 5 Oct 2018 19:19:42 +0000 (19:19 +0000)]
string_merge1.adb: Fix test expectations.

2018-10-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gnat.dg/string_merge1.adb: Fix test expectations.
        * gnat.dg/string_merge2.adb: Likewise.

From-SVN: r264888

6 years agoSupport string locations for C++ in -Wformat (PR c++/56856)
David Malcolm [Fri, 5 Oct 2018 19:02:17 +0000 (19:02 +0000)]
Support string locations for C++ in -Wformat (PR c++/56856)

-Wformat in the C++ FE doesn't work as well as it could:
(a) it doesn't report precise locations within the string literal, and
(b) it doesn't underline arguments for those arguments !CAN_HAVE_LOCATION_P,
despite having location wrapper nodes.

For example:

  Wformat-ranges.C:32:10: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
  32 |   printf("hello %s", 42);
     |          ^~~~~~~~~~

(a) is due to not wiring up the langhook for extracting substring
    locations.

    This patch uses the one in c-family; it also fixes string literal
    parsing so that it records string concatenations (needed for
    extracting substring locations from concatenated strings).

(b) is due to the call to maybe_constant_value here:
       fargs[j] = maybe_constant_value (argarray[j]);
    within build_over_call.

    The patch fixes this by building a vec of location_t values when
    calling check_function_arguments.
    I attempted to eliminate the maybe_constant_value call here, but
    it's needed by e.g. check_function_sentinel for detecting NULL,
    and that code is in "c-family", so it can't simply call into
    maybe_constant_value (which is in "cp").

With this patch, the output for the above example is improved to:

  Wformat-ranges.C:32:18: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
  32 |   printf("hello %s", 42);
     |                 ~^   ~~
     |                  |   |
     |                  |   int
     |                  char*
     |                 %d

gcc/cp/ChangeLog:
PR c++/56856
* call.c (build_over_call): Build a vec of locations of the
arguments before the call to maybe_constant_value, and pass to
check_function_arguments.
* cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
c_get_substring_location.
* parser.c (cp_parser_string_literal): Capture string
concatenation locations.

gcc/ChangeLog:
PR c++/56856
* input.c (expand_location_to_spelling_point): Add param "aspect"
and use rather than hardcoding LOCATION_ASPECT_CARET.
(get_substring_ranges_for_loc): Handle the case of a single token
within a macro expansion.
* input.h (expand_location_to_spelling_point): Add "aspect" param,
defaulting to LOCATION_ASPECT_CARET.

gcc/testsuite/ChangeLog:
PR c++/56856
* g++.dg/ext/builtin4.C: Set expected location for warning to the
correct location within the format string.
* g++.dg/plugin/plugin.exp (plugin_test_list): Add the plugin and
files for testing locations within string literal locations from
the C frontend.
* g++.dg/warn/Wformat-method.C: New test.
* g++.dg/warn/Wformat-pr71863.C: New test.
* g++.dg/warn/Wformat-ranges-c++11.C: New test.
* g++.dg/warn/Wformat-ranges.C: New test, based on
gcc.dg/format/diagnostic-ranges.c.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_multitoken_macro): Generalize expected output to work with
both C and C++.
* gcc.dg/plugin/diagnostic-test-string-literals-2.c
(test_stringified_token_1): Likewise.
(test_stringified_token_3): Likewise.

From-SVN: r264887

6 years ago* config/i386/i386.md: Reorder cmpi patterns.
Uros Bizjak [Fri, 5 Oct 2018 18:59:04 +0000 (20:59 +0200)]
* config/i386/i386.md: Reorder cmpi patterns.

From-SVN: r264886

6 years agoi386.md (*cmpxf_cc_i387): Remove pattern.
Uros Bizjak [Fri, 5 Oct 2018 18:48:56 +0000 (20:48 +0200)]
i386.md (*cmpxf_cc_i387): Remove pattern.

* config/i386/i386.md (*cmpxf_cc_i387): Remove pattern.
(*cmp<mode>_cc_i387): Ditto.
(*cmpu<mode>_cc_i387): Ditto.
(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
* config/i386/i386.c (ix86_expand_fp_compare): Remove
"scratch" argument.
<case IX86_FPCMP_SAHF>: Do not generate pattern with HImode clobber.
Emit x86_sahf_1 pattern.
(ix86_expand_compare): Update call to ix86_expand_fp_compare.
(ix86_expand_carry_flag_compare): Ditto.

From-SVN: r264884

6 years agoAdd some pdp11 target hook definitions for C++
Paul Koning [Fri, 5 Oct 2018 18:08:34 +0000 (14:08 -0400)]
Add some pdp11 target hook definitions for C++

    * config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define.
    (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define.
    (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
    (pdp11_guard_type): New function.

From-SVN: r264883

6 years agolibgo: use inline assembly in favor of call to _xgetbv()
Ian Lance Taylor [Fri, 5 Oct 2018 17:51:57 +0000 (17:51 +0000)]
libgo: use inline assembly in favor of call to _xgetbv()

    Use inline assembly in the implementation of internal_cpu.xgetbv as
    opposed to a call to the intrinsic _xgetbv(), since non-gcc compilers
    (e.g. clang) may or may not have support for it.

    Reviewed-on: https://go-review.googlesource.com/c/140137

From-SVN: r264882

6 years agoRemove -mfloat32, -mfloat64 switches from pdp11 target.
Paul Koning [Fri, 5 Oct 2018 17:37:56 +0000 (13:37 -0400)]
Remove -mfloat32, -mfloat64 switches from pdp11 target.

    * config/pdp11/pdp11.h (FLOAT_TYPE_SIZE): Always 32.
    * config/pdp11/pdp11.opt (mfloat32): Remove.
    (mfloat64): Remove.
    * doc/invoke.texi (pdp11 -mfloat32): Remove:
    (pdp11 -mfloat64): Remove.

From-SVN: r264881

6 years agotestsuite: multiline.exp: implement optional target/xfail selector
David Malcolm [Fri, 5 Oct 2018 17:35:55 +0000 (17:35 +0000)]
testsuite: multiline.exp: implement optional target/xfail selector

gcc/testsuite/ChangeLog:
* lib/multiline.exp (proc dg-end-multiline-output): Check argument
count.  If there's a 3rd argument, use dg-process-target on it,
bailing out, or recording expected failures as "maybe_x".
(proc handle-multiline-outputs): Extract "maybe_x", and use it
to convert pass/fail into xpass/xfail.

From-SVN: r264880

6 years agoi386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand.
Uros Bizjak [Fri, 5 Oct 2018 17:07:17 +0000 (19:07 +0200)]
i386.md (*cmpxf_i387): Change operand 2 predicate to reg_or_0_operand.

* config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate
to reg_or_0_operand.  Add "C" constraint.
(*cmpxf_cc_i387): Ditto.
(*cmp<mode>_i387): Change operand 2 predicate
to nonimm_or_0_operand.  Add "C" constraint.
(*cmp<mode>_cc_i387): Ditto.
(*cmp<mode>_0_i387): Remove insn pattern.
(*cmp<mode>_0_cc_i387): Ditto.

From-SVN: r264879

6 years agoconstraints.md ("C"): Do not depend on TARGET_SSE.
Uros Bizjak [Fri, 5 Oct 2018 16:45:52 +0000 (18:45 +0200)]
constraints.md ("C"): Do not depend on TARGET_SSE.

* config/i386/constraints.md ("C"): Do not depend on TARGET_SSE.
* config/i386/predicates.md (nonimm_or_0_operand): Rename
from vector_move_operand.  Update all uses.

From-SVN: r264877

6 years agoPR tree-optimization/87490 - ICE in expand_builtin_strnlen with a constant argument...
Martin Sebor [Fri, 5 Oct 2018 16:43:11 +0000 (16:43 +0000)]
PR tree-optimization/87490 - ICE in expand_builtin_strnlen with a constant argument and non-constant bound

gcc/ChangeLog:

PR tree-optimization/87490
* builtins.c (expand_builtin_strnlen): Handle a null data.decl
consistently.

gcc/testsuite/ChangeLog:

PR tree-optimization/87490
* gcc.dg/pr87490.c: New test.
* gcc.dg/warn-strnlen-no-nul-2.c: Same.

From-SVN: r264876

6 years ago2018-10-05 François Dumont <fdumont@gcc.gnu.org>
François Dumont [Fri, 5 Oct 2018 16:01:39 +0000 (16:01 +0000)]
2018-10-05  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_tree.h
(_Rb_tree_iterator<>::operator==): Make inline friend.
(_Rb_tree_iterator<>::operator!=): Likewise.
(_Rb_tree_const_iterator<>::operator==): Likewise.
(_Rb_tree_const_iterator<>::operator!=): Likewise.
(operator==(const _Rb_tree_iterator<>&,
const _Rb_tree_const_iterator&)): Remove.
(operator!=(const _Rb_tree_iterator<>&,
const _Rb_tree_const_iterator&)): Remove.
(operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
(operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
(operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
deprecate.
(operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
(operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
(operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
* include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
Compare __victim with _Base::cend().
* include/debug/multimap.h
(multimap<>::erase(const_iterator, const_iterator)): Likewise.
* include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
Compare __victim with _Base::cend().
* include/debug/multiset.h
(multiset<>::erase(const_iterator, const_iterator)): Likewise.

From-SVN: r264875

6 years agore PR tree-optimization/71625 (missing strlen optimization on different array initial...
Steve Ellcey [Fri, 5 Oct 2018 15:26:40 +0000 (15:26 +0000)]
re PR tree-optimization/71625 (missing strlen optimization on different array initialization style)

2018-10-05  Steve Ellcey  <sellcey@cavium.com>

PR tree-optimization/71625
* /gcc.target/aarch64/vclz.c (test_vclz_s8): Add noinline attribute.
(test_vclz_s16): Ditto.
(test_vclz_s32): Ditto.
(test_vclzq_s8): Ditto.
(test_vclzq_s16): Ditto.
(test_vclzq_s32): Ditto.
(test_vclz_u8): Ditto.
(test_vclz_u16): Ditto.
(test_vclz_u32): Ditto.
(test_vclzq_u8): Ditto.
(test_vclzq_u16): Ditto.
(test_vclzq_u32): Ditto.
* gcc.target/aarch64/vneg_s.c (test_vneg_s8): Ditto.
(test_vneg_s16): Ditto.
(test_vneg_s32): Ditto.
(test_vneg_s64): Ditto.
(test_vnegd_s64): Ditto.
(test_vnegq_s8): Ditto.
(test_vnegq_s16): Ditto.
(test_vnegq_s32): Ditto.
(test_vnegq_s64): Ditto.

From-SVN: r264874

6 years agoruntime: remove checkgoarm function
Ian Lance Taylor [Fri, 5 Oct 2018 14:21:01 +0000 (14:21 +0000)]
runtime: remove checkgoarm function

    Nothing in libgo calls checkgoarm, and it relies on a variable, goarm,
    that is not set.

    Reviewed-on: https://go-review.googlesource.com/c/140057

From-SVN: r264872

6 years agore PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks)
Ian Lance Taylor [Fri, 5 Oct 2018 14:09:07 +0000 (14:09 +0000)]
re PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks)

PR libbacktrace/87529
* backtrace.h: Document that backtrace_create_state should be
called only once.

From-SVN: r264871

6 years agore PR middle-end/63155 (memory hog)
Richard Biener [Fri, 5 Oct 2018 12:54:51 +0000 (12:54 +0000)]
re PR middle-end/63155 (memory hog)

2018-10-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/63155
* tree-ssa-ccp.c (ccp_propagate::visit_phi): Avoid excess
vertical space in dumpfiles.
* tree-ssa-propagate.h
(ssa_propagation_engine::process_ssa_edge_worklist): Remove.
* tree-ssa-propagate.c (cfg_blocks_back): New global.
(ssa_edge_worklist_back): Likewise.
(curr_order): Likewise.
(cfg_blocks_get): Remove abstraction.
(cfg_blocks_add): Likewise.
(cfg_blocks_empty_p): Likewise.
(add_ssa_edge): Add to current or next worklist based on
RPO index.
(add_control_edge): Likewise.
(ssa_propagation_engine::process_ssa_edge_worklist): Fold
into ...
(ssa_propagation_engine::ssa_propagate): ... here.  Unify
iteration from CFG and SSA edge worklist so we process
everything in RPO order, prioritizing forward progress
over iteration.
(ssa_prop_init): Allocate new worklists, do not dump
immediate uses.
(ssa_prop_fini): Free new worklists.

From-SVN: r264869

6 years agotree-core.h (tree_block::abstract_flag): Remove.
Richard Biener [Fri, 5 Oct 2018 11:46:12 +0000 (11:46 +0000)]
tree-core.h (tree_block::abstract_flag): Remove.

2018-10-05  Richard Biener  <rguenther@suse.de>

* tree-core.h (tree_block::abstract_flag): Remove.
(tree_block::block_num): Make full 32bits.
* tree.def (BLOCK): Remove docs about BLOCK_ABSTRACT.
* tree.h (BLOCK_ABSTRACT): Remove.
* dwarf2out.c (gen_lexical_block_die): Remove dead code
resulting from BLOCK_ABSTRACT being always false.
(gen_inlined_subroutine_die): Likewise.
(gen_block_die): Likewise.
* tree.c (block_ultimate_origin): Likewise.
* tree-pretty-print.c (dump_block_node): Remove code dealing
with BLOCK_ABSTRACT.
* tree-ssa-live.c (dump_scope_block): Likewise.
* tree-streamer-in.c (unpack_ts_block_value_fields): Likewise.
* tree-streamer-out.c (pack_ts_block_value_fields): Likewise.

From-SVN: r264868

6 years agoi386.c (ix86_add_stmt_cost): When scalar cost is asked for initialize mode to the...
Richard Biener [Fri, 5 Oct 2018 11:40:50 +0000 (11:40 +0000)]
i386.c (ix86_add_stmt_cost): When scalar cost is asked for initialize mode to the component mode of the...

2018-10-05   Richard Biener  <rguenther@suse.de>

* config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
is asked for initialize mode to the component mode of the
vector type.

From-SVN: r264866

6 years agoi386: Don't pass -msse2avx to assembler for -mavx
H.J. Lu [Fri, 5 Oct 2018 11:29:44 +0000 (11:29 +0000)]
i386: Don't pass -msse2avx to assembler for -mavx

With

gcc -O2 -fPIC -flto -g -c -o a.o a.c
gcc -O2 -fPIC -flto -g -mavx   -c -o b.o b.c
gcc -shared -O2 -fPIC -flto -g -o lib1.so a.o b.o

LTO correctly generates AVX for b.o and SSE for a.o.  But the GCC driver
passes -msse2avx to assembler, which encodes SSE instructions as AVX
instructions.  We shouldn't pass -msse2avx to assembler for -mavx.

PR target/87522
* config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
assembler for -mavx.
* config/i386/gnu-user64.h (ASM_SPEC): Likewise.

From-SVN: r264864

6 years agors6000: Various fixes for the new fpscr builtins (PR87509)
Segher Boessenkool [Fri, 5 Oct 2018 10:52:33 +0000 (12:52 +0200)]
rs6000: Various fixes for the new fpscr builtins (PR87509)

With these fixes all testcases test clean for me, both on
powerpc64-linux {-m32,-m64} and on powerpc64le-linux, with all
relevant -mcpu= settings.

PR target/87509
* config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use
RS6000_BTM_DFP.
* config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Require the operand
to be DImode.  When using mffscrn, force the operand to a register.

gcc/testsuite/
PR target/87509
* gcc.target/powerpc/test_fpscr_drn_builtin.c: Use hard_dfp instead
of dfp_hw.  Don't include <altivec.h>.
* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: Ditto.  Require
lp64.
* gcc.target/powerpc/test_fpscr_rn_builtin.c: Don't include <altivec.h>.
* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: Ditto.
* gcc.target/powerpc/test_mffsl.c: Ditto.

From-SVN: r264863

6 years agore PR testsuite/87487 (New test case gfortran.dg/deferred_character_24.f90 in r264721...
Paul Thomas [Fri, 5 Oct 2018 07:01:57 +0000 (07:01 +0000)]
re PR testsuite/87487 (New test case gfortran.dg/deferred_character_24.f90 in r264721 fails on big endian)

2018-10-05  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87487
* trans-decl.c (gfc_get_symbol_decl): Make sure that deferred
character length pointer initializer has the right type to fix
problem with deferred_character_24.f90 on big endian.

From-SVN: r264862

6 years agoDaily bump.
GCC Administrator [Fri, 5 Oct 2018 00:16:34 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264860

6 years agocontrib: unused_functions.py: Handle archives
Bernhard Reutner-Fischer [Thu, 4 Oct 2018 22:28:18 +0000 (00:28 +0200)]
contrib: unused_functions.py: Handle archives

one can now use verbatim the arguments used by the driver invocation to
link e.g. cc1.

2018-10-04  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

* unused_functions.py: Handle archive files.

From-SVN: r264856

6 years agoi386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn from *fop_<MODEF:mode>_2_i387...
Uros Bizjak [Thu, 4 Oct 2018 19:52:44 +0000 (21:52 +0200)]
i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn from *fop_<MODEF:mode>_2_i387 and *fop_xf_2_i387 using X87MODEF...

* config/i386/i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn
from *fop_<MODEF:mode>_2_i387 and *fop_xf_2_i387 using
X87MODEF mode iterator.
(*fop_<X87MODEF:mode>_3_i387): Macroize insn from
*fop_<MODEF:mode>_3_i387 and *fop_xf_3_i387 using
X87MODEF mode iterator.

From-SVN: r264855

6 years agoinvoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor.
Vinay Kumar [Thu, 4 Oct 2018 18:23:25 +0000 (18:23 +0000)]
invoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor.

* doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning
-Wno-prio-ctor-dtor.

* c-attribs.c (get_priority): Add a warning flag warn_prio_ctor_dtor
to generate constructor destructor priority warning.
* c.opt (-Wprio-ctor-dtor): New option.

* c-c++-common/Wprio-ctor-dtor.c: New test.

From-SVN: r264853

6 years agoReport vectorization problems via a new opt_problem class
David Malcolm [Thu, 4 Oct 2018 17:50:52 +0000 (17:50 +0000)]
Report vectorization problems via a new opt_problem class

This is v3 of the patch; previous versions were:
  v2: https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00446.html
  v1: https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01462.html

This patch introduces a class opt_problem, along with wrapper
classes for bool (opt_result) and for pointers (e.g. opt_loop_vec_info
for loop_vec_info).

opt_problem instances are created when an optimization problem
is encountered, but only if dump_enabled_p.  They are manually
propagated up the callstack, and are manually reported at the
"top level" of an optimization if dumping is enabled, to give the user
a concise summary of the problem *after* the failure is reported.
In particular, the location of the problematic statement is
captured and emitted, rather than just the loop's location.

For example:

no-vfa-vect-102.c:24:3: missed: couldn't vectorize loop
no-vfa-vect-102.c:27:7: missed: statement clobbers memory: __asm__ __volatile__("" :  :  : "memory");

Changed in v3:
* This version bootstraps and passes regression testing (on
  x86_64-pc-linux-gnu).
* added selftests, to exercise the opt_problem machinery
* removed the "bool to opt_result" ctor, so that attempts to
  use e.g. return a bool from an opt_result-returning function
  will fail at compile time
* use formatted printing within opt_problem ctor to replace the
  various dump_printf_loc calls
* dropped i18n
* changed the sense of vect_analyze_data_ref_dependence's return
  value (see the ChangeLog)
* add MSG_PRIORITY_REEMITTED, so that -fopt-info can show the
  messages, without them messing up the counts in scan-tree-dump-times
  in DejaGnu tests

gcc/ChangeLog:
* Makefile.in (OBJS): Add opt-problem.o.
* dump-context.h: Include "selftest.h.
(selftest::temp_dump_context): New forward decl.
(class dump_context): Make friend of class
selftest::temp_dump_context.
(dump_context::dump_loc_immediate): New decl.
(class dump_pretty_printer): Move here from dumpfile.c.
(class temp_dump_context): Move to namespace selftest.
(temp_dump_context::temp_dump_context): Add param
"forcibly_enable_dumping".
(selftest::verify_dumped_text):
(ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c.
(selftest::verify_item):
(ASSERT_IS_TEXT): Move here from dumpfile.c.
(ASSERT_IS_TREE): Likewise.
(ASSERT_IS_GIMPLE): Likewise.
* dumpfile.c (dump_context::dump_loc): Move immediate dumping
to...
(dump_context::dump_loc_immediate): ...this new function.
(class dump_pretty_printer): Move to dump-context.h.
(dump_switch_p_1): Don't enable MSG_PRIORITY_REEMITTED.
(opt_info_switch_p_1): Enable MSG_PRIORITY_REEMITTED.
(temp_dump_context::temp_dump_context): Move to "selftest"
namespace.  Add param "forcibly_enable_dumping", and use it to
conditionalize the use of m_pp;
(selftest::verify_dumped_text): Make non-static.
(ASSERT_DUMPED_TEXT_EQ): Move to dump-context.h.
(selftest::verify_item): Make non-static.
(ASSERT_IS_TEXT): Move to dump-context.h.
(ASSERT_IS_TREE): Likewise.
(ASSERT_IS_GIMPLE): Likewise.
(selftest::test_capture_of_dump_calls): Pass "true" for new
param of temp_dump_context.
* dumpfile.h (enum dump_flag): Add MSG_PRIORITY_REEMITTED, adding
it to MSG_ALL_PRIORITIES.  Update values of TDF_COMPARE_DEBUG and
TDF_COMPARE_DEBUG.
* opt-problem.cc: New file.
* opt-problem.h: New file.
* optinfo-emit-json.cc
(selftest::test_building_json_from_dump_calls): Pass "true" for
new param of temp_dump_context.
* optinfo.cc (optinfo_kind_to_dump_flag): New function.
(optinfo::emit_for_opt_problem): New function.
(optinfo::emit): Clarity which emit_item is used.
* optinfo.h (optinfo::get_dump_location): New accessor.
(optinfo::emit_for_opt_problem): New decl.
(optinfo::emit): Make const.
* selftest-run-tests.c (selftest::run_tests): Call
selftest::opt_problem_cc_tests.
* selftest.h (selftest::opt_problem_cc_tests): New decl.
* tree-data-ref.c (dr_analyze_innermost): Convert return type from
bool to opt_result, converting fprintf messages to
opt_result::failure_at calls.  Add "stmt" param for use by the
failure_at calls.
(create_data_ref): Pass "stmt" to the dr_analyze_innermost call.
(runtime_alias_check_p): Convert return type from bool to
opt_result, converting dump_printf calls to
opt_result::failure_at, using the statement DDR_A for their
location.
(find_data_references_in_stmt): Convert return type from bool to
opt_result, converting "return false" to opt_result::failure_at
with a new message.
* tree-data-ref.h: Include "opt-problem.h".
(dr_analyze_innermost): Convert return type from bool to opt_result,
and add a const gimple * param.
(find_data_references_in_stmt): Convert return type from bool to
opt_result.
(runtime_alias_check_p): Likewise.
* tree-predcom.c (find_looparound_phi): Pass "init_stmt" to
dr_analyze_innermost.
* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test):
Convert return type from bool to opt_result, adding a message for
the PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS zero case.
(vect_analyze_data_ref_dependence): Convert return type from bool
to opt_result.  Change sense of return type from "false"
effectively meaning "no problems" to "false" meaning a problem,
so that "return false" becomes "return opt_result::success".
Convert "return true" calls to opt_result::failure_at, using
the location of statement A rather than vect_location.
(vect_analyze_data_ref_dependences): Convert return type from bool
to opt_result.
(verify_data_ref_alignment): Likewise, converting dump_printf_loc
calls to opt_result::failure_at, using the stmt location rather
than vect_location.
(vect_verify_datarefs_alignment): Convert return type from bool
to opt_result.
(vect_enhance_data_refs_alignment): Likewise.  Split local "stat"
into multiple more-tightly-scoped copies.
(vect_analyze_data_refs_alignment): Convert return type from bool
to opt_result.
(vect_analyze_data_ref_accesses): Likewise, converting a
"return false" to a "return opt_result::failure_at", adding a
new message.
(vect_prune_runtime_alias_test_list): Convert return type from
bool to opt_result, converting dump_printf_loc to
opt_result::failure_at.  Add a %G to show the pertinent statement,
and use the stmt's location rather than vect_location.
(vect_find_stmt_data_reference): Convert return type from
bool to opt_result, converting dump_printf_loc to
opt_result::failure_at, using stmt's location.
(vect_analyze_data_refs):  Convert return type from bool to
opt_result.  Convert "return false" to "return
opt_result::failure_at", adding messages as needed.
* tree-vect-loop.c (vect_determine_vf_for_stmt_1): Convert return
type from bool to opt_result.
(vect_determine_vf_for_stmt): Likewise.
(vect_determine_vectorization_factor): Likewise, converting
dump_printf_loc to opt_result::failure_at, using location of phi
rather than vect_location.
(vect_analyze_loop_form_1): Convert return type from bool to
opt_result, converting dump_printf_loc calls, retaining the use of
vect_location.
(vect_analyze_loop_form): Convert return type from loop_vec_info
to opt_loop_vec_info.
(vect_analyze_loop_operations): Convert return type from bool to
opt_result, converting dump_printf_loc calls, using the location
of phi/stmt rather than vect_location where available.  Convert
various "return false" to "return opt_result::failure_at" with
"unsupported phi" messages.
(vect_get_datarefs_in_loop): Convert return type from bool to
opt_result.  Add a message for the
PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS failure.
(vect_analyze_loop_2): Convert return type from bool to
opt_result.  Ensure "ok" is set to a opt_result::failure_at before
each "goto again;", adding new messages where needed.
Add "unsupported grouped {store|load}" messages.
(vect_analyze_loop): Convert return type from loop_vec_info to
opt_loop_vec_info.
* tree-vect-slp.c (vect_analyze_slp): Convert return type from
bool to opt_result.
* tree-vect-stmts.c (process_use): Likewise, converting
dump_printf_loc call and using stmt location, rather than
vect_location.
(vect_mark_stmts_to_be_vectorized): Likeise.
(vect_analyze_stmt): Likewise, adding a %G.
(vect_get_vector_types_for_stmt): Convert return type from bool to
opt_result, converting dump_printf_loc calls and using stmt
location, rather than vect_location.
(vect_get_mask_type_for_stmt): Convert return type from tree to
opt_tree, converting dump_printf_loc calls and using stmt location.
* tree-vectorizer.c: Include "opt-problem.h.
(try_vectorize_loop_1): Flag "Analyzing loop at" dump message as
MSG_PRIORITY_INTERNALS.  Convert local "loop_vinfo" from
loop_vec_info to opt_loop_vec_info.  If if fails, and dumping is
enabled, use it to report at the top level "couldn't vectorize
loop" followed by the problem.
* tree-vectorizer.h (opt_loop_vec_info): New typedef.
(vect_mark_stmts_to_be_vectorized): Convert return type from bool
to opt_result.
(vect_analyze_stmt): Likewise.
(vect_get_vector_types_for_stmt): Likewise.
(tree vect_get_mask_type_for_stmt): Likewise.
(vect_analyze_data_ref_dependences): Likewise.
(vect_enhance_data_refs_alignment): Likewise.
(vect_analyze_data_refs_alignment): Likewise.
(vect_verify_datarefs_alignment): Likewise.
(vect_analyze_data_ref_accesses): Likewise.
(vect_prune_runtime_alias_test_list): Likewise.
(vect_find_stmt_data_reference): Likewise.
(vect_analyze_data_refs): Likewise.
(vect_analyze_loop): Convert return type from loop_vec_info to
opt_loop_vec_info.
(vect_analyze_loop_form): Likewise.
(vect_analyze_slp): Convert return type from bool to opt_result.

gcc/testsuite/ChangeLog:
* gcc.dg/vect/nodump-vect-opt-info-2.c: New test.
* gcc.dg/vect/vect-alias-check-4.c: Add "-fopt-info-vec-all" to
dg-additional-options.  Add dg-message and dg-missed directives
to verify that -fopt-info messages are written at the correct
locations.

From-SVN: r264852

6 years agoAdd -fopt-info-internals
David Malcolm [Thu, 4 Oct 2018 17:41:08 +0000 (17:41 +0000)]
Add -fopt-info-internals

This patch introduces a verbosity level to dump messages:
"user-facing" vs "internals".

By default, messages at the top-level dump scope are "user-facing",
whereas those that are in nested scopes are implicitly "internals",
and are filtered out by -fopt-info unless a new "-internals" sub-option
of "-fopt-info" is supplied (intended purely for use by GCC developers).
Dumpfiles are unaffected by the change.

Given that the vectorizer is the only subsystem using AUTO_DUMP_SCOPE
(via DUMP_VECT_SCOPE), this only affects the vectorizer.

Filtering out these implementation-detail messages goes a long way
towards making -fopt-info-vec-all more accessible to advanced end-users;
the follow-up patch restores the most pertinent missing details.

gcc/ChangeLog:
* doc/invoke.texi (-fopt-info): Document new "internals"
sub-option.
* dump-context.h (dump_context::apply_dump_filter_p): New decl.
* dumpfile.c (dump_options): Update for renaming of MSG_ALL to
MSG_ALL_KINDS.
(optinfo_verbosity_options): Add "internals".
(kind_as_string): Update for renaming of MSG_ALL to MSG_ALL_KINDS.
(dump_context::apply_dump_filter_p): New member function.
(dump_context::dump_loc): Use apply_dump_filter_p rather than
explicitly masking the dump_kind.
(dump_context::begin_scope): Increment the scope depth first.  Use
apply_dump_filter_p rather than explicitly masking the dump_kind.
(dump_context::emit_item): Use apply_dump_filter_p rather than
explicitly masking the dump_kind.
(dump_dec): Likewise.
(dump_hex): Likewise.
(dump_switch_p_1): Default to MSG_ALL_PRIORITIES.
(opt_info_switch_p_1): Default to MSG_PRIORITY_USER_FACING.
(opt_info_switch_p): Update handling of default
MSG_OPTIMIZED_LOCATIONS to cope with default of
MSG_PRIORITY_USER_FACING.
(dump_basic_block): Use apply_dump_filter_p rather than explicitly
masking the dump_kind.
(selftest::test_capture_of_dump_calls): Update test_dump_context
instances to use MSG_ALL_KINDS | MSG_PRIORITY_USER_FACING rather
than MSG_ALL.  Generalize scope test to be run at all four
combinations of with/without MSG_PRIORITY_USER_FACING and
MSG_PRIORITY_INTERNALS, adding examples of explicit priority
for each of the two values.
* dumpfile.h (enum dump_flag): Add comment about the MSG_* flags.
Rename MSG_ALL to MSG_ALL_KINDS.  Add MSG_PRIORITY_USER_FACING,
MSG_PRIORITY_INTERNALS, and MSG_ALL_PRIORITIES, updating the
values for TDF_COMPARE_DEBUG and TDF_ALL_VALUES.
(AUTO_DUMP_SCOPE): Add a note to the comment about the interaction
with MSG_PRIORITY_*.
* tree-vect-loop-manip.c (vect_loop_versioning): Mark versioning
dump messages as MSG_PRIORITY_USER_FACING.
* tree-vectorizer.h (DUMP_VECT_SCOPE): Add a note to the comment
about the interaction with MSG_PRIORITY_*.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/dump-1.c: Update expected output for test_scopes
due to "-internals" not being selected.
* gcc.dg/plugin/dump-2.c: New test, based on dump-1.c, with
"-internals" added to re-enable the output from test_scopes.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add dump-2.c.

From-SVN: r264851

6 years agovarasm.c (output_constant): Add new parameter merge_strings.
Bernd Edlinger [Thu, 4 Oct 2018 17:34:56 +0000 (17:34 +0000)]
varasm.c (output_constant): Add new parameter merge_strings.

2018-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * varasm.c (output_constant): Add new parameter merge_strings.
        Make strings properly zero terminated in merge string sections.
        (mergeable_string_section): Don't fail if the last char is non-zero.
        (assemble_variable_contents): Handle merge string sections.
        (assemble_variable): Likewise.
        (assemble_constant_contents): Likewise.
        (output_constant_def_contents): Likewise.
        (output_constructor_array_range,
        output_constructor_regular_field): Adjust call to output_constant.
        (output_object_block): Adjust call to assemble_constant_contents
        and assemble_variable_contents.

testsuie:
2018-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gnat.dg/string_merge1.adb: New test.
        * gnat.dg/string_merge2.adb: New test.
        * gcc.dg/merge-all-constants-1.c: Adjust test.
        * gcc.dg/merge-all-constants-2.c: New test.

From-SVN: r264850

6 years agoRevert "Never reload fixed form constraints memory operand"
Thomas Preud'homme [Thu, 4 Oct 2018 16:48:50 +0000 (16:48 +0000)]
Revert "Never reload fixed form constraints memory operand"

This reverts commit r264834.

2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    Revert
    2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/
    * lra-constraints.c (process_address_1): Bail out for all
    satisfied fixed constraints.

From-SVN: r264849

6 years agoList myself as "libgomp (OpenACC)" and "OpenACC" maintainer
Thomas Schwinge [Thu, 4 Oct 2018 15:50:34 +0000 (17:50 +0200)]
List myself as "libgomp (OpenACC)" and "OpenACC" maintainer

* MAINTAINERS: List myself as "libgomp (OpenACC)" and "OpenACC"
maintainer.

From-SVN: r264848

6 years ago[PATCH, rs6000] Fix expected error output for test case.
Bill Seurer [Thu, 4 Oct 2018 15:05:32 +0000 (15:05 +0000)]
[PATCH, rs6000] Fix expected error output for test case.

r264355 removed some spelling suggestions including for "bool" as used
in this test case.

Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
powerpc64be-unknown-linux-gnu with no regressions.  Is this ok for trunk?

2018-10-04  Bill Seurer  <seurer@linux.vnet.ibm.com>

PR target/87486
* gcc.target/powerpc/undef-bool-2.c: Fix expected error output.

Index: gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
===================================================================
--- gcc/testsuite/gcc.target/powerpc/undef-bool-2.c (revision 264812)
+++ gcc/testsuite/gcc.target/powerpc/undef-bool-2.c (working copy)
@@ -9,7 +9,7 @@

 #include <xmmintrin.h>

-bool foo (int x) /* { dg-error "unknown type name 'bool'; did you mean '_Bool'?" } */
+bool foo (int x) /* { dg-error "unknown type name 'bool'" } */
 {
   return x == 2;
 }

From-SVN: r264847

6 years agoError about alias attribute with body definition (PR c/87483).
Martin Liska [Thu, 4 Oct 2018 14:44:53 +0000 (16:44 +0200)]
Error about alias attribute with body definition (PR c/87483).

2018-10-04  Martin Liska  <mliska@suse.cz>

PR c/87483
* cgraphunit.c (process_function_and_variable_attributes):
Warn about a function with alias attribute and a body.
2018-10-04  Martin Liska  <mliska@suse.cz>

PR c/87483
* gcc.dg/pr87483.c: New test.

From-SVN: r264846

6 years agoRedirect call within specific target attribute among MV clones (PR ipa/82625).
Martin Liska [Thu, 4 Oct 2018 14:36:55 +0000 (16:36 +0200)]
Redirect call within specific target attribute among MV clones (PR ipa/82625).

2018-10-04  Martin Liska  <mliska@suse.cz>

PR ipa/82625
* multiple_target.c (redirect_to_specific_clone): New function.
(ipa_target_clone): Use it.
* tree-inline.c: Fix comment.
2018-10-04  Martin Liska  <mliska@suse.cz>

PR ipa/82625
* g++.dg/ext/pr82625.C: New test.

From-SVN: r264845

6 years agoFix -fopt-info for plugin passes
David Malcolm [Thu, 4 Oct 2018 14:33:47 +0000 (14:33 +0000)]
Fix -fopt-info for plugin passes

Attempts to dump via -fopt-info from a plugin pass fail, due
to the dfi->alt_state for such passes never being set.

This is because the -fopt-info options were being set up per-pass
during option-parsing (via gcc::dump_manager::opt_info_enable_passes),
but this data was not retained or used it for passes created later
(for plugins and target-specific passes).

This patch fixes the issue by storing the -fopt-info options into
gcc::dump_manager, refactoring the dfi-setup code out of
opt_info_enable_passes, and reusing it for such passes, fixing the
issue.  The patch adds a demo plugin to test that dumping from a
plugin works.

gcc/ChangeLog:
* dumpfile.c (gcc::dump_manager::dump_manager): Initialize new
fields.
(gcc::dump_manager::~dump_manager): Free m_optinfo_filename.
(gcc::dump_manager::register_pass): New member function, adapted
from loop body in gcc::pass_manager::register_pass, adding a
call to update_dfi_for_opt_info.
(gcc::dump_manager::opt_info_enable_passes): Store the
-fopt-info options into the new fields.  Move the loop
bodies into...
(gcc::dump_manager::update_dfi_for_opt_info): ...this new member
function.
* dumpfile.h (struct opt_pass): New forward decl.
(gcc::dump_manager::register_pass): New decl.
(gcc::dump_manager::update_dfi_for_opt_info): New decl.
(class gcc::dump_manager): Add fields "m_optgroup_flags",
"m_optinfo_flags", and "m_optinfo_filename".
* passes.c (gcc::pass_manager::register_pass): Move all of the
dump-handling code to gcc::dump_manager::register_pass.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/dump-1.c: New test.
* gcc.dg/plugin/dump_plugin.c: New test plugin.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.

From-SVN: r264844

6 years agoAdd missing ChangeLog entry for previous commit
Peter Bergner [Thu, 4 Oct 2018 13:38:51 +0000 (08:38 -0500)]
Add missing ChangeLog entry for previous commit

From-SVN: r264843

6 years agore PR rtl-optimization/87466 (IRA and LRA spill all pseudos that are live across...
Peter Bergner [Thu, 4 Oct 2018 13:36:20 +0000 (08:36 -0500)]
re PR rtl-optimization/87466 (IRA and LRA spill all pseudos that are live across setjmp calls)

gcc/
PR rtl-optimization/87466
* target.def (setjmp_preserves_nonvolatile_regs_p): New target hook.
* doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook.
* doc/tm.texi: Regenerate.
* ira-lives.c (process_bb_node_lives): Use the new target hook.
* lra-lives.c (process_bb_lives): Likewise.
* config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P):
Define.

gcc/testsuite/
PR rtl-optimization/87466
* gcc.target/powerpc/pr87466.c: New test.

From-SVN: r264842

6 years agoRemove superfluous assignment in add_params.
Tamar Christina [Thu, 4 Oct 2018 13:06:59 +0000 (13:06 +0000)]
Remove superfluous assignment in add_params.

This fixes the superfluous assignment that Coverity reported in add_params,
and changes the starting index from 0 to num_params - n in order for it to
work properly if add_params is called multiple times.

validate_params calls error so it doesn't matter that we don't check the
results here.  The results is checked in individual parameter updates after
front-end initialization.

2018-10-04  Tamar Christina  <tamar.christina@arm.com>

* params.c (add_params): Fix initialization.

From-SVN: r264841

6 years agoFix divergence in indirect profiling (PR gcov-profile/84107).
Martin Liska [Thu, 4 Oct 2018 12:41:14 +0000 (14:41 +0200)]
Fix divergence in indirect profiling (PR gcov-profile/84107).

2018-10-04  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84107
* tree-profile.c (init_ic_make_global_vars):
Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
Come up with new ic_tuple* variables.  Emit
__gcov_indirect_call{,_topn} variables.
(gimple_gen_ic_profiler): Access the variable
and emit gimple.
(gimple_gen_ic_func_profiler): Access
__gcov_indirect_call.callee field.
(gimple_init_gcov_profiler): Use ptr_type_node.
* value-prof.c (gimple_ic): Use ptr_type_node.
2018-10-04  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84107
* libgcov-profiler.c (__gcov_indirect_call):
Change type to indirect_call_tuple.
(struct indirect_call_tuple): New struct.
(__gcov_indirect_call_topn_profiler): Change type.
(__gcov_indirect_call_profiler_v2): Use the new
variables.
* libgcov.h (struct indirect_call_tuple): New struct
definition.

From-SVN: r264840

6 years ago[C++ PATCH] String concatenation is a thing
Nathan Sidwell [Thu, 4 Oct 2018 11:36:15 +0000 (11:36 +0000)]
[C++ PATCH] String concatenation is a thing

https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00248.html
* lang-specs.h: Use string contatenation, not line splicing.

From-SVN: r264839

6 years agore PR tree-optimization/85787 (malloc_candidate_p fails to detect malloc attribute...
Prathamesh Kulkarni [Thu, 4 Oct 2018 11:06:24 +0000 (11:06 +0000)]
re PR tree-optimization/85787 (malloc_candidate_p fails to detect malloc attribute on nested phis)

2018-10-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR tree-optimization/85787
* ipa-pure-const.c (malloc_candidate_p_1): Move most of malloc_candidate_p
into this function and add support for detecting multiple phis.
(DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro.

testsuite/
* gcc.dg/ipa/propmalloc-4.c: New test.

From-SVN: r264838

6 years agocontrib: Add unused_functions.py script
Bernhard Reutner-Fischer [Thu, 4 Oct 2018 08:59:12 +0000 (10:59 +0200)]
contrib: Add unused_functions.py script

For a set of object-files, determine symbols that are
 - public but should be static

2018-10-04  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

* unused_functions.py: New file.

From-SVN: r264837

6 years agocunroll-15.c: Add XFAILs for arm and powerpc.
Richard Biener [Thu, 4 Oct 2018 08:59:12 +0000 (08:59 +0000)]
cunroll-15.c: Add XFAILs for arm and powerpc.

2018-10-04  Richard Biener  <rguenther@suse.de>

* gcc.dg/tree-ssa/cunroll-15.c: Add XFAILs for arm and powerpc.

From-SVN: r264836

6 years agoCall ultimate_alias_target for node being inlined (PR ipa/87491).
Martin Liska [Thu, 4 Oct 2018 08:06:52 +0000 (10:06 +0200)]
Call ultimate_alias_target for node being inlined (PR ipa/87491).

2018-10-04  Martin Liska  <mliska@suse.cz>

PR ipa/87491
* ipa-inline.c (inline_to_all_callers_1):
Call ultimate_alias_target for node being inlined.

From-SVN: r264835

6 years agoNever reload fixed form constraints memory operand
Thomas Preud'homme [Thu, 4 Oct 2018 07:55:02 +0000 (07:55 +0000)]
Never reload fixed form constraints memory operand

The unconditional reload of address operand for recognized instruction
in process_address_1 prevent the patch fixing PR85434 from working as
expected. The code in that patch attempts to control which registers are
used to make PIC access but the reload performed by process_address_1
will use generic PIC access. This patch removes the test for the
instruction to be unrecognized to do the reload, thus always avoiding to
reload address operand for fixed constraints (such as "X" used in the
patch).

2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/
    * lra-constraints.c (process_address_1): Bail out for all
    satisfied fixed constraints.

From-SVN: r264834

6 years agogimple-ssa-sprintf.c (format_string): Do not hardcode size of target's wchar_t.
Jeff Law [Thu, 4 Oct 2018 02:55:10 +0000 (20:55 -0600)]
gimple-ssa-sprintf.c (format_string): Do not hardcode size of target's wchar_t.

        * gimple-ssa-sprintf.c (format_string): Do not hardcode size of
        target's wchar_t.
        * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c.
        * tree.h (get_typenode_from_name): Prototype.

        * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.

From-SVN: r264833

6 years agoDaily bump.
GCC Administrator [Thu, 4 Oct 2018 00:16:46 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264831

6 years agoi386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Change operand 2 predicate to nonimm...
Uros Bizjak [Wed, 3 Oct 2018 21:51:50 +0000 (23:51 +0200)]
i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Change operand 2 predicate to nonimmediate_operand.

* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
Change operand 2 predicate to nonimmediate_operand.
(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.

From-SVN: r264827

6 years ago* go.test/go-test.exp (go-set-goarch): Use amd64p32 on x32.
Ian Lance Taylor [Wed, 3 Oct 2018 21:03:50 +0000 (21:03 +0000)]
* go.test/go-test.exp (go-set-goarch): Use amd64p32 on x32.

From-SVN: r264825

6 years agolibgcc2.c (isnan): Use __builtin_isnan.
Uros Bizjak [Wed, 3 Oct 2018 20:29:10 +0000 (22:29 +0200)]
libgcc2.c (isnan): Use __builtin_isnan.

* libgcc2.c (isnan): Use __builtin_isnan.
(isfinite): Use __builtin_isfinite.
(isinf): Use __builtin_isinf.

From-SVN: r264823

6 years agogimple-ssa-sprintf.c (struct fmtresult): Add new member and initialize it.
Martin Sebor [Wed, 3 Oct 2018 20:00:46 +0000 (20:00 +0000)]
gimple-ssa-sprintf.c (struct fmtresult): Add new member and initialize it.

* gimple-ssa-sprintf.c (struct fmtresult): Add new member and
initialize it.
(get_string_length): Detect unterminated arrays.
(format_string): Same.
(format_directive): Warn about unterminated arrays.
(handle_gimple_call): Mark statements with no_warning as needed.

* gcc.dg/warn-sprintf-no-nul.c: New test.

Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264822

6 years agoRISC-V: Add macro for ilp32e ABI. Cleanup white space.
Jim Wilson [Wed, 3 Oct 2018 19:09:32 +0000 (19:09 +0000)]
RISC-V: Add macro for ilp32e ABI.  Cleanup white space.

gcc/
* config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E,
also define __riscv_abi_rve.  Delete trailing white space.

From-SVN: r264821

6 years agoEnable LRA register allocator for PDP11.
Paul Koning [Wed, 3 Oct 2018 18:46:51 +0000 (14:46 -0400)]
Enable LRA register allocator for PDP11.

    Enable LRA register allocator for PDP11. -- missed checking in
    ChangeLog.

From-SVN: r264820

6 years agoEnable LRA register allocator for PDP11.
Paul Koning [Wed, 3 Oct 2018 18:31:52 +0000 (14:31 -0400)]
Enable LRA register allocator for PDP11.

    * config/pdp11/constraints.md (Q): Use define_memory_constraints.
    (R): Likewise.
    (D): Likewise.
    * config/pdp11/pdp11.c (pdp11_lra_p): New function.
    * config/pdp11/pdp11.opt (-mlra): New option.
    * doc/invoke.texi (PDP-11 Options): Document -mlra.

From-SVN: r264819

6 years agoi386.md (*<absneg:code>extendsfdf2): Remove.
Uros Bizjak [Wed, 3 Oct 2018 18:28:16 +0000 (20:28 +0200)]
i386.md (*<absneg:code>extendsfdf2): Remove.

* config/i386/i386.md (*<absneg:code>extendsfdf2): Remove.
(*<absneg:code>extend<mode>xf2): Ditto.

From-SVN: r264818

6 years agore PR tree-optimization/87415 (wrong code at -O1 and above on x86_64-linux-gnu)
Aldy Hernandez [Wed, 3 Oct 2018 17:36:29 +0000 (17:36 +0000)]
re PR tree-optimization/87415 (wrong code at -O1 and above on x86_64-linux-gnu)

PR tree-optimization/87415
* tree-vrp.c (set_value_range_with_overflow): Special case one bit
precision fields.

From-SVN: r264817

6 years agogimple-fold.c (get_range_strlen): Only set *nonstr when an unterminated string is...
Jeff Law [Wed, 3 Oct 2018 17:23:15 +0000 (11:23 -0600)]
gimple-fold.c (get_range_strlen): Only set *nonstr when an unterminated string is discovered.

* gimple-fold.c (get_range_strlen): Only set *nonstr when
an unterminated string is discovered.  Bubble up range
even for unterminated strings.
(gimple_fold_builtin_strlen): Do not fold if get_range_strlen
indicates the string was not terminated via NONSTR.

From-SVN: r264816

6 years agotree-vrp.c (extract_range_from_unary_expr): Special case all pointer conversions.
Aldy Hernandez [Wed, 3 Oct 2018 17:18:52 +0000 (17:18 +0000)]
tree-vrp.c (extract_range_from_unary_expr): Special case all pointer conversions.

* tree-vrp.c (extract_range_from_unary_expr): Special case all
pointer conversions.
Do not do anything special for anti-ranges.

From-SVN: r264815

6 years agoImplement P0840, language support for empty objects.
Jason Merrill [Wed, 3 Oct 2018 15:56:29 +0000 (11:56 -0400)]
Implement P0840, language support for empty objects.

The [[no_unique_address]] attribute on a non-static data member
enables the equivalent of the empty base optimization.

gcc/cp/
* tree.c (handle_no_unique_addr_attribute): New.
(cxx_attribute_table): Add [[no_unique_address]].
* class.c (field_poverlapping_p): New.
(layout_class_type): Check it.  Adjust DECL_SIZE of potentially
overlapping fields.
(layout_empty_base_or_field): Rename from layout_empty_base, handle
FIELD_DECL as well.
(build_base_field, record_subobject_offsets): Adjust.
c-family/
* c-lex.c (c_common_has_attribute): Add no_unique_address.

From-SVN: r264813

6 years agoPR libstdc++/59439 optimize uses of classic ("C") std::locale
Jonathan Wakely [Wed, 3 Oct 2018 11:27:40 +0000 (12:27 +0100)]
PR libstdc++/59439 optimize uses of classic ("C") std::locale

The global locale::_Impl that represents the "C" locale is never
destroyed, so there is no need to keep track of reference count updates
for that object. This greatly reduce contention between threads that
refer to the classic locale. Since the global std::locale initially uses
the classic locale, this benefits the common case for any code using the
global locale, such as construction/destruction of iostream objects.

All these updates are done inside libstdc++.so so there's no need to
worry about users' objects having inlined old versions of the code which
still update the reference count for the classic locale.

PR libstdc++/59439
* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
reference count updates for the classic locale.
(locale::~locale()): Likewise.
(locale::operator=(const locale&)): Likewise.
* src/c++98/locale_init.cc (locale::locale()): Likewise.
(locale::global(const locale&)): Likewise.

From-SVN: r264811

6 years agoFix ARM_TARGET2_DWARF_FORMAT for vxworks
Jerome Lambourg [Wed, 3 Oct 2018 09:31:36 +0000 (09:31 +0000)]
Fix ARM_TARGET2_DWARF_FORMAT for vxworks

2018-10-03  Jérôme Lambourg  <lambourg@adacore.com>

* config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to
DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs.

From-SVN: r264808

6 years agoProperly mark lambdas in GCOV (PR gcov-profile/86109).
Martin Liska [Wed, 3 Oct 2018 08:30:10 +0000 (10:30 +0200)]
Properly mark lambdas in GCOV (PR gcov-profile/86109).

2018-10-03  Martin Liska  <mliska@suse.cz>

PR gcov-profile/86109
* coverage.c (coverage_begin_function): Do not
mark lambdas as artificial.
* tree-core.h (struct GTY): Remove tm_clone_flag
and introduce new lambda_function.
* tree.h (DECL_LAMBDA_FUNCTION): New macro.
2018-10-03  Martin Liska  <mliska@suse.cz>

PR gcov-profile/86109
* parser.c (cp_parser_lambda_declarator_opt):
Set DECL_LAMBDA_FUNCTION for lambdas.
2018-10-03  Martin Liska  <mliska@suse.cz>

PR gcov-profile/86109
* g++.dg/gcov/pr86109.C: New test.

From-SVN: r264806

6 years ago2018-10-03 François Dumont <fdumont@gcc.gnu.org>
François Dumont [Wed, 3 Oct 2018 05:50:01 +0000 (05:50 +0000)]
2018-10-03  François Dumont  <fdumont@gcc.gnu.org>

* include/debug/map.h
(map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
(map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(map<>::insert(value_type&&)): Likewise.
(map<>::insert<>(_Pair&&)): Likewise.
(map<>::insert<>(const_iterator, _Pair&&)): Likewise.
(map<>::try_emplace): Likewise.
(map<>::insert_or_assign): Likewise.
(map<>::insert(node_type&&)): Likewise.
(map<>::insert(const_iterator, node_type&&)): Likewise.
(map<>::erase(const_iterator)): Likewise.
(map<>::erase(const_iterator, const_iterator)): Likewise.
* include/debug/multimap.h
(multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
(multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(multimap<>::insert<>(_Pair&&)): Likewise.
(multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
(multimap<>::insert(node_type&&)): Likewise.
(multimap<>::insert(const_iterator, node_type&&)): Likewise.
(multimap<>::erase(const_iterator)): Likewise.
(multimap<>::erase(const_iterator, const_iterator)): Likewise.
* include/debug/set.h
(set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
(set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(set<>::insert(value_type&&)): Likewise.
(set<>::insert<>(const_iterator, value_type&&)): Likewise.
(set<>::insert(const_iterator, node_type&&)): Likewise.
(set<>::erase(const_iterator)): Likewise.
(set<>::erase(const_iterator, const_iterator)): Likewise.
* include/debug/multiset.h
(multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
(multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(multiset<>::insert<>(value_type&&)): Likewise.
(multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
(multiset<>::insert(node_type&&)): Likewise.
(multiset<>::insert(const_iterator, node_type&&)): Likewise.
(multiset<>::erase(const_iterator)): Likewise.
(multiset<>::erase(const_iterator, const_iterator)): Likewise.

From-SVN: r264805

6 years agoDaily bump.
GCC Administrator [Wed, 3 Oct 2018 00:16:59 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264804

6 years ago* io/close.c [!HAVE_UNLINK_OPEN_FILE]: Include <string.h>.
Gerald Pfeifer [Tue, 2 Oct 2018 20:02:03 +0000 (20:02 +0000)]
* io/close.c [!HAVE_UNLINK_OPEN_FILE]: Include <string.h>.

From-SVN: r264800

6 years agore PR target/87474 (ICE in extract_insn, at recog.c:2305)
Aaron Sawdey [Tue, 2 Oct 2018 17:31:53 +0000 (17:31 +0000)]
re PR target/87474 (ICE in extract_insn, at recog.c:2305)

2018-10-02  Aaron Sawdey  <acsawdey@linux.ibm.com>

PR target/87474
* config/rs6000/rs6000-string.c (expand_strn_compare): Check that both
P8_VECTOR and VSX are enabled.

From-SVN: r264799

6 years agointernal/bytealg: support systems that don't have memmem
Ian Lance Taylor [Tue, 2 Oct 2018 16:45:51 +0000 (16:45 +0000)]
internal/bytealg: support systems that don't have memmem

    Reviewed-on: https://go-review.googlesource.com/138839

From-SVN: r264798

6 years agoS/390: Support IBM z14 Model ZR1 with -march=native
Andreas Krebbel [Tue, 2 Oct 2018 15:36:49 +0000 (15:36 +0000)]
S/390: Support IBM z14 Model ZR1 with -march=native

This adds the CPU model number of the IBM z14 Model ZR1 machine to
-march=native.  The patch doesn't actually change anything since we
anyway default to z14 for unknown CPU model numbers.  So this is just
for the sake of completeness.

2018-10-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
0x3907 as CPU model number.

From-SVN: r264797

6 years agoS/390: Rename arch12 to z14
Andreas Krebbel [Tue, 2 Oct 2018 15:35:52 +0000 (15:35 +0000)]
S/390: Rename arch12 to z14

This is a mechanical change not impacting code generation.  With that
patch I try to hide the artificial CPU name arch12 which we had to use
before the announcement of the IBM z14 machine.  arch12 of course
stays a valid option to -march and -mtune.  So this is just about
making the code somewhat easier to read.

gcc/ChangeLog:

2018-10-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14.
* config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to
PF_Z14.  Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14,
TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to
TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P.
* config/s390/s390.md: Likewise. Rename also the cpu attribute
value from arch12 to z14.

From-SVN: r264796

6 years agoi386.md (fxam<mode>2_i387_with_temp): Remove.
Uros Bizjak [Tue, 2 Oct 2018 15:27:07 +0000 (17:27 +0200)]
i386.md (fxam<mode>2_i387_with_temp): Remove.

* config/i386/i386.md (fxam<mode>2_i387_with_temp): Remove.
(isinfxf2): Ditto.
(isinf<mode>2): Ditto.

From-SVN: r264795

6 years agoi386.c (ix86_emit_i387_round): Extend op1 to XFmode before emitting fxam.
Uros Bizjak [Tue, 2 Oct 2018 15:12:30 +0000 (17:12 +0200)]
i386.c (ix86_emit_i387_round): Extend op1 to XFmode before emitting fxam.

* config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode
before emitting fxam.  Perform calculations in XFmode.

From-SVN: r264794

6 years agonet: don't fail test if splice fails because pipe2 is missing
Ian Lance Taylor [Tue, 2 Oct 2018 15:07:14 +0000 (15:07 +0000)]
net: don't fail test if splice fails because pipe2 is missing

    This reportedly happens on CentOS 5.11.  The real code will work fine;
    this test is assuming that the unexported slice function will handle
    the splice, but if pipe2 does not work then it doesn't.  The relevant
    code in internal/poll/splice_linux.go says "Falling back to pipe is
    possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when
    the connection is closed."

    Reviewed-on: https://go-review.googlesource.com/138838

From-SVN: r264793

6 years ago((X /[ex] A) +- B) * A --> X +- A * B
Marc Glisse [Tue, 2 Oct 2018 15:02:13 +0000 (17:02 +0200)]
((X /[ex] A) +- B) * A --> X +- A * B

2018-10-02  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (((X /[ex] A) +- B) * A): New transformation.

gcc/testsuite/
* gcc.dg/tree-ssa/muldiv-1.c: New file.
* gcc.dg/tree-ssa/muldiv-2.c: Likewise.

From-SVN: r264792

6 years agovector<bool> _M_start and 0 offset
Marc Glisse [Tue, 2 Oct 2018 14:59:25 +0000 (16:59 +0200)]
vector<bool> _M_start and 0 offset

2018-10-02  Marc Glisse  <marc.glisse@inria.fr>

PR libstdc++/87258
* include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
Rebuild _M_start with an explicit 0 offset.

From-SVN: r264791

6 years agoNo a*x+b*x factorization for signed vectors
Marc Glisse [Tue, 2 Oct 2018 14:55:39 +0000 (16:55 +0200)]
No a*x+b*x factorization for signed vectors

2018-10-02  Marc Glisse  <marc.glisse@inria.fr>

PR middle-end/87319
* fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors.
* tree.c (signed_or_unsigned_type_for): Handle complex.

From-SVN: r264790

6 years agors6000: Fix vec-init-6.c (PR87081)
Segher Boessenkool [Tue, 2 Oct 2018 14:19:49 +0000 (16:19 +0200)]
rs6000: Fix vec-init-6.c (PR87081)

Since a while we use a rldimi instead of rldicl/rldicr/or to combine
two words to one.

PR target/87081
* gcc.target/powerpc/vec-init-6.c: Fix expected asm.

From-SVN: r264789

6 years ago* gimple-fold.c (get_range_strlen): Remove dead code.
Jeff Law [Tue, 2 Oct 2018 14:10:16 +0000 (08:10 -0600)]
* gimple-fold.c (get_range_strlen): Remove dead code.

From-SVN: r264788

6 years agobuiltins.c (unterminated_array): Add new arguments.
Martin Sebor [Tue, 2 Oct 2018 14:08:53 +0000 (14:08 +0000)]
builtins.c (unterminated_array): Add new arguments.

* builtins.c (unterminated_array): Add new arguments.
If argument is not terminated, bubble up size and exact
state to callers.
(expand_builtin_strnlen): Detect, avoid expanding
and diagnose unterminated arrays.
(c_strlen): Fill in offset of start of unterminated strings.
* builtins.h (unterminated_array): Update prototype.

* gcc.dg/warn-strnlen-no-nul.c: New.

Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264787

6 years agoAvoid redundant runtime checks in std::visit
Jonathan Wakely [Tue, 2 Oct 2018 14:00:50 +0000 (15:00 +0100)]
Avoid redundant runtime checks in std::visit

Calling std::get will check some static assertions and also do a runtime
check for a valid index before calling __detail::__variant::__get. The
std::visit function already handles the case where any variant has an
invalid index, so __get can be used directly in __visit_invoke.

* include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
directly instead of get, as caller ensures correct index is used.
(holds_alternative, get, get_if): Remove redundant inline specifiers.
(_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.

From-SVN: r264786

6 years agosse.md (reduc_plus_scal_v4df): Avoid the use of haddv4df...
Richard Biener [Tue, 2 Oct 2018 13:06:54 +0000 (13:06 +0000)]
sse.md (reduc_plus_scal_v4df): Avoid the use of haddv4df...

2018-10-02  Richard Biener  <rguenther@suse.de>

* config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use
of haddv4df, first reduce to SSE width and exploit the fact
that we only need element zero with the reduction result.
(reduc_plus_scal_v2df): Likewise.

From-SVN: r264785

6 years agoUse -fno-show-column in libstdc++ installed testing.
Joseph Myers [Tue, 2 Oct 2018 12:46:32 +0000 (13:46 +0100)]
Use -fno-show-column in libstdc++ installed testing.

<https://gcc.gnu.org/ml/libstdc++/2016-08/msg00006.html> arranged for
libstdc++ tests to use -fno-show-column by default, but only for
build-tree testing.  This patch adds it to the options used for
installed testing as well.

Tested with installed testing for a cross to x86_64-linux-gnu, where
it fixes various test failures.

* testsuite/lib/libstdc++.exp (libstdc++_init): Use
-fno-show-column in default cxxflags.

From-SVN: r264784

6 years agoconfig: Remove unused define for os uClibc
Bernhard Reutner-Fischer [Tue, 2 Oct 2018 12:35:42 +0000 (14:35 +0200)]
config: Remove unused define for os uClibc

__NO_STRING_INLINES was removed from uClibc around 2004 so has no
effect.

libstdc++-v3/ChangeLog:

2018-10-01  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

        * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.

From-SVN: r264783

6 years agodojump.h (do_jump): Delete.
Eric Botcazou [Tue, 2 Oct 2018 10:55:33 +0000 (10:55 +0000)]
dojump.h (do_jump): Delete.

* dojump.h (do_jump): Delete.
(do_jump_1): Likewise.
(split_comparison): Move around.
* dojump.c (do_jump): Make static.
(do_jump_1): Likewise.
(jumpifnot): Move around.
(jumpifnot_1): Likewise.
(jumpif): Likewise.
(jumpif_1): Likewise.
* expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump.

From-SVN: r264781

6 years agoreorg.c (make_return_insns): Use emit_copy_of_insn_after for the insns in the delay...
Eric Botcazou [Tue, 2 Oct 2018 10:20:08 +0000 (10:20 +0000)]
reorg.c (make_return_insns): Use emit_copy_of_insn_after for the insns in the delay slot and add_insn_after...

* reorg.c (make_return_insns): Use emit_copy_of_insn_after for the
insns in the delay slot and add_insn_after for the jump insn.

From-SVN: r264780

6 years agoc-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.
Richard Biener [Tue, 2 Oct 2018 10:08:22 +0000 (10:08 +0000)]
c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.

2018-10-02  Richard Biener  <rguenther@suse.de>

c/
* c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.

cp/
* name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.

From-SVN: r264779

6 years agotree-inline.c (expand_call_inline): Use the location of the callee declaration for...
Richard Biener [Tue, 2 Oct 2018 10:07:29 +0000 (10:07 +0000)]
tree-inline.c (expand_call_inline): Use the location of the callee declaration for the inline-entry marker.

2018-10-02  Richard Biener  <rguenther@suse.de>

* tree-inline.c (expand_call_inline): Use the location of
the callee declaration for the inline-entry marker.
* final.c (notice_source_line): Remove special-casing of
NOTE_INSN_INLINE_ENTRY.

From-SVN: r264778

6 years agoDaily bump.
GCC Administrator [Tue, 2 Oct 2018 00:16:36 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264777

6 years agocompiler: use the underlying type to build placeholder type for alias
Ian Lance Taylor [Mon, 1 Oct 2018 22:25:52 +0000 (22:25 +0000)]
compiler: use the underlying type to build placeholder type for alias

    When asking for a placeholder type of an alias type, build a
    placeholder for the underlying type, instead of treating the
    alias as a named type and calling get_backend. The latter may
    fail as we may not be ready to build a complete backend type. We
    have already used a unified backend type for alias type and its
    underlying type. Do the same for placeholders as well.

    Reviewed-on: https://go-review.googlesource.com/138635

From-SVN: r264773

6 years agolibgo: support x32 as GOARCH=amd64p32 GOOS=linux
Ian Lance Taylor [Mon, 1 Oct 2018 20:17:11 +0000 (20:17 +0000)]
libgo: support x32 as GOARCH=amd64p32 GOOS=linux

    This is enough to let libgo build when configured using
    --with-multilib-list=m64,m32,mx32.  I don't have an x32-enabled kernel
    so I haven't tested whether it executes correctly.

    For https://gcc.gnu.org/PR87470

    Reviewed-on: https://go-review.googlesource.com/138817

From-SVN: r264772

6 years agoruntime: add arm64 version of AES hash code
Ian Lance Taylor [Mon, 1 Oct 2018 20:14:29 +0000 (20:14 +0000)]
runtime: add arm64 version of AES hash code

    Rewrite the arm64 AES hashing code from gc assembler to C code using
    intrinsics.  The resulting code generates the same hash code for the
    same input as the gc code--that doesn't matter as such, but testing it
    ensures that the C code does something useful.

    Reviewed-on: https://go-review.googlesource.com/138535

From-SVN: r264771

6 years ago[libiberty] Use pipe inside pex_run
Nathan Sidwell [Mon, 1 Oct 2018 18:46:51 +0000 (18:46 +0000)]
[libiberty] Use pipe inside pex_run

https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00039.html
* configure.ac (checkfuncs): Add pipe2.
* config.in, configure: Rebuilt.
* pex-unix.c (pex_unix_exec_child): Comminicate errors from child
to parent with a pipe, when possible.

From-SVN: r264769

6 years ago* ru.po: Update.
Joseph Myers [Mon, 1 Oct 2018 17:11:46 +0000 (18:11 +0100)]
* ru.po: Update.

From-SVN: r264766

6 years agoUpdate, forgot to put the PR number in the Change Log.
Carl Love [Mon, 1 Oct 2018 15:57:13 +0000 (15:57 +0000)]
Update, forgot to put the PR number in the Change Log.

gcc/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

PR 69431
* config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
(__builtin_mtfsb0): New.
(__builtin_mtfsb1): New.
( __builtin_set_fpscr_rn): New.
(__builtin_set_fpscr_drn): New.
* config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
(rs6000_expand_set_fpscr_rn_builtin): Add.
(rs6000_expand_set_fpscr_drn_builtin): Add.
(rs6000_expand_builtin): Add case statement entries for
RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1,
RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN,
RS6000_BUILTIN_MFFSL.
(rs6000_init_builtins): Add ftype initialization and def_builtin
calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
__builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
* config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
rs6000_mffscdrn): Add define_insn.
(rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
* doc/extend.texi: Add documentation for the builtins.

gcc/testsuite/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

PR 69431
* gcc.target/powerpc/test_mffsl-p9.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file.

From-SVN: r264764

6 years agors6000-builtin.def (__builtin_mffsl): New.
Carl Love [Mon, 1 Oct 2018 15:41:24 +0000 (15:41 +0000)]
rs6000-builtin.def (__builtin_mffsl): New.

gcc/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
(__builtin_mtfsb0): New.
(__builtin_mtfsb1): New.
( __builtin_set_fpscr_rn): New.
(__builtin_set_fpscr_drn): New.
* config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
(rs6000_expand_set_fpscr_rn_builtin): Add.
(rs6000_expand_set_fpscr_drn_builtin): Add.
(rs6000_expand_builtin): Add case statement entries for
RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1,
RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN,
RS6000_BUILTIN_MFFSL.
(rs6000_init_builtins): Add ftype initialization and def_builtin
calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
__builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
* config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
rs6000_mffscdrn): Add define_insn.
(rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
* doc/extend.texi: Add documentation for the builtins.

gcc/testsuite/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/test_mffsl-p9.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file.

From-SVN: r264762

6 years agoallocator.xml: Adjust link to "Reconsidering Custom Memory Allocation".
Gerald Pfeifer [Mon, 1 Oct 2018 15:17:15 +0000 (15:17 +0000)]
allocator.xml: Adjust link to "Reconsidering Custom Memory Allocation".

* doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
Custom Memory Allocation".

From-SVN: r264761

6 years agoRegenerate libstdc++ HTML pages
Jonathan Wakely [Mon, 1 Oct 2018 14:28:36 +0000 (15:28 +0100)]
Regenerate libstdc++ HTML pages

* doc/html/*: Regenerate.

From-SVN: r264760

6 years agore PR fortran/65677 (Incomplete assignment on deferred-length character variable)
Paul Thomas [Mon, 1 Oct 2018 14:27:17 +0000 (14:27 +0000)]
re PR fortran/65677 (Incomplete assignment on deferred-length character variable)

2018-10-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65677
* trans-expr.c (gfc_trans_assignment_1): Set the 'identical'
flag in the call to gfc_check_dependency.

2018-10-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65677
* gfortran.dg/dependency_52.f90 : Expand the test to check both
the call to adjustl and direct assignment of the substring.

From-SVN: r264759

6 years agore PR tree-optimization/87465 (Loop removal regression)
Richard Biener [Mon, 1 Oct 2018 13:10:48 +0000 (13:10 +0000)]
re PR tree-optimization/87465 (Loop removal regression)

2018-10-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87465
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo
causing branch miscounts.

* gcc.dg/tree-ssa/cunroll-15.c: New testcase.

From-SVN: r264758

6 years agoValidate and set default parameters for stack-clash.
Tamar Christina [Mon, 1 Oct 2018 13:09:29 +0000 (13:09 +0000)]
Validate and set default parameters for stack-clash.

This patch defines the default parameters and validation for the aarch64
stack clash probing interval and guard sizes.  It cleans up the previous
implementation and insures that at no point the invalidate arguments are
present in the pipeline for AArch64.  Currently they are only corrected once
cc1 initalizes the back-end.

The default for AArch64 is 64 KB for both of these and we only support 4 KB and 64 KB
probes.  We also enforce that any value you set here for the parameters must be
in sync.

If an invalid value is specified an error will be generated and compilation aborted.

gcc/

* common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM,
aarch64_option_default_param): New.
(params.h): Include.
(TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New.
* config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify
stack-clash protection validation code.

From-SVN: r264757

6 years agoUpdate options framework for parameters to properly handle and validate configure...
Tamar Christina [Mon, 1 Oct 2018 13:08:10 +0000 (13:08 +0000)]
Update options framework for parameters to properly handle and validate configure time params.

This patch changes it so that default parameters are validated during
initialization. This change is needed to ensure parameters set via by the
target specific common initialization routines still keep the parameters within
the valid range.

gcc/

* params.c (validate_param): New.
(add_params): Use it.
(set_param_value): Refactor param validation into validate_param.
(diagnostic.h): Include.
* diagnostic.h (diagnostic_ready_p): New.

From-SVN: r264756