1. 17 Dec, 2016 6 commits
    • gmon: Remove empty directory. · de34320f
      2016-12-17  Matthias Klose  <doko@ubuntu.com>
      
              * config/arc/gmon: Remove empty directory.
      
      From-SVN: r243775
      Matthias Klose committed
    • avx512bwintrin.h: Add new k-mask intrinsics. · 75d727d2
      	* 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
      Andrew Senkevich committed
    • re PR fortran/78239 (ICE in char_len_param_value, at fortran/decl.c:926, with -fimplicit-none) · 52fd48ae
      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
      Thomas Koenig committed
    • i386.md (*tzcnt<mode>_1): Merge *tzcnt<mode>_1_falsedep_1 and *tzcnt<mode>_1 to… · c5b1ea25
      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
      Uros Bizjak committed
    • byte-in-either-range-0.c: New test. · 6040f6d4
      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
      Kelvin Nilsen committed
    • Daily bump. · 68dde2bf
      From-SVN: r243769
      GCC Administrator committed
  2. 16 Dec, 2016 23 commits
    • compiler: add containing Bfunction to some backend interfaces. · 8220e3f9
          
          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
      Than McIntosh committed
    • re PR fortran/78662 ([F03] Incorrect parsing of quotes in the… · 5cdc4b0e
      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
      Jerry DeLisle committed
    • re PR fortran/78757 (ICE with function returning a pointer to a character) · c2d42d16
      	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
      Jakub Jelinek committed
    • * fr.po: Update. · d380fed1
      From-SVN: r243759
      Joseph Myers committed
    • Reuse Doxygen comments for map::erase overloads · f23e3d74
      	* 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
      Jonathan Wakely committed
    • Add assertion to _Rb_tree::erase to check for end iterators · 36b88526
      	* 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
      Jonathan Wakely committed
    • [AArch64] Split X-reg UBFIZ into W-reg LSL when possible · 680153bd
      	* config/aarch64/aarch64.md: New define_split above bswap<mode>2.
      
      	* gcc.target/aarch64/ubfiz_lsl_1.c: New test.
      
      From-SVN: r243756
      Kyrylo Tkachov committed
    • [AArch64] Split X-reg UBFX into W-reg LSR when possible · bcb036c5
      	* config/aarch64/aarch64.md: New define_split above insv<mode>.
      
      	* gcc.target/aarch64/ubfx_lsr_1.c: New test.
      
      From-SVN: r243755
      Kyrylo Tkachov committed
    • Revert accidentally changed file. · 17f3bb6d
      From-SVN: r243754
      Jakub Jelinek committed
    • re PR c/78408 (C loop initial declarations generate wrong code) · 7b45d0df
      	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
      Jakub Jelinek committed
    • re PR tree-optimization/78819 (Wrong code with VRP caused by register assertions… · 6b520e8d
      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
      Marek Polacek committed
    • The negdi2 patterns for ARM and Thumb-2 are duplicated because Thumb-2 doesn't… · ed2def05
      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
      Wilco Dijkstra committed
    • Thumb uses a special register allocation order to increase the use of low registers. · c67b6f26
      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
      Wilco Dijkstra committed
    • [ARC] Remove old prof patterns. · bfb688ae
      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
      Claudiu Zissulescu committed
    • [ARC] Rework code for profiling. · e04ea1da
      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
      Claudiu Zissulescu committed
    • [ARC] Rework ARC600 64-bit multiplication patterns. · d476b53c
      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
      Claudiu Zissulescu committed
    • opt61.adb: New test. · cc0ca499
      	* gnat.dg/opt61.adb: New test.
      	* gnat.dg/opt61_pkg.ad[sb]: New helper.
      
      From-SVN: r243740
      Eric Botcazou committed
    • Implement LWG 2769, Redundant const in the return type of any_cast(const any&). · 62549523
      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
      Ville Voutilainen committed
    • re PR c++/71694 (store-data race with bitfields and tail-padding in C++) · b7fc43d7
      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
      Richard Biener committed
    • re PR middle-end/71632 (hang at -O3 on x86_64-linux-gnu) · c4d5c5e6
      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
      Richard Biener committed
    • PR bootstrap/78817 - stage2 bootstrap failure in vec.h:1613:5: error: argument 1… · 7bd1e2ed
      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
      Martin Sebor committed
    • compiler: fix comments + fieldnames to match libgo source · 2ae30b14
          
          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
      Ian Lance Taylor committed
    • Daily bump. · 6f9ad634
      From-SVN: r243734
      GCC Administrator committed
  3. 15 Dec, 2016 11 commits
    • compiler: fix off-by-1 array type len in Type::gc_symbol_constructor · 63ba3ad3
          
          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
      Ian Lance Taylor committed
    • re PR go/78763 (go1: internal compiler error: in do_get_backend, at… · 62afb87d
      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
      Ian Lance Taylor committed
    • avx512bwintrin.h: Add new k-mask intrinsics. · 7cdb6e4c
      	* 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
      Andrew Senkevich committed
    • i386.md (ffs<mode>2): Generate CCCmode flags register for TARGET_BMI. · bdb51776
      	* 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
      Uros Bizjak committed
    • re PR fortran/78798 ([cleanup] some int-valued functions should be bool) · f3e1097b
      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
      Janus Weil committed
    • ipa-cp.c (class ipcp_bits_lattice): Formatting fixes. · 155c9907
      	* 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
      Jakub Jelinek committed
    • P0490R0 GB 20: decomposition declaration should commit to tuple interpretation early · ce7888da
      	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
      Jakub Jelinek committed
    • re PR c++/77585 (g++ incorrectly decides that member function is called without… · 2a810ded
      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
      Nathan Sidwell committed
    • Fix use-after-free lexing unterminated raw strings (PR preprocessor/78811) · a3998c2f
      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
      David Malcolm committed
    • Using leaf_function_p in a backend is dangerous as it incorrectly returns false... · a3038e19
      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
      Wilco Dijkstra committed
    • [arm] Add missing arm-isa.h · 4d044f0b
      From-SVN: r243718
      Richard Earnshaw committed