gcc.git
5 years agoDaily bump.
GCC Administrator [Mon, 5 Aug 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274103

5 years agoupdate_web_docs_svn: Proceed even if the invocation of sphinx fails.
David Malcolm [Sun, 4 Aug 2019 22:31:54 +0000 (22:31 +0000)]
update_web_docs_svn: Proceed even if the invocation of sphinx fails.

* update_web_docs_svn: Proceed even if the invocation of
sphinx fails.

From-SVN: r274099

5 years agore PR fortran/88227 (ICE in gfc_convert_boz, at fortran/target-memory.c:788)
Steven G. Kargl [Sun, 4 Aug 2019 15:52:55 +0000 (15:52 +0000)]
re PR fortran/88227 (ICE in gfc_convert_boz, at fortran/target-memory.c:788)

2019-08-04  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88227
* check.c (oct2bin):  New function.  Convert octal string to binary.
(hex2bin): New function.  Convert hexidecimal string to binary.
(bin2real): New function.  Convert binary string to REAL.  Use
oct2bin and hex2bin.
(gfc_boz2real):  Use fallback conversion bin2real.

From-SVN: r274096

5 years agodocumentation_hacking.xml: doxygen.org is now doxygen.nl.
Gerald Pfeifer [Sun, 4 Aug 2019 13:20:32 +0000 (13:20 +0000)]
documentation_hacking.xml: doxygen.org is now doxygen.nl.

* doc/xml/manual/documentation_hacking.xml: doxygen.org is now
doxygen.nl.

From-SVN: r274094

5 years agoinstall.texi (Prerequisites): Remove reference to Tcl 8.6 bug that was fixed in Tcl...
Gerald Pfeifer [Sun, 4 Aug 2019 13:01:01 +0000 (13:01 +0000)]
install.texi (Prerequisites): Remove reference to Tcl 8.6 bug that was fixed in Tcl 8.6.1.

* doc/install.texi (Prerequisites): Remove reference to Tcl 8.6
bug that was fixed in Tcl 8.6.1.

From-SVN: r274089

5 years agoDaily bump.
GCC Administrator [Sun, 4 Aug 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274054

5 years agoDaily bump.
GCC Administrator [Sat, 3 Aug 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274037

5 years agore PR fortran/90985 (Wrong error message with variables named "DATA*")
Steven G. Kargl [Fri, 2 Aug 2019 23:48:36 +0000 (23:48 +0000)]
re PR fortran/90985 (Wrong error message with variables named "DATA*")

2019-08-02  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90985
* decl.c (gfc_match_data): In free-form code, DATA be followed by
whitespace.

2019-08-02  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90985
* gfortran.dg/pr90985.f90: New test.

From-SVN: r274033

5 years agoCorrect the PR number for 90297 to 90986.
Steven G. Kargl [Fri, 2 Aug 2019 21:39:52 +0000 (21:39 +0000)]
Correct the PR number for 90297 to 90986.

From-SVN: r274032

5 years agore PR fortran/90297 (gcc/fortran/resolve.c: 2 * possibly redundant code ?)
Steven G. Kargl [Fri, 2 Aug 2019 21:28:58 +0000 (21:28 +0000)]
re PR fortran/90297 (gcc/fortran/resolve.c: 2 * possibly redundant code ?)

2019-08-02  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90297
* match.c (gfc_match_equivalence): Check that EQUIVALENCE is followed
by '('.

2019-08-02  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90297
* gfortran.dg/equiv_10.f90: New test.

From-SVN: r274031

5 years agoAdd future.md.
Michael Meissner [Fri, 2 Aug 2019 21:03:20 +0000 (21:03 +0000)]
Add future.md.

2019-08-02  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/future.md: New file.
* config/rs6000/rs6000.md: Include future.md.
* config/rs6000/t-rs6000 (MD_INCLUDES): Add future.md.

From-SVN: r274030

5 years agorework Ada EH Machine_Occurrence deallocation
Alexandre Oliva [Fri, 2 Aug 2019 18:46:51 +0000 (18:46 +0000)]
rework Ada EH Machine_Occurrence deallocation

Introduce exception handler ABI #1 to ensure single release, no access
after release of reraised Machine_Occurrences, and no failure to
re-reraise a Machine_Occurrence.

Unlike Ada exceptions, foreign exceptions do not get a new
Machine_Occurrence upon reraise, but each handler would delete the
exception upon completion, normal or exceptional, save for the case of
a 'raise;' statement within the handler, that avoided the delete by
clearing the exception pointer that the cleanup would use to release
it.  The cleared exception pointer might then be used by a subsequent
reraise within the same handler.  Get_Current_Excep.all would also
expose the Machine_Occurrence to reuse by Reraise_Occurrence, even for
native exceptions.

Under ABI #1, Begin_Handler_v1 claims responsibility for releasing an
exception by saving its cleanup and setting it to Claimed_Cleanup.
End_Handler_v1 restores the cleanup and runs it, as long as it isn't
still Claimed_Cleanup (which indicates an enclosing handler has
already claimed responsibility for releasing it), and as long as the
same exception is not being propagated up (the next handler of the
propagating exception will then claim responsibility for releasing
it), so reraise no longer needs to clear the exception pointer, and it
can just propagate the exception, just like Reraise_Occurrence.

ABI #1 is fully interoperable with ABI #0, i.e., exception handlers
that call the #0 primitives can be linked together with ones that call
the #1 primitives, and they will not misbehave.  When a #1 handler
claims responsibility for releasing an exception, even #0 reraises
dynamically nested within it will refrain from releasing it.  However,
when a #0 handler is a handler of a foreign exception that would have
been responsible for releasing it with #1, a Reraise_Occurrence of
that foreign or other Machine_Occurrence-carrying exception may still
cause the exception to be released multiple times, and to be used
after it is first released, even if other handlers of the foreign
exception use #1.

for  gcc/ada/ChangeLog

* libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
(Claimed_Cleanup): New.
(Begin_Handler, End_Handler): Document.
* gcc-interface/trans.c (gigi): Switch to exception handler
ABI #1.
(Exception_Handler_to_gnu_gcc): Save the original cleanup
returned by begin handler, pass it to end handler, and use
EH_ELSE_EXPR to pass a propagating exception to end handler.
(gnat_to_gnu): Leave the exception pointer alone for reraise.
(add_cleanup): Handle EH_ELSE_EXPR, require it by itself.

From-SVN: r274029

5 years agore PR c++/56428 ([C++11] "is not a constant expression" when comparing non-type templ...
Marek Polacek [Fri, 2 Aug 2019 18:17:20 +0000 (18:17 +0000)]
re PR c++/56428 ([C++11] "is not a constant expression" when comparing non-type template argument to nullptr)

PR c++/56428
* g++.dg/cpp0x/nontype4.C: New test.

From-SVN: r274028

5 years agore PR c++/53009 (pointer to static member function of template class is “invalid...
Marek Polacek [Fri, 2 Aug 2019 17:51:53 +0000 (17:51 +0000)]
re PR c++/53009 (pointer to static member function of template class is “invalid” as a template argument of another template class)

PR c++/53009
* g++.dg/cpp0x/nontype3.C: New test.

From-SVN: r274027

5 years agofunction.c (assign_parm_adjust_stack_rtl): Revise STRICT_ALIGNMENT check to use targe...
Bernd Edlinger [Fri, 2 Aug 2019 17:28:27 +0000 (17:28 +0000)]
function.c (assign_parm_adjust_stack_rtl): Revise STRICT_ALIGNMENT check to use targetm.slow_unaligned_access instead.

2019-08-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * function.c (assign_parm_adjust_stack_rtl): Revise STRICT_ALIGNMENT
        check to use targetm.slow_unaligned_access instead.

From-SVN: r274025

5 years agore PR c++/77575 (Bogus error when alias template yielding a reference type used as...
Marek Polacek [Fri, 2 Aug 2019 17:26:02 +0000 (17:26 +0000)]
re PR c++/77575 (Bogus error when alias template yielding a reference type used as template template argument)

PR c++/77575
* g++.dg/cpp0x/nontype2.C: New test.

From-SVN: r274024

5 years agofunction.c (assign_param_data_one): Remove unused data members.
Bernd Edlinger [Fri, 2 Aug 2019 17:16:22 +0000 (17:16 +0000)]
function.c (assign_param_data_one): Remove unused data members.

2019-08-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * function.c (assign_param_data_one): Remove unused data members.

From-SVN: r274023

5 years agosimd_pcs_attribute.c: New test.
Steve Ellcey [Fri, 2 Aug 2019 16:04:14 +0000 (16:04 +0000)]
simd_pcs_attribute.c: New test.

2019-08-02  Steve Ellcey  <sellcey@marvell.com>

* gcc.target/aarch64/simd_pcs_attribute.c: New test.
* gcc.target/aarch64/simd_pcs_attribute-2.c: Ditto.
* gcc.target/aarch64/simd_pcs_attribute-3.c: Ditto.

From-SVN: r274020

5 years agoomp-simd-clone.c (simd_clone_adjust_return_type): Remove call to build_distinct_type_...
Steve Ellcey [Fri, 2 Aug 2019 16:01:15 +0000 (16:01 +0000)]
omp-simd-clone.c (simd_clone_adjust_return_type): Remove call to build_distinct_type_copy.

2019-08-02  Steve Ellcey  <sellcey@marvell.com>

* omp-simd-clone.c (simd_clone_adjust_return_type): Remove call to
build_distinct_type_copy.
(simd_clone_adjust_argument_types): Ditto.
(simd_clone_adjust): Call build_distinct_type_copy here.
(expand_simd_clones): Ditto.

From-SVN: r274019

5 years agore PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in...
Uros Bizjak [Fri, 2 Aug 2019 15:46:02 +0000 (17:46 +0200)]
re PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in array)

PR target/91201
* config/i386/sse.md (*vec_extractv16qi_zext): New insn pattern.

testsuite/ChangeLog:

PR target/91201
* gcc.target/i386/sse4_1-pr91201.c: New test.

From-SVN: r274018

5 years agotree-ssa-loop-im: simplify casts in comparators
Alexander Monakov [Fri, 2 Aug 2019 13:44:58 +0000 (16:44 +0300)]
tree-ssa-loop-im: simplify casts in comparators

* tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Simplify casts
from 'const void *'.
(sort_locs_in_loop_postorder_cmp): Likewise.

From-SVN: r274011

5 years agoPR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda.
Marek Polacek [Fri, 2 Aug 2019 13:26:06 +0000 (13:26 +0000)]
PR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda.

* pt.c (value_dependent_expression_p): Consider __PRETTY_FUNCTION__
inside a template function value-dependent.

* g++.dg/cpp1y/lambda-generic-pretty1.C: New test.

From-SVN: r274009

5 years ago* gcc.dg/torture/pr91323.c: Also check comparison results.
Uros Bizjak [Fri, 2 Aug 2019 12:21:40 +0000 (14:21 +0200)]
* gcc.dg/torture/pr91323.c: Also check comparison results.

From-SVN: r274008

5 years agoinvoke.texi (hot-bb-count-fraction): Rework description.
Eric Botcazou [Fri, 2 Aug 2019 10:09:04 +0000 (10:09 +0000)]
invoke.texi (hot-bb-count-fraction): Rework description.

* doc/invoke.texi (hot-bb-count-fraction): Rework description.
(hot-bb-count-ws-permille): Likewise.
(hot-bb-frequency-fraction): Likewise.
(unlikely-bb-count-fraction): Likewise.
* params.def (hot-bb-count-fraction): Rework description.
(hot-bb-count-ws-permille): Likewise.
(hot-bb-frequency-fraction): Likewise.
(unlikely-bb-count-fraction): Likewise.  Remove min and max values.
* predict.c (get_hot_bb_threshold): Deal with 0 HOT_BB_COUNT_FRACTION.

From-SVN: r274006

5 years agore PR target/91323 (LTGT rtx produces UCOMISS instead of COMISS)
Uros Bizjak [Fri, 2 Aug 2019 09:58:04 +0000 (11:58 +0200)]
re PR target/91323 (LTGT rtx produces UCOMISS instead of COMISS)

PR target/91323
* config/i386/i386-expand.c (ix86_unordered_fp_compare) <case LTGT>:
Return false.

testsuite/ChangeLog:

PR target/91323
* gcc.dg/torture/pr91323.c: New test.

From-SVN: r274005

5 years agovec.h (vec::sort): Add gcc_qsort_r support.
Richard Biener [Fri, 2 Aug 2019 09:31:34 +0000 (09:31 +0000)]
vec.h (vec::sort): Add gcc_qsort_r support.

2019-08-02  Richard Biener  <rguenther@suse.de>

* vec.h (vec::sort): Add gcc_qsort_r support.
(vec::bsearch): Add an overload with gcc_qsort_r style callbacks.
* tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Adjust
to gcc_qsort_r style callback.
(sort_locs_in_loop_postorder_cmp): Likewise.
(analyze_memory_references): Use gcc_sort_r interfaces.
(find_ref_loc_in_loop_cmp): Use new bsearch overload.

From-SVN: r274004

5 years agoProperly detect working jobserver in gcc driver.
Martin Liska [Fri, 2 Aug 2019 09:23:56 +0000 (11:23 +0200)]
Properly detect working jobserver in gcc driver.

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

PR lto/91313
* gcc.c (driver::maybe_run_linker): Call detect_jobserver
to detect working job server.
(driver::detect_jobserver): Test whether jobserver
is active from GCC driver. That will prevent situation where
GCC is invoked from a LD plugin and the linker already uses
file descriptors suggested by make.  That leads to a wrong
detection.
* gcc.h (driver): Add detect_jobserver.
* lto-wrapper.c (jobserver_active_p): Simplify sscanf by
not scanning for --jobserver-auth prefix.

From-SVN: r274003

5 years agotree.c (handle_nodiscard_attribute): Do not warn about nodiscard applied to a constru...
Paolo Carlini [Fri, 2 Aug 2019 08:52:42 +0000 (08:52 +0000)]
tree.c (handle_nodiscard_attribute): Do not warn about nodiscard applied to a constructor.

/cp
2019-08-02  Paolo Carlini  <paolo.carlini@oracle.com>

* tree.c (handle_nodiscard_attribute): Do not warn about nodiscard
applied to a constructor.

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

* g++.dg/cpp1z/nodiscard6.C: New.

From-SVN: r274002

5 years agoFix gcc.dg/torture/ssa-fre-{5,7}.c failure for avr
Senthil Kumar Selvaraj [Fri, 2 Aug 2019 08:47:04 +0000 (08:47 +0000)]
Fix gcc.dg/torture/ssa-fre-{5,7}.c failure for avr

The test assumes 32 bit integers (and pointers), and therefore
fails for the avr target, which has 16 bit integers.

Fix failure for avr by adding dg-require-effective-target int32.

gcc/testsuite/ChangeLog:

2019-08-02  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>

* gcc.dg/torture/ssa-fre-5.c: Add dg-require-effective-target int32.
* gcc.dg/torture/ssa-fre-7.c: Likewise.

From-SVN: r274001

5 years agopr88140.c: Move to ...
Uros Bizjak [Fri, 2 Aug 2019 08:39:09 +0000 (10:39 +0200)]
pr88140.c: Move to ...

* gcc.c-torture/pr88140.c: Move to ...
* gcc.c-torture/compile/pr88140.c: ... here.

From-SVN: r273999

5 years agore PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in...
Jakub Jelinek [Fri, 2 Aug 2019 08:28:31 +0000 (10:28 +0200)]
re PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in array)

PR tree-optimization/91201
* config/i386/i386-expand.c (ix86_expand_vector_extract): For elt == 0
V16QImode extraction without sse4.1 try to use V4SImode lowpart
extraction.

* gcc.target/i386/sse2-pr91201-3.c: New test.
* gcc.target/i386/sse2-pr91201-4.c: New test.
* gcc.target/i386/sse2-pr91201-5.c: New test.
* gcc.target/i386/sse2-pr91201-6.c: New test.

From-SVN: r273998

5 years agoquadmath.h (M_Eq, [...]): Use two more decimal places.
Jakub Jelinek [Fri, 2 Aug 2019 07:59:19 +0000 (09:59 +0200)]
quadmath.h (M_Eq, [...]): Use two more decimal places.

* quadmath.h (M_Eq, M_LOG2Eq, M_LOG10Eq, M_LN2q, M_LN10q, M_PIq,
M_PI_2q, M_PI_4q, M_1_PIq, M_2_PIq, M_2_SQRTPIq, M_SQRT2q,
M_SQRT1_2q): Use two more decimal places.

From-SVN: r273997

5 years agoMark DECL_SET_IS_OPERATOR_DELETE for user-provided delete operators.
Martin Liska [Fri, 2 Aug 2019 06:07:15 +0000 (08:07 +0200)]
Mark DECL_SET_IS_OPERATOR_DELETE for user-provided delete operators.

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

* decl.c (grok_op_properties):
Mark DECL_SET_IS_OPERATOR_DELETE for user-provided delete operators.
2019-08-02  Martin Liska  <mliska@suse.cz>

* g++.dg/cpp1y/new2.C: New test.

From-SVN: r273996

5 years agoFix gcc.dg/torture/ssa-fre-6.c failure for avr
Senthil Kumar Selvaraj [Fri, 2 Aug 2019 05:27:15 +0000 (05:27 +0000)]
Fix gcc.dg/torture/ssa-fre-6.c failure for avr

The test assumes 32 bit integers (and pointers), and therefore
fails for the avr target, which has 16 bit integers.

Fix failure for avr by adding dg-require-effective-target int32.

gcc/testsuite/ChangeLog

2019-08-02  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>

* gcc.dg/torture/ssa-fre-6.c: Add dg-require-effective-target int32.

From-SVN: r273995

5 years agoCheck -shared is available for pr87906_0.C
Kito Cheng [Fri, 2 Aug 2019 03:15:44 +0000 (03:15 +0000)]
Check -shared is available for pr87906_0.C

gcc/testsuite/ChangeLog:

* g++.dg/lto/pr87906_0.C: Add dg-require-effective-target shared check.

From-SVN: r273994

5 years agoDaily bump.
GCC Administrator [Fri, 2 Aug 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273993

5 years agoPR c++/90947 - Simple lookup table of array of strings is miscompiled
Martin Sebor [Thu, 1 Aug 2019 23:45:36 +0000 (23:45 +0000)]
PR c++/90947 - Simple lookup table of array of strings is miscompiled

gcc/cp/ChangeLog:

PR c++/90947
* decl.c (reshape_init_array_1): Avoid truncating initializer
lists containing string literals.

gcc/testsuite/ChangeLog:

PR c++/90947
* c-c++-common/array-1.c: New test.
* g++.dg/abi/mangle73.C: New test.
* g++.dg/cpp2a/nontype-class23.C: New test.
* g++.dg/init/array53.C: New test.

gcc/ChangeLog:

PR c++/90947
* tree.c (type_initializer_zero_p): Define.
* tree.h (type_initializer_zero_p): New function.

From-SVN: r273989

5 years ago* cfgrtl.c (relink_block_chain): Add line returns in dump file.
Eric Botcazou [Thu, 1 Aug 2019 21:02:17 +0000 (21:02 +0000)]
* cfgrtl.c (relink_block_chain): Add line returns in dump file.

From-SVN: r273988

5 years agocgraph.h (cgraph_edge::maybe_hot_p): Tweak comment.
Eric Botcazou [Thu, 1 Aug 2019 20:15:19 +0000 (20:15 +0000)]
cgraph.h (cgraph_edge::maybe_hot_p): Tweak comment.

* cgraph.h (cgraph_edge::maybe_hot_p): Tweak comment.
* cgraph.c (cgraph_edge::maybe_hot_p): Likewise.  Remove useless test.
* predict.c (maybe_hot_count_p): Likewise.
(maybe_hot_bb_p): Tweak comment.
(maybe_hot_edge_p): Likewise.
(probably_never_executed): Likewise.  Minor tweak.
(probably_never_executed_bb_p): Likewise.
(unlikely_executed_edge_p): Likewise.
(probably_never_executed_edge_p): Likewise.
(optimize_function_for_size_p): Likewise.
(optimize_function_for_speed_p): Likewise.
(function_optimization_type): Likewise.
(optimize_bb_for_size_p): Likewise.
(optimize_bb_for_speed_p): Likewise.
(bb_optimization_type): Likewise.
(optimize_edge_for_size_p): Likewise.
(optimize_edge_for_speed_p): Likewise.
(optimize_insn_for_size_p): Likewise.
(optimize_insn_for_speed_p): Likewise.
(optimize_loop_for_size_p): Likewise.
(optimize_loop_for_speed_p): Likewise.
(optimize_loop_nest_for_speed_p): Likewise.
(optimize_loop_nest_for_size_p): Likewise.
(predictable_edge_p): Likewise.
(handle_missing_profiles): Minor tweak.

From-SVN: r273983

5 years agoFix comment about use of @pcrel@got.
Michael Meissner [Thu, 1 Aug 2019 18:35:49 +0000 (18:35 +0000)]
Fix comment about use of @pcrel@got.

2019-08-01  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/predicates.md (pcrel_external_address): Update
comment.

From-SVN: r273982

5 years agore PR tree-optimization/85693 (Generation of SAD (Sum of Absolute Difference) instruc...
Uros Bizjak [Thu, 1 Aug 2019 18:07:19 +0000 (20:07 +0200)]
re PR tree-optimization/85693 (Generation of SAD (Sum of Absolute Difference) instruction)

PR target/85693
* config/i386/mmx.md (usadv8qi): New expander.

testsuite/ChangeLog:

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

From-SVN: r273981

5 years agore PR c++/90590 (enumeration value not handled in switch warning for std::ios_base...
Matthew Beliveau [Thu, 1 Aug 2019 18:04:23 +0000 (18:04 +0000)]
re PR c++/90590 (enumeration value not handled in switch warning for std::ios_base::seek_dir)

PR c++/90590

* c-warn.c (c_do_switch_warnings): Suppress warning for enumerators
with reserved names that are in a system header.

* c-c++-common/pr90590-1.c: New test.
* c-c++-common/pr90590-1.h: New test.
* c-c++-common/pr90590-2.c: New test.
* c-c++-common/pr90590-2.h: New test.

From-SVN: r273980

5 years agommx.md (vec_extractv2si_0): Add (r,x) alternative.
Uros Bizjak [Thu, 1 Aug 2019 17:32:13 +0000 (19:32 +0200)]
mmx.md (vec_extractv2si_0): Add (r,x) alternative.

* config/i386/mmx.md (vec_extractv2si_0): Add (r,x) alternative.
(*vec_extractv2si_0_zext_sse4): New insn pattern.
(*vec_extractv2si_0_zext): Ditto.
(*vec_extractv2si_1): Add (rm,x) alternative.
(*vec_extractv2si_1_zext): New insn pattern.
(*vec_extractv2si_zext_mem): Add "TARGET_MMX || TARGET_MMX_WITH_SSE"
insn constraint.

From-SVN: r273979

5 years agodomwalk: use gcc_sort_r
Richard Biener [Thu, 1 Aug 2019 17:16:48 +0000 (17:16 +0000)]
domwalk: use gcc_sort_r

2019-08-01  Richard Biener  <rguenther@suse.de>

* domwalk.c (bb_postorder): Remove static variable.
(cmp_bb_postorder): Adjust.
(sort_bbs_postorder): Adjust and use gcc_sort_r.
(dom_walker::walk): Adjust.

From-SVN: r273978

5 years agosort.cc: introduce gcc_sort_r
Alexander Monakov [Thu, 1 Aug 2019 17:14:53 +0000 (20:14 +0300)]
sort.cc: introduce gcc_sort_r

* sort.cc (sort_r_ctx): New struct.
(reorder23): Make templated on context type.
(reorder45): Ditto.
(cmp1): Ditto.  Adjust signature.
(netsort): Ditto.
(mergesort): Ditto.
[CHECKING_P] (cmp2to3): New static function.  Use it...
(gcc_qsort) [CHECKING_P]: ...here.
(gcc_sort_r): New function.
* system.h (sort_r_cmp_fn): New function typedef.
(qsort_chk): Adjust signature.
(gcc_sort_r): Declare.
* vec.c (qsort_chk_error): Adjust.
(qsort_chk): Adjust.

From-SVN: r273977

5 years agoPR c++/90805 - detect narrowing in case values.
Marek Polacek [Thu, 1 Aug 2019 16:27:04 +0000 (16:27 +0000)]
PR c++/90805 - detect narrowing in case values.

* decl.c (case_conversion): Detect narrowing in case values.

* c-c++-common/pr89888.c: Update expected dg-error.
* g++.dg/cpp0x/Wnarrowing17.C: New test.
* g++.dg/cpp0x/enum28.C: Update expected dg-error.

From-SVN: r273976

5 years agoImplement C++20 p0202 - Add Constexpr Modifiers to Functions in <algorithm> and ...
Edward Smith-Rowland [Thu, 1 Aug 2019 15:25:42 +0000 (15:25 +0000)]
Implement C++20 p0202 - Add Constexpr Modifiers to Functions in <algorithm> and <utility> Headers.

2019-08-01  Edward Smith-Rowland  <3dw4rd@verizon.net>

Implement C++20 p0202 - Add Constexpr Modifiers to Functions
in <algorithm> and <utility> Headers.
Implement C++20 p1023 - constexpr comparison operators for std::array.
* include/bits/algorithmfwd.h (all_of, any_of, binary_search, copy,
copy_backward, copy_if, copy_n, equal_range, fill, find_end,
find_if_not, includes, is_heap, is_heap_until, is_partitioned,
is_permutation, is_sorted, is_sorted_until, iter_swap, lower_bound,
none_of, partition_copy, partition_point, remove, remove_if,
remove_copy, remove_copy_if, replace_copy, replace_copy_if,
reverse_copy, rotate_copy, uunique, upper_bound, adjacent_find, count,
count_if, equal, find, find_first_of, find_if, for_each, generate,
generate_n, lexicographical_compare, merge, mismatch, replace,
replace_if, search, search_n, set_difference, set_intersection,
set_symmetric_difference, set_union, transform, unique_copy):
Mark constexpr.
* include/bits/cpp_type_traits.h (__miter_base): Mark constexpr.
* include/bits/predefined_ops.h (_Iter_less_val::operator(),
_Val_less_iter::operator(), _Iter_equal_to_iter::operator(),
_Iter_equal_to_val::operator(), _Iter_equals_val::operator()):
 Use const ref instead of ref arg;
(_Iter_less_val, __iter_less_val, _Val_less_iter, __val_less_iter,
__iter_equal_to_iter, __iter_equal_to_val, __iter_comp_val,
_Iter_comp_val, _Val_comp_iter, __val_comp_iter, __iter_equals_val,
_Iter_equals_iter, __iter_comp_iter, _Iter_pred, __pred_iter,
_Iter_comp_to_val, __iter_comp_val, _Iter_comp_to_iter,
__iter_comp_iter): Mark constexpr.
* include/bits/stl_algo.h (__find_if, __find_if_not, __find_if_not_n,
__search, __search_n_aux, __search_n, __find_end, find_end, all_of,
none_of, any_of, find_if_not, is_partitioned, partition_point,
__remove_copy_if, remove_copy, remove_copy_if, copy_if, __copy_n,
copy_n, partition_copy, __remove_if, remove, remove_if, __adjacent_find,
__unique, unique, __unique_copy, reverse_copy, rotate_copy,
__unguarded_linear_insert, __insertion_sort, __unguarded_insertion_sort,
__final_insertion_sort, lower_bound, __upper_bound, upper_bound,
__equal_range, equal_range, binary_search, __includes, includes,
__next_permutation, __prev_permutation, __replace_copy_if, replace_copy,
replace_copy_if, __count_if, is_sorted, __is_sorted_until,
is_sorted_until, __is_permutation, is_permutation, for_each, find,
find_if, find_first_of, adjacent_find, count, count_if, search,
search_n, transform, replace, replace_if, generate, generate_n,
unique_copy, __merge, merge, __set_union, set_union, __set_intersection,
set_intersection, __set_difference, set_difference,
__set_symmetric_difference, set_symmetric_difference):  Mark constexpr.
* include/bits/stl_algobase.h (__memmove, __memcmp): New maybe constexpr
wrappers around __builtin_memmove and __builtin_memcmp
respectively;
(__niter_base, __niter_wrap, __copy_m, __copy_move_a, __copy_move_a2,
copy, move, __copy_move_b, __copy_move_backward_a,
__copy_move_backward_a2, copy_backward, move_backward, __fill_a, fill,
__fill_n_a, fill_n, equal, __lc_rai::__newlast1, __lc_rai::__cnd2,
__lexicographical_compare_impl, __lexicographical_compare,
__lexicographical_compare<true>::__lc, __lexicographical_compare_aux,
__lower_bound, lower_bound, equal, __equal4, lexicographical_compare,
__mismatch, mismatch, __is_heap_until, __is_heap, is_heap_until,
is_heap): Mark constexpr.
* include/bits/stl_heap.h (__is_heap_until, __is_heap, is_heap_until,
is_heap): Mark constexpr.
* include/bits/stl_iterator.h (__niter_base, __miter_base): Mark constexpr.
* include/std/array: Make comparison ops constexpr.
* include/std/utility: Make exchange constexpr.
* include/std/version (__cpp_lib_constexpr_algorithms): New macro.
* testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust.
* testsuite/23_containers/array/tuple_interface/
tuple_element_neg.cc: Adjust.
* testsuite/20_util/exchange/constexpr.cc: New.
* testsuite/23_containers/array/comparison_operators/constexpr.cc: New.
* testsuite/25_algorithms/constexpr_macro.cc: New.
* testsuite/25_algorithms/adjacent_find/constexpr.cc: New.
* testsuite/25_algorithms/all_of/constexpr.cc: New.
* testsuite/25_algorithms/any_of/constexpr.cc: New.
* testsuite/25_algorithms/binary_search/constexpr.cc: New.
* testsuite/25_algorithms/copy/constexpr.cc: New.
* testsuite/25_algorithms/copy_backward/constexpr.cc: New.
* testsuite/25_algorithms/copy_if/constexpr.cc: New.
* testsuite/25_algorithms/copy_n/constexpr.cc: New.
* testsuite/25_algorithms/count/constexpr.cc: New.
* testsuite/25_algorithms/count_if/constexpr.cc: New.
* testsuite/25_algorithms/equal/constexpr.cc: New.
* testsuite/25_algorithms/equal_range/constexpr.cc: New.
* testsuite/25_algorithms/fill/constexpr.cc: New.
* testsuite/25_algorithms/fill_n/constexpr.cc: New.
* testsuite/25_algorithms/find/constexpr.cc: New.
* testsuite/25_algorithms/find_end/constexpr.cc: New.
* testsuite/25_algorithms/find_first_of/constexpr.cc: New.
* testsuite/25_algorithms/find_if/constexpr.cc: New.
* testsuite/25_algorithms/find_if_not/constexpr.cc: New.
* testsuite/25_algorithms/for_each/constexpr.cc: New.
* testsuite/25_algorithms/generate/constexpr.cc: New.
* testsuite/25_algorithms/generate_n/constexpr.cc: New.
* testsuite/25_algorithms/is_heap/constexpr.cc: New.
* testsuite/25_algorithms/is_heap_until/constexpr.cc: New.
* testsuite/25_algorithms/is_partitioned/constexpr.cc: New.
* testsuite/25_algorithms/is_permutation/constexpr.cc: New.
* testsuite/25_algorithms/is_sorted/constexpr.cc: New.
* testsuite/25_algorithms/is_sorted_until/constexpr.cc: New.
* testsuite/25_algorithms/lexicographical_compare/constexpr.cc: New.
* testsuite/25_algorithms/lower_bound/constexpr.cc: New.
* testsuite/25_algorithms/merge/constexpr.cc: New.
* testsuite/25_algorithms/mismatch/constexpr.cc: New.
* testsuite/25_algorithms/none_of/constexpr.cc: New.
* testsuite/25_algorithms/partition_copy/constexpr.cc: New.
* testsuite/25_algorithms/partition_point/constexpr.cc: New.
* testsuite/25_algorithms/remove/constexpr.cc: New.
* testsuite/25_algorithms/remove_copy/constexpr.cc: New.
* testsuite/25_algorithms/remove_copy_if/constexpr.cc: New.
* testsuite/25_algorithms/remove_if/constexpr.cc: New.
* testsuite/25_algorithms/replace_copy/constexpr.cc: New.
* testsuite/25_algorithms/replace_copy_if/constexpr.cc: New.
* testsuite/25_algorithms/replace_if/constexpr.cc: New.
* testsuite/25_algorithms/reverse_copy/constexpr.cc: New.
* testsuite/25_algorithms/rotate_copy/constexpr.cc: New.
* testsuite/25_algorithms/search/constexpr.cc: New.
* testsuite/25_algorithms/search_n/constexpr.cc: New.
* testsuite/25_algorithms/set_difference/constexpr.cc: New.
* testsuite/25_algorithms/set_intersection/constexpr.cc: New.
* testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: New.
* testsuite/25_algorithms/set_union/constexpr.cc: New.
* testsuite/25_algorithms/transform/constexpr.cc: New.
* testsuite/25_algorithms/unique/constexpr.cc: New.
* testsuite/25_algorithms/unique_copy/constexpr.cc: New.
* testsuite/25_algorithms/upper_bound/constexpr.cc: New.

From-SVN: r273975

5 years agoFix pr89330_0.C test
Wilco Dijkstra [Thu, 1 Aug 2019 12:54:23 +0000 (12:54 +0000)]
Fix pr89330_0.C test

Fix pr89330_0.C test by adding missing effective target shared.
Committed as obvious.

   testsuite/
* gcc/testsuite/g++.dg/lto/pr89330_0.C: Add effective-target shared.

From-SVN: r273973

5 years agotree-ssa-pre.c (has_abnormal_preds): Remove global var.
Richard Biener [Thu, 1 Aug 2019 11:37:22 +0000 (11:37 +0000)]
tree-ssa-pre.c (has_abnormal_preds): Remove global var.

2019-08-01  Richard Biener  <rguenther@suse.de>

* tree-ssa-pre.c (has_abnormal_preds): Remove global var.
(compute_antic): Localize it here.

From-SVN: r273971

5 years agoMake-lang.in (lto.install-common): Remove unnecessary slash between $(DESTDIR) and...
Bernd Edlinger [Thu, 1 Aug 2019 08:45:29 +0000 (08:45 +0000)]
Make-lang.in (lto.install-common): Remove unnecessary slash between $(DESTDIR) and $(bindir).

2019-08-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * Make-lang.in (lto.install-common): Remove unnecessary slash
        between $(DESTDIR) and $(bindir).

From-SVN: r273969

5 years agoRISC-V: Fix testcase on rv64
Kito Cheng [Thu, 1 Aug 2019 06:33:48 +0000 (06:33 +0000)]
RISC-V: Fix testcase on rv64

gcc/testsuite/ChangeLog:

* gcc.target/riscv/attribute-10.c: Fix testcase on rv64.

From-SVN: r273968

5 years agoDaily bump.
GCC Administrator [Thu, 1 Aug 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273960

5 years agodecl2.c (delete_sanity): Improve diagnostic locations, use cp_expr_loc_or_loc in...
Paolo Carlini [Wed, 31 Jul 2019 21:50:04 +0000 (21:50 +0000)]
decl2.c (delete_sanity): Improve diagnostic locations, use cp_expr_loc_or_loc in four places.

/cp
2019-07-31  Paolo Carlini  <paolo.carlini@oracle.com>

* decl2.c (delete_sanity): Improve diagnostic locations, use
cp_expr_loc_or_loc in four places.

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

* g++.dg/diagnostic/delete1.C: New.

From-SVN: r273952

5 years agoRISC-V: Raise error on unexpected ISA string at end.
Maxim Blinov [Wed, 31 Jul 2019 21:36:41 +0000 (21:36 +0000)]
RISC-V: Raise error on unexpected ISA string at end.

2019-07-31  Maxim Blinov  <maxim.blinov@embecosm.com>
gcc/
* common/config/riscv/riscv-common.c: Check -march string ends
with null.
gcc/testsuite/
* gcc.target/riscv/attribute-10.c: New test.

From-SVN: r273951

5 years agoQualify call to prevent ADL
Jonathan Wakely [Wed, 31 Jul 2019 19:08:56 +0000 (20:08 +0100)]
Qualify call to prevent ADL

* include/std/memory (make_obj_using_allocator): Qualify call to
uses_allocator_construction_args.

From-SVN: r273945

5 years agoPR c++/90538 - multiple expansions of capture packs
Jason Merrill [Wed, 31 Jul 2019 18:50:00 +0000 (14:50 -0400)]
PR c++/90538 - multiple expansions of capture packs

Previously, with init-capture the type of the closure field was a
DECLTYPE_TYPE of the initializer.  But since each time we tsubst a lambda we
get a different lambda, that meant that if the initializer is a lambda, we'd
end up with different closure types in the field and initializer after
substitution (PR 87322).  We dealt with this by remembering the lambda
instantiation within each pack expansion element, using
local_specialization_stack to separate the elements.  But that broke this
testcase, because it lost lambda capture proxies that also use
local_specializations.

So, this patch removes the local_specializations changes from that patch and
fixes 87322 differently, by giving init-capture fields 'auto' type and doing
deduction later.  There's a bit of a kludge to get the right number of
fields by pretending that 'auto...' uses the parameter packs from the
initializer, but it does the trick.

* cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove.
* lambda.c (add_capture): Copy parameter packs from init.
(lambda_capture_field_type): Always use auto for init-capture.
* pt.c (uses_parameter_packs): Return tree.
(tsubst) [DECLTYPE_TYPE]: Remove init-capture handling.
(gen_elem_of_pack_expansion_instantiation): Don't push
local_specialization_stack.
(prepend_one_capture): New.
(tsubst_lambda_expr): Use it.  Don't touch local_specializations.
(do_auto_deduction): Avoid redundant error.

From-SVN: r273944

5 years agoFix copy_node of TEMPLATE_INFO.
Jason Merrill [Wed, 31 Jul 2019 18:49:28 +0000 (14:49 -0400)]
Fix copy_node of TEMPLATE_INFO.

build_clone uses copy_node to duplicate the TEMPLATE_INFO for a clone, but
this clears TREE_CHAIN, which was TI_ARGS in a TEMPLATE_INFO.

* cp-tree.h (struct tree_template_info): Use tree_base instead of
tree_common.  Add tmpl and args fields.
(TI_TEMPLATE, TI_ARGS): Adjust.

From-SVN: r273943

5 years agoipa-devirt: make qsort helpers static
Alexander Monakov [Wed, 31 Jul 2019 17:55:04 +0000 (20:55 +0300)]
ipa-devirt: make qsort helpers static

* ipa-devirt.c (type_warning_cmp): Make static.
(decl_warning_cmp): Ditto.

From-SVN: r273942

5 years agore PR target/91050 (-mdejagnu-cpu=<cpu> does not affect the -m<cpu> assembler option)
Peter Bergner [Wed, 31 Jul 2019 17:18:40 +0000 (17:18 +0000)]
re PR target/91050 (-mdejagnu-cpu=<cpu> does not affect the -m<cpu> assembler option)

PR target/91050
* config/rs6000/rs6000.opt (mdejagnu-cpu=): Delete option.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
use of deleted rs6000_dejagnu_cpu_index variable.
* config/rs6000/rs6000.h (DRIVER_SELF_SPECS): Define.
(SUBTARGET_DRIVER_SELF_SPECS): Likewise.
* config/darwin.h (DRIVER_SELF_SPECS): Rename from this ...
(SUBTARGET_DRIVER_SELF_SPECS): ...to this.
* config/i386/i386.h (DRIVER_SELF_SPECS): Define.
(SUBTARGET_DRIVER_SELF_SPECS): Likewise.

From-SVN: r273941

5 years agoImplement "P0631R4 Math Constants" for C++20
Jonathan Wakely [Wed, 31 Jul 2019 16:40:39 +0000 (17:40 +0100)]
Implement "P0631R4 Math Constants" for C++20

The values of the constants are taken from Glibc where the equivalent
constant exists, or by rounding the actual constant to the same number
of digits as the Glibc constants have.

P0631R4 Math Constants
* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/precompiled/stdc++.h: Include new header.
* include/std/numbers: New header.
* include/std/version (__cpp_lib_math_constants): Define.
* testsuite/26_numerics/numbers/1.cc: New test.
* testsuite/26_numerics/numbers/2.cc: New test.
* testsuite/26_numerics/numbers/3.cc: New test.
* testsuite/26_numerics/numbers/nonfloat_neg.cc: New test.

From-SVN: r273940

5 years agoAdd Doxygen comments to <bit> header
Jonathan Wakely [Wed, 31 Jul 2019 14:38:50 +0000 (15:38 +0100)]
Add Doxygen comments to <bit> header

* include/std/bit: Add Doxygen comments.

From-SVN: r273938

5 years agoPR libstdc++/91308 fix constraints on unique_ptr assignment
Jonathan Wakely [Wed, 31 Jul 2019 14:38:26 +0000 (15:38 +0100)]
PR libstdc++/91308 fix constraints on unique_ptr assignment

PR libstdc++/91308
* include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove
constraints on deleter that should only apply to the constructor.
(unique_ptr<T[], D>::__safe_conversion_up): Likewise.
(unique_ptr<T[], D>::unique_ptr(unique_ptr<U, D>&&)): Restore
constraints on deleter here.
* testsuite/20_util/unique_ptr/assign/91308.cc: New test.

From-SVN: r273937

5 years agore PR tree-optimization/91280 (ICE in get_constraint_for_component_ref, at tree-ssa...
Richard Biener [Wed, 31 Jul 2019 14:38:21 +0000 (14:38 +0000)]
re PR tree-optimization/91280 (ICE in get_constraint_for_component_ref, at tree-ssa-structalias.c:3259 since r260354)

2019-07-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91280
* tree-ssa-structalias.c (get_constraint_for_component_ref):
Decompose MEM_REF manually for offset handling.

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

From-SVN: r273936

5 years agore PR c/91192 (non-deterministic ICE on invalid)
Jakub Jelinek [Wed, 31 Jul 2019 14:32:24 +0000 (16:32 +0200)]
re PR c/91192 (non-deterministic ICE on invalid)

PR c/91192
* c-parser.c (c_parser_sizeof_expression): Call set_c_expr_source_range
even if finish is UNKNOWN_LOCATION, just use start as finish in that
case.

From-SVN: r273935

5 years agore PR tree-optimization/91293 (Wrong code with -O3 -mavx2)
Richard Biener [Wed, 31 Jul 2019 14:15:37 +0000 (14:15 +0000)]
re PR tree-optimization/91293 (Wrong code with -O3 -mavx2)

2019-07-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91293
* tree-vect-slp.c (vect_build_slp_tree_2): Do not swap operands
of reduction stmts.

* gcc.dg/vect/pr91293-1.c: New testcase.
* gcc.dg/vect/pr91293-2.c: Likewise.
* gcc.dg/vect/pr91293-3.c: Likewise.

From-SVN: r273934

5 years agoconfig.gcc (hppa*-*-netbsd*): New target.
Matt Thomas [Wed, 31 Jul 2019 14:11:16 +0000 (14:11 +0000)]
config.gcc (hppa*-*-netbsd*): New target.

gcc/ChangeLog:
* config.gcc (hppa*-*-netbsd*): New target.
* config/pa/pa-netbsd.h: New file.
* config/pa/pa32-netbsd.h: New file.

libgcc/ChangeLog:
* config.host (hppa*-*-netbsd*): New case.
* config/pa/t-netbsd: New file.

Co-Authored-By: Matthew Green <mrg@eterna.com.au>
Co-Authored-By: Maya Rashish <coypu@sdf.org>
Co-Authored-By: Nick Hudson <nick@nthcliff.demon.co.uk>
From-SVN: r273933

5 years agore PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in...
Jakub Jelinek [Wed, 31 Jul 2019 13:49:26 +0000 (15:49 +0200)]
re PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in array)

PR tree-optimization/91201
* config/i386/mmx.md (reduc_plus_scal_v8qi): New expander.

* gcc.target/i386/sse2-pr91201-2.c: New test.

From-SVN: r273932

5 years agoRemove amdgcn expcnt waits.
Andrew Stubbs [Wed, 31 Jul 2019 11:51:21 +0000 (11:51 +0000)]
Remove amdgcn expcnt waits.

2019-07-31  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md
(scatter<mode>_insn_1offset<exec_scatter>): Remove s_waitcnt.
(scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
(scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
* config/gcn/gcn.c (gcn_md_reorg): Add delayeduse and reads to
struct ilist. Add nops for delayeduse insns.
* config/gcn/gcn.md (delayeduse): New attribute.
(*movbi): Remove s_waitcnt from stores.
(*mov<mode>_insn): Likewise.
(*movti_insn): Likewise. Add delayeduse attribute.
(sync_compare_and_swap<mode>_insn): Add delayeduse attribute.
(atomic_store<mode>): Remove or adjust s_waitcnt.

From-SVN: r273931

5 years agovr-values.h (vr_values::swap_vr_value): New.
Richard Biener [Wed, 31 Jul 2019 10:55:27 +0000 (10:55 +0000)]
vr-values.h (vr_values::swap_vr_value): New.

2019-07-31  Richard Biener  <rguenther@suse.de>

* vr-values.h (vr_values::swap_vr_value): New.
(vr_values::free_value_range): likewise.
* vr-values.c (vr_values::swap_vr_value): Implement.
* gimple-ssa-evrp-analyze.h (evrp_range_analyzer::pop_value_range):
Do not return a range or take a var.
(evrp_range_analyzer::stack): Change back to recording a non-const
value_range *.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_stmt): Free unused
value-range.
(evrp_range_analyzer::pop_to_marker): Adjust.
(evrp_range_analyzer::push_value_range): Use new swap_vr_value.
(evrp_range_analyzer::pop_value_range): Likewise.  Free the
no longer needed value-range.

From-SVN: r273930

5 years agoMark necessary 2nd and later args for delete op.
Martin Liska [Wed, 31 Jul 2019 10:02:30 +0000 (12:02 +0200)]
Mark necessary 2nd and later args for delete op.

2019-07-31  Martin Liska  <mliska@suse.cz>

* tree-ssa-dce.c (propagate_necessity): Delete operator can
have size and (or) alignment as 2nd and later arguments.
Mark all of them as necessary.

From-SVN: r273929

5 years agore PR tree-optimization/91178 (Infinite recursion in split_constant_offset in slp...
Richard Biener [Wed, 31 Jul 2019 09:46:18 +0000 (09:46 +0000)]
re PR tree-optimization/91178 (Infinite recursion in split_constant_offset in slp after r260289)

2019-07-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91178
* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
Use tail-recursion.

* gcc.dg/torture/pr91178-2.c: New testcase.

From-SVN: r273928

5 years agore PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in...
Jakub Jelinek [Wed, 31 Jul 2019 09:22:48 +0000 (11:22 +0200)]
re PR tree-optimization/91201 (SIMD not generated for horizontal sum of bytes in array)

PR tree-optimization/91201
* config/i386/sse.md (reduc_plus_scal_v16qi): New expander.
(REDUC_PLUS_MODE): Add V32QImode for TARGET_AVX and V64QImode for
TARGET_AVX512F.
(reduc_plus_scal_<mode>): Improve formatting by introducing
a temporary.

* gcc.target/i386/sse2-pr91201.c: New test.
* gcc.target/i386/avx2-pr91201.c: New test.
* gcc.target/i386/avx512bw-pr91201.c: New test.

From-SVN: r273927

5 years ago[GCC, AArch64] Enable Transactional Memory Extension
Sudakshina Das [Wed, 31 Jul 2019 09:19:53 +0000 (09:19 +0000)]
[GCC, AArch64] Enable Transactional Memory Extension

This patch enables the new Transactional Memory Extension announced recently
as part of Arm's new architecture technologies.
We introduce a new optional extension "tme" to enable this. The following
instructions are part of the extension:
   * tstart <Xt>
   * ttest <Xt>
   * tcommit
   * tcancel #<imm>
We have also added ACLE intrinsics for the instructions.

*** gcc/ChangeLog ***

2019-07-31  Sudakshina Das  <sudi.das@arm.com>

* config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Add
AARCH64_TME_BUILTIN_TSTART, AARCH64_TME_BUILTIN_TCOMMIT,
AARCH64_TME_BUILTIN_TTEST and AARCH64_TME_BUILTIN_TCANCEL.
(aarch64_init_tme_builtins): New.
(aarch64_init_builtins): Call aarch64_init_tme_builtins.
(aarch64_expand_builtin_tme): New.
(aarch64_expand_builtin): Handle TME builtins.
* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
__ARM_FEATURE_TME when enabled.
* config/aarch64/aarch64-option-extensions.def: Add "tme".
* config/aarch64/aarch64.h (AARCH64_FL_TME, AARCH64_ISA_TME): New.
(TARGET_TME): New.
* config/aarch64/aarch64.md (define_c_enum "unspec"): Add UNSPEC_TTEST.
(define_c_enum "unspecv"): Add UNSPECV_TSTART, UNSPECV_TCOMMIT and
UNSPECV_TCANCEL.
(tstart, ttest, tcommit, tcancel): New instructions.
* config/aarch64/arm_acle.h (__tstart, __tcommit): New.
(__tcancel, __ttest): New.
(_TMFAILURE_REASON, _TMFAILURE_RTRY, _TMFAILURE_CNCL): New macro.
(_TMFAILURE_MEM, _TMFAILURE_IMP, _TMFAILURE_ERR): Likewise.
(_TMFAILURE_SIZE, _TMFAILURE_NEST, _TMFAILURE_DBG): Likewise.
(_TMFAILURE_INT, _TMFAILURE_TRIVIAL): Likewise.
* config/arm/types.md: Add new tme type attr.
* doc/invoke.texi: Document "tme".

*** gcc/testsuite/ChangeLog ***

2019-07-31  Sudakshina Das  <sudi.das@arm.com>

* gcc.target/aarch64/acle/tme.c: New test.
* gcc.target/aarch64/pragma_cpp_predefs_2.c: New test.

From-SVN: r273926

5 years ago[Arm][CMSE]Add warn_unused_return attribute to cmse functions
Joel Hutton [Wed, 31 Jul 2019 08:56:35 +0000 (08:56 +0000)]
[Arm][CMSE]Add warn_unused_return attribute to cmse functions

At present it is possible to call the CMSE functions for checking
addresses (such as cmse_check_address_range) and  forget to check/use
the return value. This patch makes the interfaces more robust against
programmer error by marking these functions with the warn_unused_result
attribute. With this set, any use of these functions that does not use
the result will produce a warning.

This produces a warning on default warn levels when the result of the
cmse functions is not used.

For the following function:
void foo()
{
     int *data;
     cmse_check_address_range((int*)data, 0, 0);
}
The following warning is emitted:
warning: ignoring return value of 'cmse_check_address_range' declared
with attribute 'warn_unused_result' [-Wunused-result]
     6 |  cmse_check_address_range((int*)data, 0, 0);
        |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

gcc/ChangeLog:

2019-07-31  Joel Hutton  <Joel.Hutton@arm.com>

         * config/arm/arm_cmse.h (cmse_nonsecure_caller): Add
warn_unused_result attribute.
         (cmse_check_address_range): Add warn_unused_result attribute.

libgcc/ChangeLog:

2019-07-31  Joel Hutton  <Joel.Hutton@arm.com>

         * config/arm/cmse.c (cmse_check_address_range): Add
warn_unused_result attribute.

2019-07-31  Joel Hutton  <Joel.Hutton@arm.com>

         * gcc.target/arm/cmse/cmse-17.c: New test.

From-SVN: r273924

5 years agore PR tree-optimization/91257 (Compile-time and memory-hog hog)
Richard Biener [Wed, 31 Jul 2019 07:53:11 +0000 (07:53 +0000)]
re PR tree-optimization/91257 (Compile-time and memory-hog hog)

2019-07-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91257
* tree-vrp.c (union_ranges): Unify equality and less tests
by using compare_values.  Re-order cheap tests first.

From-SVN: r273923

5 years agore PR middle-end/91301 (ICE in omp_add_variable on random access iterator distribute...
Jakub Jelinek [Wed, 31 Jul 2019 07:49:56 +0000 (09:49 +0200)]
re PR middle-end/91301 (ICE in omp_add_variable on random access iterator distribute parallel for private (iterator))

PR middle-end/91301
* gimplify.c (gimplify_omp_for): If for class iterator on
distribute parallel for there is no data sharing clause
on inner_for_stmt, look for private clause on combined
parallel too and if found, move it to inner_for_stmt.

* testsuite/libgomp.c++/for-27.C: New test.

From-SVN: r273922

5 years agoMake lra use per-alternative earlyclobber info
Richard Sandiford [Wed, 31 Jul 2019 07:33:11 +0000 (07:33 +0000)]
Make lra use per-alternative earlyclobber info

lra_insn_reg and lra_operand_data have both a bitmask of earlyclobber
alternatives and an overall boolean.  The danger is that we then test
the overall boolean when really we should be testing for a particular
alternative.  This patch gets rid of the boolean and tests the mask
against zero when we really do need to test "any alternative might
be earlyclobber".  (I think the only instance of that is the
LRA_UNKNOWN_ALT handling in lra-lives.c:reg_early_clobber_p.)

This is needed (and tested) by an upcoming SVE patch.

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

gcc/
* lra-int.h (lra_operand_data): Remove early_clobber field.
(lra_insn_reg): Likewise.
* lra.c (debug_operand_data): Update accordingly.
(setup_operand_alternative): Likewise.
(new_insn_reg): Likewise.  Remove early_clobber parameter.
(collect_non_operand_hard_regs): Update call accordingly.
Don't assign to lra_insn_reg::early_clobber.
(add_regs_to_insn_regno_info): Remove early_clobber parameter
and update calls to new_insn_reg.
(lra_update_insn_regno_info): Update calls accordingly.
* lra-constraints.c (update_and_check_small_class_inputs): Take the
alternative number as a parameter and test whether the operand
is earlyclobbered in that particular alternative.
(process_alt_operands): Update call accordingly.  Use per-alternative
checks for earyclobber here too.
* lra-lives.c (reg_early_clobber_p): Check early_clobber_alts
against zero for IRA_UNKNOWN_ALT.

From-SVN: r273921

5 years agoDaily bump.
GCC Administrator [Wed, 31 Jul 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273920

5 years agoPR testsuite/91258 - g++.dg/ubsan/vla-1.C and gcc.dg/strlenopt-70.c fail starting...
Martin Sebor [Tue, 30 Jul 2019 20:42:36 +0000 (20:42 +0000)]
PR testsuite/91258 - g++.dg/ubsan/vla-1.C and gcc.dg/strlenopt-70.c fail starting with r273783

gcc/testsuite/ChangeLog:
* g++.dg/ubsan/vla-1.C: Suppress a valid warning.

From-SVN: r273915

5 years agore PR fortran/91296 (ICE when passing complex number %re/%im as a procedure argument...
Steven G. Kargl [Tue, 30 Jul 2019 20:02:27 +0000 (20:02 +0000)]
re PR fortran/91296 (ICE when passing complex number %re/%im as a procedure argument with -Waliasing.)

2019-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91296
* interface.c (compare_actual_expr): When checking for aliasing, add
a case to handle REF_INQUIRY (e.g., foo(x%re, x%im) do not alias).

2019-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91296
* gfortran.dg/pr91296.f90: New test.

From-SVN: r273914

5 years agoalpha.c (alpha_option_override): Quote a C type.
Uros Bizjak [Tue, 30 Jul 2019 16:24:59 +0000 (18:24 +0200)]
alpha.c (alpha_option_override): Quote a C type.

* config/alpha/alpha.c (alpha_option_override): Quote a C type.

From-SVN: r273912

5 years agoAdjust literal pool offset in Thumb-2 movsi patterns
Wilco Dijkstra [Tue, 30 Jul 2019 15:27:04 +0000 (15:27 +0000)]
Adjust literal pool offset in Thumb-2 movsi patterns

My previous change to the Thumb-2 movsi patterns caused a codesize regression
with -Os in large functions.  Fix this by using the literal pool offset of the
16-bit literal load so that the literal pool is dumped earlier, reducing the
number of 32-bit literal loads.

Bootstrap & regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57

    gcc/
* config/arm/thumb2.md (thumb2_movsi_insn): Adjust literal offset.
* config/arm/vfp.md (thumb2_movsi_vfp): Likewise.

From-SVN: r273911

5 years agoUse edge->indirect_unknown_callee in cgraph_edge::make_direct (PR ipa/89330).
Martin Liska [Tue, 30 Jul 2019 14:52:29 +0000 (16:52 +0200)]
Use edge->indirect_unknown_callee in cgraph_edge::make_direct (PR ipa/89330).

2019-07-30  Martin Liska  <mliska@suse.cz>

PR ipa/89330
* cgraph.c (cgraph_edge::make_direct): Use
edge->indirect_unknown_callee as edge->resolve_speculation can
deallocate edge which is this pointer.

From-SVN: r273910

5 years agore PR tree-optimization/91257 (Compile-time and memory-hog hog)
Richard Biener [Tue, 30 Jul 2019 14:16:24 +0000 (14:16 +0000)]
re PR tree-optimization/91257 (Compile-time and memory-hog hog)

2019-07-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91257
* bitmap.c (bitmap_ior_and_compl_into): Open-code.

From-SVN: r273909

5 years agoDeduce automatically number of cores for -flto option.
Martin Liska [Tue, 30 Jul 2019 13:45:11 +0000 (15:45 +0200)]
Deduce automatically number of cores for -flto option.

2019-07-30  Martin Liska  <mliska@suse.cz>

* doc/invoke.texi: Document new behavior.
* lto-wrapper.c (cpuset_popcount): New function
is a copy of libgomp/config/linux/proc.c.
(init_num_threads): Likewise.
(run_gcc): Automatically detect core count for -flto.
(jobserver_active_p): New function.

From-SVN: r273908

5 years agore PR tree-optimization/91257 (Compile-time and memory-hog hog)
Richard Biener [Tue, 30 Jul 2019 12:13:01 +0000 (12:13 +0000)]
re PR tree-optimization/91257 (Compile-time and memory-hog hog)

2019-07-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91257
* bitmap.h (bitmap_ior_into_and_free): Declare.
* bitmap.c (bitmap_list_unlink_element): Add defaulted param
whether to add the unliked element to the freelist.
(bitmap_list_insert_element_after): Add defaulted param for
an already allocated element.
(bitmap_ior_into_and_free): New function.
* tree-ssa-structalias.c (condense_visit): Reduce the
ponts-to and edge bitmaps of the SCC members in a
logarithmic fashion rather than all to one.

From-SVN: r273907

5 years agoMark 2nd argument of delete operator as needed (PR tree-optimization/91270).
Martin Liska [Tue, 30 Jul 2019 11:00:35 +0000 (13:00 +0200)]
Mark 2nd argument of delete operator as needed (PR tree-optimization/91270).

2019-07-30  Martin Liska  <mliska@suse.cz>

PR tree-optimization/91270
* tree-ssa-dce.c (propagate_necessity): Mark 2nd argument
of delete operator as needed.
2019-07-30  Martin Liska  <mliska@suse.cz>

PR tree-optimization/91270
* g++.dg/torture/pr91270.C: New test.

From-SVN: r273906

5 years agoHandle IFN_COND_MUL in tree-ssa-math-opts.c
Richard Sandiford [Tue, 30 Jul 2019 10:59:29 +0000 (10:59 +0000)]
Handle IFN_COND_MUL in tree-ssa-math-opts.c

This patch extends the FMA handling in tree-ssa-math-opts.c so
that it can cope with conditional multiplications as well as
unconditional multiplications.  The addition or subtraction must then
have the same condition as the multiplication (at least for now).

E.g. we can currently fold:

  (IFN_COND_ADD cond (mul x y) z fallback)
    -> (IFN_COND_FMA cond x y z fallback)

This patch also allows:

  (IFN_COND_ADD cond (IFN_COND_MUL cond x y <whatever>) z fallback)
    -> (IFN_COND_FMA cond x y z fallback)

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

gcc/
* tree-ssa-math-opts.c (convert_mult_to_fma): Add a mul_cond
parameter.  When nonnull, make sure that the addition or subtraction
has the same condition.
(math_opts_dom_walker::after_dom_children): Try convert_mult_to_fma
for CFN_COND_MUL too.

gcc/testsuite/
* gcc.dg/vect/vect-cond-arith-7.c: New test.

From-SVN: r273905

5 years agore PR tree-optimization/91291 (gcc.dg/20020312-2.c FAILs)
Richard Biener [Tue, 30 Jul 2019 08:57:35 +0000 (08:57 +0000)]
re PR tree-optimization/91291 (gcc.dg/20020312-2.c FAILs)

2019-07-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91291
* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Ignore
constant values.

From-SVN: r273903

5 years agore PR middle-end/91282 (gcc.dg/type-convert-var.c FAILs)
Jakub Jelinek [Tue, 30 Jul 2019 07:35:13 +0000 (09:35 +0200)]
re PR middle-end/91282 (gcc.dg/type-convert-var.c FAILs)

PR middle-end/91282
* gcc.dg/type-convert-var.c: Add -fexcess-precision=fast to
dg-additional-options.

From-SVN: r273899

5 years agore PR middle-end/91216 (OpenMP ICE starting with r265930)
Jakub Jelinek [Tue, 30 Jul 2019 07:28:22 +0000 (09:28 +0200)]
re PR middle-end/91216 (OpenMP ICE starting with r265930)

PR middle-end/91216
* omp-low.c (global_nonaddressable_vars): New variable.
(use_pointer_for_field): For global decls, if they are non-addressable,
remember it in the global_nonaddressable_vars bitmap, if they are
addressable and in the global_nonaddressable_vars bitmap, ignore their
TREE_ADDRESSABLE bit.
(omp_copy_decl_2): Clear TREE_ADDRESSABLE also on private copies of
vars in global_nonaddressable_vars bitmap.
(execute_lower_omp): Free global_nonaddressable_vars bitmap.

* gcc.dg/gomp/pr91216.c: New test.

From-SVN: r273898

5 years agore PR target/91150 (wrong code with -O -mavx512vbmi due to wrong writemask)
Jakub Jelinek [Tue, 30 Jul 2019 07:13:04 +0000 (09:13 +0200)]
re PR target/91150 (wrong code with -O -mavx512vbmi due to wrong writemask)

PR target/91150
* config/i386/i386-expand.c (expand_vec_perm_blend): Change mask type
from unsigned to unsigned HOST_WIDE_INT.  For E_V64QImode cast
comparison to unsigned HOST_WIDE_INT before shifting it left.

* gcc.target/i386/avx512bw-pr91150.c: New test.

From-SVN: r273897

5 years agoDaily bump.
GCC Administrator [Tue, 30 Jul 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273896

5 years agoi386.md (movstrict<mode>): Use register_operand predicate for operand 0.
Uros Bizjak [Mon, 29 Jul 2019 22:47:36 +0000 (00:47 +0200)]
i386.md (movstrict<mode>): Use register_operand predicate for operand 0.

* config/i386/i386.md (movstrict<mode>): Use register_operand
predicate for operand 0.  Add expander condition.  Assert that
operand 0 is a SUBREG RTX.
(*movstrict<mode>_1): Use register_operand predicate for operand 0.
Update operand constraints and insn condition.
(zero_extend<mode>si2_and): Do not call gen_movstrict<mode>.
(zero_extendqihi2_and): Do not call gen_movstrictqi.
(*setcc_qi_slp): Use register_operand predicate for operand 0.
Update operand 0 constraints.
(setcc_qi_slp splitters): Use register_operand predicate for operand 0.

From-SVN: r273891

5 years agoMSP430: Disallow use of code/data regions in the small memory model
Jozef Lawrynowicz [Mon, 29 Jul 2019 20:23:44 +0000 (20:23 +0000)]
MSP430: Disallow use of code/data regions in the small memory model

gcc/ChangeLog:

2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/msp430.h (DRIVER_SELF_SPECS): Define and emit errors
when -m{code,data}-region are used without -mlarge.
* config/msp430/msp430.c (msp430_option_override): Error when a
non-default code or data region is used without -mlarge.
(msp430_section_attr): Emit a warning and do not add upper/lower/either
attributes when they are used without -mlarge.

gcc/testsuite/ChangeLog:

2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc.target/msp430/pr78818-data-region.c: Add -mlarge to dg-options.
* gcc.target/msp430/region-misuse-code.c: New test.
* gcc.target/msp430/region-misuse-data.c: Likewise.
* gcc.target/msp430/region-misuse-code-data.c: Likewise.
* gcc.target/msp430/region-attribute-misuse.c: Likewise.

From-SVN: r273884

5 years agoAllow both upper and lower case 'r' in register names
Jozef Lawrynowicz [Mon, 29 Jul 2019 19:21:18 +0000 (19:21 +0000)]
Allow both upper and lower case 'r' in register names

2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR target/70320
* config/msp430/msp430.h: Define ADDITIONAL_REGISTER_NAMES.

2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR target/70320
* gcc.target/msp430/asm-register-names-lower-case.c: New test.
* gcc.target/msp430/asm-register-names-upper-case.c: Likewise.

From-SVN: r273883

5 years agoAdd PR number
Richard Sandiford [Mon, 29 Jul 2019 18:52:37 +0000 (18:52 +0000)]
Add PR number

From-SVN: r273882

5 years agoFix inchash handling of wide_ints (PR91242)
Richard Sandiford [Mon, 29 Jul 2019 18:50:25 +0000 (18:50 +0000)]
Fix inchash handling of wide_ints (PR91242)

inchash::hash::add_wide_int operated directly on the raw encoding
of the wide_int, including any redundant upper bits.  The problem
with that is that the upper bits are only defined for some wide-int
storage types (including wide_int itself).  wi::to_wide(tree) instead
returns a value that is extended according to the signedness of the
type (so that wi::to_widest can use the same encoding) while rtxes
have the awkward special case of BI, which can be zero-extended
rather than sign-extended.

In the PR, we computed a hash for a "normal" sign-extended wide_int
while the existing entries hashed wi::to_wide(tree).  This gives
different results for unsigned types that have the top bit set.

The patch fixes that by hashing the canonical sign-extended form even
if the raw encoding happens to be different.

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

gcc/
* wide-int.h (generic_wide_int::sext_elt): New function.
* inchash.h (hash::add_wide_int): Use it instead of elt.

From-SVN: r273881

5 years agore PR fortran/90813 (gfortran.dg/proc_ptr_51.f90 fails (SIGSEGV) after 272084)
Thomas Koenig [Mon, 29 Jul 2019 17:45:24 +0000 (17:45 +0000)]
re PR fortran/90813 (gfortran.dg/proc_ptr_51.f90 fails (SIGSEGV) after 272084)

2019-07-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90813
* dump-parse-tree.c (show_global_symbol): New function.
(gfc_dump_global_symbols): New function.
* gfortran.h (gfc_traverse_gsymbol): Add prototype.
(gfc_dump_global_symbols): Likewise.
* invoke.texi: Document -fdump-fortran-global.
* lang.opt: Add -fdump-fortran-global.
* parse.c (gfc_parse_file): Handle flag_dump_fortran_global.
* symbol.c (gfc_traverse_gsymbol): New function.
* trans-decl.c (sym_identifier): New function.
(mangled_identifier): New function, doing most of the work
of gfc_sym_mangled_identifier.
(gfc_sym_mangled_identifier): Use mangled_identifier.  Add mangled
identifier to global symbol table.
(get_proc_pointer_decl): Use backend decl from global identifier
if present.

From-SVN: r273880

5 years ago[arm] Make ACLE builtins use arm_* namespace for expanders
Kyrylo Tkachov [Mon, 29 Jul 2019 15:31:53 +0000 (15:31 +0000)]
[arm] Make ACLE builtins use arm_* namespace for expanders

The builtins from <arm_acle.h> use fairly general expander names such as
"crc", "mcr" etc.
These run the risk of being reserved by the midend in the future.
Let's namespace them to arm_* as is convention.

* config/arm/arm-builtins.c (acle_builtin_data): Expand VAR1 to
CODE_FOR_arm_##.
* config/arm/arm.md (<crc_variant>): Rename to...
(arm_<crc_variant>): ... This.
(<cdp>): Rename to...
(arm_<cdp>): ... This.
(<ldc>): Rename to...
(arm_<ldc>): ... This.
(<stc>): Rename to...
(arm_<stc>): ... This.
(<mcr>): Rename to...
(arm_<mcr>): ... This.
(<mrc>): Rename to...
(arm_<mrc>): ... This.
(<mcrr>): Rename to...
(arm_<mcrr>): ... This.
(<mrrc>): Rename to...
(arm_<mrrc>): ... This.

From-SVN: r273879