gcc.git
8 years agoMIPS/GCC: Mark text contents as code or data
Maciej W. Rozycki [Wed, 16 Nov 2016 17:12:08 +0000 (17:12 +0000)]
MIPS/GCC: Mark text contents as code or data

gcc/
* config/mips/mips-protos.h (mips_set_text_contents_type): New
prototype.
* config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): New macro.
(ASM_OUTPUT_CASE_END): Likewise.
* config/mips/mips.c (mips_set_text_contents_type): New
function.
(mips16_emit_constants): Record the pool's initial label number
with the `consttable' insn.  Emit a `consttable_end' insn at the
end.
(mips_final_prescan_insn): Call `mips_set_text_contents_type'
for `consttable' insns.
(mips_final_postscan_insn): Call `mips_set_text_contents_type'
for `consttable_end' insns.
* config/mips/mips.md (unspec): Add UNSPEC_CONSTTABLE_END enum
value.
(consttable): Add operand.
(consttable_end): New insn.

gcc/testsuite/
* gcc.target/mips/data-sym-jump.c: New test case.
* gcc.target/mips/data-sym-pool.c: New test case.
* gcc.target/mips/insn-pseudo-4.c: Adjust for constant pool
annotation.

From-SVN: r242502

8 years agoSupport non-masked epilogue vectoriziation
Yuri Rumyantsev [Wed, 16 Nov 2016 16:22:39 +0000 (16:22 +0000)]
Support non-masked epilogue vectoriziation

gcc/

2016-11-16  Yuri Rumyantsev  <ysrumyan@gmail.com>

* params.def (PARAM_VECT_EPILOGUES_NOMASK): New.
* tree-if-conv.c (tree_if_conversion): Make public.
* * tree-if-conv.h: New file.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependences) Avoid
dynamic alias checks for epilogues.
* tree-vect-loop-manip.c (vect_do_peeling): Return created epilog.
* tree-vect-loop.c: include tree-if-conv.h.
(new_loop_vec_info): Add zeroing orig_loop_info field.
(vect_analyze_loop_2): Don't try to enhance alignment for epilogues.
(vect_analyze_loop): Add argument ORIG_LOOP_INFO which is not NULL
if epilogue is vectorized, set up orig_loop_info field of loop_vinfo
using passed argument.
(vect_transform_loop): Check if created epilogue should be returned
for further vectorization with less vf.  If-convert epilogue if
required. Print vectorization success for epilogue.
* tree-vectorizer.c (vectorize_loops): Add epilogue vectorization
if it is required, pass loop_vinfo produced during vectorization of
loop body to vect_analyze_loop.
* tree-vectorizer.h (struct _loop_vec_info): Add new field
orig_loop_info.
(LOOP_VINFO_ORIG_LOOP_INFO): New.
(LOOP_VINFO_EPILOGUE_P): New.
(LOOP_VINFO_ORIG_VECT_FACTOR): New.
(vect_do_peeling): Change prototype to return epilogue.
(vect_analyze_loop): Add argument of loop_vec_info type.
(vect_transform_loop): Return created loop.

gcc/testsuite/

2016-11-16  Yuri Rumyantsev  <ysrumyan@gmail.com>

* lib/target-supports.exp (check_avx2_hw_available): New.
(check_effective_target_avx2_runtime): New.
* gcc.dg/vect/vect-tail-nomask-1.c: New test.

From-SVN: r242501

8 years agoFix test names for trad.exp tests
Tamar Christina [Wed, 16 Nov 2016 15:53:08 +0000 (15:53 +0000)]
Fix test names for trad.exp tests

 PR testsuite/78136
 * gcc.dg/cpp/trad/trad.exp
 (dg-runtest): Moved $srcdir/$subdir/ to DEFAULT_TRADCPPFLAGS.

From-SVN: r242500

8 years agodf: Change defs in entry and uses in exit block during separate shrink-wrapping
Segher Boessenkool [Wed, 16 Nov 2016 15:23:36 +0000 (16:23 +0100)]
df: Change defs in entry and uses in exit block during separate shrink-wrapping

So far all target implementations of the separate shrink-wrapping hooks
use the DF LIVE info to figure out around which basic blocks the non-
volatile registers need to be saved.  This is done by looking at the
IN+GEN+KILL sets of the basic blocks.  However, that doesn't work for
registers that DF says are defined in the entry block, or used in the
exit block.

This patch introduces a local flag DF_SCAN_EMPTY_ENTRY_EXIT that says
no registers should be defined in the entry block, and none used in the
exit block.  It also makes try_shrink_wrapping_separate use it.  The
rs6000 port is changed to use IN+GEN+KILL for the LR component.

* config/rs6000/rs6000.c (rs6000_components_for_bb): Mark the LR
component as used also if LR_REGNO is a live input to the bb.
* df-scan.c (df_get_entry_block_def_set): Return immediately after
clearing the set if DF_SCAN_EMPTY_ENTRY_EXIT is set.
(df_get_exit_block_use_set): Ditto.
* df.h (df_scan_flags): New enum.
* shrink-wrap.c (try_shrink_wrapping_separate): Set
DF_SCAN_EMPTY_ENTRY_EXIT in df_scan->local_flags, and call
df_update_entry_block_defs and df_update_exit_block_uses
at the start; clear the flag and call those functions at the end.

From-SVN: r242497

8 years agocompiler: separate incomparable types from comparable ones
Ian Lance Taylor [Wed, 16 Nov 2016 14:47:28 +0000 (14:47 +0000)]
compiler: separate incomparable types from comparable ones

    Otherwise we can accidentally and incorrectly mark an actual user type
    as incomparable.  This fixes the gccgo version of
    https://golang.org/issue/17752.  The test case for gccgo is
    https://golang.org/cl/33249.

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

From-SVN: r242494

8 years agoFix nb_iterations calculation in tree-vect-loop-manip.c
Richard Sandiford [Wed, 16 Nov 2016 14:21:32 +0000 (14:21 +0000)]
Fix nb_iterations calculation in tree-vect-loop-manip.c

We previously stored the number of loop iterations rather
than the number of latch iterations.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Set
nb_iterations to the number of latch iterations rather than the
number of loop iterations.

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

8 years agoAn alternative fix for PR70944
Richard Sandiford [Wed, 16 Nov 2016 14:20:40 +0000 (14:20 +0000)]
An alternative fix for PR70944

The transformations made by make_compound_operation apply
only to scalar integer modes.  The fix for PR70944 had enforced
that by returning early for vector modes at the top of the
function.  However, the function is supposed to be recursive,
so we should continue to look at integer suboperands even if
the outer operation is a vector one.

This patch instead splits out the non-recursive parts
of make_compound_operation into a subroutine and checks
that the mode is a scalar integer before calling it.
The patch was originally written to help with the later
conversion to static type checking of mode classes, but it
also happened to reenable optimisation of things like
vec_duplicate operands.

Note that the gen_lowparts in the PLUS and MINUS cases
were redundant, since new_rtx already had mode "mode"
at those points.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* combine.c (maybe_swap_commutative_operands): New function.
(combine_simplify_rtx): Use it.
(change_zero_ext): Likewise.
(make_compound_operation_int): New function, split out of...
(make_compound_operation): ...here.  Use
maybe_swap_commutative_operands for both.

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

8 years ago[arm] Add vfpv2 and neon-vfpv3
Richard Earnshaw [Wed, 16 Nov 2016 14:02:10 +0000 (14:02 +0000)]
[arm] Add vfpv2 and neon-vfpv3

* arm/arm-fpus.def (vfpv2): New FPU, currently an alias for 'vfp'.
(neon-vfpv3): New FPU, currently an alias for 'neon'.
* arm/arm-tables.opt: Regenerated.
        * arm/t-aprofile (MULTILIB_REUSE): Add reuse rules for vfpv2 and
        neon-vfpv3.
* doc/invoke.texi (ARM: -mfpu): Document new options.  Note that 'vfp'
and 'neon' are aliases for specific implementations.

From-SVN: r242491

