gcc.git
7 years agore PR c++/79474 (Multiple definitions of user-defined conversion operator cause ICE...
Paolo Carlini [Wed, 18 Oct 2017 07:24:50 +0000 (07:24 +0000)]
re PR c++/79474 (Multiple definitions of user-defined conversion operator cause ICE (internal compiler error))

2017-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79474
* g++.dg/cpp1y/auto-fn44.C: New.

From-SVN: r253841

7 years agoDaily bump.
GCC Administrator [Wed, 18 Oct 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253840

7 years agotree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if the use statement...
Eric Botcazou [Tue, 17 Oct 2017 21:53:34 +0000 (21:53 +0000)]
tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if the use statement can throw internally.

* tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
the use statement can throw internally.

From-SVN: r253834

7 years ago* gcc.dg/attr-alloc_size-11.c: UnXFAIL for visium-*-*.
Eric Botcazou [Tue, 17 Oct 2017 20:34:29 +0000 (20:34 +0000)]
* gcc.dg/attr-alloc_size-11.c: UnXFAIL for visium-*-*.

From-SVN: r253831

7 years agovisium.c (visium_select_cc_mode): Return CCmode for any RTX present on the RHS of...
Eric Botcazou [Tue, 17 Oct 2017 20:28:33 +0000 (20:28 +0000)]
visium.c (visium_select_cc_mode): Return CCmode for any RTX present on the RHS of a SET.

* config/visium/visium.c (visium_select_cc_mode): Return CCmode
for any RTX present on the RHS of a SET.
* compare-elim.c (try_eliminate_compare): Restore comment.

From-SVN: r253830

7 years agolanghooks.h (struct lang_hooks): Document that tree_size langhook may be also called...
Jakub Jelinek [Tue, 17 Oct 2017 20:11:00 +0000 (22:11 +0200)]
langhooks.h (struct lang_hooks): Document that tree_size langhook may be also called on tcc_type nodes.

* langhooks.h (struct lang_hooks): Document that tree_size langhook
may be also called on tcc_type nodes.
* langhooks.c (lhd_tree_size): Likewise.

* gcc-interface/misc.c (gnat_tree_size): New function.
(LANG_HOOKS_TREE_SIZE): Redefine.

From-SVN: r253829

7 years agore PR c++/71821 (ICE on invalid C++11 code (incorrect argument for alignas): unexpect...
Paolo Carlini [Tue, 17 Oct 2017 19:49:06 +0000 (19:49 +0000)]
re PR c++/71821 (ICE on invalid C++11 code (incorrect argument for alignas): unexpected expression ‘f<int>’ of kind template_id_expr)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71821
* g++.dg/cpp0x/alignas12.C: New.

From-SVN: r253828

7 years agoSimplify format_warning_at_substring API
David Malcolm [Tue, 17 Oct 2017 19:41:01 +0000 (19:41 +0000)]
Simplify format_warning_at_substring API

The format_warning_at_substring API has a rather clunk way of indicating
the location of the pertinent param (if any): a source_range * is passed
in, which can be NULL.  Doing so requires extracting a range from the
location_t and passing around a pointer to it, or NULL, as needed.

This patch simplifies things by eliminating the source_range * in
favor of a location_t, with UNKNOWN_LOCATION used to signify that
no param location is available.

gcc/c-family/ChangeLog:
* c-format.c (format_warning_at_char): Pass UNKNOWN_LOCATION
rather than NULL to format_warning_va.
(check_format_types): Likewise when calling format_type_warning.
Remove code to extract source_ranges and source_range * in favor
of just a location_t.
(format_type_warning): Convert source_range * param to a
location_t.

gcc/ChangeLog:
* gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
format_warning_at_substring.
(maybe_warn): Convert source_range * param to a location_t.  Pass
UNKNOWN_LOCATION rather than NULL to fmtwarn.
(format_directive): Remove code to extract source_ranges and
source_range * in favor of just a location_t.
(parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
fmtwarn.
* substring-locations.c (format_warning_va): Convert
source_range * param to a location_t.
(format_warning_at_substring): Likewise.
* substring-locations.h (format_warning_va): Likewise.
(format_warning_at_substring): Likewise.

From-SVN: r253827

7 years agore PR c++/71368 ([concepts] ICE on constrained compound requirement)
Paolo Carlini [Tue, 17 Oct 2017 19:36:49 +0000 (19:36 +0000)]
re PR c++/71368 ([concepts] ICE on constrained compound requirement)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71368
* g++.dg/concepts/pr71368.C: New.

From-SVN: r253826

7 years agoAdd gcc_checking_assert for sbitmap.c.
Martin Liska [Tue, 17 Oct 2017 19:17:36 +0000 (19:17 +0000)]
Add gcc_checking_assert for sbitmap.c.

From-SVN: r253825

7 years ago* i386/i386.c (x86_builtin_vectorization_cost): Likewise.
Jan Hubicka [Tue, 17 Oct 2017 17:37:23 +0000 (19:37 +0200)]
* i386/i386.c (x86_builtin_vectorization_cost): Likewise.

From-SVN: r253824

7 years agotarget.h (enum vect_cost_for_stmt): Add vec_gather_load and vec_scatter_store
Jan Hubicka [Tue, 17 Oct 2017 17:35:54 +0000 (19:35 +0200)]
target.h (enum vect_cost_for_stmt): Add vec_gather_load and vec_scatter_store

* target.h (enum vect_cost_for_stmt): Add vec_gather_load and
vec_scatter_store
* tree-vect-stmts.c (record_stmt_cost): Make difference between normal
and scatter/gather ops.

* aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
vec_gather_load and vec_scatter_store.
* arm/arm.c (arm_builtin_vectorization_cost): Likewise.
* powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
* rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
* s390/s390.c (s390_builtin_vectorization_cost): Likewise.
* spu/spu.c (spu_builtin_vectorization_cost): Likewise.

From-SVN: r253823

7 years agoreg-stack.c (compare_for_stack_reg): Add bool argument.
Uros Bizjak [Tue, 17 Oct 2017 16:35:11 +0000 (18:35 +0200)]
reg-stack.c (compare_for_stack_reg): Add bool argument.

* reg-stack.c (compare_for_stack_reg): Add bool argument.
Detect FTST instruction and handle its register pops.  Only pop
second operand if can_pop_second_op is true.
(subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
set can_pop_second_op to false in the compare_for_stack_reg call.

* config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
output_fp_compare for stack register operands.
* config/i386/i386.c (output_fp_compare): Do not output SSE compare
instructions here.  Do not emit stack register pops here.  Assert
that FCOMPP pops next to top stack register.  Rewrite function.

From-SVN: r253821

7 years ago[C++ PATCH 82560] missing dtor call
Nathan Sidwell [Tue, 17 Oct 2017 15:52:21 +0000 (15:52 +0000)]
[C++ PATCH 82560] missing dtor call

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01068.html
PR c++/82560
* call.c (build_over_call): Don't pass tf_no_cleanup to nested
calls.

PR c++/82560
* g++.dg/cpp0x/pr82560.C: New.

From-SVN: r253820

7 years ago[PATCH, middle-end/82577] Fix DECL_ASSEMBLER_NAME ICE
Nathan Sidwell [Tue, 17 Oct 2017 15:42:19 +0000 (15:42 +0000)]
[PATCH, middle-end/82577] Fix DECL_ASSEMBLER_NAME ICE

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01067.html
gcc/
PR middle-end/82577
* alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
use DECL_ASSEMBLER_NAME_RAW.

gcc/testsuite/
PR middle-end/82577
* g++.dg/opt/pr82577.C: New.

From-SVN: r253819

7 years ago[PATCH PR/82546] tree node size
Nathan Sidwell [Tue, 17 Oct 2017 14:49:05 +0000 (14:49 +0000)]
[PATCH PR/82546] tree node size

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00899.html
PR middle-end/82546
gcc/
* tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
TYPE nodes.
gcc/cp/
* cp-objcp-common.c (cp_tree_size): Reformat.  Adjust returns size
of TYPE nodes.
gcc/objc/
* objc-act.c (objc_common_tree_size): Return size of TYPE nodes.

From-SVN: r253817

7 years agore PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)
Qing Zhao [Tue, 17 Oct 2017 14:17:17 +0000 (14:17 +0000)]
re PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)

gcc/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        * builtins.c (expand_builtin_update_setjmp_buf): Add a
        converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        PR middle-end/80295
        * gcc.target/aarch64/pr80295.c: New test.

From-SVN: r253815

7 years agore PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)
Qing Zhao [Tue, 17 Oct 2017 14:16:35 +0000 (14:16 +0000)]
re PR middle-end/80295 (ICE in __builtin_update_setjmp_buf expander)

gcc/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        * builtins.c (expand_builtin_update_setjmp_buf): Add a
        converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao <qing.zhao@oracle.com>
    Wilco Dijkstra <wilco.dijkstra@arm.com>

        PR middle-end/80295
        * gcc.target/aarch64/pr80295.c: New test.

Co-Authored-By: Wilco Dijkstra <wdijkstr@arm.com>
From-SVN: r253814

7 years agographite-dependences.c (scop_get_reads_and_writes): Change output parameters to refer...
Richard Biener [Tue, 17 Oct 2017 13:56:14 +0000 (13:56 +0000)]
graphite-dependences.c (scop_get_reads_and_writes): Change output parameters to references.

2017-10-17  Richard Biener  <rguenther@suse.de>

* graphite-dependences.c (scop_get_reads_and_writes): Change
output parameters to references.

From-SVN: r253813

7 years agoFactor out division by squares and remove division around comparisons (0/2)
Jackson Woodruff [Tue, 17 Oct 2017 13:22:48 +0000 (13:22 +0000)]
Factor out division by squares and remove division around comparisons (0/2)

Commit gcc/fold-const.c missing from r252827:

    gcc/
PR 71026/tree-optimization
* fold-const.c (distribute_real_division): Removed.
(fold_binary_loc): Remove calls to distribute_real_divison.

From-SVN: r253812

7 years ago2017-10-17 Richard Biener <rguenther@suse.de>
Richard Biener [Tue, 17 Oct 2017 13:19:51 +0000 (13:19 +0000)]
2017-10-17  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c
(scop_detection::stmt_has_simple_data_refs_p): Always use
the full nest as region.
(try_generate_gimple_bb): Likewise.
* sese.c (scalar_evolution_in_region): Simplify now that
SCEV can handle instantiation in regions.
* tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
in the non-loop part of a function if requested.

From-SVN: r253811

7 years agore PR tree-optimization/82563 ([graphite] ICE in check_loop_closed_ssa_def, at tree...
Richard Biener [Tue, 17 Oct 2017 13:17:30 +0000 (13:17 +0000)]
re PR tree-optimization/82563 ([graphite] ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709)

2017-10-17  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82563
* graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
New function.
(graphite_regenerate_ast_isl): Call it.
* graphite-scop-detection.c (build_scops): Remove entry edge split.

* gcc.dg/graphite/pr82563.c: New testcase.

From-SVN: r253809

7 years agoRestore "dg-do run" directives for libgomp.oacc-fortran/declare-*.f90
Thomas Schwinge [Tue, 17 Oct 2017 11:17:00 +0000 (13:17 +0200)]
Restore "dg-do run" directives for libgomp.oacc-fortran/declare-*.f90

libgomp/
* testsuite/libgomp.oacc-fortran/declare-1.f90: Restore "dg-do
run" directive.
* testsuite/libgomp.oacc-fortran/declare-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-3.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-4.f90: Likewise.
* testsuite/libgomp.oacc-fortran/declare-5.f90: Likewise.

From-SVN: r253808

7 years agore PR c++/67831 (Internal error on complicated constexpr initialization.)
Paolo Carlini [Tue, 17 Oct 2017 09:06:53 +0000 (09:06 +0000)]
re PR c++/67831 (Internal error on complicated constexpr initialization.)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67831
* g++.dg/cpp0x/constexpr-ice18.C: New.

From-SVN: r253807

7 years agore PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements)
Paolo Carlini [Tue, 17 Oct 2017 08:38:07 +0000 (08:38 +0000)]
re PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82570
* g++.dg/cpp1z/constexpr-lambda18.C: New.

From-SVN: r253806

7 years agore PR tree-optimization/82549 (ICE at -O1 and above: verify_gimple failed)
Jakub Jelinek [Tue, 17 Oct 2017 07:38:32 +0000 (09:38 +0200)]
re PR tree-optimization/82549 (ICE at -O1 and above: verify_gimple failed)

PR tree-optimization/82549
* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
Formatting fixes.  Instead of calling make_bit_field_ref with negative
bitpos return 0.

* gcc.c-torture/compile/pr82549.c: New test.

From-SVN: r253805

7 years agoImprove FAIL message for dump-*-times functions.
Martin Liska [Tue, 17 Oct 2017 07:31:30 +0000 (09:31 +0200)]
Improve FAIL message for dump-*-times functions.

2017-10-17  Martin Liska  <mliska@suse.cz>

* lib/scanasm.exp: Print how many times a regex pattern is
found.
* lib/scandump.exp: Likewise.

From-SVN: r253804

7 years agoAdd missing REDUCE[SD,SS] intrinsics
Olga Makhotina [Tue, 17 Oct 2017 07:12:45 +0000 (07:12 +0000)]
Add missing REDUCE[SD,SS] intrinsics

gcc/
* config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
_mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
_mm_maskz_reduce_ss): New.
* config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
__builtin_ia32_reducess_mask): Ditto..
(__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
* config/i386/sse.md (reduces<mode>): Renamed to ...
(reduces<mode><mask_scalar_name>): ... this.
(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}): Changed
to ...
(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
%0<mask_scalar_operand4>, %1, %2, %3}): ... this.

