gcc.git
6 years agoinvoke.texi (ARC Options): Add missing -mlra entry.
Sandra Loosemore [Sun, 17 Dec 2017 23:58:27 +0000 (18:58 -0500)]
invoke.texi (ARC Options): Add missing -mlra entry.

2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* doc/invoke.texi (ARC Options): Add missing -mlra entry.

From-SVN: r255768

6 years agoc-attribs.c (common_handle_aligned_attribute): Avoid issuing an error for attribute...
Martin Sebor [Sun, 17 Dec 2017 23:23:28 +0000 (23:23 +0000)]
c-attribs.c (common_handle_aligned_attribute): Avoid issuing an error for attribute warn_if_not_aligned.

gcc/c-family/ChangeLog:

* c-attribs.c (common_handle_aligned_attribute): Avoid issuing
an error for attribute warn_if_not_aligned.

From-SVN: r255767

6 years agoRevert hunk with debug code that was comitted by mistake
Andi Kleen [Sun, 17 Dec 2017 20:41:59 +0000 (20:41 +0000)]
Revert hunk with debug code that was comitted by mistake

From-SVN: r255766

6 years agoguality.h (guality_check): Cast %lli arguments inf fprintf statements to long long...
Uros Bizjak [Sun, 17 Dec 2017 20:22:36 +0000 (21:22 +0100)]
guality.h (guality_check): Cast %lli arguments inf fprintf statements to long long int.

* gcc.dg/guality/guality.h (guality_check): Cast %lli arguments
inf fprintf statements to long long int.

From-SVN: r255765

6 years agopa.c (pa_som_asm_init_sections): Fix comment.
John David Anglin [Sun, 17 Dec 2017 18:36:50 +0000 (18:36 +0000)]
pa.c (pa_som_asm_init_sections): Fix comment.

* config/pa/pa.c (pa_som_asm_init_sections): Fix comment.

From-SVN: r255764

6 years agoSupport -std=f2018
Janne Blomqvist [Sun, 17 Dec 2017 16:28:08 +0000 (18:28 +0200)]
Support -std=f2018

The Fortran committee has decided to rename the upcoming Fortran 2015
standard to Fortran 2018.  This is not a reflection of a three year
delay in the process, but rather they are following other standards in
adopting the year of publication for the name. For more details see
N2144.

This patch renames GFC_STD_F2015 to GFC_STD_F2018, and makes it a
separate flag rather than an alias for GFC_STD_GNU. Also, it adds a
-std=f2018 argument, and documents it.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2017-12-17  Janne Blomqvist  <jb@gcc.gnu.org>

* decl.c (gfc_match_implicit_none): Use GFC_STD_F2018 instead of
GFC_STD_F2015.
* error.c (gfc_notify_std): Add GFC_STD_F2018{_DEL,_OBS} to
switch.
* gfortran.texi: Document -std=f2018.
* interface.c (compare_parameter): Fix comment.
* invoke.texi: Document -std=f2018.
* lang.opt: Add -std=f2018 argumnet.
* libgfortran.h (GFC_STD_F2015): Rename to GFC_STD_F0218, use
separate flag bit.
(GFC_STD_F2018_DEL): New macro.
(GFC_STD_F2018_OBS): Likewise.
* match.c (gfc_match_stopcode): Use GFC_STD_F2018.
* options.c (set_default_std_flags): Add F2018 flags to defaults.
(gfc_handle_option): Set options for -std=f2018.

gcc/testsuite/ChangeLog:

2017-12-17  Janne Blomqvist  <jb@gcc.gnu.org>

* gfortran.dg/error_stop_3.f90: Update -std= option, fix comments.
* gfortran.dg/error_stop_4.f90: Update error message.
* gfortran.dg/implicit_14.f90: Likewise.
* gfortran.dg/spellcheck-procedure_2.f90: Don't warn for F2018
features.

From-SVN: r255761

6 years agoCorrect imul (r64) latency for modern Intel CPUs
Markus Trippelsdorf [Sun, 17 Dec 2017 12:01:25 +0000 (12:01 +0000)]
Correct imul (r64) latency for modern Intel CPUs

Since Sandybridge the 64bit multiplication latency is three cycles, not
four. So update the costs to reflect reality.

* x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
latencies.

* gcc.target/i386/wmul-3.c: New test.

From-SVN: r255760

6 years agoinvoke.texi: Fix some typos.
Sandra Loosemore [Sun, 17 Dec 2017 06:21:50 +0000 (01:21 -0500)]
invoke.texi: Fix some typos.

2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* doc/invoke.texi: Fix some typos.

From-SVN: r255759