8 years agore PR fortran/78356 ([OOP] segfault allocating polymorphic variable with polymorphic...
Andre Vehreschild [Wed, 16 Nov 2016 13:45:29 +0000 (14:45 +0100)]
re PR fortran/78356 ([OOP] segfault allocating polymorphic variable with polymorphic component with allocatable component)

gcc/fortran/ChangeLog:

2016-11-16  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78356
* class.c (gfc_is_class_scalar_expr): Prevent taking an array ref for
a component ref.
* trans-expr.c (gfc_trans_assignment_1): Ensure a reference to the
object to copy is generated, when assigning class objects.

gcc/testsuite/ChangeLog:

2016-11-16  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78356
* gfortran.dg/class_allocate_23.f08: New test.

From-SVN: r242490

8 years agoFix vec_cmp comparison mode
Richard Sandiford [Wed, 16 Nov 2016 13:09:12 +0000 (13:09 +0000)]
Fix vec_cmp comparison mode

vec_cmps assign the result of a vector comparison to a mask.
The optab was called with the destination having mode mask_mode
but with the source (the comparison) having mode VOIDmode,
which led to invalid rtl if the source operand was used directly.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* optabs.c (vector_compare_rtx): Add a cmp_mode parameter
and use it in the final call to gen_rtx_fmt_ee.
(expand_vec_cond_expr): Update accordingly.
(expand_vec_cmp_expr): Likewise.

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

8 years agoUse df_read_modify_subreg_p in cprop.c
Richard Sandiford [Wed, 16 Nov 2016 13:07:08 +0000 (13:07 +0000)]
Use df_read_modify_subreg_p in cprop.c

local_cprop_find_used_regs punted on all multiword registers,
with the comment:

          /* Setting a subreg of a register larger than word_mode leaves
             the non-written words unchanged.  */

But this only applies if the outer mode is smaller than the
inner mode.  If they're the same size then writes to the subreg
are a normal full update.

This patch uses df_read_modify_subreg_p instead.  A later patch
adds more uses of the same routine, but this part had a (positive)
effect on code generation for the testsuite whereas the others
seemed to be simple clean-ups.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* cprop.c (local_cprop_find_used_regs): Use df_read_modify_subreg_p.

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

8 years agore PR middle-end/78333 (always-inline gnu-inline functions break -finstrument-functions)
Richard Biener [Wed, 16 Nov 2016 12:55:02 +0000 (12:55 +0000)]
re PR middle-end/78333 (always-inline gnu-inline functions break -finstrument-functions)

2016-11-16  Richard Biener  <rguenther@suse.de>

PR middle-end/78333
* gimplify.c (gimplify_function_tree): Do not instrument
GNU extern inline functions.

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

From-SVN: r242487

8 years agoFix PR sanitizer/78270 (part 2)
Martin Liska [Wed, 16 Nov 2016 11:56:58 +0000 (12:56 +0100)]
Fix PR sanitizer/78270 (part 2)

PR sanitizer/78270
* gimplify.c (gimplify_switch_expr): Always save previous
gimplify_ctxp->live_switch_vars.
PR sanitizer/78270
* gcc.dg/asan/pr78270.c: Update comment style.
* gcc.dg/asan/pr78270-2.c: New test.

From-SVN: r242485

8 years ago[ARC] Fix LE tests for nps400 variant.
Andrew Burgess [Wed, 16 Nov 2016 11:42:43 +0000 (11:42 +0000)]
[ARC] Fix LE tests for nps400 variant.

gcc/arc: New peephole2 and little endian arc test fixes

Resolve some test failures introduced for little endian arc as a result
of the recent arc/nps400 additions.

There's a new peephole2 optimisation to merge together two zero_extracts
in order that the movb instruction can be used.

One of the test cases is extended so that the test does something
meaningful in both big and little endian arc mode.

Other tests have their expected results updated to reflect improvements
in other areas of GCC.

gcc/ChangeLog:

 Andrew Burgess  <andrew.burgess@embecosm.com>

* config/arc/arc.md (movb peephole2): New peephole2 to merge two
zero_extract operations to allow a movb to occur.
* gcc.target/arc/movb-1.c: Update little endian arc results.
* gcc.target/arc/movb-2.c: Likewise.
* gcc.target/arc/movb-5.c: Likewise.
* gcc.target/arc/movh_cl-1.c: Extend test to cover little endian
arc.

From-SVN: r242484

8 years agoAdd revsison to libsanitizer/LOCAL_PATCHES
Markus Trippelsdorf [Wed, 16 Nov 2016 11:23:47 +0000 (11:23 +0000)]
Add revsison to libsanitizer/LOCAL_PATCHES

From-SVN: r242481

8 years agoFix PR78294 - thread sanitizer broken when using ld.gold
Markus Trippelsdorf [Wed, 16 Nov 2016 11:21:42 +0000 (11:21 +0000)]
Fix PR78294 - thread sanitizer broken when using ld.gold

When one uses ld.gold to build gcc, the thread sanitizer doesn't work,
because gold is more conservative when applying TLS relaxations than
ld.bfd. In this case a missing initial-exec attribute on a declaration
causes gcc to assume the general dynamic model. With ld.bfd this gets
relaxed to initial exec when linking the shared library, so the missing
attribute doesn't matter. But ld.gold doesn't perform this optimization
and this leads to crashes on tsan instrumented binaries.

See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78294
and: https://sourceware.org/bugzilla/show_bug.cgi?id=20805

The fix is easy, just add the missing attribute.

  PR sanitizer/78294
  * tsan/tsan_rtl.cc: Add missing attribute.

From-SVN: r242480

8 years agoLOCAL_PATCHES: New file.
Maxim Ostapenko [Wed, 16 Nov 2016 11:16:47 +0000 (11:16 +0000)]
LOCAL_PATCHES: New file.

libsanitizer/

* LOCAL_PATCHES: New file.

From-SVN: r242479

8 years agore PR sanitizer/78307 (missing symbols in libubsan without changing the soname)
Maxim Ostapenko [Wed, 16 Nov 2016 11:13:19 +0000 (11:13 +0000)]
re PR sanitizer/78307 (missing symbols in libubsan without changing the soname)

PR sanitizer/78307
* ubsan/ubsan_handlers.cc (__ubsan_handle_cfi_bad_icall): New function.
( __ubsan_handle_cfi_bad_icall_abort): Likewise.
* ubsan/ubsan_handlers.h (struct CFIBadIcallData): New type.
* ubsan/ubsan_handlers_cxx.cc (__ubsan_handle_cfi_bad_type): New
function.
(__ubsan_handle_cfi_bad_type_abort): Likewise.
* ubsan/ubsan_handlers_cxx.h (struct CFIBadTypeData): New type.
(__ubsan_handle_cfi_bad_type): Export function.
(__ubsan_handle_cfi_bad_type_abort): Likewise.
* HOWTO_MERGE: Update documentation.

From-SVN: r242478

8 years agoOptimise CONCAT handling in emit_group_load
Richard Sandiford [Wed, 16 Nov 2016 10:21:22 +0000 (10:21 +0000)]
Optimise CONCAT handling in emit_group_load

The CONCAT handling in emit_group_load chooses between doing
an extraction from a single component or forcing the whole
thing to memory and extracting from there.  The condition for
the former (more efficient) option was:

  if ((bytepos == 0 && bytelen == slen0)
      || (bytepos != 0 && bytepos + bytelen <= slen))

On the one hand this seems dangerous, since the second line
allows bit ranges that start in the first component and leak
into the second.  On the other hand it seems strange to allow
references that start after the first byte of the second
component but not those that start after the first byte
of the first component.  This led to a pessimisation of
things like gcc.dg/builtins-54.c for hppa64-hp-hpux11.23.

This patch simply checks whether the reference is contained
within a single component.  It also makes sure that we do
an extraction on anything that doesn't span the whole
component (even if it's constant).

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* expr.c (emit_group_load_1): Tighten check for whether an
access involves only one operand of a CONCAT.  Use extract_bit_field
for constants if the bit range does span the whole operand.

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

8 years agoFix handling of unknown sizes in rtx_addr_can_trap_p
Richard Sandiford [Wed, 16 Nov 2016 10:20:23 +0000 (10:20 +0000)]
Fix handling of unknown sizes in rtx_addr_can_trap_p

If the size passed in to rtx_addr_can_trap_p was zero, the frame
handling would get the size from the mode instead.  However, this
too can be zero if the mode is BLKmode, i.e. if we have a BLKmode
memory reference with no MEM_SIZE (which should be rare these days).
This meant that the conditions for a 4-byte access at offset X were
stricter than those for an access of unknown size at offset X.

This patch checks whether the size is still zero, as the
SYMBOL_REF handling does.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes.

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

8 years agoFix nb_iterations_estimate calculation in tree-vect-loop.c
Richard Sandiford [Wed, 16 Nov 2016 10:18:25 +0000 (10:18 +0000)]
Fix nb_iterations_estimate calculation in tree-vect-loop.c

vect_transform_loop has to reduce three iteration counts by
the vectorisation factor: nb_iterations_upper_bound,
nb_iterations_likely_upper_bound and nb_iterations_estimate.
All three are latch execution counts rather than loop body
execution counts.  The calculations were taking that into
account for the first two, but not for nb_iterations_estimate.

This patch updates the way the calculations are done to fix
this and to add a bit more commentary about what is going on.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* tree-vect-loop.c (vect_transform_loop): Protect the updates of
all three iteration counts with an any_* test.  Use a single update
for each count.  Fix the calculation of nb_iterations_estimate.

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

8 years agoFix pdp11 build
Richard Sandiford [Wed, 16 Nov 2016 10:06:44 +0000 (10:06 +0000)]
Fix pdp11 build

Needed this to test the effect of the SVE patches on other targets.

gcc/
* config/pdp11/pdp11.c: Include dbxout.h.

From-SVN: r242474

8 years agoFix missing brackets in arc.c
Richard Sandiford [Wed, 16 Nov 2016 10:05:04 +0000 (10:05 +0000)]
Fix missing brackets in arc.c

The old code still built thanks to the brackets in the definition
of XVECEXP.

gcc/
* config/arc/arc.c (arc_loop_hazard): Add missing brackets.

From-SVN: r242473

8 years agoFix bogus failure of Wlogical-op-1.c for avr
Senthil Kumar Selvaraj [Wed, 16 Nov 2016 09:28:40 +0000 (09:28 +0000)]
Fix bogus failure of Wlogical-op-1.c for avr

The test assumes short is always smaller than int, and therefore does not
expect a warning when the logical operands are of type short and int.

This isn't true for the avr - shorts and ints are of the same size, and
therefore the warning triggers for the above case also.

Fix by explicitly typedef'ing __INT32_TYPE for int and __INT16_TYPE__ for short
if the target's int size is less than 4 bytes.

gcc/testsuite/
2016-11-16  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

* c-c++-common/Wlogical-op-1.c: Use __INT{16,32}_TYPE__ instead
of {short,int} if __SIZEOF_INT__ is less than 4 bytes.

From-SVN: r242472

8 years ago[ARM] PR target/78364: Add proper restrictions to zero and sign_extract patterns...
Kyrylo Tkachov [Wed, 16 Nov 2016 09:02:18 +0000 (09:02 +0000)]
[ARM] PR target/78364: Add proper restrictions to zero and sign_extract patterns operands

PR target/78364
* config/arm/arm.md (*extv_reg): Restrict operands 2 and 3 to the
proper ranges for an SBFX instruction.
(extzv_t2): Likewise for UBFX.

From-SVN: r242471

8 years agore PR tree-optimization/78348 ([7 REGRESSION] 15% performance drop for coremark-pro...
Richard Biener [Wed, 16 Nov 2016 08:42:20 +0000 (08:42 +0000)]
re PR tree-optimization/78348 ([7 REGRESSION] 15% performance drop for coremark-pro/nnet-test after r242038)

2016-11-16  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78348
* tree-loop-distribution.c (enum partition_kind): Add PKIND_MEMMOVE.
(generate_memcpy_builtin): Honor PKIND_MEMCPY on the partition.
(classify_partition): Set PKIND_MEMCPY if dependence analysis
revealed no dependency, PKIND_MEMMOVE otherwise.

* gcc.dg/tree-ssa/ldist-24.c: New testcase.

From-SVN: r242470

8 years agore PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize...
Jakub Jelinek [Wed, 16 Nov 2016 08:28:50 +0000 (09:28 +0100)]
re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize=undefined and vector types)

PR sanitizer/77823
* ubsan.c (ubsan_build_overflow_builtin): Add DATAP argument, if
it points to non-NULL tree, use it instead of ubsan_create_data.
(instrument_si_overflow): Handle vector signed integer overflow
checking.
* ubsan.h (ubsan_build_overflow_builtin): Add DATAP argument.
* tree-vrp.c (simplify_internal_call_using_ranges): Punt for
vector IFN_UBSAN_CHECK_*.
* internal-fn.c (expand_addsub_overflow): Add DATAP argument,
pass it through to ubsan_build_overflow_builtin.
(expand_neg_overflow, expand_mul_overflow): Likewise.
(expand_vector_ubsan_overflow): New function.
(expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB,
expand_UBSAN_CHECK_MUL): Use tit for vector arithmetics.
(expand_arith_overflow): Adjust expand_*_overflow callers.

* c-c++-common/ubsan/overflow-vec-1.c: New test.
* c-c++-common/ubsan/overflow-vec-2.c: New test.

From-SVN: r242469

8 years agore PR libgcc/68468 (frv/bfin FDPIC toolchain build error)
Waldemar Brodkorb [Wed, 16 Nov 2016 07:01:56 +0000 (07:01 +0000)]
re PR libgcc/68468 (frv/bfin FDPIC toolchain build error)

PR libgcc/68468
* unwind-dw2-fde-dip.c: Fix build on FDPIC targets.

From-SVN: r242468

8 years ago* g++.dg/cpp1z/init-statement6.C: Rename a function.
Marek Polacek [Wed, 16 Nov 2016 01:14:57 +0000 (01:14 +0000)]
* g++.dg/cpp1z/init-statement6.C: Rename a function.

From-SVN: r242467

8 years agoDaily bump.
GCC Administrator [Wed, 16 Nov 2016 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242466

8 years agoinstall.texi: Remove references to java/libjava.
Matthias Klose [Tue, 15 Nov 2016 23:42:33 +0000 (23:42 +0000)]
install.texi: Remove references to java/libjava.

2016-11-16  Matthias Klose  <doko@ubuntu.com>

        * doc/install.texi: Remove references to java/libjava.

From-SVN: r242463

8 years ago[multiple changes]
Jerry DeLisle [Tue, 15 Nov 2016 23:03:00 +0000 (23:03 +0000)]
[multiple changes]

2016-11-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
    Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libgfortran/51119
* Makefile.am: Add new optimization flags matmul.
* Makefile.in: Regenerate.
* m4/matmul.m4: For the case of all strides = 1, implement a
fast blocked matrix multiply. Fix some whitespace.
* generated/matmul_c10.c: Regenerate.
* generated/matmul_c16.c: Regenerate.
* generated/matmul_c4.c: Regenerate.
* generated/matmul_c8.c: Regenerate.
* generated/matmul_i1.c: Regenerate.
* generated/matmul_i16.c: Regenerate.
* generated/matmul_i2.c: Regenerate.
* generated/matmul_i4.c: Regenerate.
* generated/matmul_i8.c: Regenerate.
* generated/matmul_r10.c: Regenerate.
* generated/matmul_r16.c: Regenerate.
* generated/matmul_r4.c: Regenerate.
* generated/matmul_r8.c: Regenerate.

2016-11-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libgfortran/51119
* gfortran.dg/matmul_12.f90: New test case.

From-SVN: r242462

8 years agotree-ssa-coalesce.c (register_default_def): Remove register_ssa_partition.
Kugan Vivekanandarajah [Tue, 15 Nov 2016 22:40:11 +0000 (22:40 +0000)]
tree-ssa-coalesce.c (register_default_def): Remove register_ssa_partition.

gcc/ChangeLog:

2016-11-16  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-ssa-coalesce.c (register_default_def): Remove register_ssa_partition.
(create_outofssa_var_map): Likewise.
* tree-ssa-live.c (register_ssa_partition_check): Remove.
* tree-ssa-live.h (register_ssa_partition): Likewise.

From-SVN: r242461

8 years agogenattrtab.c (attr_rtx_1): Avoid allocating new rtx objects.
Bernd Edlinger [Tue, 15 Nov 2016 22:10:37 +0000 (22:10 +0000)]
genattrtab.c (attr_rtx_1): Avoid allocating new rtx objects.

2016-11-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * genattrtab.c (attr_rtx_1): Avoid allocating new rtx objects.
        Clear ATTR_CURR_SIMPLIFIED_P for re-used binary rtx objects.
        Use DEF_ATTR_STRING for string arguments.  Use RTL_HASH for
        integer arguments.  Only set ATTR_PERMANENT_P on newly hashed
        rtx when all sub-rtx are also permanent.
        (attr_eq): Simplify.
        (attr_copy_rtx): Remove.
        (make_canonical, get_attr_value): Use attr_equal_p.
        (copy_boolean): Rehash NOT.
        (simplify_test_exp_in_temp,
        optimize_attrs): Remove call to attr_copy_rtx.
        (attr_alt_intersection, attr_alt_union,
        attr_alt_complement, mk_attr_alt): Rehash EQ_ATTR_ALT.
        (make_automaton_attrs): Use attr_eq.

From-SVN: r242460

8 years agoinstall.texi: Remove references to java/libjava.
Matthias Klose [Tue, 15 Nov 2016 21:00:32 +0000 (21:00 +0000)]
install.texi: Remove references to java/libjava.

2016-11-15  Matthias Klose  <doko@ubuntu.com>

        * doc/install.texi: Remove references to java/libjava.
        * doc/invoke.texi: Likewise.
        * doc/standards.texi: Likewise.

From-SVN: r242456

8 years agoinstall.texi: Remove references to java/libjava.
Matthias Klose [Tue, 15 Nov 2016 20:42:47 +0000 (20:42 +0000)]
install.texi: Remove references to java/libjava.

2016-11-15  Matthias Klose  <doko@ubuntu.com>

        * doc/install.texi: Remove references to java/libjava.
        * doc/sourcebuild.texi: Likewise.

From-SVN: r242455

8 years agoPR 59406 note that FNV hash functions are incorrect
Jonathan Wakely [Tue, 15 Nov 2016 20:17:39 +0000 (20:17 +0000)]
PR 59406 note that FNV hash functions are incorrect

PR libstdc++/59406
* include/bits/functional_hash.h: Add comment noting difference from
FNV-1a.
* include/tr1/functional_hash.h: Likewise.
* libsupc++/hash_bytes.cc: Likewise.

From-SVN: r242454

8 years agoUse existing helper for new std::string constructor
Jonathan Wakely [Tue, 15 Nov 2016 19:32:52 +0000 (19:32 +0000)]
Use existing helper for new std::string constructor

* include/bits/basic_string.h: Reuse _If_sv alias template for new
constructor.

From-SVN: r242453

8 years agoMake std::tuple_size<cv T> SFINAE-friendly (LWG 2770)
Jonathan Wakely [Tue, 15 Nov 2016 19:32:44 +0000 (19:32 +0000)]
Make std::tuple_size<cv T> SFINAE-friendly (LWG 2770)

* doc/xml/manual/intro.xml: Document LWG 2770 status. Remove entries
for 2742 and 2748.
* doc/html/*: Regenerate.
* include/std/utility (__tuple_size_cv_impl): New helper to safely
detect tuple_size<T>::value, as per LWG 2770.
(tuple_size<cv T>): Adjust partial specializations to derive from
__tuple_size_cv_impl.
* testsuite/20_util/tuple/cv_tuple_size.cc: Test SFINAE-friendliness.

From-SVN: r242452

8 years agolibiberty: demangler crash with missing :? or fold expression component.
Mark Wielaard [Tue, 15 Nov 2016 19:31:59 +0000 (19:31 +0000)]
libiberty: demangler crash with missing :? or fold expression component.

When constructing an :? or fold expression that requires a third
expression only the first and second were explicitly checked to
not be NULL. Since the third expression is also required in these
constructs it needs to be explicitly checked and rejected when missing.
Otherwise the demangler will crash once it tries to d_print the
NULL component. Added two examples to demangle-expected of strings
that would crash before this fix.

Found by American Fuzzy Lop (afl) fuzzer.

From-SVN: r242451

8 years agolibiberty: Fix some demangler crashes caused by reading past end of input.
Mark Wielaard [Tue, 15 Nov 2016 19:31:50 +0000 (19:31 +0000)]
libiberty: Fix some demangler crashes caused by reading past end of input.

In various situations the cplus_demangle () function could read past the
end of input causing crashes. Add checks in various places to not advance
the demangle string location and fail early when end of string is reached.
Add various examples of input strings to the testsuite that would crash
test-demangle before the fixes.

Found by using the American Fuzzy Lop (afl) fuzzer.

libiberty/ChangeLog:

       * cplus-dem.c (demangle_signature): After 'H', template function,
       no success and don't advance position if end of string reached.
       (demangle_template): After 'z', template name, return zero on
       premature end of string.
       (gnu_special): Guard strchr against searching for zero characters.
       (do_type): If member, only advance mangled string when 'F' found.
       * testsuite/demangle-expected: Add examples of strings that could
       crash the demangler by reading past end of input.

From-SVN: r242450

8 years agoAdjust pretty printer test for variant<T&>
Jonathan Wakely [Tue, 15 Nov 2016 19:29:07 +0000 (19:29 +0000)]
Adjust pretty printer test for variant<T&>

* testsuite/libstdc++-prettyprinters/cxx17.cc: Adjust test for
variant<T&>.

From-SVN: r242449

8 years agofuncspec-56.inc: New file.
Uros Bizjak [Tue, 15 Nov 2016 19:26:41 +0000 (20:26 +0100)]
funcspec-56.inc: New file.

* gcc.target/i386/funcspec-56.inc: New file.
* gcc.target/i386.funcspec-5.c: Include funcspec-56.inc.  Remove
common 32-bit and 64-bit function specific options.
* gcc.target/i386.funcspec-6.c: Ditto.

From-SVN: r242448

8 years agoFix instances of gen_rtx_REG (VOIDmode, ...)
Richard Sandiford [Tue, 15 Nov 2016 18:30:31 +0000 (18:30 +0000)]
Fix instances of gen_rtx_REG (VOIDmode, ...)

Several definitions of INCOMING_RETURN_ADDR_RTX used
gen_rtx_REG (VOIDmode, ...), which with later patches
would trip an assert.  This patch converts them to use
Pmode instead.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use Pmode instead
of VOIDmode.
* config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/iq2000/iq2000.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/m68k/m68k.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/microblaze/microblaze.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/mips/mips.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/mn10300/mn10300.h (INCOMING_RETURN_ADDR_RTX): Likewise.
* config/nios2/nios2.h (INCOMING_RETURN_ADDR_RTX): Likewise.

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

8 years agoUse MEM_SIZE rather than GET_MODE_SIZE in dce.c
Richard Sandiford [Tue, 15 Nov 2016 18:18:08 +0000 (18:18 +0000)]
Use MEM_SIZE rather than GET_MODE_SIZE in dce.c

Using MEM_SIZE is more general, since it copes with cases where
targets are forced to use BLKmode references for whatever reason.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* dce.c (check_argument_store): Pass the size instead of
the memory reference.
(find_call_stack_args): Pass MEM_SIZE to check_argument_store.

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

8 years agoUse simplify_gen_binary in canon_rtx
Richard Sandiford [Tue, 15 Nov 2016 18:16:59 +0000 (18:16 +0000)]
Use simplify_gen_binary in canon_rtx

After simplifying the operands of a PLUS, canon_rtx checked only
for cases in which one of the simplified operands was a constant,
falling back to gen_rtx_PLUS otherwise.  This left the PLUS in a
non-canonical order if one of the simplified operands was
(plus (reg R1) (const_int X)); we'd end up with:

       (plus (plus (reg R1) (const_int Y)) (reg R2))

rather than:

       (plus (plus (reg R1) (reg R2)) (const_int Y))

Fixing this exposed new DSE opportunities on spu-elf in
gcc.c-torture/execute/builtins/strcat-chk.c but otherwise
it doesn't seem to have much practical effect.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* alias.c (canon_rtx): Use simplify_gen_binary.

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

8 years agoAdd a load_extend_op wrapper
Richard Sandiford [Tue, 15 Nov 2016 18:13:56 +0000 (18:13 +0000)]
Add a load_extend_op wrapper

LOAD_EXTEND_OP only applies to scalar integer modes that are narrower
than a word.  However, callers weren't consistent about which of these
checks they made beforehand, and also weren't consistent about whether
"smaller" was based on (bit)size or precision (IMO it's the latter).
This patch adds a wrapper to try to make the macro easier to use.

LOAD_EXTEND_OP is often used to disable transformations that aren't
beneficial when extends from memory are free, so being stricter about
the check accidentally exposed more optimisation opportunities.

"SUBREG_BYTE (...) == 0" and subreg_lowpart_p are implied by
paradoxical_subreg_p, so the patch also removes some redundant tests.

The patch doesn't change reload, since different checks could have
unforeseen consequences.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* rtl.h (load_extend_op): Declare.
* rtlanal.c (load_extend_op): New function.
(nonzero_bits1): Use it.
(num_sign_bit_copies1): Likewise.
* cse.c (cse_insn): Likewise.
* fold-const.c (fold_single_bit_test): Likewise.
(fold_unary_loc): Likewise.
* fwprop.c (free_load_extend): Likewise.
* postreload.c (reload_cse_simplify_set): Likewise.
(reload_cse_simplify_operands): Likewise.
* combine.c (try_combine): Likewise.
(simplify_set): Likewise.  Remove redundant SUBREG_BYTE and
subreg_lowpart_p checks.

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

8 years agoFix simplify_shift_const_1 handling of vector shifts
Richard Sandiford [Tue, 15 Nov 2016 17:57:53 +0000 (17:57 +0000)]
Fix simplify_shift_const_1 handling of vector shifts

simplify_shift_const_1 handles both shifts of scalars by scalars
and shifts of vectors by scalars.  For vectors this means that
each element is shifted by the same amount.

However:

(a) the two cases weren't always distinguished, so we'd try
        things for vectors that only made sense for scalars.

(b) a lot of the range and bitcount checks were based on the
        bitsize or precision of the full shifted operand, rather
        than the mode of each element.

Fixing (b) accidentally exposed more optimisation opportunities,
although that wasn't the point of the patch.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* combine.c (simplify_shift_const_1): Use the number of bits
in the inner mode to determine the range of the shift.
When handling shifts of vectors, skip any rules that apply
only to scalars.

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

8 years agoMove misplaced assignment in num_sign_bit_copies1
Richard Sandiford [Tue, 15 Nov 2016 17:54:20 +0000 (17:54 +0000)]
Move misplaced assignment in num_sign_bit_copies1

The old assignment to bitwidth was before we handled VOIDmode with:

      if (mode == VOIDmode)
        mode = GET_MODE (x);

so when VOIDmode was specified we would always use:

      if (bitwidth < GET_MODE_PRECISION (GET_MODE (x)))
        {
          num0 = cached_num_sign_bit_copies (x, GET_MODE (x),
                                             known_x, known_mode, known_ret);
          return MAX (1,
                      num0 - (int) (GET_MODE_PRECISION (GET_MODE (x)) - bitwidth));
        }

For a zero bitwidth this always returns 1 (which is the most
pessimistic result).

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* rtlanal.c (num_sign_bit_copies1): Calculate bitwidth after
handling VOIDmode.

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

8 years agoMakefile.def: Remove references to GCJ.
Matthias Klose [Tue, 15 Nov 2016 17:29:12 +0000 (17:29 +0000)]
Makefile.def: Remove references to GCJ.

2016-11-15  Matthias Klose  <doko@ubuntu.com>

        * Makefile.def: Remove references to GCJ.
        * Makefile.tpl: Likewise.
        * Makefile.in: Regenerate.

From-SVN: r242439

8 years ago- Revert last commit, restore the regenerated files aclocal.m4 and configure
Matthias Klose [Tue, 15 Nov 2016 17:27:39 +0000 (17:27 +0000)]
- Revert last commit, restore the regenerated files aclocal.m4 and configure

From-SVN: r242438

8 years agovariant: Remove variant<T&>...
Tim Shen [Tue, 15 Nov 2016 17:26:59 +0000 (17:26 +0000)]
variant: Remove variant<T&>...

* include/std/variant: Remove variant<T&>, variant<void>, variant<> support
to rebase on the post-Issaquah design.
* testsuite/20_util/variant/compile.cc: Likewise.

From-SVN: r242437

8 years agolibgomp testsuite: add missing map clauses
Martin Jambor [Tue, 15 Nov 2016 17:14:32 +0000 (18:14 +0100)]
libgomp testsuite: add missing map clauses

* testsuite/libgomp.fortran/examples-4/device-1.f90 (e_57_1): Add
mapping clauses to target constructs.
* testsuite/libgomp.fortran/examples-4/device-3.f90 (e_57_3): Ditto.

Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
From-SVN: r242436

8 years agodecomp14.C: New test.
Jakub Jelinek [Tue, 15 Nov 2016 17:06:43 +0000 (18:06 +0100)]
decomp14.C: New test.

* g++.dg/cpp1z/decomp14.C: New test.
* g++.dg/cpp1z/decomp15.C: New test.
* g++.dg/cpp1z/decomp16.C: New test.

From-SVN: r242435

8 years agodecl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, set DECL_ASSEMBLER_NAME.
Jakub Jelinek [Tue, 15 Nov 2016 17:05:23 +0000 (18:05 +0100)]
decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, set DECL_ASSEMBLER_NAME.

* decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl,
set DECL_ASSEMBLER_NAME.
* parser.c (cp_parser_decomposition_declaration): Likewise
if returning error_mark_node.
* mangle.c (mangle_decomp): New function.
* cp-tree.h (mangle_decomp): New declaration.

* g++.dg/cpp1z/decomp13.C: New test.

From-SVN: r242434

8 years agoconfig-ml.in: Remove references to GCJ.
Matthias Klose [Tue, 15 Nov 2016 16:34:02 +0000 (16:34 +0000)]
config-ml.in: Remove references to GCJ.

<toplevel>

2016-11-15  Matthias Klose  <doko@ubuntu.com>

* config-ml.in: Remove references to GCJ.
* configure.ac: Likewise.
* configure: Regenerate.

config/

2016-11-15  Matthias Klose  <doko@ubuntu.com>

multi.m4: Don't set GCJ.

gcc/

2016-11-15  Matthias Klose  <doko@ubuntu.com>

* doc/install.texi: Remove references to gcj/libjava.
* doc/invoke.texi: Likewise.

*/ (where necessary)

2016-11-15  Matthias Klose  <doko@ubuntu.com>

* configure: Regenerate.

From-SVN: r242433

8 years agoPR c++/78358 - tuple decomposition decltype
Jason Merrill [Tue, 15 Nov 2016 16:32:38 +0000 (11:32 -0500)]
PR c++/78358 - tuple decomposition decltype

* semantics.c (finish_decltype_type): Strip references for a tuple
decomposition.
* cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables.

From-SVN: r242432

8 years agotree-ssa-threadbackward.c (fsm_find_thread_path): Remove unneeded parameter.
Jeff Law [Tue, 15 Nov 2016 16:16:49 +0000 (09:16 -0700)]
tree-ssa-threadbackward.c (fsm_find_thread_path): Remove unneeded parameter.

* tree-ssa-threadbackward.c (fsm_find_thread_path): Remove unneeded
parameter.  Callers changed.
(check-subpath_and_update_thread_path): Extracted from
fsm_find_control_statement_thread_paths.
(handle_phi, handle_assignment, handle_assignment_p): Likewise.
(handle_phi, handle_assignment): Allow any constant node, not
just INTEGER_CST.

From-SVN: r242431

8 years ago* g++.dg/cpp1y/auto-fn33.C (main): Turn // error: ... into dg-bogus.
Jakub Jelinek [Tue, 15 Nov 2016 15:54:29 +0000 (16:54 +0100)]
* g++.dg/cpp1y/auto-fn33.C (main): Turn // error: ... into dg-bogus.

From-SVN: r242430

8 years agoChangeLog: Fix ChangeLog entry.
Uros Bizjak [Tue, 15 Nov 2016 15:43:40 +0000 (16:43 +0100)]
ChangeLog: Fix ChangeLog entry.

* gcc/ChangeLog: Fix ChangeLog entry.
* gcc/c/ChangeLog: Ditto.
* gcc/c-family/ChangeLog: Ditto.
* gcc/cp/ChangeLog: Ditto.

From-SVN: r242429

8 years ago[ARC] [libgcc] Fix defines
Claudiu Zissulescu [Tue, 15 Nov 2016 15:42:17 +0000 (16:42 +0100)]
[ARC] [libgcc] Fix defines

libgcc/
2016-11-15  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/lib1funcs.S (__mulsi3): Use feature defines instead
of checking for cpus.
(__umulsidi3, __umulsi3_highpart, __udivmodsi4, __divsi3)
(__modsi3, __clzsi2): Likewise.

From-SVN: r242428

8 years agore PR c++/71988 (ICE in dump_simple_decl (gcc/cp/error.c:965))
Jakub Jelinek [Tue, 15 Nov 2016 15:21:49 +0000 (16:21 +0100)]
re PR c++/71988 (ICE in dump_simple_decl (gcc/cp/error.c:965))

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

From-SVN: r242426

8 years ago[ARC] New option handling, refurbish multilib support.
Claudiu Zissulescu [Tue, 15 Nov 2016 15:10:13 +0000 (16:10 +0100)]
[ARC] New option handling, refurbish multilib support.

gcc/
2016-11-15  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-arch.h: New file.
* config/arc/arc-arches.def: Likewise.
* config/arc/arc-cpus.def: Likewise.
* config/arc/arc-options.def: Likewise.
* config/arc/t-multilib: Likewise.
* config/arc/genmultilib.awk: Likewise.
* config/arc/genoptions.awk: Likewise.
* config/arc/arc-tables.opt: Likewise.
* config/arc/driver-arc.c: Likewise.
* testsuite/gcc.target/arc/nps400-cpu-flag.c: Likewise.
* common/config/arc/arc-common.c (arc_handle_option): Trace
toggled options.
* config.gcc (arc*-*-*): Add arc-tables.opt to arc's extra
options; check for supported cpu against arc-cpus.def file.
(arc*-*-elf*, arc*-*-linux-uclibc*): Use new make fragment; define
TARGET_CPU_BUILD macro; add driver-arc.o as an extra object.
* config/arc/arc-c.def: Add emacs local variables.
* config/arc/arc-opts.h (processor_type): Use arc-cpus.def file.
(FPU_FPUS, FPU_FPUD, FPU_FPUDA, FPU_FPUDA_DIV, FPU_FPUDA_FMA)
(FPU_FPUDA_ALL, FPU_FPUS_DIV, FPU_FPUS_FMA, FPU_FPUS_ALL)
(FPU_FPUD_DIV, FPU_FPUD_FMA, FPU_FPUD_ALL): New defines.
(DEFAULT_arc_fpu_build): Define.
(DEFAULT_arc_mpy_option): Define.
* config/arc/arc-protos.h (arc_init): Delete.
* config/arc/arc.c (arc_cpu_name): New variable.
(arc_selected_cpu, arc_selected_arch, arc_arcem, arc_archs)
(arc_arc700, arc_arc600, arc_arc601): New variable.
(arc_init): Add static; remove selection of default tune value,
cleanup obsolete error messages.
(arc_override_options): Make use of .def files for selecting the
right cpu and option configurations.
* config/arc/arc.h (stdbool.h): Include.
(TARGET_CPU_DEFAULT): Define.
(CPP_SPEC): Remove mcpu=NPS400 handling.
(arc_cpu_to_as): Declare.
(EXTRA_SPEC_FUNCTIONS): Define.
(OPTION_DEFAULT_SPECS): Likewise.
(ASM_DEFAULT): Remove.
(ASM_SPEC): Use arc_cpu_to_as.
(DRIVER_SELF_SPECS): Remove deprecated options.
(arc_base_cpu): Declare.
(TARGET_ARC600, TARGET_ARC601, TARGET_ARC700, TARGET_EM)
(TARGET_HS, TARGET_V2, TARGET_ARC600): Make them use arc_base_cpu
variable.
(MULTILIB_DEFAULTS): Use ARC_MULTILIB_CPU_DEFAULT.
* config/arc/arc.md (attr_cpu): Remove.
* config/arc/arc.opt (mno-mpy): Deprecate.
(mcpu=ARC600, mcpu=ARC601, mcpu=ARC700, mcpu=NPS400, mcpu=ARCEM)
(mcpu=ARCHS): Remove.
(mcrc, mdsp-packa, mdvbf, mmac-d16, mmac-24, mtelephony, mrtsc):
Deprecate.
(mbarrel_shifte, mspfp_, mdpfp_, mdsp_pack, mmac_): Remove.
(arc_fpu): Use new defines.
(mpy-option): Change to use numeric or string like inputs.
* config/arc/t-arc (driver-arc.o): New target.
(arc-cpus, t-multilib, arc-tables.opt): Likewise.
* config/arc/t-arc-newlib: Delete.
* config/arc/t-arc-uClibc: Renamed to t-uClibc.
* doc/invoke.texi (ARC): Update arc options.

Fixup

From-SVN: r242425

8 years agoMIPS/GCC: Mark trailing labels with `.insn'
Maciej W. Rozycki [Tue, 15 Nov 2016 15:04:10 +0000 (15:04 +0000)]
MIPS/GCC: Mark trailing labels with `.insn'

gcc/
* config/mips/mips.c (mips16_emit_constants): Emit `consttable'
insn at the beginning of the constant pool.
(mips_insert_insn_pseudos): New function.
(mips_machine_reorg2): Call it.
* config/mips/mips.md (unspec): Add UNSPEC_CONSTTABLE and
UNSPEC_INSN_PSEUDO enum values.
(insn_pseudo, consttable): New insns.

gcc/testsuite/
* gcc.target/mips/insn-casesi.c: New test case.
* gcc.target/mips/insn-pseudo-1.c: New test case.
* gcc.target/mips/insn-pseudo-2.c: New test case.
* gcc.target/mips/insn-pseudo-3.c: New test case.
* gcc.target/mips/insn-pseudo-4.c: New test case.
* gcc.target/mips/insn-tablejump.c: New test case.

From-SVN: r242424

8 years agoMIPS/GCC/test: Implement `-mcode-readable=yes' option test
Maciej W. Rozycki [Tue, 15 Nov 2016 14:57:30 +0000 (14:57 +0000)]
MIPS/GCC/test: Implement `-mcode-readable=yes' option test

gcc/testsuite/
* gcc.target/mips/mips.exp (mips_option_tests): Add
`-mcode-readable=yes' array element.

From-SVN: r242423

8 years agoAllow references in constant-expressions.
Jason Merrill [Tue, 15 Nov 2016 14:55:52 +0000 (09:55 -0500)]
Allow references in constant-expressions.

* decl2.c (decl_maybe_constant_var_p): References qualify.
* constexpr.c (non_const_var_error): Handle references.
* init.c (constant_value_1): Always check decl_constant_var_p.
* cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references.
* error.c (dump_decl_name): Split out from dump_decl.

From-SVN: r242422

8 years agoMIPS/GCC/test: Implement `-mmicromips' option test
Maciej W. Rozycki [Tue, 15 Nov 2016 14:54:06 +0000 (14:54 +0000)]
MIPS/GCC/test: Implement `-mmicromips' option test

gcc/testsuite/
* gcc.target/mips/mips.exp (mips_option_tests): Add
`-mmicromips' array element.

From-SVN: r242421

8 years agoFix find&replace error in license boilerplate
Jonathan Wakely [Tue, 15 Nov 2016 14:33:41 +0000 (14:33 +0000)]
Fix find&replace error in license boilerplate

* testsuite/19_diagnostics/error_code/is_error_code_v.cc: Fix license
text.
* testsuite/20_util/any/assign/emplace.cc: Likewise.
* testsuite/20_util/any/cons/in_place.cc: Likewise.
* testsuite/20_util/any/make_any.cc: Likewise.
* testsuite/20_util/any/requirements.cc: Likewise.
* testsuite/20_util/any/typedefs.cc: Likewise.
* testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
* testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
Likewise.
* testsuite/20_util/in_place/requirements.cc: Likewise.
* testsuite/20_util/optional/77288.cc: Likewise.
* testsuite/20_util/optional/assignment/1.cc: Likewise.
* testsuite/20_util/optional/assignment/2.cc: Likewise.
* testsuite/20_util/optional/assignment/3.cc: Likewise.
* testsuite/20_util/optional/assignment/4.cc: Likewise.
* testsuite/20_util/optional/assignment/5.cc: Likewise.
* testsuite/20_util/optional/assignment/6.cc: Likewise.
* testsuite/20_util/optional/assignment/7.cc: Likewise.
* testsuite/20_util/optional/cons/77727.cc: Likewise.
* testsuite/20_util/optional/cons/move.cc: Likewise.
* testsuite/20_util/optional/cons/value.cc: Likewise.
* testsuite/20_util/optional/cons/value_neg.cc: Likewise.
* testsuite/20_util/optional/constexpr/cons/value.cc: Likewise.
* testsuite/20_util/optional/constexpr/make_optional.cc: Likewise.
* testsuite/20_util/optional/constexpr/observers/1.cc: Likewise.
* testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
* testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
* testsuite/20_util/optional/constexpr/observers/4.cc: Likewise.
* testsuite/20_util/optional/constexpr/observers/5.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/1.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/2.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/3.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/4.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/5.cc: Likewise.
* testsuite/20_util/optional/constexpr/relops/6.cc: Likewise.
* testsuite/20_util/optional/hash.cc: Likewise.
* testsuite/20_util/optional/make_optional.cc: Likewise.
* testsuite/20_util/optional/observers/1.cc: Likewise.
* testsuite/20_util/optional/observers/2.cc: Likewise.
* testsuite/20_util/optional/observers/3.cc: Likewise.
* testsuite/20_util/optional/observers/4.cc: Likewise.
* testsuite/20_util/optional/observers/5.cc: Likewise.
* testsuite/20_util/optional/observers/6.cc: Likewise.
* testsuite/20_util/optional/relops/1.cc: Likewise.
* testsuite/20_util/optional/relops/2.cc: Likewise.
* testsuite/20_util/optional/relops/3.cc: Likewise.
* testsuite/20_util/optional/relops/4.cc: Likewise.
* testsuite/20_util/optional/relops/5.cc: Likewise.
* testsuite/20_util/optional/relops/6.cc: Likewise.
* testsuite/20_util/optional/requirements.cc: Likewise.
* testsuite/20_util/optional/swap/1.cc: Likewise.
* testsuite/20_util/optional/typedefs.cc: Likewise.
* testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
* testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
* testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
Likewise.
* testsuite/20_util/variable_templates_for_traits.cc: Likewise.
* testsuite/20_util/variant/hash.cc: Likewise.
* testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
* testsuite/experimental/any/typedefs.cc: Likewise.
* testsuite/experimental/array/make_array.cc: Likewise.
* testsuite/experimental/array/neg.cc: Likewise.
* testsuite/experimental/chrono/value.cc: Likewise.
* testsuite/experimental/deque/erasure.cc: Likewise.
* testsuite/experimental/forward_list/erasure.cc: Likewise.
* testsuite/experimental/list/erasure.cc: Likewise.
* testsuite/experimental/map/erasure.cc: Likewise.
* testsuite/experimental/memory/observer_ptr/assignment/assign.cc:
Likewise.
* testsuite/experimental/memory/observer_ptr/cons/cons.cc: Likewise.
* testsuite/experimental/memory/observer_ptr/hash/hash.cc: Likewise.
* testsuite/experimental/memory/observer_ptr/make_observer.cc:
Likewise.
* testsuite/experimental/memory/observer_ptr/relops/relops.cc:
Likewise.
* testsuite/experimental/memory/observer_ptr/requirements.cc: Likewise.
* testsuite/experimental/memory/observer_ptr/swap/swap.cc: Likewise.
* testsuite/experimental/memory/observer_ptr/typedefs.cc: Likewise.
* testsuite/experimental/optional/77288.cc: Likewise.
* testsuite/experimental/optional/assignment/1.cc: Likewise.
* testsuite/experimental/optional/assignment/2.cc: Likewise.
* testsuite/experimental/optional/assignment/3.cc: Likewise.
* testsuite/experimental/optional/assignment/4.cc: Likewise.
* testsuite/experimental/optional/assignment/5.cc: Likewise.
* testsuite/experimental/optional/assignment/6.cc: Likewise.
* testsuite/experimental/optional/cons/77727.cc: Likewise.
* testsuite/experimental/optional/cons/move.cc: Likewise.
* testsuite/experimental/optional/cons/value.cc: Likewise.
* testsuite/experimental/optional/cons/value_neg.cc: Likewise.
* testsuite/experimental/optional/constexpr/cons/value.cc: Likewise.
* testsuite/experimental/optional/constexpr/make_optional.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/1.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/2.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/3.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/4.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/5.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/1.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/2.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/3.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/4.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/5.cc: Likewise.
* testsuite/experimental/optional/constexpr/relops/6.cc: Likewise.
* testsuite/experimental/optional/make_optional.cc: Likewise.
* testsuite/experimental/optional/observers/1.cc: Likewise.
* testsuite/experimental/optional/observers/2.cc: Likewise.
* testsuite/experimental/optional/observers/3.cc: Likewise.
* testsuite/experimental/optional/observers/4.cc: Likewise.
* testsuite/experimental/optional/observers/5.cc: Likewise.
* testsuite/experimental/optional/relops/1.cc: Likewise.
* testsuite/experimental/optional/relops/2.cc: Likewise.
* testsuite/experimental/optional/relops/3.cc: Likewise.
* testsuite/experimental/optional/relops/4.cc: Likewise.
* testsuite/experimental/optional/relops/5.cc: Likewise.
* testsuite/experimental/optional/relops/6.cc: Likewise.
* testsuite/experimental/optional/requirements.cc: Likewise.
* testsuite/experimental/optional/swap/1.cc: Likewise.
* testsuite/experimental/optional/typedefs.cc: Likewise.
* testsuite/experimental/propagate_const/assignment/move.cc: Likewise.
* testsuite/experimental/propagate_const/assignment/move_neg.cc:
Likewise.
* testsuite/experimental/propagate_const/cons/move.cc: Likewise.
* testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
* testsuite/experimental/propagate_const/hash/1.cc: Likewise.
* testsuite/experimental/propagate_const/observers/1.cc: Likewise.
* testsuite/experimental/propagate_const/relops/1.cc: Likewise.
* testsuite/experimental/propagate_const/requirements1.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.
* testsuite/experimental/propagate_const/swap/1.cc: Likewise.
* testsuite/experimental/propagate_const/typedefs.cc: Likewise.
* testsuite/experimental/random/randint.cc: Likewise.
* testsuite/experimental/ratio/value.cc: Likewise.
* testsuite/experimental/set/erasure.cc: Likewise.
* testsuite/experimental/string/erasure.cc: Likewise.
* testsuite/experimental/string_view/typedefs.cc: Likewise.
* testsuite/experimental/system_error/value.cc: Likewise.
* testsuite/experimental/tuple/tuple_size.cc: Likewise.
* testsuite/experimental/type_traits/value.cc: Likewise.
* testsuite/experimental/unordered_map/erasure.cc: Likewise.
* testsuite/experimental/unordered_set/erasure.cc: Likewise.
* testsuite/experimental/vector/erasure.cc: Likewise.

From-SVN: r242417

8 years agoAdd std::string constructor for substring of string_view (LWG 2742)
Jonathan Wakely [Tue, 15 Nov 2016 14:33:20 +0000 (14:33 +0000)]
Add std::string constructor for substring of string_view (LWG 2742)

* doc/xml/manual/intro.xml: Document LWG 2742 status.
* doc/html/*: Regenerate.
* include/bits/basic_string.h
(basic_string(const T&, size_type, size_type, const Allocator&)): Add
constructor for substring of basic_string_view, as per LWG 2742 but
with additional constraint to fix ambiguity.
* testsuite/21_strings/basic_string/cons/char/9.cc: New test.
* testsuite/21_strings/basic_string/cons/wchar_t/9.cc: New test.

From-SVN: r242416

8 years agoConstrain swap overload for std::optional (LWG 2748)
Jonathan Wakely [Tue, 15 Nov 2016 14:33:09 +0000 (14:33 +0000)]
Constrain swap overload for std::optional (LWG 2748)

* doc/xml/manual/intro.xml: Document LWG 2748 status.
* include/std/optional (optional<T>::swap): Use is_nothrow_swappable_v
for exception specification.
(swap(optional<T>&, optional<T>&)): Disable when T is not swappable.
* testsuite/20_util/optional/swap/2.cc: New test.

From-SVN: r242415

8 years agore PR target/77881 (Non-optimal signed comparison on x86_64 since r146817)
Michael Matz [Tue, 15 Nov 2016 14:02:28 +0000 (14:02 +0000)]
re PR target/77881 (Non-optimal signed comparison on x86_64 since r146817)

PR missed-optimization/77881
* combine.c (simplify_comparison): Remove useless subregs
also inside the loop, not just after it.
(make_compound_operation): Recognize some subregs as being
masking as well.

testsuite/
* gcc.target/i386/pr77881.c: New test.

From-SVN: r242414

8 years agore PR middle-end/78295 (Spurious -Wuninitialized warning for vector element assignment)
Jakub Jelinek [Tue, 15 Nov 2016 13:57:59 +0000 (14:57 +0100)]
re PR middle-end/78295 (Spurious -Wuninitialized warning for vector element assignment)

PR middle-end/78295
* gcc.dg/uninit-pr78295.c: Add -Wno-psabi to dg-options.

From-SVN: r242413

8 years agoFix scripto in ChangeLog
Richard Sandiford [Tue, 15 Nov 2016 10:57:03 +0000 (10:57 +0000)]
Fix scripto in ChangeLog

From-SVN: r242410

8 years agoFix a GET_MODE_CLASS typo in mem_loc_descriptor
Richard Sandiford [Tue, 15 Nov 2016 10:54:12 +0000 (10:54 +0000)]
Fix a GET_MODE_CLASS typo in mem_loc_descriptor

It should have been checking the size instead.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* dwarf2out.c (mem_loc_descriptor): Fix GET_MODE_CLASS/
GET_MODE_SIZE typo.

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

8 years agoVarious C++17 decomposition fixes.
Jason Merrill [Tue, 15 Nov 2016 05:22:28 +0000 (00:22 -0500)]
Various C++17 decomposition fixes.

* tree.c (bitfield_p): New.
* cp-tree.h: Declare it.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr)
(cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD.
* decl.c (cp_finish_decomp): Look through reference.  Always
SET_DECL_DECOMPOSITION_P.
* semantics.c (finish_decltype_type): Adjust decomposition handling.

From-SVN: r242408

8 years agoDaily bump.
GCC Administrator [Tue, 15 Nov 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242406

8 years agoruntime: don't crash if signal handler info argument is nil
Ian Lance Taylor [Mon, 14 Nov 2016 23:16:04 +0000 (23:16 +0000)]
runtime: don't crash if signal handler info argument is nil

    Apparently on Solaris 10 a SA_SIGINFO signal handler can be invoked with
    a nil info argument.  I would not have believed it but I've now seen it
    happen, and the sigaction man page actually says "If the second argument
    is not equal to NULL, it points to a siginfo_t structure...."  So, if
    that happens, don't crash.

    Also fix another case where we want to make sure that &T{} does not
    allocate.

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

From-SVN: r242403

8 years agoImplement P0513R0, Poisoning the Hash.
Ville Voutilainen [Mon, 14 Nov 2016 21:22:53 +0000 (23:22 +0200)]
Implement P0513R0, Poisoning the Hash.

* include/bits/functional_hash.h (__poison_hash): New.
* include/bits/unique_ptr.h
(hash<unique_ptr<_Tp, _Dp>>): Derive from __poison_hash.
* include/std/optional (hash<optional<_Tp>>): Likewise.
* include/std/variant (hash<variant<_Types...>>): Likewise.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust.
* testsuite/20_util/default_delete/void_neg.cc: Likewise.
* testsuite/20_util/optional/hash.cc: New.
* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Adjust.
* testsuite/20_util/unique_ptr/hash/1.cc: Add tests for
poisoned fancy pointer hashes.
* testsuite/20_util/variant/hash.cc: New.

From-SVN: r242402

8 years agoImplement P0504R0 (Revisiting in-place tag types for any/optional/variant).
Ville Voutilainen [Mon, 14 Nov 2016 20:47:44 +0000 (22:47 +0200)]
Implement P0504R0 (Revisiting in-place tag types for any/optional/variant).

Implement P0504R0 (Revisiting in-place tag types for
any/optional/variant).
* include/std/any (any(_ValueType&& __value)): Constrain
the __is_in_place_type with the decayed type.
(make_any): Adjust to use the new tag type.
* include/std/utility (in_place_tag): Remove.
(in_place_t): Turn into a non-reference tag type.
(__in_place, __in_place_type, __in_place_index): Remove.
(in_place): Turn into an inline variable of non-reference
tag type.
(in_place<_Tp>): Remove.
(in_place_index<_Idx>): Remove.
(in_place_type_t): New.
(in_place_type): Turn into a variable template of non-reference
type.
(in_place_index_t): New.
(in_place_index): Turn into a variable template of non-reference
type.
* include/std/variant
(_Variant_storage(in_place_index_t<_Np>, _Args&&...)): Adjust to
use the new tag type.
(_Union(in_place_index_t<0>, _Args&&...)): Likewise.
(_Union(in_place_index_t<_Np>, _Args&&...)): Likewise.
(_Variant_base()): Likewise.
(variant(_Tp&&)): Likewise.
(variant(in_place_type_t<_Tp>, _Args&&...)): Likewise.
(variant(in_place_type_t<_Tp>, initializer_list<_Up>,
_Args&&...)): Likewise.
(variant(in_place_index_t<_Np>, _Args&&...)): Likewise.
(variant(in_place_index_t<_Np>, initializer_list<_Up>,
_Args&&...)): Likewise
(variant(allocator_arg_t, const _Alloc&)): Likewise.
(variant(allocator_arg_t, const _Alloc&, _Tp&&)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_type_t<_Tp>,
_Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_type_t<_Tp>,
initializer_list<_Up>, _Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_index_t<_Np>,
_Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_index_t<_Np>,
initializer_list<_Up>, _Args&&...)): Likewise.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/20_util/any/cons/explicit.cc: Likewise.
* testsuite/20_util/any/cons/in_place.cc: Likewise.
* testsuite/20_util/any/requirements.cc: Add tests to
check that any is not constructible from the new in_place_type_t
of any value category.
* testsuite/20_util/in_place/requirements.cc: Adjust to
use the new tag type.
* testsuite/20_util/variant/compile.cc: Likewise.
* testsuite/20_util/variant/run.cc: Likewise.

From-SVN: r242401

8 years agors6000.c (rs6000_expand_vector_set): Add support for using xxinsertw and vinsert...
Michael Meissner [Mon, 14 Nov 2016 19:55:42 +0000 (19:55 +0000)]
rs6000.c (rs6000_expand_vector_set): Add support for using xxinsertw and vinsert{b,h} on ISA 3.0.

[gcc]
2016-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_expand_vector_set): Add support
for using xxinsertw and vinsert{b,h} on ISA 3.0.

* config/rs6000/vsx.md (vsx_extract_<mode>): Update comment.
(vsx_set_<mode>_p9): New insn to generate xxinsertw and
vinsert{b,h} on ISA 3.0.

[gcc/testsuite]
2016-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/vec-set-int.c: New test.
* gcc.target/powerpc/vec-set-short.c: Likesie.
* gcc.target/powerpc/vec-set-char.c: Likewise.

From-SVN: r242397

8 years agolibiberty: Add -Wshadow=local to warning flags (if supported).
Mark Wielaard [Mon, 14 Nov 2016 19:46:26 +0000 (19:46 +0000)]
libiberty: Add -Wshadow=local to warning flags (if supported).

libiberty/ChangeLog:

       * configure.ac (ac_libiberty_warn_cflags): Add -Wshadow=local.
       * configure: Regenerated.

From-SVN: r242396

8 years agoc-cppbuiltin.c (c_cpp_builtins): Define __cpp_structured_bindings.
Jakub Jelinek [Mon, 14 Nov 2016 19:00:32 +0000 (20:00 +0100)]
c-cppbuiltin.c (c_cpp_builtins): Define __cpp_structured_bindings.

* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_structured_bindings.

* g++.dg/cpp1z/feat-cxx1z.C: Test __cpp_structured_bindings macro.

From-SVN: r242395

8 years agotree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg and cmpnop in...
Thomas Preud'homme [Mon, 14 Nov 2016 18:55:05 +0000 (18:55 +0000)]
tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg and cmpnop in two steps...

2016-11-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg
    and cmpnop in two steps: first the ones not accessed in original gimple
    expression in a endian independent way and then the ones not accessed
    in the final result in an endian-specific way.
    (bswap_replace): Stop doing big endian adjustment.

From-SVN: r242394

8 years agodump-parse-tree.c (show_code): Add prototype.
Thomas Koenig [Mon, 14 Nov 2016 18:15:36 +0000 (18:15 +0000)]
dump-parse-tree.c (show_code): Add prototype.

2016-11-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

* dump-parse-tree.c (show_code):  Add prototype.
(gfc_debug_code):  New function.
(show_code_node):  Add space after SELECT TYPE.

From-SVN: r242393

8 years agore PR fortran/78300 ([OOP] Failure to compile a F03 code with an optional dummy proce...
Janus Weil [Mon, 14 Nov 2016 16:55:01 +0000 (17:55 +0100)]
re PR fortran/78300 ([OOP] Failure to compile a F03 code with an optional dummy procedure argument)

2016-11-14  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78300
* resolve.c (resolve_procedure_interface): Properly handle CLASS-valued
function results.

2016-11-14  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78300
* gfortran.dg/class_result_3.f90: New test.

From-SVN: r242392

8 years agoi386.md (*andndi3_doubleword): Merge operand constraints.
Uros Bizjak [Mon, 14 Nov 2016 16:51:27 +0000 (17:51 +0100)]
i386.md (*andndi3_doubleword): Merge operand constraints.

* config/i386/i386.md (*andndi3_doubleword): Merge operand constraints.
(*ashl<mode>3_doubleword): Ditto.

From-SVN: r242391

8 years agoUse constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple.
Ville Voutilainen [Mon, 14 Nov 2016 15:30:37 +0000 (17:30 +0200)]
Use constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple.

Use constexpr addressof in optional, SFINAE housekeeping
for any, optional and tuple.
* include/std/any (__do_emplace(_Args&&...)): New.
(__do_emplace(initializer_list<_Up>, _Args&&...)): Likewise.
(__any_constructible): Likewise.
(__any_constructible_t): Use __any_constructible.
(operator=(_ValueType&&)): SFINAE in the return type.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/optional (_Has_addressof_mem): Remove.
(_Has_addressof_free): Likewise.
(_Has_addressof): Likewise.
(__constexpr_addressof(_Tp&)): Likewise.
(operator->): Use std::__addressof.
* include/std/tuple (operator=(const tuple<_UElements...>&)):
SFINAE in return type.
(operator=(tuple<_UElements...>&&)): Likewise.
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.

From-SVN: r242390

8 years agoFix dump output in dse_optimize_stmt
Martin Liska [Mon, 14 Nov 2016 14:22:10 +0000 (15:22 +0100)]
Fix dump output in dse_optimize_stmt

* tree-ssa-dse.c (dse_optimize_stmt): Remove quotes and extra
new line.

From-SVN: r242389

8 years agoMake-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
Prasad Ghangal [Mon, 14 Nov 2016 14:13:32 +0000 (14:13 +0000)]
Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.

2016-11-14  Prasad Ghangal  <prasad.ghangal@gmail.com>
Richard Biener  <rguenther@suse.de>

     c/
     * Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
     * config-lang.in (gtfiles): Add c/c-parser.h.
     * c-tree.h (enum c_declspec_word): Add cdw_gimple.
     (struct c_declspecs): Add gimple_pass member and gimple_p flag.
     * c-parser.c (enum c_id_kind, struct c_token,
     c_parser_next_token_is, c_parser_next_token_is_not,
     c_parser_next_token_is_keyword,
     enum c_lookahead_kind, enum c_dtr_syn, enum c_parser_prec):
     Split out to ...
     * c-parser.h: ... new header.
     * c-parser.c: Include c-parser.h and gimple-parser.h.
(c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Export.
     (c_parser_tokens_buf): New function.
     (c_parser_error): Likewise.
     (c_parser_set_error): Likewise.
     (c_parser_declspecs): Handle RID_GIMPLE.
(c_parser_declaration_or_fndef): Parse __GIMPLE marked body
via c_parser_parse_gimple_body.
     * c-parser.h (c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Declare.
(struct c_parser): Declare forward.
(c_parser_tokens_buf): Declare.
        (c_parser_error): Likewise.
        (c_parser_set_error): Likewise.
     * gimple-parser.c: New file.
     * gimple-parser.h: Likewise.

     obj-c/
     * config-lang.in (gtfiles): Add c/c-parser.h.

     c-family/
     * c-common.h (c_common_resword): Add RID_GIMPLE, RID_PHI types.
     * c-common.h (enum rid): Add RID_GIMPLE, RID_PHI.
     * c.opt (fgimple): New option.

* doc/invoke.texi (fgimple): Document.

     * dumpfile.h (TDF_GIMPLE): Add.
     * dumpfile.c (dump_options): Add gimple.
     * gimple-pretty-print.c (dump_gimple_switch): Adjust dump
for TDF_GIMPLE.
(dump_gimple_label): Likewise.
(dump_gimple_phi): Likewise.
(dump_gimple_bb_header): Likewise.
(dump_phi_nodes): Likewise.
(pp_cfg_jump): Likewise.  Pass in dump flags.
(dump_implicit_edges): Adjust.
     * passes.c (pass_init_dump_file): Do not dump function header
     for TDF_GIMPLE.
     * tree-cfg.c (dump_function_to_file): Dump function return type
and __GIMPLE keyword for TDF_GIMPLE.  Change guard for dumping
GIMPLE stmts.
     * tree-pretty-print.c (dump_decl_name): Adjust dump for TDF_GIMPLE.
     (dump_generic_node): Likewise.

* function.h (struct function): Add pass_startwith member.
* passes.c (execute_one_pass): Implement startwith.

     * tree-ssanames.c (make_ssa_name_fn): New argument, check for version
     and assign proper version for parsed ssa names.
     * tree-ssanames.h (make_ssa_name_fn): Add new argument to the function.
     * internal-fn.c (expand_PHI): New function.
     * internal-fn.h (expand_PHI): Declared here.
     * internal-fn.def: New defination for PHI.
     * tree-cfg.c (lower_phi_internal_fn): New function.
(build_gimple_cfg): Call it.
     (verify_gimple_call): Condition for passing label as arg in internal
     function PHI.
* tree-into-ssa.c (rewrite_add_phi_arguments): Handle already
present PHIs with arguments.

     testsuite/
     * gcc.dg/gimplefe-1.c: New testcase.
     * gcc.dg/gimplefe-2.c: Likewise.
     * gcc.dg/gimplefe-3.c: Likewise.
     * gcc.dg/gimplefe-4.c: Likewise.
     * gcc.dg/gimplefe-5.c: Likewise.
     * gcc.dg/gimplefe-6.c: Likewise.
     * gcc.dg/gimplefe-7.c: Likewise.
     * gcc.dg/gimplefe-8.c: Likewise.
     * gcc.dg/gimplefe-9.c: Likewise.
     * gcc.dg/gimplefe-10.c: Likewise.
     * gcc.dg/gimplefe-11.c: Likewise.
     * gcc.dg/gimplefe-12.c: Likewise.
     * gcc.dg/gimplefe-13.c: Likewise.
     * gcc.dg/gimplefe-14.c: Likewise.
     * gcc.dg/gimplefe-15.c: Likewise.
     * gcc.dg/gimplefe-16.c: Likewise.
     * gcc.dg/gimplefe-17.c: Likewise.
     * gcc.dg/gimplefe-18.c: Likewise.

From-SVN: r242388

8 years agoMake-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
Prasad Ghangal [Mon, 14 Nov 2016 13:51:48 +0000 (13:51 +0000)]
Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.

2016-11-14  Prasad Ghangal  <prasad.ghangal@gmail.com>
Richard Biener  <rguenther@suse.de>

     c/
     * Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
     * config-lang.in (gtfiles): Add c/c-parser.h.
     * c-tree.h (enum c_declspec_word): Add cdw_gimple.
     (struct c_declspecs): Add gimple_pass member and gimple_p flag.
     * c-parser.c (enum c_id_kind, struct c_token,
     c_parser_next_token_is, c_parser_next_token_is_not,
     c_parser_next_token_is_keyword,
     enum c_lookahead_kind, enum c_dtr_syn, enum c_parser_prec):
     Split out to ...
     * c-parser.h: ... new header.
     * c-parser.c: Include c-parser.h and gimple-parser.h.
(c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Export.
     (c_parser_tokens_buf): New function.
     (c_parser_error): Likewise.
     (c_parser_set_error): Likewise.
     (c_parser_declspecs): Handle RID_GIMPLE.
(c_parser_declaration_or_fndef): Parse __GIMPLE marked body
via c_parser_parse_gimple_body.
     * c-parser.h (c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Declare.
(struct c_parser): Declare forward.
(c_parser_tokens_buf): Declare.
        (c_parser_error): Likewise.
        (c_parser_set_error): Likewise.
     * gimple-parser.c: New file.
     * gimple-parser.h: Likewise.

     obj-c/
     * config-lang.in (gtfiles): Add c/c-parser.h.

     c-family/
     * c-common.h (c_common_resword): Add RID_GIMPLE, RID_PHI types.
     * c-common.h (enum rid): Add RID_GIMPLE, RID_PHI.
     * c.opt (fgimple): New option.

* doc/invoke.texi (fgimple): Document.

     * dumpfile.h (TDF_GIMPLE): Add.
     * dumpfile.c (dump_options): Add gimple.
     * gimple-pretty-print.c (dump_gimple_switch): Adjust dump
for TDF_GIMPLE.
(dump_gimple_label): Likewise.
(dump_gimple_phi): Likewise.
(dump_gimple_bb_header): Likewise.
(dump_phi_nodes): Likewise.
(pp_cfg_jump): Likewise.  Pass in dump flags.
(dump_implicit_edges): Adjust.
     * passes.c (pass_init_dump_file): Do not dump function header
     for TDF_GIMPLE.
     * tree-cfg.c (dump_function_to_file): Dump function return type
and __GIMPLE keyword for TDF_GIMPLE.  Change guard for dumping
GIMPLE stmts.
     * tree-pretty-print.c (dump_decl_name): Adjust dump for TDF_GIMPLE.
     (dump_generic_node): Likewise.

* function.h (struct function): Add pass_startwith member.
* passes.c (execute_one_pass): Implement startwith.

     * tree-ssanames.c (make_ssa_name_fn): New argument, check for version
     and assign proper version for parsed ssa names.
     * tree-ssanames.h (make_ssa_name_fn): Add new argument to the function.
     * internal-fn.c (expand_PHI): New function.
     * internal-fn.h (expand_PHI): Declared here.
     * internal-fn.def: New defination for PHI.
     * tree-cfg.c (lower_phi_internal_fn): New function.
(build_gimple_cfg): Call it.
     (verify_gimple_call): Condition for passing label as arg in internal
     function PHI.
* tree-into-ssa.c (rewrite_add_phi_arguments): Handle already
present PHIs with arguments.

     testsuite/
     * gcc.dg/gimplefe-1.c: New testcase.
     * gcc.dg/gimplefe-2.c: Likewise.
     * gcc.dg/gimplefe-3.c: Likewise.
     * gcc.dg/gimplefe-4.c: Likewise.
     * gcc.dg/gimplefe-5.c: Likewise.
     * gcc.dg/gimplefe-6.c: Likewise.
     * gcc.dg/gimplefe-7.c: Likewise.
     * gcc.dg/gimplefe-8.c: Likewise.
     * gcc.dg/gimplefe-9.c: Likewise.
     * gcc.dg/gimplefe-10.c: Likewise.
     * gcc.dg/gimplefe-11.c: Likewise.
     * gcc.dg/gimplefe-12.c: Likewise.
     * gcc.dg/gimplefe-13.c: Likewise.
     * gcc.dg/gimplefe-14.c: Likewise.
     * gcc.dg/gimplefe-15.c: Likewise.
     * gcc.dg/gimplefe-16.c: Likewise.
     * gcc.dg/gimplefe-17.c: Likewise.
     * gcc.dg/gimplefe-18.c: Likewise.

Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r242387

8 years agoIntroduce -fprofile-update=prefer-atomic
Martin Liska [Mon, 14 Nov 2016 12:09:48 +0000 (13:09 +0100)]
Introduce -fprofile-update=prefer-atomic

PR bootstrap/78069
* common.opt: Add prefer-atomic as a new enum value for
-fprofile-update.
* coretypes.h: Likewise.
* doc/invoke.texi: Document the new option value.
* gcc.c: Replace atomic with prefer-atomic.  Remove warning.
* tree-profile.c (tree_profiling): Select default value
of -fprofile-update when 'prefer-atomic' is selected.
PR bootstrap/78069
* gcc.dg/no_profile_instrument_function-attr-1.c: Update test
to match scanned pattern.
* gcc.dg/tree-ssa/ssa-lim-11.c: Likewise.

From-SVN: r242386

8 years agoThe second patch updates the Cortex-A57 scheduler now that we can differentiate betwe...
Wilco Dijkstra [Mon, 14 Nov 2016 12:07:03 +0000 (12:07 +0000)]
The second patch updates the Cortex-A57 scheduler now that we can differentiate between shifts and bitfield inserts.

The second patch updates the Cortex-A57 scheduler now that we can differentiate
between shifts and bitfield inserts.  The Cortex-A57 Software Optimization Guide
indicates that BFM operations use the integer multi-cycle pipeline, while ARM
UXTB/H instructions use the Integer 1 or Integer 0 pipelines, so swap the bfm
and extend reservations.  This results in minor scheduling differences.

* config/arm/cortex-a57.md (cortex_a57_alu): Move extend here, bfm...
(cortex_a57_alu_shift): ...here.

From-SVN: r242385

8 years agoCurrently the SBFM, UBFM and BFM instructions all use the attribute "bfm".
Wilco Dijkstra [Mon, 14 Nov 2016 12:04:11 +0000 (12:04 +0000)]
Currently the SBFM, UBFM and BFM instructions all use the attribute "bfm".

SBFM and UBFM include all shifts on AArch64, which are simpler than bitfield
insert.  Add a new bfx attribute for these instructions so that they can be
modelled more accurately in the future.  There is no difference in code
generation.

* config/aarch64/aarch64.md (aarch64_ashl_sisd_or_int_<mode>3)
Use bfx attribute.
(aarch64_lshr_sisd_or_int_<mode>3): Likewise.
(aarch64_ashr_sisd_or_int_<mode>3): Likewise.
(<optab>si3_insn_uxtw): Likewise.
(<optab><mode>3_insn): Likewise.
(<ANY_EXTEND:optab><GPI:mode>_ashl<SHORT:mode>): Likewise.
(zero_extend<GPI:mode>_lshr<SHORT:mode>): Likewise.
(extend<GPI:mode>_ashr<SHORT:mode>): Likewise.
(<optab><mode>): Likewise.
(insv<mode>): Likewise.
(andim_ashift<mode>_bfiz): Likewise.
* config/aarch64/thunderx.md (thunderx_shift): Add bfx.
* config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise.
* config/arm/cortex-a57.md (cortex_a57_alu): Add bfx.
* config/arm/exynos-m1.md (exynos_m1_alu): Add bfx.
(exynos_m1_alu_p): Likewise.
* config/arm/types.md: Add bfx.
* config/arm/xgene1.md (xgene1_bfm): Add bfx.

From-SVN: r242384

8 years agoThe existing vector costs stop some beneficial vectorization.
Wilco Dijkstra [Mon, 14 Nov 2016 11:51:33 +0000 (11:51 +0000)]
The existing vector costs stop some beneficial vectorization.

The existing vector costs stop some beneficial vectorization.  This is mostly
due to vector statement cost being set to 3 as well as vector loads having a
higher cost than scalar loads.  This means that even when we vectorize 4x, it
is possible that the cost of a vectorized loop is similar to the scalar
version, and we fail to vectorize.

Using a cost of 3 for a vector operation suggests they are 3 times as
expensive as scalar operations.  Since most vector operations have a
similar throughput as scalar operations, this is not correct.

Using slightly lower values for these heuristics now allows this loop
and many others to be vectorized.  On a proprietary benchmark the gain
from vectorizing this loop is around 15-30% which shows vectorizing it is
indeed beneficial.

* config/aarch64/aarch64.c (cortexa57_vector_cost):
Change vec_stmt_cost, vec_align_load_cost and vec_unalign_load_cost.

From-SVN: r242383

8 years agoMakefile.in: Replace s-interr-hwint.adb with s-interr-vxworks.adb throughout.
Eric Botcazou [Mon, 14 Nov 2016 11:45:33 +0000 (11:45 +0000)]
Makefile.in: Replace s-interr-hwint.adb with s-interr-vxworks.adb throughout.

* gcc-interface/Makefile.in: Replace s-interr-hwint.adb with
s-interr-vxworks.adb throughout.

From-SVN: r242382

8 years agoremove conditional compilation of HAVE_AS_LEB128 code
Trevor Saunders [Mon, 14 Nov 2016 10:58:48 +0000 (10:58 +0000)]
remove conditional compilation of HAVE_AS_LEB128 code

gcc/ChangeLog:

2016-08-20  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* acinclude.m4 (gcc_GAS_CHECK_FEATURE): Support doing an action
if the feature isn't available.
* configure: Regenerate.
* configure.ac: define HAVE_AS_LEB128 to 0 when not available.
* dwarf2asm.c (dw2_asm_output_data_uleb128): Always compile code
for HAVE_AS_LEB128.
(dw2_asm_output_data_sleb128): Likewise.
(dw2_asm_output_delta_uleb128): Likewise.
(dw2_asm_output_delta_sleb128): Likewise.
* except.c (output_one_function_exception_table): Likewise.
(dw2_size_of_call_site_table): Likewise.
(sjlj_size_of_call_site_table): Likewise.
* dwarf2out.c (output_loc_list): Likewise.
(output_rnglists): Likewise.

From-SVN: r242381

8 years agore PR tree-optimization/78312 (wrong code due to ssa-backprop)
Richard Biener [Mon, 14 Nov 2016 10:33:15 +0000 (10:33 +0000)]
re PR tree-optimization/78312 (wrong code due to ssa-backprop)

2016-11-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78312
* gimple-ssa-backprop.c (backprop::prepare_change): Reset
flow-sensitive info.

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

From-SVN: r242380

8 years agore PR target/78093 ([avr] New variable attribute "absdata" and option "-mabsdata...
Georg-Johann Lay [Mon, 14 Nov 2016 10:25:34 +0000 (10:25 +0000)]
re PR target/78093 ([avr] New variable attribute "absdata" and option "-mabsdata" to enable LDS / STS on Reduced Tiny)

gcc/
PR target/78093
* doc/invoke.texi (AVR Options) [-mabsdata]: Document new option.
* config/avr/avr.opt (-mabsdata): New option.
* config/avr/avr-arch.h (avr_device_specific_features): Add AVR_ISA_LDS.
* config/avr/avr.c (avr_encode_section_info) [AVR_TINY]: If
-mabsdata & symbol is not progmem, tag as AVR_SYMBOL_FLAG_TINY_ABSDATA.
* config/avr/avr-mcus.def (attiny4/5/9/10/20): Use AVR_ISA_LDS.
* config/avr/gen-avr-mmcu-specs.c (print_mcu): Print cc1_absdata
spec depending on AVR_ISA_LDS.
* config/avr/specs.h (CC1_SPEC): Enhanced by cc1_absdata spec.
gcc/testsuite/
PR target/78093
* gcc.target/avr/torture/tiny-absdata-2.c: New test.

From-SVN: r242379

8 years agoImplement P0217R3 - C++17 structured bindings
Jakub Jelinek [Mon, 14 Nov 2016 07:54:50 +0000 (08:54 +0100)]
Implement P0217R3 - C++17 structured bindings

Implement P0217R3 - C++17 structured bindings
* g++.dg/cpp1z/decomp1.C: New test.
* g++.dg/cpp1z/decomp2.C: New test.
* g++.dg/cpp1z/decomp3.C: New test.
* g++.dg/cpp1z/decomp4.C: New test.
* g++.dg/cpp1z/decomp5.C: New test.
* g++.dg/cpp1z/decomp6.C: New test.
* g++.dg/cpp1z/decomp7.C: New test.
* g++.dg/cpp1z/decomp8.C: New test.
* g++.dg/cpp1z/decomp9.C: New test.
* g++.dg/cpp1z/decomp10.C: New test.

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

8 years agoImplement P0217R3 - C++17 structured bindings
Jakub Jelinek [Mon, 14 Nov 2016 05:02:58 +0000 (06:02 +0100)]
Implement P0217R3 - C++17 structured bindings

gcc/
* match.pd: Don't try to compare addresses of variables with
DECL_VALUE_EXPR.
gcc/cp/
* cp-tree.h (struct lang_decl_base): Add decomposition_p.
(DECL_DECOMPOSITION_P): New
(enum auto_deduction_context): Add adc_decomp_type.
(enum cp_declarator_kind): Add cdk_decomp.
* constexpr.c (cxx_eval_constant_expression): Look through
DECL_VALUE_EXPR.
(potential_constant_expression_1): Likewise.
* decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
(check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
(cp_finish_decl): Pass adc_decomp_type for decomposition.
(find_decomp_class_base, get_tuple_size, get_tuple_element_type)
(get_tuple_decomp_init, cp_finish_decomp): New.
(grokdeclarator): Handle decomposition.
* init.c (build_aggr_init): Handle decomposition array.
(build_vec_init): Handle initialization from { array }.
* name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
OVERLOAD.
* parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
(function_declarator_p, strip_declarator_types)
(cp_parser_check_declarator_template_parameters): Likewise.
(cp_parser_range_for, cp_convert_range_for): Handle decomposition.
(cp_parser_simple_declaration): Parse decomposition.
(cp_parser_decomposition_declaration): New.
* pt.c (tsubst_decomp_names): New.
(subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
(do_auto_deduction): Handle adc_decomp_type.
* semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
* typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
* tree.c (lvalue_kind): Likewise.
(cp_build_reference_type): Handle reference collapsing.

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