platform/upstream/gcc.git
7 years agoarm/gcc: Tighten checks in check_effective_target_freorder
Andrew Burgess [Wed, 30 Nov 2016 11:38:46 +0000 (11:38 +0000)]
arm/gcc: Tighten checks in check_effective_target_freorder

In check_effective_target_freorder we check to see if the target
supports -freorder-blocks-and-partition.  However we disable
-freorder-blocks-and-partition when -fprofile-use is not supplied so for
some targets we'll not see any message about lack of support for
-freorder-blocks-and-partition unless -fprofile-use is also passed.

This commit extends check_effective_target_freorder to first try
-freorder-blocks-and-partition on its own, then try -fprofile-use and
-freorder-blocks-and-partition.

gcc/testsuite/ChangeLog:

* lib/target-supports.exp (check_effective_target_freorder): Check
additional case.

From-SVN: r243009

7 years agore PR lto/78562 (Wrong warning for built-in functions with -flto)
Georg-Johann Lay [Wed, 30 Nov 2016 11:08:37 +0000 (11:08 +0000)]
re PR lto/78562 (Wrong warning for built-in functions with -flto)

gcc/lto/
PR lto/78562
* lto-symtab.c (lto_symtab_merge_decls_2): Don't diagnose type
mismatch if the two types are built-in.

From-SVN: r243008

7 years agoarc: Avoid store/load pipeline hazard
Andrew Burgess [Wed, 30 Nov 2016 11:08:06 +0000 (11:08 +0000)]
arc: Avoid store/load pipeline hazard

ARC700 targets have a store/load pipeline hazard, if we load within 2
cycles of a store, and the load/store are at the same address, then we
pay a multi-cycle penalty.

This commit avoids this by inserting nop instructions between the store
and the load.

gcc/ChangeLog:

* config/arc/arc-protos.h (arc_store_addr_hazard_p): Declare.
* config/arc/arc.c (arc_store_addr_hazard_p): New function.
(workaround_arc_anomaly): Call arc_store_addr_hazard_p for ARC700.
* config/arc/arc700.md: Add define_bypass for store/load.

gcc/testsuite/ChangeLog:

* gcc.target/arc/arc700-stld-hazard.c: New file.

From-SVN: r243007

7 years agoImplement LWG 2534, Constrain rvalue stream operators.
Ville Voutilainen [Wed, 30 Nov 2016 09:59:50 +0000 (11:59 +0200)]
Implement LWG 2534, Constrain rvalue stream operators.

* include/std/istream (__is_convertible_to_basic_istream): New.
(__is_extractable): Likewise.
(operator>>(basic_istream<_CharT, _Traits>&&, _Tp&&)):
Turn the stream parameter into a template parameter
and constrain.
* include/std/ostream (__is_convertible_to_basic_ostream): New.
(__is_insertable): Likewise.
(operator<<(basic_ostream<_CharT, _Traits>&&, const _Tp&)):
Turn the stream parameter into a template parameter
and constrain.
* testsuite/27_io/basic_istream/extractors_other/char/4.cc: New.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc:
Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/6.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc: Likewise.

From-SVN: r243006

7 years agore PR fortran/78592 (ICE in gfc_find_specific_dtio_proc, at fortran/interface.c:4939)
Janus Weil [Wed, 30 Nov 2016 09:50:04 +0000 (10:50 +0100)]
re PR fortran/78592 (ICE in gfc_find_specific_dtio_proc, at fortran/interface.c:4939)

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

PR fortran/78592
* interface.c (gfc_find_specific_dtio_proc): Rearrange code to avoid
dereferencing a null pointer.

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

PR fortran/78592
* gfortran.dg/dtio_18.f90: New test case.

From-SVN: r243005

7 years agoIntroduce -fdump-ipa-clones dump output
Martin Liska [Wed, 30 Nov 2016 09:28:19 +0000 (10:28 +0100)]
Introduce -fdump-ipa-clones dump output

* cgraph.c (symbol_table::initialize): Initialize
ipa_clones_dump_file.
(cgraph_node::remove): Report to ipa_clones_dump_file.
* cgraph.h: Add new argument (suffix) to cloning methods.
* cgraphclones.c (dump_callgraph_transformation): New function.
(cgraph_node::create_clone): New argument.
(cgraph_node::create_virtual_clone): Likewise.
(cgraph_node::create_version_clone): Likewise.
* dumpfile.c: Add .ipa-clones dump file.
* dumpfile.h (enum tree_dump_index): Add TDI_clones
* ipa-inline-transform.c (clone_inlined_nodes): Report operation
to dump_callgraph_transformation.

From-SVN: r243004

7 years agoSupport nested functions (PR sanitizer/78541).
Martin Liska [Wed, 30 Nov 2016 09:26:51 +0000 (10:26 +0100)]
Support nested functions (PR sanitizer/78541).

PR sanitizer/78541
* gcc.dg/asan/pr78541-2.c: New test.
* gcc.dg/asan/pr78541.c: New test.
PR sanitizer/78541
* asan.c (asan_expand_mark_ifn): Properly
select a VAR_DECL from FRAME.* component reference.

From-SVN: r243003

7 years agoAdd missing file
Martin Liska [Wed, 30 Nov 2016 09:26:03 +0000 (09:26 +0000)]
Add missing file

From-SVN: r243002

7 years ago[libstdc++, testsuite] Add dg-require-thread-fence
Christophe Lyon [Wed, 30 Nov 2016 08:49:01 +0000 (08:49 +0000)]
[libstdc++, testsuite] Add dg-require-thread-fence

2016-11-30  Christophe Lyon  <christophe.lyon@linaro.org>

* testsuite/experimental/type_erased_allocator/2.cc: Add
dg-require-thread-fence.

From-SVN: r243001

7 years agosimplify-rtx: Add missing line for previous commit (PR78583)
Segher Boessenkool [Wed, 30 Nov 2016 08:41:26 +0000 (09:41 +0100)]
simplify-rtx: Add missing line for previous commit (PR78583)

The comment for the added case to simplify_truncation reads

  /* Turn (truncate:M1 (*_extract:M2 (reg:M2) (len) (pos))) into
     (*_extract:M1 (truncate:M1 (reg:M2)) (len) (pos')) if possible without
     changing len.  */

but I forgot to check the two modes M2 are actually the same.

PR rtl-optimization/78583
* simplify-rtx.c (simplify_truncation): Add check missing from the
previous commit.

From-SVN: r243000

7 years agocombine: Don't mess with subregs of floating point (PR78590)
Segher Boessenkool [Wed, 30 Nov 2016 08:24:59 +0000 (09:24 +0100)]
combine: Don't mess with subregs of floating point (PR78590)

PR78590 shows a problem in change_zero_ext, where we change a zero_extend
of a subreg to a logical and.  We should only do this if the thing we are
taking the subreg of is a scalar integer, otherwise we will take a subreg
of (e.g.) a float in a different size, which is nonsensical and hits an
assert.

PR rtl-optimization/78590
* combine.c (change_zero_ext): Transform zero_extend of subregs only
if the subreg_reg is a scalar integer mode.

From-SVN: r242999

7 years agore PR tree-optimization/78586 (Wrong code caused by printf-return-value)
Jakub Jelinek [Wed, 30 Nov 2016 08:01:47 +0000 (09:01 +0100)]
re PR tree-optimization/78586 (Wrong code caused by printf-return-value)

PR tree-optimization/78586
* gimple-ssa-sprintf.c (format_integer): Use TYPE_MAX_VALUE or
TYPE_MIN_VALUE or build_all_ones_cst instead of folding LSHIFT_EXPR.
Don't build_int_cst min/max twice.  Formatting fix.

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

From-SVN: r242998

7 years agoFix PR78588 - rtlanal.c:5210:38: runtime error: shift exponent 4294967295 is too...
Markus Trippelsdorf [Wed, 30 Nov 2016 07:30:55 +0000 (07:30 +0000)]
Fix PR78588 - rtlanal.c:5210:38: runtime error: shift exponent 4294967295 is too large for 64-bit type

Building gcc with -fsanitize=undefined shows:
 rtlanal.c:5210:38: runtime error: shift exponent 4294967295 is too large for 64-bit type 'long unsigned int'

This happens because if_then_else_cond() in combine.c calls
num_sign_bit_copies() in rtlanal.c with mode==BLKmode.

5205   bitwidth = GET_MODE_PRECISION (mode);
5206   if (bitwidth > HOST_BITS_PER_WIDE_INT)
5207     return 1;
5208
5209   nonzero = nonzero_bits (x, mode);
5210   return nonzero & (HOST_WIDE_INT_1U << (bitwidth - 1))
5211          ? 1 : bitwidth - floor_log2 (nonzero) - 1;

