gcc.git
7 years agoMinor edits.
Arnaud Charlet [Wed, 13 Sep 2017 07:50:02 +0000 (09:50 +0200)]
Minor edits.

From-SVN: r252058

7 years agoRegenerate.
Arnaud Charlet [Wed, 13 Sep 2017 07:38:41 +0000 (09:38 +0200)]
Regenerate.

From-SVN: r252057

7 years agoMinor edits.
Arnaud Charlet [Wed, 13 Sep 2017 07:37:23 +0000 (09:37 +0200)]
Minor edits.

From-SVN: r252056

7 years agoDefine std::__to_address helper
Jonathan Wakely [Wed, 13 Sep 2017 07:27:40 +0000 (08:27 +0100)]
Define std::__to_address helper

* include/bits/allocated_ptr.h (__allocated_ptr::get): Use
__to_address.
(__allocated_ptr::_S_raw_ptr): Remove.
* include/bits/forward_list.h (_Fwd_list_base::_M_get_node): Use
__to_address.
* include/bits/hashtable_policy.h (_Hashtable_alloc): Likewise.
* include/bits/ptr_traits.h (__to_address): Define new function
template.
* include/bits/shared_ptr_base.h (__shared_ptr): Use __to_address.
(__shared_ptr::_S_raw_ptr): Remove.
* include/bits/stl_vector.h [__cplusplus >= 201103L]
(vector::_M_data_ptr): Use __to_address.
[__cplusplus < 201103L] (vector::_M_data_ptr): Don't dereference
possibly invalid pointers.
* include/ext/alloc_traits.h (__alloc_traits::construct)
(__alloc_traits::destroy): Use __to_address.

From-SVN: r252055

7 years agoNew file.
Arnaud Charlet [Wed, 13 Sep 2017 07:04:41 +0000 (09:04 +0200)]
New file.

From-SVN: r252054

7 years agopr63304_1.c: Remove-mno-fix-cortex-a53-843419.
Kugan Vivekanandarajah [Wed, 13 Sep 2017 01:28:43 +0000 (01:28 +0000)]
pr63304_1.c: Remove-mno-fix-cortex-a53-843419.

gcc/testsuite/ChangeLog:

2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

* gcc.target/aarch64/pr63304_1.c: Remove-mno-fix-cortex-a53-843419.

gcc/ChangeLog:

2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

* config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
Disable pc relative literal load irrespective of TARGET_FIX_ERR_A53_84341
for default.

From-SVN: r252053

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

From-SVN: r252051

7 years agosparc.c (output_return): Output the source location of the insn in the delay slot...
Eric Botcazou [Tue, 12 Sep 2017 20:24:35 +0000 (20:24 +0000)]
sparc.c (output_return): Output the source location of the insn in the delay slot, if any.

* config/sparc/sparc.c (output_return): Output the source location of
the insn in the delay slot, if any.
(output_sibcall): Likewise.

From-SVN: r252041

