]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
5 years ago * tree.c (free_lang_data_in_type): Only check main variants.
hubicka [Fri, 26 Oct 2018 07:21:04 +0000 (07:21 +0000)] 
* tree.c (free_lang_data_in_type): Only check main variants.

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

5 years ago * ipa-devirt.c (warn_odr): Make static.
hubicka [Fri, 26 Oct 2018 07:20:01 +0000 (07:20 +0000)] 
* ipa-devirt.c (warn_odr): Make static.
(types_same_for_odr): Drop strict variant.
(types_odr_comparable): Likewise.
(odr_or_derived_type_p): Look for main variants.
(odr_name_hasher::equal): Cleanup comment.
(odr_subtypes_equivalent): Add warn and warned arguments; check main
variants.
(type_variants_equivalent_p): break out from ...
(odr_types_equivalent): ... here; go for main variants where needed.
(warn_odr): ... here; turn static.
(warn_types_mismatch): Compare mangled names of main variants.
* ipa-utils.h (types_odr_comparable): Drop strict parameter.
(type_with_linkage_p): Sanity check that we look at main variant.
* lto.c (lto_read_decls): Only consider main variant to be ODR type.
* tree.h (types_same_for_odr): Drop strict argument.

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

5 years ago2018-10-26 Richard Biener <rguenther@suse.de>
rguenth [Fri, 26 Oct 2018 07:19:07 +0000 (07:19 +0000)] 
2018-10-26  Richard Biener  <rguenther@suse.de>

PR testsuite/87754
* g++.dg/lto/odr-1_0.C: Fix pattern.

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

5 years ago2018-10-26 Richard Biener <rguenther@suse.de>
rguenth [Fri, 26 Oct 2018 07:12:02 +0000 (07:12 +0000)] 
2018-10-26  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87746
* tree-vect-data-refs.c (vect_update_misalignment_for_peel):
Simplify and fix WRT strided store groups with size not
equal to step in element count.
(vect_analyze_group_access_1): Dump the whole group.

* gcc.dg/pr87746.c: New testcase.

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

5 years agoDon't xfail gcc.dg/pr78973-2.c on non-ilp64 targets
ro [Fri, 26 Oct 2018 06:46:26 +0000 (06:46 +0000)] 
Don't xfail gcc.dg/pr78973-2.c on non-ilp64 targets

* gcc.dg/pr78973-2.c: Remove xfail on dg-warning.

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

5 years ago libgo: don't use wc in gotest
ian [Fri, 26 Oct 2018 02:43:35 +0000 (02:43 +0000)] 
libgo: don't use wc in gotest

    The wc command is not in the GNU approved list of Makefile utilities
    (https://www.gnu.org/prep/standards/html_node/Utilities-in-Makefiles.html#Utilities-in-Makefiles).

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

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

5 years agoDaily bump.
gccadmin [Fri, 26 Oct 2018 00:17:05 +0000 (00:17 +0000)] 
Daily bump.

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

5 years ago compiler: improve name mangling for packpaths
ian [Thu, 25 Oct 2018 22:18:08 +0000 (22:18 +0000)] 
compiler: improve name mangling for packpaths

    The current implementation of Gogo::pkgpath_for_symbol was written in
    a way that allowed two distinct package paths to map to the same
    symbol, which could cause collisions at link- time or compile-time.

    Switch to a better mangling scheme to insure that we get a unique
    packagepath symbol for each package. In the new scheme instead of having
    separate mangling schemes for identifiers and package paths, the
    main identifier mangler ("go_encode_id") now handles mangling of
    both packagepath characters and identifier characters.

    The new mangling scheme is more intrusive: "foo/bar.Baz" is mangled as
    "foo..z2fbar.Baz" instead of "foo_bar.Baz". To mitigate this, this
    patch also adds a demangling capability so that function names
    returned from runtime.CallersFrames are converted back to their
    original unmangled form.

    Changing the pkgpath_for_symbol scheme requires updating a number of
    //go:linkname directives and C "__asm__" directives to match the new
    scheme, as well as updating the 'gotest' driver (which makes
    assumptions about the correct mapping from pkgpath symbol to package
    name).

    Fixes golang/go#27534.

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

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

5 years agogcc/ChangeLog:
carll [Thu, 25 Oct 2018 20:41:57 +0000 (20:41 +0000)] 
gcc/ChangeLog:

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

* config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_VSCEDPGT,
P9V_BUILTIN_VEC_VSCEDPLT, P9V_BUILTIN_VEC_VSCEDPEQ,
P9V_BUILTIN_VEC_VSCEDPUO): Rename base overloaded name.  Add quad
precicion entry for each overloaded builtin.
* config/rs6000/rs6000-builtin.def (VSCEDPGT, VSCEDPLT, VSCEDPEQ,
VSCEDPUO): Rename overloaded name.
(VSCEDPGT, VSCEQPGT, VSCEDPLT, VSCEQPLT, VSCEDPEQ, VSCEQPEQ,
VSCEDPUO, VSCEQPUO): Add defitions for overloaded builtins.
* config/rs6000/vsx.md (xscmpexpqp_<code>_<mode>): Add
define_expand for xscmpexqp instruction.
(*xscmpexpqp): Add define_insn for the xscmpexqp instruction.

gcc/testsuite/ChangeLog:

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

* gcc.target/powerpc/float128-cmp2-runnable.c: New test file.

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

5 years ago2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Thu, 25 Oct 2018 20:16:39 +0000 (20:16 +0000)] 
2018-10-25  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji <jji@us.ibm.com>

* config/rs6000/emmintrin.h (_mm_slli_epi16): Replace deprecated
function with vec_sl.
(_mm_slli_epi32): Likewise.
(_mm_slli_epi64): Likewise.
(_mm_srai_epi16): Replace deprecated function with vec_sra.
(_mm_srai_epi32): Likewise.
(_mm_srli_epi16): Replace deprecated function with vec_sr.
(_mm_srli_epi32): Likewise.
(_mm_srli_epi64): Likewise.
(_mm_sll_epi16): Replace deprecated function with vec_sl.
(_mm_sll_epi32): Likewise.
(_mm_sll_epi64): Likewise.
(_mm_sra_epi16): Replace deprecated function with vec_sra.
(_mm_sra_epi32): Likewise.
(_mm_srl_epi16): Replace deprecated function with vec_sr.
(_mm_srl_epi32): Likewise.
(_mm_srl_epi64): Likewise.

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

5 years ago2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Thu, 25 Oct 2018 20:14:40 +0000 (20:14 +0000)] 
2018-10-25  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji <jji@us.ibm.com>

* gcc/config/rs6000/emmintrin.h (_mm_sll_epi16): Replace
comparison operators with vec_cmp* for compatibility due to
unfortunate history; clean up formatting and use types more
appropriately.
(_mm_sll_epi32): Likewise.
(_mm_sll_epi64): Likewise.
(_mm_srl_epi16): Likewise.
(_mm_srl_epi32): Likewise.
(_mm_srl_epi64): Likewise.

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

5 years ago2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Thu, 25 Oct 2018 20:09:24 +0000 (20:09 +0000)] 
2018-10-25  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji <jji@us.ibm.com>

* config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast.
* config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to
__vector __bool int.  Use vec_cmpgt in preference to deprecated
function vec_vcmpgtfp.
(_mm_max_ps): Likewise.

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

5 years ago * config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn
law [Thu, 25 Oct 2018 19:35:52 +0000 (19:35 +0000)] 
* config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn
if returning false.

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

5 years ago* parser.c (cp_parser_sizeof_operand): Remove redundant grokdeclarator.
jason [Thu, 25 Oct 2018 19:23:33 +0000 (19:23 +0000)] 
* parser.c (cp_parser_sizeof_operand): Remove redundant grokdeclarator.

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

5 years agogcc/ChangeLog:
msebor [Thu, 25 Oct 2018 16:34:36 +0000 (16:34 +0000)] 
gcc/ChangeLog:

* doc/extend.texi (aligned): Expand attribute description.
(Alignment): Rename section.  Discuss function arguments.

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

5 years agoUse signed char in a test (PR testsuite/87739).
marxin [Thu, 25 Oct 2018 15:36:48 +0000 (15:36 +0000)] 
Use signed char in a test (PR testsuite/87739).

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

PR testsuite/87739
* gcc.dg/tree-ssa/pr84436-5.c (foo): Use signed char.

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

5 years agoRevert partially changes from r265454 (PR other/87735).
marxin [Thu, 25 Oct 2018 15:36:12 +0000 (15:36 +0000)] 
Revert partially changes from r265454 (PR other/87735).

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

PR other/87735
* gcc.dg/tree-prof/time-profiler-1.c: Revert.
* gcc.dg/tree-prof/time-profiler-2.c: Likewise.
* gcc.dg/tree-prof/time-profiler-3.c: Likewise.
2018-10-25  Martin Liska  <mliska@suse.cz>

PR other/87735
* libgcov-profiler.c: Revert.

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

5 years agoPR libstdc++/87749 fix (and optimize) string move construction
redi [Thu, 25 Oct 2018 15:34:04 +0000 (15:34 +0000)] 
PR libstdc++/87749 fix (and optimize) string move construction

The move constructor for the SSO string uses assign(const basic_string&)
when either:

(1) the source string is "local" and so the contents of the small string
buffer need to be copied, or

(2) the allocator does not propagate and is_always_equal is false.

Case (1) is suboptimal, because the assign member is not noexcept and
the compiler isn't smart enough to see it won't actually throw in this
case. This causes extra code in the move assignment operator so that any
exception will be turned into a call to std::terminate. This can be
fixed by copying small strings inline instead of calling assign.

Case (2) is a bug, because the specific instances of the allocators
could be equal even if is_always_equal is false. This can result in an
unnecessary deep copy (and potentially-throwing allocation) when the
storage should be moved. This can be fixed by simply checking if the
allocators are equal.