This causes (bitwidth - 1) to wrap around.

PR rtl-optimization/78588
* combine.c (if_then_else_cond): Also guard against BLKmode.
* rtlanal.c (num_sign_bit_copies1): Add assert.

From-SVN: r242997

7 years agore PR fortran/78573 ([OOP] ICE in resolve_component, at fortran/resolve.c:13405)
Janus Weil [Wed, 30 Nov 2016 07:25:36 +0000 (08:25 +0100)]
re PR fortran/78573 ([OOP] ICE in resolve_component, at fortran/resolve.c:13405)

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

PR fortran/78573
* decl.c (build_struct): On error, return directly and do not build
class symbol.

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

PR fortran/78573
* gfortran.dg/class_61.f90: New test case.

From-SVN: r242996

7 years agoarc-common.c (arc_handle_option): Remove unused variables.
Jeff Law [Wed, 30 Nov 2016 04:37:10 +0000 (21:37 -0700)]
arc-common.c (arc_handle_option): Remove unused variables.

        * common/config/arc/arc-common.c (arc_handle_option): Remove unused
        variables.

From-SVN: r242994

7 years agolra-constraints.c (check_and_process_move): Constrain the range of DCLASS and SCLASS...
Jeff Law [Wed, 30 Nov 2016 04:15:55 +0000 (21:15 -0700)]
lra-constraints.c (check_and_process_move): Constrain the range of DCLASS and SCLASS to avoid false positive out of bounds...

* lra-constraints.c (check_and_process_move): Constrain the
range of DCLASS and SCLASS to avoid false positive out of bounds
array index warning.

From-SVN: r242993

7 years agoruntime: fixes for -buildmode=c-archive
Ian Lance Taylor [Wed, 30 Nov 2016 02:09:24 +0000 (02:09 +0000)]
runtime: fixes for -buildmode=c-archive

    With -buildmode=c-archive, initsig is called before the memory
    allocator has been initialized.  The code was doing a memory
    allocation because of the call to funcPC(sigtramp).  When escape
    analysis is fully implemented, that call should not allocate.  For
    now, finesse the issue by calling a C function to get the C function
    pointer value of sigtramp.

    When returning from a call from C to a Go function, a deferred
    function is run to go back to syscall mode.  When the call occurs on a
    non-Go thread, that call sets g to nil, making it impossible to add
    the _defer struct back to the pool.  Just drop it and let the garbage
    collector clean it up.

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

From-SVN: r242992

7 years agoRemove stray character from install.texi
David Malcolm [Wed, 30 Nov 2016 01:23:44 +0000 (01:23 +0000)]
Remove stray character from install.texi

gcc/ChangeLog:
* doc/install.texi (--with-target-bdw-gc): Remove stray '@'.

From-SVN: r242991

7 years agosubstring locations and # line directives (PR preprocessor/78569)
David Malcolm [Wed, 30 Nov 2016 01:13:37 +0000 (01:13 +0000)]
substring locations and # line directives (PR preprocessor/78569)

The ICE in PR preprocessor/78569 appears to be due to an attempt to
generate substring locations in a .i file where the underlying .c file
has changed since the .i file was generated.

This can't work, so it seems safest for the on-demand substring
locations to be unavailable for such files, falling back to
"whole string" locations for such cases.

gcc/ChangeLog:
PR preprocessor/78569
* input.c (get_substring_ranges_for_loc): Fail gracefully if
line directives were present.

gcc/testsuite/ChangeLog:
PR preprocessor/78569
* gcc.dg/format/pr78569.c: New test case.

From-SVN: r242990

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

From-SVN: r242988

7 years agoMakefile.def: Remove reference to boehm-gc target module.
Matthias Klose [Wed, 30 Nov 2016 00:12:45 +0000 (00:12 +0000)]
Makefile.def: Remove reference to boehm-gc target module.

<toplevel>

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

        * Makefile.def: Remove reference to boehm-gc target module.
        * configure.ac: Include pkg.m4, check for --with-target-bdw-gc
        options and for the bdw-gc pkg-config module.
        * configure: Regenerate.
        * Makefile.in: Regenerate.

gcc/

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

        * doc/install.texi: Document configure options --enable-objc-gc
        and --with-target-bdw-gc.

config/

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

        * pkg.m4: New file.

libobjc/

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

        * configure.ac (--enable-objc-gc): Allow to configure with a
        system provided boehm-gc.
        * configure: Regenerate.
        * Makefile.in (OBJC_BOEHM_GC_LIBS): Get value from configure.
        * gc.c: Include system bdw-gc headers.
        * memory.c: Likewise
        * objects.c: Likewise

boehm-gc/

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

        Remove

From-SVN: r242985

7 years agore PR target/78594 (Bug in November 11th, 2016 change to rs6000.md)
Michael Meissner [Wed, 30 Nov 2016 00:05:46 +0000 (00:05 +0000)]
re PR target/78594 (Bug in November 11th, 2016 change to rs6000.md)

2016-11-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/78594
* config/rs6000/rs6000.md (mov<mode>_internal, QHI iterator): Add
'x' to stxsi<wd>x print pattern, so that QImode and HImode values
residing in traditional altivec registers can be stored
correctly.

From-SVN: r242983

7 years agoxtensa: Fix PR target/78603
Max Filippov [Tue, 29 Nov 2016 22:22:13 +0000 (22:22 +0000)]
xtensa: Fix PR target/78603

2016-11-29  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.c (hwloop_optimize): Don't emit zero
overhead loop start between a call and its CALL_ARG_LOCATION
note.

From-SVN: r242979

7 years agoavoid false positives on ILP32 targets.
Martin Sebor [Tue, 29 Nov 2016 21:56:57 +0000 (21:56 +0000)]
avoid false positives on ILP32 targets.

gcc/testsuite/ChangeLog:

avoid false positives on ILP32 targets.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.

From-SVN: r242977

7 years ago* config/bfin/linux.h (CPP_SPEC): Define.
Waldemar Brodkorb [Tue, 29 Nov 2016 21:41:07 +0000 (21:41 +0000)]
* config/bfin/linux.h (CPP_SPEC): Define.

From-SVN: r242976

7 years agoPR tree-optimization/78512 - [7 Regression] r242674 miscompiles Linux kernel
Martin Sebor [Tue, 29 Nov 2016 21:08:02 +0000 (21:08 +0000)]
PR tree-optimization/78512 - [7 Regression] r242674 miscompiles Linux kernel

gcc/ChangeLog:

PR tree-optimization/78512
* config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Remove.
* config/rs6000/linux.h: Same.
* config/rs6000/linux64.h: Same.
* config/sol2.h: Same.
* config/sol2.c (solaris_printf_pointer_format): Remove.
* doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Remove.
* doc/tm.texi: Regenerate.
* gimple-ssa-sprintf.c (format_pointer): Rempove.
(pass_sprintf_length::compute_format_length): Return bool.
(pass_sprintf_length::handle_gimple_call): Adjust.
* target.def (printf_pointer_format): Remove.
* targhooks.c (default_printf_pointer_format): Remove.
(linux_printf_pointer_format): Same.
* targhooks.h (default_printf_pointer_format): Remove.
(linux_printf_pointer_format, solaris_printf_pointer_format): Same.

gcc/testsuite/ChangeLog:

PR tree-optimization/78512
* gcc.dg/tree-ssa/builtin-sprintf-6.c: Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Remove test cases.

From-SVN: r242975

7 years agosse.md (UNSPEC_MASKOP): Move from i386.md.
Uros Bizjak [Tue, 29 Nov 2016 19:26:49 +0000 (20:26 +0100)]
sse.md (UNSPEC_MASKOP): Move from i386.md.

* config/i386/sse.md (UNSPEC_MASKOP): Move from i386.md.
(mshift): Ditto.
(SWI1248_AVX512BWDQ): Ditto.
(SWI1248_AVX512BW): Ditto.
(k<any_logic:code><mode>): Ditto.
(kandn<mode>): Ditto.
(kxnor<mode>): Ditto.
(knot<mode>): Ditto.
(*k<any_lshift:code><mode>): Ditto.
(kortestzhi, kortestchi): Ditto.
(kunpckhi, kunpcksi, kunpckdi): Ditto.

testsuite/ChangeLog:

* gcc.target/i386/avx512f-kmovw-1.c (avx512f_test):
Force value through k register.

From-SVN: r242971

