Commit Graph

150749 Commits

Author SHA1 Message Date
Janus Weil
707024b2e8 re PR fortran/78848 ([OOP] ICE on writing CLASS variable with non-typebound DTIO procedure)
2016-12-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78848
	* trans-io.c (get_dtio_proc): Generate non-typebound DTIO call for class
	variables, if no typebound DTIO procedure is available.

2016-12-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78848
	* gfortran.dg/dtio_22.f90: New test.

From-SVN: r243784
2016-12-18 14:22:13 +01:00
Janus Weil
413e859cdf re PR fortran/78592 (ICE in gfc_find_specific_dtio_proc, at fortran/interface.c:4939)
2016-12-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78592
	* interfac.c (gfc_find_specific_dtio_proc): Fixup for r243005, making
	sure that the generic list is followed through until the end.

2016-12-18  Janus Weil  <janus@gcc.gnu.org>

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

From-SVN: r243783
2016-12-18 12:03:41 +01:00
Eric Botcazou
ab5d223376 lra-constraints.c (process_address): Add forward declaration.
* lra-constraints.c (process_address): Add forward declaration.
	(simplify_operand_subreg): In the MEM case, if the adjusted memory
	reference is not sufficient aligned and the address was invalid,
	reload the address before reloading the original memory reference.
	Fix long lines and add a final return for the sake of clarity.

From-SVN: r243782
2016-12-18 08:33:38 +00:00
GCC Administrator
54b890f3e4 Daily bump.
From-SVN: r243781
2016-12-18 00:16:17 +00:00
Steven G. Kargl
efa84b0163 re PR fortran/78746 (charlen_03, charlen_10 ICE)
2016-12-17  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/78746
	* charlen_03.f90: Remove test. 
	* charlen_10.f90: Ditto.

From-SVN: r243778
2016-12-17 23:10:01 +00:00
Jakub Jelinek
8ccaace835 re PR sanitizer/78832 (-fcompare-debug failure (length) with -fsanitize=address)
PR sanitizer/78832
	* sanopt.c (sanitize_asan_mark_unpoison): Remove next variable, use
	continue if gsi_next should be skipped.
	(sanitize_asan_mark_poison): Remove prev variable, use continue if
	gsi_prev should be skipped.  When removing ASAN_MARK, do gsi_prev
	first and gsi_remove on a previously made copy of the iterator.

	* gcc.dg/asan/pr78832.c: New test.

From-SVN: r243777
2016-12-17 20:10:39 +01:00
Thomas Koenig
63ac625170 re PR fortran/78239 (ICE in char_len_param_value, at fortran/decl.c:926, with -fimplicit-none)
2016-12-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78239
	* decl.c (char_len_param_value):  Actually commit
	previous change.

From-SVN: r243776
2016-12-17 17:03:49 +00:00
Matthias Klose
de34320fba gmon: Remove empty directory.
2016-12-17  Matthias Klose  <doko@ubuntu.com>

        * config/arc/gmon: Remove empty directory.

From-SVN: r243775
2016-12-17 12:42:03 +00:00
Andrew Senkevich
75d727d2d0 avx512bwintrin.h: Add new k-mask intrinsics.
* config/i386/avx512bwintrin.h: Add new k-mask intrinsics.
	* config/i386/avx512dqintrin.h: Ditto.
	* config/i386/avx512fintrin.h: Ditto.
	* config/i386/i386-builtin.def (__builtin_ia32_kaddqi,
	__builtin_ia32_kaddhi, __builtin_ia32_kaddsi,
	__builtin_ia32_kadddi): New.
	* config/i386/sse.md (kadd<mode>): New.

testsuite/ChangeLog:

	* gcc.target/i386/avx512bw-kaddd-1.c: New test.
	* gcc.target/i386/avx512bw-kaddq-1.c: Ditto.
	* gcc.target/i386/avx512dq-kaddb-1.c: Ditto.
	* gcc.target/i386/avx512f-kaddw-1.c: Ditto.

From-SVN: r243774
2016-12-17 12:42:05 +01:00
Thomas Koenig
52fd48aeea re PR fortran/78239 (ICE in char_len_param_value, at fortran/decl.c:926, with -fimplicit-none)
2016-12-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78239
	* decl.c(char_len_param_value): Also check for -fimplicit-none
	when determining if implicit none is in force.

2016-12-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78239
	* gfortran.dg/fimplicit_none_1.f90:  New test.
	* gfortran.dg/fimplicit_none_2.f90:  New test.