PR libstdc++/87749
* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
(basic_string::operator=(basic_string&&)): For short strings copy the
buffer inline. Only fall back to using assign(const basic_string&) to
do a deep copy when reallocation is needed.
* testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
New test.
* testsuite/21_strings/basic_string/modifiers/assign/char/
move_assign_optim.cc: New test.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
New test.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
move_assign_optim.cc: New test.

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

5 years ago * ipa-devirt.c (main_odr_variant): Remove.
hubicka [Thu, 25 Oct 2018 14:33:27 +0000 (14:33 +0000)] 
* ipa-devirt.c (main_odr_variant): Remove.
(hash_odr_name, types_same_for_odr, types_odr_comparable,
odr_name_hasher::equal, odr_subtypes_equivalent_p):
Drop use of main_odr_variant.
(add_type_duplicate): Silence confused warnings on integer types.
(get_odr_type): Always look for main variant.
(register_odr_type): Simplify.

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

5 years ago2018-10-25 Richard Biener <rguenther@suse.de>
rguenth [Thu, 25 Oct 2018 14:28:18 +0000 (14:28 +0000)] 
2018-10-25  Richard Biener  <rguenther@suse.de>

* tree-vect-data-refs.c (vect_analyze_data_ref_accesses):
Initialize ng to silence error with release checking bootstrap.

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

5 years agoS/390: Merge movdi_larl into movdi_64
iii [Thu, 25 Oct 2018 14:23:31 +0000 (14:23 +0000)] 
S/390: Merge movdi_larl into movdi_64

Consider the following RTL:

(insn (set (mem/f/c:DI (reg/f:DI 60))
           (const:DI (plus:DI (symbol_ref:DI ("*.LANCHOR0"))
                              (const_int 8)))))

generated by cse2 pass.  It is matched to movdi_64, resulting in
the following inefficient code:

larl %r5,.L6 # Load literal pool@
lg %r1,.L7-.L6(%r5) # Load .LANCHOR0+8
stgrl %r1,.LANCHOR0
br %r14

Matching it to movdi_larl improves the code, eliminating one
instruction and the literal pool entry:

larl %r1,.LANCHOR0+8
stgrl %r1,.LANCHOR0
br %r14

Taking it one step further, there is no reason to keep movdi_64 and
movdi_larl separate, since this could potentially improve code in other
ways by giving lra one more alternative to choose from.

gcc/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/constraints.md (ZL): New constraint.
* config/s390/s390.c (legitimate_pic_operand_p): Accept LARL
operands.
* config/s390/s390.md (movdi_larl): Remove.
(movdi_64): Add the LARL alternative.

gcc/testsuite/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/global-array-almost-huge-element.c: New test.
* gcc.target/s390/global-array-almost-negative-huge-element.c: New test.
* gcc.target/s390/global-array-element-pic.c: New test.
* gcc.target/s390/global-array-even-element.c: New test.
* gcc.target/s390/global-array-huge-element.c: New test.
* gcc.target/s390/global-array-negative-huge-element.c: New test.
* gcc.target/s390/global-array-odd-element.c: New test.

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

5 years ago2018-10-25 Richard Biener <rguenther@suse.de>
rguenth [Thu, 25 Oct 2018 14:03:24 +0000 (14:03 +0000)] 
2018-10-25  Richard Biener  <rguenther@suse.de>

* tree-if-conv.c: Include tree-ssa-sccvn.h.
(tree_if_conversion): Run CSE on the if-converted loop body.

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

5 years agoFix rtx_code_size static initialization order fiasco
iii [Thu, 25 Oct 2018 13:47:10 +0000 (13:47 +0000)] 
Fix rtx_code_size static initialization order fiasco

r264556 and r264537 changed the format of EQ_ATTR_ALT RTXs to "ww",
which also required adjusting rtx_code_size initializer.  In order to
simplify things, the list of rtx_codes known to use HOST_WIDE_INTs was
replaced by the format string check.  However, unlike the old one, this
new check cannot be always performed at compile time, in which case a
static constructor is generated.  This may lead to a static
initialization order fiasco with respect to other static constructors
in the compiler, in case of PR87747, cselib's pool_allocator.

gcc/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

PR bootstrap/87747
* rtl.c (RTX_CODE_HWINT_P_1): New helper macro.
(RTX_CODE_HWINT_P): New macro.
(rtx_code_size): Use RTX_CODE_HWINT_P ().

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

5 years agoRelocation (= move+destroy)
glisse [Thu, 25 Oct 2018 13:03:13 +0000 (13:03 +0000)] 
Relocation (= move+destroy)

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

PR libstdc++/87106
* include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
destroy): Add noexcept specification.
* include/bits/allocator.h (construct, destroy): Likewise.
* include/ext/alloc_traits.h (construct, destroy): Likewise.
* include/ext/malloc_allocator.h (construct, destroy): Likewise.
* include/ext/new_allocator.h (construct, destroy): Likewise.
* include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
__relocate_a_1): New functions.
(__is_trivially_relocatable): New class.
* include/bits/stl_vector.h (__use_relocate): New static member.
* include/bits/vector.tcc (reserve, _M_realloc_insert,
_M_default_append): Use __relocate_a.
(reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
_M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
after _Destroy.
* testsuite/23_containers/vector/modifiers/push_back/49836.cc:
Replace CopyConsOnlyType with DelAnyAssign.

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

5 years ago * ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types
hubicka [Thu, 25 Oct 2018 12:18:28 +0000 (12:18 +0000)] 
* ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types
is anonymous.
* g++.dg/lto/odr-1_0.C: New test.
* g++.dg/lto/odr-1_1.C: New test.

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

5 years agodg-cmp-results: display NA->FAIL & NA->UNRESOLVED by default
thopre01 [Thu, 25 Oct 2018 10:35:21 +0000 (10:35 +0000)] 
dg-cmp-results: display NA->FAIL & NA->UNRESOLVED by default

Currently, dg-cmp-results will not print anything for a test that was
not run before, even if it is a FAIL or UNRESOLVED now. This means that
when contributing a code change together with a testcase in the same
commit one must run dg-cmp-results twice: once to check for regression
on a full testsuite run and once against the new testcase with -v -v.
This also prevents using dg-cmp-results on sum files generated with
test_summary since these would not contain PASS.

This patch changes dg-cmp-results to print NA->FAIL and NA->UNRESOLVED
changes by default.

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

    contrib/
    * dg-cmp-results.sh: Print NA-FAIL and NA->UNRESOLVED changes at
    default verbosity.

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

5 years ago[testsuite] Fix sibcall-9 & sibcall-10 with -fPIC
thopre01 [Thu, 25 Oct 2018 10:19:49 +0000 (10:19 +0000)] 
[testsuite] Fix sibcall-9 & sibcall-10 with -fPIC

gcc.dg/sibcall-9.c and gcc.dg/sibcall-10.c give execution failure
on ARM when compiled with -fPIC due to the PIC access to volatile
variable v creating an extra spill which causes the frame size of the
two recursive functions to be different. Making the variable static
solve the issue because the variable can be access in a PC-relative way
and avoid the spill, while still testing sibling call as originally
intended.

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

gcc/testsuite/
    * gcc.dg/sibcall-9.c: Make v static.
    * gcc.dg/sibcall-10.c: Likewise.

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

5 years ago2018-10-25 Richard Biener <rguenther@suse.de>
rguenth [Thu, 25 Oct 2018 08:59:07 +0000 (08:59 +0000)] 
2018-10-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87665
PR tree-optimization/87745
* tree-vectorizer.h (get_earlier_stmt): Remove.
(get_later_stmt): Pick up UID from the original non-pattern stmt.

* gfortran.dg/20181025-1.f: New testcase.

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

5 years ago[DOC] Relocate list under Deprecated in options.texi to Var
samtebbs [Thu, 25 Oct 2018 08:57:24 +0000 (08:57 +0000)] 
[DOC] Relocate list under Deprecated in options.texi to Var

gcc/doc
2018-10-25  Sam Tebbs  <sam.tebbs@arm.com>

* options.texi (Deprecated): Move list to Var section.

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

5 years ago PR fortran/87725
jakub [Thu, 25 Oct 2018 07:56:55 +0000 (07:56 +0000)] 
PR fortran/87725
* openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and
nonmonotonic modifiers regardless of if they have been parsed
already or if the opposite one has.  Fix up check whether
comma after modifier should be parsed.
(resolve_omp_clauses): Diagnose schedule modifier restrictions.

* c-c++-common/gomp/schedule-modifiers-1.c (bar): Separate modifier
from kind with a colon rather than comma.
* gfortran.dg/gomp/schedule-modifiers-1.f90: New test.
* gfortran.dg/gomp/schedule-modifiers-2.f90: New test.

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

5 years agoDaily bump.
gccadmin [Thu, 25 Oct 2018 00:16:38 +0000 (00:16 +0000)] 
Daily bump.

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

5 years agocombine: Don't do make_more_copies for dest PC (PR87720)
segher [Wed, 24 Oct 2018 22:34:40 +0000 (22:34 +0000)] 
combine: Don't do make_more_copies for dest PC (PR87720)

Jumps are written in RTL as moves to PC.  But the latter has no mode,
so we shouldn't try to use it.  Since the optimization this routine
does does not really help for jumps at all, let's just skip it.

PR rtl-optimization/87720
* combine.c (make_more_copies): Skip if the dest is pc_rtx.

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

5 years agogOlogy: do not change code in isolate-paths for warnings only
aoliva [Wed, 24 Oct 2018 21:55:39 +0000 (21:55 +0000)] 
gOlogy: do not change code in isolate-paths for warnings only

The isolate-paths pass is activated by various -f flags, but also by
-Wnull-dereference.  Most of its codegen changes are conditioned on at
least one of the -f flags, but those that detect, warn about and
isolate paths that return the address of local variables are enabled
even if the pass is activated only by -Wnull-dereference.

-W flags should not cause codegen changes, so this patch makes the
codegen changes conditional on the presence of any of the -f flags
that activate the pass.  Should we have a separate option to activate
only this kind of transformation?

for  gcc/ChangeLog

* gimple-ssa-isolate-paths.c
(find_implicit_erroneous_behavior): Do not change code if the
pass is running for warnings only.
(find_explicit_erroneous_behavior): Likewise.

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

5 years ago[gcc]
meissner [Wed, 24 Oct 2018 20:16:31 +0000 (20:16 +0000)] 
[gcc]
2018-10-24  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
Define as rs6000_mangle_decl_assembler_name.
(rs6000_mangle_decl_assembler_name): If the user switched from IBM
long double to IEEE long double, switch the names of the long
double built-in functions to be <func>f128 instead of <func>l.

[gcc/testsuite]
2018-10-24  Michael Meissner  <meissner@linux.ibm.com>

* gcc.target/powerpc/float128-math.c: New test to make sure the
long double built-in function names use the f128 form if the user
switched from IBM long double to IEEE long double.
* gcc.target/powerpc/ppc-fortran/ieee128-math.f90: Likewise.

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

5 years ago PR c++/86288
jakub [Wed, 24 Oct 2018 19:39:23 +0000 (19:39 +0000)] 
PR c++/86288
* parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
:: is not present and attr_ns non-NULL, canonicalize also attr_id.
(cp_parser_attribute_spec): Fix comment typo.

* g++.dg/cpp0x/gen-attrs-66.C: New test.

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

5 years agogcc/ChangeLog:
msebor [Wed, 24 Oct 2018 19:33:56 +0000 (19:33 +0000)] 
gcc/ChangeLog:

* doc/extend.texi (nonnull): List no-argument form.  Reference
-fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute.

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

5 years agoPR c++/84851 - missing -Wclass-memaccess for a memcpy in a copy ctor with a non-trivi...
msebor [Wed, 24 Oct 2018 18:06:14 +0000 (18:06 +0000)] 
PR c++/84851 - missing -Wclass-memaccess for a memcpy in a copy ctor with a non-trivial member

gcc/cp/ChangeLog:

PR c++/84851
* call.c (maybe_warn_class_memaccess): Tighten up.

gcc/testsuite/ChangeLog:

PR c++/84851
* g++.dg/Wclass-memaccess-4.C: Remove XFAIL.

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

5 years ago2018-10-24 Richard Biener <rguenther@suse.de>
rguenth [Wed, 24 Oct 2018 14:31:17 +0000 (14:31 +0000)] 
2018-10-24  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state.

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

5 years ago2018-10-24 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Wed, 24 Oct 2018 14:29:11 +0000 (14:29 +0000)] 
2018-10-24  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji <jji@us.ibm.com>

* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated
__vector long to __vector long long.
(_mm_cvtpd_ps): Likewise.
(_mm_cvttpd_epi32): Likewise.
(_mm_cvtpi32_pd): Likewise.
(_mm_unpackhi_epi64): Likewise.
(_mm_unpacklo_epi64): Likewise.

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

5 years agoSwitch conversion: support any ax + b transformation (PR tree-optimization/84436).
marxin [Wed, 24 Oct 2018 13:52:21 +0000 (13:52 +0000)] 
Switch conversion: support any ax + b transformation (PR tree-optimization/84436).

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

PR tree-optimization/84436
* tree-switch-conversion.c (switch_conversion::contains_same_values_p):
Remove.
(switch_conversion::contains_linear_function_p): New.
(switch_conversion::build_one_array): Support linear
transformation on input.
* tree-switch-conversion.h (struct switch_conversion): Add
contains_linear_function_p declaration.
2018-10-24  Martin Liska  <mliska@suse.cz>

PR tree-optimization/84436
* gcc.dg/tree-ssa/pr84436-1.c: New test.
* gcc.dg/tree-ssa/pr84436-2.c: New test.
* gcc.dg/tree-ssa/pr84436-3.c: New test.
* gcc.dg/tree-ssa/pr84436-4.c: New test.
* gcc.dg/tree-ssa/pr84436-5.c: New test.

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

5 years agoReturn hash of ADDR_EXPR if its argument is CONSTANT_CLASS_P.
marxin [Wed, 24 Oct 2018 13:49:47 +0000 (13:49 +0000)] 
Return hash of ADDR_EXPR if its argument is CONSTANT_CLASS_P.

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

* varasm.c (const_hash_1): Return hash of ADDR_EXPR
if its argument is CONSTANT_CLASS_P.

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

5 years ago * ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL;
hubicka [Wed, 24 Oct 2018 12:50:25 +0000 (12:50 +0000)] 
* ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL;
it is wrong for forward declarations.

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

5 years agoAdd myself to MAINTAINERS
iii [Wed, 24 Oct 2018 12:10:58 +0000 (12:10 +0000)] 
Add myself to MAINTAINERS

ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

* MAINTAINERS (Write After Approval): Add myself.

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

5 years agoS/390: Fix ICE in s390_check_qrst_address ()
iii [Wed, 24 Oct 2018 12:04:53 +0000 (12:04 +0000)] 
S/390: Fix ICE in s390_check_qrst_address ()

In r265371 (S/390: Make "b" constraint match literal pool references)
the CONSTANT_POOL_ADDRESS_P () check was moved from
s390_loadrelative_operand_p () to s390_check_qrst_address ().  However,
in the original code it was guarded by SYMBOL_REF_P (), which was not
added to the new code.

gcc/ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/s390.c (s390_check_qrst_address): Add the missing
SYMBOL_REF_P () check.

gcc/testsuite/ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/20181024-1.c: New test.

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

5 years ago2018-10-24 Richard Biener <rguenther@suse.de>
rguenth [Wed, 24 Oct 2018 11:46:58 +0000 (11:46 +0000)] 
2018-10-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87105
* tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust
dump classification.
(vect_analyze_data_ref_accesses): Handle duplicate loads and
stores by splitting the affected group after the fact.
* tree-vect-slp.c (vect_build_slp_tree_2): Dump when we
fail the SLP build because of size constraints.

* gcc.dg/vect/bb-slp-39.c: New testcase.
* gfortran.dg/vect/pr83232.f90: Un-XFAIL.

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

5 years agoDisable string merging with alignment > 1 before Solaris 11.4/SPARC
ro [Wed, 24 Oct 2018 11:27:35 +0000 (11:27 +0000)] 
Disable string merging with alignment > 1 before Solaris 11.4/SPARC

* configure.ac (gcc_cv_ld_aligned_shf_merge): New test.
* configure: Regenerate.
* config.in: Regenerate.
* varasm.c (mergeable_string_section): Use readonly_data_section
if linker doesn't support SHF_MERGE with alignment > 8.
(mergeable_constant_section): Likewise.

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

5 years ago2018-10-24 Richard Biener <rguenther@suse.de>
rguenth [Wed, 24 Oct 2018 09:42:19 +0000 (09:42 +0000)] 
2018-10-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84013
* tree-ssa-structalias.c (struct msdi_data): New struct for
marshalling data to walk_stmt_load_store_ops.
(maybe_set_dependence_info): Refactor as callback for
walk_stmt_load_store_ops.
(compute_dependence_clique): Set restrict info on all stmt kinds.

* gcc.dg/tree-ssa/restrict-9.c: New testcase.

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

5 years agoRemove reduntant dumps and make tp_first_run dump more compact.
marxin [Wed, 24 Oct 2018 08:47:59 +0000 (08:47 +0000)] 
Remove reduntant dumps and make tp_first_run dump more compact.

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

* cgraph.c (cgraph_node::dump):
Remove reduntant dumps and make tp_first_run dump more compact.
2018-10-24  Martin Liska  <mliska@suse.cz>

* libgcov-profiler.c: Start from 1 in order to distinguish
functions which were seen and these that were not.

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

5 years ago2018-10-24 Richard Biener <rguenther@suse.de>
rguenth [Wed, 24 Oct 2018 06:52:45 +0000 (06:52 +0000)] 
2018-10-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87665
* tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust
to reflect reality.

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

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

5 years ago2018-10-24 François Dumont <fdumont@gcc.gnu.org>
fdumont [Wed, 24 Oct 2018 05:40:25 +0000 (05:40 +0000)] 
2018-10-24  François Dumont  <fdumont@gcc.gnu.org>

