gcc.git
6 years agore PR c++/84588 (internal compiler error: Segmentation fault (contains_struct_check()))
Paolo Carlini [Tue, 8 May 2018 19:35:10 +0000 (19:35 +0000)]
re PR c++/84588 (internal compiler error: Segmentation fault (contains_struct_check()))

/cp
2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84588
* parser.c (cp_parser_parameter_declaration_list): When the
entire parameter-declaration-list is erroneous maybe call
abort_fully_implicit_template.

/testsuite
2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84588
* g++.dg/cpp1y/pr84588.C: New.

From-SVN: r260050

6 years agore PR c++/85695 (if constexpr misevaluates typedefed type value)
Marek Polacek [Tue, 8 May 2018 19:30:57 +0000 (19:30 +0000)]
re PR c++/85695 (if constexpr misevaluates typedefed type value)

PR c++/85695
* semantics.c (finish_if_stmt_cond): See through typedefs.

* g++.dg/cpp1z/constexpr-if22.C: New test.

From-SVN: r260049

6 years agoextend.texi (PowerPC Built-in Functions): Rename this subsection.
Kelvin Nilsen [Tue, 8 May 2018 17:29:52 +0000 (17:29 +0000)]
extend.texi (PowerPC Built-in Functions): Rename this subsection.

gcc/ChangeLog:

2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* doc/extend.texi (PowerPC Built-in Functions): Rename this
subsection.
(Basic PowerPC Built-in Functions): The new name of the
subsection previously known as "PowerPC Built-in Functions".
(Basic PowerPC Built-in Functions Available on all Configurations):
New subsubsection.
(Basic PowerPC Built-in Functions Available on ISA 2.05): New
subsubsection.
(Basic PowerPC Built-in Functions Available on ISA 2.06): New
subsubsection.
(Basic PowerPC Built-in Functions Available on ISA 2.07): New
subsubsection.
(Basic PowerPC Built-in Functions Available on ISA 3.0): New
subsubsection.

From-SVN: r260048