From-SVN: r243773
2016-12-17 11:13:16 +00:00
Uros Bizjak
c5b1ea2558 i386.md (*tzcnt<mode>_1): Merge *tzcnt<mode>_1_falsedep_1 and *tzcnt<mode>_1 to define_insn_and_split pattern.
* config/i386/i386.md (*tzcnt<mode>_1): Merge *tzcnt<mode>_1_falsedep_1
	and *tzcnt<mode>_1 to define_insn_and_split pattern.  Adjust split
	condition to split after epilogue_completed.
	(ctz<mode>2): Remove expander.
	(ctz<mode>2): Merge *ctz<mode>2_falsedep_1 and *ctz<mode>2 to
	define_insn_and_split pattern.  Adjust split condition to split
	after epilogue_completed.
	(clz<mode>2_lznct): Remove expander.
	(clz<mode>2_lzcnt): Merge *clz<mode>2_lzcnt_falsedep_1 and
	*clz<mode>2 to define_insn_and_split pattern.  Adjust split
	condition to split after epilogue_completed.
	(<lt_zcnt>_<mode>): Remove expander.
	(<lt_zcnt>_<mode>): Merge *<lt_zcnt>_<mode>_falsedep_1 and
	*<lt_zcnt>_<mode> to define_insn_and_split pattern.  Adjust split
	condition to split after epilogue_completed.
	(<lt_zcnt>_hi): New insn pattern.
	(popcount<mode>2): Remove expander.
	(popcount<mode>2): Merge *popcount<mode>2_falsedep_1 and
	*popcount<mode>2 to define_insn_and_split pattern.  Adjust split
	condition to split after epilogue_completed.
	(popcounthi2): New insn pattern.

From-SVN: r243772
2016-12-17 12:05:46 +01:00
Kelvin Nilsen
6040f6d497 byte-in-either-range-0.c: New test.
gcc/testsuite/ChangeLog:

2016-12-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* gcc.target/powerpc/byte-in-either-range-0.c: New test.
	* gcc.target/powerpc/byte-in-either-range-1.c: New test.
	* gcc.target/powerpc/byte-in-range-0.c: New test.
	* gcc.target/powerpc/byte-in-range-1.c: New test.
	* gcc.target/powerpc/byte-in-set-0.c: New test.
	* gcc.target/powerpc/byte-in-set-1.c: New test.
	* gcc.target/powerpc/byte-in-set-2.c: New test.


gcc/ChangeLog:

2016-12-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* config/rs6000/altivec.md (UNSPEC_CMPRB): New unspec value.
	(UNSPEC_CMPRB2): New unspec value.
	(UNSPEC_CMPEQB): New unspec value.
	(cmprb): New expansion.
	(*cmprb_internal): New insn.
	(*setb_internal): New insn.
	(cmprb2): New expansion.
	(*cmprb2_internal): New insn.
	(cmpeqb): New expansion.
	(*cmpeqb_internal): New insn.
	* config/rs6000/rs6000-builtin.def (BU_P9_2): New macro.
	(BU_P9_64BIT_2): Likewise.
	(BU_P9_OVERLOAD_2): Likewise.
	(CMPRB): Add byte-in-range built-in function.
	(CMBRB2): Add byte-in-either-range built-in function.
	(CMPEQB): Add byte-in-set built-in function.
	(CMPRB): Add overload support for byte-in-range function.
	(CMPRB2): Add overload support for byte-in-either-range function.
	(CMPEQB): Add overload support for byte-in-set built-in function.
	* config/rs6000/rs6000-c.c (P9_BUILTIN_CMPRB): Macro expansion to
	define argument types for new builtin. 
	(P9_BUILTIN_CMPRB2): Likewise.
	(P9_BUILTIN_CMPEQB): Likewise.
	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Rearrange
	the order of presentation for certain built-in functions
	(scalar_extract_exp, scalar_extract_sig, scalar_insert_exp)
	(scalar_cmp_exp_gt, scalar_cmp_exp_lt, scalar_cmp_exp_eq)
	(scalar_cmp_exp_unordered, scalar_test_data_class)
	(scalar_test_neg) to improve locality and flow.  Document
	the new __builtin_scalar_byte_in_set,
	__builtin_scalar_byte_in_range, and
	__builtin_scalar_byte_in_either_range functions.