7 years agotree-vrp.c (simplify_stmt_using_ranges): Use boolean_type_node for the EQ_EXPR.
Andrew Pinski [Tue, 29 Nov 2016 19:16:15 +0000 (19:16 +0000)]
tree-vrp.c (simplify_stmt_using_ranges): Use boolean_type_node for the EQ_EXPR.

2016-11-29  Andrew Pinski  <apinski@cavium.com>

        * tree-vrp.c (simplify_stmt_using_ranges): Use boolean_type_node
        for the EQ_EXPR.

From-SVN: r242970

7 years agore PR target/71331 (target-tilegx: nested-function-4.c: r10 is conflict which is...
Chen Gang [Tue, 29 Nov 2016 18:33:20 +0000 (18:33 +0000)]
re PR target/71331 (target-tilegx: nested-function-4.c: r10 is conflict which is both in function frame and in parameter.)

PR target/71331
* config/tilegx/tilegx.c (tilegx_function_profiler): Save r10
to stack before call mcount.
(tilegx_can_use_return_insn_p): Clean up code.

From-SVN: r242969

7 years agore PR libstdc++/68838 (AIX 32 bit wchar_t testsuite failures)
David Edelsohn [Tue, 29 Nov 2016 17:50:27 +0000 (17:50 +0000)]
re PR libstdc++/68838 (AIX 32 bit wchar_t testsuite failures)

PR libstdc++/68838
* testsuite/lib/libstdc++.exp (DEFAULT_CXXFLAGS): Add -Wl,-bmaxdata on AIX.
* testsuite/23_containers/vector/profile/vector.cc: Remove
dg-additional-options.

From-SVN: r242967

7 years agoavr-arch.h (avr_mcu_t): Add flash_size member.
Pitchumani Sivanupandi [Tue, 29 Nov 2016 16:35:43 +0000 (16:35 +0000)]
avr-arch.h (avr_mcu_t): Add flash_size member.

* config/avr/avr-arch.h (avr_mcu_t): Add flash_size member.
* config/avr/avr-devices.c(avr_mcu_types): Add flash size info.
* config/avr/avr-mcu.def: Likewise.
* config/avr/gen-avr-mmcu-specs.c (print_mcu): Remove hard-coded prefix
check to find wrap-around value, instead use MCU flash size. For 8k flash
devices, update link_pmem_wrap spec string to add --pmem-wrap-around=8k.
* config/avr/specs.h: Remove link_pmem_wrap from LINK_RELAX_SPEC and
add to linker specs (LINK_SPEC) directly.

From-SVN: r242966

7 years agospellcheck bugfixes: don't offer the goal string as a suggestion
David Malcolm [Tue, 29 Nov 2016 16:25:01 +0000 (16:25 +0000)]
spellcheck bugfixes: don't offer the goal string as a suggestion

gcc/cp/ChangeLog:
PR c++/77922
* name-lookup.c (lookup_name_fuzzy): Filter out reserved words
that were filtered out by init_reswords.

gcc/ChangeLog:
PR c++/72774
PR c++/72786
PR c++/77922
PR c++/78313
* spellcheck.c (selftest::test_find_closest_string): Verify that
we don't offer the goal string as a suggestion.
* spellcheck.h (best_match::get_best_meaningful_candidate): Don't
offer the goal string as a suggestion.

gcc/testsuite/ChangeLog:
PR c++/72774
PR c++/72786
PR c++/77922
PR c++/78313
* g++.dg/spellcheck-c++-11-keyword.C: New test case.
* g++.dg/spellcheck-macro-ordering.C: New test case.
* g++.dg/spellcheck-pr78313.C: New test case.

From-SVN: r242965

7 years ago* cp-demangle.c (d_print_comp_inner): Fix parameter indentation.
Nathan Sidwell [Tue, 29 Nov 2016 15:28:52 +0000 (15:28 +0000)]
* cp-demangle.c (d_print_comp_inner): Fix parameter indentation.

From-SVN: r242963

7 years ago2016-11-29 Tamar Christina <tamar.christina@arm.com>
Tamar Christina [Tue, 29 Nov 2016 14:53:46 +0000 (14:53 +0000)]
2016-11-29  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
(AARCH64_ONLY, CHECK_CRYPTO): New macros.
(Poly64x1_t, Poly64x2_t): Added types.
* gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
(vmov_n_p64, vmovq_n_p64): Added.
(vld2_lane_p64, vld2q_lane_p64): Likewise.
(vld3_lane_p64, vld3q_lane_p64): Likewise.
(vld4_lane_p64, vld4q_lane_p64): Likewise.
(vst2_lane_p64, vst2q_lane_p64): Likewise.
(vst3_lane_p64, vst3q_lane_p64): Likewise.
(vst4_lane_p64, vst4q_lane_p64): Likewise.
(vget_lane_p64, vgetq_lane_p64): Likewise.
(vget_high_p64): Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c:
Added AArch64 flags.
(vreint_vector, vreint_vector_res): Moved to header.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p64.c:
Added Aarch64 flags.
(vreint_vector, vreint_vector_res): Moved to header.

From-SVN: r242962

7 years ago[ARC] Fix compact casesi option.
Claudiu Zissulescu [Tue, 29 Nov 2016 14:26:28 +0000 (15:26 +0100)]
[ARC] Fix compact casesi option.

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

        * config/arc/arc.c (arc_override_options): Avoid selection of
        compact casesi for ARCv2.

From-SVN: r242961

7 years ago[multiple changes]
Janus Weil [Tue, 29 Nov 2016 14:15:29 +0000 (15:15 +0100)]
[multiple changes]

2016-11-29  Tobias Burnus  <burnus@net-b.de>

PR fortran/58175
* resolve.c (gfc_resolve_finalizers): Properly detect scalar finalizers.

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

PR fortran/58175
* gfortran.dg/finalize_30.f90: New test case.

From-SVN: r242960

7 years agotree-cfg.c (lower_phi_internal_fn): Do not look for further PHIs after a regular...
Richard Biener [Tue, 29 Nov 2016 14:01:32 +0000 (14:01 +0000)]
tree-cfg.c (lower_phi_internal_fn): Do not look for further PHIs after a regular stmt.

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

* tree-cfg.c (lower_phi_internal_fn): Do not look for further
PHIs after a regular stmt.
(stmt_starts_bb_p): PHIs not preceeded by a PHI or a label
start a new BB.

From-SVN: r242959

7 years agoMake one extra BB to prevent PHI argument clash (PR
Martin Liska [Tue, 29 Nov 2016 13:20:00 +0000 (14:20 +0100)]
Make one extra BB to prevent PHI argument clash (PR

PR gcov-profile/78582
* gcc.dg/pr78582.c: New test.
PR gcov-profile/78582
* tree-profile.c (gimple_gen_time_profiler): Make one extra BB
to prevent PHI argument clash.

From-SVN: r242958

7 years agoRemove r242480 from libsanitizer/LOCAL_PATCHES
Markus Trippelsdorf [Tue, 29 Nov 2016 13:13:31 +0000 (13:13 +0000)]
Remove r242480 from libsanitizer/LOCAL_PATCHES

The fix is now upstream.

* LOCAL_PATCHES: Remove r242480.

From-SVN: r242957

7 years ago[ARC] [COMMITTED] Fix typo in arc.opt
Claudiu Zissulescu [Tue, 29 Nov 2016 12:42:22 +0000 (13:42 +0100)]
[ARC] [COMMITTED] Fix typo in arc.opt

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

        * config/arc/arc.opt (marclinux): Fix typo.
        (marclinux_prof): Likewise.

From-SVN: r242956

7 years ago[Patch] New hook TARGET_STACK_PROTECT_RUNTIME_ENABLED_P to disable SSP runtime
Jiong Wang [Tue, 29 Nov 2016 11:47:48 +0000 (11:47 +0000)]
[Patch] New hook TARGET_STACK_PROTECT_RUNTIME_ENABLED_P to disable SSP runtime

gcc/
* target.def (stack_protect_runtime_enabled_p): New.
* function.c (expand_function_end): Guard stack_protect_epilogue with
targetm.stack_protect_runtime_enabled_p.
* cfgexpand.c (pass_expand::execute): Likewise.
* calls.c (expand_call): Likewise.
* doc/tm.texi.in (TARGET_STACK_PROTECT_RUNTIME_ENABLED_P): Add it.
* doc/tm.texi: Regenerate.

From-SVN: r242955

7 years agoFix bogus pr31096-1.c failure for avr
Senthil Kumar Selvaraj [Tue, 29 Nov 2016 11:21:46 +0000 (11:21 +0000)]
Fix bogus pr31096-1.c failure for avr

The dump expects literals which would only be present if the target's
int size is 32 bits.

Fix by explicitly using 32 bit ints for targets with __SIZEOF_INT__ < 4.

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

* testsuite/gcc.dg/pr31096-1.c: Use __{U,}INT32_TYPE__ for
targets with sizeof(int) < 4.

From-SVN: r242954

7 years agore PR rtl-optimization/78546 (wrong code at -O2 and above)
Richard Biener [Tue, 29 Nov 2016 07:48:43 +0000 (07:48 +0000)]
re PR rtl-optimization/78546 (wrong code at -O2 and above)

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

PR middle-end/78546
* match.pd: Add CST1 - (CST2 - A) -> CST3 + A missing case.

* gcc.dg/tree-ssa/forwprop-36.c: New testcase.

From-SVN: r242953

7 years agocontrib.texi: Add a few missing gfortran contributors.
Janus Weil [Tue, 29 Nov 2016 07:04:44 +0000 (08:04 +0100)]
contrib.texi: Add a few missing gfortran contributors.

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

* doc/contrib.texi: Add a few missing gfortran contributors.

From-SVN: r242952

7 years agors6000: Testcases for rl*i*
Segher Boessenkool [Tue, 29 Nov 2016 05:51:51 +0000 (06:51 +0100)]
rs6000: Testcases for rl*i*

These testcases test that we generate the expected code for all of the
rl*i* instructions, that is, rotate-and-mask and rotate-and-mask-insert
for immediate rotation counts.  All the testcases do rotate, shift left,
as well as shift right; if that results in an instruction that does not
exist the testcases generate a multiplication instead, so that we can
detect if this is handled properly.

Many 32-bit instructions zero-extend their result properly in 64-bit
mode, but the rs6000 port does not yet know.  These testcases test the
status quo, so they will need updating when ever we handle this.

gcc/testsuite/
* gcc.target/powerpc/rldic-0.c: New testcase.
* gcc.target/powerpc/rldic-1.c: New testcase.
* gcc.target/powerpc/rldic-2.c: New testcase.
* gcc.target/powerpc/rldicl-0.c: New testcase.
* gcc.target/powerpc/rldicl-1.c: New testcase.
* gcc.target/powerpc/rldicl-2.c: New testcase.
* gcc.target/powerpc/rldicr-0.c: New testcase.
* gcc.target/powerpc/rldicr-1.c: New testcase.
* gcc.target/powerpc/rldicr-2.c: New testcase.
* gcc.target/powerpc/rldicx.h: New file.
* gcc.target/powerpc/rldimi-0.c: New testcase.
* gcc.target/powerpc/rldimi-1.c: New testcase.
* gcc.target/powerpc/rldimi-2.c: New testcase.
* gcc.target/powerpc/rldimi.h: New file.
* gcc.target/powerpc/rlwimi-0.c: New testcase.
* gcc.target/powerpc/rlwimi-1.c: New testcase.
* gcc.target/powerpc/rlwimi-2.c: New testcase.
* gcc.target/powerpc/rlwimi.h: New file.
* gcc.target/powerpc/rlwinm-0.c: New testcase.
* gcc.target/powerpc/rlwinm-1.c: New testcase.
* gcc.target/powerpc/rlwinm-2.c: New testcase.
* gcc.target/powerpc/rlwinm.h: New file.

From-SVN: r242951

7 years agocombine: Tweak change_zero_ext
Segher Boessenkool [Tue, 29 Nov 2016 05:44:32 +0000 (06:44 +0100)]
combine: Tweak change_zero_ext

change_zero_ext handles (zero_extend:M1 (subreg:M2 (reg:M1) ...))
already; this patch extends it to also deal with any
(zero_extend:M1 (subreg:M2 (reg:M3) ...)) where the subreg is not
paradoxical.

* combine.c (change_zero_ext): Also handle extends from a subreg
to a mode bigger than that of the operand of the subreg.

From-SVN: r242950

7 years agors6000: Make deallocation of a large frame work (PR77687)
Segher Boessenkool [Tue, 29 Nov 2016 05:29:47 +0000 (06:29 +0100)]
rs6000: Make deallocation of a large frame work (PR77687)

If we use ABI_V4 and we have a big stack frame, we end the epilogue
with a "mr 1,11" (or similar) instruction.  This instruction however
has no dependencies on the earlier restores from stack (done via r11),
so sched2 can end up reordering the insns, which is bad because we
have no red zone so that you then restore from stack that is already
deallocated.

This fixes it by making that restore depend on the memory accesses.

PR target/77687
* config/rs6000/rs6000.c (rs6000_emit_stack_reset): Emit the
stack_restore_tie insn instead of stack_tie, for the SVR4 and
SPE ABIs.
* config/rs6000/rs6000.md (stack_restore_tie): New define_insn.

From-SVN: r242949

7 years agoshrink-wrap: New spread_components
Segher Boessenkool [Tue, 29 Nov 2016 02:19:04 +0000 (03:19 +0100)]
shrink-wrap: New spread_components

This patch changes spread_components to use a simpler algorithm that
puts prologue components as early as possible, and epilogue components
as late as possible.  This allows better scheduling, and also saves a
bit of code size.  The blocks that run with some specific component
enabled after this patch is a strict superset of those that had it
before the patch.

It does this by finding for every component the basic blocks where that
component is not needed on some path from the entry block (it reuses
head_components to store this), and similarly the blocks where the
component is not needed on some path to the exit block (or the exit can
not be reached from that block) (stored in tail_components).  Blocks
that then are not in both of those two sets get the component active.

* shrink-wrap.c (init_separate_shrink_wrap): Do not clear
head_components and tail_components.
(spread_components): New algorithm.
(emit_common_tails_for_components): Clear head_components and
tail_components.
(insert_prologue_epilogue_for_components): Write extra output to the
dump file for sibcalls and abnormal exits.

From-SVN: r242948

7 years agocombine: Make code after a new trap unreachable (PR78342)
Segher Boessenkool [Tue, 29 Nov 2016 02:02:45 +0000 (03:02 +0100)]
combine: Make code after a new trap unreachable (PR78342)

Combine can turn a conditional trap into an unconditional trap.  If it
does that it should make the code after it unreachable (an unconditional
trap should be the last insn in its bb, and that bb has no successors).

This patch seems to work.  It is hard to be sure, this is very hard to
trigger.  Quite a few other passes look like they need something similar
as well, but I don't see anything else handling it yet either.

PR rtl-optimization/78342
* combine.c: Include "cfghooks.h".
(try_combine): If we create an unconditional trap, break the basic
block in two just after it, and remove the edge between; also, set
the *new_direct_jump_p flag so that cleanup_cfg is run.

From-SVN: r242947

7 years agosimplify-rtx: Handle truncate of extract
Segher Boessenkool [Tue, 29 Nov 2016 01:48:30 +0000 (02:48 +0100)]
simplify-rtx: Handle truncate of extract

simplify_truncation changes the truncation of many operations into
the operation on the truncation.  This patch makes this code also
handle extracts.

* simplify-rtx.c (simplify_truncation): Handle truncate of zero_extract
and sign_extract.

From-SVN: r242946

7 years ago* es.po, fr.po: Update.
Joseph Myers [Tue, 29 Nov 2016 00:45:40 +0000 (00:45 +0000)]
* es.po, fr.po: Update.

From-SVN: r242943

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

From-SVN: r242941

7 years agoi386.md (*and<mode>_1): Merge insn pattern from *andsi_1 and *andhi_1 using SWI24...
Uros Bizjak [Mon, 28 Nov 2016 23:21:43 +0000 (00:21 +0100)]
i386.md (*and<mode>_1): Merge insn pattern from *andsi_1 and *andhi_1 using SWI24 mode iterator.

* config/i386/i386.md (*and<mode>_1): Merge insn pattern from
*andsi_1 and *andhi_1 using SWI24 mode iterator.  Use multi-line
output template string.
(*anddi_1): Use multi-line output template string.
(*andqi_1): Ditto.

From-SVN: r242938

7 years agore PR middle-end/78540 (ICE: in df_refs_verify, at df-scan.c:4062 with -O -march...
Jakub Jelinek [Mon, 28 Nov 2016 22:51:29 +0000 (23:51 +0100)]
re PR middle-end/78540 (ICE: in df_refs_verify, at df-scan.c:4062 with -O -march=core2)

PR middle-end/78540
* rtl.h (remove_reg_equal_equiv_notes): Return bool instead of void.
* rtlanal.c (remove_reg_equal_equiv_notes): Return true if any
note has been removed.
* postreload.c (reload_combine_recognize_pattern): If
remove_reg_equal_equiv_notes returns true, call df_notes_rescan.

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

From-SVN: r242937

7 years agoPR middle-end/78521 - [7 Regression] incorrect byte count in -Wformat-length...
Martin Sebor [Mon, 28 Nov 2016 21:41:41 +0000 (21:41 +0000)]
PR middle-end/78521 - [7 Regression] incorrect byte count in -Wformat-length...

PR middle-end/78521 - [7 Regression] incorrect byte count in -Wformat-length warning with non-constant width or precision
PR middle-end/78520 - missing warning for snprintf with size greater than INT_MAX

gcc/ChangeLog:

PR middle-end/78520
* gimple-ssa-sprintf.c (target_max_value): Remove.
(target_int_max, target_size_max): Use TYPE_MAX_VALUE.
(get_width_and_precision): New function.
(format_integer, format_floating, get_string_length, format_string):
Correct handling of width and precision with unknown value.
(format_directive): Add warning.
(pass_sprintf_length::compute_format_length): Allow for precision
to consist of a sole period with no asterisk or digits after it.

gcc/testsuite/ChangeLog:

PR middle-end/78520
* gcc.dg/tree-ssa/builtin-sprintf-5.c: Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-6.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Add test cases.

From-SVN: r242935

7 years agore PR target/74748 (libgcc_s.so.1 isn't created correctly for Blackfin FDPIC)
Thomas Petazzoni [Mon, 28 Nov 2016 21:30:40 +0000 (21:30 +0000)]
re PR target/74748 (libgcc_s.so.1 isn't created correctly for Blackfin FDPIC)

PR gcc/74748
* libgcc/config/bfin/libgcc-glibc.ver, libgcc/config/bfin/t-linux:
use generic linker version information on Blackfin.

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

From-SVN: r242934

7 years agore PR target/74748 (libgcc_s.so.1 isn't created correctly for Blackfin FDPIC)
Thomas Petazzoni [Mon, 28 Nov 2016 21:27:47 +0000 (21:27 +0000)]
re PR target/74748 (libgcc_s.so.1 isn't created correctly for Blackfin FDPIC)

PR gcc/74748
* libgcc/mkmap-symver.awk: add support for skip_underscore

From-SVN: r242933

7 years agoFix typo.
David Edelsohn [Mon, 28 Nov 2016 19:57:50 +0000 (14:57 -0500)]
Fix typo.

From-SVN: r242931

7 years agore PR c++/72808 (ICE on valid c++ code in verify_type (gcc/tree.c:14047))
Jakub Jelinek [Mon, 28 Nov 2016 19:20:02 +0000 (20:20 +0100)]
re PR c++/72808 (ICE on valid c++ code in verify_type (gcc/tree.c:14047))

PR c++/72808
* decl.c (finish_enum_value_list): Call fixup_type_variants on
current_class_type after
insert_late_enum_def_into_classtype_sorted_fields.

* g++.dg/debug/pr72808.C: New test.

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

7 years agore PR rtl-optimization/78546 (wrong code at -O2 and above)
Jakub Jelinek [Mon, 28 Nov 2016 19:15:51 +0000 (20:15 +0100)]
re PR rtl-optimization/78546 (wrong code at -O2 and above)

PR rtl-optimization/78546
* simplify-rtx.c (neg_const_int): When negating most negative
number in mode wider than HOST_BITS_PER_WIDE_INT, use
simplify_const_unary_operation to produce CONST_DOUBLE or
CONST_WIDE_INT.
(simplify_plus_minus): Hanlde the case where neg_const_int
doesn't return a CONST_INT.

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

From-SVN: r242929

7 years agoFix PR78556 - left shift of negative values
Markus Trippelsdorf [Mon, 28 Nov 2016 18:33:19 +0000 (18:33 +0000)]
Fix PR78556 - left shift of negative values

Running bootstrap-ubsan on ppc64le shows many instances of e.g.:
 config/rs6000/rs6000.c:6217:36: runtime error: left shift of negative value -12301

        PR target/78556
* config/rs6000/rs6000.c (vspltis_constant): Add casts to avoid
left shifting of negative values.

From-SVN: r242928

7 years agore PR fortran/78298 (ICE in lookup_decl_in_outer_ctx, bei omp-low.c:4115)
Jakub Jelinek [Mon, 28 Nov 2016 17:31:37 +0000 (18:31 +0100)]
re PR fortran/78298 (ICE in lookup_decl_in_outer_ctx, bei omp-low.c:4115)

PR fortran/78298
* tree-nested.c (convert_local_reference_stmt): After adding
shared (FRAME.NN) clause to omp parallel, task or target,
add it also to all outer omp parallel, task or target constructs.

* gfortran.dg/gomp/pr78298.f90: New test.

From-SVN: r242926

7 years agoi386.md (UNSPEC_KMASKOP): New.
Uros Bizjak [Mon, 28 Nov 2016 16:53:17 +0000 (17:53 +0100)]
i386.md (UNSPEC_KMASKOP): New.

* config/i386/i386.md (UNSPEC_KMASKOP): New.
(UNSPEC_KMOV): Remove.
(kmovw): Expand to plain HImode move.
(k<any_logic:code><mode>): Rename from *k<logic><mode>. Use
register_operand predicates.  Tag pattern with UNSPEC_KMASKOP.
Remove corresponding clobber-removing splitter.
(*anddi_1): Remove mask register alternatives.
(*andsi_1): Ditto.
(*andhi_1): Ditto.
(*andqi_1): Ditto.
(*<any_or:code><mode>_1): Ditto.
(*<any_or:code>qi_1): Ditto.
(kandn<mode>): Use SWI1248_AVX512BW mode iterator.  Remove
general register alternatives.  Tag pattern with UNSPEC_KMASKOP.
Remove corresponding splitter to operation with general registers.
(*andn<SWI38:mode>): Rename from *bmi_andn_<mode>.
(*andn<SWI12:mode>): New pattern.
(*kxnor<mode>): Remove general register alternatives.  Tag pattern
with UNSPEC_KMASKOP.  Remove corresponding splitter to operation
with general registers.
(knot<mode>): New insn pattern.
(*one_cmpl<mode>2_1): Remove mask register alternatives.
(one_cmplqi2_1): Ditto.
(*k<any_lshift:code><mode>): Rename from *k<mshift><mode>3.
Tag pattern with UNSPEC_KMASKOP. Add mode attribute.
* config/i386/predicates.md (mask_reg_operand): Remove predicate.
* config/i386/sse.md (vec_unpacks_hi_hi): Update pattern
to generate kmaskop shift.
(vec_unpacks_hi_<mode>): Ditto.
* config/i386/i386-builtin.def (__builtin_ia32_kandhi):
Use CODE_FOR_kandhi.
(__builtin_ia32_knothi): Use CODE_FOR_knothi.
(__builtin_ia32_korhi): Use CODE_FOR_kiorhi.
(__builtin_ia32_kxorhi): Use CODE_FOR_kxorhi.

testsuite/ChangeLog:

* gcc.target/i386/bmi-andn-1a.c (dg-final): Update scan string.
* gcc.target/i386/bmi-andn-2a.c (dg-final): Ditto.

From-SVN: r242925

7 years agore PR c++/77591 (decltype(auto) and ternary operator allow returning local reference...
Jakub Jelinek [Mon, 28 Nov 2016 15:21:53 +0000 (16:21 +0100)]
re PR c++/77591 (decltype(auto) and ternary operator allow returning local reference without a warning)

PR c++/77591
* typeck.c (maybe_warn_about_returning_address_of_local): Optimize
whats_returned through fold_for_warn.

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

From-SVN: r242924

7 years ago* MAINTAINERS (nvptx): Remove self.
Nathan Sidwell [Mon, 28 Nov 2016 15:18:45 +0000 (15:18 +0000)]
* MAINTAINERS (nvptx): Remove self.

From-SVN: r242923

7 years ago* gcc.dg/torture/pr78515.c: Ignore ABI extension warning.
David Edelsohn [Mon, 28 Nov 2016 15:11:27 +0000 (15:11 +0000)]
* gcc.dg/torture/pr78515.c: Ignore ABI extension warning.

From-SVN: r242922

7 years agotree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names via...
Richard Biener [Mon, 28 Nov 2016 15:04:45 +0000 (15:04 +0000)]
tree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names via extract_range_from_ssa_name if allowed.

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

* tree-vrp.c (vrp_visit_assignment_or_call): Handle
simplifications to SSA names via extract_range_from_ssa_name
if allowed.

From-SVN: r242921

7 years agore PR tree-optimization/78542 (wrong code at -Og results in endless loop)
Richard Biener [Mon, 28 Nov 2016 15:03:55 +0000 (15:03 +0000)]
re PR tree-optimization/78542 (wrong code at -Og results in endless loop)

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

PR tree-optimization/78542
* tree-ssa-ccp.c (evaluate_stmt): Only valueize simplification
if allowed.

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

From-SVN: r242920

7 years agolibgomp: remove config/nvptx/critical.c
Alexander Monakov [Mon, 28 Nov 2016 13:50:23 +0000 (16:50 +0300)]
libgomp: remove config/nvptx/critical.c

* config/nvptx/critical.c: Delete to use generic implementation.

From-SVN: r242919

7 years agolibgomp: fix OpenMP offloading to NVPTX and correct location of generic affinity.c
Jonas Hahnfeld [Mon, 28 Nov 2016 13:42:50 +0000 (13:42 +0000)]
libgomp: fix OpenMP offloading to NVPTX and correct location of generic affinity.c

2016-11-28  Jonas Hahnfeld  <Hahnfeld@itc.rwth-aachen.de>

* config/linux/affinity.c [!HAVE_PTHREAD_AFFINITY_NP]: Include
../../affinity.c as fallback.
* config/nvptx/affinity.c: Delete to use fallback implementation.

From-SVN: r242918

7 years agocombine.c (simplify_if_then_else): Simplify IF_THEN_ELSE that isolates a single bit...
Paolo Bonzini [Mon, 28 Nov 2016 13:21:02 +0000 (13:21 +0000)]
combine.c (simplify_if_then_else): Simplify IF_THEN_ELSE that isolates a single bit...

gcc:
* combine.c (simplify_if_then_else): Simplify IF_THEN_ELSE
that isolates a single bit, even if the condition involves
subregs.

From-SVN: r242917

7 years ago2016-11-28 Tamar Christina <tamar.christina@arm.com>
Tamar Christina [Mon, 28 Nov 2016 12:47:02 +0000 (12:47 +0000)]
2016-11-28  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/aarch64-simd-builtins.def
(BSL_P): Added di and v2di mode.
* config/aarch64/arm_neon.h
(vsriq_n_p64, vsri_n_p64): Added poly type.
(vextq_p64, vext_p64): Likewise.
(vceq_p64, vbslq_p64, vbsl_p64): Likewise.

From-SVN: r242916

7 years agoaarch64-builtins.c (TYPES_SETREGP): Added poly type.
Tamar Christina [Mon, 28 Nov 2016 12:41:03 +0000 (12:41 +0000)]
aarch64-builtins.c (TYPES_SETREGP): Added poly type.

2016-11-28  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/aarch64-builtins.c (TYPES_SETREGP): Added poly type.
(TYPES_GETREGP): Likewise.
(TYPES_SHIFTINSERTP): Likewise.
(TYPES_COMBINEP): Likewise.
(TYPES_STORE1P): Likewise.
* config/aarch64/aarch64-simd-builtins.def
(combine): Added poly generator.
(get_dregoi): Likewise.
(get_dregci): Likewise.
(get_dregxi): Likewise.
(ssli_n): Likewise.
(ld1): Likewise.
(st1): Likewise.
* config/aarch64/arm_neon.h
(poly64x1x2_t, poly64x1x3_t): New.
(poly64x1x4_t, poly64x2x2_t): Likewise.
(poly64x2x3_t, poly64x2x4_t): Likewise.
(poly64x1_t): Likewise.
(vcreate_p64, vcombine_p64): Likewise.
(vdup_n_p64, vdupq_n_p64): Likewise.
(vld2_p64, vld2q_p64): Likewise.
(vld3_p64, vld3q_p64): Likewise.
(vld4_p64, vld4q_p64): Likewise.
(vld2_dup_p64, vld3_dup_p64): Likewise.
(vld4_dup_p64, vsli_n_p64): Likewise.
(vsliq_n_p64, vst1_p64): Likewise.
(vst1q_p64, vst2_p64): Likewise.
(vst3_p64, vst4_p64): Likewise.
(__aarch64_vdup_lane_p64, __aarch64_vdup_laneq_p64): Likewise.
(__aarch64_vdupq_lane_p64, __aarch64_vdupq_laneq_p64): Likewise.
(vget_lane_p64, vgetq_lane_p64): Likewise.
(vreinterpret_p8_p64, vreinterpretq_p8_p64): Likewise.
(vreinterpret_p16_p64, vreinterpretq_p16_p64): Likewise.
(vreinterpret_p64_f16, vreinterpret_p64_f64): Likewise.
(vreinterpret_p64_s8, vreinterpret_p64_s16): Likewise.
(vreinterpret_p64_s32, vreinterpret_p64_s64): Likewise.
(vreinterpret_p64_f32, vreinterpret_p64_u8): Likewise.
(vreinterpret_p64_u16, vreinterpret_p64_u32): Likewise.
(vreinterpret_p64_u64, vreinterpret_p64_p8): Likewise.
(vreinterpretq_p64_f64, vreinterpretq_p64_s8): Likewise.
(vreinterpretq_p64_s16, vreinterpretq_p64_s32): Likewise.
(vreinterpretq_p64_s64, vreinterpretq_p64_f16): Likewise.
(vreinterpretq_p64_f32, vreinterpretq_p64_u8): Likewise.
(vreinterpretq_p64_u16, vreinterpretq_p64_u32): Likewise.
(vreinterpretq_p64_u64, vreinterpretq_p64_p8): Likewise.
(vreinterpret_f16_p64, vreinterpretq_f16_p64): Likewise.
(vreinterpret_f32_p64, vreinterpretq_f32_p64): Likewise.
(vreinterpret_f64_p64, vreinterpretq_f64_p64): Likewise.
(vreinterpret_s64_p64, vreinterpretq_s64_p64): Likewise.
(vreinterpret_u64_p64, vreinterpretq_u64_p64): Likewise.
(vreinterpret_s8_p64, vreinterpretq_s8_p64): Likewise.
(vreinterpret_s16_p64, vreinterpret_s32_p64): Likewise.
(vreinterpretq_s32_p64, vreinterpret_u8_p64): Likewise.
(vreinterpret_u16_p64, vreinterpretq_u16_p64): Likewise.
(vreinterpret_u32_p64, vreinterpretq_u32_p64): Likewise.
(vset_lane_p64, vsetq_lane_p64): Likewise.
(vget_low_p64, vget_high_p64): Likewise.
(vcombine_p64, vst2_lane_p64): Likewise.
(vst3_lane_p64, vst4_lane_p64): Likewise.
(vst2q_lane_p64, vst3q_lane_p64): Likewise.
(vst4q_lane_p64, vget_lane_p64): Likewise.
(vget_laneq_p64, vset_lane_p64): Likewise.
(vset_laneq_p64, vcopy_lane_p64): Likewise.
(vcopy_laneq_p64, vdup_n_p64): Likewise.
(vdupq_n_p64, vdup_lane_p64): Likewise.
(vdup_laneq_p64, vld1_p64): Likewise.
(vld1q_p64, vld1_dup_p64): Likewise.
(vld1q_dup_p64, vld1q_dup_p64): Likewise.
(vmov_n_p64, vmovq_n_p64): Likewise.
(vst3q_p64, vst4q_p64): Likewise.
(vld1_lane_p64, vld1q_lane_p64): Likewise.
(vst1_lane_p64, vst1q_lane_p64): Likewise.
(vcopy_laneq_p64, vcopyq_laneq_p64): Likewise.
(vdupq_laneq_p64): Likewise.

From-SVN: r242915

7 years agoarm_neon.h (vget_lane_p64): New.
Tamar Christina [Mon, 28 Nov 2016 12:36:07 +0000 (12:36 +0000)]
arm_neon.h (vget_lane_p64): New.

* config/arm/arm_neon.h (vget_lane_p64): New.

From-SVN: r242914

7 years agore PR tree-optimization/78343 (Loop is not eliminated)
Richard Biener [Mon, 28 Nov 2016 10:49:12 +0000 (10:49 +0000)]
re PR tree-optimization/78343 (Loop is not eliminated)

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

PR tree-optimization/78343
* gcc.dg/tree-ssa/20030808-1.c: Fix dump to generate.
* gcc.dg/tree-ssa/20040305-1.c: Likewise.

From-SVN: r242913

7 years ago[Darwin, config] Fix version number extraction to portable method
Iain Sandoe [Mon, 28 Nov 2016 10:29:19 +0000 (10:29 +0000)]
[Darwin, config] Fix version number extraction to portable method

The method used in the applied patch caused configuration errors on freeBSD and hppa.

2016-11-28  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* configure.ac (with_ld64): Use portable method to extract the
major part of the version number.
* configure: Regenerated.

From-SVN: r242912

7 years agogimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than...
Jakub Jelinek [Mon, 28 Nov 2016 10:01:30 +0000 (11:01 +0100)]
gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than SIZE_TYPE.

* gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at
UINTMAX_TYPE rather than SIZE_TYPE.  Add gcc_unreachable if
intmax_t couldn't be determined.
(format_integer): Make {,u}intmax_type_node no longer static,
initialize them only when needed.  For z and t use
signed_or_unsigned_type_for instead of assuming size_t and
ptrdiff_t have the same precision.

From-SVN: r242911

7 years agore PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin)
Jakub Jelinek [Mon, 28 Nov 2016 10:00:43 +0000 (11:00 +0100)]
re PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin)

PR lto/78211
* ipa-icf.h (sem_item_optimizer): Add m_classes_vec member.
* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Initialize
it.
(sem_item_optimizer::~sem_item_optimizer): Traverse m_classes_vec
vector instead of traversing m_classes hash table.  Release
m_classes_vec.
(sem_item_optimizer::read_section, sem_item_optimizer::add_class):
Formatting fixes.
(sem_item_optimizer::get_group_by_hash): When inserting a new group,
add it also to m_classes_vec vector.
(sem_item_optimizer::remove_symtab_node,
sem_item_optimizer::build_hash_based_classes,
sem_item_optimizer::parse_nonsingleton_classes): Formatting fixes.
(sem_item_optimizer::subdivide_classes_by_equality,
sem_item_optimizer::subdivide_classes_by_sensitive_refs,
sem_item_optimizer::verify_classes): Traverse m_classes_vec vector
instead of traversing m_classes hash table.  Formatting fixes.
(sem_item_optimizer::traverse_congruence_split,
sem_item_optimizer::do_congruence_step_for_index,
sem_item_optimizer::do_congruence_step): Formatting fixes.
(sem_item_optimizer::process_cong_reduction): Traverse m_classes_vec
vector instead of traversing m_classes hash table.
(sem_item_optimizer::dump_cong_classes): Likewise.  Formatting fixes.
(sem_item_optimizer::merge_classes): Traverse m_classes_vec vector
instead of traversing m_classes hash table.

* g++.dg/ipa/pr78211.C: New test.

From-SVN: r242910

7 years agoavr.c (out_movhi_r_mr): Only SBIW if X is not unused after.
Georg-Johann Lay [Mon, 28 Nov 2016 09:28:45 +0000 (09:28 +0000)]
avr.c (out_movhi_r_mr): Only SBIW if X is not unused after.

* config/avr/avr.c (out_movhi_r_mr) [REG_X + PLUS]: Only SBIW if
X is not unused after.

From-SVN: r242909

7 years agore PR rtl-optimization/78120 (If conversion no longer performed)
Bernd Schmidt [Mon, 28 Nov 2016 08:59:01 +0000 (08:59 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)

PR rtl-optimization/78120
* rtlanal.c (insn_rtx_cost): Revert previous change.

From-SVN: r242908

7 years agore PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)
Georg-Johann Lay [Mon, 28 Nov 2016 08:40:11 +0000 (08:40 +0000)]
re PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)

PR 41076
* config/avr/avr.md (SPLIT34): New mode iterator.
(bitop): New code iterator.
(*iorhi3.ashift8-*). New insn-and-split patterns.
(*movhi): Post-reload split reg = 0.
[!MOVW]: Post-reload split reg = reg.
(*mov<mode>) [SI,SF,PSI,SQ,USQ,SA,USA]: Post-reload split reg = reg.
(andhi3, andpsi3, andsi3): Post-reload split reg-reg operations.
(iorhi3, iorpsi3, iorsi3): Same.
(xorhi3, xorpsi3, xorsi3): Same.
* config/avr/avr.c (avr_rtx_costs_1) [IOR && HImode]: Adjust rtx
costs to *iorhi3.ashift8-* patterns.

From-SVN: r242907

7 years agoPR c++/77907 - static init and PMF
Jason Merrill [Mon, 28 Nov 2016 04:00:36 +0000 (23:00 -0500)]
PR c++/77907 - static init and PMF

* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.

From-SVN: r242906

7 years agoDaily bump.
GCC Administrator [Mon, 28 Nov 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242905

7 years agore PR ada/78524 (failure of ACATS c41104a at -O0)
Eric Botcazou [Sun, 27 Nov 2016 22:04:13 +0000 (22:04 +0000)]
re PR ada/78524 (failure of ACATS c41104a at -O0)

PR ada/78524
* gcc-interface/utils.c (max_size) <tcc_reference>: Add missing
conversion to original type in the PLACEHOLDER_EXPR case.

From-SVN: r242902

7 years agore PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled)
Eric Botcazou [Sun, 27 Nov 2016 20:23:31 +0000 (20:23 +0000)]
re PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled)

PR ada/78531
* namet.h (Max_Line_Length): Define.
(struct Bounded_String): Declare Chars with exact size.
(namet__get_decoded_name_string): Delete.
(Get_Decoded_Name_String): Likewise.
(casing__set_all_upper_case): Likewise.

From-SVN: r242901

7 years agore PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax)
Paul Thomas [Sun, 27 Nov 2016 19:00:00 +0000 (19:00 +0000)]
re PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax)

2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78474
* module.c (gfc_match_submodule): If there is more than one
colon, it is a syntax error.

PR fortran/78331
* module.c (gfc_use_module): If an smod file does not exist it
is either because the module does not have a module procedure
interface or there is an error in the module.

2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78474
* gfortran.dg/submodule_22.f08: New test.

PR fortran/78331
* gfortran.dg/submodule_21.f08: New test.

From-SVN: r242900

7 years agopr65655.C: Use dg-timeout-factor 2.
John David Anglin [Sun, 27 Nov 2016 17:40:53 +0000 (17:40 +0000)]
pr65655.C: Use dg-timeout-factor 2.

* g++.dg/torture/pr65655.C: Use dg-timeout-factor 2.

From-SVN: r242899

7 years ago[Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions.
Iain Sandoe [Sun, 27 Nov 2016 15:07:22 +0000 (15:07 +0000)]
[Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions.

A/ Newer versions of ld64 check the min_version command, and newer versions of
   the system assembler inserts this in response to "-mmacosx-version-min=" on
   the assembler line. Unless one makes sensible versions, some object is bound
   to conflict.

B/ Additionally, there's a difference in behaviour between "as" and "ld" when
   presented with xx.yy.zz (ld truncates to xx.yy, as doesn't); net result is
   that one needs to pass a truncated version to "as".

So (if the assembler supports minversion commands)
(a) provide a truncated minversion (as asm_macosx_version_min, which is a
    driver-only var).
(b) pass this to "as"
(c) Update tests to determine 'HAVE_AS_MMACOSX_VERSION_MIN_OPTION'
    (Rainer's patch)
(d) For some reason the testcases are "run" (it's not obvious they need to be,
    they are checking compile-time issues)
  - anyway, to preserve the status quo, I've left them as exec.  However, the
    minimum version that can be code-gened for is target-dependent (there are no
    released x86 versions before 10.4, for example).  To avoid conflicts where
    the "as" is assuming some minimum, I've set the testversion to 10.5 (which
    is supported by all the archs we have)
(e) We need to ensure that libgcc and crts are generated with a sufficiently
    old minversion not to conflict.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

PR target/67710
* config.in: Regenerate
* config/darwin-driver.c (darwin_driver_init): Emit a version string
for the assembler.
* config/darwin.h(ASM_MMACOSX_VERSION_MIN_SPEC): New, new tests.
* config/darwin.opt(asm_macosx_version_min): New.
* config/i386/darwin.h: Handle ASM_MMACOSX_VERSION_MIN_SPEC.
* configure: Regenerate
* configure.ac: Check for mmacosx-version-min handling.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    Dominique d'Humieres  <dominiq@lps.ens.fr>

PR target/67710
*  gcc.dg/darwin-minversion-1.c: Update min version check.
*  gcc.dg/darwin-minversion-2.c: Likewise.
*  gcc.dg/darwin-minversion-3.c: Likewise.

libgcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

PR target/67710
*  config/t-darwin: Default builds to 10.5 codegen.

Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
From-SVN: r242898

7 years ago[Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels.
Iain Sandoe [Sun, 27 Nov 2016 14:50:58 +0000 (14:50 +0000)]
[Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels.

A.
Empty function bodies causes two problems for Darwin's linker (i) zero-length
FDEs and (ii) coincident label addresses that might point to items of
differing weakness.

B.
Trailing local labels can be problematic when they end a function because
similarly they might apparently point to a following weak function, leading
to the linker concluding that there's a pointer-diff to a weak symbol
(which is not allowed).

Both conditions arise from __builtin_unreachable() lowering to a barrier.

The solution for both is to emit some finite amount of code; in the case of A
a trap is emitted, in the case of B a nop.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/57438
* config/i386/i386.c (ix86_code_end): Note that we emitted code
where the function might otherwise appear empty for picbase thunks.
(ix86_output_function_epilogue): If we find a zero-sized function
assume that reaching it is UB and trap.  If we find a trailing label
append a nop.
* config/rs6000/rs6000.c (rs6000_output_function_epilogue): If we
find a zero-sized function assume that reaching it is UB and trap.
If we find a trailing label, append a nop.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/57438
* gcc.dg/pr57438-1.c: New Test.
* gcc.dg/pr57438-2.c: New Test.

From-SVN: r242897

7 years ago[Testsuite] pr71767 Changes.
Dominique d'Humieres [Sun, 27 Nov 2016 14:41:22 +0000 (15:41 +0100)]
[Testsuite] pr71767 Changes.

 Update Darwin tests to reflect the differences in symbol names and section
 usage.

gcc/testsuite/

2016-11-27  Dominique d'Humieres  <dominiq@lps.ens.fr>
    Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* g++.dg/abi/key2.C: Adjust for changed Darwin sections and
linker-visible symbols.
* g++.dg/torture/darwin-cfstring-3.C: Likewise.
* gcc.dg/const-uniq-1.c: Likewise.
* gcc.dg/torture/darwin-cfstring-3.c: Likewise.
* gcc.target/i386/pr70799-1.c: Likewise.

Co-Authored-By: Iain Sandoe <iain@codesourcery.com>
From-SVN: r242896

7 years ago[Darwin] Fix PR71767 - adjust the sections used where necessary.
Iain Sandoe [Sun, 27 Nov 2016 14:34:54 +0000 (14:34 +0000)]
[Darwin] Fix PR71767 - adjust the sections used where necessary.

 (much) Older Darwin linkers needed separate sections marked "coalesce" to
 allow for weak symbol coalescing.  This has not been needed for some time
 and is now deprecated, newer assemblers warn if the old coalesced sections
 are used.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* config/darwin-sections.def (picbase_thunk_section): New.
* config/darwin.c (darwin_init_sections): Set up picbase thunk
section. (darwin_rodata_section, darwin_objc2_section,
machopic_select_section, darwin_asm_declare_constant_name,
darwin_emit_weak_or_comdat, darwin_function_section): Don’t use
coalesced with newer linkers.
(darwin_override_options): Decide on usage of coalesed sections
on the basis of the target linker version.
* config/darwin.h (MIN_LD64_NO_COAL_SECTS): New.
* config/darwin.opt  (mtarget-linker): New.
* config/i386/i386.c (ix86_code_end): Do not force the thunks into
a coalesced section, instead use a thunks section.

From-SVN: r242895

7 years ago[Darwin, config] Arrange for ld64 to be detected as Darwin's linker.
Iain Sandoe [Sun, 27 Nov 2016 14:29:36 +0000 (14:29 +0000)]
[Darwin, config] Arrange for ld64 to be detected as Darwin's linker.

 This is an initial patch in a series that converts Darwin's configury
 to detect ld64 features, rather than the current process of hard-coding
 them on target system version.

 A ld64-compatible linker is currently required and assumed by Darwin.
 If a DEFAULT_LINKER is set via --with-ld= then this will be tested to
 see if it is ld64.

 The ld64 version is determined for the chosen ld and this is exported for
 use in setting a default value for -mtarget-linker (needed for run-time
 code-gen changes to section choices).
 The support for -rdynamic is converted to be detected at config time, or
 by the ld64 version if that is found.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* configure.ac (with-ld64): New var, set for Darwin, set on
detection of ld64, gcc_cv_ld64_export_dynamic: New, New test.
* config/darwin.h: Use LD64_HAS_DYNAMIC export. DEF_LD64: New,
define.
* config/darwin10.h(DEF_LD64): Update for this target version.
* config/darwin12.h(LINK_GCC_C_SEQUENCE_SPEC): Remove rdynamic
test.  (DEF_LD64): Update for this target version.
* configure: Regenerated.
* config.in: Regenerated.

From-SVN: r242894

7 years ago[Darwin, ld64] Make PIC indirections and constant labels linker-visible.
Iain Sandoe [Sun, 27 Nov 2016 14:21:51 +0000 (14:21 +0000)]
[Darwin, ld64] Make PIC indirections and constant labels linker-visible.

Indirections:

  If we have a situation like:

global_weak_symbol:
  ....
Lnon_weak_local:
  ....

  ld64 will be unable to split this into two atoms (because the "L" makes
  the second symbol 'invisible').  This means that legitimate direct accesses
  to the second symbol will appear to be non-allowed direct accesses to an
  atom of type weak, global which are not allowed.

  To avoid this, we make the indirections have a leading 'l' (lower-case L)
  which has a special meaning: linker can see this and use it to determine
  atoms, but it is not placed into the final symbol table.

  The implementation here is somewhat heavy-handed in that it will also mark
  indirections to the __IMPORT,__pointers section the same way which is
  really unnecessary, since ld64 _can_ split those into atoms as they are
  fixed size.  FIXME: determine if this is a penalty worth extra code to
  fix.

Similarly, with:

  .const
weak_global_constant:
  ....

LCxx:
  ...

 ld64 can't split the second, causing a warning when it's directly
accessed.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* config/darwin.c (imachopic_indirection_name): Make data
section indirections linker-visible.
* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make local
constant labels linker-visible.

From-SVN: r242893

7 years agore PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers)
Tim Shen [Sun, 27 Nov 2016 00:32:04 +0000 (00:32 +0000)]
re PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers)

PR libstdc++/78441
* include/std/variant: Propagate cv qualifications to types returned
by variant_alternative.
* testsuite/20_util/variant/compile.cc: Tests.

From-SVN: r242892

7 years agoDaily bump.
GCC Administrator [Sun, 27 Nov 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242891

7 years agotree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
Prathamesh Kulkarni [Sat, 26 Nov 2016 10:41:55 +0000 (10:41 +0000)]
tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.

2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
(free_lang_data): Remove assignment to ptrdiff_type_node.
c-family/
* c-common.c (c_common_nodes_and_builtins): Remove initialization of
ptrdiff_type_node.
lto/
* lto-lang.c (lto_init): Remove initialization of ptrdiff_type_node.

From-SVN: r242888

7 years agoDaily bump.
GCC Administrator [Sat, 26 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242887

7 years agoFor typo in documentation wrt. C_PTRDIFF_T constant
Janne Blomqvist [Fri, 25 Nov 2016 20:06:24 +0000 (22:06 +0200)]
For typo in documentation wrt. C_PTRDIFF_T constant

2016-11-25  Janne Blomqvist  <jb@gcc.gnu.org>

       * intrinsic.texi: Fix ptrdiff_t typo in ISO_C_BINDING constants
       table.

From-SVN: r242884

7 years agore PR rtl-optimization/78438 (incorrect comparison optimization)
Jakub Jelinek [Fri, 25 Nov 2016 19:24:22 +0000 (20:24 +0100)]
re PR rtl-optimization/78438 (incorrect comparison optimization)

PR rtl-optimization/78438
PR rtl-optimization/78477
* gcc.c-torture/execute/pr78438.c: New test.
* gcc.c-torture/execute/pr78477.c: New test.

From-SVN: r242883

7 years agore PR rtl-optimization/78526 (ICE: in decompose, at rtl.h:2117 with -g -mavx512bw)
Jakub Jelinek [Fri, 25 Nov 2016 18:56:50 +0000 (19:56 +0100)]
re PR rtl-optimization/78526 (ICE: in decompose, at rtl.h:2117 with -g -mavx512bw)

PR rtl-optimization/78526
* simplify-rtx.c (simplify_immed_subreg): Don't use wi::extract_uhwi
beyond val's precision.

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

From-SVN: r242882