6 years agore PR tree-optimization/85693 (Generation of SAD (Sum of Absolute Difference) instruc...
Uros Bizjak [Tue, 8 May 2018 16:48:43 +0000 (18:48 +0200)]
re PR tree-optimization/85693 (Generation of SAD (Sum of Absolute Difference) instruction)

PR target/85693
* gcc.target/i386/pr85693.c: New test.

From-SVN: r260047

6 years agoMake std::regex automata use non-debug vector in Debug Mode
Jonathan Wakely [Tue, 8 May 2018 16:21:35 +0000 (17:21 +0100)]
Make std::regex automata use non-debug vector in Debug Mode

* include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
Use normal std::vector even in Debug Mode.

From-SVN: r260046

6 years agore PR target/85683 (GCC 8 stopped using RMW (Read Modify Write) instructions on x86...
Jakub Jelinek [Tue, 8 May 2018 16:17:34 +0000 (18:17 +0200)]
re PR target/85683 (GCC 8 stopped using RMW (Read Modify Write) instructions on x86[_64])

PR target/85683
* config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
after cmpelim optimization.

* gcc.target/i386/pr49095.c: Add -masm=att to dg-options.  Add
scan-assembler-times checking that except for [fh]*xor other functions
don't use any load instructions.

From-SVN: r260045

6 years agoPR libstdc++/85672 #undef _GLIBCXX_USE_FLOAT128 when not supported
Jonathan Wakely [Tue, 8 May 2018 13:05:04 +0000 (14:05 +0100)]
PR libstdc++/85672 #undef _GLIBCXX_USE_FLOAT128 when not supported

Restore the behaviour in GCC 8 and earlier where _GLIBCXX_USE_FLOAT128
is not defined when configure detects support is missing. This avoids
having three states where the macro is either 1, 0, or undefined.

PR libstdc++/85672
* include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
* include/Makefile.in: Regenerate.
* include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
within conditional block.

From-SVN: r260043

6 years agoconfig.gcc: Support "goldmont".
Olga Makhotina [Tue, 8 May 2018 12:23:08 +0000 (12:23 +0000)]
config.gcc: Support "goldmont".

2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>

gcc/

* config.gcc: Support "goldmont".
* config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
* config/i386/i386-c.c (ix86_target_macros_internal): Handle
PROCESSOR_GOLDMONT.
* config/i386/i386.c (m_GOLDMONT): Define.
(processor_target_table): Add "goldmont".
(PTA_GOLDMONT): Define.
(ix86_lea_outperforms): Add TARGET_GOLDMONT.
(get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
(fold_builtin_cpu): Add M_INTEL_GOLDMONT.
(fold_builtin_cpu): Add "goldmont".
(ix86_add_stmt_cost): Add TARGET_GOLDMONT.
(ix86_option_override_internal): Add "goldmont".
* config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
(processor_type): Add PROCESSOR_GOLDMONT.
* config/i386/i386.md: Add CPU "glm".
* config/i386/glm.md: New file.
* config/i386/x86-tune.def: Add m_GOLDMONT.
* doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.

libgcc/
* config/i386/cpuinfo.h (processor_types): Add INTEL_GOLDMONT.
* config/i386/cpuinfo.c (get_intel_cpu): Detect Goldmont.

gcc/testsuite/

* gcc.target/i386/builtin_target.c: Test goldmont.
* gcc.target/i386/funcspec-56.inc: Tests for arch=goldmont and
arch=silvermont.

From-SVN: r260042

6 years agore PR target/85572 (faster code for absolute value of __v2di)
Jakub Jelinek [Tue, 8 May 2018 12:16:19 +0000 (14:16 +0200)]
re PR target/85572 (faster code for absolute value of __v2di)

PR target/85572
* config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
E_V4DImode.
* config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.

* g++.dg/other/sse2-pr85572-1.C: New test.
* g++.dg/other/sse2-pr85572-2.C: New test.
* g++.dg/other/sse4-pr85572-1.C: New test.
* g++.dg/other/avx2-pr85572-1.C: New test.

From-SVN: r260041

6 years agore PR target/85317 (missing constant propagation on _mm(256)_movemask_*)
Jakub Jelinek [Tue, 8 May 2018 12:04:25 +0000 (14:04 +0200)]
re PR target/85317 (missing constant propagation on _mm(256)_movemask_*)

PR target/85317
* config/i386/i386.c (ix86_fold_builtin): Handle
IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.

* gcc.target/i386/pr85317.c: New test.
* gcc.target/i386/avx2-vpmovmskb-2.c (avx2_test): Add asm volatile
optimization barrier to avoid optimizing away the expected insn.

From-SVN: r260040

6 years agore PR target/85480 (zero extension from xmm to zmm via _mm512_insert???x? not optimized)
Jakub Jelinek [Tue, 8 May 2018 12:02:38 +0000 (14:02 +0200)]
re PR target/85480 (zero extension from xmm to zmm via _mm512_insert???x? not optimized)

PR target/85480
* config/i386/sse.md (ssequaterinsnmode): New mode attribute.
(*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.

* gcc.target/i386/avx512dq-pr85480-1.c: New test.
* gcc.target/i386/avx512dq-pr85480-2.c: New test.

From-SVN: r260039

6 years agoMove C++ SVE tests to g++.target/aarch64/sve
Richard Sandiford [Tue, 8 May 2018 11:42:15 +0000 (11:42 +0000)]
Move C++ SVE tests to g++.target/aarch64/sve

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

gcc/testsuite/
* g++.dg/other/sve_const_pred_1.C: Rename to...
* g++.target/aarch64/sve/const_pred_1.C: ...this.  Remove aarch64
target selectors and explicit -march options.
* g++.dg/other/sve_const_pred_2.C: Rename to...
* g++.target/aarch64/sve/const_pred_2.C: ...this and adjust likewise.
* g++.dg/other/sve_const_pred_3.C: Rename to...
* g++.target/aarch64/sve/const_pred_3.C: ...this and adjust likewise.
* g++.dg/other/sve_const_pred_4.C: Rename to...
* g++.target/aarch64/sve/const_pred_4.C: ...this and adjust likewise.
* g++.dg/other/sve_tls_2.C: Rename to...
* g++.target/aarch64/sve/tls_2.C: ...this and adjust likewise.
* g++.dg/other/sve_vcond_1.C: Rename to...
* g++.target/aarch64/sve/vcond_1.C: ...this and adjust likewise.
* g++.dg/other/sve_vcond_1_run.C: Rename to...
* g++.target/aarch64/sve/vcond_1_run.C: ...this and adjust likewise.

From-SVN: r260038

6 years agoTighten condition in vect/pr85586.c (PR 85654)
Richard Sandiford [Tue, 8 May 2018 11:17:57 +0000 (11:17 +0000)]
Tighten condition in vect/pr85586.c (PR 85654)

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

gcc/testsuite/
PR testsuite/85586
* gcc.dg/vect/pr85586.c: Restrict LOOP VECTORIZED test to
!vect_no_align.

From-SVN: r260036

6 years agore PR c++/57429 (Dependent function call with one visible declaration, deleted)
Paolo Carlini [Tue, 8 May 2018 10:47:24 +0000 (10:47 +0000)]
re PR c++/57429 (Dependent function call with one visible declaration, deleted)

2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/57429
* g++.dg/cpp0x/deleted14.C: New.

From-SVN: r260035

6 years agoBackport of RISC-V support for libffi
Andreas Schwab [Tue, 8 May 2018 10:29:16 +0000 (10:29 +0000)]
Backport of RISC-V support for libffi

* configure.host: Add RISC-V support.
* Makefile.am: Likewise.
* Makefile.in: Regenerate.
* src/riscv/ffi.c, src/riscv/ffitarget.h, src/riscv/sysv.S: New
files.

From-SVN: r260033

6 years ago[arm] PR target/85658 Fix operator precedence errors in parsecpu.awk
Richard Earnshaw [Tue, 8 May 2018 10:21:34 +0000 (10:21 +0000)]
[arm] PR target/85658 Fix operator precedence errors in parsecpu.awk

There are a number of places in parsecpu.awk where I've managed to get
the operator precedence between ! and 'in' incorrect (! binds more
tightly).  In most cases this just makes a consistency test
ineffective, but in a few cases it means we fail to correctly diagnose
errors by the user (for example, when passing an invalid cpu or
architecture name to configure.  This patch fixes all the cases I
could find, based on searching for all uses of the two operators in
the same expression.  The tweak to the API of check_fpu is to bring it
into line with the other check functions - it now returns the result
rather than printing it directly.  The caller now does the printing,
in the same way that the chkarch and chkcpu commands do.

PR target/85658
* config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
(check_arch): Likewise.
(check_fpu): Return the result rather than printing it.
(end arch): Fix operator precedence.
(end cpu): Likewise.
(END): Print the result from check_fpu.

From-SVN: r260032

6 years ago[AArch64] Predicated SVE comparison folds
Richard Sandiford [Tue, 8 May 2018 10:14:17 +0000 (10:14 +0000)]
[AArch64] Predicated SVE comparison folds

This patch adds SVE patterns that combine a PTRUE-predicated
comparison with a separate AND.  The main benefit is for
optimising ANDs with the loop predicate, as in the testcase.
However, one of the potential drawbacks is that it triggers
even for cases in which two naturally-parallel comparisons
are ANDed together.  Whether that's a win or a less will
depend on the schedule, but it has the potential to be a win
more often than a loss.

The combine patterns are undeniably ugly.  One way of getting
around them would be to allow 1->1 "splits" when combining
2 instructions, as well as 1->2 splits when combining more
than 2 instructions (although that wouldn't really be a split).
Another would be to have a way of defining target-specific
rtx simplifications.  branches/ARM/sve-branch has a prototype
implementation of that, but it would need some clean-up before being
ready to submit.  It would also be good to make it closer to the
match.pd style.

Until then, I think what the combine patterns are doing is the
"correct" implementation given the current infrastructure.

2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
(*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
(*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
(*fcmuo<mode>_and): New patterns.

gcc/testsuite/
* gcc.target/aarch64/sve/vcond_6.c: Do not expect any ANDs.
XFAIL the BIC test.
* gcc.target/aarch64/sve/vcond_7.c: New test.
* gcc.target/aarch64/sve/vcond_7_run.c: Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r260031

6 years agore PR c++/70563 (SFINAE fails when trying invalid template instantiation)
Paolo Carlini [Tue, 8 May 2018 10:03:39 +0000 (10:03 +0000)]
re PR c++/70563 (SFINAE fails when trying invalid template instantiation)

2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70563
* g++.dg/cpp0x/sfinae62.C: New.

From-SVN: r260030

6 years ago[AArch64] Use UNSPEC_MERGE_PTRUE for comparisons
Richard Sandiford [Tue, 8 May 2018 09:56:29 +0000 (09:56 +0000)]
[AArch64] Use UNSPEC_MERGE_PTRUE for comparisons

This patch rewrites the SVE comparison handling so that it uses
UNSPEC_MERGE_PTRUE for comparisons that are known to be predicated
on a PTRUE, for consistency with other patterns.  Specific unspecs
are then only needed for truly predicated floating-point comparisons,
such as those used in the expansion of UNEQ for flag_trapping_math.

The patch also makes sure that the comparison expanders attach
a REG_EQUAL note to instructions that use UNSPEC_MERGE_PTRUE,
so passes can use that as an alternative to the unspec pattern.
(This happens automatically for optabs.  The problem was that
this code emits instruction patterns directly.)

No specific benefit on its own, but it lays the groundwork for
the next patch.

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

gcc/
* config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
(UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
(SVE_INT_CMP, SVE_FP_CMP): New code iterators.
(cmp_op, sve_imm_con): New code attributes.
(SVE_COND_INT_CMP, imm_con): Delete.
(cmp_op): Remove above unspecs from int attribute.
* config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
to...
(*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
comparison-specific unspecs.
(*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
(*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
(*vec_cmp<cmp_op>_<mode>_cc): Rename to...
(*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
(*vec_fcm<cmp_op><mode>): Rename to...
(*fcm<cmp_op><mode>): ...this and adjust likewise.
(*vec_fcmuo<mode>): Rename to...
(*fcmuo<mode>): ...this and adjust likewise.
(*pred_fcm<cmp_op><mode>): New pattern.
* config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
(aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
functions.
(aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
and UNORDERED.
(aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
(aarch64_emit_sve_predicated_cond): New function.
(aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
(aarch64_emit_unspec_cond_or): Replace with...
(aarch64_emit_sve_or_conds): ...this new function.  Use
aarch64_emit_sve_ptrue_op for the individual comparisons and
aarch64_emit_binop to OR them together.
(aarch64_emit_inverted_unspec_cond): Replace with...
(aarch64_emit_sve_inverted_cond): ...this new function.  Use
aarch64_emit_sve_ptrue_op for the comparison and
aarch64_emit_unop to invert the result.
(aarch64_expand_sve_vec_cmp_float): Update after the above
changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.

From-SVN: r260029

6 years ago[AArch64] Tweak sve/vcond_6.c test
Richard Sandiford [Tue, 8 May 2018 09:35:36 +0000 (09:35 +0000)]
[AArch64] Tweak sve/vcond_6.c test

sve/vcond_6.c was effectively testing a three-input logical operation,
since the result of BINOP needed to be ANDed with the loop predicate
before loading src[i].  This patch makes it really test a binary
operation instead.  A later patch will add (and optimise) the
three-operand case.

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

gcc/testsuite/
* gcc.target/aarch64/sve/vcond_6.c (LOOP): Unconditionally
load from src[i].

From-SVN: r260028

6 years agore PR c++/80691 (Narrowing conversion in {} allowed in a SFINAE context)
Paolo Carlini [Tue, 8 May 2018 08:55:30 +0000 (08:55 +0000)]
re PR c++/80691 (Narrowing conversion in {} allowed in a SFINAE context)

2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/80691
* g++.dg/cpp0x/narrowing1.C: New.

From-SVN: r260027

6 years agore PR bootstrap/85571 (non-bootstrap-debug miscompare with trunk)
Richard Biener [Tue, 8 May 2018 08:50:33 +0000 (08:50 +0000)]
re PR bootstrap/85571 (non-bootstrap-debug miscompare with trunk)

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

PR bootstrap/85571
config/
* bootstrap-lto-noplugin.mk: Disable compare.
* bootstrap-lto.mk: Supply contrib/compare-lto for do-compare.

contrib/
* compare-lto: New script derived from compare-debug.

From-SVN: r260026

6 years agore PR tree-optimization/85588 (-fwrapv miscompilation)
Richard Biener [Tue, 8 May 2018 07:55:24 +0000 (07:55 +0000)]
re PR tree-optimization/85588 (-fwrapv miscompilation)

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

PR middle-end/85588
* gcc.dg/torture/pr85574.c: Rename to...
* gcc.dg/torture/pr85588.c: ... this.

From-SVN: r260024

6 years agore PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=)
Thomas Koenig [Tue, 8 May 2018 07:47:19 +0000 (07:47 +0000)]
re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=)

2018-05-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* check.c (gfc_check_minmaxloc): Remove error for BACK not being
implemented.  Use gfc_logical_4_kind for BACK.
* simplify.c (min_max_choose): Add optional argument back_val.
Handle it.
(simplify_minmaxloc_to_scalar): Add argument back_val. Pass
back_val to min_max_choose.
(simplify_minmaxloc_to_nodim): Likewise.
(simplify_minmaxloc_to_array): Likewise.
(gfc_simplify_minmaxloc): Add argument back, handle it.
Pass back_val to specific simplification functions.
(gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back,
pass it on to gfc_simplify_minmaxloc.
(gfc_simplify_maxloc): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust
comment. If BACK is true, use greater or equal (or lesser or
equal) insteal of greater (or lesser). Mark the condition of
having found a value which exceeds the limit as unlikely.

2018-05-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* m4/iforeach-s.m4: Remove assertion that back is zero.
* m4/iforeach.m4: Likewise.  Remove leading 'do'
before implementation start.
* m4/ifunction-s.m4: Remove assertion that back is zero.
* m4/ifunction.m4: Likewise.  Remove for loop if HAVE_BACK_ARG
is defined.
* m4/maxloc0.m4: Reorganize loops. Split loops between >= and =,
depending if back is true.  Mark the condition of having
found a value which exceeds the limit as unlikely.
* m4/minloc0.m4: Likewise.
* m4/maxloc1.m4: Likewise.
* m4/minloc1.m4: Likewise.
* m4/maxloc1s.m4: Handle back argument.
* m4/minloc1s.m4: Likewise.
* m4/maxloc2s.m4: Remove assertion that back is zero.
Remove special handling of loop start. Handle back argument.
* m4/minloc2s.m4: Likewise.
* generated/iall_i1.c: Regenerated.
* generated/iall_i16.c: Regenerated.
* generated/iall_i2.c: Regenerated.
* generated/iall_i4.c: Regenerated.
* generated/iall_i8.c: Regenerated.
* generated/iany_i1.c: Regenerated.
* generated/iany_i16.c: Regenerated.
* generated/iany_i2.c: Regenerated.
* generated/iany_i4.c: Regenerated.
* generated/iany_i8.c: Regenerated.
* generated/iparity_i1.c: Regenerated.
* generated/iparity_i16.c: Regenerated.
* generated/iparity_i2.c: Regenerated.
* generated/iparity_i4.c: Regenerated.
* generated/iparity_i8.c: Regenerated.
* generated/maxloc0_16_i1.c: Regenerated.
* generated/maxloc0_16_i16.c: Regenerated.
* generated/maxloc0_16_i2.c: Regenerated.
* generated/maxloc0_16_i4.c: Regenerated.
* generated/maxloc0_16_i8.c: Regenerated.
* generated/maxloc0_16_r10.c: Regenerated.
* generated/maxloc0_16_r16.c: Regenerated.
* generated/maxloc0_16_r4.c: Regenerated.
* generated/maxloc0_16_r8.c: Regenerated.
* generated/maxloc0_16_s1.c: Regenerated.
* generated/maxloc0_16_s4.c: Regenerated.
* generated/maxloc0_4_i1.c: Regenerated.
* generated/maxloc0_4_i16.c: Regenerated.
* generated/maxloc0_4_i2.c: Regenerated.
* generated/maxloc0_4_i4.c: Regenerated.
* generated/maxloc0_4_i8.c: Regenerated.
* generated/maxloc0_4_r10.c: Regenerated.
* generated/maxloc0_4_r16.c: Regenerated.
* generated/maxloc0_4_r4.c: Regenerated.
* generated/maxloc0_4_r8.c: Regenerated.
* generated/maxloc0_4_s1.c: Regenerated.
* generated/maxloc0_4_s4.c: Regenerated.
* generated/maxloc0_8_i1.c: Regenerated.
* generated/maxloc0_8_i16.c: Regenerated.
* generated/maxloc0_8_i2.c: Regenerated.
* generated/maxloc0_8_i4.c: Regenerated.
* generated/maxloc0_8_i8.c: Regenerated.
* generated/maxloc0_8_r10.c: Regenerated.
* generated/maxloc0_8_r16.c: Regenerated.
* generated/maxloc0_8_r4.c: Regenerated.
* generated/maxloc0_8_r8.c: Regenerated.
* generated/maxloc0_8_s1.c: Regenerated.
* generated/maxloc0_8_s4.c: Regenerated.
* generated/maxloc1_16_i1.c: Regenerated.
* generated/maxloc1_16_i16.c: Regenerated.
* generated/maxloc1_16_i2.c: Regenerated.
* generated/maxloc1_16_i4.c: Regenerated.
* generated/maxloc1_16_i8.c: Regenerated.
* generated/maxloc1_16_r10.c: Regenerated.
* generated/maxloc1_16_r16.c: Regenerated.
* generated/maxloc1_16_r4.c: Regenerated.
* generated/maxloc1_16_r8.c: Regenerated.
* generated/maxloc1_16_s1.c: Regenerated.
* generated/maxloc1_16_s4.c: Regenerated.
* generated/maxloc1_4_i1.c: Regenerated.
* generated/maxloc1_4_i16.c: Regenerated.
* generated/maxloc1_4_i2.c: Regenerated.
* generated/maxloc1_4_i4.c: Regenerated.
* generated/maxloc1_4_i8.c: Regenerated.
* generated/maxloc1_4_r10.c: Regenerated.
* generated/maxloc1_4_r16.c: Regenerated.
* generated/maxloc1_4_r4.c: Regenerated.
* generated/maxloc1_4_r8.c: Regenerated.
* generated/maxloc1_4_s1.c: Regenerated.
* generated/maxloc1_4_s4.c: Regenerated.
* generated/maxloc1_8_i1.c: Regenerated.
* generated/maxloc1_8_i16.c: Regenerated.
* generated/maxloc1_8_i2.c: Regenerated.
* generated/maxloc1_8_i4.c: Regenerated.
* generated/maxloc1_8_i8.c: Regenerated.
* generated/maxloc1_8_r10.c: Regenerated.
* generated/maxloc1_8_r16.c: Regenerated.
* generated/maxloc1_8_r4.c: Regenerated.
* generated/maxloc1_8_r8.c: Regenerated.
* generated/maxloc1_8_s1.c: Regenerated.
* generated/maxloc1_8_s4.c: Regenerated.
* generated/maxloc2_16_s1.c: Regenerated.
* generated/maxloc2_16_s4.c: Regenerated.
* generated/maxloc2_4_s1.c: Regenerated.
* generated/maxloc2_4_s4.c: Regenerated.
* generated/maxloc2_8_s1.c: Regenerated.
* generated/maxloc2_8_s4.c: Regenerated.
* generated/maxval_i1.c: Regenerated.
* generated/maxval_i16.c: Regenerated.
* generated/maxval_i2.c: Regenerated.
* generated/maxval_i4.c: Regenerated.
* generated/maxval_i8.c: Regenerated.
* generated/maxval_r10.c: Regenerated.
* generated/maxval_r16.c: Regenerated.
* generated/maxval_r4.c: Regenerated.
* generated/maxval_r8.c: Regenerated.
* generated/minloc0_16_i1.c: Regenerated.
* generated/minloc0_16_i16.c: Regenerated.
* generated/minloc0_16_i2.c: Regenerated.
* generated/minloc0_16_i4.c: Regenerated.
* generated/minloc0_16_i8.c: Regenerated.
* generated/minloc0_16_r10.c: Regenerated.
* generated/minloc0_16_r16.c: Regenerated.
* generated/minloc0_16_r4.c: Regenerated.
* generated/minloc0_16_r8.c: Regenerated.
* generated/minloc0_16_s1.c: Regenerated.
* generated/minloc0_16_s4.c: Regenerated.
* generated/minloc0_4_i1.c: Regenerated.
* generated/minloc0_4_i16.c: Regenerated.
* generated/minloc0_4_i2.c: Regenerated.
* generated/minloc0_4_i4.c: Regenerated.
* generated/minloc0_4_i8.c: Regenerated.
* generated/minloc0_4_r10.c: Regenerated.
* generated/minloc0_4_r16.c: Regenerated.
* generated/minloc0_4_r4.c: Regenerated.
* generated/minloc0_4_r8.c: Regenerated.
* generated/minloc0_4_s1.c: Regenerated.
* generated/minloc0_4_s4.c: Regenerated.
* generated/minloc0_8_i1.c: Regenerated.
* generated/minloc0_8_i16.c: Regenerated.
* generated/minloc0_8_i2.c: Regenerated.
* generated/minloc0_8_i4.c: Regenerated.
* generated/minloc0_8_i8.c: Regenerated.
* generated/minloc0_8_r10.c: Regenerated.
* generated/minloc0_8_r16.c: Regenerated.
* generated/minloc0_8_r4.c: Regenerated.
* generated/minloc0_8_r8.c: Regenerated.
* generated/minloc0_8_s1.c: Regenerated.
* generated/minloc0_8_s4.c: Regenerated.
* generated/minloc1_16_i1.c: Regenerated.
* generated/minloc1_16_i16.c: Regenerated.
* generated/minloc1_16_i2.c: Regenerated.
* generated/minloc1_16_i4.c: Regenerated.
* generated/minloc1_16_i8.c: Regenerated.
* generated/minloc1_16_r10.c: Regenerated.
* generated/minloc1_16_r16.c: Regenerated.
* generated/minloc1_16_r4.c: Regenerated.
* generated/minloc1_16_r8.c: Regenerated.
* generated/minloc1_16_s1.c: Regenerated.
* generated/minloc1_16_s4.c: Regenerated.
* generated/minloc1_4_i1.c: Regenerated.
* generated/minloc1_4_i16.c: Regenerated.
* generated/minloc1_4_i2.c: Regenerated.
* generated/minloc1_4_i4.c: Regenerated.
* generated/minloc1_4_i8.c: Regenerated.
* generated/minloc1_4_r10.c: Regenerated.
* generated/minloc1_4_r16.c: Regenerated.
* generated/minloc1_4_r4.c: Regenerated.
* generated/minloc1_4_r8.c: Regenerated.
* generated/minloc1_4_s1.c: Regenerated.
* generated/minloc1_4_s4.c: Regenerated.
* generated/minloc1_8_i1.c: Regenerated.
* generated/minloc1_8_i16.c: Regenerated.
* generated/minloc1_8_i2.c: Regenerated.
* generated/minloc1_8_i4.c: Regenerated.
* generated/minloc1_8_i8.c: Regenerated.
* generated/minloc1_8_r10.c: Regenerated.
* generated/minloc1_8_r16.c: Regenerated.
* generated/minloc1_8_r4.c: Regenerated.
* generated/minloc1_8_r8.c: Regenerated.
* generated/minloc1_8_s1.c: Regenerated.
* generated/minloc1_8_s4.c: Regenerated.
* generated/minloc2_16_s1.c: Regenerated.
* generated/minloc2_16_s4.c: Regenerated.
* generated/minloc2_4_s1.c: Regenerated.
* generated/minloc2_4_s4.c: Regenerated.
* generated/minloc2_8_s1.c: Regenerated.
* generated/minloc2_8_s4.c: Regenerated.
* generated/minval_i1.c: Regenerated.
* generated/minval_i16.c: Regenerated.
* generated/minval_i2.c: Regenerated.
* generated/minval_i4.c: Regenerated.
* generated/minval_i8.c: Regenerated.
* generated/minval_r10.c: Regenerated.
* generated/minval_r16.c: Regenerated.
* generated/minval_r4.c: Regenerated.
* generated/minval_r8.c: Regenerated.
* generated/norm2_r10.c: Regenerated.
* generated/norm2_r16.c: Regenerated.
* generated/norm2_r4.c: Regenerated.
* generated/norm2_r8.c: Regenerated.
* generated/parity_l1.c: Regenerated.
* generated/parity_l16.c: Regenerated.
* generated/parity_l2.c: Regenerated.
* generated/parity_l4.c: Regenerated.
* generated/parity_l8.c: Regenerated.
* generated/product_c10.c: Regenerated.
* generated/product_c16.c: Regenerated.
* generated/product_c4.c: Regenerated.
* generated/product_c8.c: Regenerated.
* generated/product_i1.c: Regenerated.
* generated/product_i16.c: Regenerated.
* generated/product_i2.c: Regenerated.
* generated/product_i4.c: Regenerated.
* generated/product_i8.c: Regenerated.
* generated/product_r10.c: Regenerated.
* generated/product_r16.c: Regenerated.
* generated/product_r4.c: Regenerated.
* generated/product_r8.c: Regenerated.
* generated/sum_c10.c: Regenerated.
* generated/sum_c16.c: Regenerated.
* generated/sum_c4.c: Regenerated.
* generated/sum_c8.c: Regenerated.
* generated/sum_i1.c: Regenerated.
* generated/sum_i16.c: Regenerated.
* generated/sum_i2.c: Regenerated.
* generated/sum_i4.c: Regenerated.
* generated/sum_i8.c: Regenerated.
* generated/sum_r10.c: Regenerated.
* generated/sum_r16.c: Regenerated.
* generated/sum_r4.c: Regenerated.
* generated/sum_r8.c: Regenerated.

2018-05-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* gfortran.dg/minmaxloc_12.f90: New test case.
* gfortran.dg/minmaxloc_13.f90: New test case.

From-SVN: r260023

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

From-SVN: r260021

6 years agoPR c++/85646 - lambda visibility.
Jason Merrill [Mon, 7 May 2018 23:50:16 +0000 (19:50 -0400)]
PR c++/85646 - lambda visibility.

* decl2.c (determine_visibility): Don't mess with template arguments
from the containing scope.
(vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
thunk.

From-SVN: r260017

6 years ago[C++ PATCH] Kill -fno-for-scope
Nathan Sidwell [Mon, 7 May 2018 23:04:22 +0000 (23:04 +0000)]
[C++ PATCH] Kill -fno-for-scope

https://gcc.gnu.org/ml/gcc-patches/2018-05/msg00299.html
gcc/cp/
Remove fno-for-scope
* cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
(DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
(SET_DECL_SHADOWED_FOR_VAR): Delete.
(decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
(check_for_out_of_scope_variable, init_shadowed_var_for_decl):
Don't declare.
* name-lookup.h (struct cp_binding_level): Remove
dead_vars_from_for field.
* cp-lang.c (cp_init_ts): Delete.
(LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
* cp-objcp-common.c (shadowed_var_for_decl): Delete.
(decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
(init_shadowed_var_for_decl): Delete.
* decl.c (poplevel): Remove shadowed for var handling.
(cxx_init_decl_processing): Remove -ffor-scope deprecation.
* name-lookup.c (find_local_binding): Remove shadowed for var
handling.
(check_local_shadow): Likewise.
(check_for_out_of_scope_variable): Delete.
* parser.c (cp_parser_primary_expression): Remove shadowed for var
handling.
* pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
* semantics.c (begin_for_scope): Always have a scope.
(begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
(begin_range_for_stmt, finish_id_expression): Likewise.

gcc/
* doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
* doc/extend.texi (Deprecated Features): Remove -fno-for-scope
(Backwards Compatibility): Likewise.

c-family/
* c.opt (ffor-scope): Remove functionality, issue warning.

gcc/objcp/
* objcp-lang.c (objcxx_init_ts): Don't call init_shadowed_var_for_decl.

gcc/testsuite/
* g++.dg/cpp0x/range-for10.C: Delete.
* g++.dg/ext/forscope1.C: Delete.
* g++.dg/ext/forscope2.C: Delete.
* g++.dg/template/for1.C: Delete.

From-SVN: r260015

6 years agoPR c++/85618 - ICE with initialized VLA.
Jason Merrill [Mon, 7 May 2018 19:22:35 +0000 (15:22 -0400)]
PR c++/85618 - ICE with initialized VLA.

* tree.c (vla_type_p): New.
* typeck2.c (store_init_value, split_nonconstant_init_1): Check it
rather than array_of_runtime_bound_p.

From-SVN: r260012

6 years agoDocument -lstdc++fs requirement for std::filesystem
Jonathan Wakely [Mon, 7 May 2018 19:17:16 +0000 (20:17 +0100)]
Document -lstdc++fs requirement for std::filesystem

* doc/xml/manual/using.xml (table.cmd_options): Document that the
C++17 Filesystem implementation also needs -lstdc++fs.

From-SVN: r260011

6 years agoscanner.c (preprocessor_line): Call linemap_add after a line directive that changes...
Jeff Law [Mon, 7 May 2018 18:24:59 +0000 (12:24 -0600)]
scanner.c (preprocessor_line): Call linemap_add after a line directive that changes the current filename.

* scanner.c (preprocessor_line): Call linemap_add after a line
directive that changes the current filename.

* gfortran.dg/linefile.f90: New test.

From-SVN: r260010

6 years agoPR libstdc++/85671 allow copy elision in path concatenation
Jonathan Wakely [Mon, 7 May 2018 17:26:28 +0000 (18:26 +0100)]
PR libstdc++/85671 allow copy elision in path concatenation

By performing the /= operation on a named local variable instead of a
temporary the copy made for the return value can be elided.

PR libstdc++/85671
* include/bits/fs_path.h (operator/): Permit copy elision.
* include/experimental/bits/fs_path.h (operator/): Likewise.

From-SVN: r260009

6 years agoMoar PR libstdc++/80506
Edward Smith-Rowland [Mon, 7 May 2018 16:59:08 +0000 (16:59 +0000)]
Moar PR libstdc++/80506

2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>

Moar PR libstdc++/80506
* include/bits/random.tcc (gamma_distribution::__generate_impl()):
Fix magic number used in loop condition.

Actually put the file in.
Don't know what my problem is today...

From-SVN: r260008

6 years agoconfig.host (x86_64-*-rtems*): Build crti.o and crtn.o.
Amaan Cheval [Mon, 7 May 2018 16:32:09 +0000 (16:32 +0000)]
config.host (x86_64-*-rtems*): Build crti.o and crtn.o.

2018-05-07  Amaan Cheval  <amaan.cheval@gmail.com>

* config.host (x86_64-*-rtems*): Build crti.o and crtn.o.

From-SVN: r260007

6 years agoMoar PR libstdc++/80506
Edward Smith-Rowland [Mon, 7 May 2018 16:17:32 +0000 (16:17 +0000)]
Moar PR libstdc++/80506

2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>

Moar PR libstdc++/80506
* include/bits/random.tcc (gamma_distribution::__generate_impl()):
Fix magic number used in loop condition.

From-SVN: r260004

6 years agoRollback bad commits! Sorry!
Edward Smith-Rowland [Mon, 7 May 2018 16:13:48 +0000 (16:13 +0000)]
Rollback bad commits!  Sorry!

From-SVN: r260003

6 years agoRevert 20001.
Edward Smith-Rowland [Mon, 7 May 2018 16:02:46 +0000 (16:02 +0000)]
Revert 20001.

From-SVN: r260002

6 years agoMoar PR libstdc++/80506
Edward Smith-Rowland [Mon, 7 May 2018 15:55:11 +0000 (15:55 +0000)]
Moar PR libstdc++/80506

2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>

Moar PR libstdc++/80506
* include/bits/random.tcc (gamma_distribution::__generate_impl()):
Fix magic number used in loop condition.

From-SVN: r260001

6 years agore PR bootstrap/85681 (r259995 breaks bootstrap on x86_64-*-freebsd)
Luis Machado [Mon, 7 May 2018 15:47:14 +0000 (15:47 +0000)]
re PR bootstrap/85681 (r259995 breaks bootstrap on x86_64-*-freebsd)

2018-05-07  Luis Machado  <luis.machado@linaro.org>

PR bootstrap/85681
Revert:
2018-05-07  Luis Machado  <luis.machado@linaro.org>

* config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
<prefetch_dynamic_strides>: New const bool field.
* config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
prefetch_dynamic_strides.
(exynosm1_prefetch_tune): Likewise.
(thunderxt88_prefetch_tune): Likewise.
(thunderx_prefetch_tune): Likewise.
(thunderx2t99_prefetch_tune): Likewise.
(qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
(aarch64_override_options_internal): Update to set
PARAM_PREFETCH_DYNAMIC_STRIDES.
* doc/invoke.texi (prefetch-dynamic-strides): Document new option.
* params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
* params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
* tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
prefetch-dynamic-strides setting.

2018-05-07  Luis Machado  <luis.machado@linaro.org>

* config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
<minimum_stride>: New const int field.
* config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
minimum_stride field.
(exynosm1_prefetch_tune): Likewise.
(thunderxt88_prefetch_tune): Likewise.
(thunderx_prefetch_tune): Likewise.
(thunderx2t99_prefetch_tune): Likewise.
(qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
(aarch64_override_options_internal): Update to set
PARAM_PREFETCH_MINIMUM_STRIDE.
* doc/invoke.texi (prefetch-minimum-stride): Document new option.
* params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
* params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
* tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
stride is constant and is below the minimum stride threshold.

From-SVN: r260000

6 years agoFix gcc/ChangeLog.
Luis Machado [Mon, 7 May 2018 14:36:39 +0000 (14:36 +0000)]
Fix gcc/ChangeLog.

From-SVN: r259999

6 years agoaarch64.c (qdf24xx_prefetch_tune): Set to 512.
Luis Machado [Mon, 7 May 2018 14:34:46 +0000 (14:34 +0000)]
aarch64.c (qdf24xx_prefetch_tune): Set to 512.

2018-05-07  Luis Machado  <luis.machado@linaro.org>

* config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
to 512.

From-SVN: r259998

6 years agoIntroduce prefetch-dynamic-strides option.
Luis Machado [Mon, 7 May 2018 14:12:54 +0000 (14:12 +0000)]
Introduce prefetch-dynamic-strides option.

The following patch adds an option to control software prefetching of memory
references with non-constant/unknown strides.

Currently we prefetch these references if the pass thinks there is benefit to
doing so. But, since this is all based on heuristics, it's not always the case
that we end up with better performance.

For Falkor there is also the problem of conflicts with the hardware prefetcher,
so we need to be more conservative in terms of what we issue software prefetch
hints for.

This also aligns GCC with what LLVM does for Falkor.

Similarly to the previous patch, the defaults guarantee no change in behavior
for other targets and architectures.

2018-05-07  Luis Machado  <luis.machado@linaro.org>

gcc/
* config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
<prefetch_dynamic_strides>: New const bool field.
* config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
prefetch_dynamic_strides.
(exynosm1_prefetch_tune): Likewise.
(thunderxt88_prefetch_tune): Likewise.
(thunderx_prefetch_tune): Likewise.
(thunderx2t99_prefetch_tune): Likewise.
(qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
(aarch64_override_options_internal): Update to set
PARAM_PREFETCH_DYNAMIC_STRIDES.
* doc/invoke.texi (prefetch-dynamic-strides): Document new option.
* params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
* params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
* tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
prefetch-dynamic-strides setting.

From-SVN: r259996

6 years agoIntroduce prefetch-minimum stride option
Luis Machado [Mon, 7 May 2018 14:08:55 +0000 (14:08 +0000)]
Introduce prefetch-minimum stride option

This patch adds a new option to control the minimum stride, for a memory
reference, after which the loop prefetch pass may issue software prefetch
hints for. There are two motivations:

* Make the pass less aggressive, only issuing prefetch hints for bigger strides
that are more likely to benefit from prefetching. I've noticed a case in cpu2017
where we were issuing thousands of hints, for example.

* For processors that have a hardware prefetcher, like Falkor, it allows the
loop prefetch pass to defer prefetching of smaller (less than the threshold)
strides to the hardware prefetcher instead. This prevents conflicts between
the software prefetcher and the hardware prefetcher.

I've noticed considerable reduction in the number of prefetch hints and
slightly positive performance numbers. This aligns GCC and LLVM in terms of
prefetch behavior for Falkor.

The default settings should guarantee no changes for existing targets. Those
are free to tweak the settings as necessary.

2018-05-07  Luis Machado  <luis.machado@linaro.org>

Introduce option to limit software prefetching to known constant
strides above a specific threshold with the goal of preventing
conflicts with a hardware prefetcher.

gcc/
* config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
<minimum_stride>: New const int field.
* config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
minimum_stride field.
(exynosm1_prefetch_tune): Likewise.
(thunderxt88_prefetch_tune): Likewise.
(thunderx_prefetch_tune): Likewise.
(thunderx2t99_prefetch_tune): Likewise.
(qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
(aarch64_override_options_internal): Update to set
PARAM_PREFETCH_MINIMUM_STRIDE.
* doc/invoke.texi (prefetch-minimum-stride): Document new option.
* params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
* params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
* tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
stride is constant and is below the minimum stride threshold.

From-SVN: r259995

6 years ago[testsuite] gcc.dg/nextafter-2.c: Restrict to c99_runtime
Christophe Lyon [Mon, 7 May 2018 13:49:03 +0000 (13:49 +0000)]
[testsuite] gcc.dg/nextafter-2.c: Restrict to c99_runtime

2018-05-07  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.dg/nextafter-2.c: Add c99_runtime effective target
and options.

From-SVN: r259994

6 years ago[openacc, testsuite] Allow installed testing of libgomp to find gomp-constants.h
Tom de Vries [Mon, 7 May 2018 11:33:45 +0000 (11:33 +0000)]
[openacc, testsuite] Allow installed testing of libgomp to find gomp-constants.h

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

PR testsuite/85677
* testsuite/lib/libgomp.exp (libgomp_init): Move inclusion of top-level
include directory in ALWAYS_CFLAGS out of $blddir != "" condition.

From-SVN: r259992

6 years agoDaily bump.
GCC Administrator [Mon, 7 May 2018 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r259986

6 years agore PR c++/85659 (ICE with inline assembly inside virtual function)
Jakub Jelinek [Sun, 6 May 2018 21:14:35 +0000 (23:14 +0200)]
re PR c++/85659 (ICE with inline assembly inside virtual function)

PR c++/85659
* cfgexpand.c (expand_asm_stmt): Don't create a temporary if
the type is addressable.  Don't force op into register if it has
BLKmode.

* g++.dg/ext/asm14.C: New test.
* g++.dg/ext/asm15.C: New test.
* g++.dg/ext/asm16.C: New test.

From-SVN: r259981

6 years agopicdtr.c: Correct option -fPIE -mpic-data-is-text-relative.
Michael Eager [Sun, 6 May 2018 11:46:07 +0000 (11:46 +0000)]
picdtr.c: Correct option -fPIE -mpic-data-is-text-relative.

2018-05-06  Michael Eager  <eager@eagercon.com>

* gcc.target/microblaze/others/picdtr.c: Correct option
 -fPIE -mpic-data-is-text-relative.

From-SVN: r259976

6 years agopicdtr.c: Add test for -fPIE -mpic-data-is-text-relative.
Andrew Sadek [Sun, 6 May 2018 11:42:06 +0000 (11:42 +0000)]
picdtr.c: Add test for -fPIE -mpic-data-is-text-relative.

2018-05-06  Andrew Sadek  <andrew.sadek.se@gmail.com>

* gcc.target/microblaze/others/picdtr.c: Add test for
 -fPIE -mpic-data-is-text-relative.

From-SVN: r259975

6 years agore PR fortran/85507 (ICE in gfc_dep_resolver, at fortran/dependency.c:2258)
Andre Vehreschild [Sun, 6 May 2018 11:19:31 +0000 (13:19 +0200)]
re PR fortran/85507 (ICE in gfc_dep_resolver, at fortran/dependency.c:2258)

gcc/fortran/ChangeLog:

2018-05-06  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/85507
* dependency.c (gfc_dep_resolver): Revert looking at coarray dimension
introduced by r259385.
* trans-intrinsic.c (conv_caf_send): Always report a dependency for
same variables in coarray assignments.

gcc/testsuite/ChangeLog:

2018-05-06  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/85507
* gfortran.dg/coarray_dependency_1.f90: New test.
* gfortran.dg/coarray_lib_comm_1.f90: Fix counting caf-expressions.

From-SVN: r259974

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

From-SVN: r259973

6 years agoPR other/77609: Let the assembler choose ELF section types for miscellaneous named...
Roland McGrath [Sat, 5 May 2018 23:35:25 +0000 (23:35 +0000)]
PR other/77609: Let the assembler choose ELF section types for miscellaneous named sections

gcc/
PR other/77609
* varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
any section for which we don't know a specific type it should have,
regardless of name.  Previously this was done only for the exact
names ".init_array", ".fini_array", and ".preinit_array".
(default_elf_asm_named_section): Add comment about
relationship with default_section_type_flags and SECTION_NOTYPE.
(get_section): Don't consider it a type conflict if one side has
SECTION_NOTYPE and the other doesn't, as long as neither has the
SECTION_BSS et al used in the default_section_type_flags logic.

From-SVN: r259969

6 years ago[nvptx] Add workaround for subsequent bar.syncs
Tom de Vries [Sat, 5 May 2018 07:56:21 +0000 (07:56 +0000)]
[nvptx] Add workaround for subsequent bar.syncs

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

PR target/85653
* config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
(workaround_barsyncs): New function.
(nvptx_reorg): Use workaround_barsyncs.
* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
(define_expand "nvptx_membar_cta"): New define_expand.
(define_insn "*nvptx_membar_cta"): New insn.

From-SVN: r259967

6 years agocvt.c (ocp_convert): Early handle the special case of a null_ptr_cst_p expr converted...
Paolo Carlini [Sat, 5 May 2018 07:39:36 +0000 (07:39 +0000)]
cvt.c (ocp_convert): Early handle the special case of a null_ptr_cst_p expr converted to a...

2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>

* cvt.c (ocp_convert): Early handle the special case of a
null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.

From-SVN: r259966

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

From-SVN: r259965

6 years ago[BRIGFE] Fix handling of NOPs.
Pekka Jääskeläinen [Fri, 4 May 2018 19:46:16 +0000 (19:46 +0000)]
[BRIGFE] Fix handling of NOPs.

From-SVN: r259958

6 years ago[BRIGFE] phsa-specific optimizations
Pekka Jääskeläinen [Fri, 4 May 2018 19:43:57 +0000 (19:43 +0000)]
[BRIGFE] phsa-specific optimizations

Add flag -fassume-phsa that is on by default. If -fno-assume-phsa
is given, these optimizations are disabled.

With this flag, gccbrig can generate GENERIC that assumes we are
targeting a phsa-runtime based implementation, which allows us
to expose the work-item context accesses to retrieve WI IDs etc.
which helps optimizers.

First optimization that takes advantage of this is to get rid of
the setworkitemid calls whenever we have non-inlined calls that
use IDs internally.

Other optimizations added in this commit:

- expand absoluteid to similar level of simplicity as workitemid.
At the moment absoluteid is the best indexing ID to end up with
WG vectorization.
- propagate ID variables closer to their uses. This is mainly
to avoid known useless casts, which confuse at least scalar
evolution analysis.
- use signed long long for storing IDs. Unsigned integers have
defined wraparound semantics, which confuse at least scalar
evolution analysis, leading to unvectorizable WI loops.
- also refactor some BRIG function generation helpers to brig_function.
- no point in having the wi-loop as a for-loop. It's really
a do...while and SCEV can analyze it just fine still.
- add consts to ptrs etc. in BRIG builtin defs.
Improves optimization opportunities.
- add qualifiers to generated function parameters.
Const and restrict on the hidden local/private pointers,
the arg buffer and the context pointer help some optimizations.

From-SVN: r259957

6 years ago[BRIGFE] skip multiple forward declarations of the same function
Pekka Jääskeläinen [Fri, 4 May 2018 18:04:14 +0000 (18:04 +0000)]
[BRIGFE] skip multiple forward declarations of the same function

From-SVN: r259950

6 years ago[BRIGFE] do not allow optimizations based on known C builtins
Pekka Jääskeläinen [Fri, 4 May 2018 18:01:11 +0000 (18:01 +0000)]
[BRIGFE] do not allow optimizations based on known C builtins

It can break inputs that have similarly named functions.

From-SVN: r259949

6 years ago[BRIGFE] allow controlling strict aliasing from cmd line
Pekka Jääskeläinen [Fri, 4 May 2018 17:58:38 +0000 (17:58 +0000)]
[BRIGFE] allow controlling strict aliasing from cmd line

From-SVN: r259948

6 years agocmd/go: on AIX, pass -X64 first when invoking ar
Ian Lance Taylor [Fri, 4 May 2018 17:51:46 +0000 (17:51 +0000)]
cmd/go: on AIX, pass -X64 first when invoking ar

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

From-SVN: r259946

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

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

From-SVN: r259944

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

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

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

From-SVN: r259943

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

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

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

From-SVN: r259942

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

From-SVN: r259938

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

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

From-SVN: r259937

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

gcc/testsuite/ChangeLog:

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

From-SVN: r259936

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

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

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

From-SVN: r259935

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

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

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

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

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

From-SVN: r259934

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

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

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

From-SVN: r259932

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

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

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

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

From-SVN: r259929

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

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

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

From-SVN: r259928

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

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

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

From-SVN: r259927

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

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

From-SVN: r259925

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

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

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

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

From-SVN: r259923

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

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

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

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

From-SVN: r259922

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

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

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

From-SVN: r259921

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

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

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

From-SVN: r259920

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

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

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

From-SVN: r259919

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

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

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

From-SVN: r259918

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

From-SVN: r259917

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

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

From-SVN: r259913

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

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

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

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

From-SVN: r259912

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

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

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

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

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

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

From-SVN: r259904

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

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

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

From-SVN: r259903

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

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

From-SVN: r259902

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

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

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

From-SVN: r259901

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

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

    Fixes golang/go#13486.

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

From-SVN: r259900

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

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

From-SVN: r259897

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

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

From-SVN: r259896

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

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

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

From-SVN: r259895

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

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

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

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

From-SVN: r259893

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

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

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

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

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

From-SVN: r259892

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

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

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

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

From-SVN: r259891

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

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

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

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

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

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

Instead of just a branch to __muldc3.

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

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

From-SVN: r259889

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

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

From-SVN: r259888

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

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

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

From-SVN: r259887

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

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

From-SVN: r259881

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

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

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

From-SVN: r259880

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

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

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

From-SVN: r259875

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

From-SVN: r259874