From-SVN: r243770
2016-12-17 00:18:32 +00:00
GCC Administrator
68dde2bfdd Daily bump.
From-SVN: r243769
2016-12-17 00:16:20 +00:00
Than McIntosh
8220e3f9bd compiler: add containing Bfunction to some backend interfaces.
Change the interfaces for backend methods that create statements to
    always pass in the enclosing Bfunction for the statement.  Having the
    function available simplifies things if a temporary variable has to be
    created during the construction of a statement.
    
    This also includes a change to the Mark_lvalue_varexprs helper
    class to handle indirections on the left hand side of assignments
    (e.g. "*x.y = ...").
    
    Reviewed-on: https://go-review.googlesource.com/34471

	* go-gcc.cc (Gcc_backend::expression_statement): Add Bfunction*
	parameter.
	(Gcc_backend::init_statement): Likewise.
	(Gcc_backend::assignment_statement): Likewise.
	(Gcc_backend::if_statement): Likewise.

From-SVN: r243766
2016-12-16 22:11:28 +00:00
Jerry DeLisle
5cdc4b0ef0 re PR fortran/78662 ([F03] Incorrect parsing of quotes in the char-literal-constant of the DT data descriptor)
2016-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/78622
	* io.c (format_lex): Continue of string delimiter seen.

	* io/transfer.c (get_dt_format): New static function to alloc
	and set the DT iotype string, handling doubled quotes.
	(formatted_transfer_scalar_read,
	formatted_transfer_scalar_write): Use new function.

	* gfortran.dg/dtio_20.f03: New test.

From-SVN: r243765
2016-12-16 20:27:51 +00:00
Jakub Jelinek
c2d42d1619 re PR fortran/78757 (ICE with function returning a pointer to a character)
PR fortran/78757
	* trans-expr.c (gfc_conv_procedure_call): Emit DECL_EXPR for the
	type pstr var points to.

	* gfortran.dg/char_result_16.f90: New test.

From-SVN: r243761
2016-12-16 20:41:13 +01:00
Joseph Myers
d380fed1e0 * fr.po: Update.
From-SVN: r243759
2016-12-16 19:01:47 +00:00
Jonathan Wakely
f23e3d74a1 Reuse Doxygen comments for map::erase overloads
* include/bits/stl_map.h (map::erase(iterator)): Add Doxygen markup
	to reuse documentation for erase(const_iterator) overload.
	* include/bits/stl_multimap.h (multimap::erase(iterator)): Likewise.

From-SVN: r243758
2016-12-16 18:13:20 +00:00
Jonathan Wakely
36b8852641 Add assertion to _Rb_tree::erase to check for end iterators
* include/bits/stl_tree.h (_Rb_tree::_M_erase_aux(const_iterator)):
	Add assertion for undefined argument.
	(_Rb_tree::_M_erase_aux(const_iterator, const_iterator)): Call
	_M_erase_aux directly instead of through erase.
	(_Rb_tree::_M_erase_aux(const Key&)): Likewise.
	* testsuite/23_containers/map/modifiers/erase/end_neg.cc: New test.

From-SVN: r243757
2016-12-16 18:13:09 +00:00
Kyrylo Tkachov
680153bd1e [AArch64] Split X-reg UBFIZ into W-reg LSL when possible
* config/aarch64/aarch64.md: New define_split above bswap<mode>2.

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

From-SVN: r243756
2016-12-16 16:26:08 +00:00
Kyrylo Tkachov
bcb036c515 [AArch64] Split X-reg UBFX into W-reg LSR when possible
* config/aarch64/aarch64.md: New define_split above insv<mode>.

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

From-SVN: r243755
2016-12-16 16:24:26 +00:00
Jakub Jelinek
17f3bb6d25 Revert accidentally changed file.
From-SVN: r243754
2016-12-16 17:04:20 +01:00
Jakub Jelinek
7b45d0dfeb re PR c/78408 (C loop initial declarations generate wrong code)
PR c/78408
	* tree-ssa-ccp.c: Include tree-dfa.h.
	(optimize_memcpy): New function.
	(pass_fold_builtins::execute): Use it.  Remove useless conditional
	break after BUILT_IN_VA_*.

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

From-SVN: r243753
2016-12-16 16:57:43 +01:00
Marek Polacek
6b520e8d4a re PR tree-optimization/78819 (Wrong code with VRP caused by register assertions along default switch labels)
PR tree-optimization/78819
	* tree-vrp.c (find_switch_asserts): Return if the insertion limit is 0.
	Don't register an assertion if the default case shares a label with
	another case.

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

From-SVN: r243746
2016-12-16 14:19:44 +00:00
Wilco Dijkstra
ed2def05fe The negdi2 patterns for ARM and Thumb-2 are duplicated because Thumb-2 doesn't support RSC with an immediate.
The negdi2 patterns for ARM and Thumb-2 are duplicated because Thumb-2
doesn't support RSC with an immediate.  We can however emulate RSC with
zero using a shifted SBC.  If we add this to subsi3_carryin the negdi
patterns can be merged, simplifying things a bit.  This should generate
identical code in all cases.

    gcc/
        * config/arm/arm.md (subsi3_carryin): Add Thumb-2 RSC #0.
        (arm_negdi2) Rename to negdi2_insn, allow on Thumb-2.
        * config/arm/thumb2.md (thumb2_negdi2): Remove pattern.