7 years agore PR c++/70621 (ICE on invalid code at -O1 and above on x86_64-linux-gnu in record_r...
Paolo Carlini [Tue, 12 Sep 2017 19:45:37 +0000 (19:45 +0000)]
re PR c++/70621 (ICE on invalid code at -O1 and above on x86_64-linux-gnu in record_reference, at cgraphbuild.c:64)

/cp
2017-09-12  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70621
* decl.c (start_decl): Early return error_mark_node if duplicate_decls
returns it; avoid misleading error message.

/testsuite
2017-09-12  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70621
* g++.dg/torture/pr70621.C: New.

From-SVN: r252040

7 years agore PR fortran/82173 ([meta-bug] Parameterized derived type errors)
Paul Thomas [Tue, 12 Sep 2017 18:06:52 +0000 (18:06 +0000)]
re PR fortran/82173 ([meta-bug] Parameterized derived type errors)

2017-09-12  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82173
PR fortran/82168
* decl.c (variable_decl): Check pdt template components for
appearance of KIND/LEN components in the type parameter name
list, that components corresponding to type parameters have
either KIND or LEN attributes and that KIND or LEN components
are scalar. Copy the initializer to the parameter value.
(gfc_get_pdt_instance): Add a label 'error_return' and follow
it with repeated code, while replacing this code with a jump.
Check if a parameter appears as a component in the template.
Make sure that the parameter expressions are integer. Validate
KIND expressions.
(gfc_match_decl_type_spec): Search for pdt_types in the parent
namespace since they are instantiated in the template ns.
* expr.c (gfc_extract_int): Use a KIND parameter if it
appears as a component expression.
(gfc_check_init_expr): Allow expressions with the pdt_kind
attribute.
*primary.c (gfc_match_actual_arglist): Make sure that the first
keyword argument is recognised when 'pdt' is set.

2017-09-12  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82173
* gfortran.dg/pdt_4.f03 : Remove the 'is being used before it
is defined' error.
* gfortran.dg/pdt_6.f03 : New test.
* gfortran.dg/pdt_7.f03 : New test.
* gfortran.dg/pdt_8.f03 : New test.

PR fortran/82168
* gfortran.dg/pdt_9.f03 : New test.

From-SVN: r252039

7 years agore PR other/81096 (test case ttest in libbacktrace fails starting with its introducti...
Steve Ellcey [Tue, 12 Sep 2017 17:00:00 +0000 (17:00 +0000)]
re PR other/81096 (test case ttest in libbacktrace fails starting with its introduction in r249111)

2017-09-12  Steve Ellcey  <sellcey@cavium.com>

PR other/81096
* Makefile.am (ttest_CFLAGS): Add $(AM_CFLAGS)
* Makefile.in: Regenerate.

From-SVN: r252038

7 years agoAdd DW_CFA_AARCH64_negate_ra_state to dwarf2.def/h and dwarfnames.c
Jiong Wang [Tue, 12 Sep 2017 16:39:59 +0000 (16:39 +0000)]
Add DW_CFA_AARCH64_negate_ra_state to dwarf2.def/h and dwarfnames.c

  A new vendor CFA DW_CFA_AARCH64_negate_ra_state was introduced for ARMv8.3-A
return address signing, it is multiplexing DW_CFA_GNU_window_save in CFA vendor
extension space.

  This patch adds necessary code to make it available to external, the GDB
patch (https://sourceware.org/ml/gdb-patches/2017-08/msg00215.html) is intended
to use it.

  A new DW_CFA_DUP for it is added in dwarf2.def.  The use of DW_CFA_DUP is to
avoid duplicated case value issue when included in libiberty/dwarfnames.

  Native x86 builds OK to make sure no macro expanding errors.

Committed on behalf of Jiong Wang.

    include/
* dwarf2.def (DW_CFA_AARCH64_negate_ra_state): New DW_CFA_DUP.
* dwarf2.h (DW_CFA_DUP): New define.

    libiberty/
* dwarfnames.c (DW_CFA_DUP): New define.

From-SVN: r252037

7 years agoDon't warn function alignment if warn_if_not_aligned_p is true
H.J. Lu [Tue, 12 Sep 2017 16:35:39 +0000 (16:35 +0000)]
Don't warn function alignment if warn_if_not_aligned_p is true

When warn_if_not_aligned_p is true, a warning will be issued on function
declaration later.  There is no need to warn function alignment when
warn_if_not_aligned_p is true.

* c-attribs.c (common_handle_aligned_attribute): Don't warn
function alignment if warn_if_not_aligned_p is true.

From-SVN: r252036

7 years agore PR other/81096 (test case ttest in libbacktrace fails starting with its introducti...
Steve Ellcey [Tue, 12 Sep 2017 16:33:31 +0000 (16:33 +0000)]
re PR other/81096 (test case ttest in libbacktrace fails starting with its introduction in r249111)

2017-09-12  Steve Ellcey  <sellcey@cavium.com>

PR other/81096
* libbacktrace/Makefile.in
(HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ttest_CFLAGS): Add $(AM_CFLAGS)

From-SVN: r252035

7 years agoAdd -static-pie to GCC driver to create static PIE
H.J. Lu [Tue, 12 Sep 2017 16:30:28 +0000 (16:30 +0000)]
Add -static-pie to GCC driver to create static PIE

This patch adds -static-pie to GCC driver to create static PIE.  A static
position independent executable (PIE) is similar to static executable,
but can be loaded at any address without a dynamic linker.  All linker
input files must be compiled with -fpie or -fPIE and linker must support
--no-dynamic-linker to avoid linking with dynamic linker.  "-z text" is
also needed to prevent dynamic relocations in read-only segments.

PR driver/81498
* common.opt (-static-pie): New alias.
(shared): Negate static-pie.
(-no-pie): Update help text.
(-pie): Likewise.
(static-pie): New option.
* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
-static-pie support.
(GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
(LINK_EH_SPEC): Likewise.
(LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
* gcc.c (LINK_COMMAND_SPEC): Likewise.
(init_gcc_specs): Likewise.
(init_spec): Likewise.
(display_help): Update help message for -pie.
* doc/invoke.texi: Update -pie, -no-pie and -static.  Document
-static-pie.

From-SVN: r252034

7 years agoRemove '*' from movsi/di/ti patterns
Wilco Dijkstra [Tue, 12 Sep 2017 16:27:47 +0000 (16:27 +0000)]
Remove '*' from movsi/di/ti patterns

Remove the remaining uses of '*' from the movsi/di/ti patterns.
Using '*' in alternatives is typically incorrect at it tells the register
allocator to ignore those alternatives.  So remove these from all the
integer move patterns.  This removes unnecessary int to float moves, for
example gcc.target/aarch64/pr62178.c no longer generates a redundant fmov
since the w = m variant is now allowed.

    gcc/
* config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
(movdi_aarch64): Likewise.
(movti_aarch64): Likewise.

From-SVN: r252033

7 years agore PR target/80204 (macosx-version-min wrong for macOS Sierra 10.12.3)
Simon Wright [Tue, 12 Sep 2017 15:29:16 +0000 (15:29 +0000)]
re PR target/80204 (macosx-version-min wrong for macOS Sierra 10.12.3)

PR target/80204
* config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
calculation of the minor version, always output as 0.

From-SVN: r252029

7 years agore PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c...
Jakub Jelinek [Tue, 12 Sep 2017 15:25:15 +0000 (17:25 +0200)]
re PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c:2262)

PR target/82112
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
on it early, rather than manual conversion late.  For
ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
instead of performing manual conversion.

* gcc.target/powerpc/pr82112.c: New test.
* g++.dg/ext/altivec-18.C: New test.

From-SVN: r252028

7 years agoaltivec.md (vec_widen_umult_even_v4si, [...]): Add define expands for vmuleuw, vmules...
Carl Love [Tue, 12 Sep 2017 15:14:32 +0000 (15:14 +0000)]
altivec.md (vec_widen_umult_even_v4si, [...]): Add define expands for vmuleuw, vmulesw, vmulouw, vmulosw.

gcc/ChangeLog:

2017-09-12  Carl Love  <cel@us.ibm.com>

        * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
vmulouw, vmulosw.
        * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
        VMULOSW): Add definitions.
        * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
        ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
        ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
        * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
        builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.

From-SVN: r252027

7 years ago[Patch AArch64 2/2] Fix memory sizes to load/store patterns
James Greenhalgh [Tue, 12 Sep 2017 14:57:58 +0000 (14:57 +0000)]
[Patch AArch64 2/2] Fix memory sizes to load/store patterns

There seems to be a partial misconception in the AArch64 backend that
load1/load2 referred to the number of registers to load, rather than the
number of words to load. This patch fixes that using the new "number of
byte" types added in the previous patch.

That means using the load_16 and store_16 types that were defined in the
previous patch for the first time in the AArch64 backend. To ensure
continuity for scheduling models, I've just split this out from load_8.
Please update your models if this is very wrong!

---
gcc/

* config/aarch64/aarch64.md (movdi_aarch64): Set load/store
types correctly.
(movti_aarch64): Likewise.
(movdf_aarch64): Likewise.
(movtf_aarch64): Likewise.
(load_pairdi): Likewise.
(store_pairdi): Likewise.
(load_pairdf): Likewise.
(store_pairdf): Likewise.
(loadwb_pair<GPI:mode>_<P:mode>): Likewise.
(storewb_pair<GPI:mode>_<P:mode>): Likewise.
(ldr_got_small_<mode>): Likewise.
(ldr_got_small_28k_<mode>): Likewise.
(ldr_got_tiny): Likewise.
* config/aarch64/iterators.md (ldst_sz): New.
(ldpstp_sz): Likewise.
* config/aarch64/thunderx.md (thunderx_storepair): Split store_8
to store_16.
(thunderx_load): Split load_8 to load_16.
* config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
load_8 to load_16.
(thunderx2t99_storepair_basic): Split store_8 to store_16.
* config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
(xgene1_store_pair): Split store_8 to store_16.
* config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
(falkor_st_0_st_sd): Split store_8 to store_16.

From-SVN: r252026

7 years ago[Mechanical Patch ARM/AArch64 1/2] Rename load/store scheduling types to encode data...
James Greenhalgh [Tue, 12 Sep 2017 14:48:34 +0000 (14:48 +0000)]
[Mechanical Patch ARM/AArch64 1/2] Rename load/store scheduling types to encode data size

In the AArch64 backend and scheduling models there is some confusion as to
what the load1/load2 etc. scheduling types refer to. This leads to us using
load1/load2 in two contexts - for a variety of 32-bit, 64-bit and 128-bit
loads in AArch32 and 128-bit loads in AArch64. That leads to an undesirable
confusion in scheduling.

Fixing it is easy, but mechanical and boring. Essentially,

  s/load1/load_4/
  s/load2/load_8/
  s/load3/load_12/
  s/load4/load_16/
  s/store1/store_4/
  s/store2/store_8/
  s/store3/store_12/
  s/store4/store_16/

Across all sorts of pipeline models, and the two backends.

I have intentionally not modified any of the patterns which now look obviously
incorrect. I'll be doing a second pass over the AArch64 back-end in patch
2/2 which will fix these bugs.

---
gcc/

* config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
and store1/2/3/4 to store_4/8/12/16.
* config/aarch64/aarch64.md: Update for rename.
* config/arm/arm.md: Likewise.: Likewise.
* config/arm/arm.c: Likewise.
* config/arm/thumb1.md: Likewise.
* config/arm/thumb2.md: Likewise.
* config/arm/vfp.md: Likewise.
* config/arm/arm-generic.md: Likewise.
* config/arm/arm1020e.md: Likewise.
* config/arm/arm1026ejs.md: Likewise.
* config/arm/arm1136jfs.md: Likewise.
* config/arm/arm926ejs.md: Likewise.
* config/arm/cortex-a15.md: Likewise.
* config/arm/cortex-a17.md: Likewise.
* config/arm/cortex-a5.md: Likewise.
* config/arm/cortex-a53.md: Likewise.
* config/arm/cortex-a57.md: Likewise.
* config/arm/cortex-a7.md: Likewise.
* config/arm/cortex-a8.md: Likewise.
* config/arm/cortex-a9.md: Likewise.
* config/arm/cortex-m4.md: Likewise.
* config/arm/cortex-m7.md: Likewise.
* config/arm/cortex-r4.md: Likewise.
* config/arm/exynos-m1.md: Likewise.
* config/arm/fa526.md: Likewise.
* config/arm/fa606te.md: Likewise.
* config/arm/fa626te.md: Likewise.
* config/arm/fa726te.md: Likewise.
* config/arm/fmp626.md: Likewise.
* config/arm/iwmmxt.md: Likewise.
* config/arm/ldmstm.md: Likewise.
* config/arm/marvell-pj4.md: Likewise.
* config/arm/xgene1.md: Likewise.
* config/aarch64/thunderx.md: Likewise.
* config/aarch64/thunderx2t99.md: Likewise.
* config/aarch64/falkor.md: Likewise.

From-SVN: r252025

7 years agoFix GIMPLE FE test (PR testsuite/82114)
Martin Liska [Tue, 12 Sep 2017 14:32:39 +0000 (16:32 +0200)]
Fix GIMPLE FE test (PR testsuite/82114)

2017-09-12  Martin Liska  <mliska@suse.cz>

PR testsuite/82114
* gcc.dg/gimplefe-14.c (main): Add handling of case 0.

From-SVN: r252024

7 years agoc-common.c (field_decl_cmp, [...]): Move to c/c-decl.c.
Nathan Sidwell [Tue, 12 Sep 2017 14:25:17 +0000 (14:25 +0000)]
c-common.c (field_decl_cmp, [...]): Move to c/c-decl.c.

c-family/
* c-common.c (field_decl_cmp, resort_data, resort_field_decl_cmp,
resort_sorted_fields): Move to c/c-decl.c.
* c-common.h (field_decl_cmp, resort_sorted_fields): Delete.
(struct sorted_fields_type): Move to c/c-lang.h.

c/
* c-decl.c (field_decl_cmp, resort_data, resort_field_decl_cmp,
resort_sorted_fields): Moved from c-family/c-common.c.
* c-lang.h (struct sorted_fields_type): Moved from c-family/c-common.h.

From-SVN: r252023

7 years agoReduce lookup_attribute memory footprint.
Martin Liska [Tue, 12 Sep 2017 14:24:29 +0000 (16:24 +0200)]
Reduce lookup_attribute memory footprint.

2017-09-12  Martin Liska  <mliska@suse.cz>

* attribs.c (private_lookup_attribute): New function.
* attribs.h (private_lookup_attribute): Declared here.
(lookup_attribute): Called from this place.

From-SVN: r252022

7 years agore PR tree-optimization/82157 (ICE on valid code at -O2 and -O3: cannot update SSA...
Richard Biener [Tue, 12 Sep 2017 14:15:37 +0000 (14:15 +0000)]
re PR tree-optimization/82157 (ICE on valid code at -O2 and -O3: cannot update SSA form)

2017-09-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82157
* tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
stmts with side-effects.

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

From-SVN: r252020

7 years agoPR libstdc++/79433 no #error for including TS headers with wrong -std
Jonathan Wakely [Tue, 12 Sep 2017 14:03:06 +0000 (15:03 +0100)]
PR libstdc++/79433 no #error for including TS headers with wrong -std

PR libstdc++/79433
* include/Makefile.am: Remove <bits/c++14_warning.h>.
* include/Makefile.in: Regenerate.
* include/bits/c++14_warning.h: Remove.
* include/experimental/algorithm: Do not include <c++14_warning.h>.
* include/experimental/any: Likewise.
* include/experimental/array: Likewise.
* include/experimental/bits/erase_if.h: Likewise.
* include/experimental/bits/lfts_config.h: Likewise.
* include/experimental/bits/shared_ptr.h: Likewise.
* include/experimental/bits/string_view.tcc: Likewise.
* include/experimental/chrono: Likewise.
* include/experimental/deque: Likewise.
* include/experimental/filesystem: Do not include <c++0x_warning.h>.
* include/experimental/forward_list: Do not include <c++14_warning.h>.
* include/experimental/functional: Likewise.
* include/experimental/iterator: Likewise.
* include/experimental/list: Likewise.
* include/experimental/map: Likewise.
* include/experimental/memory: Likewise.
* include/experimental/numeric: Likewise.
* include/experimental/optional: Likewise.
* include/experimental/propagate_const: Likewise.
* include/experimental/ratio: Likewise.
* include/experimental/regex: Likewise.
* include/experimental/set: Likewise.
* include/experimental/string: Likewise.
* include/experimental/string_view: Likewise.
* include/experimental/system_error: Likewise.
* include/experimental/tuple: Likewise.
* include/experimental/type_traits: Likewise.
* include/experimental/unordered_map: Likewise.
* include/experimental/unordered_set: Likewise.
* include/experimental/vector: Likewise.
* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
line number.
* testsuite/experimental/array/neg.cc: Likewise.
* testsuite/experimental/propagate_const/assignment/move_neg.cc:
Likewise.
* testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
* testsuite/experimental/propagate_const/requirements2.cc: Likewise.
* testsuite/experimental/propagate_const/requirements3.cc: Likewise.
* testsuite/experimental/propagate_const/requirements4.cc: Likewise.
* testsuite/experimental/propagate_const/requirements5.cc: Likewise.

From-SVN: r252019

7 years agoPR libstdc++/79433 no #error for including headers with wrong -std
Jonathan Wakely [Tue, 12 Sep 2017 14:02:59 +0000 (15:02 +0100)]
PR libstdc++/79433 no #error for including headers with wrong -std

PR libstdc++/79433
* doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
* doc/html/*: Regenerate.
* include/Makefile.am: Remove <bits/c++17_warning.h>.
* include/Makefile.in: Regenerate.
* include/bits/c++17_warning.h: Remove.
* include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
for pre-C++17 modes.
* include/std/any: Likewise.
(__cpp_lib_any): Define.
* include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
SD-6 draft.
* include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
draft.
* include/std/optional: Do not include <bits/c++17_warning.h>.
(__cpp_lib_optional): Define.
* include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
* include/std/string_view: Do not include <bits/c++17_warning.h>.
(__cpp_lib_string_view): Define.
* include/std/variant: Do not include <bits/c++17_warning.h>.
(__cpp_lib_variant): Define.
* testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
numbers.
* testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
numbers.
* testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
* testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
numbers.
* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
expected value of __cpp_lib_scoped_lock.

From-SVN: r252018

7 years agoPR libstdc++/70483 make std::experimental::string_view fully constexpr
Jonathan Wakely [Tue, 12 Sep 2017 13:31:20 +0000 (14:31 +0100)]
PR libstdc++/70483 make std::experimental::string_view fully constexpr

PR libstdc++/70483
* include/experimental/bits/string_view.tcc (basic_string_view::find)
(basic_string_view::rfind, basic_string_view::find_first_of)
(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
(basic_string_view::find_last_not_of): Add constexpr specifier.
* include/experimental/string_view (basic_string_view::remove_prefix)
(basic_string_view::remove_suffix, basic_string_view::swap)
(basic_string_view::compare, basic_string_view::find)
(basic_string_view::rfind, basic_string_view::find_first_of)
(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
(basic_string_view::find_last_not_of, operator==, operator!=)
(operator<, operator>, operator<=, operator>=): Likewise.
* testsuite/experimental/string_view/operations/compare/char/70483.cc:
New.

From-SVN: r252017

7 years agoTurn HARD_REGNO_NREGS into a target hook
Richard Sandiford [Tue, 12 Sep 2017 13:29:36 +0000 (13:29 +0000)]
Turn HARD_REGNO_NREGS into a target hook

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

gcc/
* target.def (hard_regno_nregs): New hook.
(class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
* targhooks.h (default_hard_regno_nregs): Declare.
* targhooks.c (default_hard_regno_nregs): New function.
* doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
(TARGET_HARD_REGNO_NREGS): ...this hook.
(HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
(CLASS_MAX_NREGS): Likewise.
* doc/tm.texi: Regenerate.
* reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
instead of HARD_REGNO_NREGS.
* rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
HARD_REGNO_NREGS in the comment.
* config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
* config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
* config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
Return an unsigned int.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
* config/arc/arc.h (HARD_REGNO_NREGS): Delete.
* config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
(arc_hard_regno_nregs): New function.
* config/arm/arm.h (HARD_REGNO_NREGS): Delete.
* config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
(arm_hard_regno_nregs): New function.
* config/avr/avr.h (HARD_REGNO_NREGS): Delete.
* config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
* config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
* config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
(HARD_REGNO_NREGS): Delete.
* config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
(cr16_hard_regno_nregs): New function.
(cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
* config/cris/cris.h (HARD_REGNO_NREGS): Delete.
* config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
(cris_hard_regno_nregs): New function.
* config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
* config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
* config/frv/frv.h (HARD_REGNO_NREGS): Delete.
(CLASS_MAX_NREGS): Remove outdated copy of documentation.
* config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
* config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
(frv_hard_regno_nregs): Make static.  Take and return an
unsigned int.
(frv_class_max_nregs): Remove outdated copy of documentation.
* config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
* config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
* config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
* config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
* config/i386/i386.h (HARD_REGNO_NREGS): Delete.
* config/i386/i386.c (ix86_hard_regno_nregs): New function.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
(CLASS_MAX_NREGS): Update comment.
* config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
(ia64_hard_regno_nregs): New function.
* config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
* config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
* config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
* config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
* config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
an unsigned int.
(m32c_hard_regno_nregs): Likewise.  Make static.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
* config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
* config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
(m68k_hard_regno_nregs): New function.
* config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
* config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
* config/mips/mips.h (HARD_REGNO_NREGS): Delete.
* config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
* config/mips/mips.c (mips_hard_regno_nregs): Make static.
Take and return an unsigned int.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
* config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
* config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
* config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
* config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
* config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
(msp430_hard_regno_nregs): Make static.  Take and return an
unsigned int.
* config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
* config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
* config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
(nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
* config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
* config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
* config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
(PA_HARD_REGNO_NREGS): ...this.
* config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
(PA_HARD_REGNO_NREGS): ...this.
* config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
(pa_hard_regno_nregs): New function.
* config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
* config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
(pdp11_hard_regno_nregs): New function.
* config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
* config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
(rs6000_hard_regno_nregs_hook): New function.
* config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
* config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
* config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
Take and return an unsigned int.  Move earlier in file.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
* config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
* config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
(rl78_hard_regno_nregs): Make static.  Take and return an
unsigned int.
* config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
* config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
(rs6000_hard_regno_nregs_hook): New function.
* config/rx/rx.h (HARD_REGNO_NREGS): Delete.
* config/rx/rx.c (rx_hard_regno_nregs): New function.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/s390/s390.h (HARD_REGNO_NREGS): Delete.
* config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
instead of HARD_REGNO_NREGS.
(s390_hard_regno_nregs): New function.
(s390_hard_regno_mode_ok): Add comment from s390.h.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/sh/sh.h (HARD_REGNO_NREGS): Delete.
* config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
(sh_hard_regno_nregs): New function.
(sh_pass_in_reg_p): Use it.
* config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
* config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
(sparc_hard_regno_nregs): New function.
* config/spu/spu.h (HARD_REGNO_NREGS): Delete.
* config/spu/spu.c (spu_hard_regno_nregs): New function.
(spu_function_arg_advance): Use it, supplying a valid register number.
(TARGET_HARD_REGNO_NREGS): Redefine.
* config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
* config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
* config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
* config/v850/v850.h (HARD_REGNO_NREGS): Delete.
* config/vax/vax.h (HARD_REGNO_NREGS): Delete.
* config/visium/visium.h (HARD_REGNO_NREGS): Delete.
(CLASS_MAX_NREGS): Remove copy of old documentation.
* config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
(visium_hard_regno_nregs): New function.
(visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
* config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
* config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
xtensa_hard_regno_nregs): New function.
* system.h (HARD_REGNO_NREGS): Poison.

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

7 years agoUse hard_regno_nregs instead of HARD_REGNO_NREGS
Richard Sandiford [Tue, 12 Sep 2017 13:29:18 +0000 (13:29 +0000)]
Use hard_regno_nregs instead of HARD_REGNO_NREGS

This patch converts some places that use HARD_REGNO_NREGS to use
hard_regno_nregs, in places where the initialisation has obviously
already taken place.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
hard_regno_nregs instead of HARD_REGNO_NREGS.
(THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
* config/c6x/c6x.c (c6x_expand_prologue): Likewise.
(c6x_expand_epilogue): Likewise.
* config/frv/frv.c (frv_alloc_temp_reg): Likewise.
(frv_read_iacc_argument): Likewise.
* config/sh/sh.c: Include regs.h.
(sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
(regs_used): Likewise.
(output_stack_adjust): Likewise.
* config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
* expmed.c: Include regs.h.
(store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
* ree.c: Include regs.h.
(combine_reaching_defs): Use hard_regno_nregs instead of
HARD_REGNO_NREGS.
(add_removable_extension): Likewise.

From-SVN: r252015

7 years agoConvert hard_regno_nregs to a function
Richard Sandiford [Tue, 12 Sep 2017 13:29:05 +0000 (13:29 +0000)]
Convert hard_regno_nregs to a function

This patch converts hard_regno_nregs into an inline function, which
in turn allows hard_regno_nregs to be used as the name of a targetm
field.  This is just a mechanical change.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* regs.h (hard_regno_nregs): Turn into a function.
(end_hard_regno): Update accordingly.
* caller-save.c (setup_save_areas): Likewise.
(save_call_clobbered_regs): Likewise.
(replace_reg_with_saved_mem): Likewise.
(insert_restore): Likewise.
(insert_save): Likewise.
* combine.c (can_change_dest_mode): Likewise.
(move_deaths): Likewise.
(distribute_notes): Likewise.
* config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
(rs6000_split_multireg_move): Likewise.
(rs6000_register_move_cost): Likewise.
(rs6000_memory_move_cost): Likewise.
* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
(rs6000_split_multireg_move): Likewise.
(rs6000_register_move_cost): Likewise.
(rs6000_memory_move_cost): Likewise.
* cselib.c (cselib_reset_table): Likewise.
(cselib_lookup_1): Likewise.
* emit-rtl.c (set_mode_and_regno): Likewise.
* function.c (aggregate_value_p): Likewise.
* ira-color.c (setup_profitable_hard_regs): Likewise.
(check_hard_reg_p): Likewise.
(calculate_saved_nregs): Likewise.
(assign_hard_reg): Likewise.
(improve_allocation): Likewise.
(calculate_spill_cost): Likewise.
* ira-emit.c (modify_move_list): Likewise.
* ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
(ira_hard_reg_in_set_p): Likewise.
* ira.c (setup_reg_mode_hard_regset): Likewise.
(clarify_prohibited_class_mode_regs): Likewise.
(check_allocation): Likewise.
* lra-assigns.c (find_hard_regno_for_1): Likewise.
(lra_setup_reg_renumber): Likewise.
(setup_try_hard_regno_pseudos): Likewise.
(spill_for): Likewise.
(assign_hard_regno): Likewise.
(setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
* lra-constraints.c (in_class_p): Likewise.
(lra_constraint_offset): Likewise.
(simplify_operand_subreg): Likewise.
(lra_constraints): Likewise.
(split_reg): Likewise.
(split_if_necessary): Likewise.
(invariant_p): Likewise.
(inherit_in_ebb): Likewise.
* lra-lives.c (process_bb_lives): Likewise.
* lra-remat.c (reg_overlap_for_remat_p): Likewise.
(get_hard_regs): Likewise.
(do_remat): Likewise.
* lra-spills.c (assign_spill_hard_regs): Likewise.
* mode-switching.c (create_pre_exit): Likewise.
* postreload.c (reload_combine_recognize_pattern): Likewise.
* recog.c (peep2_find_free_register): Likewise.
* regcprop.c (kill_value_regno): Likewise.
(set_value_regno): Likewise.
(copy_value): Likewise.
(maybe_mode_change): Likewise.
(find_oldest_value_reg): Likewise.
(copyprop_hardreg_forward_1): Likewise.
* regrename.c (check_new_reg_p): Likewise.
(regrename_do_replace): Likewise.
* reload.c (push_reload): Likewise.
(combine_reloads): Likewise.
(find_dummy_reload): Likewise.
(operands_match_p): Likewise.
(find_reloads): Likewise.
(find_equiv_reg): Likewise.
(reload_adjust_reg_for_mode): Likewise.
* reload1.c (count_pseudo): Likewise.
(count_spilled_pseudo): Likewise.
(find_reg): Likewise.
(clear_reload_reg_in_use): Likewise.
(free_for_value_p): Likewise.
(allocate_reload_reg): Likewise.
(choose_reload_regs): Likewise.
(reload_adjust_reg_for_temp): Likewise.
(emit_reload_insns): Likewise.
(delete_output_reload): Likewise.
* rtlanal.c (subreg_get_info): Likewise.
* sched-deps.c (sched_analyze_reg): Likewise.
* sel-sched.c (init_regs_for_mode): Likewise.
(mark_unavailable_hard_regs): Likewise.
(choose_best_reg_1): Likewise.
(verify_target_availability): Likewise.
* valtrack.c (dead_debug_insert_temp): Likewise.
* var-tracking.c (track_loc_p): Likewise.
(emit_note_insn_var_location): Likewise.
* varasm.c (make_decl_rtl): Likewise.
* reginfo.c (choose_hard_reg_mode): Likewise.
(init_reg_modes_target): Refer directly to
this_target_regs->x_hard_regno_nregs.

From-SVN: r252014

7 years agoMake more use of in_hard_reg_set_p
Richard Sandiford [Tue, 12 Sep 2017 13:28:37 +0000 (13:28 +0000)]
Make more use of in_hard_reg_set_p

An upcoming patch will convert hard_regno_nregs into an inline
function, which in turn allows hard_regno_nregs to be used as the
name of a targetm field.  This patch rewrites a use that can use
in_hard_reg_set_p instead.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
instead of hard_regno_nregs.

From-SVN: r252013

7 years agoMake more use of end_hard_regno
Richard Sandiford [Tue, 12 Sep 2017 13:28:27 +0000 (13:28 +0000)]
Make more use of end_hard_regno

An upcoming patch will convert hard_regno_nregs into an inline
function, which in turn allows hard_regno_nregs to be used as the
name of a targetm field.  This patch rewrites uses that can use
end_hard_regno instead.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
end_hard_regno instead of hard_regno_nregs.
* config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
* config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
* config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
* ira-color.c (improve_allocation): Likewise.
* lra-assigns.c (find_hard_regno_for_1): Likewise.
* lra-lives.c (mark_regno_live): Likewise.
(mark_regno_dead): Likewise.
* lra-remat.c (operand_to_remat): Likewise.
* lra.c (collect_non_operand_hard_regs): Likewise.
* postreload.c (reload_combine_note_store): Likewise.
(move2add_valid_value_p): Likewise.
* reload.c (regno_clobbered_p): Likewise.

From-SVN: r252012

7 years agoMake more use of END_REGNO
Richard Sandiford [Tue, 12 Sep 2017 13:28:18 +0000 (13:28 +0000)]
Make more use of END_REGNO

An upcoming patch will convert hard_regno_nregs into an inline
function, which in turn allows hard_regno_nregs to be used as the
name of a targetm field.  This patch rewrites uses that are more
easily (and efficiently) written as END_REGNO.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
hard_regno_nregs.
* config/v850/v850.c (v850_reorg): Likewise.
* reload.c (refers_to_regno_for_reload_p): Likewise.
(find_equiv_reg): Likewise.
* reload1.c (reload_reg_reaches_end_p): Likewise.

From-SVN: r252011

7 years agoMake more use of REG_NREGS
Richard Sandiford [Tue, 12 Sep 2017 13:28:08 +0000 (13:28 +0000)]
Make more use of REG_NREGS

An upcoming patch will convert hard_regno_nregs into an inline
function, which in turn allows hard_regno_nregs to be used as the
name of a targetm field.  This patch rewrites uses that are more
easily (and efficiently) written as REG_NREGS.

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* caller-save.c (add_used_regs): Use REG_NREGS instead of
hard_regno_nregs.
* config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
* config/arm/arm.c (output_move_neon): Likewise.
(arm_attr_length_move_neon): Likewise.
(neon_split_vcombine): Likewise.
* config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
(c6x_mark_reg_written): Likewise.
(c6x_dwarf_register_span): Likewise.
* config/i386/i386.c (ix86_save_reg): Likewise.
* config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
(rws_access_reg): Likewise.
* config/s390/s390.c (s390_call_saved_register_used): Likewise.
* mode-switching.c (create_pre_exit): Likewise.
* ree.c (combine_reaching_defs): Likewise.
(add_removable_extension): Likewise.
* regcprop.c (find_oldest_value_reg): Likewise.
(copyprop_hardreg_forward_1): Likewise.
* reload.c (reload_inner_reg_of_subreg): Likewise.
(push_reload): Likewise.
(combine_reloads): Likewise.
(find_dummy_reload): Likewise.
(reload_adjust_reg_for_mode): Likewise.
* reload1.c (find_reload_regs): Likewise.
(forget_old_reloads_1): Likewise.
(reload_reg_free_for_value_p): Likewise.
(reload_adjust_reg_for_temp): Likewise.
(emit_reload_insns): Likewise.
(delete_output_reload): Likewise.
* sel-sched.c (choose_best_reg_1): Likewise.
(choose_best_pseudo_reg): Likewise.

From-SVN: r252010

7 years agoTurn SLOW_UNALIGNED_ACCESS into a target hook
Richard Sandiford [Tue, 12 Sep 2017 13:27:55 +0000 (13:27 +0000)]
Turn SLOW_UNALIGNED_ACCESS into a target hook

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

gcc/
* defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
* target.def (slow_unaligned_access): New hook.
* targhooks.h (default_slow_unaligned_access): Declare.
* targhooks.c (default_slow_unaligned_access): New function.
* doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
(TARGET_SLOW_UNALIGNED_ACCESS): ...this.
* doc/tm.texi: Regenerate.
* config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
* config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
* config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
definition.
* config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
* config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
Redefine.
(rs6000_slow_unaligned_access): New function.
(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
(expand_block_compare): Likewise.
(expand_strn_compare): Likewise.
(rs6000_rtx_costs): Likewise.
* config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
(riscv_slow_unaligned_access): Likewise.
* config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
(riscv_slow_unaligned_access_p): ...this and make static.
(riscv_option_override): Update accordingly.
(riscv_slow_unaligned_access): New function.
(TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
* config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
(rs6000_slow_unaligned_access): New function.
(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
(rs6000_rtx_costs): Likewise.
* config/rs6000/rs6000-string.c (expand_block_compare)
(expand_strn_compare): Use targetm.slow_unaligned_access instead
of SLOW_UNALIGNED_ACCESS.
* config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
* config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
* calls.c (expand_call): Use targetm.slow_unaligned_access instead
of SLOW_UNALIGNED_ACCESS.
* expmed.c (simple_mem_bitfield_p): Likewise.
* expr.c (alignment_for_piecewise_move): Likewise.
(emit_group_load_1): Likewise.
(emit_group_store): Likewise.
(copy_blkmode_from_reg): Likewise.
(emit_push_insn): Likewise.
(expand_assignment): Likewise.
(store_field): Likewise.
(expand_expr_real_1): Likewise.
* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
* lra-constraints.c (simplify_operand_subreg): Likewise.
* stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
* gimple-ssa-store-merging.c: Likewise in block comment at start
of file.
* tree-ssa-strlen.c: Include target.h.
(handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
of SLOW_UNALIGNED_ACCESS.
* system.h (SLOW_UNALIGNED_ACCESS): Poison.

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

7 years agoPR81285: Fix uninitialised variable in emit_store_flag_int
Richard Sandiford [Tue, 12 Sep 2017 13:27:13 +0000 (13:27 +0000)]
PR81285: Fix uninitialised variable in emit_store_flag_int

2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR rtl-optimization/82185
* expmed.c (emit_store_flag_int): Only test tem if it has been
initialized.

From-SVN: r252008

7 years agore PR middle-end/82149 (match.pd: 2919: bad if test ?)
Richard Biener [Tue, 12 Sep 2017 13:21:52 +0000 (13:21 +0000)]
re PR middle-end/82149 (match.pd: 2919: bad if test ?)

2017-09-12  Richard Biener  <rguenther@suse.de>

PR middle-end/82149
* match.pd ((FTYPE) N CMP CST): Fix typo.

From-SVN: r252007

7 years agoAdd short_call function attribute for MIPS
Simon Atanasyan [Tue, 12 Sep 2017 12:51:40 +0000 (12:51 +0000)]
Add short_call function attribute for MIPS

gcc/
* config/mips/mips.c (mips_attribute_table): Add 'short_call'
attribute.
(mips_near_type_p): Add 'short_call' attribute as a synonym
for 'near'.
* doc/extend.texi (short_call): Document new function attribute.

gcc/testsuite

* gcc.target/mips/near-far-1.c: Add check for 'short_call'
attribute.
* gcc.target/mips/near-far-2.c: Likewise.
* gcc.target/mips/near-far-3.c: Likewise.
* gcc.target/mips/near-far-4.c: Likewise.

From-SVN: r252006

7 years agoKill CLASSTYPE_SORTED_FIELDS.
Nathan Sidwell [Tue, 12 Sep 2017 12:50:56 +0000 (12:50 +0000)]
Kill CLASSTYPE_SORTED_FIELDS.

* cp-tree.h (struct lang_type): Lose sorted_fields member.
(CLASSTYPE_SORTED_FIELDS): Delete.
* name-lookup.h (set_class_bindings): Add EXTRA arg.
* name-lookup.c (fields_linear_search): New, broken out of ...
(lookup_field_1): ... here.  Delete remainder of function.
(get_class_binding_direct): Reimplement without sorted_fields.
(get_class_binding): Rename TYPE arg to KLASS, for consistency.
(get_method_slot): Call set_class_binding when creating method_vec
on complete type.
(method_name_cmp): Order identically named slots.
(sorted_fields_type_new): Delete.
(field_vc_append_class_fields): Rename to ...
(method_vec_append_class_fields): ... here.  Adjust.
(field_vec_append_enum_values): Renme to ...
(method_vec_append_enum_values): ... here. Adjust.
(method_vec_dedup): New.
(set_class_bindings): Reimplement.
(insert_late_enum_def_bindings): Reimplement.

From-SVN: r252005

7 years agoname-lookup.c (get_class_binding): Rename TYPE arg to KLASS for consistency.
Nathan Sidwell [Tue, 12 Sep 2017 12:15:07 +0000 (12:15 +0000)]
name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for consistency.

* name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for
consistency.
(restort_data): Move later.
(method_name_cmp, resort_method_name_cmp): Simplify.
(resort_type_method_vec): Reformat.

From-SVN: r252004

7 years agore PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c...
Jakub Jelinek [Tue, 12 Sep 2017 11:49:29 +0000 (13:49 +0200)]
re PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c:2262)

PR target/82112
* c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
assertion check that in the condition.
(get_atomic_generic_size): Likewise.  Before testing if parameter
has pointer type, if it has array type, call for C++
default_conversion to perform array-to-pointer conversion.

* c-c++-common/pr82112.c: New test.
* gcc.dg/pr82112.c: New test.

From-SVN: r252003

7 years agotree-vect-generic.c (expand_vector_operations_1): Do nothing for operations we cannot...
Richard Biener [Tue, 12 Sep 2017 10:51:33 +0000 (10:51 +0000)]
tree-vect-generic.c (expand_vector_operations_1): Do nothing for operations we cannot scalarize.

2017-09-12  Richard Biener  <rguenther@suse.de>

* tree-vect-generic.c (expand_vector_operations_1): Do nothing
for operations we cannot scalarize.

From-SVN: r252002

7 years ago[multiple changes]
Arnaud Charlet [Tue, 12 Sep 2017 10:15:46 +0000 (12:15 +0200)]
[multiple changes]

2017-09-12  Bob Duff  <duff@adacore.com>

* sem_warn.adb: Minor comment.

2017-09-12  Bob Duff  <duff@adacore.com>

* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to
be Default_Initialized_Item, and apply pragma Unmodified to it,
to suppress the warning.

2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>

* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return
for access types.

2017-09-12  Yannick Moy  <moy@adacore.com>

* gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global
together with Global when ignoring one in CodePeer mode.

2017-09-12  Javier Miranda  <miranda@adacore.com>

* sem_ch3.adb (Analyze_Declarations): In nested
package declarations that have a private part enable missing check
of the RM rule 13.1.1(11/3): usage names in aspect definitions are
resolved at the end of the immediately enclosing declaration list.

From-SVN: r252001

7 years ago[multiple changes]
Arnaud Charlet [Tue, 12 Sep 2017 09:52:00 +0000 (11:52 +0200)]
[multiple changes]

2017-09-12  Bob Duff  <duff@adacore.com>

* sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to
Empty.

2017-09-12  Georges-Axel Jaloyan  <jaloyan@adacore.com>

* debug.adb: Reserving flag -gnatdF for safe pointer checking.
* gnat1drv.adb (gnat1drv): Adding the call to the analysis on
dF flag.
* sem_spark.adb, sem_spark.ads: Implementation of the analysis,
in preparation for the evolution of the SPARK language that
includes a pointer analysis for checking non-aliasing of access
types. The Check_Safe_Pointers function is the entry point, and
will traverse the AST and raise compile-time errors everytime
it detects non-begign aliasing.  Detailed comments are present
in the sem_spark.ads file.
* sem_util.adb, sem_util.ads (First_Global, Next_Global): New
functions to iterate over the list of globals of a subprogram.
* libgnat/system.ads: Add restriction No_Finalization.
* gcc-interface/Make-lang.in: Add new file sem_spark.adb and
dependency on g-dynhta.adb.

From-SVN: r252000

7 years agosem_ch6.adb (Analyze_Expression_Function): Call Check_Dynamically_Tagged_Expression.
Bob Duff [Tue, 12 Sep 2017 09:09:30 +0000 (09:09 +0000)]
sem_ch6.adb (Analyze_Expression_Function): Call Check_Dynamically_Tagged_Expression.

2017-09-12  Bob Duff  <duff@adacore.com>

* sem_ch6.adb (Analyze_Expression_Function): Call
Check_Dynamically_Tagged_Expression.
* sem_util.adb (Check_Dynamically_Tagged_Expression): Remove
"and then Is_Tagged_Type (Typ)" because there is an earlier
"Assert (Is_Tagged_Type (Typ))".

From-SVN: r251999

7 years agotree-ssa-threadbackward.c (fsm_find_thread_path): Make GC vectors heap vectors.
Aldy Hernandez [Tue, 12 Sep 2017 07:24:32 +0000 (07:24 +0000)]
tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC vectors heap vectors.

* tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
vectors heap vectors.  Clean up comments.
Make visited_bbs a reference.
(profitable_jump_thread_path): Make GC
vectors heap vectors.  Clean up comments.
Misc cleanups.
(convert_and_register_jump_thread_path): Make GC vectors heap
vectors.
(check_subpath_and_update_thread_path): Same.  Clean up comments.
Make visited_bbs a reference.
(handle_phi): Abstract common code to to
register_jump_thread_path_if_profitable.
Rename VAR_BB to DEF_BB.
Update comments.
Make GC vectors heap vectors.
Make visited_bbs a reference.
(handle_assignment): Same.
(register_jump_thread_path_if_profitable): New.
(fsm_find_control_statement_thread_paths): Rename VAR_BB to
DEF_BB.
Make GC vectors heap vectors.  Clean up comments.
Make visited_bbs a reference.
(find_jump_threads_backwards): Make visited_bbs live in the stack.
* tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
comment.

From-SVN: r251998

7 years ago* gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff.
Eric Botcazou [Tue, 12 Sep 2017 07:05:19 +0000 (07:05 +0000)]
* gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff.

From-SVN: r251997

7 years agoDaily bump.
GCC Administrator [Tue, 12 Sep 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r251996

7 years agoPR libstdc++/70483 make std::string_view fully constexpr
Jonathan Wakely [Mon, 11 Sep 2017 21:47:41 +0000 (22:47 +0100)]
PR libstdc++/70483 make std::string_view fully constexpr

PR libstdc++/70483
* include/bits/string_view.tcc (basic_string_view::find)
(basic_string_view::rfind, basic_string_view::find_first_of)
(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
(basic_string_view::find_last_not_of): Add constexpr specifier.
* include/std/string_view (basic_string_view::operator=)
(basic_string_view::rbegin, basic_string_view::rend)
(basic_string_view::crbegin, basic_string_view::crend)
(basic_string_view::remove_prefix, basic_string_view::remove_suffix)
(basic_string_view::swap, basic_string_view::compare)
(basic_string_view::find, basic_string_view::rfind)
(basic_string_view::find_first_of, basic_string_view::find_last_of)
(basic_string_view::find_first_not_of)
(basic_string_view::find_last_not_of, basic_string_view::_M_check)
(basic_string_view::_M_limit, operator==, operator!=, operator<)
(operator>, operator<=, operator>=): Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
char/1.cc: Repeat tests in constexpr context.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
char/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operators/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
cbegin, cend, rbegin, rend, crbegin and crend.
* testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
Remove trailing whitespace.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1.cc: Likewise.
* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
New.
* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
New.
* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
New.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
2.cc: New.

From-SVN: r251988

7 years agoxtensa: fix PR target/82181
Max Filippov [Mon, 11 Sep 2017 21:33:36 +0000 (21:33 +0000)]
xtensa: fix PR target/82181

2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
words of E_DImode object are reachable by xtensa_uimm8x4 access.

From-SVN: r251986

7 years agore PR libstdc++/71500 (regex::icase only works on first character in a range)
Tim Shen [Mon, 11 Sep 2017 19:02:34 +0000 (19:02 +0000)]
re PR libstdc++/71500 (regex::icase only works on first character in a range)

PR libstdc++/71500
* include/bits/regex_executor.tcc: Support icase in regex_tratis<...>
for back reference matches.
* testsuite/28_regex/regression.cc: Test case.

From-SVN: r251982

7 years agoAdjust test to pass with old std::string
Jonathan Wakely [Mon, 11 Sep 2017 16:54:57 +0000 (17:54 +0100)]
Adjust test to pass with old std::string

* testsuite/21_strings/basic_string/lwg2946.cc: Adjust for
compatibility with old COW std::string.

From-SVN: r251981

7 years ago2017-09-11 Vidya Praveen <vidyapraveen@arm.com>
Vidya Praveen [Mon, 11 Sep 2017 14:14:57 +0000 (15:14 +0100)]
2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>

Revert r251800 and r251799.

From-SVN: r251980

7 years agoAdd myself as ARM port maintainer
Kyrylo Tkachov [Mon, 11 Sep 2017 14:13:25 +0000 (14:13 +0000)]
Add myself as ARM port maintainer

2017-09-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* MAINTAINERS (Reviewers): Move myself from here...
(CPU Port Maintainers): ... to here.

From-SVN: r251979

7 years ago[multiple changes]
Arnaud Charlet [Mon, 11 Sep 2017 12:40:38 +0000 (14:40 +0200)]
[multiple changes]

2017-09-11  Arnaud Charlet  <charlet@adacore.com>

* doc/gnat_ugn/the_gnat_compilation_model.rst: Fix sphinx warning.
* doc/gnat_ugn/platform_specific_information.rst: Remove doc
for no longer supported platforms.
* doc/gnat_ugn/gnat_and_program_execution.rst: Added detailed
description of the semantics for dimensionality analysis.
* gnat_ugn.texi: Regenerated.

2017-09-11  Eric Botcazou  <ebotcazou@adacore.com>

* freeze.adb (Has_Incomplete_Compoent): Delete.
(Freeze_Profile):
Do not inhibit the freezing of the profile of an expression
function here.
(Freeze_Subprogram): Do not re-create extra formals.
* sem_ch6.adb (Analyze_Expression_Function): Always
pre-analyze the expression if the function is not a completion.
(Analyze_Subprogram_Body_Helper): For the body generated
from an expression function that is not a completion, do
not freeze the profile and temporary mask the types declared
outside the expression that are not yet frozen.
* sem_res.adb (Rewrite_Renamed_Operator): Also bail out if invoked
during the pre-analysis of an expression function.

From-SVN: r251978

7 years agoRemoved, no longer used.
Arnaud Charlet [Mon, 11 Sep 2017 12:40:31 +0000 (14:40 +0200)]
Removed, no longer used.

From-SVN: r251977

7 years agoRemoved, no longer used.
Arnaud Charlet [Mon, 11 Sep 2017 12:17:33 +0000 (14:17 +0200)]
Removed, no longer used.

From-SVN: r251976

7 years agogigi.h (enum standard_datatypes): Minor tweak.
Eric Botcazou [Mon, 11 Sep 2017 10:32:32 +0000 (10:32 +0000)]
gigi.h (enum standard_datatypes): Minor tweak.

* gcc-interface/gigi.h (enum standard_datatypes): Minor tweak.
(gigi): Likewise.

From-SVN: r251974

7 years agoRestored, removed by mistake.
Arnaud Charlet [Mon, 11 Sep 2017 10:24:31 +0000 (12:24 +0200)]
Restored, removed by mistake.

From-SVN: r251973

7 years agoRenamed s-thread__ae653.adb
Arnaud Charlet [Mon, 11 Sep 2017 10:18:05 +0000 (12:18 +0200)]
Renamed s-thread__ae653.adb

From-SVN: r251972

7 years agoRemoved, no longer used.
Arnaud Charlet [Mon, 11 Sep 2017 10:17:12 +0000 (12:17 +0200)]
Removed, no longer used.

From-SVN: r251971

7 years agoNew file.
Arnaud Charlet [Mon, 11 Sep 2017 10:15:59 +0000 (12:15 +0200)]
New file.

From-SVN: r251970

7 years agoRemoved, no longer used.
Arnaud Charlet [Mon, 11 Sep 2017 10:13:06 +0000 (12:13 +0200)]
Removed, no longer used.

From-SVN: r251969

7 years agolibgnat: Rename ?-[a-z]*-* into ?-[a-z]*__*
Arnaud Charlet [Mon, 11 Sep 2017 10:12:05 +0000 (12:12 +0200)]
libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__*

2017-09-11  Jerome Lambourg  <lambourg@adacore.com>

        * libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__*
        * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Take this
renaming into account.

From-SVN: r251968

7 years agolib-xref-spark_specific.adb: Minor rewrite.
Yannick Moy [Mon, 11 Sep 2017 09:48:04 +0000 (11:48 +0200)]
lib-xref-spark_specific.adb: Minor rewrite.

2017-09-11  Yannick Moy  <moy@adacore.com>

* lib-xref-spark_specific.adb: Minor rewrite.

From-SVN: r251967

7 years agoMakefile.in: Take this renaming into account.
Jerome Lambourg [Mon, 11 Sep 2017 09:19:29 +0000 (11:19 +0200)]
Makefile.in: Take this renaming into account.

2017-09-11  Jerome Lambourg  <lambourg@adacore.com>

* gcc-interface/Makefile.in: Take this renaming into account.

From-SVN: r251966

7 years agolibgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__*
Arnaud Charlet [Mon, 11 Sep 2017 09:18:42 +0000 (11:18 +0200)]
libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__*

2017-09-11  Jerome Lambourg  <lambourg@adacore.com>

        * libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__*
        * gcc-interface/Makefile.in: Take this renaming into account.

From-SVN: r251965

7 years agoMake HSA resilient to side-effects of split_edge
Martin Jambor [Mon, 11 Sep 2017 09:09:26 +0000 (11:09 +0200)]
Make HSA resilient to side-effects of split_edge

2017-09-11  Martin Jambor  <mjambor@suse.cz>

PR hsa/82119
* hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
arguments in advance.
* hsa-regalloc.c (naive_process_phi): New parameter predecessors,
use it to find predecessor edges.
(naive_outof_ssa): Collect vector of predecessors.

From-SVN: r251964

7 years agoRemoved.
Arnaud Charlet [Mon, 11 Sep 2017 08:53:50 +0000 (10:53 +0200)]
Removed.

From-SVN: r251963

7 years ago* s-auxdec-empty.ads, s-auxdec-empty.adb: Removed, no longer used.
Arnaud Charlet [Mon, 11 Sep 2017 08:52:18 +0000 (10:52 +0200)]
* s-auxdec-empty.ads, s-auxdec-empty.adb: Removed, no longer used.

From-SVN: r251962

7 years agoUpdate header.
Arnaud Charlet [Mon, 11 Sep 2017 08:48:41 +0000 (10:48 +0200)]
Update header.

From-SVN: r251961

7 years agosem_util.adb (Check_Result_And_Post_State): Do not issue a warning about missing...
Yannick Moy [Mon, 11 Sep 2017 08:37:51 +0000 (08:37 +0000)]
sem_util.adb (Check_Result_And_Post_State): Do not issue a warning about missing reference to an outcome if...

2017-09-11  Yannick Moy  <moy@adacore.com>

* sem_util.adb (Check_Result_And_Post_State):
Do not issue a warning about missing reference to an outcome if
the subprogram is ghost and has no outputs.
* lib-xref-spark_specific.adb, sem_aggr.adb, sem_aux.ads: Minor
reformatting.

From-SVN: r251960

7 years agognat1drv.adb (Adjust_Global_Switches): Set Check_Validity_Of_Parameters to False...
Yannick Moy [Mon, 11 Sep 2017 08:06:46 +0000 (08:06 +0000)]
gnat1drv.adb (Adjust_Global_Switches): Set Check_Validity_Of_Parameters to False in GNATprove mode.

2017-09-11  Yannick Moy  <moy@adacore.com>

* gnat1drv.adb (Adjust_Global_Switches): Set
Check_Validity_Of_Parameters to False in GNATprove mode.
* opt.ads (Check_Validity_Of_Parameters): Document switch to
set option.

From-SVN: r251959

7 years agoNew files, to ease sync between AdaCore and FSF.
Arnaud Charlet [Mon, 11 Sep 2017 08:05:43 +0000 (10:05 +0200)]
New files, to ease sync between AdaCore and FSF.

From-SVN: r251958

7 years agoNew files, to ease sync between AdaCore and FSF.
Arnaud Charlet [Mon, 11 Sep 2017 08:04:48 +0000 (10:04 +0200)]
New files, to ease sync between AdaCore and FSF.

From-SVN: r251957

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

From-SVN: r251956

7 years agore PR ada/79441 (gnat.dg/pack9.adb fails)
Eric Botcazou [Sun, 10 Sep 2017 17:04:19 +0000 (17:04 +0000)]
re PR ada/79441 (gnat.dg/pack9.adb fails)

PR ada/79441
* gnat.dg/pack9.adb: Robustify.

From-SVN: r251951

7 years agore PR fortran/34640 (ICE when assigning item of a derived-component to a pointer)
Paul Thomas [Sun, 10 Sep 2017 17:02:53 +0000 (17:02 +0000)]
re PR fortran/34640 (ICE when assigning item of a derived-component to a pointer)

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

PR fortran/34640
PR fortran/40737
PR fortran/55763
PR fortran/57019
PR fortran/57116

* expr.c (is_subref_array): Add class pointer array dummies
to the list of expressions that return true.
* trans-array.c: Add SPAN_FIELD and update indices for
subsequent fields.
(gfc_conv_descriptor_span, gfc_conv_descriptor_span_get,
gfc_conv_descriptor_span_set, is_pointer_array,
get_array_span): New functions.
(gfc_get_descriptor_offsets_for_info): New function to preserve
API for access to descriptor fields for trans-types.c.
(gfc_conv_scalarized_array_ref): If the expression is a subref
array, make sure that info->descriptor is a descriptor type.
Otherwise, if info->descriptor is a pointer array, set 'decl'
and fix it if it is a component reference.
(build_array_ref): Simplify handling of class array refs by
passing the vptr to gfc_build_array_ref rather than generating
the pointer arithmetic in this function.
(gfc_conv_array_ref): As in gfc_conv_scalarized_array_ref, set
'decl'.
(gfc_array_allocate): Set the span field if this is a pointer
array. Use the expr3 element size if it is available, so that
the dynamic type element size is used.
(gfc_conv_expr_descriptor): Set the span field for pointer
assignments.
* trans-array.h: Prototypes for gfc_conv_descriptor_span_get
gfc_conv_descriptor_span_set and
gfc_get_descriptor_offsets_for_info added.
trans-decl.c (gfc_get_symbol_decl): If a non-class pointer
array, mark the declaration as a GFC_DECL_PTR_ARRAY_P. Remove
the setting of GFC_DECL_SPAN.
(gfc_trans_deferred_vars): Set the span field to zero in thge
originating scope.
* trans-expr.c (gfc_conv_procedure_call): Do not use copy-in/
copy-out to pass subref expressions to a pointer dummy.
(gfc_trans_pointer_assignment): Remove code for setting of
GFC_DECL_SPAN. Set the 'span' field for non-class pointers to
class function results. Likewise for rank remap. In the case
that the target is not a whole array, use the target array ref
for remap and, since the 'start' indices are missing, set the
lbounds to one, as required by the standard.
* trans-intrinsic.c (conv_expr_ref_to_caf_ref): Pick up the
'token' offset from the field decl in the descriptor.
(conv_isocbinding_subroutine): Set the 'span' field.
* trans-io.c (gfc_trans_transfer): Always scalarize pointer
array io.
* trans-stmt.c (trans_associate_var): Set the 'span' field.
* trans-types.c (gfc_get_array_descriptor_base): Add the 'span'
field to the array descriptor.
(gfc_get_derived_type): Pointer array components are marked as
GFC_DECL_PTR_ARRAY_P.
(gfc_get_array_descr_info): Replaced API breaking code for
descriptor offset calling gfc_get_descriptor_offsets_for_info.
* trans.c (get_array_span): New function.
(gfc_build_array_ref): Simplify by calling get_array_span and
obtain 'span' if 'decl' or 'vptr' present.
* trans.h : Rename DECL_LANG_FLAG_6, GFC_DECL_SUBREF_ARRAY_P,
as GFC_DECL_PTR_ARRAY_P.

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

PR fortran/34640
* gfortran.dg/associate_24.f90: New test.
* gfortran.dg/assumed_type_2.f90: Adjust some of the tree dump
checks.
* gfortran.dg/no_arg_check_2.f90: Likewise.
* gfortran.dg/pointer_array_1.f90: New test.
* gfortran.dg/pointer_array_2.f90: New test.
* gfortran.dg/pointer_array_7.f90: New test.
* gfortran.dg/pointer_array_8.f90: New test.
* gfortran.dg/pointer_array_component_1.f90: New test.
* gfortran.dg/pointer_array_component_2.f90: New test.
* gfortran.dg/goacc/kernels-alias-4.f95: Bump up both tree scan
counts by 1.

PR fortran/40737
* gfortran.dg/pointer_array_3.f90: New test.

PR fortran/57116
* gfortran.dg/pointer_array_4.f90: New test.

PR fortran/55763
* gfortran.dg/pointer_array_5.f90: New test.

PR fortran/57019
* gfortran.dg/pointer_array_6.f90: New test.

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

PR fortran/34640
* libgfortran/libgfortran.h: Add span field to descriptor.
* libgfortran/libtool-version : Bump up version number to 5:0:0.

From-SVN: r251949

7 years agoA partially initialized variable isn't constant.
Jason Merrill [Sun, 10 Sep 2017 09:11:40 +0000 (05:11 -0400)]
A partially initialized variable isn't constant.

* constexpr.c (reduced_constant_expression_p): If
CONSTRUCTOR_NO_IMPLICIT_ZERO, check that all fields are initialized.

From-SVN: r251948

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

From-SVN: r251945

7 years agoRevert: * dwarf2out.c (gen_formal_parameter_die): Remove obsolete hunk.
Jason Merrill [Sat, 9 Sep 2017 22:22:16 +0000 (18:22 -0400)]
Revert: * dwarf2out.c (gen_formal_parameter_die): Remove obsolete hunk.

Check ultimate_origin before setting reusing_die.

From-SVN: r251941

7 years ago[MAINTAINERS] Add myself as AArch64 CPU Port maintainer
James Greenhalgh [Sat, 9 Sep 2017 14:48:31 +0000 (14:48 +0000)]
[MAINTAINERS] Add myself as AArch64 CPU Port maintainer

From-SVN: r251940

7 years agoPR c++/81852 define feature-test macro for -fthreadsafe-statics
Jonathan Wakely [Sat, 9 Sep 2017 14:32:25 +0000 (15:32 +0100)]
PR c++/81852 define feature-test macro for -fthreadsafe-statics

gcc/c-family:

PR c++/81852
* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init.

gcc/testsuite:

PR c++/81852
* g++.dg/cpp1y/feat-cxx11.C: Check __cpp_threadsafe_static_init.
* g++.dg/cpp1y/feat-cxx14.C: Likewise.
* g++.dg/cpp1y/feat-cxx98.C: Likewise.
* g++.dg/cpp1y/feat-neg.C: Likewise.
* g++.dg/cpp1z/feat-cxx1z.C: Likewise.

From-SVN: r251939

7 years agodwarf2out.c (gen_formal_parameter_die): Remove obsolete hunk.
Richard Biener [Sat, 9 Sep 2017 14:04:58 +0000 (14:04 +0000)]
dwarf2out.c (gen_formal_parameter_die): Remove obsolete hunk.

* dwarf2out.c (gen_formal_parameter_die): Remove obsolete hunk.

Check ultimate_origin before setting reusing_die.

Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r251938

7 years agodecl.c (gnat_to_gnu_entity): Don't generate debug info for inner record types if...
Pierre-Marie de Rodat [Sat, 9 Sep 2017 13:05:40 +0000 (13:05 +0000)]
decl.c (gnat_to_gnu_entity): Don't generate debug info for inner record types if -fgnat-encodings=minimal.

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Don't
generate debug info for inner record types if -fgnat-encodings=minimal.
(gnat_to_gnu_entity) <E_Record_Subtype>: Use the ultimate base record
type as the debug type.

From-SVN: r251937

7 years agodecl.c (components_to_record): Do not reorder in non- packed record types if...
Eric Botcazou [Sat, 9 Sep 2017 12:48:41 +0000 (12:48 +0000)]
decl.c (components_to_record): Do not reorder in non- packed record types if...

* gcc-interface/decl.c (components_to_record): Do not reorder in non-
packed record types if pragma Optimize_Alignment (Space) is enabled.

From-SVN: r251936

7 years agotrans.c (Subprogram_Body_to_gnu): Disregard inlining limits for expression functions.
Eric Botcazou [Sat, 9 Sep 2017 12:45:45 +0000 (12:45 +0000)]
trans.c (Subprogram_Body_to_gnu): Disregard inlining limits for expression functions.

* gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining
limits for expression functions.
(gnat_to_gnu) <N_Object_Declaration>: Fix formatting.

From-SVN: r251935

7 years agodecl.c (gnat_to_gnu_entity): Copy the layout of the record from the parent type only...
Eric Botcazou [Sat, 9 Sep 2017 12:41:19 +0000 (12:41 +0000)]
decl.c (gnat_to_gnu_entity): Copy the layout of the record from the parent type only if...

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Copy the
layout of the record from the parent type only if both are or are not
unchecked unions.
(is_stored_discriminant): Return false for an unchecked union.

From-SVN: r251934

7 years agoutils2.c (build_allocator): In type_annotate_only mode return NULL_EXPR.
Eric Botcazou [Sat, 9 Sep 2017 12:36:20 +0000 (12:36 +0000)]
utils2.c (build_allocator): In type_annotate_only mode return NULL_EXPR.

* gcc-interface/utils2.c (build_allocator): In type_annotate_only mode
return NULL_EXPR.

From-SVN: r251933

7 years agodecl.c (promote_object_alignment): New function taken from...
Eric Botcazou [Sat, 9 Sep 2017 12:29:08 +0000 (12:29 +0000)]
decl.c (promote_object_alignment): New function taken from...

* gcc-interface/decl.c (promote_object_alignment): New function taken
from...
(gnat_to_gnu_entity) <E_Variable>: ...here.  Invoke it.
(gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and
create a padding type on success before doing the atomic check.

From-SVN: r251931

7 years agodecl.c (gnat_to_gnu_entity): Apply the promotion to static memory earlier in the...
Eric Botcazou [Sat, 9 Sep 2017 12:19:25 +0000 (12:19 +0000)]
decl.c (gnat_to_gnu_entity): Apply the promotion to static memory earlier in the processing.

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Apply the
promotion to static memory earlier in the processing.

From-SVN: r251929

7 years agodecl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK and TYPE_BY_REFERENCE_P flags...
Eric Botcazou [Sat, 9 Sep 2017 12:02:57 +0000 (12:02 +0000)]
decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK and TYPE_BY_REFERENCE_P flags on types after various...

* gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK
and TYPE_BY_REFERENCE_P flags on types after various promotions.
* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
Consider all kinds of entities.

From-SVN: r251927

7 years agodecl.c: Add decl_type_param_list...
Paul Thomas [Sat, 9 Sep 2017 11:10:42 +0000 (11:10 +0000)]
decl.c: Add decl_type_param_list...

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

* decl.c : Add decl_type_param_list, type_param_spec_list as
static variables to hold PDT spec lists.
(build_sym): Copy 'type_param_spec_list' to symbol spec_list.
(build_struct): Copy the 'saved_kind_expr' to the component
'kind_expr'. Check that KIND or LEN components appear in the
decl_type_param_list. These should appear as symbols in the
f2k_derived namespace. If the component is itself a PDT type,
copy the decl_type_param_list to the component param_list.
(gfc_match_kind_spec): If the KIND expression is parameterized
set KIND to zero and store the expression in 'saved_kind_expr'.
(insert_parameter_exprs): New function.
(gfc_insert_kind_parameter_exprs): New function.
(gfc_insert_parameter_exprs): New function.
(gfc_get_pdt_instance): New function.
(gfc_match_decl_type_spec): Match the decl_type_spec_list if it
is present. If it is, call 'gfc_get_pdt_instance' to obtain the
specific instance of the PDT.
(match_attr_spec): Match KIND and LEN attributes. Check for the
standard and for type/kind of the parameter. They are also not
allowed outside a derived type definition.
(gfc_match_data_decl): Null the decl_type_param_list and the
type_param_spec_list on entry and free them on exit.
(gfc_match_formal_arglist): If 'typeparam' is true, add the
formal symbol to the f2k_derived namespace.
(gfc_match_derived_decl): Register the decl_type_param_list
if this is a PDT. If this is a type extension, gather up all
the type parameters and put them in the right order.
*dump-parse-tree.c (show_attr): Signal PDT templates and the
parameter attributes.
(show_components): Output parameter atrributes and component
parameter list.
(show_symbol): Show variable parameter lists.
* expr.c (expr.c): Copy the expression parameter list.
(gfc_is_constant_expr): Pass on symbols representing PDT
parameters.
(gfc_check_init_expr): Break on PDT KIND parameters and
PDT parameter expressions.
(gfc_check_assign): Assigning to KIND or LEN components is an
error.
(derived_parameter_expr): New function.
(gfc_derived_parameter_expr): New function.
(gfc_spec_list_type): New function.
* gfortran.h : Add enum gfc_param_spec_type. Add the PDT attrs
to the structure symbol_attr. Add the 'kind_expr' and
'param_list' field to the gfc_component structure. Comment on
the reuse of the gfc_actual_arglist structure as storage for
type parameter spec lists. Add the new field 'spec_type' to
this structure. Add 'param_list' fields to gfc_symbol and
gfc_expr. Add prototypes for gfc_insert_kind_parameter_exprs,
gfc_insert_parameter_exprs, gfc_add_kind, gfc_add_len,
gfc_derived_parameter_expr and gfc_spec_list_type.
* interface.c (gfc_compare_derived_types): Treat PDTs in the
same way as sequence types.
* match.c : Add variable 'type_param_spec_list'.
(gfc_op2string, gfc_match_member_sep, gfc_match_label): Remove
trailing whitespace.
(match_derived_type_spec): Match PDTs and find specific
instance.
(gfc_match_type_spec): Remove more trailing whitespace.
(gfc_match_allocate): Assumed or deferred parameters cannot
appear here. Copy the type parameter spec list to the expr for
the allocatable entity. Free 'type_param_spec_list'.
(gfc_match_common, gfc_match_namelist, gfc_match_module): Still
more trailing whitespace to remove.
(gfc_match_type_is): Allow PDT typespecs.
* match.h : Modify prototypes for gfc_match_formal_arglist and
gfc_match_actual_arglist.
* module.c (ab_attribute, mstring attr_bits): PDT attributes
added.
(mio_symbol_attribute): PDT attributes handled.
(mio_component): Deal with 'kind_expr' field.
(mio_full_f2k_derived): For PDT templates, transfer the formal
namespace symroot to the f2k_derived namespace.
*primary.c (match_keyword_arg, gfc_match_actual_arglist): Add
modifications to handle PDT spec lists. These are flagged in
both cases by new boolean arguments, whose prototype defaults
are false.
(gfc_match_structure_constructor, match_variable): Remove yet
more trailing whitespace.
* resolve.c (get_pdt_spec_expr, get_pdt_constructor): New
functions.
(resolve_structure_cons): If the constructor is a PDT template,
call get_pdt_constructor to build it using the parameter lists
and then get the specific instance of the PDT.
(resolve_component): PDT strings need a hidden string length
component like deferred characters.
(resolve_symbol): Dummy PDTs cannot have deferred parameters.
* symbol.c (gfc_add_kind, gfc_add_len): New functions.
(free_components): Free 'kind_expr' and 'param_list' fields.
(gfc_free_symbol): Free the 'param_list' field.
(gfc_find_sym_tree): If the current state is a PDT template,
look for the symtree in the f2k_derived namspaces.
trans-array.c (structure_alloc_comps): Allocate and deallocate
PDTs. Check dummy arguments for compliance of LEN parameters.
Add the new functions to the preceeding enum.
(gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp and
gfc_check_pdt_dummy): New functions calling above.
* trans-array.h : Add prototypes for these functions.
trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init
as appropriate for PDT symbols.
(gfc_trans_deferred_vars): Allocate/deallocate PDT entities as
they come into and out of scope. Exclude pdt_types from being
'gcc_unreachable'.
(gfc_trans_subcomponent_assign): PDT array components must be
handles as if they are allocatable.
* trans-stmt.c (gfc_trans_allocate): Handle initialization of
PDT entities.
(gfc_trans_deallocate): Likewise.
* trans-types.c (gfc_get_derived_type): PDT templates must not
arrive here. PDT string components are handles as if deferred.
Similarly, PDT arrays are treated as if allocatable. PDT
strings are pointer types.
* trans.c (gfc_deferred_strlen): Handle PDT strings in the same
way as deferred characters.

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

* gfortran.dg/pdt_1.f03 : New test.
* gfortran.dg/pdt_2.f03 : New test.
* gfortran.dg/pdt_3.f03 : New test.
* gfortran.dg/pdt_4.f03 : New test.
* gfortran.dg/pdt_5.f03 : New test.

From-SVN: r251925

7 years agoutils.c (convert): When converting to a padding type...
Eric Botcazou [Sat, 9 Sep 2017 10:36:40 +0000 (10:36 +0000)]
utils.c (convert): When converting to a padding type...

* gcc-interface/utils.c (convert): When converting to a padding type,
reuse an existing CONSTRUCTOR if it has got the right size.

From-SVN: r251924

7 years agore PR bootstrap/81926 (go/parse.o differs between stage2 and stage3)
Eric Botcazou [Sat, 9 Sep 2017 09:42:39 +0000 (09:42 +0000)]
re PR bootstrap/81926 (go/parse.o differs between stage2 and stage3)

PR bootstrap/81926
* cp-objcp-common.c (struct debug_type_hasher): New class.
(debug_type_hash): New variable.
(cp_get_debug_type): Associate the OFFSET_TYPEs with the types.

From-SVN: r251922

7 years agoallocator.xml: Adjust link for Hoard.
Gerald Pfeifer [Sat, 9 Sep 2017 06:51:49 +0000 (06:51 +0000)]
allocator.xml: Adjust link for Hoard.

* doc/xml/manual/allocator.xml: Adjust link for Hoard.
* doc/html/manual/memory.html: Regenerate.

From-SVN: r251919

7 years agocompiler: guard against implicit double pointer indirection
Ian Lance Taylor [Sat, 9 Sep 2017 06:01:35 +0000 (06:01 +0000)]
compiler: guard against implicit double pointer indirection

    The code that lowers field references can sometimes introduce a double
    pointer indirection in cases where it is not/safe appropriate. For
    example, in

            var p **struct { f int }
            p.f = 0

    the assignment LHS was being incorrectly lowered to (*(*p)).f.
    Detect this situation and issue an error.

    Fixes golang/go#21770

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

From-SVN: r251918

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

From-SVN: r251917

7 years agoPR c++/70029 - ICE with ref-qualifier and -flto
Jason Merrill [Fri, 8 Sep 2017 22:39:17 +0000 (18:39 -0400)]
PR c++/70029 - ICE with ref-qualifier and -flto

PR c++/70029 - ICE with ref-qualifier and -flto
gcc/
* langhooks.h (struct lang_hooks_for_types): Add
copy_lang_qualifiers.
* attribs.c (build_type_attribute_qual_variant): Use it.
* langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
NULL.
(LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
* tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
gcc/cp/
* tree.c (cxx_copy_lang_qualifiers): New.
* cp-tree.h: Declare it.
* cp-objcp-common.h: Define LANG_HOOKS_COPY_LANG_QUALIFIERS.

From-SVN: r251911