gcc/testsuite/
* gcc.target/i386/avx512dq-vreducesd-1.c (_mm_mask_reduce_sd,
_mm_maskz_reduce_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vreducesd-2.c: New.
* gcc.target/i386/avx512dq-vreducess-1.c (_mm_mask_reduce_ss,
_mm_maskz_reduce_ss): Test new intrinsics.
* gcc.target/i386/avx512dq-vreducess-2.c: New.
* gcc.target/i386/avx-1.c (__builtin_ia32_reducesd,
__builtin_ia32_reducess): Remove builtin.
(__builtin_ia32_reducesd_mask,
__builtin_ia32_reducess_mask): Test new builtin.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.

From-SVN: r253803

7 years agoDaily bump.
GCC Administrator [Tue, 17 Oct 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253801

7 years agoMAINTAINERS (write after approval): Add myself.
Igor Tsimbalist [Mon, 16 Oct 2017 21:36:39 +0000 (23:36 +0200)]
MAINTAINERS (write after approval): Add myself.

ChangeLog:

2017-10-16  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>

        * MAINTAINERS (write after approval): Add myself.

Index: MAINTAINERS
===================================================================
--- MAINTAINERS (revision 253797)
+++ MAINTAINERS (working copy)
@@ -603,6 +603,7 @@
 Philipp Tomsich                                        <philipp.tomsich@theobroma-systems.com>
 Konrad Trifunovic                              <konrad.trifunovic@inria.fr>
 Markus Trippelsdorf                            <markus@trippelsdorf.de>
+Igor Tsimbalist                                        <igor.v.tsimbalist@intel.com>
 Martin Uecker                                  <uecker@eecs.berkeley.edu>
 David Ung                                      <davidu@mips.com>
 Neil Vachharajani                              <nvachhar@gmail.com>

From-SVN: r253798

7 years agoAdd gnu::unique_ptr
David Malcolm [Mon, 16 Oct 2017 20:50:40 +0000 (20:50 +0000)]
Add gnu::unique_ptr

This is a version of the patch posted by Trevor Saunders on 2017-07-31,
for which he wrote:
> For most of the history of this see
>   https://sourceware.org/ml/gdb-patches/2016-10/msg00223.html
> The changes are mostly s/gdb/gtl/g

This version was updated by me (dmalcolm) adding these changes:
- renaming of "gtl" to "gnu" (3 letters, and one of the ones Richi
  proposed, and not a match for "*tl")
- renaming of DEFINE_GDB_UNIQUE_PTR to DEFINE_GNU_UNIQUE_PTR
- renaming of xfree_deleter to xmalloc_deleter, and making it
  use "free" rather than "xfree" (which doesn't exist)
- added a gcc/unique-ptr-tests.cc
- implement unique_xmalloc_ptr<T[]> (taken from gdb, but changing
  "xfree" to "free", and adding support for pre-C++-11)

gcc/ChangeLog:

David Malcolm <dmalcolm@redhat.com>

* Makefile.in (OBJS): Add unique-ptr-tests.o.
* selftest-run-tests.c (selftest::run_tests): Call
selftest::unique_ptr_tests_cc_tests.
* selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
* unique-ptr-tests.cc: New file.

include/ChangeLog:

Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
David Malcolm <dmalcolm@redhat.com>

* unique-ptr.h: New file.

From-SVN: r253797

7 years agore PR sanitizer/82353 (runtime ubsan crash)
Vladimir Makarov [Mon, 16 Oct 2017 20:34:53 +0000 (20:34 +0000)]
re PR sanitizer/82353 (runtime ubsan crash)

2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>

PR sanitizer/82353
* lra.c (collect_non_operand_hard_regs): Don't ignore operator
locations.
* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
(make_hard_regno_born, make_hard_regno_dead): Update
bb_killed_pseudos and bb_gen_pseudos for fixed regs.

From-SVN: r253796

7 years agoFix attrib-5.c test-case.
Martin Liska [Mon, 16 Oct 2017 19:45:02 +0000 (21:45 +0200)]
Fix attrib-5.c test-case.

2017-10-16  Martin Liska  <mliska@suse.cz>

* c-c++-common/ubsan/attrib-5.c (float_cast2): Fix warning scan
so that it will work for both C and C++ FEs.

From-SVN: r253795

7 years ago* tree-ssa-dse.c (live_bytes_read): Fix thinko.
Jeff Law [Mon, 16 Oct 2017 17:56:06 +0000 (11:56 -0600)]
* tree-ssa-dse.c (live_bytes_read): Fix thinko.

From-SVN: r253792

7 years agore PR fortran/82511 (ICE Bad IO basetype (12) on attempted read or write of entire...
Fritz Reese [Mon, 16 Oct 2017 17:40:53 +0000 (17:40 +0000)]
re PR fortran/82511 (ICE Bad IO basetype (12) on attempted read or write of entire DEC structure)

2017-10-16  Fritz Reese <fritzoreese@gmail.com>

    PR fortran/82511
    Treat UNION components as DT comp. in I/O lists.

    gcc/fortran/ChangeLog:

PR fortran/82511
* trans-io.c (transfer_expr): Treat BT_UNION as BT_DERIVED.

    gcc/testsuite/ChangeLog:

PR fortran/82511
* gfortran.dg/dec_structure_22.f90: New testcase.

From-SVN: r253791

7 years ago* x86-tune-costs.h (znver1_cost): Fix move cost tables.
Jan Hubicka [Mon, 16 Oct 2017 17:39:01 +0000 (19:39 +0200)]
* x86-tune-costs.h (znver1_cost): Fix move cost tables.

From-SVN: r253790

7 years agoconfig.gcc (powerpc*-*-*spe*): Pick 8548 as the default with_cpu if we were configure...
Olivier Hainque [Mon, 16 Oct 2017 16:50:57 +0000 (16:50 +0000)]
config.gcc (powerpc*-*-*spe*): Pick 8548 as the default with_cpu if we were configured for an e500v2 target...

2017-10-16  Olivier Hainque  <hainque@adacore.com>

* gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
with_cpu if we were configured for an e500v2 target cpu name.

From-SVN: r253789

7 years agore PR c++/64931 (ICE on function with deduced return type and input is instantiated...
Paolo Carlini [Mon, 16 Oct 2017 14:21:17 +0000 (14:21 +0000)]
re PR c++/64931 (ICE on function with deduced return type and input is instantiated template class)

2017-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/64931
* g++.dg/cpp1y/auto-fn43.C: New.

From-SVN: r253788

7 years ago[ARM] Allow +nodsp for -mcpu=cortex-m33
Thomas Preud'homme [Mon, 16 Oct 2017 13:55:00 +0000 (13:55 +0000)]
[ARM] Allow +nodsp for -mcpu=cortex-m33

DSP instructions are optional for Arm Cortex-M33, yet its -mcpu option
does not allow +nodsp. Users are thus left with using
-march=armv8-m.main -mtune=cortex-m33. This patch allows +nodsp to
-mcpu=cortex-m33.

2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
    * doc/invoke.texi: Document +nodsp as a valid extension for
    -mcpu=cortex-m33.

From-SVN: r253787

7 years agore PR target/82442 (vect/pr31699.c fails on arm)
Wilco Dijkstra [Mon, 16 Oct 2017 13:26:20 +0000 (13:26 +0000)]
re PR target/82442 (vect/pr31699.c fails on arm)

Fix PR82442

Recently the gcc.dg/vect/pr31699.c was modified to check for
vect_float effective target instead for vect_double.  As a
result it now fails on armhf.  Fix by avoiding double.
Tested on armhf, aarch64 and x64.

    gcc/testsuite/
PR target/82442
* gcc.dg/vect/pr31699.c: Fix testcase.

From-SVN: r253786

7 years agoAdd selftests for bitmap_set_range.
Martin Liska [Mon, 16 Oct 2017 11:59:39 +0000 (13:59 +0200)]
Add selftests for bitmap_set_range.

2017-10-16  Martin Liska  <mliska@suse.cz>

* sbitmap.c (bitmap_bit_in_range_p_checking): New function.
(test_set_range): Likewise.
(test_range_functions): Rename to ...
(test_bit_in_range): ... this.
(sbitmap_c_tests): Add new test.

From-SVN: r253785

7 years agoarm_neon.h (vdot_u32, [...]): New.
Tamar Christina [Mon, 16 Oct 2017 09:58:31 +0000 (09:58 +0000)]
arm_neon.h (vdot_u32, [...]): New.

2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32): New.
(vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
(vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.

gcc/testsuite/
2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h: New.
* gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vect-dot-s8.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vect-dot-u8.c: New.

From-SVN: r253784

7 years ago2017-10-16 Tamar Christina <tamar.christina@arm.com>
Tamar Christina [Mon, 16 Oct 2017 09:56:41 +0000 (09:56 +0000)]
2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/aarch64-builtins.c
(aarch64_types_quadopu_lane_qualifiers): New.
(TYPES_QUADOPU_LANE): New.
* config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
(<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
(aarch64_<sur>dot_laneq<vsi2qi>): New.
* config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
(sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
* config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
(Vdottype, DOTPROD): New.
(sur): Add SDOT and UDOT.

From-SVN: r253783

7 years agoaarch64.h (AARCH64_FL_DOTPROD): New.
Tamar Christina [Mon, 16 Oct 2017 09:55:32 +0000 (09:55 +0000)]
aarch64.h (AARCH64_FL_DOTPROD): New.

2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
(AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add TARGET_DOTPROD.
* config/aarch64/aarch64-option-extensions.def (dotprod): New.
* config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75): Enable TARGET_DOTPROD.
(cortex-a75.cortex-a55): Likewise.
* doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.

From-SVN: r253782

7 years agoarm-builtins.c (arm_unsigned_uternop_qualifiers): New.
Tamar Christina [Mon, 16 Oct 2017 09:54:26 +0000 (09:54 +0000)]
arm-builtins.c (arm_unsigned_uternop_qualifiers): New.

2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
(UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS): New.
* config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane): new.
* config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
(UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
* config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
(neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
* config/arm/types.md (neon_dot, neon_dot_q): New.
* config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.

From-SVN: r253781

7 years agoarm.h (TARGET_DOTPROD): New.
Tamar Christina [Mon, 16 Oct 2017 09:53:13 +0000 (09:53 +0000)]
arm.h (TARGET_DOTPROD): New.

2017-10-16  Tamar Christina  <tamar.christina@arm.com>

* config/arm/arm.h (TARGET_DOTPROD): New.
* config/arm/arm.c (arm_arch_dotprod): New.
(arm_option_reconfigure_globals): Add arm_arch_dotprod.
* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
* config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
(feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
(ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
* doc/invoke.texi (armv8.2-a): Document dotprod

From-SVN: r253780

7 years agoEnable libgomp.oacc-*/declare-*.{c,f90} for non-nvidia devices
Tom de Vries [Mon, 16 Oct 2017 08:44:42 +0000 (08:44 +0000)]
Enable libgomp.oacc-*/declare-*.{c,f90} for non-nvidia devices

2017-10-16  Tom de Vries  <tom@codesourcery.com>

* testsuite/libgomp.oacc-c-c++-common/declare-1.c: Don't require
openacc_nvidia_accel_selected.
* testsuite/libgomp.oacc-c-c++-common/declare-2.c: Same.
* testsuite/libgomp.oacc-c-c++-common/declare-4.c: Same.
* testsuite/libgomp.oacc-fortran/declare-2.f90: Same.
* testsuite/libgomp.oacc-fortran/declare-4.f90: Same
* testsuite/libgomp.oacc-fortran/declare-5.f90: Same.
* testsuite/libgomp.oacc-c-c++-common/declare-5.c: Don't require
openacc_nvidia_accel_selected. Skip for shared memory device.
* testsuite/libgomp.oacc-fortran/declare-1.f90: Same.
* testsuite/libgomp.oacc-fortran/declare-3.f90: Same.

From-SVN: r253779

7 years agore PR c++/53574 (ICE with -fstack-usage)
Jakub Jelinek [Mon, 16 Oct 2017 08:36:06 +0000 (10:36 +0200)]
re PR c++/53574 (ICE with -fstack-usage)

PR c++/53574
* g++.dg/other/pr53574.C: New test.

From-SVN: r253778

7 years agore PR c++/61323 ('static' and 'const' attributes cause non-type template argument...
Paolo Carlini [Mon, 16 Oct 2017 08:25:31 +0000 (08:25 +0000)]
re PR c++/61323 ('static' and 'const' attributes cause non-type template argument matching failure)

2017-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/61323
* g++.dg/cpp0x/constexpr-61323.C: New.

From-SVN: r253777

7 years agore PR libstdc++/82558 (V8 JavaScript engine segfaults since r249235)
François Dumont [Mon, 16 Oct 2017 05:44:03 +0000 (05:44 +0000)]
re PR libstdc++/82558 (V8 JavaScript engine segfaults since r249235)

2017-10-16  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/82558
* include/bits/stl_bvector.h (fill): Add iterator offset check.
* testsuite/23_containers/vector/bool/82558.cc: New.

From-SVN: r253776

7 years agoDaily bump.
GCC Administrator [Mon, 16 Oct 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253775

7 years agore PR c++/54090 (internal compiler error: in unify, at cp/pt.c:15731)
Paolo Carlini [Sun, 15 Oct 2017 22:29:59 +0000 (22:29 +0000)]
re PR c++/54090 (internal compiler error: in unify, at cp/pt.c:15731)

2017-10-15  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/54090
* g++.dg/template/crash128.C: New.

From-SVN: r253772

7 years agoi386.c (ix86_vec_cost): New function.
Jan Hubicka [Sun, 15 Oct 2017 22:10:22 +0000 (00:10 +0200)]
i386.c (ix86_vec_cost): New function.

* i386.c (ix86_vec_cost): New function.
(ix86_rtx_costs): Handle vector operations better.
* i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
* x86-tune-costs.h: Add new costs to all tables.

From-SVN: r253771

7 years agoi386.c (ix86_rtx_costs): Make difference between x87 and SSE operations.
Jan Hubicka [Sun, 15 Oct 2017 15:58:42 +0000 (17:58 +0200)]
i386.c (ix86_rtx_costs): Make difference between x87 and SSE operations.

* i386.c (ix86_rtx_costs): Make difference between x87 and SSE
operations.
* i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
divsd, sqrtss and sqrtsd
* x86-tune-costs.h: Add new entries to all costs.
(znver1_cost): Fix to match real instruction latencies.

From-SVN: r253769

7 years agore PR fortran/82372 (Rejects valid parenthesis)
Thomas Koenig [Sun, 15 Oct 2017 12:00:29 +0000 (12:00 +0000)]
re PR fortran/82372 (Rejects valid parenthesis)

2017-10-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/82372
* fortran/scanner.c (last_error_char):  New global variable.
(gfc_scanner_init_1): Set last_error_char to NULL.
(gfc_gobble_whitespace): If a character not printable or
not newline, issue an error.

2017-10-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/82372
* gfortran.dg/illegal_char.f90: New test.

From-SVN: r253768

7 years agoDaily bump.
GCC Administrator [Sun, 15 Oct 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253767

7 years agocompare-elim.c: Include emit-rtl.h.
Kyrylo Tkachov [Sat, 14 Oct 2017 23:07:24 +0000 (23:07 +0000)]
compare-elim.c: Include emit-rtl.h.

2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
    Michael Collison <michael.collison@arm.com>

* compare-elim.c: Include emit-rtl.h.
(can_merge_compare_into_arith): New function.
(try_validate_parallel): Likewise.
(try_merge_compare): Likewise.
(try_eliminate_compare): Call the above when no previous clobber
is available.
(execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
dataflow problems.

2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
    Michael Collison <michael.collison@arm.com>

* gcc.target/aarch64/cmpelim_mult_uses_1.c: New test.

Co-Authored-By: Michael Collison <michael.collison@arm.com>
From-SVN: r253764

7 years agore PR c++/80908 ([c++1z] ICE on instantiating a template deducing the noexcept-ness...
Paolo Carlini [Sat, 14 Oct 2017 20:35:36 +0000 (20:35 +0000)]
re PR c++/80908 ([c++1z] ICE on instantiating a template deducing the noexcept-ness of a function pointer)

2017-10-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/80908
* g++.dg/cpp1z/noexcept-type18.C: New.

From-SVN: r253763

7 years agore PR c++/81016 (ICE: segfault with template struct specialisation)
Paolo Carlini [Sat, 14 Oct 2017 20:06:08 +0000 (20:06 +0000)]
re PR c++/81016 (ICE: segfault with template struct specialisation)

2017-10-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81016
* g++.dg/cpp1z/pr81016.C: New.

From-SVN: r253762

7 years agore PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technic...
Jakub Jelinek [Sat, 14 Oct 2017 18:48:38 +0000 (20:48 +0200)]
re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior)

PR middle-end/62263
PR middle-end/82498
* tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
up to 2 preparation statements for ASSIGN in MIDDLE_BB.

* c-c++-common/rotate-8.c: Expect no PHIs in optimized dump.

From-SVN: r253761

7 years agore PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technic...
Jakub Jelinek [Sat, 14 Oct 2017 18:47:14 +0000 (20:47 +0200)]
re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior)

PR middle-end/62263
PR middle-end/82498
* tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
to be any operand_equal_p operands.  For & (B - 1) require
B to be power of 2.  Recognize
(X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.

* c-c++-common/rotate-5.c (f2): New function.  Move old
function to ...
(f4): ... this.  Use 127 instead of 128.
(f3, f5, f6): New functions.
(main): Test all f[1-6] functions, with both 0 and 1 as
second arguments.
* c-c++-common/rotate-6.c: New test.
* c-c++-common/rotate-6a.c: New test.
* c-c++-common/rotate-7.c: New test.
* c-c++-common/rotate-7a.c: New test.
* c-c++-common/rotate-8.c: New test.

From-SVN: r253760

7 years agore PR bootstrap/82553 (memory_blockage breaks bootstrap on powerpc)
Uros Bizjak [Sat, 14 Oct 2017 17:46:49 +0000 (19:46 +0200)]
re PR bootstrap/82553 (memory_blockage breaks bootstrap on powerpc)

PR bootstrap/82553
* optabs.c (expand_memory_blockage): Fix call of
targetm.have_memory_blockage.

From-SVN: r253759

7 years agosem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Int...
Hristian Kirtchev [Sat, 14 Oct 2017 17:17:41 +0000 (17:17 +0000)]
sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable...

gcc/ada/

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (In_Preelaborated_Context): A generic package subject to
Remote_Call_Interface is not a suitable preelaboratd context when the
call appears in the package body.

gcc/testsuite/

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

* gnat.dg/remote_call_iface.ads, gnat.dg/remote_call_iface.adb: New
testcase.

From-SVN: r253758

7 years ago[multiple changes]
Pierre-Marie de Rodat [Sat, 14 Oct 2017 17:07:35 +0000 (17:07 +0000)]
[multiple changes]

2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

* layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0.
* layout.adb (Set_Elem_Alignment): Likewise.  Use M name as maximum
alignment for consistency.  If Align is non-zero, use the minimum of
Align and M for the alignment.
* cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of
setting the alignment directly.

2017-10-14  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the
optional string in an Assert pragma until the expansion of the pragma
has rewritten it as a conditional statement, so that the string
argument is only evaluaed if the assertion fails. This is mandated by
RM 11.4.2.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

* debug.adb: Switch -gnatd.v and associated flag are now used to
enforce the SPARK rules for elaboration in SPARK code.
* sem_elab.adb: Describe switch -gnatd.v.
(Process_Call): Verify the SPARK rules only when -gnatd.v is in effect.
(Process_Instantiation): Verify the SPARK rules only when -gnatd.v is
in effect.
(Process_Variable_Assignment): Clarify why variable assignments are
processed reglardless of whether -gnatd.v is in effect.
* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
sections on elaboration code and compilation switches.
* gnat_ugn.texi: Regenerate.

2017-10-14  Gary Dismukes  <dismukes@adacore.com>

* exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb,
sem_warn.adb: Minor reformattings.

From-SVN: r253757

7 years ago[multiple changes]
Pierre-Marie de Rodat [Sat, 14 Oct 2017 16:47:32 +0000 (16:47 +0000)]
[multiple changes]

2017-10-14  Ed Schonberg  <schonberg@adacore.com>

* doc/gnat_rm/implementation_defined_aspects.rst: Add documentation
for reverse iteration over formal containers.
* gnat_rm.texi: Regenerate.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to
Ensure_Prior_Elaboration_Dynamic for consistency reasons.
(Ensure_Static_Prior_Elaboration): Renamed to
Ensure_Prior_Elaboration_Static for consistency reasons.
(Info_Variable_Reference): Renamed to Info_Variable_Read in order to
reflect its new purpose.
(Is_Initialized): New routine.
(Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read
in order to reflect its new purpose.
(Is_Variable_Read): New routine.
(Output_Variable_Reference): Renamed to Output_Variable_Read in order
to reflect its new purpose.
(Process_Variable_Assignment): This routine now acts as a top level
dispatcher for variable assignments.
(Process_Variable_Assignment_Ada): New routine.
(Process_Variable_Assignment_SPARK): New routine.
(Process_Variable_Reference): Renamed to Process_Variable_Read in order
to reflects its new purpose. A reference to a variable is now suitable
for ABE processing only when it is a read. The logic in the routine now
reflects the latest SPARK elaboration rules.

2017-10-14  Justin Squirek  <squirek@adacore.com>

* sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that
triggers marking on formal subprograms.

2017-10-14  Javier Miranda  <miranda@adacore.com>

* checks.adb (Ensure_Valid): Do not skip adding the validity check on
renamings of objects that come from the sources.

2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

* cstand.adb (Build_Float_Type): Move down Siz parameter, add Align
parameter and set the alignment of the type to Align.
(Copy_Float_Type): Adjust call to Build_Float_Type.
(Register_Float_Type): Add pragma Unreferenced for Precision.  Adjust
call to Build_Float_Type and do not set RM_Size and Alignment.

From-SVN: r253756

7 years agoMakefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to GNATRTL_NONTASKING_OBJ.
Patrick Bernardi [Sat, 14 Oct 2017 16:33:30 +0000 (16:33 +0000)]
Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to GNATRTL_NONTASKING_OBJ.

2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

* Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to
GNATRTL_NONTASKING_OBJ.

From-SVN: r253755

7 years ago[multiple changes]
Pierre-Marie de Rodat [Sat, 14 Oct 2017 16:25:21 +0000 (16:25 +0000)]
[multiple changes]

2017-10-14  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for
enabling b-i-p for nonlimited controlled types (but disabled).

2017-10-14  Justin Squirek  <squirek@adacore.com>

* sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to
Has_Warnings_Off with Warnings_Off.

2017-10-14  Piotr Trojanek  <trojanek@adacore.com>

* sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
enclosing package at the end of the visible declarations.
* sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of
an initialization item which is undefined due to some illegality.

2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

* ali.adb: Add new ALI line 'T' to read the number of tasks contain
within each unit that require a default-sized primary and secondary
stack to be generated by the binder.
(Scan_ALI): Scan new 'T' lines.
* ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record.
* bindgen.adb (Gen_Output_File): Count the number of default-sized
stacks within the closure that are to be created by the binder.
(Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary
stacks and record these in System.Secodnary_Stack.
(Resolve_Binder_Options): Check if System.Secondary_Stack is in the
closure of the program being bound.
* bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment.
* exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine.
(Expand_N_Object_Declaration): Count the number of default-sized stacks
used by task objects contained within the object whose declaration is
being expanded.  Only performed when either the restrictions
No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in
effect.
* exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine.
(Expand_N_Task_Type_Declaration): Create a secondary stack as part of
the expansion of a task type if the size of the stack is known at
run-time and the restrictions No_Implicit_Heap_Allocations or
No_Implicit_Task_Allocations are in effect.
(Make_Task_Create_Call): If using a restricted profile provide
secondary stack parameter: either the statically created stack or null.
* lib-load.adb (Create_Dummy_Package_Unit, Load_Unit,
Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in
Unit_Record initialization expressions.
* lib-writ.adb (Add_Preprocessing_Dependency,
Ensure_System_Dependency): Include Primary_Stack_Count and
Sec_Stack_Count in Unit_Record initialization expression.
(Write_ALI): Write T lines.
(Write_Unit_Information): Do not output 'T' lines if there are no
stacks for the binder to generate.
* lib-writ.ads: Updated library information documentation to include
new T line entry.
* lib.adb (Increment_Primary_Stack_Count): New routine.
(Increment_Sec_Stack_Count): New routine.
(Primary_Stack_Count): New routine.
(Sec_Stack_Count): New routine.
* lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to
Unit_Record and updated documentation.
(Increment_Primary_Stack_Count): New routine along with pragma Inline.
(Increment_Sec_Stack_Count): New routine along with pragma Inline.
(Primary_Stack_Count): New routine along with pragma Inline.
(Sec_Stack_Count): New routine along with pragma Inline.
* opt.ads: New constant No_Stack_Size. Flag Default_Stack_Size
redefined.  New flag Default_Sec_Stack_Size and
Quantity_Of_Default_Size_Sec_Stacks.
* rtfinal.c Fixed erroneous comment.
* rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from
System.Secondary_Stack to System.Parameters.  Add RE_SS_Stack.
* sem_util.adb (Number_Of_Elements_In_Array): New routine.
* sem_util.ads (Number_Of_Elements_In_Array): New routine.
* switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch.
* libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine.
(Set_Sec_Stack_Addr): Removed routine.
(Get_Sec_Stack): New routine.
(Set_Sec_Stack): New routine.
(Init_Tasking_Soft_Links): Update System.Soft_Links reference to
reflect new procedure and global names.
* libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb,
libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update
parameter profile to allow the secondary stack size to be specified.
* libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter
profile to include Sec_Stack_Address.  Update Tasking.Initialize_ATCB
call to remove Secondary_Stack_Size reference.  Add secondary stack
address and size to SSL.Create_TSD call.
(Task_Wrapper): Remove secondary stack creation.
* libgnarl/s-tarest.ads (Create_Restricted_Task,
Create_Restricted_Task_Sequential): Update parameter profile to include
Sec_Stack_Address and clarify the Size parameter.
* libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size
from profile and body.
(Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call.
* libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from
Common_ATCB.
(Initialize_ATCB): Update the parameter profile to remove
Secondary_Stack_Size.
* libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and
call to Initialize_ATCB.  Add secondary stack address and size to
SSL.Create_TSD call, and catch any storage exception from the call.
(Finalize_Global_Tasks): Update System.Soft_Links references to reflect
new subprogram and component names.
(Task_Wrapper): Remove secondary stack creation.
(Vulnerable_Complete_Master): Update to reflect TSD changes.
* libgnarl/s-tassta.ads: Reformat comments.
(Create_Task): Update parameter profile.
* libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter
profile to include secondary stack size. Remove secondary size
parameter from Initialize_ATCB call and add it to Create_TSD call.
* libgnat/s-parame.adb, libgnat/s-parame__rtems.adb,
libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine.
* libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type
Percentage.  Remove constants Dynamic, Sec_Stack_Percentage and
Sec_Stack_Dynamic.  Add constant Runtime_Default_Sec_Stack_Size and
Sec_Stack_Dynamic.
(Default_Sec_Stack_Size): New routine.
* libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is
now Preelaborate.
* libgnat/s-soflin.adb: Removed unused with-clauses.  With
System.Soft_Links.Initialize to initialize non-tasking TSD.
(Create_TSD): Update parameter profile. Initialize the TSD and
unconditionally call SS_Init.
(Destroy_TSD): Update SST.SS_Free call.
(Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT,
Set_Sec_Stack_Addr_Soft): Remove routines.
(Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT,
Set_Sec_Stack_Soft): Add routines.
(NT_TSD): Move to private part of package specification.
* libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call
with suppressed access checks.  Renamed *_Sec_Stack_Addr_* routines and
objects to *_Sec_Stack_*.  TSD: removed warning suppression and
component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr.
(Create_TSD): Update parameter profile.
(NT_TSD): Move to private section from body.
* libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files.
* libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile.
* libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr):
Remove routine.
(Get_Sec_Stack, Set_Sec_Stack): Add routine.
(Thread_Body_Enter): Update parameter profile and body to adapt to new
System.Secondary_Stack.
(Init_RTS): Update body for new System.Soft_Links names.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
s-soliin.o.

From-SVN: r253754

7 years agore PR bootstrap/82548 (After -r 253646 GCC 8.0 can't build cross compiler for mingw32)
Jakub Jelinek [Sat, 14 Oct 2017 12:32:17 +0000 (14:32 +0200)]
re PR bootstrap/82548 (After -r 253646 GCC 8.0 can't build cross compiler for mingw32)

PR bootstrap/82548
* config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
objects to extra_objs instead of overwriting it.

From-SVN: r253753

7 years ago* optabs.c (expand_memory_blockage): Use targetm.gen_memory_blockage.
Uros Bizjak [Sat, 14 Oct 2017 10:46:20 +0000 (12:46 +0200)]
* optabs.c (expand_memory_blockage): Use targetm.gen_memory_blockage.

From-SVN: r253752

7 years agosync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): Use any_fp_register_operand...
Uros Bizjak [Sat, 14 Oct 2017 09:31:29 +0000 (11:31 +0200)]
sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): Use any_fp_register_operand as operand[3] predicate.

* config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
Use any_fp_register_operand as operand[3] predicate.  Simplify
equality test for operands[2] and operands[4] memory location.
(LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
(FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
(LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
(FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
any_fp_register_operand as operand[1] predicate.  Simplify
equality test for operands[0] and operands[3] memory location.
(LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
(FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
(LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.

From-SVN: r253751

7 years agotarget-insns.def: Add memory_blockage.
Uros Bizjak [Sat, 14 Oct 2017 09:10:45 +0000 (11:10 +0200)]
target-insns.def: Add memory_blockage.

* target-insns.def: Add memory_blockage.
* optabs.c (expand_memory_blockage): New function.
(expand_asm_memory_barrier): Rename ...
(expand_asm_memory_blockage): ... to this.
(expand_mem_thread_fence): Call expand_memory_blockage
instead of expand_asm_memory_barrier.
(expand_mem_singnal_fence): Ditto.
(expand_atomic_load): Ditto.
(expand_atomic_store): Ditto.
* doc/md.texi (Standard Pattern Names For Generation):
Document memory_blockage instruction pattern.

From-SVN: r253750

7 years agore PR rtl-optimization/81423 (Wrong code at -O2)
Jakub Jelinek [Sat, 14 Oct 2017 08:34:11 +0000 (10:34 +0200)]
re PR rtl-optimization/81423 (Wrong code at -O2)

PR rtl-optimization/81423
* gcc.c-torture/execute/pr81423.c (foo): Add missing cast.  Change L
suffixes to LL.
(main): Punt if either long long isn't 64-bit or int isn't 32-bit.

From-SVN: r253749

7 years agorl78.c (rl78_emit_libcall): New function.
Sebastian Perta [Sat, 14 Oct 2017 00:33:58 +0000 (00:33 +0000)]
rl78.c (rl78_emit_libcall): New function.

[gcc]
* config/rl78/rl78.c (rl78_emit_libcall): New function.
* config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
* config/rl78/rl78.md: New define_expand "adddi3".
[libgcc]
* config/rl78/adddi3.S: New assembly file.
* config/rl78/t-rl78: Added adddi3.S to LIB2ADD.

From-SVN: r253748

7 years agoDaily bump.
GCC Administrator [Sat, 14 Oct 2017 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253747

7 years agore PR sanitizer/82353 (runtime ubsan crash)
Jakub Jelinek [Fri, 13 Oct 2017 20:19:17 +0000 (22:19 +0200)]
re PR sanitizer/82353 (runtime ubsan crash)

PR sanitizer/82353
* g++.dg/ubsan/pr82353-2.C: New test.
* g++.dg/ubsan/pr82353-2-aux.cc: New file.
* g++.dg/ubsan/pr82353-2.h: New file.

From-SVN: r253744

7 years agoc-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like [LR]SHIFT_EXPR.
Jakub Jelinek [Fri, 13 Oct 2017 20:06:40 +0000 (22:06 +0200)]
c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like [LR]SHIFT_EXPR.

* c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like
[LR]SHIFT_EXPR.

From-SVN: r253742

7 years agocfghooks.c (verify_flow_info): Disable check that all probabilities are set correctly.
Jan Hubicka [Fri, 13 Oct 2017 20:04:00 +0000 (22:04 +0200)]
cfghooks.c (verify_flow_info): Disable check that all probabilities are set correctly.

* cfghooks.c (verify_flow_info): Disable check that all probabilities
are set correctly.

From-SVN: r253741

7 years ago* tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
Jeff Law [Fri, 13 Oct 2017 19:12:05 +0000 (13:12 -0600)]
* tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.

From-SVN: r253740

7 years agoPR c++/82357 - bit-field in template
Jason Merrill [Fri, 13 Oct 2017 19:03:41 +0000 (15:03 -0400)]
PR c++/82357 - bit-field in template

* tree.c (cp_stabilize_reference): Just return a NON_DEPENDENT_EXPR.

From-SVN: r253739

7 years agore PR fortran/81048 (incorrect derived type initialization)
Paul Thomas [Fri, 13 Oct 2017 18:59:34 +0000 (18:59 +0000)]
re PR fortran/81048 (incorrect derived type initialization)

2017-10-13  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/81048
* resolve.c (resolve_symbol): Ensure that derived type array
results get default initialization.

2017-10-13  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/81048
* gfortran.dg/derived_init_4.f90 : New test.

From-SVN: r253738

7 years agore PR c++/69078 ([C++14] function local static not initialized when only used in...
Paolo Carlini [Fri, 13 Oct 2017 17:38:50 +0000 (17:38 +0000)]
re PR c++/69078 ([C++14] function local static not initialized when only used in a generic/variadic lambda)

2017-10-13  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69078
* g++.dg/cpp1y/lambda-generic-69078-1.C: New.
* g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.

From-SVN: r253736

7 years agore PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t when...
Jakub Jelinek [Fri, 13 Oct 2017 17:19:12 +0000 (19:19 +0200)]
re PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t when compiled with -m32)

PR target/82274
* internal-fn.c (expand_mul_overflow): If both operands have
the same highpart of -1 or 0 and the topmost bit of lowpart
is different, overflow is if res <= 0 rather than res < 0.

* libgcc2.c (__mulvDI3): If both operands have
the same highpart of -1 and the topmost bit of lowpart is 0,
multiplication overflows even if both lowparts are 0.

* gcc.dg/pr82274-1.c: New test.
* gcc.dg/pr82274-2.c: New test.

From-SVN: r253734

7 years agore PR c++/80873 (ICE in tsubst_copy when trying to use an overloaded function without...
Paolo Carlini [Fri, 13 Oct 2017 16:50:13 +0000 (16:50 +0000)]
re PR c++/80873 (ICE in tsubst_copy when trying to use an overloaded function without a definition in a lambda)

2017-10-13  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/80873
* g++.dg/cpp1y/auto-fn41.C: New.
* g++.dg/cpp1y/auto-fn42.C: Likewise.

From-SVN: r253733

7 years agors6000.c (rs6000_builtin_vectorization_cost): Remove TARGET_P9_VECTOR code for unalig...
Pat Haugen [Fri, 13 Oct 2017 16:05:53 +0000 (16:05 +0000)]
rs6000.c (rs6000_builtin_vectorization_cost): Remove TARGET_P9_VECTOR code for unaligned_load case.

* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
TARGET_P9_VECTOR code for unaligned_load case.

From-SVN: r253731

7 years agofixinc.in (dirname): Change sed from 's|[^/]*/||' to 's|[^/]*//*||'.
Mike Frysinger [Fri, 13 Oct 2017 15:28:41 +0000 (15:28 +0000)]
fixinc.in (dirname): Change sed from 's|[^/]*/||' to 's|[^/]*//*||'.

2017-10-13  Mike Frysinger  <vapier@chromium.org>

* fixinc.in (dirname): Change sed from 's|[^/]*/||' to
's|[^/]*//*||'.

From-SVN: r253730

7 years ago* lto-lang.c (lto_post_options): Clean shlib flag when not doing PIC.
Jan Hubicka [Fri, 13 Oct 2017 13:44:05 +0000 (15:44 +0200)]
* lto-lang.c (lto_post_options): Clean shlib flag when not doing PIC.

From-SVN: r253729

7 years agocfghooks.c (verify_flow_info): Check that edge probabilities are set.
Jan Hubicka [Fri, 13 Oct 2017 13:37:49 +0000 (15:37 +0200)]
cfghooks.c (verify_flow_info): Check that edge probabilities are set.

* cfghooks.c (verify_flow_info): Check that edge probabilities are
set.

From-SVN: r253728

7 years agoC++: show location of unclosed extern "C" specifications
David Malcolm [Fri, 13 Oct 2017 12:42:39 +0000 (12:42 +0000)]
C++: show location of unclosed extern "C" specifications

If the user fails to close an extern "C" linkage specifier, and then
uses templates, they will run into "template with C linkage" errors.

From personal experience, it can be hard to tell where the
extern "C" began.  As of r251026 there will be a message highlighting
the unclosed '{', but this may be hard to spot at the very end of
the errors.

This patch adds a note to the various diagnostics that complain
about C linkage, showing the user where the extern "C" specification
began.

gcc/cp/ChangeLog:
* cp-tree.h (maybe_show_extern_c_location): New decl.
* decl.c (grokfndecl): When complaining about literal operators
with C linkage, issue a note giving the location of the
extern "C".
* parser.c (cp_parser_new): Initialize new field
"innermost_linkage_specification_location".
(cp_parser_linkage_specification): Store the location
of the linkage specification within the cp_parser.
(cp_parser_explicit_specialization): When complaining about
template specializations with C linkage, issue a note giving the
location of the extern "C".
(cp_parser_explicit_template_declaration): Likewise for templates.
(maybe_show_extern_c_location): New function.
* parser.h (struct cp_parser): New field
"innermost_linkage_specification_location".

gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/udlit-extern-c.C: New test case.
* g++.dg/diagnostic/unclosed-extern-c.C: Add example of a template
erroneously covered by an unclosed extern "C".
* g++.dg/template/extern-c.C: New test case.

From-SVN: r253726

7 years agoPR libstdc++/82522 overload map insert functions for rvalues (LWG 2354)
Jonathan Wakely [Fri, 13 Oct 2017 12:39:32 +0000 (13:39 +0100)]
PR libstdc++/82522 overload map insert functions for rvalues (LWG 2354)

PR libstdc++/82522
* doc/xml/manual/intro.xml: Document LWG 2354 changes.
* include/bits/stl_map.h (map::insert(value_type&&))
(map::insert(const_iterator, value_type&&)): Add overload for rvalues.
* include/bits/stl_multimap.h (multimap::insert(value_type&&))
(multimap::insert(const_iterator, value_type&&)): Likewise.
* include/bits/unordered_map.h (unordered_map::insert(value_type&&))
(unordered_map::insert(const_iterator, value_type&&))
(unordered_multimap::insert(value_type&&))
(unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
* testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test.
* testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New
test.
* testsuite/23_containers/unordered_map/insert/dr2354.cc: New test.
* testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New
test.

From-SVN: r253725

7 years agoPR libstdc++/82481 Suppress clang-tidy warnings
Jonathan Wakely [Fri, 13 Oct 2017 12:39:24 +0000 (13:39 +0100)]
PR libstdc++/82481 Suppress clang-tidy warnings

PR libstdc++/82481
* include/std/mutex (call_once): Suppress clang-tidy warnings about
dangling references.

From-SVN: r253724

7 years ago[PATCH] Tree structure marking
Nathan Sidwell [Fri, 13 Oct 2017 12:18:25 +0000 (12:18 +0000)]
[PATCH] Tree structure marking

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00846.html
* tree-core.h (tree_contains_struct): Make bool.
* tree.c (tree_contains_struct): Likewise.
* tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
(MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.

From-SVN: r253723

7 years ago2017-10-13 Richard Biener <rguenther@suse.de>
Richard Biener [Fri, 13 Oct 2017 11:02:35 +0000 (11:02 +0000)]
2017-10-13  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
parameters and dominance check.
(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
Do not update SSA form here or do intermediate IL verification.
* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
(graphite_initialize): Remove check on the number of loops in
the function and inline into graphite_transform_loops.
(graphite_finalize): Inline into graphite_transform_loops.
(graphite_transform_loops): Perform SSA update and IL verification
here.
* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.

* gcc.dg/graphite/pr35356-3.c: XFAIL again.
* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
with alternate flags.

From-SVN: r253721

7 years ago2017-10-13 Richard Biener <rguenther@suse.de>
Richard Biener [Fri, 13 Oct 2017 11:02:05 +0000 (11:02 +0000)]
2017-10-13  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
parameters and dominance check.
(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
Do not update SSA form here or do intermediate IL verification.
* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
(graphite_initialize): Remove check on the number of loops in
the function and inline into graphite_transform_loops.
(graphite_finalize): Inline into graphite_transform_loops.
(graphite_transform_loops): Perform SSA update and IL verification
here.
* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.

* gcc.dg/graphite/pr35356-3.c: XFAIL again.
* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
with alternate flags.

From-SVN: r253720

7 years agographite-isl-ast-to-gimple.c (max_mode_int_precision, [...]): Avoid global constructo...
Richard Biener [Fri, 13 Oct 2017 10:40:42 +0000 (10:40 +0000)]
graphite-isl-ast-to-gimple.c (max_mode_int_precision, [...]): Avoid global constructor by moving ...

2017-10-13  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c (max_mode_int_precision,
graphite_expression_type_precision): Avoid global constructor
by moving ...
(translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
(translate_isl_ast_to_gimple::graphite_expr_type): Add type
member.
(translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
(translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
(translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
* graphite-sese-to-poly.c (build_original_schedule): Return nothing.

* gcc.dg/graphite/scop-10.c: Enlarge array to avoid undefined
behavior.
* gcc.dg/graphite/scop-7.c: Likewise.
* gcc.dg/graphite/scop-8.c: Likewise.

From-SVN: r253719

7 years agoi386: Check red zone size in push peephole2
H.J. Lu [Fri, 13 Oct 2017 10:04:59 +0000 (10:04 +0000)]
i386: Check red zone size in push peephole2

Check red zone size, instead of if red zone is available, in push
peephole2s.

gcc/

PR target/82499
* config/i386/i386.h (ix86_red_zone_size): New.
* config/i386/i386.md (push peephole2s): Replace
"!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".

gcc/testsuite/

PR target/82499
* gcc.target/i386/pr82499-1.c: New file.
* gcc.target/i386/pr82499-2.c: Likewise.
* gcc.target/i386/pr82499-3.c: Likewise.

From-SVN: r253718

7 years agoPrevent invalid register mode changes in combine
Richard Sandiford [Fri, 13 Oct 2017 09:58:23 +0000 (09:58 +0000)]
Prevent invalid register mode changes in combine

This patch stops combine from changing the mode of an existing register
in-place if doing so would change the size of the underlying register
allocation size, as given by REGMODE_NATURAL_SIZE.  Without this,
many tests fail in adjust_reg_mode after SVE is added.  One example
is gcc.c-torture/compile/20090401-1.c.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* combine.c (can_change_dest_mode): Reject changes in
REGMODE_NATURAL_SIZE.

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

7 years agoMake more use of GET_MODE_UNIT_BITSIZE
Richard Sandiford [Fri, 13 Oct 2017 09:53:00 +0000 (09:53 +0000)]
Make more use of GET_MODE_UNIT_BITSIZE

This patch is like the previous GET_MODE_UNIT_SIZE one,
but for bit rather than byte sizes.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
(expand_debug_source_expr): Likewise.
* combine.c (combine_simplify_rtx): Likewise.
* cse.c (fold_rtx): Likewise.
* fwprop.c (canonicalize_address): Likewise.
* targhooks.c (default_shift_truncation_mask): Likewise.

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

7 years agoMake more use of GET_MODE_UNIT_SIZE
Richard Sandiford [Fri, 13 Oct 2017 09:41:39 +0000 (09:41 +0000)]
Make more use of GET_MODE_UNIT_SIZE

This patch uses GET_MODE_UNIT_SIZE instead of GET_MODE_SIZE in
cases where, for compound modes, the mode of the scalar elements
is what matters.  E.g. the choice between truncation and extension
is really based on the modes of the consistuent scalars rather
than the mode as a whole.

None of the existing code was wrong.  The patch simply makes
things easier when converting to variable-sized modes.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
(widened_mode): Likewise.
(expand_unop): Likewise.
* ree.c (transform_ifelse): Likewise.
(merge_def_and_ext): Likewise.
(combine_reaching_defs): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.

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

7 years agoMake more use of byte_lowpart_offset
Richard Sandiford [Fri, 13 Oct 2017 09:32:29 +0000 (09:32 +0000)]
Make more use of byte_lowpart_offset

This patch uses byte_lowpart_offset in places that open-coded the
calculation.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
* combine.c (gen_lowpart_for_combine): Likewise.
* dwarf2out.c (rtl_for_decl_location): Likewise.
* final.c (alter_subreg): Likewise.
* rtlhooks.c (gen_lowpart_general): Likewise.
(gen_lowpart_if_possible): Likewise.

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

7 years agoMake more use of subreg_lowpart_offset
Richard Sandiford [Fri, 13 Oct 2017 09:23:54 +0000 (09:23 +0000)]
Make more use of subreg_lowpart_offset

This patch uses subreg_lowpart_offset in places that open-coded
the calculation.  It also uses it in regcprop.c to test whether,
after a mode change, the first register in a multi-register group
is still the right one.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* calls.c (expand_call): Use subreg_lowpart_offset.
* cse.c (cse_insn): Likewise.
* regcprop.c (copy_value): Likewise.
(copyprop_hardreg_forward_1): Likewise.

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