]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years agox86: Don't generate vzeroupper if caller passes AVX/AVX512 registers
hjl [Tue, 8 Jan 2019 17:40:18 +0000 (17:40 +0000)] 
x86: Don't generate vzeroupper if caller passes AVX/AVX512 registers

There is no need to generate vzeroupper if caller passes arguments in
AVX/AVX512 registers.

Tested on i686 and x86-64 with and without --with-arch=native.

gcc/

PR target/88717
* config/i386/i386.c (ix86_avx_u128_mode_exit): Call
ix86_avx_u128_mode_entry.

gcc/testsuite/

PR target/88717
* gcc.target/i386/pr88717.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267732 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/88548 - this accepted in static member functions.
mpolacek [Tue, 8 Jan 2019 17:37:51 +0000 (17:37 +0000)] 
PR c++/88548 - this accepted in static member functions.
* parser.c (cp_debug_parser): Adjust printing of
local_variables_forbidden_p.
(cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
(cp_parser_primary_expression): When checking
local_variables_forbidden_p, use THIS_FORBIDDEN or
LOCAL_VARS_FORBIDDEN.
(cp_parser_lambda_body): Update the type of
local_variables_forbidden_p.  Set it to 0 rather than false.
(cp_parser_condition): Adjust call to cp_parser_declarator.
(cp_parser_explicit_instantiation): Likewise.
(cp_parser_init_declarator): Likewise.
(cp_parser_declarator): New parameter.  Use it.
(cp_parser_direct_declarator): New parameter.  Use it to set
local_variables_forbidden_p.  Adjust call to cp_parser_declarator.
(cp_parser_type_id_1): Adjust call to cp_parser_declarator.
(cp_parser_parameter_declaration): Likewise.
(cp_parser_default_argument): Update the type of
local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
rather than true.
(cp_parser_member_declaration): Tell cp_parser_declarator if we saw
'static' or 'friend'.
(cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
(cp_parser_late_parsing_default_args): Update the type of
local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
rather than true.
(cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
(cp_parser_objc_class_ivars): Likewise.
(cp_parser_objc_struct_declaration): Likewise.
(cp_parser_omp_for_loop_init): Likewise.
* parser.h (cp_parser): Change the type of local_variables_forbidden_p
to unsigned char.
(LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
Define.

* g++.dg/cpp0x/this1.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267731 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUse proper type in linear transformation in tree-switch-conversion (PR tree-optimizat...
marxin [Tue, 8 Jan 2019 14:45:28 +0000 (14:45 +0000)] 
Use proper type in linear transformation in tree-switch-conversion (PR tree-optimization/88753).

2019-01-08  Martin Liska  <mliska@suse.cz>

PR tree-optimization/88753
* tree-switch-conversion.c (switch_conversion::build_one_array):
Come up with local variable constructor.  Convert first to
type of constructor values.
2019-01-08  Martin Liska  <mliska@suse.cz>

PR tree-optimization/88753
* gcc.dg/tree-ssa/pr88753.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267728 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88066 use <> for includes not ""
redi [Tue, 8 Jan 2019 13:25:19 +0000 (13:25 +0000)] 
PR libstdc++/88066 use <> for includes not ""

Using #include "..." to include a header in the same directory fails if
the user compiles with -I-, so always use something like <bits/...> for
internal headers.

I haven't added tests for this, because dg-options adds options to the
end, and the position of -I- matters (if it's at the end then the tests
won't find any headers in the build tree, as they're specified by -I
options earlier in the flags). It's been manually tested though.

PR libstdc++/88066
* include/bits/locale_conv.h: Use <> for includes not "".
* include/ext/random: Likewise.
* include/ext/vstring.h: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267726 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-08 Richard Biener <rguenther@suse.de>
rguenth [Tue, 8 Jan 2019 13:05:47 +0000 (13:05 +0000)] 
2019-01-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86554
* tree-ssa-sccvn.c (eliminate_dom_walker, rpo_elim,
rpo_avail): Move earlier.
(visit_nary_op): When value-numbering to expressions
with different overflow behavior make sure there's an
available expression on the path.

* gcc.dg/torture/pr86554-1.c: New testcase.
* gcc.dg/torture/pr86554-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267725 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix libstdc++.so link on Solaris with C++17 std::basic_string member functions
ro [Tue, 8 Jan 2019 12:04:38 +0000 (12:04 +0000)] 
Fix libstdc++.so link on Solaris with C++17 std::basic_string member functions

* config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
(GLIBCXX_3.4.21): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267723 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Tue, 8 Jan 2019 11:52:46 +0000 (11:52 +0000)] 
2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/thread1.C: Tweak expected error #line 13 to
cover target variance.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267722 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-08 Richard Biener <rguenther@suse.de>
rguenth [Tue, 8 Jan 2019 10:46:04 +0000 (10:46 +0000)] 
2019-01-08  Richard Biener  <rguenther@suse.de>

PR fortran/88611
* trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_*
directly build the expected GENERIC tree.

* gfortran.dg/pr88611.f90: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267721 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PATCH 2/3][GCC][AARCH64] Add new -mbranch-protection option to combine pointer signi...
samtebbs [Tue, 8 Jan 2019 10:31:11 +0000 (10:31 +0000)] 
[PATCH 2/3][GCC][AARCH64] Add new -mbranch-protection option to combine pointer signing and BTI

gcc/ChangeLog:

2019-01-08  Sam Tebbs  <sam.tebbs@arm.com>

* config/aarch64/aarch64.c (BRANCH_PROTECT_STR_MAX,
aarch64_parse_branch_protection,
struct aarch64_branch_protect_type,
aarch64_handle_no_branch_protection,
aarch64_handle_standard_branch_protection,
aarch64_validate_mbranch_protection,
aarch64_handle_pac_ret_protection,
aarch64_handle_attr_branch_protection,
accepted_branch_protection_string,
aarch64_pac_ret_subtypes,
aarch64_branch_protect_types,
aarch64_handle_pac_ret_leaf): Define.
(aarch64_override_options_after_change_1, aarch64_override_options):
Add check for accepted_branch_protection_string.
(aarch64_option_save): Save accepted_branch_protection_string.
(aarch64_option_restore): Save accepted_branch_protection_string.
* config/aarch64/aarch64.c (aarch64_attributes): Add branch-protection.
* config/aarch64/aarch64.opt: Add mbranch-protection. Deprecate
msign-return-address.
* doc/invoke.texi: Add mbranch-protection.

gcc/testsuite/Changelog:

2019-01-08  Sam Tebbs  <sam.tebbs@arm.com>

* gcc.target/aarch64/(return_address_sign_1.c,
return_address_sign_2.c, return_address_sign_3.c (__attribute__)):
Change option to -mbranch-protection.
* gcc.target/aarch64/(branch-protection-option.c,
branch-protection-option-2.c, branch-protection-attr.c,
branch-protection-attr-2.c): New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267717 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88749 fix build failure in src/filesystem/ops.cc
redi [Tue, 8 Jan 2019 10:18:54 +0000 (10:18 +0000)] 
PR libstdc++/88749 fix build failure in src/filesystem/ops.cc

PR libstdc++/88749
* src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
to match the one that controls whether utimbuf and utime are declared.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267705 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Bump copyright years to 2019
pmderodat [Tue, 8 Jan 2019 09:54:04 +0000 (09:54 +0000)] 
[Ada] Bump copyright years to 2019

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267683 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Ada] Revert recent changes in the generation of deps in ali files
pmderodat [Tue, 8 Jan 2019 09:52:32 +0000 (09:52 +0000)] 
[Ada] Revert recent changes in the generation of deps in ali files

Following the discovery of regressions in GPRbuild, this reverts both
r263100 and r264608:

2019-01-08  Justin Squirek  <squirek@adacore.com>

Revert:

2018-07-31  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* lib-writ.adb (Write_With_Lines): Modfiy the generation
of dependencies within ali files so that source unit
bodies are properly listed even if said bodies are
missing.  Perform legacy behavior in GNATprove mode.
* lib-writ.ads: Modify documentation to reflect current
behavior.

and:

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
documentation and an extra conditional check for RCI
units so that generated ali files will list the spec
only instead of a body when a body is not found.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267680 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago/cp
paolo [Tue, 8 Jan 2019 09:41:36 +0000 (09:41 +0000)] 
/cp
2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (start_decl): Improve permerror location.

/testsuite
2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/out-of-class-redeclaration.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267675 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoteststuite - avoid parts of builtin-has-attribute tests requireing alias support.
iains [Tue, 8 Jan 2019 09:26:29 +0000 (09:26 +0000)] 
teststuite - avoid parts of builtin-has-attribute tests requireing alias support.

2019-01-08  Iain Sandoe  <iain@sandoe.co.uk>

gcc/testsuite/

* c-c++-common/builtin-has-attribute-3.c: Skip tests requiring symbol
alias support.
* c-c++-common/builtin-has-attribute-4.c: Likewise.
Append match for warning that ‘protected’ attribute is not supported.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267674 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agotestsuite - Require alias support for three tests.
iains [Tue, 8 Jan 2019 09:15:34 +0000 (09:15 +0000)] 
testsuite - Require alias support for three tests.

2019-01-08  Iain Sandoe  <iain@sandoe.co.uk>

gcc/testsuite/

* gcc.dg/Wmissing-attributes.c: Require alias support.
* gcc.dg/attr-copy-2.c: Likewise.
* gcc.dg/attr-copy-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267673 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/88554
jakub [Tue, 8 Jan 2019 08:57:58 +0000 (08:57 +0000)] 
PR c++/88554
* decl.c (finish_function): For -Wreturn-type don't add a return *this;
fixit hint if current_class_ref is NULL.  Use a single if instead of
two nested ones.

* g++.dg/warn/Wreturn-type-11.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267672 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix jit test case (PR jit/88747)
dmalcolm [Tue, 8 Jan 2019 01:39:09 +0000 (01:39 +0000)] 
Fix jit test case (PR jit/88747)

Amongst other changes, r266077 updated value_range_base::dump so
that it additionally prints the type.  This broke an assertion within
the jit testsuite, in jit.dg/test-sum-of-squares.c, which was checking
for:
  ": [-INF, n_"
but was now getting:
  ": signed int [-INF, n_"

The test is merely intended as a simple verification that we can read
dump files via gcc_jit_context_enable_dump.

This patch loosens the requirements on the dump so that it should work
with either version of value_range_base::dump.

gcc/testsuite/ChangeLog:
PR jit/88747
* jit.dg/test-sum-of-squares.c (verify_code): Update expected vrp
dump to reflect r266077.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267671 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Tue, 8 Jan 2019 00:16:40 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267670 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c/88701
jakub [Mon, 7 Jan 2019 22:55:48 +0000 (22:55 +0000)] 
PR c/88701
* c-decl.c (build_compound_literal): If not TREE_STATIC, only pushdecl
if current_function_decl is non-NULL.

* gcc.dg/pr88701.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267667 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogenattrtab bit-rot, and if_then_else in values
amodra [Mon, 7 Jan 2019 22:54:40 +0000 (22:54 +0000)] 
genattrtab bit-rot, and if_then_else in values

This patch started off just by adding if_then_else support in
write_attr_value to be able to write a saner expression for powerpc
tls_gdld_nomark length.  Then I noticed bit-rot in functions used to
calculate insn_default_length, insn_min_length, and length_unit_log
(which are used by the shorten_branches pass).  These functions
don't handle a const_int length value and return an "unknown" status
that isn't used, or in the case of or_attr_value, doesn't need to be
used.  min_attr_value also attempts to return INT_MAX for the
unhandled rtl case, but this can get lost in recursive calls.  I fixed
that problem by returning INT_MIN instead, and translating that to
INT_MAX in the only caller of min_attr_value.

PR target/88614
* genattrtab.c (max_attr_value, min_attr_value, or_attr_value):
Delete "unknownp" parameter.  Adjust callers.  Handle
CONST_INT, PLUS, MINUS, and MULT.
(attr_value_aligned): Renamed from or_attr_value.
(min_attr_value): Return INT_MIN for unhandled rtl case..
(min_fn): ..and translate to INT_MAX here.
(write_length_unit_log): Modify to cope without "unknown".
(write_attr_value): Handle IF_THEN_ELSE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267666 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix diagnostics for never-defined inline and nested functions (PR c/88720, PR c/88726).
jsm28 [Mon, 7 Jan 2019 22:39:43 +0000 (22:39 +0000)] 
Fix diagnostics for never-defined inline and nested functions (PR c/88720, PR c/88726).

Bugs 88720 and 88726 report issues where a function is declared inline
in an inner scope, resulting in spurious diagnostics about it being
declared but never defined when that scope is left (possibly in some
cases also wrongly referring to the function as a nested function).
These are regressions that were introduced with the support for C99
inline semantics in 4.3 (they don't appear with 4.2; it's possible
some aspects of the bugs might have been introduced later than 4.3).

For the case of functions being wrongly referred to as nested,
DECL_EXTERNAL was not the right condition for a function being
non-nested; TREE_PUBLIC is appropriate for the case of non-nested
functions with external linkage, while !b->nested means this is the
outermost scope in which the function was declared and so avoids
catching the case of a file-scope static being redeclared inline
inside a function.

For the non-nested, external-linkage case, the code attempts to avoid
duplicate diagnostics by diagnosing only when scope != external_scope,
but actually scope == external_scope is more appropriate, as it's only
when the file and external scopes are popped that the code can
actually tell whether a function ended up being defined, and all such
functions will appear in the (GCC-internal) external scope.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

PR c/88720
PR c/88726
gcc/c:
* c-decl.c (pop_scope): Use TREE_PUBLIC and b->nested to determine
whether a function is nested, not DECL_EXTERNAL.  Diagnose inline
functions declared but never defined only for external scope, not
for other scopes.

gcc/testsuite:
* gcc.dg/inline-40.c, gcc.dg/inline-41.c: New tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267665 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * es.po: Update.
jsm28 [Mon, 7 Jan 2019 22:32:55 +0000 (22:32 +0000)] 
* es.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267663 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago/cp
paolo [Mon, 7 Jan 2019 22:28:30 +0000 (22:28 +0000)] 
/cp
2019-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (start_decl): Improve two error_at locations.
(expand_static_init): Likewise.

/testsuite
2019-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/constexpr1.C: New.
* g++.dg/diagnostic/thread1.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267662 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago runtime: in doscanstackswitch, set gp->m before gogo
ian [Mon, 7 Jan 2019 22:07:26 +0000 (22:07 +0000)] 
runtime: in doscanstackswitch, set gp->m before gogo

    This is following CL 156038. doscanstackswitch uses the same
    mechanism of switching goroutines as getTraceback, and so has
    the same problem as described in issue golang/go#29448. This CL
    applies the same fix.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267661 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago compiler: move slice construction to callers of makeslice
ian [Mon, 7 Jan 2019 21:44:06 +0000 (21:44 +0000)] 
compiler: move slice construction to callers of makeslice

    This is the gccgo version of https://golang.org/cl/141822:

        Only return a pointer p to the new slices backing array from makeslice.
        Makeslice callers then construct sliceheader{p, len, cap} explictly
        instead of makeslice returning the slice.

    This change caused the GCC backend to break the runtime/pprof test by
    merging together the identical functions allocateReflectTransient and
    allocateTransient2M.  This caused the traceback to be other than
    expected.  Fix that by making the functions not identical.

    This is a step toward updating libgo to the Go1.12beta1 release.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267660 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago runtime: in getTraceback, set gp->m before gogo
ian [Mon, 7 Jan 2019 20:12:39 +0000 (20:12 +0000)] 
runtime: in getTraceback, set gp->m before gogo

    Currently, when collecting a traceback for another goroutine,
    getTraceback calls gogo(gp) switching to gp, which will resume in
    mcall, which will call gtraceback, which will set up gp->m. There
    is a gap between setting the current running g to gp and setting
    gp->m. If a profiling signal arrives in between, sigtramp will
    see a non-nil gp with a nil m, and will seg fault. Fix this by
    setting up gp->m first.

    Fixes golang/go#29448.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267658 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-07 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Mon, 7 Jan 2019 19:30:28 +0000 (19:30 +0000)] 
2019-01-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
Harald Anlauf <anlauf@gmx.de>
Tobias Burnus <burnus@gcc.gnu.org>

PR fortran/45424
* check.c (gfc_check_is_contiguous): New function.
* expr.c (gfc_is_not_contiguous): New function.
* gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_CONTIGUOUS.
Add prototype for gfc_is_not_contiguous.
* intrinsic.c (do_ts29113_check): Add GFC_ISYM_IS_CONTIGUOUS.
(add_function): Add is_contiguous.
* intrinsic.h: Add prototypes for gfc_check_is_contiguous,
gfc_simplify_is_contiguous and gfc_resolve_is_contiguous.
* intrinsic.texi: Add IS_CONTIGUOUS.
* iresolve.c (gfc_resolve_is_contiguous): New function.
* simplify.c (gfc_simplify_is_contiguous): New function.
* trans-decl.c (gfor_fncecl_is_contiguous0): New variable.
(gfc_build_intrinsic_function_decl): Add it.
* trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): New
function.
(gfc_conv_intrinsic_function): Handle GFC_ISYM_IS_CONTIGUOUS.

2019-01-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
Harald Anlauf <anlauf@gmx.de>
Tobias Burnus <burnus@gcc.gnu.org>

PR fortran/45424
* Makefile.am: Add intrinsics/is_contiguous.c.
* Makefile.in: Regenerated.
* gfortran.map: Add _gfortran_is_contiguous0.
* intrinsics/is_contiguous.c: New file.
* libgfortran.h: Add prototype for is_contiguous0.

2019-01-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
Harald Anlauf <anlauf@gmx.de>
Tobias Burnus <burnus@gcc.gnu.org>

* gfortran.dg/is_contiguous_1.f90: New test.
* gfortran.dg/is_contiguous_2.f90: New test.
* gfortran.dg/is_contiguous_3.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267657 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/88741 - wrong error with initializer-string.
mpolacek [Mon, 7 Jan 2019 19:25:41 +0000 (19:25 +0000)] 
PR c++/88741 - wrong error with initializer-string.
* decl.c (cp_complete_array_type): Strip any location wrappers.

* g++.dg/init/array50.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267656 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix IFN_MASK_STORE handling of IFN_GOMP_SIMD_LANE
rsandifo [Mon, 7 Jan 2019 18:53:44 +0000 (18:53 +0000)] 
Fix IFN_MASK_STORE handling of IFN_GOMP_SIMD_LANE

The IFN_GOMP_SIMD_LANE handling in vectorizable_store tries to use MEM_REF
offsets to maintain pointer disambiguation info.  This patch makes sure
that we don't try to do the same optimisation for IFN_MASK_STOREs, which
have no similar offset argument.

The patch fixes libgomp.c-c++-common/pr66199-*.c for SVE.  Previously
we had an ncopies==2 store and stored both halves to the same address.

2019-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-stmts.c (vectorizable_store): Don't use the dataref_offset
optimization for masked stores.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267654 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/88261
edlinger [Mon, 7 Jan 2019 17:08:51 +0000 (17:08 +0000)] 
    PR c++/88261
        PR c++/69338
        PR c++/69696
        PR c++/69697
        * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
        * typeck2.c (digest_init_r): Raise an error for non-static
        initialization of a flexible array member.
        (process_init_constructor, massage_init_elt,
        process_init_constructor_array, process_init_constructor_record,
        process_init_constructor_union, process_init_constructor): Add the
        flags parameter and pass it thru.
        (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
        digest_init_flags for static decls.

gcc/testsuite:
2019-01-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR c++/88261
        PR c++/69338
        PR c++/69696
        PR c++/69697
        * gcc.dg/array-6.c: Move from here ...
        * c-c++-common/array-6.c: ... to here and add some more test coverage.
        * g++.dg/pr69338.C: New test.
        * g++.dg/pr69697.C: Likewise.
        * g++.dg/ext/flexary32.C: Likewise.
        * g++.dg/ext/flexary3.C: Adjust test.
        * g++.dg/ext/flexary12.C: Likewise.
        * g++.dg/ext/flexary13.C: Likewise.
        * g++.dg/ext/flexary15.C: Likewise.
        * g++.dg/warn/Wplacement-new-size-1.C: Likewise.
        * g++.dg/warn/Wplacement-new-size-2.C: Likewise.
        * g++.dg/warn/Wplacement-new-size-6.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267653 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix ICE in get_initial_defs_for_reduction (PR 88567)
rsandifo [Mon, 7 Jan 2019 16:00:52 +0000 (16:00 +0000)] 
Fix ICE in get_initial_defs_for_reduction (PR 88567)

The use of "j" in:

      init = permute_results[number_of_vectors - j - 1];

was out-of-sync with the new flat loop structure.  Now that all that
reversing is gone, we can just use the result of duplicate_and_interleave
directly.

The other cases shouldn't be affected by postponing the insertion
of ctor_seq, since gimple_build* appends to the seq without clearing
it first (unlike some of the gimplify routines).

The ICE is already covered by gcc.dg/vect/pr63379.c.

2019-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR middle-end/88567
* tree-vect-loop.c (get_initial_defs_for_reduction): Pass the
output vector directly to duplicate_and_interleave instead of
going through a temporary.  Postpone insertion of ctor_seq to
the end of the loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267652 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/87787 avoid undefined null args to memcpy and memmove
redi [Mon, 7 Jan 2019 14:58:44 +0000 (14:58 +0000)] 
PR libstdc++/87787 avoid undefined null args to memcpy and memmove

The C++ char_traits and ctype APIs do not disallow null pointer
arguments, so we need explicit checks to ensure we don't forward null
pointers to memcpy or memmove.

PR libstdc++/87787
* include/bits/char_traits.h (char_traits::move): Do not pass null
pointers to memmove.
* include/bits/locale_facets.h
(ctype<char>::widen(const char*, const char*, char*)): Do not
pass null pointers to memcpy.
(ctype<char>::narrow(const char*, const char*, char, char*)):
Likewise.
(ctype<char>::do_widen(const char*, const char*, char*)):
Likewise.
(ctype<char>::do_narrow(const char*, const char*, char, char*)):
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267651 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoInvestigating PR target/86891 revealed a number of issues with the way
rearnsha [Mon, 7 Jan 2019 14:49:00 +0000 (14:49 +0000)] 
Investigating PR target/86891 revealed a number of issues with the way
the AArch64 backend was handing overflow detection patterns.  Firstly,
expansion for signed and unsigned types is not the same as in one form
the overflow is detected via the C flag and in the other it is done
via the V flag in the PSR.  Secondly, particular care has to be taken
when describing overflow of signed types: the comparison has to be
performed conceptually on a value that cannot overflow and compared to
a value that might have overflowed.

It became apparent that some of the patterns were simply unmatchable
(they collapse to NEG in the RTL rather than subtracting from zero)
and a number of patterns were overly restrictive in terms of the
immediate constants that they supported.  I've tried to address all of
these issues as well.

gcc:

PR target/86891
* config/aarch64/aarch64.c (aarch64_expand_subvti): New parameter
unsigned_p.  Handle signed and unsigned overflow correction as
required.
* config/aarch64/aarch64-protos.h (aarch64_expand_subvti): Update
prototype.
* config/aarch64/aarch64.md (addv<mode>4): Use aarch64_plus_operand
for operand 2.
(add<mode>3_compareV_imm): Make this callable for expanding.
(subv<GPI:mode>4): Use register_operand for operand 1.  Use
aarch64_plus_operand for operand 2.
(subv<GPI:mode>_insn): New insn pattern.
(subv<GPI:mode>_imm): Likewise.
(negv<GPI:mode>3): New expand pattern.
(negv<GPI:mode>_insn): New insn pattern.
(negv<GPI:mode>_cmp_only): Likewise.
(cmpv<GPI:mode>_insn): Likewise.
(subvti4): Use register_operand for operand 1.  Update call to
aarch64_expand_subvti.
(usubvti4): Likewise.
(negvti3): New expand pattern.
(negdi_carryout): New insn pattern.
(negvdi_carryinV): New insn pattern.
(sub<mode3>_compare1_imm): Delete named insn pattern, make anonymous
version the named version.
(peepholes to convert to sub<mode3>_compare1_imm): Adjust order of
operands.
(usub<GPI:mode>3_carryinC, usub<GPI:mode>3_carryinC_z1): New insn
patterns.
(usub<GPI:mode>3_carryinC_z2, usub<GPI:mode>3_carryinC): New insn
patterns.
(sub<mode>3_carryinCV, sub<mode>3_carryinCV_z1_z2): Delete.
(sub<mode>3_carryinCV_z1, sub<mode>3_carryinCV_z2): Delete.
(sub<mode>3_carryinCV): Delete.
(sub<GPI:mode>3_carryinV): New expand pattern.
sub<mode>3_carryinV, sub<mode>3_carryinV_z2): New insn patterns.

testsuite:

* gcc.target/aarch64/subs_compare_2.c: Make '#' immediate prefix
optional in scan pattern.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267650 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-07 Richard Biener <rguenther@suse.de>
rguenth [Mon, 7 Jan 2019 14:34:06 +0000 (14:34 +0000)] 
2019-01-07  Richard Biener  <rguenther@suse.de>

* tree-ssa-uncprop.c (ssa_equip_hash_traits): Remove in favor
of tree_operand_hash.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267649 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUpdate documentation for C++17 filesystem library
redi [Mon, 7 Jan 2019 12:46:40 +0000 (12:46 +0000)] 
Update documentation for C++17 filesystem library

* doc/xml/manual/spine.xml: Update copyright years.
* doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
* doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
for C++17 filesystem library.
* doc/html/*: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267648 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix build for systems without POSIX truncate
redi [Mon, 7 Jan 2019 12:38:51 +0000 (12:38 +0000)] 
Fix build for systems without POSIX truncate

Older versions of newlib do not provide truncate so add a configure
check for it, and provide a fallback definition.

There were also some missing exports in the linker script, which went
unnoticed because there are no tests for some functions. A new link-only
test checks that every filesystem operation function is defined by the
library.

* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Order patterns for filesystem operations
alphabetically and add missing entries for copy_symlink,
hard_link_count, rename, and resize_file.
* configure: Regenerate.
* src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
used unconditionally.
* src/filesystem/ops-common.h (__gnu_posix::truncate)
[!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
supports truncating to zero length.
* testsuite/27_io/filesystem/operations/all.cc: New test.
* testsuite/27_io/filesystem/operations/resize_file.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267647 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[2/2] PR88598: Optimise reduc (bit_and)
rsandifo [Mon, 7 Jan 2019 12:17:10 +0000 (12:17 +0000)] 
[2/2] PR88598: Optimise reduc (bit_and)

This patch folds certain reductions of X & CST to X[I] & CST[I] if I is
the only nonzero element of CST.  This includes the motivating case in
which CST[I] is -1.

We could do the same for REDUC_MAX on unsigned types, but I wasn't sure
that that special case was worth it.

2019-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/88598
* tree.h (single_nonzero_element): Declare.
* tree.c (single_nonzero_element): New function.
* match.pd: Fold certain reductions of X & CST to X[I] & CST[I]
if I is the only nonzero element of CST.

gcc/testsuite/
PR tree-optimization/88598
* gcc.dg/vect/pr88598-1.c: New test.
* gcc.dg/vect/pr88598-2.c: Likewise.
* gcc.dg/vect/pr88598-3.c: Likewise.
* gcc.dg/vect/pr88598-4.c: Likewise.
* gcc.dg/vect/pr88598-5.c: Likewise.
* gcc.dg/vect/pr88598-6.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267646 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[1/2] PR88598: Optimise x * { 0 or 1, 0 or 1, ... }
rsandifo [Mon, 7 Jan 2019 12:16:30 +0000 (12:16 +0000)] 
[1/2] PR88598: Optimise x * { 0 or 1, 0 or 1, ... }

The PR has:

    vect__6.24_42 = vect__5.23_41 * { 0.0, 1.0e+0, 0.0, 0.0 };

which for -fno-signed-zeros -fno-signaling-nans can be simplified to:

    vect__6.24_42 = vect__5.23_41 & { 0, -1, 0, 0 };

I deliberately didn't handle COMPLEX_CST or CONSTRUCTOR in
initializer_each_zero_or_onep since there are no current use cases.

The patch also makes (un)signed_type_for handle floating-point types.
I tried to audit all callers and the few that handle null returns would
be unaffected.

2019-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/88598
* tree.h (initializer_each_zero_or_onep): Declare.
* tree.c (initializer_each_zero_or_onep): New function.
(signed_or_unsigned_type_for): Handle float types too.
(unsigned_type_for, signed_type_for): Update comments accordingly.
* match.pd: Fold x * { 0 or 1, 0 or 1, ...} to
x & { 0 or -1, 0 or -1, ... }.

gcc/testsuite/
PR tree-optimization/88598
* gcc.dg/pr88598-1.c: New test.
* gcc.dg/pr88598-2.c: Likewise.
* gcc.dg/pr88598-3.c: Likewise.
* gcc.dg/pr88598-4.c: Likewise.
* gcc.dg/pr88598-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267645 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoReplace outdated references to x86_64-unknown-linux-gnu in docs
redi [Mon, 7 Jan 2019 10:32:30 +0000 (10:32 +0000)] 
Replace outdated references to x86_64-unknown-linux-gnu in docs

* doc/install.texi: Replace references to x86_64-unknown-linux-gnu
with x86_64-pc-linux-gnu.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267643 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Force vl32 if calling vector-partitionable routines
vries [Mon, 7 Jan 2019 10:01:49 +0000 (10:01 +0000)] 
[nvptx] Force vl32 if calling vector-partitionable routines

With PTX_MAX_VECTOR_LENGTH set to larger than PTX_WARP_SIZE, routines can be
called from offloading regions with vector-size set to larger than warp size.
OTOH, vector-partitionable routines assume warp-sized vector length.

Detect if we're calling a vector-partitionable routine from an offloading
region, and if so, fall back to warp-sized vector length in that region.

2019-01-07  Tom de Vries  <tdevries@suse.de>

PR target/85486
* config/nvptx/nvptx.c (has_vector_partitionable_routine_calls_p): New
function.
(nvptx_goacc_validate_dims): Force vl32 if calling vector-partitionable
routines.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267640 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/sse.md (vec_extract<mode><ssehalfvecmodelower>): Use
jakub [Mon, 7 Jan 2019 09:52:29 +0000 (09:52 +0000)] 
* config/i386/sse.md (vec_extract<mode><ssehalfvecmodelower>): Use
V_256_512 iterator instead of V_512 and TARGET_AVX instead of
TARGET_AVX512F as condition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267639 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR debug/88723
jakub [Mon, 7 Jan 2019 09:51:46 +0000 (09:51 +0000)] 
PR debug/88723
* dwarf2out.c (const_ok_for_output_1): Remove redundant call to
const_not_ok_for_debug_p target hook.
(mem_loc_descriptor) <case UNSPEC>: Only call const_ok_for_output_1
on UNSPEC and subexpressions thereof if all subexpressions of the
UNSPEC are CONSTANT_P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267638 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR tree-optimization/88676
jakub [Mon, 7 Jan 2019 08:51:59 +0000 (08:51 +0000)] 
PR tree-optimization/88676
* tree-ssa-phiopt.c (two_value_replacement): New function.
(tree_ssa_phiopt_worker): Call it.

* gcc.dg/tree-ssa/pr88676.c: New test.
* gcc.dg/pr88676.c: New test.
* gcc.dg/tree-ssa/pr15826.c: Just verify there is no goto,
allow &.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267634 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR sanitizer/88619
jakub [Mon, 7 Jan 2019 08:50:57 +0000 (08:50 +0000)] 
PR sanitizer/88619
* cfgexpand.c (expand_stack_vars): Only align prev_offset to
ASAN_MIN_RED_ZONE_SIZE, not to maximum of that and alignb.

* c-c++-common/asan/pr88619.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267633 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/85052
jakub [Mon, 7 Jan 2019 08:49:08 +0000 (08:49 +0000)] 
PR c++/85052
* tree-vect-generic.c: Include insn-config.h and recog.h.
(expand_vector_piecewise): Add defaulted ret_type argument,
if non-NULL, use that in preference to type for the result type.
(expand_vector_parallel): Formatting fix.
(do_vec_conversion, do_vec_narrowing_conversion,
expand_vector_conversion): New functions.
(expand_vector_operations_1): Call expand_vector_conversion
for VEC_CONVERT ifn calls.
* internal-fn.def (VEC_CONVERT): New internal function.
* internal-fn.c (expand_VEC_CONVERT): New function.
* fold-const-call.c (fold_const_vec_convert): New function.
(fold_const_call): Use it for CFN_VEC_CONVERT.
* doc/extend.texi (__builtin_convertvector): Document.
c-family/
* c-common.h (enum rid): Add RID_BUILTIN_CONVERTVECTOR.
(c_build_vec_convert): Declare.
* c-common.c (c_build_vec_convert): New function.
c/
* c-parser.c (c_parser_postfix_expression): Parse
__builtin_convertvector.
cp/
* cp-tree.h (cp_build_vec_convert): Declare.
* parser.c (cp_parser_postfix_expression): Parse
__builtin_convertvector.
* constexpr.c: Include fold-const-call.h.
(cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
(potential_constant_expression_1): Likewise.
* semantics.c (cp_build_vec_convert): New function.
* pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
IFN_VEC_CONVERT.
testsuite/
* c-c++-common/builtin-convertvector-1.c: New test.
* c-c++-common/torture/builtin-convertvector-1.c: New test.
* g++.dg/ext/builtin-convertvector-1.C: New test.
* g++.dg/cpp0x/constexpr-builtin4.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267632 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Handle large vector reductions
vries [Mon, 7 Jan 2019 08:11:06 +0000 (08:11 +0000)] 
[nvptx] Handle large vector reductions

Add support for vector reductions with openacc vector_length larger than
warp-size.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx-protos.h (nvptx_output_red_partition): Declare.
* config/nvptx/nvptx.c (vector_red_size, vector_red_align,
vector_red_partition, vector_red_sym): New global variables.
(nvptx_option_override): Initialize vector_red_sym.
(nvptx_declare_function_name): Restore red_partition register.
(nvptx_file_end): Emit code to declare the vector reduction variables.
(nvptx_output_red_partition): New function.
(nvptx_expand_shared_addr): Add vector argument. Use it to handle
large vector reductions.
(enum nvptx_builtins): Add NVPTX_BUILTIN_VECTOR_ADDR.
(nvptx_init_builtins): Add VECTOR_ADDR.
(nvptx_expand_builtin): Update call to nvptx_expand_shared_addr.
Handle nvptx_expand_shared_addr.
(nvptx_get_shared_red_addr): Add vector argument and handle large
vectors.
(nvptx_goacc_reduction_setup): Add offload_attrs argument and handle
large vectors.
(nvptx_goacc_reduction_init): Likewise.
(nvptx_goacc_reduction_fini): Likewise.
(nvptx_goacc_reduction_teardown): Likewise.
(nvptx_goacc_reduction): Update calls to nvptx_goacc_reduction_{setup,
init,fini,teardown}.
(nvptx_init_axis_predicate): Initialize vector_red_partition.
(nvptx_set_current_function): Init vector_red_partition.
* config/nvptx/nvptx.md (UNSPECV_RED_PART): New unspecv.
(nvptx_red_partition): New insn.
* config/nvptx/nvptx.h (struct machine_function): Add red_partition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267631 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Don't emit barriers for empty loops -- fix
vries [Mon, 7 Jan 2019 08:10:56 +0000 (08:10 +0000)] 
[nvptx] Don't emit barriers for empty loops -- fix

When compiling an empty loop:
...
  long long v1;
  #pragma acc parallel num_gangs (640) num_workers(1) vector_length (128)
  #pragma acc loop
    for (v1 = 0; v1 < 20; v1 += 2)
        ;
...
the compiler emits two subsequent bar.syncs.  This triggers some bug on my
quadro m1200 (I'm assuming in the ptxas/JIT compiler) that hangs the testcase.

This patch works around the bug by doing an optimization: we detect that this is
an empty loop (a forked immediately followed by a joining), and don't emit the
barriers.

The patch does not include the test-case yet, since vector_length (128) is not
yet supported at this point.

2019-01-07  Tom de Vries  <tdevries@suse.de>

PR target/85381
* config/nvptx/nvptx.c (nvptx_process_pars): Don't emit barriers for
empty loops.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267630 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Add support for a per-worker broadcast buffer and barrier
vries [Mon, 7 Jan 2019 08:10:47 +0000 (08:10 +0000)] 
[nvptx] Add support for a per-worker broadcast buffer and barrier

Add support for a per-worker broadcast buffer and barrier, to be used for
openacc vector_length larger than warp-size.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (oacc_bcast_partition): Declare.
(nvptx_option_override): Init oacc_bcast_partition.
(nvptx_init_oacc_workers): New function.
(nvptx_declare_function_name): Call nvptx_init_oacc_workers.
(nvptx_needs_shared_bcast): New function.
(nvptx_find_par): Generalize to enable vectors to use shared-memory
to propagate state.
(nvptx_shared_propagate): Initialize vector bcast partition and
synchronization state.
(nvptx_single):  Generalize to enable vectors to use shared-memory
to propagate state.
(nvptx_process_pars): Likewise.
(nvptx_set_current_function): Initialize oacc_broadcast_partition.
* config/nvptx/nvptx.h (struct machine_function): Add
bcast_partition and sync_bar members.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267629 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Allow larger PTX_MAX_VECTOR_LENGTH in nvptx_goacc_validate_dims_1
vries [Mon, 7 Jan 2019 08:10:37 +0000 (08:10 +0000)] 
[nvptx] Allow larger PTX_MAX_VECTOR_LENGTH in nvptx_goacc_validate_dims_1

Allow PTX_MAX_VECTOR_LENGTH to be define as larger than PTX_WARP_SIZE in
nvptx_goacc_validate_dims_1.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (nvptx_welformed_vector_length_p)
(nvptx_apply_dim_limits): New function.
(nvptx_goacc_validate_dims_1): Allow PTX_MAX_VECTOR_LENGTH larger than
PTX_WARP_SIZE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267628 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Postpone warnings in nvptx_goacc_validate_dims_1
vries [Mon, 7 Jan 2019 08:10:17 +0000 (08:10 +0000)] 
[nvptx] Postpone warnings in nvptx_goacc_validate_dims_1

Move warnings in nvptx_goacc_validate_dims_1 to as late as possible.  This
allows us more flexibility in setting the dimensions.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to
as late as possible.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267627 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Eliminate PTX_VECTOR_LENGTH
vries [Mon, 7 Jan 2019 08:10:08 +0000 (08:10 +0000)] 
[nvptx] Eliminate PTX_VECTOR_LENGTH

Remove PTX_VECTOR_LENGTH and replace uses of it with PTX_DEFAULT_VECTOR_LENGTH,
PTX_MAX_VECTOR_LENGTH and PTX_WARP_SIZE.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH): Remove.
(PTX_DEFAULT_VECTOR_LENGTH, PTX_MAX_VECTOR_LENGTH): Define.
(nvptx_goacc_validate_dims_1, nvptx_dim_limit)
(nvptx_goacc_reduction_fini): Use PTX_DEFAULT_VECTOR_LENGTH,
PTX_MAX_VECTOR_LENGTH and PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267626 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Add asserts in nvptx_goacc_validate_dims
vries [Mon, 7 Jan 2019 08:09:58 +0000 (08:09 +0000)] 
[nvptx] Add asserts in nvptx_goacc_validate_dims

Add a few asserts to nvptx_goacc_validate_dims.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Add asserts.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267625 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[nvptx] Fix libgomp.oacc-c-c++-common/vector-length-128-3.c
vries [Mon, 7 Jan 2019 08:09:49 +0000 (08:09 +0000)] 
[nvptx] Fix libgomp.oacc-c-c++-common/vector-length-128-3.c

The vector-length-128-3.c test-case uses GOMP_OPENACC_DIM=-:-:128, but '-' is
not yet supported on trunk.  Use GOMP_OPENACC_DIM=::128 instead.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-c-c++-common/vector-length-128-3.c: Fix
GOMP_OPENACC_DIM argument.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267624 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[openacc] Add oacc_get_min_dim
vries [Mon, 7 Jan 2019 08:09:40 +0000 (08:09 +0000)] 
[openacc] Add oacc_get_min_dim

Expose oacc_min_dims to backends.

2019-01-07  Tom de Vries  <tdevries@suse.de>

* omp-offload.c (oacc_get_min_dim): New function.
* omp-offload.h (oacc_get_min_dim): Declare.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267623 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR target/88521
marxin [Mon, 7 Jan 2019 07:31:19 +0000 (07:31 +0000)] 
PR target/88521
* config/i386/i386.c (function_value_ms_64): Return small sturct in
AX_REG and float/double in FIRST_SSE_REG for 4 or 8 byte modes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267622 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMake GFORTRAN_9 symbol node depend on GFORTRAN_8.
jb [Mon, 7 Jan 2019 06:40:37 +0000 (06:40 +0000)] 
Make GFORTRAN_9 symbol node depend on GFORTRAN_8.

At some point when the GFORTRAN_9 node was added it was forgotten to
make it depend on GFORTRAN_8. This patch fixes this.

Committed as obvious.

2019-01-07  Janne Blomqvist  <jb@gcc.gnu.org>

       * gfortran.map (GFORTRAN_9): Make GFORTRAN_9 node depend on
       GFORTRAN_8.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267621 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Mon, 7 Jan 2019 00:16:29 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267619 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/86756 Move rest of std::filesystem to libstdc++.so
redi [Sun, 6 Jan 2019 22:34:37 +0000 (22:34 +0000)] 
PR libstdc++/86756 Move rest of std::filesystem to libstdc++.so

Move std::filesystem directory iterators and operations from
libstdc++fs.a to main libstdc++ library. These components have many
dependencies on OS support, which is not available on all targets. Some
additional autoconf checks and conditional compilation is needed to
ensure the files will build for all targets. Previously this code was
not compiled without --enable-libstdcxx-filesystem-ts but the C++17
components should be available for all hosted builds.

The tests for these components no longer need to link to libstdc++fs.a,
but are not expected to pass on all targets. To avoid numerous failures
on targets which are not expected to pass the tests (due to missing OS
functionality) leave the dg-require-filesystem-ts directives in place
for now. This will ensure the tests only run for builds where the
filesystem-ts library is built, which presumably means some level of OS
support is present.

PR libstdc++/86756
* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
remaining std::filesystem types and functions.
* configure: Regenerate.
* src/c++17/Makefile.am: Add C++17 filesystem sources.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
here, and change name of included file.
* src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
here, and change name of included file.
* src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
path to dir-common.h.
* src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
path to ops-common.h. Disable -Wunused-parameter warnings.
(internal_file_clock): Define unconditionally.
[!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
define.
(do_copy_file, do_space): Move definitions to ops.common.h.
(copy, file_size, hard_link_count, last_write_time, space): Only
perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
report an error.
(last_write_time, read_symlink): Remove unused attributes from
parameters.
* src/filesystem/Makefile.am: Remove C++17 filesystem sources.
* src/filesystem/Makefile.in: Regenerate.
* src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
* src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
* src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
* src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
* src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
dummy types and functions instead of using #error.
* src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
* src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
in terms of stat.
[!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
(do_copy_file, do_space): Move definitions here from std-ops.cc.
* src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
to account for new namespace.
* testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
-lstdc++fs from dg-options.
* testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
* testsuite/27_io/filesystem/file_status/1.cc: Likewise.
* testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
* testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
* testsuite/27_io/filesystem/iterators/directory_iterator.cc:
Likewise.
* testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
Likewise.
* testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
* testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
* testsuite/27_io/filesystem/operations/copy.cc: Likewise.
* testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
* testsuite/27_io/filesystem/operations/create_directories.cc:
Likewise.
* testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
* testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
* testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
* testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
* testsuite/27_io/filesystem/operations/exists.cc: Likewise.
* testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
* testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
* testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
* testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
* testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
* testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
* testsuite/27_io/filesystem/operations/relative.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
* testsuite/27_io/filesystem/operations/space.cc: Likewise.
* testsuite/27_io/filesystem/operations/status.cc: Likewise.
* testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
Likewise.
* testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267616 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/86756 add std::filesystem::path to libstdc++.so
redi [Sun, 6 Jan 2019 22:34:29 +0000 (22:34 +0000)] 
PR libstdc++/86756 add std::filesystem::path to libstdc++.so

Move the C++17 std::filesystem::path definitions from the libstdc++fs.a
archive to the main libstdc++ library. The path classes do not depend on
any OS functions, so can be defined unconditionally on all targets
(rather than depending on --enable-libstdcxx-filesystem-ts). The tests
should pass on all targets too.

PR libstdc++/86756
* config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
typeinfo and vtables less greedy.
(GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
* src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
here, and change name of included file.
* src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
* src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
from sources.
* src/filesystem/Makefile.in: Regenerate.
* src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
* src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
* testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
from dg-options and remove dg-require-filesystem-ts.
* testsuite/27_io/filesystem/path/append/source.cc: Likewise.
* testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
* testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
* testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
* testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
* testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
* testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
Likewise.
* testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
* testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
* testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
* testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
* testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
* testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
* testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
* testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
* testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
* testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
* testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
Likewise.
* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
Likewise.
* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
Likewise.
* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
Likewise.
* testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
* testsuite/27_io/filesystem/path/native/string.cc: Likewise.
* testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
* testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
* testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_root_directory.cc:
Likewise.
* testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
* testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
* testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
* testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267615 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/87431 fix regression introduced by r264574
redi [Sun, 6 Jan 2019 20:52:34 +0000 (20:52 +0000)] 
PR libstdc++/87431 fix regression introduced by r264574

The previous patch for PR 87431 assumed that initialing a scalar type
could not throw, but it can obtain its value via a conversion operator,
which could throw. This meant the variant could get into a valueless
state, but the valueless_by_exception() member function would always
return false.

This patch fixes it by changing the emplace members to have strong
exception safety when initializing a contained value of trivially
copyable type. The _M_valid() member gets a corresponding change to
always return true for trivially copyable types, not just scalar types.

Strong exception safety (i.e. never becoming valueless) is achieved by
only replacing the current contained value once any potentially throwing
operations have completed. If constructing the new contained value can
throw then a new std::variant object is constructed to hold it, and then
move-assigned to *this (which won't throw).

PR libstdc++/87431
* include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
Check is_trivially_copyable instead of is_scalar.
(variant::emplace<N, Args>(Args&&...)): If construction of the new
contained value can throw and its type is trivially copyable then
construct into a temporary variant and move from it, to provide the
strong exception safety guarantee.
(variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
Likewise.
* testsuite/20_util/variant/87431.cc: New test.
* testsuite/20_util/variant/run.cc: Adjust test so that throwing
conversion causes valueless state.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267614 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR tree-opt/86020
hubicka [Sun, 6 Jan 2019 17:16:00 +0000 (17:16 +0000)] 
PR tree-opt/86020
Revert:
2017-05-22  Jan Hubicka  <hubicka@ucw.cz>

        * ipa-inline.c (edge_badness): Use inlined_time instead of
        inline_summaries->get.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267612 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * opts.c (enable_fdo_optimizations): Enable
hubicka [Sun, 6 Jan 2019 16:44:51 +0000 (16:44 +0000)] 
* opts.c (enable_fdo_optimizations): Enable
version-loops-for-strides, loop-interchange, unrol-and-jam
and tree-loop-distribution.
* invoke.texi: Document newly enabled options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267611 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-06 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sun, 6 Jan 2019 12:48:58 +0000 (12:48 +0000)] 
2019-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/88658
* gfortran.h: Add macro gfc_real_4_kind
* simplify.c (simplify_min_max): Special case for the types of
AMAX0, AMIN0, MAX1 and MIN1, which actually change the types of
their arguments.

2019-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/88658
* gfortran.dg/min_max_type_2.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267609 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c/88363
jakub [Sun, 6 Jan 2019 10:25:46 +0000 (10:25 +0000)] 
PR c/88363
* c-c++-common/attributes-4.c (falloc_align_int128,
falloc_size_int128): Guard with #ifdef __SIZEOF_INT128__.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267608 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88607 add tests using -finput-charset=ascii
redi [Sun, 6 Jan 2019 00:49:11 +0000 (00:49 +0000)] 
PR libstdc++/88607 add tests using -finput-charset=ascii

This verifies that the <bits/extc++.h> header can be compiled with ASCII
as the input character set.

PR libstdc++/88607
* testsuite/17_intro/headers/c++1998/charset.cc: New test.
* testsuite/17_intro/headers/c++2011/charset.cc: New test.
* testsuite/17_intro/headers/c++2014/charset.cc: New test.
* testsuite/17_intro/headers/c++2017/charset.cc: New test.
* testsuite/17_intro/headers/c++2020/charset.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267607 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sun, 6 Jan 2019 00:16:36 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267606 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/invoke.texi (max-inline-insns-small): New parameters.
hubicka [Sat, 5 Jan 2019 22:47:24 +0000 (22:47 +0000)] 
* doc/invoke.texi (max-inline-insns-small): New parameters.
* ipa-inline.c (want_early_inline_function_p): simplify.
(want_inline_small_function_p): Fix pasto from previous patch;
use max-inline-insns-small bound.
* params.def (max-inline-insns-small): New param.
* ipa-fnsummary.c (analyze_function_body): Initialize time/size
variables correctly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267603 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDefine new filesystem::__file_clock type
redi [Sat, 5 Jan 2019 20:03:22 +0000 (20:03 +0000)] 
Define new filesystem::__file_clock type

In C++17 the clock used for filesystem::file_time_type is unspecified,
allowing it to be chrono::system_clock. The C++2a draft requires it to
be a distinct type, with additional member functions to convert to/from
other clocks (either the system clock or UTC). In order to avoid an ABI
change later, this patch defines a new distinct type now, which will be
used for std::chrono::file_clock later.

* include/bits/fs_fwd.h (__file_clock): Define new clock.
(file_time_type): Redefine in terms of __file_clock.
* src/filesystem/ops-common.h (file_time): Add FIXME comment about
overflow.
* src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
internal linkage.
(internal_file_lock): New helper type for accessing __file_clock.
(do_copy_file): Use internal_file_lock to convert system time to
file_time_type.
(last_write_time(const path&, error_code&)): Likewise.
(last_write_time(const path&, file_time_type, error_code&)): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267602 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * doc/invoke.texi: Document max-inline-insns-size,
hubicka [Sat, 5 Jan 2019 18:16:55 +0000 (18:16 +0000)] 
* doc/invoke.texi: Document max-inline-insns-size,
uninlined-function-insns, uninlined-function-time,
uninlined-thunk-insns and uninlined-thunk-time.
* params.def: Add max-inline-insns-size,
uninlined-function-insns, uninlined-function-time,
uninlined-thunk-insns and uninlined-thunk-time.
* ipa-fnsummary.c (compute_fn_summary, analyze_function_body): Use
new parameters.
* ipa-inline.c (can_inline_edge_by_limits_p,
want_inline_small_function_p): Use new parameters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267601 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * ipa-fnsummary.c (analyze_function_body): Fix accounting of time.
hubicka [Sat, 5 Jan 2019 17:47:34 +0000 (17:47 +0000)] 
* ipa-fnsummary.c (analyze_function_body): Fix accounting of time.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267600 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org>
dominiq [Sat, 5 Jan 2019 17:18:00 +0000 (17:18 +0000)] 
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

* gcc.dg/plugin/plugindir1.c: Adjust dg-prune-output for Darwin.
* gcc.dg/plugin/plugindir2.c: Likewise.
* gcc.dg/plugin/plugindir3.c: Likewise.
* gcc.dg/plugin/plugindir4.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267599 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-05 Janus Weil <janus@gcc.gnu.org>
janus [Sat, 5 Jan 2019 14:32:12 +0000 (14:32 +0000)] 
2019-01-05  Janus Weil  <janus@gcc.gnu.org>

PR fortran/88009
* class.c (gfc_find_derived_vtab): Mark the _final component as
artificial.
(find_intrinsic_vtab): Ditto. Also add an extra check to avoid
dereferencing a null pointer and adjust indentation.
* resolve.c (resolve_fl_variable): Add extra check to avoid
dereferencing a null pointer. Move variable declarations to local scope.
(resolve_fl_procedure): Add extra check to avoid dereferencing a null
pointer.
* symbol.c (check_conflict): Suppress errors for artificial symbols.

2019-01-05  Janus Weil  <janus@gcc.gnu.org>

PR fortran/88009
* gfortran.dg/blockdata_10.f90: New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267598 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR middle-end/82564
jakub [Sat, 5 Jan 2019 11:14:12 +0000 (11:14 +0000)] 
PR middle-end/82564
PR target/88620
* expr.c (expand_assignment): For calls returning VLA structures
if to_rtx is not a MEM, force it into a stack temporary.

* gcc.dg/nested-func-12.c: New test.
* gcc.c-torture/compile/pr82564.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267595 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR debug/88635
jakub [Sat, 5 Jan 2019 11:12:35 +0000 (11:12 +0000)] 
PR debug/88635
* dwarf2out.c (const_ok_for_output_1): Reject MINUS that contains
SYMBOL_REF, CODE_LABEL or UNSPEC in subexpressions of second argument.
Reject PLUS that contains SYMBOL_REF, CODE_LABEL or UNSPEC in
subexpressions of both operands.
(mem_loc_descriptor): Handle UNSPEC if target hook acks it and all the
subrtxes are CONSTANT_P.
* config/i386/i386.c (ix86_const_not_ok_for_debug_p): Revert
2018-11-09 changes.

* gcc.dg/debug/dwarf2/pr88635.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267594 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org>
dominiq [Sat, 5 Jan 2019 11:09:11 +0000 (11:09 +0000)] 
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

PR target/60563
Missing PR entry in the previous commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267593 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org>
dominiq [Sat, 5 Jan 2019 10:54:51 +0000 (10:54 +0000)] 
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

* g++.dg/ext/sync-4.C: Add dg-xfail-run-if for darwin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267592 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR c/88546 - Copy attribute unusable for weakrefs
msebor [Sat, 5 Jan 2019 00:57:30 +0000 (00:57 +0000)] 
PR c/88546 - Copy attribute unusable for weakrefs

gcc/c-family/ChangeLog:

PR c/88546
* c-attribs.c (handle_copy_attribute): Avoid copying attribute leaf.
Handle C++ empty throw specification and C11 _Noreturn.
(has_attribute): Also handle C11 _Noreturn.

gcc/ChangeLog:

PR c/88546
* attribs.c (decls_mismatched_attributes): Avoid warning for attribute
leaf.

gcc/testsuite/ChangeLog:

PR c/88546
* g++.dg/ext/attr-copy.C: New test.
* gcc.dg/attr-copy-4.c: Disable macro expansion tracking.
* gcc.dg/attr-copy-6.c: New test.
* gcc.dg/attr-copy-7.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267591 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago runtime: prevent deadlock when profiling signal arrives during traceback
ian [Sat, 5 Jan 2019 00:40:04 +0000 (00:40 +0000)] 
runtime: prevent deadlock when profiling signal arrives during traceback

    Traceback routines, e.g. callers and funcentry, may call
    __go_get_backtrace_state. If a profiling signal arrives while we
    are in the critical section of __go_get_backtrace_state, it tries
    to do a traceback, which also calls __go_get_backtrace_state,
    which tries to enter the same critical section and will deadlock.
    Prevent this deadlock by setting up runtime_in_callers before
    calling __go_get_backtrace_state.

    Found while investigating golang/go#29448. Will add a test in the
    next CL.

    Updates golang/go#29448.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267590 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * params.def (hot-bb-count-ws-permille): Set to 990.
hubicka [Sat, 5 Jan 2019 00:20:04 +0000 (00:20 +0000)] 
* params.def (hot-bb-count-ws-permille): Set to 990.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267589 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sat, 5 Jan 2019 00:16:28 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267588 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoExport explicit instantiations for C++17 members of std::string
redi [Fri, 4 Jan 2019 23:23:22 +0000 (23:23 +0000)] 
Export explicit instantiations for C++17 members of std::string

The C++17 standard added some new members to std::basic_string, which
were not previously instantiated in the library. This meant that the
extern template declarations had to be disabled for C++17 mode. With
this patch the new members are instantiated in the library and so the
explicit instantiation declarations can be used for C++17.

The new members added by C++2a are still not exported, and so the
explicit instantiation declarations are still disabled for C++2a.

* config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
for const member functions of std::basic_string.
(GLIBCXX_3.4.26): Export member functions of std::basic_string added
in C++17.
* include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
Make non-standard constructor private.
[!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
Likewise.
* include/bits/basic_string.tcc (std::string, std::wstring): Declare
explicit instantiations for C++17 as well as earlier dialects.
* src/c++17/Makefile.am: Add new source files.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/cow-string-inst.cc: New file defining explicit
instantiations for basic_string member functions added in C++17.
* src/c++17/string-inst.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267585 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd allocator-extended copy/move ctors to COW string
redi [Fri, 4 Jan 2019 23:23:17 +0000 (23:23 +0000)] 
Add allocator-extended copy/move ctors to COW string

Add these constructors from C++11 which were missing from the COW
basic_string. Additionally simplify the definitions of the
basic_string::reference and basic_string::const_reference types as
required by C++11.

This allows filesystem::path::string<Allocator>() to be simplified, so
that the same code is used for both basic_string implementations.

* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
copy/move constructors for old std::basic_string.
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
(basic_string::reference, basic_string::const_reference): Define
as plain references for C++11 and later.
(basic_string::basic_string()): Put constructor body outside
preprocessor conditional groups.
(basic_string::basic_string(basic_string&&)): Move _Alloc_hider
instead of copying it.
(basic_string::basic_string(const basic_string&, const _Alloc&)):
Define.
(basic_string::basic_string(basic_string&&, const _Alloc&)):
Define.
* include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
cases for old basic_string.
* testsuite/21_strings/basic_string/cons/char/8.cc: Test
allocator-extended constructors unconditionally. Add extra members to
allocator type when using old string ABI.
* testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
for old string ABI.
* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267584 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR c/88363 - alloc_align attribute doesn't accept enumerated arguments
msebor [Fri, 4 Jan 2019 22:48:45 +0000 (22:48 +0000)] 
PR c/88363 - alloc_align attribute doesn't accept enumerated arguments

gcc/c-family/ChangeLog:

PR c/88363
* c-attribs.c (positional_argument): Also accept enumerated types.

gcc/testsuite/ChangeLog:

PR c/88363
* c-c++-common/attributes-4.c: New test.

gcc/ChangeLog:

PR c/88363
* doc/extend.texi (attribute alloc_align, alloc_size): Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267583 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix test failure when -fno-inline is used
redi [Fri, 4 Jan 2019 18:56:26 +0000 (18:56 +0000)] 
Fix test failure when -fno-inline is used

This currently checks _GLIBCXX_USE_DUAL_ABI which is incorrect, as that
can be true when _GLIBCXX_USE_CXX11_ABI == 0. The correct check would be
_GLIBCXX_USE_CXX11_ABI == 1, but that's made redundant by the cxx11-abi
effective target that the test requires. However, the test will fail if
-fno-inline is used, so check __NO_INLINE__ instead.

* testsuite/23_containers/list/61347.cc: Avoid spurious failure when
-fno-inline added to test flags.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267582 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gdbinit.in: Turn off pagination for the skip commands, restore
jakub [Fri, 4 Jan 2019 17:56:47 +0000 (17:56 +0000)] 
* gdbinit.in: Turn off pagination for the skip commands, restore
it to previous state afterwards.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267581 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PATCH][GCC][Aarch64] Change expected bfxil count in gcc.target/aarch64/combine_bfxil...
samtebbs [Fri, 4 Jan 2019 16:26:38 +0000 (16:26 +0000)] 
[PATCH][GCC][Aarch64] Change expected bfxil count in gcc.target/aarch64/combine_bfxil.c to 18 (PR/87763)

gcc/testsuite/Changelog:

2019-01-04  Sam Tebbs  <sam.tebbs@arm.com>

PR gcc/87763
* gcc.target/aarch64/combine_bfxil.c: Change scan-assembler-times bfxil
count to 18.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267579 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemove XFAIL from test that no longer fails
redi [Fri, 4 Jan 2019 16:07:06 +0000 (16:07 +0000)] 
Remove XFAIL from test that no longer fails

This test started passing with the old ABI with r263808, so doesn't need
to be marked XFAIL now.

* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/debug.cc: Remove XFAIL for old ABI.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267578 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix test failure with old Copy-On-Write std::string
redi [Fri, 4 Jan 2019 15:42:33 +0000 (15:42 +0000)] 
Fix test failure with old Copy-On-Write std::string

* testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
assertion failures with old std::string ABI.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267577 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix bugs in filesystem::path::lexically_normal()
redi [Fri, 4 Jan 2019 14:03:59 +0000 (14:03 +0000)] 
Fix bugs in filesystem::path::lexically_normal()

Using path::_List::erase(const_iterator) to remove a non-final component
in path::lexically_normal() is a bug, because it leaves the following
component with an incorrect _M_pos value.

Instead of providing erase members that allow removing components from
the middle, replace them with pop_back() and
_M_erase_from(const_iterator) which only allow removing elements at the
end. Most uses of erase are unaffected, because they only remove
elements from the end anyway. The one use of erasure from the middle in
lexically_normal() is replaced by calls to pop_back() and/or clearing
the last component to leave it as an empty final filename.

Also replace the "???" comment in lexically_normal() to document when
that branch is taken.

* include/bits/fs_path.h (path::_List::erase): Replace both overloads
with ...
(path::pop_back(), path::_M_erase_from(const_iterator)): New member
functions that will only erase elements at the end.
* src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
(path::_List::_Impl::_M_erase_from(const_iterator)): Define.
(path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
of erase(p, end()).
(path::_List::pop_back()): Define.
(path::_List::_M_erase_from(const_iterator)): Define.
(path::operator/=(const path&)): Use pop_back to remove last component
and _M_erase_from to remove multiple components.
(path::_M_append(basic_string_view<value_type>)): Likewise.
(path::operator+=(const path&)): Likewise.
(path::_M_concat(basic_string_view<value_type>)): Likewise.
(path::remove_filename()): Likewise.
(path::lexically_normal()): Use _List::_Impl iterators instead of
path::iterator. Use pop_back to remove components from the end. Clear
trailing filename, instead of using erase(const_iterator) to remove
a non-final component.
* testsuite/27_io/filesystem/path/generation/normal.cc: Test
additional cases.
* testsuite/27_io/filesystem/path/generation/normal2.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267576 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gnatvsn.ads: Bump copyright year.
ebotcazou [Fri, 4 Jan 2019 12:47:58 +0000 (12:47 +0000)] 
* gnatvsn.ads: Bump copyright year.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267575 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix concatenation bug in filesystem::path
redi [Fri, 4 Jan 2019 11:43:09 +0000 (11:43 +0000)] 
Fix concatenation bug in filesystem::path

When erasing a trailing empty filename component, the output iterator
was not decremented, causing the next component to be created at the
wrong position.

* src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
incorrect treatment of empty filename after trailing slash.
* testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267574 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAvoid spurious test failures when -fno-inline in test flags
redi [Fri, 4 Jan 2019 11:06:49 +0000 (11:06 +0000)] 
Avoid spurious test failures when -fno-inline in test flags

These tests rely on inlining, so if -fno-inline is added to the compiler
flags the tests fail. Use the predefined __NO_INLINE__ macro to detect
that situation, and don't bother testing the move assignment.

* testsuite/21_strings/basic_string/modifiers/assign/char/
move_assign_optim.cc: Avoid spurious failure when -fno-inline added
to test flags.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
move_assign_optim.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267573 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-01-04 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Fri, 4 Jan 2019 10:42:12 +0000 (10:42 +0000)] 
2019-01-04  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/48543
    * gfortran.dg/const_chararacter_merge.f90: Actually remove.
    * gfortran.dg/merge_char_const.f90: Restore.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267572 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/88594
jakub [Fri, 4 Jan 2019 09:00:05 +0000 (09:00 +0000)] 
PR target/88594
* config/i386/i386.c (ix86_expand_divmod_libfunc): Use mode instead
of GET_MODE (opN) as modes of the libcall arguments.

* gcc.dg/pr88594.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267571 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agox86: relax mask register constraints
jbeulich [Fri, 4 Jan 2019 08:50:56 +0000 (08:50 +0000)] 
x86: relax mask register constraints

While their use for masking is indeed restricted to %k1...%k7, use as
"normal" insn operands also permits %k0. Remove the unnecessary
limitations, requiring quite a few testsuite adjustments.

Oddly enough some AVX512{F,DQ} test cases already check for %k[0-7],
while others did permit {%k0} - where they get touched here anyway this
gets fixed at the same time.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267570 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR tree-optimization/88659 - ICE in maybe_warn_nonstring_arg
msebor [Fri, 4 Jan 2019 03:13:33 +0000 (03:13 +0000)] 
PR tree-optimization/88659 - ICE in maybe_warn_nonstring_arg

gcc/ChangeLog:
* calls.c (maybe_warn_nonstring_arg): Avoid assuming maxlen is set.

gcc/testsuite/ChangeLog:
* gcc.dg/Wstringop-truncation-6.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267569 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Fri, 4 Jan 2019 00:16:34 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267568 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88607 replace some more UTF-8 characters
redi [Thu, 3 Jan 2019 22:07:52 +0000 (22:07 +0000)] 
PR libstdc++/88607 replace some more UTF-8 characters

2019-01-03  Jonathan Wakely  <jwakely@redhat.com>
    Jakub Jelinek  <jakub@redhat.com>

PR libstdc++/88607
* include/experimental/memory: Replace UTF-8 quote characters.
* include/std/future: Replace UTF-8 "em dash" characters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267565 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88607 replace or remove unnecessary UTF-8 characters
redi [Thu, 3 Jan 2019 20:38:11 +0000 (20:38 +0000)] 
PR libstdc++/88607 replace or remove unnecessary UTF-8 characters

There are a number of UTF-8 characters in comments which add no value
and can be replaced with ASCII equivalents, or removed entirely for the
section sign (U+00A7).

PR libstdc++/88607
* include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
* include/debug/forward_list: Likewise.
* include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
character.
* include/experimental/chrono: Likewise.
* include/experimental/functional: Likewise.
* include/experimental/ratio: Likewise.
* include/experimental/system_error: Likewise.
* include/experimental/tuple: Likewise.
* include/experimental/type_traits: Likewise.
* include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
* include/parallel/multiseq_selection.h: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267564 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/88681 export missing symbols
redi [Thu, 3 Jan 2019 20:38:04 +0000 (20:38 +0000)] 
PR libstdc++/88681 export missing symbols

These new facet functions were added to GCC 5.1 but the versions for the
old std::string ABI were never exported from the shared library.

PR libstdc++/88681
* config/abi/pre/gnu.ver: Add missing exports.
* testsuite/22_locale/collate_byname/88681.cc: New test.
* testsuite/22_locale/time_get/get/char/88681.cc: New test.
* testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267563 138bc75d-0d04-0410-961f-82ee72b054a4