1. 31 Jul, 2018 5 commits
    • Improve specs processing to allow %* in function arguments · 1102fd64
      2018-07-31  Olivier Hainque  <hainque@adacore.com>
      
      	* gcc.c (handle_spec_function): Accept a soft_matched_part
      	argument, as do_spec_1.  Pass it down to ...
      	(eval_spec_function): Accept a soft_matched_part argument,
      	and pass it down to ...
      	(do_spec_2): Accept a soft_matched_part argument, and pass
      	it down to do_spec_1.
      	(do_spec_1): Pass soft_matched_part to handle_spec_function.
      	(handle_braces): Update call to handle_spec_function.
      	(driver::set_up_specs): Update calls to do_spec_2.
      	(compare_debug_dump_opt_spec_function): Likewise.
      	(compare_debug_self_opt_spec_function): Likewise.
      
      From-SVN: r263087
      Olivier Hainque committed
    • Add support for -nolibc · f37866e8
      2018-06-07  Olivier Hainque  <hainque@adacore.com>
      
      	* common.opt (nolibc): New option.
      	* doc/invoke.texi (Link Options): Document it.
      	* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
      	* config/alpha/linux.h: Likewise.
      	* config/arc/elf.h: Likewise.
      	* config/arm/uclinux-elf.h: Likewise.
      	* config/arm/unknown-elf.h: Likewise.
      	* config/avr/avrlibc.h: Likewise.
      	* config/bfin/bfin.h: Likewise.
      	* config/bfin/linux.h: Likewise.
      	* config/bfin/uclinux.h: Likewise.
      	* config/darwin.h: Likewise.
      	* config/darwin10.h: Likewise.
      	* config/darwin12.h: Likewise.
      	* config/gnu-user.h: Likewise.
      	* config/lm32/uclinux-elf.h: Likewise.
      	* config/pa/pa-hpux11.h: Likewise.
      	* config/pa/pa64-hpux.h: Likewise.
      	* config/sparc/sparc.h: Likewise.
      
      From-SVN: r263083
      Olivier Hainque committed
    • Reverting 'AsyncI/O patch committed' as it is breaking bare-metal builds. · 1d4a51cf
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.texi: Add description of asynchronous I/O.
      	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
      	as volatile.
      	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
      	st_wait_async and change argument spec from ".X" to ".w".
      	(gfc_trans_wait): Pass ID argument via reference.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.dg/f2003_inquire_1.f03: Add write statement.
      	* gfortran.dg/f2003_io_1.f03: Add wait statement.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* Makefile.am: Add async.c to gfor_io_src.
      	Add async.h to gfor_io_headers.
      	* Makefile.in: Regenerated.
      	* gfortran.map: Add _gfortran_st_wait_async.
      	* io/async.c: New file.
      	* io/async.h: New file.
      	* io/close.c: Include async.h.
      	(st_close): Call async_wait for an asynchronous unit.
      	* io/file_pos.c (st_backspace): Likewise.
      	(st_endfile): Likewise.
      	(st_rewind): Likewise.
      	(st_flush): Likewise.
      	* io/inquire.c: Add handling for asynchronous PENDING
      	and ID arguments.
      	* io/io.h (st_parameter_dt): Add async bit.
      	(st_parameter_wait): Correct.
      	(gfc_unit): Add au pointer.
      	(st_wait_async): Add prototype.
      	(transfer_array_inner): Likewise.
      	(st_write_done_worker): Likewise.
      	* io/open.c: Include async.h.
      	(new_unit): Initialize asynchronous unit.
      	* io/transfer.c (async_opt): New struct.
      	(wrap_scalar_transfer): New function.
      	(transfer_integer): Call wrap_scalar_transfer to do the work.
      	(transfer_real): Likewise.
      	(transfer_real_write): Likewise.
      	(transfer_character): Likewise.
      	(transfer_character_wide): Likewise.
      	(transfer_complex): Likewise.
      	(transfer_array_inner): New function.
      	(transfer_array): Call transfer_array_inner.
      	(transfer_derived): Call wrap_scalar_transfer.
      	(data_transfer_init): Check for asynchronous I/O.
      	Perform a wait operation on any pending asynchronous I/O
      	if the data transfer is synchronous. Copy PDT and enqueue
      	thread for data transfer.
      	(st_read_done_worker): New function.
      	(st_read_done): Enqueue transfer or call st_read_done_worker.
      	(st_write_done_worker): New function.
      	(st_write_done): Enqueue transfer or call st_read_done_worker.
      	(st_wait): Document as no-op for compatibility reasons.
      	(st_wait_async): New function.
      	* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
      	add NOTE where necessary.
      	(get_gfc_unit): Likewise.
      	(init_units): Likewise.
      	(close_unit_1): Likewise. Call async_close if asynchronous.
      	(close_unit): Use macros LOCK and UNLOCK.
      	(finish_last_advance_record): Likewise.
      	(newunit_alloc): Likewise.
      	* io/unix.c (find_file): Likewise.
      	(flush_all_units_1): Likewise.
      	(flush_all_units): Likewise.
      	* libgfortran.h (generate_error_common): Add prototype.
      	* runtime/error.c: Include io.h and async.h.
      	(generate_error_common): New function.
      
      2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	Revert 'AsyncI/O patch committed'.
      	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
      		Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* testsuite/libgomp.fortran/async_io_1.f90: New test.
      	* testsuite/libgomp.fortran/async_io_2.f90: New test.
      	* testsuite/libgomp.fortran/async_io_3.f90: New test.
      	* testsuite/libgomp.fortran/async_io_4.f90: New test.
      	* testsuite/libgomp.fortran/async_io_5.f90: New test.
      	* testsuite/libgomp.fortran/async_io_6.f90: New test.
      	* testsuite/libgomp.fortran/async_io_7.f90: New test.
      
      From-SVN: r263082
      Andre Vieira committed
    • getenv_spec_function to prepend / to value for undef var · 58691d4a
      So the value can be used in places where an absolute path
      is expected.
      
      2018-07-31  Olivier Hainque  <hainque@adacore.com>
      
              * gcc.c (getenv_spec_function): Prepend '/' to value for
      	allowed undefined variables.
      
      From-SVN: r263081
      Olivier Hainque committed
    • Daily bump. · c89b64d7
      From-SVN: r263080
      GCC Administrator committed
  2. 30 Jul, 2018 16 commits
    • arm: Generate correct const_ints (PR86640) · 8f953899
      In arm_block_set_aligned_vect 8-bit constants are generated as zero-
      extended const_ints, not sign-extended as required.  Fix that.
      
      
      	PR target/86640
      	* config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
      	instead of GEN_INT.
      
      From-SVN: r263075
      Segher Boessenkool committed
    • PR libstdc++/86734 make reverse_iterator::operator-> more robust · a64ede72
      Implement the proposed resolution from LWG 1052, which also resolves
      DR 2118 by avoiding taking the address in the first place.
      
      	PR libstdc++/86734
      	* include/bits/stl_iterator.h (reverse_iterator::operator->): Call
      	_S_to_pointer (LWG 1052, LWG 2118).
      	(reverse_iterator::_S_to_pointer): Define overloaded helper functions.
      	* testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
      	* testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
      
      From-SVN: r263074
      Jonathan Wakely committed
    • Add workaround for aligned_alloc bug on AIX · 1b3b888d
      20_util/memory_resource/2.cc FAILs on AIX 7.2.0.0, because aligned_alloc
      incorrectly requires the alignment to be a multiple of sizeof(void*).
      
      This adds a workaround to the operator new overload taking an alignment
      value, to increase the alignment (and size) if needed.
      
      	* libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
      	workaround for aligned_alloc bug on AIX.
      	* testsuite/18_support/new_aligned.cc: New test.
      
      From-SVN: r263073
      Jonathan Wakely committed
    • testcase for 2-2 combine · 81bdfc1e
      
      gcc/testsuite/
      	PR rtl-optimization/85160
      	* gcc.target/powerpc/combine-2-2.c: New testcase.
      
      From-SVN: r263072
      Segher Boessenkool committed
    • * de.po, sv.po: Update. · fd5d8593
      From-SVN: r263070
      Joseph Myers committed
    • cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0. · 6ef4752b
      2018-07-30  Tom Tromey  <tom@tromey.com>
      
      	* cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.
      
      From-SVN: r263069
      Tom Tromey committed
    • tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL terminated string literal. · cff431d2
      2018-07-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
              terminated string literal.
      
      From-SVN: r263068
      Bernd Edlinger committed
    • combine: Allow combining two insns to two insns · c4c5ad1d
      This patch allows combine to combine two insns into two.  This helps
      in many cases, by reducing instruction path length, and also allowing
      further combinations to happen.  PR85160 is a typical example of code
      that it can improve.
      
      This patch does not allow such combinations if either of the original
      instructions was a simple move instruction.  In those cases combining
      the two instructions increases register pressure without improving the
      code.  With this move test register pressure does no longer increase
      noticably as far as I can tell.
      
      (At first I also didn't allow either of the resulting insns to be a
      move instruction.  But that is actually a very good thing to have, as
      should have been obvious).
      
      
      	PR rtl-optimization/85160
      	* combine.c (is_just_move): New function.
      	(try_combine): Allow combining two instructions into two if neither of
      	the original instructions was a move.
      
      From-SVN: r263067
      Segher Boessenkool committed
    • [ARM] libgcc: Fix comment for code working on architectures >= 4. · b7415975
      2018-07-30  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* config/arm/ieee754-df.S: Fix comment for code working on
      	architectures >= 4.
      	* config/arm/ieee754-sf.S: Likewise.
      
      From-SVN: r263066
      Christophe Lyon committed
    • doc: discourage const/volatile on register variables (PR 86673) · 4cc03514
      	PR target/86673
      	* doc/extend.texi (Global Register Variables): Discourage use of type
      	qualifiers.
      	(Local Register Variables): Likewise.
      
      From-SVN: r263065
      Alexander Monakov committed
    • Resync inline implementation of ceil_log2 (PR 86506) · 1dcadcf0
      In r262961 I only updated the out-of-line copy of ceil_log2.  This patch
      applies the same change to the other (inline) one.
      
      2018-07-30  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/86506
      	* hwint.h (ceil_log2): Resync with hwint.c implementation.
      
      From-SVN: r263064
      Richard Sandiford committed
    • lra: consider clobbers when selecting hard_regno to spill · dc843a85
      The idea behind the rclass loop in spill_hard_reg_in_range() seems to
      be: find a hard_regno, which in general conflicts with reload regno,
      but does not do so between `from` and `to`, and then do the live range
      splitting based on this information. To check the absence of conflicts,
      we make use of insn_bitmap, which does not contain insns which clobber
      the hard_regno.
      
      gcc/ChangeLog:
      
      2018-07-30  Ilya Leoshkevich  <iii@linux.ibm.com>
      
              PR target/86547
      	* lra-constraints.c (spill_hard_reg_in_range): When selecting the
      	hard_regno, make sure no insn between `from` and `to` clobbers it.
      
      From-SVN: r263063
      Ilya Leoshkevich committed
    • [libgomp, nvptx] Handle per-function max-threads-per-block in default dims · 4cdfee3f
      Currently parallel-loop-1.c fails at -O0 on a Quadro M1200, because one of the
      kernel launch configurations exceeds the resources available in the device, due
      to the default dimensions chosen by the runtime.
      
      This patch fixes that by taking the per-function max_threads_per_block into
      account when using the default dimensions.
      
      2018-07-30  Tom de Vries  <tdevries@suse.de>
      
      	* plugin/plugin-nvptx.c (MIN, MAX): Redefine.
      	(nvptx_exec): Ensure worker and vector default dims don't exceed
      	targ_fn->max_threads_per_block.
      
      From-SVN: r263062
      Tom de Vries committed
    • [libgomp, nvptx] Calculate default dims per device · 0b210c43
      The default dimensions are calculated using per-device properties, but
      initialized once and used on all devices.
      
      This patch fixes this problem by introducing per-device default dimensions.
      
      2018-07-30  Tom de Vries  <tdevries@suse.de>
      
      	* plugin/plugin-nvptx.c (struct ptx_device): Add default_dims field.
      	(nvptx_open_device): Init default_dims for device.
      	(nvptx_exec): Use default_dims from device.
      
      From-SVN: r263061
      Tom de Vries committed
    • [nvptx, offloading] Determine default workers at runtime · 605219e7
      Currently, if the user doesn't specify the number of workers for an openacc
      region, the compiler hardcodes it to a default value.
      
      This patch removes this functionality, such that the libgomp runtime can decide
      on a default value.
      
      2018-07-30  Cesar Philippidis  <cesar@codesourcery.com>
      	    Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
      	(PTX_DEFAULT_RUNTIME_DIM): ... this.
      	(nvptx_goacc_validate_dims): Set default worker and gang dims to
      	PTX_DEFAULT_RUNTIME_DIM.
      	(nvptx_dim_limit): Ignore GOMP_DIM_WORKER.
      
      Co-Authored-By: Tom de Vries <tdevries@suse.de>
      
      From-SVN: r263060
      Cesar Philippidis committed
    • Daily bump. · d634309f
      From-SVN: r263059
      GCC Administrator committed
  3. 29 Jul, 2018 2 commits
  4. 28 Jul, 2018 2 commits
    • C++: clean up cp_printer · 081b70a9
      This makes it easier to compare cp_printer with gcc_cxxdiag_char_table
      in c-format.c.
      
      No functional change intended.
      
      gcc/cp/ChangeLog:
      	* error.c (cp_printer): In the leading comment, move "%H" and "%I"
      	into alphabetical order, and add missing "%G" and "%K".  Within
      	the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
      	cases are in alphabetical order.
      
      From-SVN: r263046
      David Malcolm committed
    • Daily bump. · 0058495e
      From-SVN: r263045
      GCC Administrator committed
  5. 27 Jul, 2018 9 commits
    • constraints.md (wG constraint): Delete, no longer used. · 0fb9e668
      2018-07-27  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/constraints.md (wG constraint): Delete, no longer
      	used.
      	* config/rs6000/predicates.md (p9_fusion_reg_operand): Rename
      	predicate to reflect toc fusion has been deleted.
      	(toc_fusion_mem_raw): Delete, no longer used.
      	(toc_fusion_mem_wrapped): Likewise.
      	* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc
      	fusion mask bit.
      	* config/rs6000/rs6000-protos.h (fusion_wrap_memory_address):
      	Delete, no longer used.
      	* config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields
      	meant to be used for toc fusion.
      	(rs6000_debug_print_mode): Delete toc fusion debugging.
      	(rs6000_debug_reg_global): Likewise.
      	(rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc
      	fusion and secondary reload support that were never used.
      	(rs6000_option_override_internal): Delete TOC fusion, that was only
      	partially defined, and it did not work unless you also used the
      	-mcmodel= switch.
      	(rs6000_legitimate_address_p): Delete TOC fusion support.
      	(rs6000_opt_masks): Likewise.
      	(fusion_wrap_memory_address): Delete function, no longer used.
      	(fusion_split_address); Delete TOC fusion support.
      	* config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no
      	longer used with toc fusion being deleted.
      	(TARGET_TOC_FUSION_FP): Likewise.
      	* config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion
      	UNSPEC.
      	(toc fusion spliter): Delete TOC fusion support.
      	(toc_fusionload_<mode>): Likewise.
      	(toc_fusionload_di): Likewise.
      	(fusion_gpr_load_<mode>): Delete generator function, this insn no
      	longer needs to be named.  Rename predicate to delete TOC fusion.
      	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
      	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
      	(fusion_vsx_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
      	(fusion_vsx_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
      	(p9 fusion peephole2s): Rename predicate to delete TOC fusion.
      
      From-SVN: r263039
      Michael Meissner committed
    • Update .po files. · 96a54a49
      	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
      	ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
      	zh_TW.po: Update.
      
      From-SVN: r263036
      Joseph Myers committed
    • libgo: prune sighandler frames in runtime.sigprof · 5ac2fd0d
          
          When writing stack frames to the pprof CPU profile machinery, it is
          very important to insure that the frames emitted do not contain any
          frames corresponding to artifacts of the profiling process itself
          (signal handlers, sigprof, etc). This patch changes runtime.sigprof to
          strip out those frames from the raw stack generated by
          "runtime.callers".
          
          Fixes golang/go#26595.
          
          Reviewed-on: https://go-review.googlesource.com/126175
      
      From-SVN: r263035
      Ian Lance Taylor committed
    • extend.texi (Basic PowerPC Built-in Functions Available on ISA 2.05): Replace… · 58f51e5c
      extend.texi (Basic PowerPC Built-in Functions Available on ISA 2.05): Replace __uint128_t with __uint128 and __int128_t with __int128 in built-in...
      
      gcc/ChangeLog:
      
      2018-07-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* doc/extend.texi (Basic PowerPC Built-in Functions Available on
      	ISA 2.05):  Replace __uint128_t with __uint128 and __int128_t with
      	__int128 in built-in function prototypes.
      	(PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise.
      	(PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise.
      
      From-SVN: r263033
      Kelvin Nilsen committed
    • PR tree-optimization/86696 - ICE in handle_char_store at gcc/tree-ssa-strlen.c:3332 · e4bbeea2
      gcc/ChangeLog:
      
      	PR tree-optimization/86696
      	* tree-ssa-strlen.c (get_min_string_length): Handle all integer
      	types, including enums.
      	(handle_char_store): Be prepared for the above function to fail.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/86696
      	* gcc.dg/pr86696.C: New test.
      
      From-SVN: r263032
      Martin Sebor committed
    • Fixes to testcase for PR tree-optimization/86636 · 254c23d3
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/86636
      	* gcc.c-torture/compile/pr86636.c: Add dg-do compile.
      	Add dg-require-effective-target pthread.
      
      From-SVN: r263031
      David Malcolm committed
    • i386: Remove _Unwind_Frames_Increment · b72e71a3
      CET kernel has been changed to place a restore token on shadow stack for
      signal handler to enhance security.  It is usually transparent to user
      programs since kernel will pop the restore token when signal handler
      returns.  But when an exception is thrown from a signal handler, now
      we need to remove _Unwind_Frames_Increment to pop the the restore token
      from shadow stack.  Otherwise, we get
      
      FAIL: g++.dg/torture/pr85334.C   -O0  execution test
      FAIL: g++.dg/torture/pr85334.C   -O1  execution test
      FAIL: g++.dg/torture/pr85334.C   -O2  execution test
      FAIL: g++.dg/torture/pr85334.C   -O3 -g  execution test
      FAIL: g++.dg/torture/pr85334.C   -Os  execution test
      FAIL: g++.dg/torture/pr85334.C   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test
      
      	PR libgcc/85334
      	* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
      	Removed.
      
      From-SVN: r263030
      H.J. Lu committed
    • Disable strcmp/strncmp/memcmp inlining when optimization · 3d592d2d
      level is lower than 2 or Os
      
      From-SVN: r263028
      Qing Zhao committed
    • Daily bump. · 543f1a04
      From-SVN: r263027
      GCC Administrator committed
  6. 26 Jul, 2018 6 commits