From-SVN: r243745
2016-12-16 13:14:46 +00:00
Wilco Dijkstra
c67b6f2683 Thumb uses a special register allocation order to increase the use of low registers.
Thumb uses a special register allocation order to increase the use of low
registers.  Oddly enough, LR appears before R12, which means that LR must
be saved and restored even if R12 is available.  Swapping R12 and LR means
this simple example now uses R12 as a temporary (just like ARM):

int f(long long a, long long b)
{
  if (a < b) return 1;
  return a + b;
}

    gcc/
	* config/arm/arm.c (thumb_core_reg_alloc_order): Swap R12 and R14.

From-SVN: r243744
2016-12-16 12:59:41 +00:00
Claudiu Zissulescu
bfb688ae91 [ARC] Remove old prof patterns.
gcc/
2016-12-16  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (call_prof): Remove.
	(call_value_prof): Likewise.
	(sibcall_prof): Likewise.
	(sibcall_value_prof): Likewise.

From-SVN: r243743
2016-12-16 13:56:32 +01:00
Claudiu Zissulescu
e04ea1daa9 [ARC] Rework code for profiling.
gcc/
2016-12-16  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.h (LINK_SPEC): Tidy up.
	(ENDFILE_SPEC): Likewise.
	(LIB_SPEC): Likewise.
	(STARTFILE_SPEC): Include gcrt0 when profiling.
	(FUNCTION_PROFILER): Use __mcount.
	* config/arc/arc.opt (mucb-mcount): Remove.
	* doc/invoke.texi (ARC): Remove mucb-mcount doc.
	* arc/arc-protos.h (arc_profile_call): Remove.
	* config/arc/arc.c (write_profile_sections): Likewise.
	(arc_profile_call): Likewise.
	(unspec_prof_hash): Likewise.
	(unspec_prof_htab_eq): Likewise.
	(arc_legitimate_constant_p): Remove UNSPEC_PROF.
	(arc_reorg): Remove call to write_profile_sections.
	* config/arc/arc.md (call): Remove call to arc_profile_call.
	(call_value): Likewise.
	(sibcall): Likewise.
	(sibcall_value): Likewise.
	(define_constants): Remove UNSPEC_PROF.

libgcc/
	* config.host (arc*-*-linux-uclibc*): Remove libgmon, crtg, and
	crtgend.
	(arc*-*-elf*): Likewise.
	* config/arc/t-arc: Remove old gmon lib targets.
	* config/arc/crtg.S: Remove.
	* config/arc/crtgend.S: Likewise.
	* config/arc/gmon/atomic.h: Likewise.
	* config/arc/gmon/auxreg.h: Likewise.
	* config/arc/gmon/dcache_linesz.S: Likewise.
	* config/arc/gmon/gmon.c: Likewise.
	* config/arc/gmon/machine-gmon.h: Likewise.
	* config/arc/gmon/mcount.c: Likewise.
	* config/arc/gmon/prof-freq-stub.S: Likewise.
	* config/arc/gmon/prof-freq.c: Likewise.
	* config/arc/gmon/profil.S: Likewise.
	* config/arc/gmon/sys/gmon.h: Likewise.
	* config/arc/gmon/sys/gmon_out.h: Likewise.
	* config/arc/t-arc-newlib: Likewise.
	* config/arc/t-arc700-uClibc: Renamed to t-arc-uClibc.

From-SVN: r243742
2016-12-16 13:56:21 +01:00
Claudiu Zissulescu
d476b53c36 [ARC] Rework ARC600 64-bit multiplication patterns.
Previously users of mulsidi_600 and umulsidi_600 had to take care of
moving the multiplication result into the final destination themselves
(from the MUL64_OUT_REG register).  This commit converts these two
instruction patterns into insn_and_split patterns that now take the
final destination as an extra operand.  The insn_and_split patterns
generate the multiplication using two new multiplication instruction
patterns, then generate the move of the result from the MUL64_OUT_REG
register into the final destination.

This is a clean up commit, there should be no user visible changes
after this commit.

2016-12-16  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (mulsidi_600): Change to insn_and_split,
	generate new mul64 insn for core multiplication work.
	(umulsidi_600): Likewise, but use mulu64 insn.
	(mul64): New pattern, content taken from old mulsidi_600 insn
	pattern.
	(mulu64): Likewise, but using umulsidi_600.
	(mulsidi3): Remove move to destination, this is now handled by
	mulsidi_600 insn_and_split.
	(umulsidi3): Likewise, but using umulsidi_600.

