platform/upstream/gcc.git
6 years ago[BRIGFE] The modulo in ID computation should not be needed.
Pekka Jääskeläinen [Fri, 4 May 2018 16:47:34 +0000 (16:47 +0000)]
[BRIGFE] The modulo in ID computation should not be needed.

The case where a dim is greater than the grid size doesn't seem
to be mentioned in the specs nor tested by PRM test suite.

From-SVN: r259944

6 years ago[BRIGFE] Enable whole program optimizations
Pekka Jääskeläinen [Fri, 4 May 2018 16:44:02 +0000 (16:44 +0000)]
[BRIGFE] Enable whole program optimizations

HSA assumes all program scope HSAIL symbols can be queried from
the host runtime API, thus cannot be removed by the IPA.

Getting some inlining happening in the finalized binary required:
* explicitly marking the 'prog' scope functions and the launcher
function "externally_visible" to avoid the inliner removing it
* also the host_def ptr is set to externally visible, otherwise
IPA assumes it's never set
* adding the 'inline' keyword to functions to enable inlining,
otherwise GCC defaults to replaceable functions (one can link
over the previous one) which cannot be inlined
* replacing all calls to declarations with calls to definitions to
enable the inliner to find the definition
* to fix missing hidden argument types in the generated functions.
These were ignored silently until GCC started to be able to
inline calls to such functions.
* do not gimplify before fixing the call targets. Otherwise the
calls get detached and the definitions are not found. The reason
why this happens is not clear, but gimplifying only after call
target decl->def conversion fixes this.

From-SVN: r259943

6 years ago[BRIGFE] fix an alloca stack underflow
Pekka Jääskeläinen [Fri, 4 May 2018 16:40:50 +0000 (16:40 +0000)]
[BRIGFE] fix an alloca stack underflow

We didn't preserve additional space for the alloca frame pointers that
are needed to be saved in the alloca space.

Fixes libgomp.c++/target-6.C execution test.

From-SVN: r259942

6 years ago* uk.po: Update.
Joseph Myers [Fri, 4 May 2018 16:27:11 +0000 (17:27 +0100)]
* uk.po: Update.

From-SVN: r259938

6 years agore PR go/85630 (GCC 8.1.0: Filesystem pollution during build: .cache dir in $HOME)
Ian Lance Taylor [Fri, 4 May 2018 16:23:51 +0000 (16:23 +0000)]
re PR go/85630 (GCC 8.1.0: Filesystem pollution during build: .cache dir in $HOME)

PR go/85630
* Makefile.am (CHECK_ENV): Set GOCACHE.
(ECHO_ENV): Update for setting of GOCACHE.
* Makefile.in: Rebuild.

From-SVN: r259937

6 years agovsx-vector-6.h (foo): Add test for vec_max, vec_trunc.
Carl Love [Fri, 4 May 2018 16:17:15 +0000 (16:17 +0000)]
vsx-vector-6.h (foo): Add test for vec_max, vec_trunc.

gcc/testsuite/ChangeLog:

2018-05-04 Carl Love  <cel@us.ibm.com>
* gcc.target/powerpc/vsx-vector-6.h (foo): Add test for vec_max,
vec_trunc.
* gcc.target/powerpc/vsx-vector-6-le.c (dg-final): Update xvcmpeqdp,
xvcmpgtdp, xvcmpgedp counts. Add xxsel counts.
* gcc.target/powerpc/vsx-vector-6-be.c (dg-final): Update xvcmpgtdp,
xvcmpgedp counts. Add xxsel counts.

From-SVN: r259936

6 years agolibgo: fix for unaligned read in go-unwind.c's read_encoded_value()
Ian Lance Taylor [Fri, 4 May 2018 14:29:05 +0000 (14:29 +0000)]
libgo: fix for unaligned read in go-unwind.c's read_encoded_value()

    Change code to work properly reading unaligned data on architectures
    that don't support unaliged reads. This fixes a regression (broke
    Solaris/sparc) introduced in https://golang.org/cl/90235.

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

From-SVN: r259935

6 years agolibffi PowerPC64 ELFv1 fp arg fixes
Alan Modra [Fri, 4 May 2018 13:47:11 +0000 (23:17 +0930)]
libffi PowerPC64 ELFv1 fp arg fixes

The ELFv1 ABI says: "Single precision floating point values are mapped
to the second word in a single doubleword" and also "Floating point
registers f1 through f13 are used consecutively to pass up to 13
floating point values, one member aggregates passed by value
containing a floating point value, and to pass complex floating point
values".

libffi wasn't expecting float args in the second word, and wasn't
passing one member aggregates in fp registers.  This patch fixes those
problems, making use of the existing ELFv2 homogeneous aggregate
support since a one element fp struct is a special case of an
homogeneous aggregate.

I've also set a flag when returning pointers that might be used one
day.  This is just a tidy since the ppc64 assembly support code
currently doesn't test FLAG_RETURNS_64BITS for integer types..

* src/powerpc/ffi_linux64.c (discover_homogeneous_aggregate):
Compile for ELFv1 too, handling single element aggregates.
(ffi_prep_cif_linux64_core): Call discover_homogeneous_aggregate
for ELFv1.  Set FLAG_RETURNS_64BITS for FFI_TYPE_POINTER return.
(ffi_prep_args64): Call discover_homogeneous_aggregate for ELFv1,
and handle single element structs containing float or double
as if the element wasn't wrapped in a struct.  Store floats in
second word of doubleword slot when big-endian.
(ffi_closure_helper_LINUX64): Similarly.

From-SVN: r259934

6 years agobb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
Richard Biener [Fri, 4 May 2018 13:33:15 +0000 (13:33 +0000)]
bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.

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

* bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Remove redundant create,
release split_store vector contents on failure.
* tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
scalar stmt vector on cache hit.

From-SVN: r259932

6 years agors6000: Remove Xilinx FP
Segher Boessenkool [Fri, 4 May 2018 09:36:50 +0000 (11:36 +0200)]
rs6000: Remove Xilinx FP

This removes the special Xilinx FP support.  It was deprecated in
GCC 8.

After this patch all of TARGET_{DOUBLE,SINGLE}_FLOAT,
TARGET_{DF,SF}_INSN, and TARGET_{DF,SF}_FPR are replaced by
TARGET_HARD_FLOAT.  Also the fp_type attribute is deleted.

