1. 09 Jan, 2018 40 commits
    • * es.po: Update. · 311eca53
      From-SVN: r256408
      Joseph Myers committed
    • compiler: make non-escaping Bound_method_expression not heap allocate · 92bb0292
          
          Bound_method_expression needs a closure. Stack allocate the
          closure when it does not escape.
          
          Reviewed-on: https://go-review.googlesource.com/85638
      
      From-SVN: r256407
      Ian Lance Taylor committed
    • compiler: move some escape check to Mark_address_taken · eb80a362
          
          Move some check of escape state earlier, from get_backend to
          Mark_address_taken. So we can reclaim escape analysis Nodes
          before kicking off the backend (not done in this CL). Also it
          makes it easier to check variables and closures do not escape
          when the escape analysis is run for the runtime package (also
          not done in this CL).
          
          Reviewed-on: https://go-review.googlesource.com/85735
      
      From-SVN: r256406
      Ian Lance Taylor committed
    • compiler: support go:noescape cross package · 41a6da2d
          
          CL 83876 added support of go:noescape pragma, but it only works
          for functions called from the same package. The pragma did not
          take effect for exported functions that are not called from
          the same package. The reason is that top level function
          declarations are not traversed, and only reached from calls
          from other functions. This CL adds this support. The Traverse
          class is extended with a mode to traverse function declarations.
          
          Reviewed-on: https://go-review.googlesource.com/85637
      
      From-SVN: r256405
      Ian Lance Taylor committed
    • compiler: stack allocate non-escaping makeslice · e732b424
          
          If we're making a slice of constant size that does not need to
          escape, allocate it on stack.
          
          In lower, do not create temporaries for constant size makeslice,
          so that it is easier to detect the slice is constant size later.
          
          Reviewed-on: https://go-review.googlesource.com/85636
      
      From-SVN: r256404
      Ian Lance Taylor committed
    • compiler: delay escaping sliced arrays · 9ac55031
          
          Arrays that are sliced are set to escape in type checking, very
          early in compilation. The escape analysis runs later but cannot
          undo it. This CL changes it to not escape in the early stage.
          Later the escape analysis will make it escape when needed.
          
          Reviewed-on: https://go-review.googlesource.com/85635
      
      From-SVN: r256403
      Ian Lance Taylor committed
    • i386: Add a test for PR target/78585 · 8080b14f
      PR target/78585 has been fixed for GCC 7 by
      
      commit 7ed04d053eead43d87dff40fb4e2904219afc4d5
      Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
      Date:   Wed Nov 30 13:02:07 2016 +0000
      
      	* config/i386/i386.c (dimode_scalar_chain::convert_op): Avoid
      	sharing the SUBREG rtx between move and following insn.
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243018 138bc75d-0d04-0410-961f-82ee72b054a4
      
      	PR target/78585:
      	* gcc.target/i386/pr78585.c: New test.
      
      From-SVN: r256402
      H.J. Lu committed
    • PR libstdc++/80276 fix pretty printers for array smart pointers · 8273aa77
      	PR libstdc++/80276
      	* python/libstdcxx/v6/printers.py (SharedPointerPrinter)
      	(UniquePointerPrinter): Print correct template argument, not type of
      	the pointer.
      	(TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
      	a type.
      	* testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
      	array type.
      	* testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
      	weak_ptr of array types.
      
      From-SVN: r256400
      Jonathan Wakely committed
    • os/signal/internal/pty: build on Solaris · ee6019ce
          
          Patch from Rainer Orth.
          
          Reviewed-on: https://go-review.googlesource.com/87037
      
      From-SVN: r256399
      Ian Lance Taylor committed
    • compiler: make top-level decl for address-taken non-escaping locals · 81e0f092
          
          If a local variable's address is taken and passed out of its
          lexical scope, GCC backend may reuse the stack slot for the
          variable, not knowing it is still live through a pointer. In
          this case, we create a top-level temporary variable and let the
          user-defined variable refer to the temporary variable as its
          storage location. As the temporary variable is declared at the
          top level, its stack slot will remain live throughout the
          function.
          
          Reviewed-on: https://go-review.googlesource.com/84675
      
      	* go-gcc.cc (local_variable): Add decl_var parameter.
      
      From-SVN: r256398
      Cherry Zhang committed
    • re PR c++/83734 (ice in cxx_eval _statement_list, at cp/constexpr.c:3869) · 6ef72c36
      	PR c++/83734
      	* constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
      	in STATEMENT_LIST.  Remove unneeded assert.
      
      	* g++.dg/cpp0x/pr83734.C: New test.
      
      From-SVN: r256397
      Jakub Jelinek committed
    • re PR libstdc++/83709 (Inserting duplicates into an unordered associative… · 0f146257
      re PR libstdc++/83709 (Inserting duplicates into an unordered associative containers causes the container to invalidate iterators)
      
      2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/83709
      	* include/bits/hashtable_policy.h
      	(__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
      	__first != __last.
      	(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
      	(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
      	Add false_type parameter.
      	(_Insert_base::insert): Adapt.
      	* include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
      	Adapt.
      	(_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
      	 Add __n_elt parameter, defaulted to 1.
      	(_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
      	policy _M_need_rehash.
      	(_Hashtable::_M_merge_unique): Pass target number of elements to add to
      	produce only 1 rehash if necessary.
      	* testsuite/23_containers/unordered_map/insert/83709.cc: New.
      	* testsuite/23_containers/unordered_set/insert/83709.cc: New.
      
      From-SVN: r256396
      François Dumont committed
    • altivec.md (p8_vmrgow): Add support for V2DI, V2DF, V4SI, V4SF types. · 19d22f7c
      gcc/ChangeLog:
      
      2018-01-09  Carl Love  <cel@us.ibm.com>
      
      	* config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
      	V4SI, V4SF types.
      	(p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
      	* config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
      	VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
      	VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
      	* config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
      	P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
      	* config/rs6000/rs6000-protos.h: Add extern defition for
      	rs6000_generate_float2_double_code.
      	* config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
      	function.
      	* config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
      	(float2_v2df): Add define_expand.
      
      gcc/testsuite/ChangeLog:
      
      2017-01-09 Carl Love  <cel@us.ibm.com>
      
      	* gcc.target/powerpc/builtins-1.c (main): Add tests for vec_mergee and
      	vec_mergeo builtins with float, double, long long, unsigned long long,
      	bool long long  arguments.
      	* gcc.target/powerpc/builtins-3-runnable.c (main): Add test for
      	vec_float2 with double arguments.
      	* gcc.target/powerpc/builtins-mergew-mergow.c: New runable test for the
      	vec_mergew and vec_mergow builtins.
      
      From-SVN: r256395
      Carl Love committed
    • compiler: add escape analysis debug hash · 594d0e51
          
          Add a flag -fgo-debug-escape-hash for debugging escape analysis.
          It takes a binary string, optionally led by a "-", as argument.
          When specified, the escape analysis runs only on functions whose
          name is hashed to a value with matching suffix. The "-" sign
          negates the match, i.e. the analysis runs only on functions with
          non-matching hash.
      
          Reviewed-on: https://go-review.googlesource.com/83878
      
      	* lang.opt (fgo-debug-escape-hash): New option.
      	* go-c.h (struct go_create_gogo_args): Add debug_escape_hash
      	field.
      	* go-lang.c (go_langhook_init): Set debug_escape_hash field.
      	* gccgo.texi (Invoking gccgo): Document -fgo-debug-escape-hash.
      
      From-SVN: r256393
      Cherry Zhang committed
    • re PR fortran/83742 (ICE in gfc_is_simply_contiguous, at fortran/expr.c:5323) · d4319ef8
      2018-01-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83742
      	* expr.c (gfc_is_simply_contiguous): Check for NULL pointer.
      
      2018-01-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83742
      	* gfortran.dg/contiguous_6.f90: New test.
      
      From-SVN: r256391
      Steven G. Kargl committed
    • PR libstdc++/59253 Improve pretty printers for smart pointers · d2dfcf82
      	PR libstdc++/59253 (partial)
      	* python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
      	type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
      	(SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
      	children.
      	* testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
      	of unique_ptr printer.
      	* testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
      	output of shared_ptr printer.
      
      From-SVN: r256390
      Juraj Oršulić committed
    • compiler: use macro Unordered_map instead of std::unordered_map · 1eac10b3
          
          Per gcc/go/go-system.h, this is what it is supposed to be, to
          support wider platforms.
          
          Reviewed-on: https://go-review.googlesource.com/85975
      
      From-SVN: r256389
      Ian Lance Taylor committed
    • Forgot to commit changelog entry: · 888e79a7
      2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
      	function.
      	(do_ifelse): New function.
      	(do_isel): New function.
      	(do_sub3): New function.
      	(do_add3): New function.
      	(do_load_mask_compare): New function.
      	(do_overlap_load_compare): New function.
      	(expand_compare_loop): New function.
      	(expand_block_compare): Call expand_compare_loop() when appropriate.
      	* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
      	option description.
      	(-mblock-compare-inline-loop-limit): New option.
      
      From-SVN: r256388
      Aaron Sawdey committed
    • re PR rtl-optimization/83628 (performance regression when accessing arrays on alpha) · 49bb43be
      	PR target/83628
      	* combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
      	op_mode in the force_to_mode call.
      
      From-SVN: r256387
      Uros Bizjak committed
    • [AArch64] Use vec_perm_indices helper routines · 326ac20e
      This patch makes the AArch64 vec_perm_const code use the new
      vec_perm_indices routines, instead of checking each element individually.
      This means that they extend naturally to variable-length vectors.
      
      Also, aarch64_evpc_dup was the only function that generated rtl when
      testing_p is true, and that looked accidental.  The patch adds the
      missing check and then replaces the gen_rtx_REG/start_sequence/
      end_sequence stuff with an assert that no rtl is generated.
      
      2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
      	instead of checking each element individually.
      	(aarch64_evpc_uzp): Likewise.
      	(aarch64_evpc_zip): Likewise.
      	(aarch64_evpc_ext): Likewise.
      	(aarch64_evpc_rev): Likewise.
      	(aarch64_evpc_dup): Test the encoding for a single duplicated element,
      	instead of checking each element individually.  Return true without
      	generating rtl if
      	(aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
      	whether all selected elements come from the same input, instead of
      	checking each element individually.  Remove calls to gen_rtx_REG,
      	start_sequence and end_sequence and instead assert that no rtl is
      	generated.
      
      From-SVN: r256385
      Richard Sandiford committed
    • [AArch64] Reject (high (const (plus anchor offset))) · 509bb9b6
      The aarch64_legitimate_constant_p tests for HIGH and CONST seem
      to be the wrong way round: (high (const ...)) is valid rtl that
      could be passed in, but (const (high ...)) isn't.  As it stands,
      we disallow anchor+offset but allow (high anchor+offset).
      
      2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
      	order of HIGH and CONST checks.
      
      From-SVN: r256384
      Richard Sandiford committed
    • Fix permute handling when vectorising scatters · 7ad429a4
      As mentioned in https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01575.html ,
      the scatter handling in vectorizable_store seems to be dead code at the
      moment.  Enabling it with the vect_analyze_data_ref_access part of
      that patch triggered an ICE in the avx512f-scatter-*.c tests (which
      previously didn't use scatters).  The problem was that the NARROW
      and WIDEN handling uses permute_vec_elements to marshal the inputs,
      and permute_vec_elements expected the lhs of the stmt to be an SSA_NAME,
      which of course it isn't for stores.
      
      This patch makes permute_vec_elements create a fresh variable in this case.
      
      2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
      	if the destination isn't an SSA_NAME.
      
      From-SVN: r256383
      Richard Sandiford committed
    • re PR tree-optimization/83668 (wrong code with -O -fno-tree-dominator-opts -fgraphite-identity) · 82c066f5
      2018-01-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83668
      	* graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
      	move prologue...
      	(canonicalize_loop_form): ... here, renamed from ...
      	(canonicalize_loop_closed_ssa_form): ... this and amended to
      	swap successor edges for loop exit blocks to make us use
      	the RPO order we need for initial schedule generation.
      
      	* gcc.dg/graphite/pr83668.c: New testcase.
      
      From-SVN: r256381
      Richard Biener committed
    • Fix folding of Inf/NaN comparisons for -ftrapping-math (PR tree-optimization/64811). · e96a5786
      The folding of comparisons against Inf (to constants or comparisons
      with the maximum finite value) has various cases where it introduces
      or loses "invalid" exceptions for comparisons with NaNs.
      
      Folding x > +Inf to 0 should not be about HONOR_SNANS - ordered
      comparisons of both quiet and signaling NaNs should raise invalid.
      
      x <= +Inf is not the same as x == x, because again that loses an
      exception (equality comparisons don't raise exceptions except for
      signaling NaNs).
      
      x == +Inf is not the same as x > DBL_MAX, and a similar issue applies
      with the x != +Inf case - that transformation causes a spurious
      exception.
      
      This patch fixes the conditionals on the folding to avoid such
      introducing or losing exceptions.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu (where the
      cases involving spurious exceptions wouldn't have failed anyway before
      GCC 8 because of unordered comparisons wrongly always having formerly
      been used by the back end).  Also tested for powerpc-linux-gnu
      soft-float that this fixes many glibc math/ test failures that arose
      in that configuration because this folding affected the IBM long
      double support in libgcc (no such failures appeared for hard-float
      because of the bug of powerpc hard-float always using unordered
      comparisons) - some failures remain, but I believe them to be
      unrelated.
      
      	PR tree-optimization/64811
      gcc:
      	* match.pd: When optimizing comparisons with Inf, avoid
      	introducing or losing exceptions from comparisons with NaN.
      
      gcc/testsuite:
      	* gcc.dg/torture/inf-compare-1.c, gcc.dg/torture/inf-compare-2.c,
      	gcc.dg/torture/inf-compare-3.c, gcc.dg/torture/inf-compare-4.c,
      	gcc.dg/torture/inf-compare-5.c, gcc.dg/torture/inf-compare-6.c,
      	gcc.dg/torture/inf-compare-7.c, gcc.dg/torture/inf-compare-8.c:
      	New tests.
      	* gcc.c-torture/execute/ieee/fp-cmp-7.x: New file.
      
      From-SVN: r256380
      Joseph Myers committed
    • Add gcc_assert about stack alignment (PR sanitizer/82517). · aa5bfa8d
      2018-01-09  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/82517
      	* asan.c (shadow_mem_size): Add gcc_assert.
      
      From-SVN: r256378
      Martin Liska committed
    • re PR target/79883 (avr i18n: untranslated "interrupt" or "signal") · 684684c6
      	PR target/79883
      	* gcc.target/avr/torture/pr57631.c (dg-warning): Quote 'signal'.
      
      From-SVN: r256376
      Georg-Johann Lay committed
    • re PR target/82641 (Unable to enable crc32 for a certain function with target… · f676330e
      re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))
      
      2018-01-09  Tamar Christina  <tamar.christina@arm.com>                                                                          
      
              PR target/82641
              * gcc.target/arm/pragma_fpu_attribute.c: Rewrite to use
              no NEON and require softfp or hard float-abi.
              * gcc.target/arm/pragma_fpu_attribute_2.c: Likewise.
      
      From-SVN: r256375
      Tamar Christina committed
    • typo · 1f1229d5
      From-SVN: r256374
      Georg-Johann Lay committed
    • Don't save registers in main(). · dcbe9170
      gcc/
      	Don't save registers in main().
      	PR target/83737
      	* doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
      	* config/avr/avr.opt (-mmain-is-OS_task): New target option.
      	* config/avr/avr.c (avr_set_current_function): Don't error if
      	naked, OS_task or OS_main are specified at the same time.
      	(avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
      	OS_main.
      	(avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
      	attribute.
      	* common/config/avr/avr-common.c (avr_option_optimization_table):
      	Switch on -mmain-is-OS_task for optimizing compilations.
      
      From-SVN: r256373
      Georg-Johann Lay committed
    • re PR tree-optimization/83572 ([graphite] ICE in verify_dominators, at… · b25f84d0
      re PR tree-optimization/83572 ([graphite] ICE in verify_dominators, at dominance.c:1184 (error: dominator of 7 should be 15, not 13))
      
      2018-01-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83572
      	* graphite.c: Include cfganal.h.
      	(graphite_transform_loops): Connect infinite loops to exit
      	and remove fake edges at the end.
      
      	* gcc.dg/graphite/pr83572.c: New testcase.
      
      From-SVN: r256372
      Richard Biener committed
    • * ipa-inline.c (edge_badness): Revert accidental checkin. · b1a0199b
      From-SVN: r256370
      Jan Hubicka committed
    • re PR c++/80763 (-O3 causes error: inline clone in same comdat group list) · 6291062f
      
      	PR ipa/80763
      	* ipa-comdats.c (set_comdat_group): Only set comdat group of real
      	symbols; not inline clones.
      
      From-SVN: r256369
      Jan Hubicka committed
    • re PR target/83507 (ICE in internal_dfa_insn_code_* for powerpc targets) · 3a123ed7
      	PR target/83507
      	* modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
      	hard registers.  Formatting fixes.
      
      	* gcc.dg/sms-13.c: New test.
      
      From-SVN: r256368
      Jakub Jelinek committed
    • re PR preprocessor/83722 (the ICE dumper doesn't comment-out some error messages) · 5190f1f9
      	PR preprocessor/83722
      	* gcc.c (try_generate_repro): Pass
      	&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
      	&temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
      	do_report_bug.
      
      From-SVN: r256367
      Jakub Jelinek committed
    • re PR fortran/83741 (ICE in gfc_match_allocate, at fortran/match.c:4074) · 5e884ae3
      2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR Fortran/83741
      	* gfortran.dg/allocate_assumed_charlen_3.f90: New test.
      
      From-SVN: r256366
      Steven G. Kargl committed
    • libgo: update to Go1.10beta1 · 1a2f01ef
          
          Update the Go library to the 1.10beta1 release.
          
          Requires a few changes to the compiler for modifications to the map
          runtime code, and to handle some nowritebarrier cases in the runtime.
          
          Reviewed-on: https://go-review.googlesource.com/86455
      
      gotools/:
      	* Makefile.am (go_cmd_vet_files): New variable.
      	(go_cmd_buildid_files, go_cmd_test2json_files): New variables.
      	(s-zdefaultcc): Change from constants to functions.
      	(noinst_PROGRAMS): Add vet, buildid, and test2json.
      	(cgo$(EXEEXT)): Link against $(LIBGOTOOL).
      	(vet$(EXEEXT)): New target.
      	(buildid$(EXEEXT)): New target.
      	(test2json$(EXEEXT)): New target.
      	(install-exec-local): Install all $(noinst_PROGRAMS).
      	(uninstall-local): Uninstasll all $(noinst_PROGRAMS).
      	(check-go-tool): Depend on $(noinst_PROGRAMS).  Copy down
      	objabi.go.
      	(check-runtime): Depend on $(noinst_PROGRAMS).
      	(check-cgo-test, check-carchive-test): Likewise.
      	(check-vet): New target.
      	(check): Depend on check-vet.  Look at cmd_vet-testlog.
      	(.PHONY): Add check-vet.
      	* Makefile.in: Rebuild.
      
      From-SVN: r256365
      Ian Lance Taylor committed
    • match.c (gfc_match_allocate): Check for NULL pointer. · 8799df67
      2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* match.c (gfc_match_allocate): Check for NULL pointer.
      
      From-SVN: r256364
      Steven G. Kargl committed
    • RISC-V: Fix -msave-restore bug with sibcalls. · c8a0c7b6
      	2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
      		    Kito Cheng  <kito.cheng@gmail.com>
      
      	gcc/
      	* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
      	(riscv_leaf_function_p): Delete.
      	(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
      
      	2018-01-08  Chih-Mao Chen <pkmx.tw@gmail.com>
      		    Monk Chiang  <sh.chiang04@gmail.com>
      
      	gcc/testsuite/
      	* gcc.target/riscv/save-restore-1.c: New.
      
      From-SVN: r256362
      Jim Wilson committed
    • Daily bump. · b48ae4b0
      From-SVN: r256361
      GCC Administrator committed