From-SVN: r243741
2016-12-16 13:56:09 +01:00
Eric Botcazou
cc0ca4999b opt61.adb: New test.
* gnat.dg/opt61.adb: New test.
	* gnat.dg/opt61_pkg.ad[sb]: New helper.

From-SVN: r243740
2016-12-16 12:21:45 +00:00
Ville Voutilainen
6254952346 Implement LWG 2769, Redundant const in the return type of any_cast(const any&).
Implement LWG 2769, Redundant const in the return type of
any_cast(const any&).
* include/std/any (_AnyCast): New.
(any_cast(const any&)): Use it and add an explicit cast for return.
(any_cast(any&)): Likewise.
(any_cast(any&&)): Likewise.
* testsuite/20_util/any/misc/any_cast.cc: Add a test for a type
that has an explicit copy constructor.
*testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.

From-SVN: r243739
2016-12-16 13:34:45 +02:00
Richard Biener
b7fc43d7c7 re PR c++/71694 (store-data race with bitfields and tail-padding in C++)
2016-12-16  Richard Biener  <rguenther@suse.de>

	PR c++/71694
	* langhooks-def.h (lhd_unit_size_without_reusable_padding): Declare.
	(LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Adjust.
	* langhooks.h (struct lang_hooks_for_types): Add
	unit_size_without_reusable_padding.
	* langhooks.c (lhd_unit_size_without_reusable_padding): New.
	* stor-layout.c (finish_bitfield_representative): Use
	unit_size_without_reusable_padding langhook to decide on the
	last representatives size.

	cp/
	* cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare.
	(LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define.
	* cp-objcp-common.c (cp_unit_size_without_reusable_padding): New.

	* g++.dg/pr71694.C: New testcase.

From-SVN: r243738
2016-12-16 09:40:03 +00:00
Richard Biener
c4d5c5e6ac re PR middle-end/71632 (hang at -O3 on x86_64-linux-gnu)
2016-12-16  Richard Biener  <rguenther@suse.de>

	PR middle-end/71632
	* expr.c (expand_cond_expr_using_cmove): Bail out early if
	we end up recursing via TER.

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

From-SVN: r243737
2016-12-16 09:38:18 +00:00
Martin Sebor
7bd1e2edf9 PR bootstrap/78817 - stage2 bootstrap failure in vec.h:1613:5: error: argument 1 null where non-null expected after r243661
gcc/ChangeLog:
	* vec.h (vec<T, va_heap, vl_ptr>::safe_grow_cleared): Assert
	a pointer is non-null.

From-SVN: r243736
2016-12-15 19:57:22 -07:00
Ian Lance Taylor
2ae30b147b compiler: fix comments + fieldnames to match libgo source
A couple of the comments in the type descriptor code were out of date
    with respect to the names in libgo/go/runtime/type.go.  Fix up the
    comments and field names to bring them into sync.
    
    Reviewed-on: https://go-review.googlesource.com/34472

From-SVN: r243735
2016-12-16 00:34:37 +00:00
GCC Administrator
6f9ad634bb Daily bump.
From-SVN: r243734
2016-12-16 00:16:16 +00:00
Ian Lance Taylor
63ba3ad3ed compiler: fix off-by-1 array type len in Type::gc_symbol_constructor
Array type being built to hold GC var initializer was being created
    with an extra/unneeded slot. Fix up the code to insure that the array
    length matches the length of the initializer list.
    
    Reviewed-on: https://go-review.googlesource.com/34413

From-SVN: r243731
2016-12-15 23:44:13 +00:00
Ian Lance Taylor
62afb87d9c re PR go/78763 (go1: internal compiler error: in do_get_backend, at go/gofrontend/expressions.cc:8352)
PR go/78763
    compiler: call determine_types even for constant expressions
    
    We need to call determine_types even for constant expressions, since a
    constant expression may include code like unsafe.Sizeof(0).  Something
    needs to determine the type of the untyped 0, and that should be the
    determine_types pass.
    
    Implementing that triggered a compiler crash on test/const1.go because
    it permitted some erroneous constants to make it all the way to the
    backend.  Catch that case by checking whether we get a constant
    overflow error, and marking the expression invalid if we do.  This is
    a good change in any case, as previously we reported the same constant
    overflow error multiple times, and now we only report it once.
    
    Fixes GCC PR 78763.
    
    Reviewed-on: https://go-review.googlesource.com/34496

From-SVN: r243729
2016-12-15 22:47:43 +00:00
Andrew Senkevich
7cdb6e4c68 avx512bwintrin.h: Add new k-mask intrinsics.
* config/i386/avx512bwintrin.h: Add new k-mask intrinsics.
	* config/i386/avx512dqintrin.h: Ditto.
	* config/i386/avx512fintrin.h: Ditto.
	* config/i386/i386-builtin.def (__builtin_ia32_kmovb,
	__builtin_ia32_kmovd, __builtin_ia32_kmovq): New.
	(__builtin_ia32_kmov16): Rename to __builtin_ia32_kmovw.
	* config/i386/sse.md (kmov<mskmodesuffix>): New.

testsuite/ChangeLog:

	* gcc.target/i386/avx512bw-kmovd-1.c: New test.
	* gcc.target/i386/avx512bw-kmovd-2.c: Ditto.
	* gcc.target/i386/avx512bw-kmovd-3.c: Ditto.
	* gcc.target/i386/avx512bw-kmovd-4.c: Ditto.
	* gcc.target/i386/avx512bw-kmovq-1.c: Ditto.
	* gcc.target/i386/avx512bw-kmovq-2.c: Ditto.
	* gcc.target/i386/avx512bw-kmovq-3.c: Ditto.
	* gcc.target/i386/avx512bw-kmovq-4.c: Ditto.
	* gcc.target/i386/avx512dq-kmovb-2.c: Ditto.
	* gcc.target/i386/avx512dq-kmovb-3.c: Ditto.
	* gcc.target/i386/avx512dq-kmovb-4.c: Ditto.
	* gcc.target/i386/avx512dq-kmovb-5.c: Ditto.
	* gcc.target/i386/avx512f-kmovw-2.c: Ditto.
	* gcc.target/i386/avx512f-kmovw-3.c: Ditto.
	* gcc.target/i386/avx512f-kmovw-4.c: Ditto.
	* gcc.target/i386/avx512f-kmovw-5.c: Ditto.

From-SVN: r243728
2016-12-15 23:39:33 +01:00
Uros Bizjak
bdb5177687 i386.md (ffs<mode>2): Generate CCCmode flags register for TARGET_BMI.
* config/i386/i386.md (ffs<mode>2): Generate CCCmode flags register
	for TARGET_BMI.
	(ffssi2_no_cmove): Ditto.
	(*tzcnt<mode>_1_falsedep_1): New insn_and_split pattern.
	(*tzcnt<mode>_1_falsedep): New insn pattern.

	(LT_ZCNT): New mode iterator.
	(lt_zcnt): New mode attribute.
	(lt_zcnt_type): New mode attribute.
	(<lt_zcnt>_<mode>): Macroize expander from bmi_tzcnt_<mode> and
	lzcnt_<mode> using LT_ZCNT mode iterator.
	(*<lt_zcnt>_<mode>_falsedep_1): Macroize insn from
	*bmi_tzcnt_<mode>_falsedep_1 and *lzcnt_<mode>_falsedep_1
	using LT_ZCNT mode iterator.
	(*<lt_zcnt>_<mode>_falsedep): Macroize insn from
	*bmi_tzcnt_<mode>_falsedep and *lzcnt_<mode>_falsedep
	using LT_ZCNT mode iterator.
	(*<lt_zcnt>_<mode>): Macroize insn from *bmi_tzcnt_<mode>
	and *lzcnt_<mode> using LT_ZCNT mode iterator.
	* config/i386/i386-builtin.def (__builtin_ia32_tzcnt_u16)
	(__builtin_ia32_tzcnt_u32, __builtin_ia32_tzcnt_u64, __builtin_ctzs):
	Update for rename.

From-SVN: r243727
2016-12-15 23:23:46 +01:00
Janus Weil
f3e1097bc6 re PR fortran/78798 ([cleanup] some int-valued functions should be bool)
2016-12-15  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78798
	* gfortran.h (gfc_compare_derived_types,gfc_compare_types,
	gfc_compare_interfaces,gfc_has_vector_subscript): Return bool instead
	of int.
	* interface.c (compare_components): Ditto.
	(gfc_compare_union_types): Rename to compare_union_types, declare as
	static, return bool.
	(gfc_compare_derived_types): Return bool instead of int.
	(gfc_compare_types): Ditto.
	(compare_type): Ditto.
	(compare_rank): Ditto.
	(compare_type_rank): Ditto.
	(compare_type_rank_if): Ditto.
	(count_types_test): Ditto.
	(generic_correspondence): Ditto.
	(gfc_compare_interfaces): Ditto.
	(check_interface0): Ditto.
	(check_interface1): Ditto.
	(compare_allocatable): Ditto.
	(compare_parameter): Ditto.
	(gfc_has_vector_subscript): Ditto.
	(compare_actual_formal): Ditto.

From-SVN: r243726
2016-12-15 21:54:18 +01:00
Jakub Jelinek
155c990701 ipa-cp.c (class ipcp_bits_lattice): Formatting fixes.
* ipa-cp.c (class ipcp_bits_lattice): Formatting fixes.
	(print_ipcp_constant_value): Likewise.
	(ipcp_cloning_candidate_p): Likewise.
	(ipcp_bits_lattice::get_value_and_mask): Likewise.
	(ipcp_bits_lattice::meet_with_1): Likewise.
	(ipcp_bits_lattice::meet_with): Likewise.
	(initialize_node_lattices): Likewise.
	(ipcp_lattice::add_value): Likewise.
	(propagate_vals_accross_pass_through): Renamed to ...
	(propagate_vals_across_pass_through): ... this function.
	(propagate_vals_accross_ancestor): Renamed to ...
	(propagate_vals_across_ancestor): ... this.
	(propagate_scalar_accross_jump_function): Renamed to ...
	(propagate_scalar_across_jump_function): ... this.
	Adjust calls to above functions.
	(propagate_context_accross_jump_function): Renamed to ...
	(propagate_context_across_jump_function): ... this.
	(propagate_bits_accross_jump_function): Renamed to ...
	(propagate_bits_accross_jump_function): ... this.  Formatting fixes.
	(propagate_vr_accross_jump_function): Renamed to ...
	(propagate_vr_across_jump_function): ... this.
	(merge_agg_lats_step): Formatting fixes.
	(propagate_constants_accross_call): Renamed to ...
	(propagate_constants_across_call): ... this.  Adjust calls to above
	functions.
	(ipa_get_indirect_edge_target_1): Formatting fixes.
	(gather_context_independent_values): Likewise.
	(estimate_local_effects): Likewise.
	(add_all_node_vals_to_toposort): Likewise.
	(propagate_constants_topo): Adjust calls to above functions.
	(get_replacement_map): Formatting fixes.
	(dump_profile_updates): Likewise.
	(update_profiling_info): Likewise.
	(update_specialized_profile): Likewise.
	(create_specialized_node): Likewise.
	(find_more_contexts_for_caller_subset): Likewise.
	(decide_whether_version_node): Likewise.
	(identify_dead_nodes): Likewise.
	(ipcp_decision_stage): Likewise.
	(ipcp_store_bits_results): Likewise.
	(ipcp_store_vr_results): Likewise.
	(ipcp_driver): Likewise.

From-SVN: r243725
2016-12-15 21:51:39 +01:00
Jakub Jelinek
ce7888dae8 P0490R0 GB 20: decomposition declaration should commit to tuple interpretation early
P0490R0 GB 20: decomposition declaration should commit to tuple
	interpretation early
	* decl.c (get_tuple_size): Make static.  If inst is error_mark_node
	or non-complete type, return NULL_TREE, otherwise if
	lookup_qualified_name fails or doesn't fold into INTEGER_CST, return
	error_mark_node.
	(get_tuple_element_type, get_tuple_decomp_init): Make static.
	(cp_finish_decomp): Pass LOC to get_tuple_size.  If it returns
	error_mark_node, complain and fail.

	* g++.dg/cpp1z/decomp10.C (f1): Adjust expected diagnostics.

From-SVN: r243724
2016-12-15 21:42:11 +01:00
Nathan Sidwell
2a810dedce re PR c++/77585 (g++ incorrectly decides that member function is called without object in generic lambda)
PR c++/77585
	* pt.c (instantiate_decl): Push to class scope lambda resides
	within when instantiating a generic lambda function.

	PR c++/77585
	* g++.dg/cpp1y/pr77585.C: New.

From-SVN: r243723
2016-12-15 19:50:25 +00:00
David Malcolm
a3998c2fb1 Fix use-after-free lexing unterminated raw strings (PR preprocessor/78811)
gcc/ChangeLog:
	PR preprocessor/78680
	PR preprocessor/78811
	* input.c (struct selftest::lexer_test): Add field
	m_implicitly_expect_EOF.
	(selftest::lexer_error_sink): New class.
	(selftest::lexer_error_sink::s_singleton): New global.
	(selftest::lexer_test::lexer_test): Initialize new field
	"m_implicitly_expect_EOF".
	(selftest::lexer_test::~lexer_test): Conditionalize the
	check for the EOF token on the new field.
	(selftest::test_lexer_string_locations_raw_string_unterminated):
	New function.
	(selftest::input_c_tests): Call the new test.

libcpp/ChangeLog:
	PR preprocessor/78680
	PR preprocessor/78811
	* lex.c (_cpp_lex_direct): Only determine the end-location of
	the token and build a range for non-reserved start locations.
	Do not do it for EOF tokens.

From-SVN: r243721
2016-12-15 18:05:05 +00:00
Wilco Dijkstra
a3038e190b Using leaf_function_p in a backend is dangerous as it incorrectly returns false...
Using leaf_function_p in a backend is dangerous as it incorrectly returns
false if it is called while in a sequence (for example during prolog/epilog
generation).  Replace all uses with crtl->is_leaf as this is now initialized
early enough in ira.c.  This typically causes no code generation differences
unless there was a bug due to leaf_function_p returning the wrong value.

    gcc/
        * config/arm/arm.h (TARGET_BACKTRACE): Use crtl->is_leaf.
        * config/arm/arm.c (arm_option_check_internal): Improve comment.
        (thumb_force_lr_save): Use crtl->is_leaf.
        (arm_get_frame_offsets): Remove comment.  Use crtl->is_leaf.
        (thumb_far_jump_used_p): Remove comment.
        (arm_frame_pointer_required): Use crtl->is_leaf.

From-SVN: r243720
2016-12-15 17:51:46 +00:00
Richard Earnshaw
4d044f0bb7 [arm] Add missing arm-isa.h
From-SVN: r243718
2016-12-15 17:04:46 +00:00
Jakub Jelinek
e3889521e1 extend.texi: Clean up @xref{...} uses.
* doc/extend.texi: Clean up @xref{...} uses.
	* doc/invoke.texi: Likewise.

From-SVN: r243717
2016-12-15 17:47:47 +01:00
Richard Earnshaw
844af7671f [arm] Permit 'auto' in -mfpu
Now we finally have the infrastructure in place we can now derive
details of the FPU from a CPU entry.  This patch enables this for the
existing cores that already have an explicit FPU in their product names.

	* arm-fpus.def: Add CNAME field to all FPU definitions.
	* genopt.sh: Use explicit enumeration tags for FPU entries.
	* arm-tables.opt: Regenerated.
	* arm.opt (mfpu): Provide initial value.
	* arm-opts.h (enum fpu_type): Build the enumeration from the list of
	available FPUs.  Add 'auto' entry on the end.
	* arm.c (arm_configure_build_target): Only do explicit configuration
	of the FPU features if the selected FPU is not 'auto'.
	(arm_option_override): Adjust initialization of arm_fpu_index.
	Emit an error if we have a hard float ABI request, but the processor
	does not support floating-point.
	(arm_option_print): Handle -mfpu=auto.
	(arm_valid_target_attribute_rec): Don't permit fpu=auto in pragmas
	or function attributes.
	(arm_identify_fpu_from_isa): Handle effective soft-float when
	the FPU is automatically detected.
	* arm-cores.def (arm1136jf-s): Add feature ISA_FP_DBL.
	(arm1176jzf-s): Likewise.
	(mpcore): Likewise.
	(arm1156t2f-s): Likewise.

From-SVN: r243716
2016-12-15 16:04:08 +00:00
Richard Earnshaw
7eca7f0b44 [arm] Remove FEATURES field from FPU descriptions
Now that everything uses the new ISA features, we can remove the
FEATURES field from the FPU descriptions, along with all the macros
and definitions associated with it.

	* arm-fpus.def (ARM_FPU): Remove features field from all definitions.
	* arm.h (arm_fpu_feature_set): Delete typedef.
	(FPU_FL_NONE): Delete.
	(FPU_FL_NEON): Delete.
	(FPU_FL_FP16): Delete.
	(FPU_FL_CRYPTO): Delete.
	(FPU_FL_DBL): Delete.
	(FPU_FL_D32): Delete.
	(FPU_FL_VFPv2): Delete.
	(FPU_FL_VFPv3): Delete.
	(FPU_FL_VFPv4): Delete.
	(FPU_FL_VFPv5): Delete.
	(FPU_FL_AMRv8): Delete.
	(FPU_VFPv2): Delete.
	(FPU_VFPv3): Delete.
	(FPU_VFPv4): Delete.
	(FPU_VFPv5): Delete.
	(FPU_ARMv8): Delete.
	(FPU_DBL): Delete.
	(FPU_D32): Delete.
	(FPU_NEON): Delete.
	(FPU_CRYPTO): Delete.
	(FPU_FP16): Delete.
	(arm_fpu_desc): Delete features field.
	* arm.c (all_fpus): Don't initialize feature field.

From-SVN: r243715
2016-12-15 16:03:06 +00:00