* common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
Xilinx FP support.
* config.gcc (powerpc-xilinx-eabi*): Remove.
* config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
support.
(fusion_addis_mem_combo_load): Ditto.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
FP support.
(rs6000_cpu_cpp_builtins): Ditto.
* config/rs6000/rs6000-linux.c
(rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
* config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
support.
(rs6000_setup_reg_addr_masks): Ditto.
(rs6000_init_hard_regno_mode_ok): Ditto.
(rs6000_option_override_internal): Ditto.
(legitimate_lo_sum_address_p): Ditto.
(rs6000_legitimize_address): Ditto.
(rs6000_legitimize_reload_address): Ditto.
(rs6000_legitimate_address_p): Ditto.
(abi_v4_pass_in_fpr): Ditto.
(setup_incoming_varargs): Ditto.
(rs6000_gimplify_va_arg): Ditto.
(rs6000_split_multireg_move): Ditto.
(rs6000_savres_strategy): Ditto.
(rs6000_emit_prologue_components): Ditto.
(rs6000_emit_epilogue_components): Ditto.
(rs6000_emit_prologue): Ditto.
(rs6000_emit_epilogue): Ditto.
(rs6000_elf_file_end): Ditto.
(rs6000_function_value): Ditto.
(rs6000_libcall_value): Ditto.
* config/rs6000/rs6000.h: Ditto.
(TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
(TARGET_MINMAX): ... this.  New.
(TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
* config/rs6000/rs6000.md: Remove Xilinx FP support.
(*movsi_internal1_single): Delete.
* config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
mfpu=, mxilinx-fpu): Delete.
* config/rs6000/singlefp.h: Delete.
* config/rs6000/sysv4.h: Remove Xilinx FP support.
* config/rs6000/t-rs6000: Ditto.
* config/rs6000/t-xilinx: Delete.
* gcc/config/rs6000/titan.md: Adjust for fp_type removal.
* gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
(VStype_simple): Delete.
(VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
* config/rs6000/xfpu.h: Delete.
* config/rs6000/xfpu.md: Delete.
* config/rs6000/xilinx.h: Delete.
* config/rs6000/xilinx.opt: Delete.
* gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
-msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.

From-SVN: r259929

6 years agoPR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
Jonathan Wakely [Fri, 4 May 2018 08:57:23 +0000 (09:57 +0100)]
PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>

Add missing noexcept keyword to default constructor of each
_Optional_payload specialization.

PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
* include/std/optional (_Optional_payload): Add noexcept to default
constructor. Re-indent.
(_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
constructor for copying disengaged payloads.
(_Optional_payload<_Tp, true, false, true>): Likewise.
(_Optional_payload<_Tp, true, true, false>): Likewise.
(_Optional_payload<_Tp, true, false, false>): Likewise.
* testsuite/20_util/optional/cons/85642.cc: New.
* testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.

From-SVN: r259928

6 years ago[expand] Handle null target in expand_builtin_goacc_parlevel_id_size
Tom de Vries [Fri, 4 May 2018 08:29:08 +0000 (08:29 +0000)]
[expand] Handle null target in expand_builtin_goacc_parlevel_id_size

2018-05-04  Tom de Vries  <tom@codesourcery.com>

PR libgomp/85639
* builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
if ignore == 0.

From-SVN: r259927

6 years agore PR ada/85635 (typo in link.c for BSD platforms)
John Marino [Fri, 4 May 2018 07:32:36 +0000 (08:32 +0100)]
re PR ada/85635 (typo in link.c for BSD platforms)

PR ada/85635
* link.c (BSD platforms): Add missing backslash.

From-SVN: r259925

6 years agore PR tree-optimization/85627 (ICE in update_phi_components in tree-complex.c)
Richard Biener [Fri, 4 May 2018 07:30:50 +0000 (07:30 +0000)]
re PR tree-optimization/85627 (ICE in update_phi_components in tree-complex.c)

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

PR middle-end/85627
* tree-complex.c (update_complex_assignment): We are always in SSA form.
(expand_complex_div_wide): Likewise.
(expand_complex_operations_1): Likewise.
(expand_complex_libcall): Preserve EH info of the original stmt.
(tree_lower_complex): Handle removed blocks.
* tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
on complex multiplication and division libcall builtins.

* g++.dg/torture/pr85627.C: New testcase.

From-SVN: r259923

6 years agore PR lto/85574 (LTO bootstapped binaries differ)
Richard Biener [Fri, 4 May 2018 07:25:54 +0000 (07:25 +0000)]
re PR lto/85574 (LTO bootstapped binaries differ)

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

PR middle-end/85574
* fold-const.c (negate_expr_p): Restrict negation of operand
zero of a division to when we know that can happen without
overflow.
(fold_negate_expr_1): Likewise.

* gcc.dg/torture/pr85574.c: New testcase.
* gcc.dg/torture/pr57656.c: Use dg-additional-options.

From-SVN: r259922

6 years agore PR tree-optimization/85466 (Performance is slow when doing 'branchless' conditiona...
Jakub Jelinek [Fri, 4 May 2018 07:19:45 +0000 (09:19 +0200)]
re PR tree-optimization/85466 (Performance is slow when doing 'branchless' conditional style math operations)

PR libstdc++/85466
* real.h (real_nextafter): Declare.
* real.c (real_nextafter): New function.
* fold-const-call.c (fold_const_nextafter): New function.
(fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
CASE_CFN_NEXTTOWARD.
(fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
even when arg1_mode is different from arg0_mode.

* gcc.dg/nextafter-1.c: New test.
* gcc.dg/nextafter-2.c: New test.
* gcc.dg/nextafter-3.c: New test.
* gcc.dg/nextafter-4.c: New test.

From-SVN: r259921

6 years agocmd/go: update mkalldocs.sh
Ian Lance Taylor [Fri, 4 May 2018 01:43:39 +0000 (01:43 +0000)]
cmd/go: update mkalldocs.sh

    Update mkalldocs.sh from the current master sources, replacing the old
    mkdoc.sh.

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

From-SVN: r259920

6 years agocmd/go: enable tests of vet tool
Ian Lance Taylor [Fri, 4 May 2018 01:41:22 +0000 (01:41 +0000)]
cmd/go: enable tests of vet tool

    Since gofrontend does have the vet tool now, we can test it.

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

From-SVN: r259919

6 years agocmd/go: update to match recent changes to gc
Ian Lance Taylor [Fri, 4 May 2018 01:34:30 +0000 (01:34 +0000)]
cmd/go: update to match recent changes to gc

    In https://golang.org/cl/111097 the gc version of cmd/go was updated
    to include some gofrontend-specific changes. The gofrontend code
    already has different versions of those changes; this CL makes the
    gofrontend match the upstream code.

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

From-SVN: r259918

6 years agoDaily bump.
GCC Administrator [Fri, 4 May 2018 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r259917

6 years agoPR c++/85600 - virtual delete failure.
Jason Merrill [Thu, 3 May 2018 23:35:20 +0000 (19:35 -0400)]
PR c++/85600 - virtual delete failure.

* init.c (build_delete): Always save_expr when deleting.

From-SVN: r259913

6 years agoPR libstdc++/82644 define TR1 hypergeometric functions in strict modes
Jonathan Wakely [Thu, 3 May 2018 22:58:43 +0000 (23:58 +0100)]
PR libstdc++/82644 define TR1 hypergeometric functions in strict modes

Following a recent change for PR 82644 the non-standard hypergeomtric
functions are not defined by <cmath> when __STRICT_ANSI__ is defined
(e.g. for -std=c++17, or -std=c++14 -D__STDCPP_WANT_MATH_SPEC_FUNCS__).
That caused errors in <tr1/cmath> because the using-declarations for
tr1::hyperg et al are invalid in strict modes.

The solution is to define the TR1 hypergeometric functions inline in
<tr1/cmath> if __STRICT_ANSI__ is defined.

PR libstdc++/82644
* include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
inline definitions instead of using-declarations.
[__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
* testsuite/tr1/5_numerical_facilities/special_functions/
07_conf_hyperg/compile_cxx17.cc: New.
* testsuite/tr1/5_numerical_facilities/special_functions/
17_hyperg/compile_cxx17.cc: New.

From-SVN: r259912

6 years ago[C++ Patch] Kill -ffriend-injection
Nathan Sidwell [Thu, 3 May 2018 19:26:38 +0000 (19:26 +0000)]
[C++ Patch] Kill -ffriend-injection

https://gcc.gnu.org/ml/gcc-patches/2018-05/msg00175.html

* doc/extend.texi (Deprecated Features): Remove
-ffriend-injection.
(Backwards Compatibility): Likewise.
* doc/invoke.texi (C++ Language Options): Likewise.
(C++ Dialect Options): Likewise.

c-family/
* c.opt (ffriend-injection): Remove functionality, issue warning.

cp/
* decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
* name-lookup.c (do_pushdecl): Likewise.

testsuite/
Remove -ffriend-injection.
* g++.old-deja/g++.jason/scoping15.C: Delete.
* g++.old-deja/g++.mike/net43.C: Delete.

From-SVN: r259904

6 years agore PR target/85530 ([X86] _mm512_mullox_epi64 and _mm512_mask_mullox_epi64 not implem...
Jakub Jelinek [Thu, 3 May 2018 18:59:39 +0000 (20:59 +0200)]
re PR target/85530 ([X86] _mm512_mullox_epi64 and _mm512_mask_mullox_epi64 not implemented)

PR target/85530
* config/i386/avx512fintrin.h (_mm512_mullox_epi64,
_mm512_mask_mullox_epi64): New intrinsics.

* gcc.target/i386/avx512f-vpmullq-1.c: New test.
* gcc.target/i386/avx512f-vpmullq-2.c: New test.
* gcc.target/i386/avx512dq-vpmullq-3.c: New test.
* gcc.target/i386/avx512dq-vpmullq-4.c: New test.

From-SVN: r259903

6 years agoPR libstdc++/84769 qualify call to std::get<0>
Jonathan Wakely [Thu, 3 May 2018 18:58:04 +0000 (19:58 +0100)]
PR libstdc++/84769 qualify call to std::get<0>

PR libstdc++/84769
* include/std/variant (visit): Qualify std::get call.

From-SVN: r259902

6 years agoPR libstdc++/85632 fix wraparound in filesystem::space
Jonathan Wakely [Thu, 3 May 2018 18:58:00 +0000 (19:58 +0100)]
PR libstdc++/85632 fix wraparound in filesystem::space

On 32-bit targets any values over 4GB would wrap and produce the wrong
result.

PR libstdc++/85632 use uintmax_t for arithmetic
* src/filesystem/ops.cc (experimental::filesystem::space): Perform
arithmetic in result type.
* src/filesystem/std-ops.cc (filesystem::space): Likewise.
* testsuite/27_io/filesystem/operations/space.cc: Check total capacity
is greater than free space.
* testsuite/experimental/filesystem/operations/space.cc: New.

From-SVN: r259901

6 years agocompiler: avoid crashing on invalid non-integer array length
Ian Lance Taylor [Thu, 3 May 2018 17:20:44 +0000 (17:20 +0000)]
compiler: avoid crashing on invalid non-integer array length

    Tweak the array type checking code to avoid crashing on array types
    whose length expressions are explicit non-integer types (for example,
    "float64(10)"). If such constructs are seen, issue an "invalid array
    bound" error.

    Fixes golang/go#13486.

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

From-SVN: r259900

6 years agoUpdate .po files.
Joseph Myers [Thu, 3 May 2018 16:10:05 +0000 (17:10 +0100)]
Update .po files.

* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.

From-SVN: r259897

6 years agoAdd tests for std::remove_cvref
Jonathan Wakely [Thu, 3 May 2018 15:12:19 +0000 (16:12 +0100)]
Add tests for std::remove_cvref

* testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
* testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
New.
* testsuite/20_util/remove_cvref/value.cc: New.
* testsuite/20_util/remove_cvref/value_ext.cc: New.

From-SVN: r259896

6 years agoPR libstdc++/84087 add default arguments to basic_string members (LWG 2268)
Jonathan Wakely [Thu, 3 May 2018 15:01:20 +0000 (16:01 +0100)]
PR libstdc++/84087 add default arguments to basic_string members (LWG 2268)

This change was a DR against C++11 and so should have been implemented
years ago.

PR libstdc++/84087 LWG DR 2268 basic_string default arguments
* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
(append(const basic_string&, size_type, size_type)
(assign(const basic_string&, size_type, size_type)
(insert(size_type, const basic_string&, size_type, size_type)
(replace(size_type,size_type,const basic_string&,size_type,size_type)
(compare(size_type,size_type,constbasic_string&,size_type,size_type)):
Add default arguments (LWG 2268).
[_GLIBCXX_USE_CXX11_ABI=0]
(append(const basic_string&, size_type, size_type)
(assign(const basic_string&, size_type, size_type)
(insert(size_type, const basic_string&, size_type, size_type)
(replace(size_type,size_type,const basic_string&,size_type,size_type)
(compare(size_type,size_type,constbasic_string&,size_type,size_type)):
Likewise.
* testsuite/21_strings/basic_string/dr2268.cc: New test.

From-SVN: r259895

6 years agoPR libstdc++/84535 constrain std::thread constructor
Jonathan Wakely [Thu, 3 May 2018 14:08:36 +0000 (15:08 +0100)]
PR libstdc++/84535 constrain std::thread constructor

The standard requires that the std::thread constructor is constrained so
it can't be called with a first argument of type std::thread. The
current implementation only meets that requirement if the constructor is
called with one argument, by using deleted overloads. This uses an
enable_if constraint to enforce the requirement for any number of
arguments.

Also add a static assertion to give a more readable error for invalid
arguments that cannot be invoked. Also simplify _Invoker to reduce the
error cascade for ill-formed instantiations with non-invocable
arguments.

PR libstdc++/84535
* include/std/thread (thread::__not_same): New SFINAE helper.
(thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
first argument is not a std::thread. Add static assertion to check
INVOKE expression is valid.
(thread::thread(thread&), thread::thread(const thread&&)): Remove.
(thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
__invoke_result for return types and remove exception specifications.
* testsuite/30_threads/thread/cons/84535.cc: New.

From-SVN: r259893

6 years ago[testsuite] Add scan-offload-tree-dump
Tom de Vries [Thu, 3 May 2018 13:47:14 +0000 (13:47 +0000)]
[testsuite] Add scan-offload-tree-dump

2018-05-03  Tom de Vries  <tom@codesourcery.com>

PR testsuite/85106
* lib/scanoffloadtree.exp: New file.

* testsuite/lib/libgomp-dg.exp (libgomp-dg-test): Add save-temps to
extra_tool_flags if it contains an -foffload=-fdump-* flag.
* testsuite/lib/libgomp.exp: Include scanoffloadtree.exp.
* testsuite/libgomp.oacc-c/vec.c: Use scan-offload-tree-dump.

* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
dump files): Add offload-tree.

From-SVN: r259892

6 years agore PR tree-optimization/85615 (ICE at -O2 and above on valid code on x86_64-linux...
Richard Biener [Thu, 3 May 2018 13:20:02 +0000 (13:20 +0000)]
re PR tree-optimization/85615 (ICE at -O2 and above on valid code on x86_64-linux-gnu: in dfs_enumerate_from, at cfganal.c:1197)

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

PR tree-optimization/85615
* tree-ssa-threadupdate.c (thread_block_1): Only allow exits
to loops not nested in BBs loop father to avoid creating multi-entry
loops.

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

From-SVN: r259891

6 years ago[tree-complex.c] PR tree-optimization/70291: Inline floating-point complex multiplica...
Kyrylo Tkachov [Thu, 3 May 2018 12:59:43 +0000 (12:59 +0000)]
[tree-complex.c] PR tree-optimization/70291: Inline floating-point complex multiplication more aggressively

We can improve the performance of complex floating-point multiplications by inlining the expansion a bit more aggressively.
We can inline complex x = a * b as:
x = (ar*br - ai*bi) + i(ar*bi + br*ai);
if (isunordered (__real__ x, __imag__ x))
  x = __muldc3 (a, b); //Or __mulsc3 for single-precision

That way the common case where no NaNs are produced we can avoid the libgcc call and fall back to the
NaN handling stuff in libgcc if either components of the expansion are NaN.

The implementation is done in expand_complex_multiplication in tree-complex.c and the above expansion
will be done when optimising for -O1 and greater and when not optimising for size.
At -O0 and -Os the single call to libgcc will be emitted.

For the code:
__complex double
foo (__complex double a, __complex double b)
{
  return a * b;
}

We will now emit at -O2 for aarch64:
foo:
        fmul    d16, d1, d3
        fmul    d6, d1, d2
        fnmsub  d5, d0, d2, d16
        fmadd   d4, d0, d3, d6
        fcmp    d5, d4
        bvs     .L8
        fmov    d1, d4
        fmov    d0, d5
        ret
.L8:
        stp     x29, x30, [sp, -16]!
        mov     x29, sp
        bl      __muldc3
        ldp     x29, x30, [sp], 16
        ret

Instead of just a branch to __muldc3.

PR tree-optimization/70291
* tree-complex.c (expand_complex_libcall): Add type, inplace_p
arguments.  Change return type to tree.  Emit libcall as a new
statement rather than replacing existing one when inplace_p is true.
(expand_complex_multiplication_components): New function.
(expand_complex_multiplication): Expand floating-point complex
multiplication using the above.
(expand_complex_division): Rename inner_type parameter to type.
Update expand_complex_libcall call-site.
(expand_complex_operations_1): Update expand_complex_multiplication
and expand_complex_division call-sites.

* gcc.dg/complex-6.c: New test.
* gcc.dg/complex-7.c: Likewise.

From-SVN: r259889

6 years agoUse std::invoke_result in std::async instead of std::result_of
Jonathan Wakely [Thu, 3 May 2018 12:40:15 +0000 (13:40 +0100)]
Use std::invoke_result in std::async instead of std::result_of

* include/std/future (__async_result_of): Use __invoke_result instead
of result_of.

From-SVN: r259888

6 years agoDefine std::remove_cvref and std::remove_cvref_t for C++2a
Jonathan Wakely [Thu, 3 May 2018 12:40:10 +0000 (13:40 +0100)]
Define std::remove_cvref and std::remove_cvref_t for C++2a

Also define __remove_cvref_t for internal use before C++2a.

* include/std/any (any_cast): Use __remove_cvref_t.
* include/std/tuple (__make_tuple): Likewise.
* include/std/type_traits (__remove_cvref_t): Define.
(__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
[__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
* include/std/variant (__erased_hash): Use __remove_cvref_t.

From-SVN: r259887

6 years agore PR other/85622 (gcc-8.1.0/NEWS says it's not released yet)
Jakub Jelinek [Thu, 3 May 2018 09:29:39 +0000 (11:29 +0200)]
re PR other/85622 (gcc-8.1.0/NEWS says it's not released yet)

PR other/85622
* gcc_release: For -f, verify contrib/gennews has the major version
pages listed and both index.html and changes.html have been updated
for the new release.

From-SVN: r259881

6 years agore PR fortran/85579 (accepts invalid fortran test case gfortran.dg/pr51434.f90)
Richard Biener [Thu, 3 May 2018 07:33:09 +0000 (07:33 +0000)]
re PR fortran/85579 (accepts invalid fortran test case gfortran.dg/pr51434.f90)

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

PR testsuite/85579
* fortran.dg/pr51434.f90: Truncate transfer argument.

From-SVN: r259880

6 years agocmd/go: run tests that require package build IDs
Ian Lance Taylor [Thu, 3 May 2018 03:19:28 +0000 (03:19 +0000)]
cmd/go: run tests that require package build IDs

    These tests used to be disabled in the gofrontend since the go tool
    didn't support build IDs for the gofrontend. It does now, so enable
    the tests again.

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

From-SVN: r259875

6 years agoDaily bump.
GCC Administrator [Thu, 3 May 2018 00:16:34 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r259874

6 years agolibgo: add type/const references to sysinfo.c
Ian Lance Taylor [Wed, 2 May 2018 22:32:23 +0000 (22:32 +0000)]
libgo: add type/const references to sysinfo.c

    This patch adds explicit references to various types and constants
    defined by the header files included by sysinfo.c (used to drive the
    generation of gen-sysinfo.go as part of the libgo build via the GCC
    "-fdump-go-spec" option).

    The intent is to enable clients to gather the same info generated by
    "-fdump-go-spec" by instead reading the generated DWARF from a
    sysinfo.o object file compiled with "-g". Some compilers (notably
    clang) try to omit DWARF records for a given type unless there is an
    explicit use of it in the translation unit; the additional references
    are to insure that everything we want to see in the DWARF shows up.

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

From-SVN: r259868

6 years agolibgo: add support for the Nios II architecture
Ian Lance Taylor [Wed, 2 May 2018 22:28:46 +0000 (22:28 +0000)]
libgo: add support for the Nios II architecture

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

From-SVN: r259866

6 years agoruntime: remove unused stack.go
Ian Lance Taylor [Wed, 2 May 2018 22:01:22 +0000 (22:01 +0000)]
runtime: remove unused stack.go

    We're never going to use stack.go for gccgo.  Although a build tag
    keeps it from being built, even having it around can be confusing.
    Remove it.

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

From-SVN: r259865

6 years agolibgo: refactor code to enumerate stdlib packages
Ian Lance Taylor [Wed, 2 May 2018 21:57:35 +0000 (21:57 +0000)]
libgo: refactor code to enumerate stdlib packages

    Move the list of libgo, gotool, and check-target packages into
    separate files, then read the file contents as part of the build
    process on the fly. This is intended to enable other build tooling to
    share the canonical list of target packages (avoid duplication).

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

    libgo: revise rules for runtime.inc generation

    Refactor code for generating runtime.inc: extract out the relevant
    commands and place them in a separate shell script ("mkruntimeinc.sh").
    Update rules to avoid generating macros whose names begin with "$",
    such as "#define $sinkconst0 0".

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

From-SVN: r259863

6 years agore PR target/85582 (wrong code at -O1 and above on x86_64-linux-gnu in 32-bit mode)
Jakub Jelinek [Wed, 2 May 2018 21:56:17 +0000 (23:56 +0200)]
re PR target/85582 (wrong code at -O1 and above on x86_64-linux-gnu in 32-bit mode)

PR target/85582
* config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
*ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
*<shift_insn><dwi>3_doubleword_mask_1): In condition require that
the highest significant bit of the shift count mask is clear.  In
check whether and[sq]i3 is needed verify that all significant bits
of the shift count other than the highest are set.

* gcc.c-torture/execute/pr85582-3.c: New test.

From-SVN: r259862

6 years agolibgo: break dependence on libgcc unwind-pe.h
Ian Lance Taylor [Wed, 2 May 2018 21:53:30 +0000 (21:53 +0000)]
libgo: break dependence on libgcc unwind-pe.h

    The C portion of the Go runtime includes the header "unwind-pe.h" from
    libgcc, which contains some constants and a few small routines for
    decoding pointer values within unwind info. This patch gets rid of
    that include and instead adds a re-implementation of that
    functionality in the single file that uses it. The intent is to allow
    the C runtime portion of libgo to be built without a companion GCC
    installation.

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

From-SVN: r259861

6 years agodeque.tcc (deque<>::_M_assign_aux): Cast to void to ensure overloaded comma not used.
François Dumont [Wed, 2 May 2018 19:51:33 +0000 (19:51 +0000)]
deque.tcc (deque<>::_M_assign_aux): Cast to void to ensure overloaded comma not used.

2018-05-02  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
ensure overloaded comma not used.
* include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
* include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
* include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
* testsuite/23_containers/deque/modifiers/assign/1.cc: New.
* testsuite/23_containers/list/modifiers/assign/1.cc: New.
* testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
* testsuite/23_containers/vector/modifiers/assign/1.cc: New.

From-SVN: r259856

6 years agoPR libstdc++/68197 fail on negative iword/pword indices
Jonathan Wakely [Wed, 2 May 2018 19:04:55 +0000 (20:04 +0100)]
PR libstdc++/68197 fail on negative iword/pword indices

The suggested resolution of LWG 3083 is to make invalid indices
undefined, but we can fairly easily check for them and treat them as
errors in the same way as allocation failure. This avoids a segfault or
worse, setting an error flag on the stream instead.

PR libstdc++/68197
* include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
indices to unsigned.
* src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
as failure. Refactor error handling.
* testsuite/27_io/ios_base/storage/68197.cc: New.

From-SVN: r259854

6 years agore PR c++/68374 (G++ -Wshadow doesn't warn about static member shadowing)
Paolo Carlini [Wed, 2 May 2018 18:15:56 +0000 (18:15 +0000)]
re PR c++/68374 (G++ -Wshadow doesn't warn about static member shadowing)

/cp
2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
    Jason Merrill  <jason@redhat.com>

PR c++/68374
* name-lookup.c (check_local_shadow): Don't handle static old
declarations in the block handling locals shadowing locals.

/testsuite
2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
    Jason Merrill  <jason@redhat.com>

PR c++/68374
* g++.dg/warn/Wshadow-13.C: New.
* g++.dg/warn/Wshadow-14.C: Likewise.

Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r259853

6 years ago[openacc] Move GOMP_OPENACC_DIM parsing out of nvptx plugin
Tom de Vries [Wed, 2 May 2018 17:53:56 +0000 (17:53 +0000)]
[openacc] Move GOMP_OPENACC_DIM parsing out of nvptx plugin

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR libgomp/85411
* plugin/plugin-nvptx.c (nvptx_exec): Move parsing of
GOMP_OPENACC_DIM ...
* env.c (parse_gomp_openacc_dim): ... here.  New function.
(initialize_env): Call parse_gomp_openacc_dim.
(goacc_default_dims): Define.
* libgomp.h (goacc_default_dims): Declare.
* oacc-plugin.c (GOMP_PLUGIN_acc_default_dim): New function.
* oacc-plugin.h (GOMP_PLUGIN_acc_default_dim): Declare.
* libgomp.map: New version "GOMP_PLUGIN_1.2". Add
GOMP_PLUGIN_acc_default_dim.
* testsuite/libgomp.oacc-c-c++-common/loop-default-runtime.c: New test.
* testsuite/libgomp.oacc-c-c++-common/loop-default.h: New test.

From-SVN: r259852

6 years ago[libgomp, testsuite] Move tests to libgomp.c-c++-common
Tom de Vries [Wed, 2 May 2018 17:53:43 +0000 (17:53 +0000)]
[libgomp, testsuite] Move tests to libgomp.c-c++-common

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR testsuite/83791
* testsuite/libgomp.c++/udr-9.C: Update.
* testsuite/libgomp.c++/atomic-16.C: Remove.
* testsuite/libgomp.c++/cancel-taskgroup-2.C: Remove.
* testsuite/libgomp.c++/loop-13.C: Remove.
* testsuite/libgomp.c++/loop-14.C: Remove.
* testsuite/libgomp.c++/loop-15.C: Remove.
* testsuite/libgomp.c++/monotonic-1.C: Remove.
* testsuite/libgomp.c++/monotonic-2.C: Remove.
* testsuite/libgomp.c++/nonmonotonic-1.C: Remove.
* testsuite/libgomp.c++/nonmonotonic-2.C: Remove.
* testsuite/libgomp.c++/ordered-1.C: Remove.
* testsuite/libgomp.c++/pr45784.C: Remove.
* testsuite/libgomp.c++/pr64824.C: Remove.
* testsuite/libgomp.c++/pr64868.C: Remove.
* testsuite/libgomp.c++/pr66199-1.C: Remove.
* testsuite/libgomp.c++/pr66199-2.C: Remove.
* testsuite/libgomp.c++/pr66199-3.C: Remove.
* testsuite/libgomp.c++/pr66199-4.C: Remove.
* testsuite/libgomp.c++/pr66199-5.C: Remove.
* testsuite/libgomp.c++/pr66199-6.C: Remove.
* testsuite/libgomp.c++/pr66199-7.C: Remove.
* testsuite/libgomp.c++/pr66199-8.C: Remove.
* testsuite/libgomp.c++/pr66199-9.C: Remove.
* testsuite/libgomp.c++/pr69389.C: Remove.
* testsuite/libgomp.c++/simd10.C: Remove.
* testsuite/libgomp.c++/simd11.C: Remove.
* testsuite/libgomp.c++/simd12.C: Remove.
* testsuite/libgomp.c++/simd13.C: Remove.
* testsuite/libgomp.c++/target-1.C: Remove.
* testsuite/libgomp.c++/target-3.C: Remove.
* testsuite/libgomp.c++/target-4.C: Remove.
* testsuite/libgomp.c++/target-5.C: Remove.
* testsuite/libgomp.c++/taskgroup-1.C: Remove.
* testsuite/libgomp.c++/taskloop-1.C: Remove.
* testsuite/libgomp.c++/taskloop-2.C: Remove.
* testsuite/libgomp.c++/taskloop-3.C: Remove.
* testsuite/libgomp.c++/taskloop-4.C: Remove.
* testsuite/libgomp.c++/udr-9.C: Remove.
* testsuite/libgomp.c++/for-10.C: Remove.
* testsuite/libgomp.c++/for-11.C: Remove.
* testsuite/libgomp.c++/for-12.C: Remove.
* testsuite/libgomp.c++/for-13.C: Remove.
* testsuite/libgomp.c++/for-14.C: Remove.
* testsuite/libgomp.c++/for-9.C: Remove.
* testsuite/libgomp.c/atomic-18.c: Move ...
* testsuite/libgomp.c-c++-common/atomic-18.c: ... here.
* testsuite/libgomp.c/cancel-taskgroup-2.c: Move ...
* testsuite/libgomp.c-c++-common/cancel-taskgroup-2.c: here.
* testsuite/libgomp.c/loop-13.c: Move ...
* testsuite/libgomp.c-c++-common/loop-13.c: ... here.
* testsuite/libgomp.c/loop-14.c: Move ...
* testsuite/libgomp.c-c++-common/loop-14.c: ... here.
* testsuite/libgomp.c/loop-15.c: Remove.
* testsuite/libgomp.c-c++-common/loop-15.c: New test.
* testsuite/libgomp.c/monotonic-1.c: Move ...
* testsuite/libgomp.c-c++-common/monotonic-1.c: ... here.
* testsuite/libgomp.c/monotonic-2.c: Move ...
* testsuite/libgomp.c-c++-common/monotonic-2.c: ... here.
* testsuite/libgomp.c/nonmonotonic-1.c: Move ...
* testsuite/libgomp.c-c++-common/nonmonotonic-1.c: ... here.
* testsuite/libgomp.c/nonmonotonic-2.c: Move ...
* testsuite/libgomp.c-c++-common/nonmonotonic-2.c: ... here.
* testsuite/libgomp.c/ordered-4.c: Move ...
* testsuite/libgomp.c-c++-common/ordered-4.c: ... here.
* testsuite/libgomp.c/pr45784.c: Move ...
* testsuite/libgomp.c-c++-common/pr45784.c: ... here.
* testsuite/libgomp.c/pr64824.c: Move ...
* testsuite/libgomp.c-c++-common/pr64824.c: ... here.
* testsuite/libgomp.c/pr64868.c: Move ...
* testsuite/libgomp.c-c++-common/pr64868.c: ... here.
* testsuite/libgomp.c/pr66199-1.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-1.c: ... here.
* testsuite/libgomp.c/pr66199-2.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-2.c: ... here.
* testsuite/libgomp.c/pr66199-3.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-3.c: ... here.
* testsuite/libgomp.c/pr66199-4.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-4.c: ... here.
* testsuite/libgomp.c/pr66199-5.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-5.c: ... here.
* testsuite/libgomp.c/pr66199-6.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-6.c: ... here.
* testsuite/libgomp.c/pr66199-7.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-7.c: ... here.
* testsuite/libgomp.c/pr66199-8.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-8.c: ... here.
* testsuite/libgomp.c/pr66199-9.c: Move ...
* testsuite/libgomp.c-c++-common/pr66199-9.c: ... here.
* testsuite/libgomp.c/pr69389.c: Move ...
* testsuite/libgomp.c-c++-common/pr69389.c: ... here.
* testsuite/libgomp.c/simd-14.c: Move ...
* testsuite/libgomp.c-c++-common/simd-14.c: ... here.
* testsuite/libgomp.c/simd-15.c: Move ...
* testsuite/libgomp.c-c++-common/simd-15.c: ... here.
* testsuite/libgomp.c/simd-16.c: Move ...
* testsuite/libgomp.c-c++-common/simd-16.c: ... here.
* testsuite/libgomp.c/simd-17.c: Move ...
* testsuite/libgomp.c-c++-common/simd-17.c: ... here.
* testsuite/libgomp.c/target-1.c: Move ...
* testsuite/libgomp.c-c++-common/target-1.c: ... here.
* testsuite/libgomp.c/target-10.c: Move ...
* testsuite/libgomp.c-c++-common/target-10.c: ... here.
* testsuite/libgomp.c/target-13.c: Move ...
* testsuite/libgomp.c-c++-common/target-13.c: ... here.
* testsuite/libgomp.c/target-2.c: Move ...
* testsuite/libgomp.c-c++-common/target-2.c: ... here.
* testsuite/libgomp.c/taskgroup-1.c: Move ...
* testsuite/libgomp.c-c++-common/taskgroup-1.c: ... here.
* testsuite/libgomp.c/taskloop-1.c: Move ...
* testsuite/libgomp.c-c++-common/taskloop-1.c: ... here.
* testsuite/libgomp.c/taskloop-2.c: Move ...
* testsuite/libgomp.c-c++-common/taskloop-2.c: ... here.
* testsuite/libgomp.c/taskloop-3.c: Move ...
* testsuite/libgomp.c-c++-common/taskloop-3.c: ... here.
* testsuite/libgomp.c/taskloop-4.c: Move ...
* testsuite/libgomp.c-c++-common/taskloop-4.c: ... here.
* testsuite/libgomp.c/udr-1.c: Move ...
* testsuite/libgomp.c-c++-common/udr-1.c: ... here.
* testsuite/libgomp.c/for-1.c: Move ...
* testsuite/libgomp.c-c++-common/for-1.c: ... here.
* testsuite/libgomp.c/for-1.h: Move ...
* testsuite/libgomp.c-c++-common/for-1.h: ... here.
* testsuite/libgomp.c/for-2.c: Move ...
* testsuite/libgomp.c-c++-common/for-2.c: ... here.
* testsuite/libgomp.c/for-2.h: Move ...
* testsuite/libgomp.c-c++-common/for-2.h: ... here.
* testsuite/libgomp.c/for-3.c: Move ...
* testsuite/libgomp.c-c++-common/for-3.c: ... here.
* testsuite/libgomp.c/for-4.c: Move ...
* testsuite/libgomp.c-c++-common/for-4.c: ... here.
* testsuite/libgomp.c/for-5.c: Move ...
* testsuite/libgomp.c-c++-common/for-5.c: ... here.
* testsuite/libgomp.c/for-6.c: Move ...
* testsuite/libgomp.c-c++-common/for-6.c: ... here.

From-SVN: r259851

6 years ago[openacc] Add __builtin_goacc_parlevel_{id,size}
Tom de Vries [Wed, 2 May 2018 17:53:29 +0000 (17:53 +0000)]
[openacc] Add __builtin_goacc_parlevel_{id,size}

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR libgomp/82428
* builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
* omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
(BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
* builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
(expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
* doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
__builtin_goacc_parlevel_size.

* f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define.

* c-c++-common/goacc/builtin-goacc-parlevel-id-size-2.c: New test.
* c-c++-common/goacc/builtin-goacc-parlevel-id-size.c: New test.

* testsuite/libgomp.oacc-c-c++-common/gang-static-2.c: Use
__builtin_goacc_parlevel_{id,size}.
* testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-g-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-g-2.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-gwv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-gwv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-v-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-w-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-red-wv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-v-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-w-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/loop-wv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-v-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-w-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-wv-1.c: Same.
* testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c: Same.
* testsuite/libgomp.oacc-c-c++-common/tile-1.c: Same.

From-SVN: r259850

6 years agore PR c/30552 (gcc crashes when compiling examples with GNU statement expressions...
David Pagan [Wed, 2 May 2018 17:22:26 +0000 (17:22 +0000)]
re PR c/30552 (gcc crashes when compiling examples with GNU statement expressions in VLAs (also involved: nested functions declared K&R-style))

PR c/30552
* c-decl.c (old_style_parameter_scope): New function.
* c-parser.c (c_parser_postfix_expression): Check for statement
expressions in old-style function parameter list declarations.
* c-parser.h (old_style_parameter_scope): New extern declaration.

PR c/30552
* gcc.dg/noncompile/pr30552-1.c: New test.
* gcc.dg/noncompile/pr30552-2.c: New test.
* gcc.dg/noncompile/pr30552-3.c: New test.
* gcc.dg/noncompile/pr30552-4.c: New test.

From-SVN: r259849

6 years ago* es.po: Update.
Joseph Myers [Wed, 2 May 2018 17:01:16 +0000 (18:01 +0100)]
* es.po: Update.

From-SVN: r259845

6 years agoPR libstdc++/83860 avoid dangling references in valarray closure types
Jonathan Wakely [Wed, 2 May 2018 16:41:46 +0000 (17:41 +0100)]
PR libstdc++/83860 avoid dangling references in valarray closure types

Store nested closures by value not by reference, to prevent holding
invalid references to temporaries that have been destroyed. This
changes the layout of the closure types, so change their linkage names,
but moving them to a different namespace.

PR libstdc++/57997
PR libstdc++/83860
* include/bits/gslice_array.h (gslice_array): Define default
constructor as deleted, as per C++11 standard.
* include/bits/mask_array.h (mask_array): Likewise.
* include/bits/slice_array.h (slice_array): Likewise.
* include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
to namespace __detail.
(_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
members.
* include/bits/valarray_before.h (_ValArrayRef): New helper for type
of data members in closure objects.
(_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
(_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
__detail.
(_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
(_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
(_SBase::_M_expr): Use _ValArrayRef for type of data members.
* include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
(_ValFunClos, _RefFunClos): Move to namespace __detail and add
using-declarations to namespace std.
* testsuite/26_numerics/valarray/83860.cc: New.

From-SVN: r259844

6 years agoRemove duplicate function call in test
Jonathan Wakely [Wed, 2 May 2018 16:27:01 +0000 (17:27 +0100)]
Remove duplicate function call in test

* testsuite/backward/strstream_move.cc: Remove duplicate function
call.

From-SVN: r259843

6 years agoPR libstdc++/69608 Move semantics for strstreambuf
Jonathan Wakely [Wed, 2 May 2018 16:25:44 +0000 (17:25 +0100)]
PR libstdc++/69608 Move semantics for strstreambuf

In libstdc++ the deprecated char* streams are non-copyable, as was
required pre-C++11.

Since C++11 the standard implies that those streams should be copyable,
but doesn't specify the effects of copying them. This is surely a
defect, so for consistency with other implementations this change makes
them movable, but not copyable.

PR libstdc++/69608
* include/backward/strstream (strstreambuf): Define move constructor
and move assignment operator.
(istrstream, ostrstream, strstream): Likewise.
* testsuite/backward/strstream_move.cc: New.

From-SVN: r259842

6 years agore PR tree-optimization/85597 (internal compiler error: in compute_live_loop_exits...
Richard Biener [Wed, 2 May 2018 14:19:51 +0000 (14:19 +0000)]
re PR tree-optimization/85597 (internal compiler error: in compute_live_loop_exits, at tree-ssa-loop-manip.c:229)

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

PR tree-optimization/85597
* tree-vect-stmts.c (vectorizable_operation): For ternary SLP
do not use split vect_get_vec_defs call but call vect_get_slp_defs
directly.

* gcc.dg/vect/pr85597.c: New testcase.

From-SVN: r259840

6 years ago[testsuite] Add scan-ltrans-tree-dump
Tom de Vries [Wed, 2 May 2018 12:16:32 +0000 (12:16 +0000)]
[testsuite] Add scan-ltrans-tree-dump

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR testsuite/85106
* gcc.dg/ipa/ipa-icf-38.c: Use scan-ltrans-tree-dump.
* lib/scanltranstree.exp: New file.
* lib/target-supports.exp (scan-ltrans-tree-dump_required_options)
(scan-ltrans-tree-dump-times_required_options)
(scan-ltrans-tree-dump-not_required_options)
(scan-ltrans-tree-dump-dem_required_options)
(scan-ltrans-tree-dump-dem-not_required_options): New proc.
* lib/gcc-dg.exp: Include scanltranstree.exp.

* testsuite/lib/libatomic.exp: Include scanltranstree.exp.

* testsuite/lib/libgomp.exp: Include scanltranstree.exp.

* testsuite/lib/libitm.exp: Include scanltranstree.exp.

* testsuite/lib/libvtv.exp: Include scanltranstree.exp.

* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
dump files): Add ltrans-tree.

From-SVN: r259838

6 years ago[testsuite] Add scan-wpa-ipa-dump
Tom de Vries [Wed, 2 May 2018 12:16:15 +0000 (12:16 +0000)]
[testsuite] Add scan-wpa-ipa-dump

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR testsuite/85106
* gcc.dg/ipa/ipa-icf-38.c: New test.
* gcc.dg/ipa/ipa-icf-38a.c: New test.
* lib/scandump.exp (dump-base): New proc.
(scan-dump, scan-dump-times, scan-dump-not, scan-dump-dem)
(scan-dump-dem-not): Add and handle parameter for suffix of the dump
base.
* lib/scanipa.exp: Add "" argument to scan-dump calls.
* lib/scanlang.exp: Same.
* lib/scanrtl.exp: Same.
* lib/scantree.exp: Same.
* lib/scanwpaipa.exp: New file.
* lib/gcc-dg.exp: Include scanwpaipa.exp.

* testsuite/lib/libatomic.exp: Include scanwpaipa.exp.

* testsuite/lib/libgomp.exp: Include scanwpaipa.exp.

* testsuite/lib/libitm.exp: Include scanwpaipa.exp.

* testsuite/lib/libvtv.exp: Include scanwpaipa.exp.

* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
dump files): Add wpa-ipa.

From-SVN: r259837

6 years agors6000: Remove paired single
Segher Boessenkool [Wed, 2 May 2018 10:46:00 +0000 (12:46 +0200)]
rs6000: Remove paired single

This removes paired single (used on the 750CL and friends).  It was
deprecated in GCC 8.  Removing it means we only have one vector model
to deal with (VMX+VSX, 16-byte vectors).

* config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
powerpc*-*-linux*paired* target.
* config/rs6000/750cl.h: Delete.
* config/rs6000/paired.h: Delete.
* config/rs6000/paired.md: Delete.
* config/rs6000/predicates.md (easy_vector_constant): Remove paired
float support.
* config/rs6000/rs6000-builtin.def: Remove paired float support.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comment.  Remove paired float support.
* config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
VECTOR_PAIRED.
* config/rs6000/rs6000-protos.h (paired_expand_vector_init,
paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
declarations.
* config/rs6000/rs6000.c: Remove paired float support.
(paired_expand_vector_init, paired_expand_vector_move,
paired_emit_vector_compare, paired_emit_vector_cond_expr,
(paired_expand_lv_builtin, paired_expand_stv_builtin,
paired_expand_builtin, paired_expand_predicate_builtin,
paired_init_builtins): Delete.
* config/rs6000/rs6000.h: Remove paired float support.
* config/rs6000/rs6000.md: Remove paired float support.
(move_from_CR_ov_bit): Delete.
* config/rs6000/rs6000.opt (mpaired): Delete.
* config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.

From-SVN: r259833

6 years agoansidecl.h (ATTRIBUTE_NONSTRING): Define.
Alan Modra [Wed, 2 May 2018 09:51:45 +0000 (19:21 +0930)]
ansidecl.h (ATTRIBUTE_NONSTRING): Define.

ATTRIBUTE_NONSTRING

* ansidecl.h (ATTRIBUTE_NONSTRING): Define.

From-SVN: r259832

6 years ago* gennews (files): Add files for GCC 8.
Jakub Jelinek [Wed, 2 May 2018 08:12:23 +0000 (10:12 +0200)]
* gennews (files): Add files for GCC 8.

From-SVN: r259828

6 years agore PR middle-end/85567 (internal compiler error: in gimplify_modify_expr, at gimplify...
Richard Biener [Wed, 2 May 2018 07:59:34 +0000 (07:59 +0000)]
re PR middle-end/85567 (internal compiler error: in gimplify_modify_expr, at gimplify.c:5797 when using sincos())

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

PR middle-end/85567
* gimplify.c (gimplify_save_expr): When in SSA form allow
SAVE_EXPRs to compute to SSA vars.

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

From-SVN: r259826

6 years agore PR target/85582 (wrong code at -O1 and above on x86_64-linux-gnu in 32-bit mode)
Jakub Jelinek [Wed, 2 May 2018 07:52:08 +0000 (09:52 +0200)]
re PR target/85582 (wrong code at -O1 and above on x86_64-linux-gnu in 32-bit mode)

PR target/85582
* config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
*ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
*<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
clobber operands[2], instead use a new pseudo.  Formatting fixes.

* gcc.c-torture/execute/pr85582-1.c: New test.
* gcc.c-torture/execute/pr85582-2.c: New test.

From-SVN: r259825

6 years agoTighten early exit in vect_analyze_data_ref_dependence (PR85586)
Richard Sandiford [Wed, 2 May 2018 07:40:22 +0000 (07:40 +0000)]
Tighten early exit in vect_analyze_data_ref_dependence (PR85586)

The problem in this PR was that we didn't consider aliases between
writes in the same strided group.  After tightening the early exit
we get the expected abs(step) >= 2 versioning check.

2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/85586
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
exit early for statements in the same group if the accesses are
not strided.

gcc/testsuite/
PR tree-optimization/85586
* gcc.dg/vect/pr85586.c: New test.

From-SVN: r259822

6 years ago[lto] Add "could not find mkoffload" error message to lto-wrapper
Tom de Vries [Wed, 2 May 2018 07:12:15 +0000 (07:12 +0000)]
[lto] Add "could not find mkoffload" error message to lto-wrapper

2018-05-02  Tom de Vries  <tom@codesourcery.com>

PR lto/85451
* lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
error message.

From-SVN: r259821

6 years agoPlugin API to get the list of wrap symbols.
Sriraman Tallam [Wed, 2 May 2018 00:53:48 +0000 (00:53 +0000)]
Plugin API to get the list of wrap symbols.

This was approved for the binutils gold linker.
2018-05-01  Sriraman Tallam  <tmsriram@google.com>

* plugin-api.h: Add plugin API to get the list of wrap
symbols.

From-SVN: r259820

6 years agoAdd support for gcc as git submodule of another repository.
Jim Wilson [Wed, 2 May 2018 00:24:45 +0000 (00:24 +0000)]
Add support for gcc as git submodule of another repository.

contrib/
* gcc_update: Check for .git as a file.

From-SVN: r259819

6 years agoDaily bump.
GCC Administrator [Wed, 2 May 2018 00:16:32 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r259818

6 years agoPR libstdc++/84654 Disable __float128 specializations for -mno-float128
Tulio Magno Quites Machado Filho [Tue, 1 May 2018 22:47:33 +0000 (22:47 +0000)]
PR libstdc++/84654 Disable __float128 specializations for -mno-float128

2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>

PR libstdc++/84654
* acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
* config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
* configure: Regenerate.
* include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
based on ENABLE_FLOAT128.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
[!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
_GLIBCXX_USE_FLOAT128.

From-SVN: r259813

6 years agoGeneralize a<b&a<c -> a<min(b,c)
Marc Glisse [Tue, 1 May 2018 21:41:05 +0000 (23:41 +0200)]
Generalize a<b&a<c -> a<min(b,c)

2018-05-01  Marc Glisse  <marc.glisse@inria.fr>

PR tree-optimization/85143
gcc/
* match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.

gcc/testsuite/
* gcc.dg/tree-ssa/minmax-loopend.c: Extend and split...
* gcc.dg/tree-ssa/minmax-loopend-2.c: ... here.

From-SVN: r259812

6 years ago* gcc.pot: Regenerate.
Joseph Myers [Tue, 1 May 2018 20:33:44 +0000 (21:33 +0100)]
* gcc.pot: Regenerate.

From-SVN: r259810

6 years ago[nvptx] Improve "offload compiler not found" message in mkoffload
Tom de Vries [Tue, 1 May 2018 19:52:57 +0000 (19:52 +0000)]
[nvptx] Improve "offload compiler not found" message in mkoffload

2018-05-01  Tom de Vries  <tom@codesourcery.com>

PR lto/85451
* config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
not found" error message.

From-SVN: r259809

6 years agoAdd VEC_ORDERED_REMOVE_IF
Tom de Vries [Tue, 1 May 2018 19:16:43 +0000 (19:16 +0000)]
Add VEC_ORDERED_REMOVE_IF

2018-05-01  Tom de Vries  <tom@codesourcery.com>

PR other/83786
* vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
* vec.c (test_ordered_remove_if): New function.
(vec_c_tests): Call test_ordered_remove_if.
* dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
* lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
* tree-vect-patterns.c (vect_pattern_recog_1): Use
VEC_ORDERED_REMOVE_IF.

From-SVN: r259808

6 years ago-Wformat: fix nonsensical "wide character" message (PR c/84258)
David Malcolm [Tue, 1 May 2018 18:51:15 +0000 (18:51 +0000)]
-Wformat: fix nonsensical "wide character" message (PR c/84258)

gcc/c-family/ChangeLog:
PR c/84258
* c-format.c (struct format_check_results): Add field
"number_non_char".
(check_format_info): Initialize it, and warn if encountered.
(check_format_arg): Distinguish between wide char and
everything else when detecting arrays of non-char.

gcc/testsuite/ChangeLog:
PR c/84258
* c-c++-common/Wformat-pr84258.c: New test.

From-SVN: r259807

6 years agore PR tree-optimization/82665 (missing value range optimization for memchr)
Prathamesh Kulkarni [Tue, 1 May 2018 18:20:39 +0000 (18:20 +0000)]
re PR tree-optimization/82665 (missing value range optimization for memchr)

PR tree-optimization/82665
* vr-values.c (vr_values::extract_range_from_binary_expr): Handle
pointer subtraction where arguments come from a memchr call.

        PR tree-optimization/82665
* gcc.dg/tree-ssa/pr82665.c: New test.

From-SVN: r259806

6 years agoPR c++/85587 - error with scoped enum in template.
Jason Merrill [Tue, 1 May 2018 18:11:53 +0000 (14:11 -0400)]
PR c++/85587 - error with scoped enum in template.

* semantics.c (finish_qualified_id_expr): Don't return an
unqualified IDENTIFIER_NODE.

From-SVN: r259805

6 years agoconfigure.ac (LD_AS_NEEDED_OPTION, [...]): Use --push-state --as-needed and --pop...
Jakub Jelinek [Tue, 1 May 2018 17:04:52 +0000 (19:04 +0200)]
configure.ac (LD_AS_NEEDED_OPTION, [...]): Use --push-state --as-needed and --pop-state instead of --as-needed and...

* configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
--push-state --as-needed and --pop-state instead of --as-needed and
--no-as-needed if ld supports it.
* configure: Regenerated.

From-SVN: r259803

6 years agoAdd the Netronome Flow Processor (nfp) as a build target to the top-level configure...
Francois H. Theron [Tue, 1 May 2018 15:26:51 +0000 (15:26 +0000)]
Add the Netronome Flow Processor (nfp) as a build target to the top-level configure.ac file.

* configure.ac: Added "nfp" target.
* configure: Regenerate.

From-SVN: r259800

6 years agore PR web/85578 (broken links in gcc-8.0.1-RC-20180427/INSTALL/specific.html, and...
Jakub Jelinek [Tue, 1 May 2018 15:26:36 +0000 (17:26 +0200)]
re PR web/85578 (broken links in gcc-8.0.1-RC-20180427/INSTALL/specific.html, and out of date prerequisites.html)

PR web/85578
* doc/install.texi2html: Replace _002d with - and _002a with * in
generated html files using sed.

From-SVN: r259799

6 years agore PR go/85429 (Several gotools tests FAIL with Solaris as)
Ian Lance Taylor [Tue, 1 May 2018 14:08:44 +0000 (14:08 +0000)]
re PR go/85429 (Several gotools tests FAIL with Solaris as)

PR go/85429
    cmd/go: support more Solaris assembler syntaxes

    Patch by Rainer Orth.

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

From-SVN: r259797

6 years agoPR c++/85580 - extern "C" and local variables
Jason Merrill [Tue, 1 May 2018 12:45:49 +0000 (08:45 -0400)]
PR c++/85580 - extern "C" and local variables

* name-lookup.c (check_extern_c_conflict): Ignore local decls.

From-SVN: r259793

6 years agoDaily bump.
GCC Administrator [Tue, 1 May 2018 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r259787

6 years agoAdd gcc_rich_location::add_fixit_insert_formatted
David Malcolm [Tue, 1 May 2018 00:10:10 +0000 (00:10 +0000)]
Add gcc_rich_location::add_fixit_insert_formatted

This patch adds a support function to class gcc_rich_location
to make it easier for fix-it hints to use idiomatic C/C++
indentation, for use by the patch for PR c++/85523.

gcc/ChangeLog:
PR c++/85523
* gcc-rich-location.c (blank_line_before_p): New function.
(use_new_line): New function.
(gcc_rich_location::add_fixit_insert_formatted): New function.
* gcc-rich-location.h
(gcc_rich_location::add_fixit_insert_formatted): New function.

gcc/testsuite/ChangeLog:
PR c++/85523
* gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
(test_add_fixit_insert_formatted_single_line): New function.
(test_add_fixit_insert_formatted_multiline): New function.
Extend expected output of generated patch to include fix-it hints
for these.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Include
"gcc-rich-location.h".  Add test coverage for
gcc_rich_location::add_fixit_insert_formatted.

From-SVN: r259783

6 years agoselftest: remove "Yoda ordering" in assertions
David Malcolm [Tue, 1 May 2018 00:02:49 +0000 (00:02 +0000)]
selftest: remove "Yoda ordering" in assertions

gcc/ChangeLog:
* selftest.c (assert_streq): Rename "expected" and "actual" to
"val1" and "val2".  Extend NULL-handling to cover both inputs
symmetrically, while still requiring both to be non-NULL for a pass.
* selftest.h (assert_streq): Rename "expected" and "actual" to
"val1" and "val2".
(ASSERT_EQ): Likewise.
(ASSERT_EQ_AT): Likewise.
(ASSERT_KNOWN_EQ): Likewise.
(ASSERT_KNOWN_EQ_AT): Likewise.
(ASSERT_NE): Likewise.
(ASSERT_MAYBE_NE): Likewise.
(ASSERT_MAYBE_NE_AT): Likewise.
(ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
the assertion to pass.
(ASSERT_STREQ_AT): Likewise.

From-SVN: r259782

6 years agoPR c++/84701 - unsigned typeof.
Jason Merrill [Mon, 30 Apr 2018 21:21:32 +0000 (17:21 -0400)]
PR c++/84701 - unsigned typeof.

* decl.c (grokdeclarator): Overhaul diagnostics for invalid use
of long/short/signed/unsigned.

From-SVN: r259780

6 years agoPR c++/85305 - pack in lambda init-capture.
Jason Merrill [Mon, 30 Apr 2018 21:21:25 +0000 (17:21 -0400)]
PR c++/85305 - pack in lambda init-capture.

* parser.c (cp_parser_initializer): Add subexpression_p parm; don't
check_for_bare_parameter_packs in a subexpression.
(cp_parser_lambda_introducer): Use it.

From-SVN: r259779

6 years agoargv.c (expandargv): Fix memory leak for expanded arguments.
Daniel van Gerpen [Mon, 30 Apr 2018 18:00:49 +0000 (18:00 +0000)]
argv.c (expandargv): Fix memory leak for expanded arguments.

       * argv.c (expandargv): Fix memory leak for expanded
        arguments.

From-SVN: r259775

6 years agoClarify documentation for -fpie and -fPIE
Jonathan Wakely [Mon, 30 Apr 2018 16:55:12 +0000 (17:55 +0100)]
Clarify documentation for -fpie and -fPIE

* doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
interaction with -pie.

From-SVN: r259774

6 years agoselftest.h: fix alphabetization of per-source-file selftest declarations
David Malcolm [Mon, 30 Apr 2018 15:32:32 +0000 (15:32 +0000)]
selftest.h: fix alphabetization of per-source-file selftest declarations

gcc/ChangeLog:
* selftest.h: Fix alphabetization of per-source-file selftest
declarations.

From-SVN: r259773

6 years agoPR c++/61982 - dead stores to destroyed objects.
Jason Merrill [Mon, 30 Apr 2018 15:21:01 +0000 (11:21 -0400)]
PR c++/61982 - dead stores to destroyed objects.

gcc/cp/
* call.c (build_trivial_dtor_call): New, assigns a clobber.
(build_over_call, build_special_member_call): Use it.
* cp-tree.h: Declare it.
* init.c (build_delete): Remove trivial path.
gcc/
* gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
of clobber.

From-SVN: r259772

6 years agoinit.c (build_dtor_call): Use build_special_member_call.
Jason Merrill [Mon, 30 Apr 2018 15:20:56 +0000 (11:20 -0400)]
init.c (build_dtor_call): Use build_special_member_call.

* init.c (build_dtor_call): Use build_special_member_call.

(build_delete): Remove redundant uses of save_addr.

From-SVN: r259771

6 years agotree.c (build_clobber): New.
Jason Merrill [Mon, 30 Apr 2018 15:20:46 +0000 (11:20 -0400)]
tree.c (build_clobber): New.

* tree.c (build_clobber): New.

* tree.h: Declare it.
* gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.

From-SVN: r259770

6 years agoUse char_span for return type of location_get_source_line
David Malcolm [Mon, 30 Apr 2018 15:01:56 +0000 (15:01 +0000)]
Use char_span for return type of location_get_source_line

location_get_source_line returns a const char * that isn't 0-terminated,
writing back a length through an int * param.

This is error-prone, as all call-sites have to take into account the
lack of 0-termination, and respect the length of the buffer.

It's cleaner to bundle together this pointer+length state into a class,
so this patch does so, reusing the "char_span" class that I introduced
in r250187 (as part of the fix for PR c/81405).

The patch also adds assertions to all access to the char_span.

gcc/c-family/ChangeLog:
* c-format.c (get_corrected_substring): Update for
location_get_source_line returning a char_span.  Use a char_span
when handling the prefix of the correction.
* c-indentation.c (get_visual_column): Update for
location_get_source_line returning a char_span.
(get_first_nws_vis_column): Likewise.

gcc/ChangeLog:
* diagnostic-show-locus.c (layout::layout): Update for
location_get_source_line returning a char_span.
(struct char_span): Move to input.h.
(struct correction): Update for fields in char_span becoming
private.
(struct source_line): Update for location_get_source_line
returning a char_span.
(layout::print_line): Likewise.
* edit-context.c (edited_file::print_content): Likewise.
(edited_file::print_diff_hunk): Likewise.
(edited_file::print_run_of_changed_lines): Likewise.
(edited_file::get_num_lines): Likewise.
(edited_line::edited_line): Likewise.
* final.c (asm_show_source): Likewise.
* input.c (location_get_source_line): Convert return type
from const char * to char_span, losing the final "line_len"
param.
(dump_location_info): Update for the above.
(get_substring_ranges_for_loc): Likewise.  Use a char_span
when handling the literal within the line.
(test_reading_source_line): Update for location_get_source_line
returning a char_span.
* input.h (class char_span): Move here from
diagnostic-show-locus.c, converting from a struct to a class.
Make data members private.
(char_span::operator bool): New.
(char_span::length): New.
(char_span::get_buffer): New.
(char_span::operator[]): New.
(char_span::subspan): Make const.
(char_span::xstrdup): New.
(location_get_source_line): Convert return type from const char *
to char_span, losing the final "line_size" param.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
(test_show_locus): Update for location_get_source_line returning a
char_span.  Use char_span for handling words in the
"test_many_nested_locations" fix-it example.

From-SVN: r259768

6 years agolto-wrapper.c (ltrans_priorities): New static var.
Jan Hubicka [Mon, 30 Apr 2018 14:40:10 +0000 (16:40 +0200)]
lto-wrapper.c (ltrans_priorities): New static var.

* lto-wrapper.c (ltrans_priorities): New static var.
(cmp_priority): New.
(run_gcc): Read priorities and if doing parallel build order
the Makefile by them.

* lto.c (cmp_partitions_size): Remove.
(lto_wpa_write_files): Also output priorities; do not sort partitions.
(cmp_partition_order): Move to ...
* lto-partition.c (cmp_partition_order): ...
(lto_1_to_1_map): Sort partitions.

From-SVN: r259767

6 years agoinput.h: use STATIC_ASSERT
David Malcolm [Mon, 30 Apr 2018 13:50:22 +0000 (13:50 +0000)]
input.h: use STATIC_ASSERT

gcc/ChangeLog:
* input.h (builtins_location_check): Convert to a STATIC_ASSERT.

From-SVN: r259766

6 years agotree-cfg.c (verify_address): Remove base argument, add flag whether to check TREE_ADD...
Richard Biener [Mon, 30 Apr 2018 13:18:59 +0000 (13:18 +0000)]
tree-cfg.c (verify_address): Remove base argument, add flag whether to check TREE_ADDRESSABLE and do that.

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

* tree-cfg.c (verify_address): Remove base argument, add
flag whether to check TREE_ADDRESSABLE and do that.
(verify_expr): Remove.
(verify_types_in_gimple_reference): Add pieces from verify_expr.
(verify_gimple_assign_single): Likewise.
(verify_gimple_switch): Likewise.
(verify_expr_location_1): Dereference tp once.  Add (disabled)
piece from verify_expr.
(verify_gimple_in_cfg): Do not call verify_expr on all ops.

From-SVN: r259765

6 years ago[ARC] Clear the instruction cache using syscalls.
Claudiu Zissulescu [Mon, 30 Apr 2018 13:16:24 +0000 (15:16 +0200)]
[ARC] Clear the instruction cache using syscalls.

Clear the instruction cache from `beg' to `end'.  This makes an inline
system call to SYS_cacheflush.

gcc/
2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/linux.h (CLEAR_INSN_CACHE): Define.

From-SVN: r259764

6 years ago[ARC] Cleanup sdata handling.
Claudiu Zissulescu [Mon, 30 Apr 2018 13:16:09 +0000 (15:16 +0200)]
[ARC] Cleanup sdata handling.

Clean up how we handle small data load/store operations.

gcc/
2018-01-18  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-protos.h (prepare_extend_operands): Remove.
(small_data_pattern): Likewise.
(arc_rewrite_small_data): Likewise.
* config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
(LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
(get_symbol_alignment): New function.
(legitimate_small_data_address_p): Likewise.
(legitimate_scaled_address): Update, call
legitimate_small_data_address_p.
(output_sdata): New static variable.
(arc_print_operand): Update how we handle small data operands.
(arc_print_operand_address): Likewise.
(arc_legitimate_address_p): Update, use
legitimate_small_data_address_p.
(arc_rewrite_small_data_p): Remove.
(arc_rewrite_small_data_1): Likewise.
(arc_rewrite_small_data): Likewise.
(small_data_pattern): Likewise.
(compact_sda_memory_operand): Update to use
legitimate_small_data_address_p and get_symbol_alignment.
(prepare_move_operands): Don't rewite sdata pattern.
(prepare_extend_operands): Remove.
* config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
pattern.
(zero_extendqisi2): Likewise.
(zero_extendhisi2): Likewise.
(extendqihi2): Likewise.
(extendqisi2): Likewise.
(extendhisi2): Likewise.
(addsi3): Likewise.
(subsi3): Likewise.
(andsi3): Likewise.
* config/arc/constraints.md (Usd): Change it to memory constraint.

gcc/testsuite
2018-01-18  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/interrupt-8.c: Update test.
* gcc.target/arc/loop-4.c: Likewise.
* gcc.target/arc/loop-hazard-1.c: Likewise.
* gcc.target/arc/sdata-3.c: Likewise.

From-SVN: r259763