* include/debug/safe_unordered_container.h
(_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
parameter type from local end variable.
(_Safe_unordered_container<>::_M_invalidate_all): Likewise.
* include/debug/unordered_map
(unordered_map<>::begin()): Use C++11 direct initialization.
(unordered_map<>::end()): Likewise.
(unordered_map<>::cbegin()): Likewise.
(unordered_map<>::cend()): Likewise.
(unordered_map<>::begin(size_type)): Likewise.
(unordered_map<>::end(size_type)): Likewise.
(unordered_map<>::cbegin(size_type)): Likewise.
(unordered_map<>::cend(size_type)): Likewise.
(unordered_map<>::emplace<>(_Args&&...)): Likewise.
(unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(unordered_map<>::insert(const value_type&)): Likewise.
(unordered_map<>::insert(value_type&&)): Likewise.
(unordered_map<>::insert<>(_Pair&&)): Likewise.
(unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
(unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
(unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
(unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
(unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
(unordered_map<>::try_emplace<>(const_iterator, const key_type&,
_Args&&...)): Likewise.
(unordered_map<>::try_emplace<>(const_iterator, key_type&&,
_Args&&...)): Likewise.
(unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
(unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
(unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
_Obj&&)): Likewise.
(unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
_Obj&&)): Likewise.
(unordered_map<>::insert(note_type&&)): Likewise.
(unordered_map<>::find(const key_type&)): Likewise.
(unordered_map<>::equal_range(const key_type&)): Likewise.
(unordered_map<>::_M_extract): New.
(unordered_map<>::extract(const_iterator)): Use latter.
(unordered_map<>::extract(const key_type&)): Likewise.
(unordered_map<>::_M_erase): New.
(unordered_map<>::erase(const key_type&)): Use latter.
(unordered_map<>::erase(const_iterator)): Likewise.
(unordered_map<>::erase(iterator)): Likewise.
(unordered_map<>::_M_invalidate): New.
(unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
(unordered_multimap<>::begin()): Use C++11 direct initialization.
(unordered_multimap<>::end()): Likewise.
(unordered_multimap<>::cbegin()): Likewise.
(unordered_multimap<>::cend()): Likewise.
(unordered_multimap<>::begin(size_type)): Likewise.
(unordered_multimap<>::end(size_type)): Likewise.
(unordered_multimap<>::cbegin(size_type)): Likewise.
(unordered_multimap<>::cend(size_type)): Likewise.
(unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
(unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(unordered_multimap<>::insert(const value_type&)): Likewise.
(unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
(unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
(unordered_multimap<>::insert<>(_Pair&&)): Likewise.
(unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
(unordered_multimap<>::insert(note_type&&)): Likewise.
(unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
(unordered_multimap<>::find(const key_type&)): Likewise.
(unordered_multimap<>::equal_range(const key_type&)): Likewise.
(unordered_multimap<>::_M_extract): New.
(unordered_multimap<>::extract(const_iterator)): Use latter.
(unordered_multimap<>::extract(const key_type&)): Likewise.
(unordered_multimap<>::_M_erase): New.
(unordered_multimap<>::erase(const_iterator)): Likewise.
(unordered_multimap<>::erase(iterator)): Likewise.
(unordered_multimap<>::_M_invalidate): New.
(unordered_multimap<>::erase(const key_type&)): Use latter.
(unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
* include/debug/unordered_set
(unordered_set<>::begin()): Use C++11 direct initialization.
(unordered_set<>::end()): Likewise.
(unordered_set<>::cbegin()): Likewise.
(unordered_set<>::cend()): Likewise.
(unordered_set<>::begin(size_type)): Likewise.
(unordered_set<>::end(size_type)): Likewise.
(unordered_set<>::cbegin(size_type)): Likewise.
(unordered_set<>::cend(size_type)): Likewise.
(unordered_set<>::emplace<>(_Args&&...)): Likewise.
(unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(unordered_set<>::insert(const value_type&)): Likewise.
(unordered_set<>::insert(value_type&&)): Likewise.
(unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
(unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
(unordered_set<>::insert(note_type&&)): Likewise.
(unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
(unordered_set<>::find(const key_type&)): Likewise.
(unordered_set<>::equal_range(const key_type&)): Likewise.
(unordered_set<>::_M_extract): New.
(unordered_set<>::extract(const_iterator)): Use latter.
(unordered_set<>::extract(const key_type&)): Likewise.
(unordered_set<>::_M_erase): New.
(unordered_set<>::erase(const key_type&)): Use latter.
(unordered_set<>::erase(const_iterator)): Likewise.
(unordered_set<>::erase(iterator)): Likewise.
(unordered_set<>::_M_invalidate): New.
(unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
(unordered_multiset<>::begin()): Use C++11 direct initialization.
(unordered_multiset<>::end()): Likewise.
(unordered_multiset<>::cbegin()): Likewise.
(unordered_multiset<>::cend()): Likewise.
(unordered_multiset<>::begin(size_type)): Likewise.
(unordered_multiset<>::end(size_type)): Likewise.
(unordered_multiset<>::cbegin(size_type)): Likewise.
(unordered_multiset<>::cend(size_type)): Likewise.
(unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
(unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
(unordered_multiset<>::insert(const value_type&)): Likewise.
(unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
(unordered_multiset<>::insert(value_type&&)): Likewise.
(unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
(unordered_multiset<>::insert(node_type&&)): Likewise.
(unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
(unordered_multiset<>::find(const key_type&)): Likewise.
(unordered_multiset<>::equal_range(const key_type&)): Likewise.
(unordered_multiset<>::_M_extract): New.
(unordered_multiset<>::extract(const_iterator)): Use latter.
(unordered_multiset<>::extract(const key_type&)): Likewise.
(unordered_multiset<>::_M_erase): New.
(unordered_multiset<>::erase(const_iterator)): Likewise.
(unordered_multiset<>::erase(iterator)): Likewise.
(unordered_multiset<>::_M_invalidate): New.
(unordered_multiset<>::erase(const key_type&)): Use latter.
(unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.

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

5 years ago2018-10-24 François Dumont <fdumont@gcc.gnu.org>
fdumont [Wed, 24 Oct 2018 05:20:35 +0000 (05:20 +0000)] 
2018-10-24  François Dumont  <fdumont@gcc.gnu.org>

* include/c_global/cstddef: Add versioned namespace.

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

5 years agoDaily bump.
gccadmin [Wed, 24 Oct 2018 00:16:54 +0000 (00:16 +0000)] 
Daily bump.

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

5 years ago * config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
law [Tue, 23 Oct 2018 22:51:25 +0000 (22:51 +0000)] 
* config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
for H8/S.

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

5 years ago2018-10-23 Iain Buclaw <ibuclaw@gdcproject.org>
ibuclaw [Tue, 23 Oct 2018 21:42:23 +0000 (21:42 +0000)] 
2018-10-23  Iain Buclaw  <ibuclaw@gdcproject.org>

* MAINTAINERS (Write After Approval): Remove myself.

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

5 years ago2018-10-23 Iain Buclaw <ibuclaw@gdcproject.org>
ibuclaw [Tue, 23 Oct 2018 21:04:51 +0000 (21:04 +0000)] 
2018-10-23  Iain Buclaw  <ibuclaw@gdcproject.org>

* MAINTAINERS: Add myself as D front-end and libphobos maintainer.

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

5 years ago PR go/87661
ian [Tue, 23 Oct 2018 19:02:29 +0000 (19:02 +0000)] 
PR go/87661
    runtime: remove unused armArch, hwcap and hardDiv

    After CL 140057 these are only written but never read in gccgo.

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

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

5 years ago * g++.dg/cpp2a/lambda-this3.C: Limit dg-bogus directives to c++17_down
jakub [Tue, 23 Oct 2018 16:25:09 +0000 (16:25 +0000)] 
* g++.dg/cpp2a/lambda-this3.C: Limit dg-bogus directives to c++17_down
only.  Add expected warnings and messages for c++2a.

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

5 years agoPR libstdc++/87704 fix unique_ptr(nullptr_t) constructors
redi [Tue, 23 Oct 2018 13:10:26 +0000 (13:10 +0000)] 
PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors

Using a delegating constructor to implement these constructors means
that they instantiate the destructor, which requires the element_type to
be complete. In C++11 and C++14 they were specified to be delegating,
but that was changed as part of LWG 2801 so in C++17 they don't require
a complete type (as was intended all along).

PR libstdc++/87704
* include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
not delegate to default constructor.
(unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
* testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 11:37:52 +0000 (11:37 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

* tree-vrp.c (add_assert_info): Guard dump_printf with
dump_enabled_p.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_incoming_edge):
Use value_range::ignore_equivs_equal_p.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 11:34:56 +0000 (11:34 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87105
PR tree-optimization/87608
* passes.def (pass_all_early_optimizations): Add early phi-opt
after dce.
* tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in
addition to debug stmts.
(tree_ssa_phiopt_worker): Add early_p argument, do only min/max
and abs replacement early.
* tree-cfg.c (gimple_empty_block_p): Likewise.

* g++.dg/tree-ssa/phiopt-1.C: New testcase.
g++.dg/vect/slp-pr87105.cc: Likewise.
* g++.dg/tree-ssa/pr21463.C: Scan phiopt2 because this testcase
relies on phiprop run before.
* g++.dg/tree-ssa/pr30738.C: Likewise.
* g++.dg/tree-ssa/pr57380.C: Likewise.
* gcc.dg/tree-ssa/pr84859.c: Likewise.
* gcc.dg/tree-ssa/pr45397.c: Scan phiopt2 because phiopt1 is
confused by copies in the IL left by EVRP.
* gcc.dg/tree-ssa/phi-opt-5.c: Likewise, this time confused
by predictors.
* gcc.dg/tree-ssa/phi-opt-12.c: Scan phiopt2.
* gcc.dg/pr24574.c: Likewise.
* g++.dg/tree-ssa/pr86544.C: Scan phiopt4.

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

5 years ago[arm] Update default CPUs during configure
rearnsha [Tue, 23 Oct 2018 10:19:15 +0000 (10:19 +0000)] 
[arm]  Update default CPUs during configure

There are a couple of places in config.gcc where the default CPU is
still arm6, but that was removed as a supported CPU earlier this year.
This patch fixes those entries.

The default CPU for configurations that do not explicitly set a
default is now arm7tdmi (so assumes thumb is available).  Given that
StrongArm is on the deprecated list, this is a better default than we
had previously.

For NetBSD the default is StrongArm; this is the only remaining port
that uses the old ABI and really still carries support for non-thumb
based targets.

PR target/86383
* config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU
specified to configure.
(arm*-*-*): Use ARM7TDMI as the target CPU if no default provided.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 09:36:13 +0000 (09:36 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87700
* tree-ssa-copy.c (set_copy_of_val): Fix change detection logic.

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

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

5 years ago PR target/87674
jakub [Tue, 23 Oct 2018 09:25:57 +0000 (09:25 +0000)] 
PR target/87674
* config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of
second argument from __mmask16 to __mmask8.
* config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32,
_mm_mask_packs_epi32): Likewise.
* config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps):
Likewise.
(_mm512_mask_prefetch_i64scatter_pd): Likewise.  Formatting fix.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 09:17:29 +0000 (09:17 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

* tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 08:58:39 +0000 (08:58 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86144
* tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi
over simd attribute.

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

5 years ago2018-10-23 Richard Biener <rguenther@suse.de>
rguenth [Tue, 23 Oct 2018 08:51:20 +0000 (08:51 +0000)] 
2018-10-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87693
* tree-ssa-threadedge.c (thread_around_empty_blocks): Handle
the case we do not find the taken edge.

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

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

5 years ago2018-10-23 Paul Thomas <pault@gcc.gnu.org>
pault [Tue, 23 Oct 2018 08:27:14 +0000 (08:27 +0000)] 
2018-10-23  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/85603
* frontend-passes.c (get_len_call): New function to generate a
call to intrinsic LEN.
(create_var): Use this to make length expressions for variable
rhs string lengths.
Clean up some white space issues.

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

PR fortran/85603
* gfortran.dg/deferred_character_23.f90 : Check reallocation is
occurring as it should and a regression caused by version 1 of
this patch.

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

5 years ago compiler: export indexed type data, read unexported types lazily
ian [Tue, 23 Oct 2018 02:46:41 +0000 (02:46 +0000)] 
compiler: export indexed type data, read unexported types lazily

    Introduce a new "types" command to the export data to record the
    number of types and the size of their export data. It is immediately
    followed by new "type" commands that can be indexed. Parse all the
    exported types immediately so that we register them, but parse other
    type data only as needed.

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

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

5 years agoDaily bump.
gccadmin [Tue, 23 Oct 2018 00:17:04 +0000 (00:17 +0000)] 
Daily bump.

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

5 years ago * symtab.c (symtab_node::increase_alignment): Correct max
pkoning [Mon, 22 Oct 2018 23:51:05 +0000 (23:51 +0000)] 
* symtab.c (symtab_node::increase_alignment): Correct max
alignment check.

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

5 years ago2018-10-22 Yury Gribov <tetra2005@gmail.com>
ygribov [Mon, 22 Oct 2018 20:26:32 +0000 (20:26 +0000)] 
2018-10-22  Yury Gribov  <tetra2005@gmail.com>

gcc/
PR tree-optimization/87633
* match.pd: Do not generate unordered integer comparisons.

gcc/testsuite/
PR tree-optimization/87633
* g++.dg/pr87633.C: New test.

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

5 years agocombine: Do not combine moves from hard registers
segher [Mon, 22 Oct 2018 20:23:39 +0000 (20:23 +0000)] 
combine: Do not combine moves from hard registers

On most targets every function starts with moves from the parameter
passing (hard) registers into pseudos.  Similarly, after every call
there is a move from the return register into a pseudo.  These moves
usually combine with later instructions (leaving pretty much the same
instruction, just with a hard reg instead of a pseudo).

This isn't a good idea.  Register allocation can get rid of unnecessary
moves just fine, and moving the parameter passing registers into many
later instructions tends to prevent good register allocation.  This
patch disallows combining moves from a hard (non-fixed) register.

This also avoid the problem mentioned in PR87600 #c3 (combining hard
registers into inline assembler is problematic).

Because the register move can often be combined with other instructions
*itself*, for example for setting some condition code, this patch adds
extra copies via new pseudos after every copy-from-hard-reg.

On some targets this reduces average code size.  On others it increases
it a bit, 0.1% or 0.2% or so.  (I tested this on all *-linux targets).

PR rtl-optimization/87600
* combine.c: Add include of expr.h.
(cant_combine_insn_p): Do not combine moves from any hard non-fixed
register to a pseudo.
(make_more_copies): New function, add a copy to a new pseudo after
the moves from hard registers into pseudos.
(rest_of_handle_combine): Declare rebuild_jump_labels_after_combine
later.  Call make_more_copies.

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

5 years ago PR testsuite/87694
mpolacek [Mon, 22 Oct 2018 20:01:56 +0000 (20:01 +0000)] 
PR testsuite/87694
* g++.dg/concepts/memfun-err.C: Make it a compile test.

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

5 years agoDon't double-count early-clobber matches.
ams [Mon, 22 Oct 2018 14:23:37 +0000 (14:23 +0000)] 
Don't double-count early-clobber matches.

Given a pattern with a number of operands:

(match_operand 0 "" "=&v")
(match_operand 1 "" " v0")
(match_operand 2 "" " v0")
(match_operand 3 "" " v0")

GCC will currently increment "reject" once, for operand 0, and then decrement
it once for each of the other operands, ending with reject == -2 and an
assertion failure.  If there's a conflict then it might try to decrement reject
yet again.

Incidentally, what these patterns are trying to achieve is an allocation in
which operand 0 may match one of the other operands, but may not partially
overlap any of them.  Ideally there'd be a better way to do this.

In any case, it will affect any pattern in which multiple operands may (or
must) match an early-clobber operand.

The patch only allows a reject-- when one has not already occurred, for that
operand.

2018-10-22  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* lra-constraints.c (process_alt_operands): New local array,
matching_early_clobber.  Check matching_early_clobber before
decrementing reject, and set matching_early_clobber after.

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

5 years agors6000: Handle print_operand_address for unexpected RTL (PR87598)
segher [Mon, 22 Oct 2018 14:03:22 +0000 (14:03 +0000)] 
rs6000: Handle print_operand_address for unexpected RTL (PR87598)

As the PR shows, the user can force this to be called on at least some
RTL that is not a valid address.  Most targets treat this as if the
user knows best; let's do the same.

PR target/87598
* config/rs6000/rs6000.c (print_operand_address): For unexpected RTL
call output_addr_const and hope for the best.

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

5 years ago2018-10-22 Richard Biener <rguenther@suse.de>
rguenth [Mon, 22 Oct 2018 13:57:47 +0000 (13:57 +0000)] 
2018-10-22  Richard Biener  <rguenther@suse.de>

* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_incoming_edge): Be
smarter about what ranges to use.
* tree-vrp.c (add_assert_info): Dump here.
(register_edge_assert_for_2): Instead of here at multiple but
not all places.

* gcc.dg/tree-ssa/evrp12.c: New testcase.
* gcc.dg/predict-6.c: Adjust.
* gcc.dg/tree-ssa/vrp33.c: Disable EVRP.
* gcc.dg/tree-ssa/vrp02.c: Likewise.
* gcc.dg/tree-ssa/cunroll-9.c: Likewise.

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

5 years ago2018-10-22 Steven Bosscher <steven@gcc.gnu.org>
rguenth [Mon, 22 Oct 2018 13:54:23 +0000 (13:54 +0000)] 
2018-10-22  Steven Bosscher <steven@gcc.gnu.org>
Richard Biener  <rguenther@suse.de>

* bitmap.h: Update data structure documentation, including a
description of bitmap views as either linked-lists or splay trees.
(struct bitmap_element_def): Update comments for splay tree bitmaps.
(struct bitmap_head_def): Likewise.
(bitmap_list_view, bitmap_tree_view): New prototypes.
(bitmap_initialize_stat): Initialize a bitmap_head's indx and
tree_form fields.
(bmp_iter_set_init): Assert the iterated bitmaps are in list form.
(bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
* bitmap.c (bitmap_elem_to_freelist): Unregister overhead of a
released bitmap element here.
(bitmap_element_free): Remove.
(bitmap_elt_clear_from): Work on splay tree bitmaps.
(bitmap_list_link_element): Renamed from bitmap_element_link.  Move
this function similar ones such that linked-list bitmap implementation
functions are grouped.
(bitmap_list_unlink_element): Renamed from bitmap_element_unlink,
and moved for grouping.
(bitmap_list_insert_element_after): Renamed from
bitmap_elt_insert_after, and moved for grouping.
(bitmap_list_find_element): New function spliced from bitmap_find_bit.
(bitmap_tree_link_left, bitmap_tree_link_right,
bitmap_tree_rotate_left, bitmap_tree_rotate_right, bitmap_tree_splay,
bitmap_tree_link_element, bitmap_tree_unlink_element,
bitmap_tree_find_element): New functions for splay-tree bitmap
implementation.
(bitmap_element_link, bitmap_element_unlink, bitmap_elt_insert_after):
Renamed and moved, see above entries.
(bitmap_tree_listify_from): New function to convert part of a splay
tree bitmap to a linked-list bitmap.
(bitmap_list_view): Convert a splay tree bitmap to linked-list form.
(bitmap_tree_view): Convert a linked-list bitmap to splay tree form.
(bitmap_find_bit): Remove.
(bitmap_clear, bitmap_clear_bit, bitmap_set_bit,
bitmap_single_bit_set_p, bitmap_first_set_bit, bitmap_last_set_bit):
Handle splay tree bitmaps.
(bitmap_copy, bitmap_count_bits, bitmap_and, bitmap_and_into,
bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior, bitmap_ior_into,
bitmap_xor, bitmap_xor_into, bitmap_equal_p, bitmap_intersect_p,
bitmap_intersect_compl_p, bitmap_ior_and_compl,
bitmap_ior_and_compl_into, bitmap_set_range, bitmap_clear_range,
bitmap_hash): Reject trying to act on splay tree bitmaps.  Make
corresponding changes to use linked-list specific bitmap_element
manipulation functions as applicable for efficiency.
(bitmap_tree_to_vec): New function.
(debug_bitmap_elt_file): New function split out from ...
(debug_bitmap_file): ... here.  Handle splay tree bitmaps.
(bitmap_print): Likewise.

PR tree-optimization/63155
* tree-ssa-propagate.c (ssa_prop_init): Use tree-view for the
SSA edge worklists.
* tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies
in tree-view.

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

5 years agoIndex: gcc/config/rs6000/emmintrin.h
wschmidt [Mon, 22 Oct 2018 13:38:32 +0000 (13:38 +0000)] 
Index: gcc/config/rs6000/emmintrin.h
===================================================================
--- gcc/config/rs6000/emmintrin.h (revision 265318)
+++ gcc/config/rs6000/emmintrin.h (working copy)
@@ -85,7 +85,7 @@ typedef double __m128d __attribute__ ((__vector_si
 typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
 typedef double __m128d_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));

-/* Define two value permute mask */
+/* Define two value permute mask.  */
 #define _MM_SHUFFLE2(x,y) (((x) << 1) | (y))

 /* Create a vector with element 0 as F and the rest zero.  */
@@ -201,7 +201,7 @@ _mm_store_pd (double *__P, __m128d __A)
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_storeu_pd (double *__P, __m128d __A)
 {
-  *(__m128d *)__P = __A;
+  *(__m128d_u *)__P = __A;
 }

 /* Stores the lower DPFP value.  */
@@ -2175,7 +2175,7 @@ _mm_maskmoveu_si128 (__m128i __A, __m128i __B, cha
 {
   __v2du hibit = { 0x7f7f7f7f7f7f7f7fUL, 0x7f7f7f7f7f7f7f7fUL};
   __v16qu mask, tmp;
-  __m128i *p = (__m128i*)__C;
+  __m128i_u *p = (__m128i_u*)__C;

   tmp = (__v16qu)_mm_loadu_si128(p);
   mask = (__v16qu)vec_cmpgt ((__v16qu)__B, (__v16qu)hibit);
Index: gcc/config/rs6000/xmmintrin.h
===================================================================
--- gcc/config/rs6000/xmmintrin.h (revision 265318)
+++ gcc/config/rs6000/xmmintrin.h (working copy)
@@ -85,6 +85,10 @@
    vector types, and their scalar components.  */
 typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));

+/* Unaligned version of the same type.  */
+typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__,
+        __aligned__ (1)));
+
 /* Internal data types for implementing the intrinsics.  */
 typedef float __v4sf __attribute__ ((__vector_size__ (16)));

@@ -172,7 +176,7 @@ _mm_store_ps (float *__P, __m128 __A)
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_storeu_ps (float *__P, __m128 __A)
 {
-  *(__m128 *)__P = __A;
+  *(__m128_u *)__P = __A;
 }

 /* Store four SPFP values in reverse order.  The address must be aligned.  */

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

5 years agoRevert r263947.
marxin [Mon, 22 Oct 2018 13:09:33 +0000 (13:09 +0000)] 
Revert r263947.

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

  PR tree-optimization/87686
Revert
2018-08-29  Martin Liska  <mliska@suse.cz>

* tree-switch-conversion.c (switch_conversion::expand):
Strenghten assumption about gswitch statements.
2018-10-22  Martin Liska  <mliska@suse.cz>

  PR tree-optimization/87686
* g++.dg/tree-ssa/pr87686.C: New test.

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

5 years agoIterate -std=c++-* in i386.exp.
marxin [Mon, 22 Oct 2018 12:25:39 +0000 (12:25 +0000)] 
Iterate -std=c++-* in i386.exp.

2018-10-22  Jakub Jelinek  <jakub@redhat.com>

* g++.target/i386/i386.exp: Use g++-dg-runtest to iterate
properly -std= options.

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

5 years agoSimplify comparison of attrs in IPA ICF.
marxin [Mon, 22 Oct 2018 12:04:16 +0000 (12:04 +0000)] 
Simplify comparison of attrs in IPA ICF.

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

* ipa-icf.c (sem_item::compare_attributes): Remove.
(sem_item::compare_referenced_symbol_properties): Use
attribute_list_equal instead.
(sem_function::equals_wpa): Likewise.
* ipa-icf.h: Remove compare_attributes.

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

5 years ago2018-10-22 Richard Biener <rguenther@suse.de>
rguenth [Mon, 22 Oct 2018 11:33:48 +0000 (11:33 +0000)] 
2018-10-22  Richard Biener  <rguenther@suse.de>

* gcc.dg/graphite/scop-4.c: Avoid out-of-bound access.

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

5 years ago * gcc-interface/utils.c (unchecked_convert): Use local variables for
ebotcazou [Mon, 22 Oct 2018 11:03:17 +0000 (11:03 +0000)] 
* gcc-interface/utils.c (unchecked_convert): Use local variables for
the biased and reverse SSO attributes of both types.
Further extend the processing of integral types in the presence of
reverse SSO to all scalar types.

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

5 years ago * gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Inspection_Point>: Use
ebotcazou [Mon, 22 Oct 2018 10:43:20 +0000 (10:43 +0000)] 
* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Inspection_Point>: Use
a simple memory constraint in all cases.

* gcc-interface/lang-specs.h: Bump copyright year.

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

5 years ago * gnat.dg/warn19.ad[sb]: New test.
ebotcazou [Mon, 22 Oct 2018 10:29:57 +0000 (10:29 +0000)] 
* gnat.dg/warn19.ad[sb]: New test.
* gnat.dg/warn19_pkg.ads: New helper.

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

5 years ago2018-10-22 Richard Biener <rguenther@suse.de>
rguenth [Mon, 22 Oct 2018 10:25:28 +0000 (10:25 +0000)] 
2018-10-22  Richard Biener  <rguenther@suse.de>

PR middle-end/87682
* mem-stats.h (mem_usage::operator==): Fix pasto.

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

5 years ago2018-10-22 Richard Biener <rguenther@suse.de>
rguenth [Mon, 22 Oct 2018 10:22:48 +0000 (10:22 +0000)] 
2018-10-22  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87640
* tree-vrp.c (set_value_range_with_overflow): Decompose
incomplete result.
(extract_range_from_binary_expr_1): Adjust.

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

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

5 years agoS/390: Add the forgotten test for r265371
iii [Mon, 22 Oct 2018 08:39:18 +0000 (08:39 +0000)] 
S/390: Add the forgotten test for r265371

The test is part of the originally posted change
(https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01173.html), but was
forgotten during svn commit.

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

5 years agoAdd a fun parameter to three stmt_could_throw... functions
jamborm [Mon, 22 Oct 2018 08:27:50 +0000 (08:27 +0000)] 
Add a fun parameter to three stmt_could_throw... functions

This long patch only does one simple thing, adds an explicit function
parameter to predicates stmt_could_throw_p, stmt_can_throw_external
and stmt_can_throw_internal.

My motivation was ability to use stmt_can_throw_external in IPA
analysis phase without the need to push cfun.  As I have discovered,
we were already doing that in cgraph.c, which this patch avoids as
well.  In the process, I had to add a struct function parameter to
stmt_could_throw_p and decided to also change the interface of
stmt_can_throw_internal just for the sake of some minimal consistency.

In the process I have discovered that calling method
cgraph_node::create_version_clone_with_body (used by ipa-split,
ipa-sra, OMP simd and multiple_target) leads to calls of
stmt_can_throw_external with NULL cfun.  I have worked around this by
making stmt_can_throw_external and stmt_could_throw_p gracefully
accept NULL and just be pessimistic in that case.  The problem with
fixing this in a better way is that struct function for the clone is
created after cloning edges where we attempt to push the yet not
existing cfun, and moving it before would require a bit of surgery in
tree-inline.c.  A slightly hackish but simpler fix might be to
explicitely pass the "old" function to symbol_table::create_edge
because it should be just as good at that moment.  In any event, that
is a topic for another patch.

I believe that currently we incorrectly use cfun in
maybe_clean_eh_stmt_fn and maybe_duplicate_eh_stmt_fn, both in
tree-eh.c, and so I have fixed these cases too.  The bulk of other
changes is just mechanical adding of cfun to all users.

Bootstrapped and tested on x86_64-linux (also with extra NULLing and
restoring cfun to double check it is not used in a place I missed), OK
for trunk?

Thanks,

Martin

2018-10-22  Martin Jambor  <mjambor@suse.cz>

* tree-eh.h (stmt_could_throw_p): Add function parameter.
(stmt_can_throw_external): Likewise.
(stmt_can_throw_internal): Likewise.
* tree-eh.c (lower_eh_constructs_2): Pass cfun to stmt_could_throw_p.
(lower_eh_constructs_2): Likewise.
(stmt_could_throw_p): Add fun parameter, use it instead of cfun.
(stmt_can_throw_external): Likewise.
(stmt_can_throw_internal): Likewise.
(maybe_clean_eh_stmt_fn): Pass cfun to stmt_could_throw_p.
(maybe_clean_or_replace_eh_stmt): Pass cfun to stmt_could_throw_p.
(maybe_duplicate_eh_stmt_fn): Pass new_fun to stmt_could_throw_p.
(maybe_duplicate_eh_stmt): Pass cfun to stmt_could_throw_p.
(pass_lower_eh_dispatch::execute): Pass cfun to
stmt_can_throw_external.
(cleanup_empty_eh): Likewise.
(verify_eh_edges): Pass cfun to stmt_could_throw_p.
* cgraph.c (cgraph_edge::set_call_stmt): Pass a function to
stmt_can_throw_external instead of pushing it to cfun.
(symbol_table::create_edge): Likewise.
* gimple-fold.c (fold_builtin_atomic_compare_exchange): Pass cfun to
stmt_can_throw_internal.
* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Pass cfun
to stmt_could_throw_p.
* gimple-ssa-store-merging.c (handled_load): Pass cfun to
stmt_can_throw_internal.
(pass_store_merging::execute): Likewise.
* gimple-ssa-strength-reduction.c
(find_candidates_dom_walker::before_dom_children): Pass cfun to
stmt_could_throw_p.
* gimplify-me.c (gimple_regimplify_operands): Pass cfun to
stmt_can_throw_internal.
* ipa-pure-const.c (check_call): Pass cfun to stmt_could_throw_p and
to stmt_can_throw_external.
(check_stmt): Pass cfun to stmt_could_throw_p.
(check_stmt): Pass cfun to stmt_can_throw_external.
(pass_nothrow::execute): Likewise.
* trans-mem.c (expand_call_tm): Pass cfun to stmt_can_throw_internal.
* tree-cfg.c (is_ctrl_altering_stmt): Pass cfun to
stmt_can_throw_internal.
(verify_gimple_in_cfg): Pass cfun to stmt_could_throw_p.
(stmt_can_terminate_bb_p): Pass cfun to stmt_can_throw_external.
(gimple_purge_dead_eh_edges): Pass cfun to stmt_can_throw_internal.
* tree-complex.c (expand_complex_libcall): Pass cfun to
stmt_could_throw_p and to stmt_can_throw_internal.
(expand_complex_multiplication): Pass cfun to stmt_can_throw_internal.
* tree-inline.c (copy_edges_for_bb): Likewise.
(maybe_move_debug_stmts_to_successors): Likewise.
* tree-outof-ssa.c (ssa_is_replaceable_p): Pass cfun to
stmt_could_throw_p.
* tree-parloops.c (oacc_entry_exit_ok_1): Likewise.
* tree-sra.c (scan_function): Pass cfun to stmt_can_throw_external.
* tree-ssa-alias.c (stmt_kills_ref_p): Pass cfun to
stmt_can_throw_internal.
* tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Pass cfun to
stmt_could_throw_p.
(mark_aliased_reaching_defs_necessary_1): Pass cfun to
stmt_can_throw_internal.
* tree-ssa-forwprop.c (pass_forwprop::execute): Likewise.
* tree-ssa-loop-im.c (movement_possibility): Pass cfun to
stmt_could_throw_p.
* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Likewise.
(add_autoinc_candidates): Pass cfun to stmt_can_throw_internal.
* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
(convert_mult_to_fma_1): Likewise.
(convert_to_divmod): Likewise.
* tree-ssa-phiprop.c (propagate_with_phi): Likewise.
* tree-ssa-pre.c (compute_avail): Pass cfun to stmt_could_throw_p.
* tree-ssa-propagate.c
(substitute_and_fold_dom_walker::before_dom_children): Likewise.
* tree-ssa-reassoc.c (suitable_cond_bb): Likewise.
(maybe_optimize_range_tests): Likewise.
(linearize_expr_tree): Likewise.
(reassociate_bb): Likewise.
* tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
* tree-ssa-scopedtables.c (hashable_expr_equal_p): Likewise.
* tree-ssa-strlen.c (adjust_last_stmt): Likewise.
(handle_char_store): Likewise.
* tree-vect-data-refs.c (vect_find_stmt_data_reference): Pass cfun to
stmt_can_throw_internal.
* tree-vect-patterns.c (check_bool_pattern): Pass cfun to
stmt_could_throw_p.
* tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
(vectorizable_call): Pass cfun to stmt_can_throw_internal.
(vectorizable_simd_clone_call): Likewise.
* value-prof.c (gimple_ic): Pass cfun to stmt_could_throw_p.
(gimple_stringop_fixed_value): Likewise.

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

5 years agoS/390: Make "b" constraint match literal pool references
iii [Mon, 22 Oct 2018 08:21:03 +0000 (08:21 +0000)] 
S/390: Make "b" constraint match literal pool references

Improves the code generation by getting rid of redundant LAs, as seen
in the following example:

- la %r1,0(%r13)
- lg %r4,0(%r1)
+ lg %r4,0(%r13)

Also allows to proceed with the merge of movdi_64 and movdi_larl.
Currently LRA decides to spill literal pool references back to the
literal pool, because it preliminarily chooses alternatives with
CT_MEMORY constraints without calling
satisfies_memory_constraint_p (). Later on it notices that the
constraint is wrong and fixes it by spilling.  The constraint in this
case is "b", and the operand is a literal pool reference.  There is
no reason to reject them.  The current behavior was introduced,
apparently unintentionally, by
https://gcc.gnu.org/ml/gcc-patches/2010-09/msg00812.html

The patch affects a little bit more than mentioned in the subject,
because it changes s390_loadrelative_operand_p (), which is called not
only for checking the "b" constraint.  However, the only caller for
which it should really not accept literal pool references is
s390_check_qrst_address (), so it was changed to explicitly do so.

gcc/ChangeLog:

2018-10-22  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/s390.c (s390_loadrelative_operand_p): Accept
literal pool references.
(s390_check_qrst_address): Adapt to the new behavior of
s390_loadrelative_operand_p ().

gcc/testsuite/ChangeLog:

2018-10-22  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/litpool-int.c: New test.

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

5 years agoi386: Enable AVX512 memory broadcast for INT andnot
hjl [Mon, 22 Oct 2018 07:35:48 +0000 (07:35 +0000)] 
i386: Enable AVX512 memory broadcast for INT andnot

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for INT andnot operations.

gcc/

PR target/72782
* config/i386/sse.md (*andnot<mode>3_bcst): New.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-andn-di-zmm-1.c: New test.
* gcc.target/i386/avx512f-andn-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-andn-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-andn-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-andn-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-andn-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512vl-andn-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-andn-si-ymm-1.c: Likewise.

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

5 years agoi386: Enable AVX512 memory broadcast for INT logic
hjl [Mon, 22 Oct 2018 07:29:03 +0000 (07:29 +0000)] 
i386: Enable AVX512 memory broadcast for INT logic

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for INT logic operations.

gcc/

PR target/72782
* config/i386/sse.md (*<code><mode>3_bcst): New.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-and-di-zmm-1.c: New test.
* gcc.target/i386/avx512f-and-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-and-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-and-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-and-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-and-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-and-si-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-or-di-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-or-si-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-xor-di-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-xor-si-zmm-6.c: Likewise.
* gcc.target/i386/avx512vl-and-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-and-si-ymm-1.c: Likewise.
* gcc.target/i386/avx512vl-or-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-or-si-ymm-1.c: Likewise.
* gcc.target/i386/avx512vl-xor-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-xor-si-ymm-1.c: Likewise.

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

5 years agoi386: Enable AVX512 memory broadcast for INT add
hjl [Mon, 22 Oct 2018 07:25:51 +0000 (07:25 +0000)] 
i386: Enable AVX512 memory broadcast for INT add

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for INT add operations.

gcc/

PR target/72782
* config/i386/sse.md (avx512bcst): Updated for V4SI, V2DI, V8SI,
V4DI, V16SI and V8DI.
(*sub<mode>3<mask_name>_bcst): New.
(*add<mode>3<mask_name>_bcst): Likewise.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-add-di-zmm-1.c: New test.
* gcc.target/i386/avx512f-add-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-add-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-add-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-add-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-add-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-add-si-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-sub-di-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-sub-si-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-sub-si-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-sub-si-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-sub-si-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-sub-si-zmm-5.c: Likewise.
* gcc.target/i386/avx512vl-add-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-add-si-ymm-1.c: Likewise.
* gcc.target/i386/avx512vl-sub-si-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-sub-si-ymm-1.c: Likewise.

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

5 years agoDaily bump.
gccadmin [Mon, 22 Oct 2018 00:17:02 +0000 (00:17 +0000)] 
Daily bump.

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

5 years ago2018-10-21 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Sun, 21 Oct 2018 23:30:51 +0000 (23:30 +0000)] 
2018-10-21  Bill Schmidt  <wschmidt@linux.ibm.com>
    Jinsong Ji  <jji@us.ibm.com>

* config/rs6000/emmintrin.h (_mm_movemask_pd): Replace __vector
__m64 with __vector unsigned long long for compatibility.
(_mm_movemask_epi8): Likewise.
* config/rs6000/xmmintrin.h (_mm_cvtps_pi32): Likewise.
(_mm_cvttps_pi32): Likewise.
(_mm_cvtpi32_ps): Likewise.
(_mm_cvtps_pi16): Likewise.
(_mm_loadh_pi): Likewise.
(_mm_storeh_pi): Likewise.
(_mm_movehl_ps): Likewise.
(_mm_movelh_ps): Likewise.
(_mm_loadl_pi): Likewise.
(_mm_storel_pi): Likewise.
(_mm_movemask_ps): Likewise.
(_mm_shuffle_pi16): Likewise.

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

5 years agoMove testsuite ChangeLog entries to testsuite/ChangeLog
hjl [Sun, 21 Oct 2018 20:38:27 +0000 (20:38 +0000)] 
Move testsuite ChangeLog entries to testsuite/ChangeLog

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

5 years agoi386: Update AVX512 FMSUB/FNMADD/FNMSUB tests
hjl [Sun, 21 Oct 2018 20:30:06 +0000 (20:30 +0000)] 
i386: Update AVX512 FMSUB/FNMADD/FNMSUB tests

Update AVX512 tests to test the newly added FMSUB, FNMADD and FNMSUB
builtin functions.

PR target/72782
* gcc.target/i386/avx-1.c (__builtin_ia32_vfmsubpd512_mask): New.
(__builtin_ia32_vfmsubpd512_maskz): Likewise.
(__builtin_ia32_vfmsubps512_mask): Likewise.
(__builtin_ia32_vfmsubps512_maskz): Likewise.
(__builtin_ia32_vfnmaddpd512_mask3): Likewise.
(__builtin_ia32_vfnmaddpd512_maskz): Likewise.
(__builtin_ia32_vfnmaddps512_mask3): Likewise.
(__builtin_ia32_vfnmaddps512_maskz): Likewise.
(__builtin_ia32_vfnmsubpd512_maskz): Likewise.
(__builtin_ia32_vfnmsubps512_maskz): Likewise.
* testsuite/gcc.target/i386/sse-13.c
(__builtin_ia32_vfmsubpd512_mask): Likewise.
(__builtin_ia32_vfmsubpd512_maskz): Likewise.
(__builtin_ia32_vfmsubps512_mask): Likewise.
(__builtin_ia32_vfmsubps512_maskz): Likewise.
(__builtin_ia32_vfnmaddpd512_mask3): Likewise.
(__builtin_ia32_vfnmaddpd512_maskz): Likewise.
(__builtin_ia32_vfnmaddps512_mask3): Likewise.
(__builtin_ia32_vfnmaddps512_maskz): Likewise.
(__builtin_ia32_vfnmsubpd512_maskz): Likewise.
(__builtin_ia32_vfnmsubps512_maskz): Likewise.
* testsuite/gcc.target/i386/sse-23.c
(__builtin_ia32_vfmsubpd512_mask): Likewise.
(__builtin_ia32_vfmsubpd512_maskz): Likewise.
(__builtin_ia32_vfmsubps512_mask): Likewise.
(__builtin_ia32_vfmsubps512_maskz): Likewise.
(__builtin_ia32_vfnmaddpd512_mask3): Likewise.
(__builtin_ia32_vfnmaddpd512_maskz): Likewise.
(__builtin_ia32_vfnmaddps512_mask3): Likewise.
(__builtin_ia32_vfnmaddps512_maskz): Likewise.
(__builtin_ia32_vfnmsubpd512_maskz): Likewise.
(__builtin_ia32_vfnmsubps512_maskz): Likewise.

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

5 years agoi386: Enable AVX512 memory broadcast for FNMSUB
hjl [Sun, 21 Oct 2018 20:28:56 +0000 (20:28 +0000)] 
i386: Enable AVX512 memory broadcast for FNMSUB

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for FNMSUB operations.  In order to
support AVX512 memory broadcast for FNMSUB, FNMSUB builtin functions are
also added, instead of passing the negated value to FMA builtin functions.

gcc/

PR target/72782
* config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use
__builtin_ia32_vfnmsubpd512_mask.
(_mm512_mask_fnmsub_round_pd): Likewise.
(_mm512_fnmsub_pd): Likewise.
(_mm512_mask_fnmsub_pd): Likewise.
(_mm512_maskz_fnmsub_round_pd): Use
__builtin_ia32_vfnmsubpd512_maskz.
(_mm512_maskz_fnmsub_pd): Likewise.
(_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask.
(_mm512_mask_fnmsub_round_ps): Likewise.
(_mm512_fnmsub_ps): Likewise.
(_mm512_mask_fnmsub_ps): Likewise.
(_mm512_maskz_fnmsub_round_ps): Use
__builtin_ia32_vfnmsubps512_maskz.
(_mm512_maskz_fnmsub_ps): Likewise.
* config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use
__builtin_ia32_vfnmsubpd256_mask.
(_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz.
(_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
(_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz.
(_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
(_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
(_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz.
(_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask.
(_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz.
* config/i386/fmaintrin.h (_mm_fnmsub_pd): Use
__builtin_ia32_vfnmsubpd.
(_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256.
(_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps.
(_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256.
(_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3.
(_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3.
* config/i386/i386-builtin.def: Add
__builtin_ia32_vfnmsubpd256_mask,
__builtin_ia32_vfnmsubpd256_maskz,
__builtin_ia32_vfnmsubpd128_mask,
__builtin_ia32_vfnmsubpd128_maskz,
__builtin_ia32_vfnmsubps256_mask,
__builtin_ia32_vfnmsubps256_maskz,
__builtin_ia32_vfnmsubps128_mask,
__builtin_ia32_vfnmsubps128_maskz,
__builtin_ia32_vfnmsubpd512_mask,
__builtin_ia32_vfnmsubpd512_maskz,
__builtin_ia32_vfnmsubps512_mask,
__builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3,
__builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps,
__builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and.
__builtin_ia32_vfnmsubpd256.
* config/i386/sse.md (fma4i_fnmsub_<mode>): New.
(<avx512>_fnmsub_<mode>_maskz<round_expand_name>): Likewise.
(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1):
Likewise.
(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_2):
Likewise.
(*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_3):
Likewise.
(fmai_vmfnmsub_<mode><round_name>): Likewise.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-fnmsub-df-zmm-1.c: New test.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-7.c: Likewise.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-8.c: Likewise.
* gcc.target/i386/avx512vl-fnmsub-sf-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-fnmsub-sf-ymm-1.c: Likewise.

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

5 years agoi386: Enable AVX512 memory broadcast for FNMADD
hjl [Sun, 21 Oct 2018 20:27:09 +0000 (20:27 +0000)] 
i386: Enable AVX512 memory broadcast for FNMADD

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for FNMADD operations.  In order to
support AVX512 memory broadcast for FNMADD, FNMADD builtin functions are
also added, instead of passing the negated value to FMA builtin functions.

gcc/

PR target/72782
* config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use
__builtin_ia32_vfnmaddpd512_mask.
(_mm512_mask_fnmadd_round_pd): Likewise.
(_mm512_fnmadd_pd): Likewise.
(_mm512_mask_fnmadd_pd): Likewise.
(_mm512_maskz_fnmadd_round_pd): Use
__builtin_ia32_vfnmaddpd512_maskz.
(_mm512_maskz_fnmadd_pd): Likewise.
(_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask.
(_mm512_mask_fnmadd_round_ps): Likewise.
(_mm512_fnmadd_ps): Likewise.
(_mm512_mask_fnmadd_ps): Likewise.
(_mm512_maskz_fnmadd_round_ps): Use
__builtin_ia32_vfnmaddps512_maskz.
(_mm512_maskz_fnmadd_ps): Likewise.
* config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use
__builtin_ia32_vfnmaddpd256_mask.
(_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz.
(_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask
(_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz.
(_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
(_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
(_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz.
(_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask.
(_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz.
* config/i386/fmaintrin.h (_mm_fnmadd_pd): Use
__builtin_ia32_vfnmaddpd.
(_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256.
(_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps.
(_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256.
(_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3.
(_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3.
* config/i386/i386-builtin.def: Add
__builtin_ia32_vfnmaddpd256_mask,
__builtin_ia32_vfnmaddpd256_maskz,
__builtin_ia32_vfnmaddpd128_mask,
__builtin_ia32_vfnmaddpd128_maskz,
__builtin_ia32_vfnmaddps256_mask,
__builtin_ia32_vfnmaddps256_maskz,
__builtin_ia32_vfnmaddps128_mask,
__builtin_ia32_vfnmaddps128_maskz,
__builtin_ia32_vfnmaddpd512_mask,
__builtin_ia32_vfnmaddpd512_maskz,
__builtin_ia32_vfnmaddps512_mask,
__builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3,
__builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps,
__builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and.
__builtin_ia32_vfnmaddpd256.
* config/i386/sse.md (fma4i_fnmadd_<mode>): New.
(<avx512>_fnmadd_<mode>_maskz<round_expand_name>): Likewise.
(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1):
Likewise.
(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_2):
Likewise.
(*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_3):
Likewise.
(fmai_vmfnmadd_<mode><round_name>): Likewise.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-fnmadd-df-zmm-1.c: New test.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-7.c: Likewise.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-8.c: Likewise.
* gcc.target/i386/avx512vl-fnmadd-sf-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-fnmadd-sf-ymm-1.c: Likewise.

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

5 years agoEnable AVX512 memory broadcast for FMSUB
hjl [Sun, 21 Oct 2018 20:24:50 +0000 (20:24 +0000)] 
Enable AVX512 memory broadcast for FMSUB

Many AVX512 vector operations can broadcast from a scalar memory source.
This patch enables memory broadcast for FMSUB operations.  In order to
support AVX512 memory broadcast for FMSUB, FMSUB builtin functions are
also added, instead of passing the negated value to FMA builtin functions.

gcc/

PR target/72782
* config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use
__builtin_ia32_vfmsubpd512_mask.
(_mm512_mask_fmsub_round_pd): Likewise.
(_mm512_fmsub_pd): Likewise.
(_mm512_mask_fmsub_pd): Likewise.
(_mm512_maskz_fmsub_round_pd): Use
__builtin_ia32_vfmsubpd512_maskz.
(_mm512_maskz_fmsub_pd): Likewise.
(_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask.
(_mm512_mask_fmsub_round_ps): Likewise.
(_mm512_fmsub_ps): Likewise.
(_mm512_mask_fmsub_ps): Likewise.
(_mm512_maskz_fmsub_round_ps): Use
__builtin_ia32_vfmsubps512_maskz.
(_mm512_maskz_fmsub_ps): Likewise.
* config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use
__builtin_ia32_vfmsubpd256_mask.
(_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz.
(_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
(_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz.
(_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
(_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
(_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz.
(_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask.
(_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz.
* config/i386/fmaintrin.h (_mm_fmsub_pd): Use
__builtin_ia32_vfmsubpd.
(_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256.
(_mm_fmsub_ps): Use __builtin_ia32_vfmsubps.
(_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256.
(_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3.
(_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3.
* config/i386/i386-builtin.def: Add
__builtin_ia32_vfmsubpd256_mask,
__builtin_ia32_vfmsubpd256_maskz,
__builtin_ia32_vfmsubpd128_mask,
__builtin_ia32_vfmsubpd128_maskz,
__builtin_ia32_vfmsubps256_mask,
__builtin_ia32_vfmsubps256_maskz,
__builtin_ia32_vfmsubps128_mask,
__builtin_ia32_vfmsubps128_maskz,
__builtin_ia32_vfmsubpd512_mask,
__builtin_ia32_vfmsubpd512_maskz,
__builtin_ia32_vfmsubps512_mask,
__builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3,
__builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps,
__builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and.
__builtin_ia32_vfmsubpd256.
* config/i386/sse.md (fma4i_fmsub_<mode>): New.
(<avx512>_fmsub_<mode>_maskz<round_expand_name>): Likewise.
(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1):
Likewise.
(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_2):
Likewise.
(*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_3):
Likewise.
(fmai_vmfmsub_<mode><round_name>): Likewise.

gcc/testsuite/

PR target/72782
* gcc.target/i386/avx512f-fmsub-df-zmm-1.c: New test.
* gcc.target/i386/avx512f-fmsub-sf-zmm-1.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-2.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-3.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-4.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-5.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-6.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-7.c: Likewise.
* gcc.target/i386/avx512f-fmsub-sf-zmm-8.c: Likewise.
* gcc.target/i386/avx512vl-fmsub-sf-xmm-1.c: Likewise.
* gcc.target/i386/avx512vl-fmsub-sf-ymm-1.c: Likewise.

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