6 years agoDaily bump.
GCC Administrator [Sun, 17 Dec 2017 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255758

6 years agoPR tree-optimization/78918 - missing -Wrestrict on memcpy copying over self
Martin Sebor [Sat, 16 Dec 2017 23:58:34 +0000 (23:58 +0000)]
PR tree-optimization/78918 - missing -Wrestrict on memcpy copying over self

gcc/c-family/ChangeLog:

PR tree-optimization/78918
* c-common.c (check_function_restrict): Avoid checking built-ins.
* c.opt (-Wrestrict): Include in -Wall.

gcc/ChangeLog:

PR tree-optimization/78918
* Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
* builtins.c (check_sizes): Rename...
(check_access): ...to this.  Rename function arguments for clarity.
(check_memop_sizes): Adjust names.
(expand_builtin_memchr, expand_builtin_memcpy): Same.
(expand_builtin_memmove, expand_builtin_mempcpy): Same.
(expand_builtin_strcat, expand_builtin_stpncpy): Same.
(check_strncat_sizes, expand_builtin_strncat): Same.
(expand_builtin_strncpy, expand_builtin_memset): Same.
(expand_builtin_bzero, expand_builtin_memcmp): Same.
(expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
(maybe_emit_sprintf_chk_warning): Same.
(expand_builtin_strcpy): Adjust.
(expand_builtin_stpcpy): Same.
(expand_builtin_with_bounds): Detect out-of-bounds accesses
in pointer-checking forms of memcpy, memmove, and mempcpy.
(gcall_to_tree_minimal, max_object_size): Define new functions.
* builtins.h (max_object_size): Declare.
* calls.c (alloc_max_size): Call max_object_size instead of
hardcoding ssizetype limit.
(get_size_range): Handle new argument.
* calls.h (get_size_range): Add a new argument.
* cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
* doc/invoke.texi (-Wrestrict): Adjust, add example.
* gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
operations.
(gimple_fold_builtin_memory_chk): Same.
(gimple_fold_builtin_stxcpy_chk): New function.
* gimple-ssa-warn-restrict.c: New source.
* gimple-ssa-warn-restrict.h: New header.
* gimple.c (gimple_build_call_from_tree): Propagate location.
* passes.def (pass_warn_restrict): Add new pass.
* tree-pass.h (make_pass_warn_restrict): Declare.
* tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
operations.
(handle_builtin_strcat): Same.
(strlen_optimize_stmt): Rename...
(strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
stpncpy, strncpy, and their checking forms.

gcc/testsuite/ChangeLog:

PR tree-optimization/78918
* c-c++-common/Warray-bounds.c: New test.
* c-c++-common/Warray-bounds-2.c: New test.
* c-c++-common/Warray-bounds-3.c: New test.
* c-c++-common/Warray-bounds-4.c: New test.
* c-c++-common/Warray-bounds-5.c: New test.
* c-c++-common/Wrestrict-2.c: New test.
* c-c++-common/Wrestrict.c: New test.
* c-c++-common/Wrestrict.s: New test.
* c-c++-common/Wsizeof-pointer-memaccess1.c: Adjust
* c-c++-common/Wsizeof-pointer-memaccess2.c: Same.
* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same.
* g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same.
* gcc.dg/range.h: New header.
* gcc.dg/memcpy-6.c: New test.
* gcc.dg/pr69172.c: Adjust.
* gcc.dg/pr79223.c: Same.
* gcc.dg/pr81345.c: Adjust.
* gcc.dg/Wobjsize-1.c: Same.
* gcc.dg/Wrestrict-2.c: New test.
* gcc.dg/Wrestrict.c: New test.
* gcc.dg/Wsizeof-pointer-memaccess1.c: Adjust.
* gcc.dg/builtin-stpncpy.c: Same.
* gcc.dg/builtin-stringop-chk-1.c: Same.
* gcc.target/i386/chkp-stropt-17.c: New test.
* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Adjust.

From-SVN: r255755

6 years agoPR tree-optimization/83239 - False positive from -Wstringop-overflow
Martin Sebor [Sat, 16 Dec 2017 22:37:22 +0000 (22:37 +0000)]
PR tree-optimization/83239 - False positive from -Wstringop-overflow

PR tree-optimization/83239 - False positive from -Wstringop-overflow
on simple std::vector code

libstdc++/CHangeLog:
* include/bits/vector.tcc (vector::_M_default_append): Assert
        invariant to generate better code.

gcc/testsuite/ChangeLog:
* g++.dg/pr83239.C: New test case.

From-SVN: r255753

6 years agore PR libfortran/81937 (stack-buffer-overflow on memcpy in libgfortran/io/unix.c...
Jerry DeLisle [Sat, 16 Dec 2017 19:50:42 +0000 (19:50 +0000)]
re PR libfortran/81937 (stack-buffer-overflow on memcpy in libgfortran/io/unix.c on character(kind=4))

2017-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR libgfortran/81937
        * io/list_read.c (next_char_internal): Don't attempt to read
        from the internal unit stream if no bytes are left. Decrement
        bytes_left in the right place.

From-SVN: r255750

6 years agore PR target/82767 (gcc.target/i386/pr71321.c scan-assembler-times fail)
Sebastian Peryt [Sat, 16 Dec 2017 16:21:23 +0000 (17:21 +0100)]
re PR target/82767 (gcc.target/i386/pr71321.c scan-assembler-times fail)

PR testsuite/82767
 * gcc.target/i386/pr71321.c: Test with -mtune=generic

From-SVN: r255749

6 years agore PR rtl-optimization/82849 (ICE on valid code since r254379)
Jan Hubicka [Sat, 16 Dec 2017 16:01:26 +0000 (17:01 +0100)]
re PR rtl-optimization/82849 (ICE on valid code since r254379)

2017-12-16  Jan Hubicka  <hubicka@ucw.cz>

PR rtl-optimization/82849
* modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
and get_max_loop_iterations_int.

From-SVN: r255748

6 years agopoly_int: mode query functions
Richard Sandiford [Sat, 16 Dec 2017 14:26:43 +0000 (14:26 +0000)]
poly_int: mode query functions

This patch changes the bit size and vector count arguments to the
machmode.h functions from unsigned int to poly_uint64.

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

gcc/
* machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
(smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
size as a poly_uint64.
(mode_for_vector, mode_for_int_vector): Take the number of vector
elements as a poly_uint64.
* stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
size as a poly_uint64.
(mode_for_vector, mode_for_int_vector): Take the number of vector
elements as a poly_uint64.

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

6 years agoRevert accidental commit
Richard Sandiford [Sat, 16 Dec 2017 14:23:38 +0000 (14:23 +0000)]
Revert accidental commit

From-SVN: r255746

6 years agoAdd a gen_int_shift_amount helper function
Richard Sandiford [Sat, 16 Dec 2017 14:14:18 +0000 (14:14 +0000)]
Add a gen_int_shift_amount helper function

This patch adds a helper routine that constructs rtxes
for constant shift amounts, given the mode of the value
being shifted.  As well as helping with the SVE patches, this
is one step towards allowing CONST_INTs to have a real mode.

One long-standing problem has been to decide what the mode
of a shift count should be for arbitrary rtxes (as opposed to those
directly tied to a target pattern).  Realistic choices would be
the mode of the shifted elements, word_mode, QImode, or the same
mode as the shift optabs (in which case what should the mode
be when the target doesn't have a pattern?)

For now the patch picks the mode of the shifted elements,
but with a ??? comment.

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

gcc/
* emit-rtl.h (gen_int_shift_amount): Declare.
* emit-rtl.c (gen_int_shift_amount): New function.
* asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
instead of GEN_INT.
* calls.c (shift_return_value): Likewise.
* cse.c (fold_rtx): Likewise.
* dse.c (find_shift_sequence): Likewise.
* expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
(expand_shift, expand_smod_pow2): Likewise.
* lower-subreg.c (shift_cost): Likewise.
* optabs.c (expand_superword_shift, expand_doubleword_mult)
(expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
(expand_vec_perm_var): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
(simplify_binary_operation_1): Likewise.
* combine.c (try_combine, find_split_point, force_int_to_mode)
(simplify_shift_const_1, simplify_shift_const): Likewise.
(change_zero_ext): Likewise.  Use simplify_gen_binary.

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

6 years agopoly_int: MACRO_MODE
Richard Sandiford [Sat, 16 Dec 2017 14:13:03 +0000 (14:13 +0000)]
poly_int: MACRO_MODE

This patch uses a MACRO_MODE wrapper for the target macro invocations
in targhooks.c and address.h, so that macros for non-AArch64 targets
can continue to treat modes as fixed-size.

It didn't seem worth converting the address macros to hooks since
(a) they're heavily used, (b) they should be probably be replaced
with a different interface rather than converted to hooks as-is,
and most importantly (c) addresses.h already localises the problem.

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

gcc/
* machmode.h (MACRO_MODE): New macro.
* addresses.h (base_reg_class, ok_for_base_p_1): Use it.
* targhooks.c (default_libcall_value, default_secondary_reload)
(default_memory_move_cost, default_register_move_cost)
(default_class_max_nregs): Likewise.

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

6 years agopoly_int: IN_TARGET_CODE
Richard Sandiford [Sat, 16 Dec 2017 14:10:55 +0000 (14:10 +0000)]
poly_int: IN_TARGET_CODE

This patch makes each target-specifc TU define an IN_TARGET_CODE macro,
which is used to decide whether poly_int<1, C> should convert to C.

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

gcc/
* doc/sourcebuild.texi: Document IN_TARGET_CODE.
* genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
target C file.
* genautomata.c (main): Likewise.
* genconditions.c (write_header): Likewise.
* genemit.c (main): Likewise.
* genextract.c (print_header): Likewise.
* genopinit.c (main): Likewise.
* genoutput.c (output_prologue): Likewise.
* genpeep.c (main): Likewise.
* genpreds.c (write_insn_preds_c): Likewise.
* genrecog.c (writer_header): Likewise.
* config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
* config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
* config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
* config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
* config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
* config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
* config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
* config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
* config/arc/arc.c (IN_TARGET_CODE): Likewise.
* config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
* config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
* config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
* config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
* config/arm/arm.c (IN_TARGET_CODE): Likewise.
* config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
* config/avr/avr.c (IN_TARGET_CODE): Likewise.
* config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
* config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
* config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
* config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
* config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
* config/cris/cris.c (IN_TARGET_CODE): Likewise.
* config/darwin.c (IN_TARGET_CODE): Likewise.
* config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
* config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
* config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
* config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
* config/frv/frv.c (IN_TARGET_CODE): Likewise.
* config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
* config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
* config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
* config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
* config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
* config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
* config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
* config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
* config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
* config/i386/i386.c (IN_TARGET_CODE): Likewise.
* config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
* config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
* config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
* config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
* config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
* config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
* config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
* config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
* config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
* config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
* config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
* config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
* config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
* config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
* config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
* config/mips/mips.c (IN_TARGET_CODE): Likewise.
* config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
* config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
* config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
* config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
* config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
* config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
* config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
* config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
* config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
* config/pa/pa.c (IN_TARGET_CODE): Likewise.
* config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
* config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
* config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
* config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
* config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
* config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
* config/rx/rx.c (IN_TARGET_CODE): Likewise.
* config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
* config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
* config/s390/s390.c (IN_TARGET_CODE): Likewise.
* config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
* config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
* config/sh/sh.c (IN_TARGET_CODE): Likewise.
* config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
* config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
* config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
* config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
* config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
* config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
* config/spu/spu.c (IN_TARGET_CODE): Likewise.
* config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
* config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
* config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
* config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
* config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
* config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
* config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
* config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
* config/v850/v850.c (IN_TARGET_CODE): Likewise.
* config/vax/vax.c (IN_TARGET_CODE): Likewise.
* config/visium/visium.c (IN_TARGET_CODE): Likewise.
* config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
* config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
* config/vms/vms.c (IN_TARGET_CODE): Likewise.
* config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.

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

6 years agoMinor vn_reference_lookup_3 tweak
Richard Sandiford [Sat, 16 Dec 2017 14:09:04 +0000 (14:09 +0000)]
Minor vn_reference_lookup_3 tweak

The repeated checks for MEM_REF made this code hard to convert to
poly_ints as-is.  Hopefully the new structure also makes it clearer
at a glance what the two cases are.

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

gcc/
* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
checks for MEM_REF.

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

6 years agoAdd VEC_SERIES_EXPR and associated optab
Richard Sandiford [Sat, 16 Dec 2017 14:04:46 +0000 (14:04 +0000)]
Add VEC_SERIES_EXPR and associated optab

Similarly to the VEC_DUPLICATE_EXPR, this patch adds a tree code
equivalent of the VEC_SERIES rtx code: VEC_SERIES_EXPR.

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

gcc/
* doc/generic.texi (VEC_SERIES_EXPR): Document.
* doc/md.texi (vec_series@var{m}): Document.
* tree.def (VEC_SERIES_EXPR): New tree code.
* tree.h (build_vec_series): Declare.
* tree.c (build_vec_series): New function.
* cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
* tree-pretty-print.c (dump_generic_node): Likewise.
* gimple-pretty-print.c (dump_binary_rhs): Likewise.
* tree-inline.c (estimate_operator_cost): Likewise.
* expr.c (expand_expr_real_2): Likewise.
* optabs-tree.c (optab_for_tree_code): Likewise.
* tree-cfg.c (verify_gimple_assign_binary): Likewise.
* fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
* expmed.c (make_tree): Handle VEC_SERIES.
* optabs.def (vec_series_optab): New optab.
* optabs.h (expand_vec_series_expr): Declare.
* optabs.c (expand_vec_series_expr): New function.
* tree-vect-generic.c (expand_vector_operations_1): Check that
the operands also have vector type.

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

6 years agoAdd VEC_DUPLICATE_EXPR and associated optab
Richard Sandiford [Sat, 16 Dec 2017 14:03:30 +0000 (14:03 +0000)]
Add VEC_DUPLICATE_EXPR and associated optab

SVE needs a way of broadcasting a scalar to a variable-length vector.
This patch adds VEC_DUPLICATE_EXPR for when CONSTRUCTOR would be used
for fixed-length vectors; this is the tree equivalent of the existing
rtl code VEC_DUPLICATE.

The patch also adds a vec_duplicate_optab to go with VEC_DUPLICATE_EXPR.

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

gcc/
* doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
(VEC_COND_EXPR): Add missing @tindex.
* doc/md.texi (vec_duplicate@var{m}): Document.
* tree.def (VEC_DUPLICATE_EXPR): New tree codes.
* tree.c (build_vector_from_val): Add stubbed-out handling of
variable-length vectors, using VEC_DUPLICATE_EXPR.
(uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
* cfgexpand.c (expand_debug_expr): Likewise.
* tree-cfg.c (verify_gimple_assign_unary): Likewise.
* tree-inline.c (estimate_operator_cost): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
* fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
(test_vec_duplicate_folding): New function.
(fold_const_c_tests): Call it.
* optabs.def (vec_duplicate_optab): New optab.
* optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
* optabs.h (expand_vector_broadcast): Declare.
* optabs.c (expand_vector_broadcast): Make non-static.  Try using
vec_duplicate_optab.
* expr.c (store_constructor): Try using vec_duplicate_optab for
uniform vectors.
(expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.

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

6 years agore PR target/83358 (division not converted with Intel tuning since r253934)
Markus Trippelsdorf [Sat, 16 Dec 2017 04:28:08 +0000 (04:28 +0000)]
re PR target/83358 (division not converted with Intel tuning since r253934)

2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>

PR target/83358
* config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
div/mod latencies a bit.

        PR target/83358
* gcc.target/i386/pr83358-1.c: New test.
* gcc.target/i386/pr83358-2.c: New test.

From-SVN: r255739

6 years agoos: pass -s to hostname on AIX
Ian Lance Taylor [Sat, 16 Dec 2017 01:49:54 +0000 (01:49 +0000)]
os: pass -s to hostname on AIX

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

From-SVN: r255738

6 years agosyscall: emulate Flock on AIX
Ian Lance Taylor [Sat, 16 Dec 2017 01:45:45 +0000 (01:45 +0000)]
syscall: emulate Flock on AIX

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

From-SVN: r255737

6 years agoDaily bump.
GCC Administrator [Sat, 16 Dec 2017 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255734

6 years agore PR middle-end/36550 (Wrong "may be used uninitialized" warning (conditional PHIs))
Jeff Law [Fri, 15 Dec 2017 22:35:51 +0000 (15:35 -0700)]
re PR middle-end/36550 (Wrong "may be used uninitialized" warning (conditional PHIs))

PR tree-optimization/36550
* tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
(mark_threaded_blocks): Rewrite code to avoid block copying when
optimizing for size.  Don't pessimize blocks which will be
copied, but all the statements will be dead.

PR tree-optimization/36550
* gcc.dg/tree-ssa/pr36550.c: New test.

From-SVN: r255731

6 years agore PR tree-optimization/81165 (Regression in GCC-8.0.0's optimizer)
Jeff Law [Fri, 15 Dec 2017 22:11:06 +0000 (15:11 -0700)]
re PR tree-optimization/81165 (Regression in GCC-8.0.0's optimizer)

PR tree-optimization/81165
* tree-ssa-threadupdate.c (uses_in_bb): New.
(estimate_threading_killed_stmts): New.
* tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
* tree-ssa-threadedge.c
(record_temporary_equivalences_from_stmts_at_dest): Expand limit
when its hit.

PR tree-optimization/81165
* gcc.dg/pr81165.c: New.

From-SVN: r255724

6 years agore PR c++/83205 (ICE on structured binding with ill-formed negative std::tuple_size...
Jakub Jelinek [Fri, 15 Dec 2017 21:40:45 +0000 (22:40 +0100)]
re PR c++/83205 (ICE on structured binding with ill-formed negative std::tuple_size<T>::value)

PR c++/83205
* decl.c (cp_finish_decomp): Handle the case when tsize is not
error_mark_node, but doesn't fit into uhwi.  Split up count != eltscnt
and !tree_fits_uhwi_p (tsize) error_at calls into error_n and inform_n
to handle plural forms properly.

* g++.dg/cpp1z/decomp3.C: Adjust for structured binding count
mismatch diagnostics split into error and warning with plural
forms.
* g++.dg/cpp1z/decomp10.C: Likewise.
* g++.dg/cpp1z/decomp32.C: New test.

From-SVN: r255706

6 years agore PR c++/81197 (ICE with structured binding and lifetime-extended temporaries)
Jakub Jelinek [Fri, 15 Dec 2017 21:39:20 +0000 (22:39 +0100)]
re PR c++/81197 (ICE with structured binding and lifetime-extended temporaries)

PR c++/81197
* cp-tree.h (cp_maybe_mangle_decomp): Declare.
* decl.c (cp_maybe_mangle_decomp): New function.
(cp_finish_decomp): Don't SET_DECL_ASSEMBLER_NAME here.
* parser.c (cp_convert_range_for,
cp_parser_decomposition_declaration): Call cp_maybe_mangle_decomp.
* pt.c (tsubst_expr): Likewise.
* mangle.c (find_decomp_unqualified_name): New function.
(write_unqualified_name): Handle DECL_DECOMPOSITION_P
where DECL_ASSEMBLER_NAME is already set.

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

From-SVN: r255705

6 years agore PR c++/80135 (ICE in output_constructor_regular_field, at varasm.c:4968)
Jakub Jelinek [Fri, 15 Dec 2017 20:20:00 +0000 (21:20 +0100)]
re PR c++/80135 (ICE in output_constructor_regular_field, at varasm.c:4968)

PR c++/80135
PR c++/81922
* typeck2.c (digest_init_r): Change nested argument type from bool to
int.  Use code instead of TREE_CODE (type) where possible.  If
nested == 2, diagnose initialization of flexible array member with
STRING_CST.  Pass nested to process_init_constructor.  Formatting fix.
(digest_init, digest_init_flags): Adjust digest_init_r caller.
(massage_init_elt): Add nested argument.  Pass 2 instead of 1 to
digest_init_r's nested argument if nested is non-zero.
(process_init_constructor_array): Add nested argument.  If nested == 2,
diagnose initialization of flexible array member with non-empty
braced enclosed list.  Pass nested to massage_init_elt.
(process_init_constructor_record, process_init_constructor_union): Add
nested argument, pass it to massage_init_elt.
(process_init_constructor): Add nested argument, pass it to
process_init_constructor_{array,record,union}.
* init.c (find_field_init): Renamed to ...
(find_flexarray_init): ... this.  Return NULL_TREE if init is
error_mark_node.  Don't look through nested CONSTRUCTORs.
(warn_placement_new_too_small): Adjust caller.

* g++.dg/warn/Wplacement-new-size-1.C (fBx1): Initialize nested
flexible array member only with {}.  Add dg-warning.
(fBx2, fBx3): Remove.
* g++.dg/warn/Wplacement-new-size-2.C (fBx1): Initialize nested
flexible array member only with {}.  Add dg-warning.
(fBx2, fBx3): Remove.
* g++.dg/warn/Wplacement-new-size-6.C: New test.
* g++.dg/ext/flexary13.C (main): Remove test for initialization
of nested flexible array member with non-empty initializer.
* g++.dg/ext/flexary25.C: New test.
* g++.dg/ext/flexary26.C: New test.
* g++.dg/ext/flexary27.C: New test.
* g++.dg/parse/pr43765.C: Expect diagnostics about initialization
of nested flexible array member with non-empty initializer.  Expect
C++2A diagnostics about mixing of designated and non-designated
initializers.

From-SVN: r255703

6 years agore PR c++/83217 (Compiler segfault: structured binding by reference to a templated...
Jakub Jelinek [Fri, 15 Dec 2017 19:41:45 +0000 (20:41 +0100)]
re PR c++/83217 (Compiler segfault: structured binding by reference to a templated type via a pointer)

PR c++/83217
* decl.c (cp_finish_decomp): If decl's type is REFERENCE_TYPE,
call complete_type (TREE_TYPE (type)).

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

From-SVN: r255702

6 years agore PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code)
Jakub Jelinek [Fri, 15 Dec 2017 17:51:36 +0000 (18:51 +0100)]
re PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code)

PR tree-optimization/80631
* gcc.target/i386/avx2-pr80631.c: New test.

From-SVN: r255701

6 years agore PR tree-optimization/83410 (libgomp.graphite/force-parallel-4.c etc. FAIL)
Jeff Law [Fri, 15 Dec 2017 16:19:22 +0000 (09:19 -0700)]
re PR tree-optimization/83410 (libgomp.graphite/force-parallel-4.c etc. FAIL)

PR tree-optimization/83410
* tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
threads when parallelizing loops.

From-SVN: r255700

6 years agotree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields.
Jakub Jelinek [Fri, 15 Dec 2017 15:13:12 +0000 (16:13 +0100)]
tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields.

* tree-core.h (struct attribute_spec): Swap affects_type_identity and
handler fields.
* config/alpha/alpha.c (vms_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
* config/mips/mips.c (mips_attribute_table): Likewise.
* config/visium/visium.c (visium_attribute_table): Likewise.
* config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
* config/microblaze/microblaze.c (microblaze_attribute_table):
Likewise.
* config/spu/spu.c (spu_attribute_table): Likewise.
* config/mcore/mcore.c (mcore_attribute_table): Likewise.
* config/arc/arc.c (arc_attribute_table): Likewise.
* config/m68k/m68k.c (m68k_attribute_table): Likewise.
* config/v850/v850.c (v850_handle_interrupt_attribute,
v850_handle_data_area_attribute): Formatting fixes.
(v850_attribute_table): Swap affects_type_identity and handler
fields, adjust comments.
* config/m32r/m32r.c (m32r_attribute_table): Likewise.
* config/arm/arm.c (arm_attribute_table): Likewise.
* config/avr/avr.c (avr_attribute_table): Likewise.
* config/s390/s390.c (s390_attribute_table): Likewise.
* config/sh/sh.c (sh_attribute_table): Likewise.
* config/i386/i386.c (ix86_handle_cconv_attribute,
ix86_handle_callee_pop_aggregate_return): Formatting fixes.
(ix86_attribute_table): Swap affects_type_identity and handler
fields, adjust comments.
* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
* config/sparc/sparc.c (sparc_attribute_table): Likewise.
* config/m32c/m32c.c (m32c_attribute_table): Likewise.
* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
* config/ia64/ia64.c (ia64_attribute_table): Likewise.
* config/msp430/msp430.c (msp430_attribute_table): Likewise.
* config/rx/rx.c (rx_attribute_table): Likewise.
* config/cr16/cr16.c (cr16_attribute_table): Likewise.
* config/h8300/h8300.c (h8300_attribute_table): Likewise.
* config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
* config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
* config/bfin/bfin.c (bfin_attribute_table): Likewise.
* config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
* config/rl78/rl78.c (rl78_attribute_table): Likewise.
* config/nds32/nds32.c (nds32_attribute_table): Likewise.
* doc/plugins.texi (user_attr): Likewise.  Add NULL for
exclude.
* attribs.c (empty_attribute_table): Swap affects_type_identity and
handler fields.
(register_scoped_attributes, decl_attributes): Formatting fixes.
ada/
* gcc-interface/utils.c (gnat_internal_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
brig/
* brig-lang.c (brig_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
c-family/
* c-attribs.c (c_common_attribute_table,
c_common_format_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
cp/
* tree.c (cxx_attribute_table, std_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
fortran/
* f95-lang.c (gfc_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
lto/
* lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
testsuite/
* g++.dg/plugin/attribute_plugin.c (user_attr): Swap
affects_type_identity and handler fields, add NULL for exclude.

From-SVN: r255699

6 years ago[PR C++/59930] template friend classes & default args
Nathan Sidwell [Fri, 15 Dec 2017 15:04:59 +0000 (15:04 +0000)]
[PR C++/59930] template friend classes & default args

https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01055.html
PR c++/59930
* decl.c (xref_tag_1): Correct comments about template friends and
default args.
* friend.c (make_friend_class): Move comments concerning
self-friendliness to code dealing with such.
* pt.c (check_default_tmpl_args): Deal with template friend
classes too.
(push_template_decl_real): Check default args for non-function
template friends.

PR c++/59930
* g++.dg/cpp0x/temp_default4.C: Adjust diagnostic.
* g++.old-deja/g++.pt/friend23.C: Likewise.
* g++.old-deja/g++.pt/friend24.C: Delete.

From-SVN: r255698

6 years agore PR tree-optimization/83269 (Wrong constant folding)
Jakub Jelinek [Fri, 15 Dec 2017 14:37:52 +0000 (15:37 +0100)]
re PR tree-optimization/83269 (Wrong constant folding)

PR tree-optimization/83269
* fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
subtraction in arg0's type if type is signed and arg0 is unsigned.
Formatting fix.

* gcc.c-torture/execute/pr83269.c: New test.

From-SVN: r255697

6 years agore PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)
Jakub Jelinek [Fri, 15 Dec 2017 14:36:26 +0000 (15:36 +0100)]
re PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)

PR sanitizer/81281
* match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
convert? on @0 instead of convert.  Check type of @1, not @0.
((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
convert? on @0 instead of convert.  Check type of @1, not @0.
((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
only optimize if either both @1 and @2 types are narrower
precision, or both are wider or equal precision, and in the former
case only if both have undefined overflow.

* gcc.dg/pr81281-3.c: New test.

From-SVN: r255696

6 years agoexp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of the innermost...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 14:09:02 +0000 (14:09 +0000)]
exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of the innermost array instead of Esize of its component...

gcc/ada/

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

* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of
the innermost array instead of Esize of its component type to exclude
inappropriate array types, including packed array types.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Analyze_Input_Item): Allow concurrent types to appear
within the input list of Initializes. Remove the uses of Input_OK.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* exp_ch4.adb (Expand_N_In): Do not replace a membership test on a
scalar type with a validity test when the membership appears in a
predicate expression, to prevent a spurious error when predicate is
specified static.
* sem_ch13.adb (Build_Predicate_Functions): Add warning if a static
predicate, after constant-folding, reduces to True and is this
redundant.
* par-ch4.adb: Typo fixes and minor reformattings.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Ensure_Prior_Elaboration_Static): Mark the generated
with clause as being implicit for an instantiation in order to
circumvent an issue with 'W' and 'Z' line encodings in ALI files.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* sem_util.adb (Is_Potentially_Unevaluated): Detect further cases of
misuse of 'Old that appear within an expression that is potentially
unevaluated, when the prefix of the attribute does not statically
designate an object (e.g. a function call).

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Conformking_Types): Two incomplete types are conforming
when one of them is used as a generic actual, but only within an
instantiation.
* einfo.ads: Clarify use of flag Used_As_Generic_Actual.

2017-12-15  Justin Squirek  <squirek@adacore.com>

* sem_attr.adb (Resolve_Attribute): Modify check for aliased view on
prefix to use the prefix's original node to avoid looking at expanded
conversions for certain array types.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* sem_res.adb (Resolve_Membership_Op): Add warning on a membership
operation on a scalar type for which there is a user-defined equality
operator.

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

* doc/gnat_rm/implementation_defined_pragmas.rst: Add Ghost assertion
policy.

gcc/testsuite/

2017-12-15  Justin Squirek  <squirek@adacore.com>

* gnat.dg/aliasing4.adb: New testcase.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

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

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

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

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

* gnat.dg/component_size.adb: New testcase.

From-SVN: r255695

6 years agore PR sanitizer/83388 (reference statement index not found error with -fsanitize...
Richard Biener [Fri, 15 Dec 2017 13:43:30 +0000 (13:43 +0000)]
re PR sanitizer/83388 (reference statement index not found error with -fsanitize=null)

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

PR lto/83388
* internal-fn.def (IFN_NOP): Add.
* internal-fn.c (expand_NOP): Do nothing.
* lto-streamer-in.c (input_function): Instead of removing
sanitizer calls replace them with IFN_NOP calls.

* gcc.dg/lto/pr83388_0.c: New testcase.

From-SVN: r255694

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 13:23:10 +0000 (13:23 +0000)]
[multiple changes]

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Analyze_Initialization_Item): Remove the specialized
processing for a null initialization item. Such an item is always
illegal.

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

* types.ads, types.h, libgnat/a-except.adb, exp_ch11.adb
(PE_Build_In_Place_Mismatch): New reason code for raising when the
BIPalloc formal parameter is incorrect. This can happen if a compiler
bug causes a mismatch of build-in-place between caller and callee.
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
PE_Build_In_Place_Mismatch.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* exp_ch4.ads, exp_ch4.adb (Expand_N_Reduction_Expression): New
procedure.
* exp_util.adb (Insert_Actions): Handle N_Reduction_Expression.
* expander.adb (Expand): Call Expand_N_Reduction_Expression
* par-ch4.adb (P_Reduction_Expression): New procedure.
(P_Iterated_Component_Assoc_Or_Reduction): New precedure, extension of
P_Iterated_Component_Association.
(OK_Reduction_Expression_Parameter): New procedure.
(P_Aggregate_Or_Paren_Expr): Improve error message for malformed delta
aggregate.
* sem.adb (Analyze): Call Analyze_Reduction_Expression and
Analyze_Reduction_Expression_Parameter
* sinfo.ads, sinfo.adb: New node kinds N_Reduction_Expression and
N_Reduction_Expression_Parameter.
* sem_ch4.ads, sem_ch4.adb (Analyze_Reduction_Expression,
Analyze_Reduction_Expression_Parameter): New procedures.
* sem_res.adb (Resolve): Handle Reduction_Expression and
Reduction_Expression_Parameter
* sem_spark.adb: Dummy entries for Reduction_Expression and
Reduction_Expression_Parameter
* sprint.adb (Sprint_Node_Actual): Print Reduction_Expression,
Reduction_Expression_Parameter

From-SVN: r255693

6 years agoMake dse.c use offset/width instead of start/end
Richard Sandiford [Fri, 15 Dec 2017 13:12:25 +0000 (13:12 +0000)]
Make dse.c use offset/width instead of start/end

store_info and read_info_type in dse.c represented the ranges as
start/end, but a lot of the internal code used offset/width instead.
Using offset/width throughout fits better with the poly_int.h
range-checking functions.

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

gcc/
* dse.c (store_info, read_info_type): Replace begin and end with
offset and width.
(print_range): New function.
(set_all_positions_unneeded, any_positions_needed_p)
(check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
accordingly.
(record_store): Likewise.  Optimize the case in which all positions
are unneeded.
(get_stored_val): Replace read_begin and read_end with read_offset
and read_width.
(replace_read): Update call accordingly.

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

6 years agogimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
Bin Cheng [Fri, 15 Dec 2017 12:22:24 +0000 (12:22 +0000)]
gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.

* gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
(loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
(loop_cand::loop_cand): Initialize above members.
(loop_cand::supported_operations): Delete.
(loop_cand::can_interchange_p): Inline above function.
(loop_cand::classify_simple_reduction): Record number of constant
initialized simple reductions.
(should_interchange_loops): New parameters.  Check stmt cost of loops
to be interchange.
(tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
Update call to should_interchange_loops.
(should_interchange_loop_nest): Update call to
should_interchange_loops.

From-SVN: r255691

6 years agoeinfo.ads: Comment fix.
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:34:47 +0000 (11:34 +0000)]
einfo.ads: Comment fix.

gcc/ada/

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

* einfo.ads: Comment fix.

2017-12-15  Piotr Trojanek  <trojanek@adacore.com>

* s-vercon.adb: Minor style fixes.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Freeze_Expr_Types): Do not emit a freeze node for an
itype that is the type of a discriminant-dependent component.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Analyze_Part_Of): The context-specific portion of the
analysis is now directed to several specialized routines.
(Check_Part_Of_Abstract_State): New routine.
(Check_Part_Of_Concurrent_Type): New routine. Reimplement the checks
involving the item, the single concurrent type, and their respective
contexts.
* sem_res.adb (Resolve_Entity_Name): Potential constituents of a single
concurrent type are now recorded regardless of the SPARK mode.
* sem_util.adb (Check_Part_Of_Reference): Split some of the tests in
individual predicates.  A Part_Of reference is legal when it appears
within the statement list of the object's immediately enclosing
package.
(Is_Enclosing_Package_Body): New routine.
(Is_Internal_Declaration_Or_Body): New routine.
(Is_Single_Declaration_Or_Body): New routine.
(Is_Single_Task_Pragma): New routine.

gcc/testsuite/

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

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

From-SVN: r255690

6 years agore PR target/66488 (segfault on sizeof(long) < sizeof(void*) and large GCC memory...
Eric Botcazou [Fri, 15 Dec 2017 11:30:56 +0000 (11:30 +0000)]
re PR target/66488 (segfault on sizeof(long) < sizeof(void*) and large GCC memory usage)

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

        PR target/66488
        * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
        * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
        * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.

From-SVN: r255687

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:20:34 +0000 (11:20 +0000)]
[multiple changes]

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* gnat_ugn.texi: Regenerate.

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

* gnatvsn.ads: Minor comment fixes.

From-SVN: r255686

6 years agognat_and_program_execution.rst: Update section "Dynamic Stack Usage Analysis" to...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:16:14 +0000 (11:16 +0000)]
gnat_and_program_execution.rst: Update section "Dynamic Stack Usage Analysis" to include more details about...

gcc/ada/

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Update section "Dynamic
Stack Usage Analysis" to include more details about GNAT_STACK_LIMIT.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_util.adb (Add_Own_DIC): Ensure that the expression of the pragma
is available (Is_Verifiable_DIC_Pragma): Moved from Sem_Util.
* sem_util.adb (Has_Full_Default_Initialization):
Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
whether a type has full default initialization due to pragma
Default_Initial_Condition.
(Has_Fully_Default_Initializing_DIC_Pragma): New routine.
(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
* sem_util.ads (Has_Fully_Default_Initializing_DIC_Pragma): New
routine.
(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
* sem_warn.adb (Is_OK_Fully_Initialized):
Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
whether a type has full default initialization due to pragma
Default_Initial_Condition.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Match_Constituent): Do not quietly accept constants as
suitable constituents.
* exp_util.adb: Minor reformatting.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* exp_aggr.adb (In_Place_Assign_OK): Extend the predicate to recognize
an array aggregate in an allocator, when the designated type is
unconstrained and the upper bound of the aggregate belongs to the base
type of the index.

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

* exp_ch6.adb (Expand_N_Extended_Return_Statement,
Expand_Simple_Function_Return): Assert that the b-i-p-ness of the
caller and callee match.  Otherwise, we would need some substantial
changes to allow b-i-p calls non-b-i-p, and vice versa.

gcc/testsuite/

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* gnat.dg/dflt_init_cond.adb, gnat.dg/dflt_init_cond_pkg.ads: New
testcase.

From-SVN: r255685

6 years agogcc/ada/ChangeLog: add entries missing from previous commit
Pierre-Marie de Rodat [Fri, 15 Dec 2017 10:28:14 +0000 (10:28 +0000)]
gcc/ada/ChangeLog: add entries missing from previous commit

From-SVN: r255684

6 years agoexp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is a generic packag...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 10:21:24 +0000 (10:21 +0000)]
exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is a generic package body.

gcc/ada/

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is
a generic package body. Unnesting is only an issue when generating
code, and if the main unit is generic then nested instance bodies have
not been created and analyzed, and unnesting will crash in the absence
of those bodies,

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* inline.adb (Add_Inlined_Body): Do not add a function which is
completed by an expression function defined in the same context as the
initial declaration because the completing body is not in a package
body.
(Is_Non_Loading_Expression_Function): New routine.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* debug.adb: Move the functionality of -gnatdL to -gnatd_i. Restore
the behavior of -gnatdL from before revision 255412.
* sem_elab.adb: Update the section of compiler switches.
(Build_Call_Marker): Do not create a marker for a call which originates
from an expanded spec or body of an instantiated gener, does not invoke
a generic formal subprogram, the target is external to the instance,
and -gnatdL is in effect.
(In_External_Context): New routine.
(Process_Conditional_ABE_Activation_Impl): Update the uses of -gnatdL
and associated flag.
(Process_Conditional_ABE_Call): Update the uses of -gnatdL and
associated flag.
* switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch
-gnatd_i.
* exp_unst.adb: Minor typo fixes and edits.

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Possible_Freeze): Do not set Delayed_Freeze on an
subprogram instantiation, now that the enclosing wrapper package
carries an explicit freeze node. THis prevents freeze nodes for the
subprogram for appearing in the wrong scope. This is relevant when the
generic subprogram has a private or incomplete formal type and the
instance appears within a package that declares the actual type for the
instantiation, and that type has itself a delayed freeze.

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Removed references to
the environment variable GNAT_STACK_LIMIT from the Stack Overflow
Checking section as it is no longer used by any of our supported
targets.

gcc/testsuite/

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

* gnat.dg/expr_func_main.adb, gnat.dg/expr_func_pkg.ads,
gnat.dg/expr_func_pkg.adb: New testcase.

2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>

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

2017-12-15  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/subp_inst.adb, gnat.dg/subp_inst_pkg.adb,
gnat.dg/subp_inst_pkg.ads: New testcase.

From-SVN: r255683

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 09:44:22 +0000 (09:44 +0000)]
[multiple changes]

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

* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
Init_Assignment is rewritten, we need to set Assignment_OK on the new
node.  Otherwise, we will get spurious errors when initializing via
assignment statement.

2017-12-15  Arnaud Charlet  <charlet@adacore.com>

* exp_unst.adb (Visit_Node): Refine handling of 'Access to ignore non
relevant nodes.
(Has_Non_Null_Statements): Moved to sem_util for later reuse.

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

* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Fix comment.
* libgnat/s-fatgen.adb (Model): Use Machine attribute.
(Truncation): Likewise.

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

* exp_ch7.adb (Expand_Cleanup_Actions): Make sure the block and handled
statement sequence generated for certain extended return statements
have a Sloc that is not No_Location. Otherwise, the back end doesn't
set any location and ends up reading uninitialized variables.

From-SVN: r255680

6 years agotypes.ads, [...]: Partly revert r255414, committed by mistake.
Bob Duff [Fri, 15 Dec 2017 09:36:12 +0000 (09:36 +0000)]
types.ads, [...]: Partly revert r255414, committed by mistake.

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

* types.ads, exp_ch6.adb, libgnat/s-regexp.ads, opt.ads: Partly revert
r255414, committed by mistake.

From-SVN: r255679

6 years agoEnable VAES support [5/5]
Julia Koval [Fri, 15 Dec 2017 05:04:33 +0000 (06:04 +0100)]
Enable VAES support [5/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
__builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
* config/i386/sse.md (vaesenclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
_mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesenclast-2.c: New test.
* gcc.target/i386/avx512vl-aesenclast-2.c: Ditto.
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255676

6 years agoEnable VAES support [4/5]
Julia Koval [Fri, 15 Dec 2017 04:31:08 +0000 (05:31 +0100)]
Enable VAES support [4/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
__builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
* config/i386/sse.md (vaesenc_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
_mm_aesenc_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesenc-2.c: New test.
* gcc.target/i386/avx512vl-aesenc-2.c: Ditto.
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255675

6 years agoEnable VAES support [3/5]
Julia Koval [Fri, 15 Dec 2017 04:05:17 +0000 (05:05 +0100)]
Enable VAES support [3/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
__builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
* config/i386/sse.md (vaesdeclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
_mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesdeclast-2.c: New test.
* gcc.target/i386/avx512vl-aesdeclast-2.c
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255674

6 years agoFix ChangeLog entry date
Peter Bergner [Fri, 15 Dec 2017 03:46:02 +0000 (21:46 -0600)]
Fix ChangeLog entry date

From-SVN: r255673

6 years agoDaily bump.
GCC Administrator [Fri, 15 Dec 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255670

6 years agoPR libstdc++/83279 handle sendfile not copying entire file
Jonathan Wakely [Thu, 14 Dec 2017 21:49:03 +0000 (21:49 +0000)]
PR libstdc++/83279 handle sendfile not copying entire file

PR libstdc++/83279
* src/filesystem/std-ops.cc (do_copy_file): Handle sendfile not
copying entire file.

From-SVN: r255666

6 years agoPR libstdc++/68519 use native duration to avoid rounding errors
Jonathan Wakely [Thu, 14 Dec 2017 20:41:52 +0000 (20:41 +0000)]
PR libstdc++/68519 use native duration to avoid rounding errors

PR libstdc++/68519
* include/std/condition_variable (condition_variable::wait_for):
Convert duration to native clock's duration before addition.
* testsuite/30_threads/condition_variable/members/68519.cc: New test.

From-SVN: r255665

6 years agogimple-ssa-strength-reduction.c (analyze_increments): Distinguish replacement costs...
Bill Schmidt [Thu, 14 Dec 2017 20:40:21 +0000 (20:40 +0000)]
gimple-ssa-strength-reduction.c (analyze_increments): Distinguish replacement costs for constant strides from those for unknown strides.

2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gimple-ssa-strength-reduction.c (analyze_increments):
Distinguish replacement costs for constant strides from those for
unknown strides.

From-SVN: r255664

6 years ago* var-tracking.c (variable_tracking_main_1): Formatting fix.
Jakub Jelinek [Thu, 14 Dec 2017 20:12:38 +0000 (21:12 +0100)]
* var-tracking.c (variable_tracking_main_1): Formatting fix.

From-SVN: r255663

6 years agoinvoke.texi: Document -Wcast-function-type.
Bernd Edlinger [Thu, 14 Dec 2017 18:59:24 +0000 (18:59 +0000)]
invoke.texi: Document -Wcast-function-type.

gcc:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * doc/invoke.texi: Document -Wcast-function-type.
        * recog.h (stored_funcptr): Change signature.
        * tree-dump.c (dump_node): Avoid warning.
        * typed-splay-tree.h (typed_splay_tree): Avoid warning.

libcpp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * internal.h (maybe_print_line): Change signature.

c-family:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c.opt (Wcast-function-type): New warning option.
        * c-lex.c (get_fileinfo): Avoid warning.
        * c-ppoutput.c (scan_translation_unit_directives_only): Remove cast.

c:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-typeck.c (c_safe_arg_type_equiv_p,
        c_safe_function_type_cast_p): New function.
        (build_c_cast): Implement -Wcast-function-type.

cp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * decl2.c (start_static_storage_duration_function): Avoid warning.
        * typeck.c (cxx_safe_arg_type_equiv_p,
        cxx_safe_function_type_cast_p): New function.
        (build_reinterpret_cast_1): Implement -Wcast-function-type.

testsuite:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-c++-common/Wcast-function-type.c: New test.
        * g++.dg/Wcast-function-type.C: New test.

From-SVN: r255661

6 years agoMakefile.am (IFUNC_OPTIONS): Change aarch64 option from -march=armv8.1-a to -march...
Steve Ellcey [Thu, 14 Dec 2017 18:30:38 +0000 (18:30 +0000)]
Makefile.am (IFUNC_OPTIONS): Change aarch64 option from -march=armv8.1-a to -march=armv8-a+lse.

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

* Makefile.am (IFUNC_OPTIONS): Change aarch64
option from -march=armv8.1-a to -march=armv8-a+lse.
* configure.ac (*aarch64*): Check to see if
compiler understands -march=armv8-a+lse option.
* configure.tgt (*aarch64*): Only set try_ifunc
if compiler understands -march=armv8-a+lse option.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* configure: Regenerate.
* aclocal.m4: Regenerate.

From-SVN: r255659

6 years agoPatch for middle-end/PR79538
Qing Zhao [Thu, 14 Dec 2017 17:37:20 +0000 (17:37 +0000)]
Patch for middle-end/PR79538
missing -Wformat-overflow with %s and non-member array arguments

-Wformat-overflow uses the routine "get_range_strlen" to decide the
maximum string length, however, currently "get_range_strlen" misses
the handling of non-member arrays.

Adding the handling of non-member array resolves the issue.
Adding test case pr79538.c into gcc.dg.

During gcc bootstrap, 2 source files (c-family/c-cppbuiltin.c,
fortran/class.c) were detected new warnings by -Wformat-overflow
due to the new handling of non-member array in "get_range_strlen".
in order to avoid these new warnings and continue with bootstrap,
updating these 2 files to avoid the warnings.

in c-family/c-cppbuiltin.c, the warning is following:

../../latest_gcc_2/gcc/c-family/c-cppbuiltin.c:1627:15: note:
‘sprintf’ output 2 or more bytes (assuming 257) into a destination
of size 256
       sprintf (buf1, "%s=%s", macro, buf2);
       ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
in the above, buf1 and buf2 are declared as:
char buf1[256], buf2[256];

i.e, buf1 and buf2 have same size. adjusting the size of buf1 and
buf2 resolves the warning.

fortran/class.c has the similar issue as above. Instead of adjusting
size of the buffers, replacing sprintf with xasprintf is a better
solution for these cases.

From-SVN: r255654

6 years ago* gcc-interface/Makefile.in: Generalize support for symbolic traces.
Eric Botcazou [Thu, 14 Dec 2017 17:32:56 +0000 (17:32 +0000)]
* gcc-interface/Makefile.in: Generalize support for symbolic traces.

From-SVN: r255653

6 years agoPR libstdc++/83427 detect weak result type from noexcept functions
Jonathan Wakely [Thu, 14 Dec 2017 17:18:22 +0000 (17:18 +0000)]
PR libstdc++/83427 detect weak result type from noexcept functions

PR libstdc++/83427
* include/bits/refwrap.h (_Maybe_unary_or_binary_function): Move here
from <bits/std_function.h>.
(_Mem_fn_traits_base, _Mem_fn_traits): Move here, from <functional>.
(_Weak_result_type_impl, _Reference_wrapper_base): Deduce noexcept
for function types. Remove partial specializations for member
functions.
(_Weak_result_type_impl): Remove unused partial specializations for
non-referenceable function types and for references to functions.
(_Weak_result_type_memfun, _Reference_wrapper_base_memfun): New
helpers to handle member functions via _Mem_fn_traits.
(_Weak_result_type, reference_wrapper): Derive from new helpers.
* include/bits/std_function.h (_Maybe_unary_or_binary_function): Move
to <bits/refwrap.h>.
* include/std/functional (_Pack, _AllConvertible, _NotSame): Remove.
(_Mem_fn_traits_base, _Mem_fn_traits): Move to <bits/refwrap.h>.
* testsuite/20_util/bind/83427.cc: New test.
* testsuite/20_util/bind/refqual.cc: Add noexcept to functions and
check for weak result types.
* testsuite/20_util/reference_wrapper/83427.cc: New test.

From-SVN: r255651

6 years ago* gcc-interface/misc.c (default_pass_by_ref): Minor tweak.
Eric Botcazou [Thu, 14 Dec 2017 17:17:03 +0000 (17:17 +0000)]
* gcc-interface/misc.c (default_pass_by_ref): Minor tweak.

From-SVN: r255650

6 years agovrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)
David Malcolm [Thu, 14 Dec 2017 17:15:39 +0000 (17:15 +0000)]
vrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)

gcc/ChangeLog:
PR tree-optimization/83312
* domwalk.h (dom_walker::dom_walker): Fix typo in comment.
* tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
"val" param, and to cope with arbitrary basic blocks.
(find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
handle NULL_TREE for "val", dropping "bb" param.
(find_taken_edge_switch_expr): Make "switch_stmt" param const and
drop "bb" param.  Handle NULL_TREE for "val".
(find_case_label_for_value): Make "switch_stmt" param const.
* tree-vrp.c (class check_array_bounds_dom_walker): New subclass
of dom_walker.
(vrp_prop::check_all_array_refs): Reimplement as...
(check_array_bounds_dom_walker::before_dom_children): ...this new
vfunc.  Replace linear search through BB block list, excluding
those with non-executable in-edges via dominator walk.

gcc/testsuite/ChangeLog:
PR tree-optimization/83312
* gcc.dg/pr83312.c: New test case.

From-SVN: r255649

6 years agotrans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS to 0 on the callee if the...
Eric Botcazou [Thu, 14 Dec 2017 17:13:03 +0000 (17:13 +0000)]
trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS to 0 on the callee if the call is recursive.

* gcc-interface/trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS
to 0 on the callee if the call is recursive.

From-SVN: r255648

6 years agodecl.c (gnat_to_gnu_field): Do not set the alignment of the enclosing record type...
Eric Botcazou [Thu, 14 Dec 2017 17:03:16 +0000 (17:03 +0000)]
decl.c (gnat_to_gnu_field): Do not set the alignment of the enclosing record type if it is not already set.

* gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment
of the enclosing record type if it is not already set.

From-SVN: r255645

6 years ago[arm] Add -mverbose-cost-dump and de-verbosify cost dumps
Kyrylo Tkachov [Thu, 14 Dec 2017 15:53:36 +0000 (15:53 +0000)]
[arm] Add -mverbose-cost-dump and de-verbosify cost dumps

This patch adds an -mverbose-cost-dump option, similar to the one in aarch64.
It makes the RTX cost dump print the RTX we're costing in the backend, as well as its cost.
This can be distracting in other cost-related RTL dumps like combine's.

So now we don't dump the backend information by default, but provide the power-user option -mverbose-cost-dump
to enable the old verbose dumping.

This option is for GCC developers debugging the compiler only, so no documentation are added.
It's also trivially simple in functionality so no test is added either.

Bootstrapped and tested on arm-none-linux-gnueabihf.

Committed to trunk.

* config/arm/arm.opt (mverbose-cost-dump): New option.
* config/arm/arm.c (arm_rtx_costs): Use it.

From-SVN: r255644

6 years agore PR lto/81406 (ICE in check_die, at dwarf2out.c:6185)
Jakub Jelinek [Thu, 14 Dec 2017 15:26:00 +0000 (16:26 +0100)]
re PR lto/81406 (ICE in check_die, at dwarf2out.c:6185)

PR lto/81406
* gcc.dg/lto/pr81406_0.c: New test.

From-SVN: r255643

6 years agore PR tree-optimization/66974 (-Warray-bounds false positive with -O3)
Richard Biener [Thu, 14 Dec 2017 15:18:16 +0000 (15:18 +0000)]
re PR tree-optimization/66974 (-Warray-bounds false positive with -O3)

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

PR tree-optimization/66974
* gcc.dg/Warray-bounds-24.c: New testcase.

From-SVN: r255642

6 years agore PR tree-optimization/65258 (Wrong array bounds warning)
Richard Biener [Thu, 14 Dec 2017 15:08:09 +0000 (15:08 +0000)]
re PR tree-optimization/65258 (Wrong array bounds warning)

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

PR tree-optimization/65258
* gcc.dg/Warray-bounds-23.c: New testcase.

From-SVN: r255641

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Andreas Schwab [Thu, 14 Dec 2017 15:06:25 +0000 (15:06 +0000)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* reload1.c (emit_input_reload_insns): Skip debug markers.

From-SVN: r255640

6 years ago[compare-debug] use call loc for nop_endbr
Alexandre Oliva [Thu, 14 Dec 2017 15:03:09 +0000 (15:03 +0000)]
[compare-debug] use call loc for nop_endbr

We skip debug insns and notes after a call that needs a nop_endbr, but
since a debug insn could be the last in a block, it may affect the loc
in the emitted nop_endbr insn.  Although this has no effect on
codegen, it does mess with debug info a bit, and it causes
-fcompare-debug to fail for e.g. libsanitizer's
tsan/tsan_platform_linux.cc on x86_64.

So, pick the location of the call insn for the nop_endbr insn, to
avoid the line number differences in dumps, including -fcompare-debug
ones.

Also, we don't need to determine what the insert point would be unless
we're actually emitting the nop_endbr insn after the call, so
rearrange the code to avoid wasting cycles.

Finally, it seems like testing for barriers is a mistake.  We probably
never actually pass that test, for the barriers would hit BB_END
first.  If we did, we'd end up emitting the nop_endbr outside any BB,
even after the end of the function!  That would be Very Bad (TM).
Now, since the test as it is can't hurt, I figured I wouldn't change
the logic right now, just add a comment so that someone involved in
endbr stuff can have a second look and hopefully fix it.

for  gcc/ChangeLog

* config/i386/i386.c (rest_of_insert_endbranch): Use call loc
for its nop_endbr.

From-SVN: r255639

6 years ago[SFN] next/prev_nonnote_insn_bb are no more, even for ports
Alexandre Oliva [Thu, 14 Dec 2017 15:02:58 +0000 (15:02 +0000)]
[SFN] next/prev_nonnote_insn_bb are no more, even for ports

The patch that added _nondebug to next_ and prev_nonnote_insn_bb
failed to find and adjust uses within config.  Fixed.

for  gcc/ChangeLog

PR bootstrap/83396
* config/arc/arc.c (hwloop_optimize): Skip debug insns.
* config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
* config/sh/sh.c: Skip debug insns besides notes.
* config/sh/sh.md: Likewise.
* config/sh/sh_treg_combine.cc: Likewise.
* config/sh/sync.md: Likewise.

From-SVN: r255638

6 years agoRequire effective target weak_undefined for visibility-22.c
Tom de Vries [Thu, 14 Dec 2017 15:01:47 +0000 (15:01 +0000)]
Require effective target weak_undefined for visibility-22.c

2017-12-14  Tom de Vries  <tom@codesourcery.com>

* lib/target-supports.exp (check_effective_target_weak_undefined): New
proc.
* gcc.dg/visibility-22.c: Require effective target weak_undefined.

* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
Add item for weak_undefined.

From-SVN: r255637

6 years agore PR tree-optimization/67842 (Incorrect check in sese.h:bb_in_region)
Richard Biener [Thu, 14 Dec 2017 14:53:40 +0000 (14:53 +0000)]
re PR tree-optimization/67842 (Incorrect check in sese.h:bb_in_region)

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

PR tree-optimization/67842
* sese.h (bb_in_region): Remove #if 0'ed code.

From-SVN: r255636

6 years agore PR tree-optimization/83326 (SPEC CPU2017 648.exchange2_s ~6% performance regressio...
Richard Biener [Thu, 14 Dec 2017 14:32:24 +0000 (14:32 +0000)]
re PR tree-optimization/83326 (SPEC CPU2017 648.exchange2_s ~6% performance regression with r255267 (reproducer attached))

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

PR tree-optimization/83326
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
may_be_zero parameter and handle it by not marking the first
peeled copy as not exiting the loop.
(try_peel_loop): Likewise.
(canonicalize_loop_induction_variables): Use number_of_iterations_exit
to handle the case of constant or zero iterations and perform
loop header copying on-the-fly.

* gcc.dg/tree-ssa/pr81388-2.c: Adjust.

From-SVN: r255635

6 years agoTest whitespace handling in std::complex extraction
Jonathan Wakely [Thu, 14 Dec 2017 11:47:42 +0000 (11:47 +0000)]
Test whitespace handling in std::complex extraction

* testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
Add tests using noskipws.

From-SVN: r255632

6 years agogigi.h (pad_type_has_rm_size): Declare.
Eric Botcazou [Thu, 14 Dec 2017 11:47:24 +0000 (11:47 +0000)]
gigi.h (pad_type_has_rm_size): Declare.

* gcc-interface/gigi.h (pad_type_has_rm_size): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Do not build
a padding type for the alignment before validating the size.
Flip conditional construct and add a comment.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Make sure to
apply the exception for padded objects to the type of the object.
* gcc-interface/utils.c (hash_pad_type): New static function.
(lookup_and_insert_pad_type): Rename into...
(canonicalize_pad_type): ...this.  Call hash_pad_type, do only one
lookup with insertion and always return the canonical type.
(maybe_pad_type): Adjust to above changes.  Set debug type later.
(pad_type_has_rm_size): New predicate.
(set_reverse_storage_order_on_pad_type): Adjust to above changes.

From-SVN: r255631

6 years agoImprove std::complex test and move to sub-directory
Jonathan Wakely [Thu, 14 Dec 2017 11:28:41 +0000 (11:28 +0000)]
Improve std::complex test and move to sub-directory

* testsuite/26_numerics/complex/dr2714.cc: Move to ...
* testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
... Here. Remove duplicate header and dg-options. Check first invalid
character gets putback. Remove wchar_t test.

From-SVN: r255630

6 years agore PR middle-end/83415 (ICE during gimplification of assignment to read-only vector)
Richard Biener [Thu, 14 Dec 2017 11:13:34 +0000 (11:13 +0000)]
re PR middle-end/83415 (ICE during gimplification of assignment to read-only vector)

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

PR c/83415
c/
* c-fold.c (c_fully_fold_internal): Treat VIEW_CONVERT_EXPR
like REALPART_EXPR for the behavior of whether its operand
is an lvalue.

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

From-SVN: r255629

6 years agore PR tree-optimization/83418 (ICE in extract_range_for_var_from_comparison_expr...
Richard Biener [Thu, 14 Dec 2017 11:12:52 +0000 (11:12 +0000)]
re PR tree-optimization/83418 (ICE in extract_range_for_var_from_comparison_expr, at vr-values.c:448)

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

PR tree-optimization/83418
* vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
Instead of asserting we don't get unfolded comparisons deal with
them.

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

From-SVN: r255628

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Jakub Jelinek [Thu, 14 Dec 2017 11:02:37 +0000 (12:02 +0100)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
basic blocks.  Assert debug bind insns don't appear outside of bbs,
don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
bb.  Simplify.

* gcc.dg/pr83396.c: New test.

From-SVN: r255627

6 years agore PR tree-optimization/83198 (ICE in format_floating, at gimple-ssa-sprintf.c:1900)
Jakub Jelinek [Thu, 14 Dec 2017 11:01:17 +0000 (12:01 +0100)]
re PR tree-optimization/83198 (ICE in format_floating, at gimple-ssa-sprintf.c:1900)

PR tree-optimization/83198
* gimple-ssa-sprintf.c (format_floating): Set type solely based on
dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
value if arg is a REAL_CST with incompatible type.

* gcc.dg/pr83198.c: New test.
* gcc.dg/tree-ssa/pr83198.c: New test.

From-SVN: r255626

6 years ago[PATCH PR81228][AARCH64]Fix ICE by adding LTGT in vec_cmp<mode><v_int_equiv>
Sudakshina Das [Thu, 14 Dec 2017 10:35:38 +0000 (10:35 +0000)]
[PATCH PR81228][AARCH64]Fix ICE by adding LTGT in vec_cmp<mode><v_int_equiv>

This patch is a follow up to the existing discussions on
https://gcc.gnu.org/ml/gcc-patches/2017-07/msg01904.html
Bin had earlier submitted this patch to fix the ICE that
occurs because of the missing LTGT in aarch64-simd.md.
That discussion opened up a new bug report PR81647 for
an inconsistent behavior.

As discussed earlier on the gcc-patches discussion and on
the bug report, PR81647 was occurring because of how UNEQ
was handled in aarch64-simd.md rather than LTGT.
Since __builtin_islessgreater is guaranteed to not give an
FP exception but LTGT might, __builtin_islessgreater gets
converted to ~UNEQ very early on in fold_builtin_unordered_cmp.
Thus I will post a separate patch for correcting how UNEQ and
other unordered comparisons are handled in aarch64-simd.md.

This patch is only adding the missing LTGT to plug the ICE.

Testing done: Checked for regressions on bootstrapped
aarch64-none-linux-gnu and added a new compile time test case
that gives out LTGT to make sure it doesn't ICE

*** gcc/ChangeLog ***

2017-12-14  Sudakshina Das  <sudi.das@arm.com>
    Bin Cheng  <bin.cheng@arm.com>

PR target/81228
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
to CCFPEmode.
* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
LTGT.

*** gcc/testsuite/ChangeLog ***

2017-12-14  Sudakshina Das  <sudi.das@arm.com>

PR target/81228
* gcc.dg/pr81228.c: New.

Co-Authored-By: Bin Cheng <bin.cheng@arm.com>
From-SVN: r255625

6 years ago[AArch64] Specify fp16 support for Cortex-A55 and Cortex-A75
Kyrylo Tkachov [Thu, 14 Dec 2017 09:50:33 +0000 (09:50 +0000)]
[AArch64] Specify fp16 support for Cortex-A55 and Cortex-A75

The Cortex-A55 and Cortex-A75 processors support the fp16 extension.
We already specify them as such in the arm port.
This patch makes aarch64 consistent on this front.

Bootstrapped and tested on aarch64-none-linux-gnu.
Manually checked that compiling with aarch64-none-linux-gnu-gcc -mcpu=cortex-a55 -dM -E - < /dev/null
shows __ARM_FEATURE_FP16_VECTOR_ARITHMETIC and __ARM_FEATURE_FP16_SCALAR_ARITHMETIC being specified
as expected whereas they were not before this patch.

* config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.

From-SVN: r255624

6 years agore PR c++/79650 (ICE on invalid c++ code with label arithmetic in convert_nontype_arg...
Jakub Jelinek [Thu, 14 Dec 2017 08:16:51 +0000 (09:16 +0100)]
re PR c++/79650 (ICE on invalid c++ code with label arithmetic in convert_nontype_argument (pt.c:6515))

PR c++/79650
* pt.c (convert_nontype_argument): Diagnose
reduced_constant_expression_p expressions that aren't INTEGER_CST.

* g++.dg/template/pr79650.C: New test.

From-SVN: r255623

6 years agore PR libfortran/78549 (Very slow formatted internal file output)
Jerry DeLisle [Thu, 14 Dec 2017 02:30:49 +0000 (02:30 +0000)]
re PR libfortran/78549 (Very slow formatted internal file output)

2017-12-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR libgfortran/78549
        * io/inquire.c (inquire_via_unit): Adjust test for existence for
        pre-connected internal units.
        * io/transfer.c (finalize_transfer): When done with a transfer
        to internal units, free the format buffer and close the stream.
        (st_read_done): Delete freeing the stream, now handled using
        sclose in finalize_transfer. (st_write_done): Likewise.
        * io/unit.c (get_unit): Return NULL for special reserved unit
        numbers, signifying not accessible to the user.
        (init_units): Insert the two special internal units into the
        unit treap. This makes these unit structures available without
        further allocations for later use by internal unit I/O. These
        units are automatically deleted by normal program termination.
        * io/unix.c (mem_close): Add a guard check to protect from double free.

From-SVN: r255621

6 years agoDaily bump.
GCC Administrator [Thu, 14 Dec 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255620

6 years agopoly_int: add poly-int.h
Richard Sandiford [Thu, 14 Dec 2017 00:06:02 +0000 (00:06 +0000)]
poly_int: add poly-int.h

This patch adds a new "poly_int" class to represent polynomial integers
of the form:

  C0 + C1*X1 + C2*X2 ... + Cn*Xn

It also adds poly_int-based typedefs for offsets and sizes of various
precisions.  In these typedefs, the Ci coefficients are compile-time
constants and the Xi indeterminates are run-time invariants.  The number
of coefficients is controlled by the target and is initially 1 for all
ports.

Most routines can handle general coefficient counts, but for now a few
are specific to one or two coefficients.  Support for other coefficient
counts can be added when needed.

The patch also adds a new macro, IN_TARGET_CODE, that can be
set to indicate that a TU contains target-specific rather than
target-independent code.  When this macro is set and the number of
coefficients is 1, the poly-int.h classes define a conversion operator
to a constant.  This allows most existing target code to work without
modification.  The main exceptions are:

- values passed through ..., which need an explicit conversion to a
  constant

- ?: expression in which one arm ends up being a polynomial and the
  other remains a constant.  In these cases it would be valid to convert
  the constant to a polynomial and the polynomial to a constant, so a
  cast is needed to break the ambiguity.

The patch also adds a new target hook to return the estimated
value of a polynomial for costing purposes.

The patch also adds operator<< on wide_ints (it was already defined
for offset_int and widest_int).  I think this was originally excluded
because >> is ambiguous for wide_int, but << is useful for converting
bytes to bits, etc., so is worth defining on its own.  The patch also
adds operator% and operator/ for offset_int and widest_int, since those
types are always signed.  These changes allow the poly_int interface to
be more predictable.

I'd originally tried adding the tests as selftests, but that ended up
bloating cc1 by at least a third.  It also took a while to build them
at -O2.  The patch therefore uses plugin tests instead, where we can
force the tests to be built at -O0.  They still run in negligible time
when built that way.

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

gcc/
* poly-int.h: New file.
* poly-int-types.h: Likewise.
* coretypes.h: Include them.
(POLY_INT_CONVERSION): Define.
* target.def (estimated_poly_value): New hook.
* doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
* doc/tm.texi: Regenerate.
* doc/poly-int.texi: New file.
* doc/gccint.texi: Include it.
* doc/rtl.texi: Describe restrictions on subreg modes.
* Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
* genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
(emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
* targhooks.h (default_estimated_poly_value): Declare.
* targhooks.c (default_estimated_poly_value): New function.
* target.h (estimated_poly_value): Likewise.
* wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
(wi::unary_traits): Delete.
(wi::binary_traits::signed_shift_result_type): Define for
offset_int << HOST_WIDE_INT, etc.
(generic_wide_int::operator <<=): Define for all types and use
wi::lshift instead of <<.
(wi::hwi_with_prec): Add a default constructor.
(wi::ints_for): New class.
(operator <<): Define for all wide-int types.
(operator /): New function.
(operator %): Likewise.
* selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
(ASSERT_MAYBE_NE_AT): New macros.

gcc/testsuite/
* gcc.dg/plugin/poly-int-tests.h,
gcc.dg/plugin/poly-int-test-1.c,
gcc.dg/plugin/poly-int-01_plugin.c,
gcc.dg/plugin/poly-int-02_plugin.c,
gcc.dg/plugin/poly-int-03_plugin.c,
gcc.dg/plugin/poly-int-04_plugin.c,
gcc.dg/plugin/poly-int-05_plugin.c,
gcc.dg/plugin/poly-int-06_plugin.c,
gcc.dg/plugin/poly-int-07_plugin.c: New tests.
* gcc.dg/plugin/plugin.exp: Run them.

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

6 years agore PR middle-end/78468 (libgomp.c/reduction-10.c and many more FAIL)
Eric Botcazou [Wed, 13 Dec 2017 23:16:56 +0000 (23:16 +0000)]
re PR middle-end/78468 (libgomp.c/reduction-10.c and many more FAIL)

PR middle-end/78468
* emit-rtl.c (init_emit): Remove ??? comment.
* explow.c (get_dynamic_stack_size): Take known alignment of stack
pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
* config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
alignment of 3 virtual registers to BITS_PER_WORD.

* config/sparc/sparc.c (sparc_compute_frame_size): Simplify.

Co-Authored-By: Dominik Vogt <vogt@linux.vnet.ibm.com>
From-SVN: r255616

6 years agoppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
Peter Bergner [Wed, 13 Dec 2017 21:20:51 +0000 (15:20 -0600)]
ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.

gcc/
* config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
* config/rs6000/rs6000.c (cpu_supports_info): Use it.

gcc/testsuite/
* gcc.target/powerpc/cpu-builtin-1.c (htm-no-suspend): Add test.

From-SVN: r255614

6 years agore PR c++/81061 (ICE modifying read-only variable)
Paolo Carlini [Wed, 13 Dec 2017 20:29:11 +0000 (20:29 +0000)]
re PR c++/81061 (ICE modifying read-only variable)

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

PR c++/81061
* typeck.c (cp_build_modify_expr): Upon cxx_readonly_error
immediately return error_mark_node.

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

PR c++/81061
* g++.dg/other/const5.C: New.

From-SVN: r255613

6 years ago[SFN] don't eliminate regs in markers
Alexandre Oliva [Wed, 13 Dec 2017 19:09:45 +0000 (19:09 +0000)]
[SFN] don't eliminate regs in markers

Eliminate regs in debug bind insns, but not in markers.

for  gcc/ChangeLog

PR bootstrap/83396
* reload1.c (eliminate_regs_in_insn): Skip debug markers.

From-SVN: r255612

6 years agotree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of...
Jakub Jelinek [Wed, 13 Dec 2017 18:48:23 +0000 (19:48 +0100)]
tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of debug begin stmt markers appear...

* tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
with the exception of debug begin stmt markers appear before
labels.

From-SVN: r255611

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Jakub Jelinek [Wed, 13 Dec 2017 18:47:45 +0000 (19:47 +0100)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* final.c (rest_of_handle_final): Call variable_tracking_main only
if !flag_var_tracking.

From-SVN: r255610

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Alexandre Oliva [Wed, 13 Dec 2017 18:46:43 +0000 (18:46 +0000)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
PR debug/83391
* tree-cfgcleanup.c (remove_forwarder_block): Keep after
labels debug stmts that can only appear after labels.

* gcc.dg/torture/pr83396.c: New test.
* g++.dg/torture/pr83391.C: New test.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r255609

6 years agoPR libstdc++/59568 fix error handling for std::complex stream extraction
Jonathan Wakely [Wed, 13 Dec 2017 17:02:14 +0000 (17:02 +0000)]
PR libstdc++/59568 fix error handling for std::complex stream extraction

PR libstdc++/59568
* include/std/complex (operator>>): Implement proposed resolution to
LWG 2714. Use putback if and only if a character has been successfully
extracted but isn't a delimiter. Use ctype::widen and traits::eq when
testing if extracted characters match delimiters.
* testsuite/26_numerics/complex/dr2714.cc: New test.

From-SVN: r255608