1. 14 Dec, 2018 40 commits
    • re PR target/88489 (FAIL: gcc.target/i386/avx512f-vfixupimmss-2.c execution test) · 07179718
      	PR target/88489
      	* config/i386/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator.
      	(avx512f_sfixupimm<mode><mask_name><round_saeonly_name>): Use it
      	instead of UNSPEC_FIXUPIMM.
      
      	* gcc.target/i386/avx512vl-vfixupimmsd-2.c: New test.
      	* gcc.target/i386/avx512vl-vfixupimmss-2.c: New test.
      
      From-SVN: r267160
      Jakub Jelinek committed
    • re PR rtl-optimization/88478 (valgrind error in cselib_record_sets) · bbc8d04f
      	PR rtl-optimization/88478
      	* cselib.c (cselib_record_sets): Move sets[i].src_elt tests
      	after REG_P (dest) test.
      
      	* g++.dg/opt/pr88478.C: New test.
      
      From-SVN: r267159
      Jakub Jelinek committed
    • PR tree-optimization/88372 - alloc_size attribute is ignored on function pointers · 302db8ba
      gcc/ChangeLog:
      
      	PR tree-optimization/88372
      	* calls.c (maybe_warn_alloc_args_overflow): Handle function pointers.
      	* tree-object-size.c (alloc_object_size): Same.  Simplify.
      	* doc/extend.texi (Object Size Checking): Update.
      	(Other Builtins): Add __builtin_object_size.
      	(Common Type Attributes): Add alloc_size.
      	(Common Variable Attributes): Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/88372
      	* gcc.dg/Walloc-size-larger-than-18.c: New test.
      	* gcc.dg/builtin-object-size-19.c: Same.
      
      From-SVN: r267158
      Martin Sebor committed
    • PR tree-optimization/87096 - Optimised snprintf is not POSIX conformant · 3e6837c2
      gcc/ChangeLog:
      
      	PR rtl-optimization/87096
      	* gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Avoid
      	folding calls whose bound may exceed INT_MAX.  Diagnose bound ranges
      	that exceed the limit.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/87096
      	* gcc.dg/tree-ssa/builtin-snprintf-4.c: New test.
      
      From-SVN: r267157
      Martin Sebor committed
    • PR 79738 - Documentation for __attribute__((const)) slightly misleading · 92863013
      gcc/ChangeLog:
      	* doc/extend.texi (attribute const, pure): Clarify.
      
      From-SVN: r267156
      Martin Sebor committed
    • [PR c++/87814] undefer deferred noexcept on tsubst if request · 3fd156b1
      tsubst_expr and tsubst_copy_and_build are not expected to handle
      DEFERRED_NOEXCEPT exprs, but if tsubst_exception_specification takes a
      DEFERRED_NOEXCEPT expr with !defer_ok, it just passes the expr on for
      tsubst_copy_and_build to barf.
      
      This patch arranges for tsubst_exception_specification to combine the
      incoming args with those already stored in a DEFERRED_NOEXCEPT, and
      then substitute them into the pattern, when retaining a deferred
      noexcept is unacceptable.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/87814
      	* pt.c (tsubst_exception_specification): Handle
      	DEFERRED_NOEXCEPT with !defer_ok.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/87814
      	* g++.dg/cpp1z/pr87814.C: New.
      
      From-SVN: r267155
      Alexandre Oliva committed
    • x86; Add -mmanual-endbr and cf_check function attribute · 06553c89
      Currently GCC inserts ENDBR instruction at entries of all non-static
      functions, unless LTO compilation is used.  Marking all functions,
      which are not called indirectly with nocf_check attribute, is not
      ideal since 99% of functions in a program may be of this kind.
      
      This patch adds -mmanual-endbr and cf_check function attribute.  They
      can be used together with -fcf-protection such that ENDBR instruction
      is inserted only at entries of functions with cf_check attribute.  It
      can limit number of ENDBR instructions to reduce program size.
      
      gcc/
      
      	* config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR
      	at the function entry only when -mmanual-endbr isn't used or
      	there is cf_check function attribute.
      	(ix86_attribute_table): Add cf_check.
      	* config/i386/i386.opt: Add -mmanual-endbr.
      	* doc/extend.texi: Document cf_check attribute.
      	* doc/invoke.texi: Document -mmanual-endbr.
      
      gcc/testsuite/
      
      	* gcc.target/i386/cf_check-1.c: New test.
      	* gcc.target/i386/cf_check-2.c: Likewise.
      	* gcc.target/i386/cf_check-3.c: Likewise.
      	* gcc.target/i386/cf_check-4.c: Likewise.
      	* gcc.target/i386/cf_check-5.c: Likewise.
      
      From-SVN: r267154
      H.J. Lu committed
    • Missing changes from "Adjust copy/copyin/copyout/create for OpenACC 2.5" · c759830b
      Most of that patch's changes were already committed as part of r261813 "Update
      OpenACC data clause semantics to the 2.5 behavior", but not all of them.
      
      	libgomp/
      	* oacc-mem.c (acc_present_or_create): Remove definition and change
      	to alias of acc_create.
      	(acc_present_or_copyin): Remove definition and change to alias of
      	acc_copyin.
      	* oacc-parallel.c (GOACC_enter_exit_data): Call acc_create instead
      	of acc_present_or_create.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-1.c: Remove.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-5.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-6.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-7.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-8.c: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-1.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-3.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-4.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-5.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-6.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-7.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-8.f: Likewise.
      
      Co-Authored-By: Chung-Lin Tang <cltang@codesourcery.com>
      
      From-SVN: r267153
      Thomas Schwinge committed
    • [PR88495] An OpenACC async queue is always synchronized with itself · f847198e
      An OpenACC async queue is always synchronized with itself, so invocations like
      "#pragma acc wait(0) async(0)", or "acc_wait_async (0, 0)" don't make a lot of
      sense, but are still valid.
      
      	libgomp/
      	PR libgomp/88495
      	* plugin/plugin-nvptx.c (nvptx_wait_async): Don't refuse
      	"identical parameters".
      	* testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c: Update.
      	* testsuite/libgomp.oacc-c-c++-common/lib-80.c: Remove.
      
      From-SVN: r267152
      Thomas Schwinge committed
    • [PR88484] OpenACC wait directive without wait argument but with async clause · c8ab8aab
      We don't correctly handle "#pragma acc wait async (a)" for "a >= 0", handling
      as a no-op whereas it should enqueue the appropriate wait operations on
      "async (a)".
      
      	libgomp/
      	PR libgomp/88484
      	* oacc-parallel.c (GOACC_wait): Correct handling for "async >= 0".
      	* testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c: New file.
      
      From-SVN: r267151
      Thomas Schwinge committed
    • [PR88407] [OpenACC] Correctly handle unseen async-arguments · 1404af62
      ... which turn the operation into a no-op.
      
      	libgomp/
      	PR libgomp/88407
      	* plugin/plugin-nvptx.c (nvptx_async_test, nvptx_wait)
      	(nvptx_wait_async): Unseen async-argument is a no-op.
      	* testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Update.
      	* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-79.c: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-12.f90: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-71.c: Merge into...
      	* testsuite/libgomp.oacc-c-c++-common/lib-69.c: ... this.  Update.
      	* testsuite/libgomp.oacc-c-c++-common/lib-77.c: Merge into...
      	* testsuite/libgomp.oacc-c-c++-common/lib-74.c: ... this.  Update
      
      From-SVN: r267150
      Thomas Schwinge committed
    • Revise libgomp.oacc-c-c++-common/data-2-lib.c, libgomp.oacc-c-c++-common/data-2.c · 7de562ee
      These are meant to be functionally equivalent (but no longer are), just using
      different means.  Also, use the OpenACC "*_async" functions recently added.
      
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c: Revise.
      	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Likewise.
      
      From-SVN: r267149
      Thomas Schwinge committed
    • Correctly describe OpenACC async/wait dependencies · 17469af7
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c: Adjust.
      	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-3.c: Likewise.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      From-SVN: r267148
      Chung-Lin Tang committed
    • [PR88370] acc_get_cuda_stream/acc_set_cuda_stream: acc_async_sync, acc_async_noval · 18c247cc
      Per my reading of the OpenACC specification (and as supported by secondary
      documentation, such as code examples, or presentations), it's valid to call
      "acc_get_cuda_stream"/"acc_set_cuda_stream" also with "acc_async_sync",
      "acc_async_noval" arguments, not just with the nonnegative values as currently
      implemented.
      
      	libgomp/
      	PR libgomp/88370
      	* libgomp.texi (acc_get_current_cuda_context, acc_get_cuda_stream)
      	(acc_set_cuda_stream): Clarify.
      	* oacc-cuda.c (acc_get_cuda_stream, acc_set_cuda_stream): Use
      	"async_valid_p".
      	* plugin/plugin-nvptx.c (nvptx_set_cuda_stream): Refuse "async ==
      	acc_async_sync".
      	* testsuite/libgomp.oacc-c-c++-common/acc_set_cuda_stream-1.c: New file.
      	* testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-84.c: Update.
      	* testsuite/libgomp.oacc-c-c++-common/lib-85.c: Likewise.
      
      From-SVN: r267147
      Thomas Schwinge committed
    • Add user-friendly diagnostics for OpenACC loop parallelism assigned · 5d390fd3
      	gcc/
      	* omp-offload.c (inform_oacc_loop): New function.
      	(execute_oacc_device_lower): Use it to display loop parallelism.
      	gcc/testsuite/
      	* c-c++-common/goacc/note-parallelism.c: New test.
      	* gfortran.dg/goacc/note-parallelism.f90: New test.
      	* c-c++-common/goacc/classify-kernels-unparallelized.c: Update.
      	* c-c++-common/goacc/classify-kernels.c: Likewise.
      	* c-c++-common/goacc/classify-parallel.c: Likewise.
      	* c-c++-common/goacc/classify-routine.c: Likewise.
      	* c-c++-common/goacc/kernels-1.c: Likewise.
      	* c-c++-common/goacc/kernels-double-reduction-n.c: Likewise.
      	* c-c++-common/goacc/kernels-double-reduction.c: Likewise.
      	* gfortran.dg/goacc/classify-kernels-unparallelized.f95: Likewise.
      	* gfortran.dg/goacc/classify-kernels.f95: Likewise.
      	* gfortran.dg/goacc/classify-parallel.f95: Likewise.
      	* gfortran.dg/goacc/classify-routine.f95: Likewise.
      	* gfortran.dg/goacc/kernels-loop-inner.f95: Likewise.
      
      Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
      
      From-SVN: r267146
      Thomas Schwinge committed
    • Repair liboffloadmic after "(Partial) OpenMP 5.0 support for GCC 9" · 890b87d1
      ..., which now failed to build, as follows:
      
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          [...]/source-gcc/liboffloadmic/runtime/offload.h:220:12: error: conflicting declaration of C function 'int omp_target_is_present(void*, int)'
            220 | extern int omp_target_is_present(
                |            ^~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload.h:45,
                           from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          ./../libgomp/omp.h:166:12: note: previous declaration 'int omp_target_is_present(const void*, int)'
            166 | extern int omp_target_is_present (const void *, int) __GOMP_NOTHROW;
                |            ^~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          [...]/source-gcc/liboffloadmic/runtime/offload.h:236:12: error: conflicting declaration of C function 'int omp_target_memcpy(void*, void*, size_t, size_t, size_t, int, int)'
            236 | extern int omp_target_memcpy(
                |            ^~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload.h:45,
                           from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          ./../libgomp/omp.h:167:12: note: previous declaration 'int omp_target_memcpy(void*, const void*, long unsigned int, long unsigned int, long unsigned int, int, int)'
            167 | extern int omp_target_memcpy (void *, const void *, __SIZE_TYPE__,
                |            ^~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          [...]/source-gcc/liboffloadmic/runtime/offload.h:262:12: error: conflicting declaration of C function 'int omp_target_memcpy_rect(void*, void*, size_t, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, int, int)'
            262 | extern int omp_target_memcpy_rect(
                |            ^~~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload.h:45,
                           from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          ./../libgomp/omp.h:170:12: note: previous declaration 'int omp_target_memcpy_rect(void*, const void*, long unsigned int, int, const long unsigned int*, const long unsigned int*, const long unsigned int*, const long unsigned int*, const long unsigned int*, int, int)'
            170 | extern int omp_target_memcpy_rect (void *, const void *, __SIZE_TYPE__, int,
                |            ^~~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          [...]/source-gcc/liboffloadmic/runtime/offload.h:285:12: error: conflicting declaration of C function 'int omp_target_associate_ptr(void*, void*, size_t, size_t, int)'
            285 | extern int omp_target_associate_ptr(
                |            ^~~~~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload.h:45,
                           from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          ./../libgomp/omp.h:177:12: note: previous declaration 'int omp_target_associate_ptr(const void*, const void*, long unsigned int, long unsigned int, int)'
            177 | extern int omp_target_associate_ptr (const void *, const void *, __SIZE_TYPE__,
                |            ^~~~~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          [...]/source-gcc/liboffloadmic/runtime/offload.h:299:12: error: conflicting declaration of C function 'int omp_target_disassociate_ptr(void*, int)'
            299 | extern int omp_target_disassociate_ptr(
                |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
          In file included from [...]/source-gcc/liboffloadmic/runtime/offload.h:45,
                           from [...]/source-gcc/liboffloadmic/runtime/offload_common.h:43,
                           from [...]/source-gcc/liboffloadmic/runtime/dv_util.cpp:31:
          ./../libgomp/omp.h:179:12: note: previous declaration 'int omp_target_disassociate_ptr(const void*, int)'
            179 | extern int omp_target_disassociate_ptr (const void *, int) __GOMP_NOTHROW;
                |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
          Makefile:904: recipe for target 'liboffloadmic_target_la-dv_util.lo' failed
          make[3]: *** [liboffloadmic_target_la-dv_util.lo] Error 1
          make[3]: Leaving directory '[...]/build-gcc-offload-x86_64-intelmicemul-linux-gnu/x86_64-intelmicemul-linux-gnu/liboffloadmic'
          Makefile:1031: recipe for target 'all-recursive' failed
          make[2]: *** [all-recursive] Error 1
          make[2]: Leaving directory '[...]/build-gcc-offload-x86_64-intelmicemul-linux-gnu/x86_64-intelmicemul-linux-gnu/liboffloadmic'
          Makefile:12707: recipe for target 'all-target-liboffloadmic' failed
          make[1]: *** [all-target-liboffloadmic] Error 2
          make[1]: Leaving directory '[...]/build-gcc-offload-x86_64-intelmicemul-linux-gnu'
          Makefile:941: recipe for target 'all' failed
          make: *** [all] Error 2
      
      	liboffloadmic/
      	* runtime/offload.h (omp_target_is_present, omp_target_memcpy)
      	(omp_target_memcpy_rect, omp_target_associate_ptr)
      	(omp_target_disassociate_ptr): Adjust to libgomp changes.
      
      From-SVN: r267145
      Thomas Schwinge committed
    • [PR86823] retain deferred access checks from outside firewall · b9677834
      We used to preserve deferred access check along with resolved template
      ids, but a tentative parsing firewall introduced additional layers of
      deferred access checks, so that we don't preserve the checks we
      want to any more.
      
      This patch moves the deferred access checks from outside the firewall
      into it.
      
      
      From: Jason Merrill <jason@redhat.com>
      for  gcc/cp/ChangeLog
      
      	PR c++/86823
      	* parser.c (cp_parser_template_id): Rearrange deferred access
      	checks into the firewall.
      
      From: Alexandre Oliva <aoliva@redhat.com>
      for  gcc/testsuite/ChangeLog
      
      	PR c++/86823
      	* g++.dg/pr86823.C: New.
      
      From-SVN: r267144
      Alexandre Oliva committed
    • re PR c++/82294 (Array of objects with constexpr constructors initialized from… · 0fca07e3
      re PR c++/82294 (Array of objects with constexpr constructors initialized from space-inefficient memory image)
      
      	PR c++/82294
      	PR c++/87436
      	* expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument.
      	* expr.c (categorize_ctor_elements_1): Likewise.  Compute it like
      	p_nz_elts, except don't multiply it by mult.  Adjust recursive call.
      	Fix up COMPLEX_CST handling.
      	(categorize_ctor_elements): Add p_unique_nz_elts argument, initialize
      	it and pass it through to categorize_ctor_elements_1.
      	(mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers.
      	* gimplify.c (gimplify_init_constructor): Likewise.  Don't force
      	ctor into readonly data section if num_unique_nonzero_elements is
      	smaller or equal to 1/8 of num_nonzero_elements and size is >= 64
      	bytes.
      
      	* g++.dg/tree-ssa/pr82294.C: New test.
      	* g++.dg/tree-ssa/pr87436.C: New test.
      
      From-SVN: r267143
      Jakub Jelinek committed
    • re PR c++/82294 (Array of objects with constexpr constructors initialized from… · faa9232d
      re PR c++/82294 (Array of objects with constexpr constructors initialized from space-inefficient memory image)
      
      	PR c++/82294
      	PR c++/87436
      	* init.c (build_vec_init): Change num_initialized_elts type from int
      	to HOST_WIDE_INT.  Build a RANGE_EXPR if e needs to be repeated more
      	than once.
      
      From-SVN: r267142
      Jakub Jelinek committed
    • ARM] Improve robustness of -mslow-flash-data · 8d33eae8
      Current code to handle -mslow-flash-data in machine description files
      suffers from a number of issues which this patch fixes:
      
      1) The insn_and_split in vfp.md to load a generic floating-point
      constant via GPR first and move it to VFP register are guarded by
      !reload_completed which is forbidden explicitely in the GCC internals
      documentation section 17.2 point 3;
      
      2) A number of testcase in the testsuite ICEs under -mslow-flash-data
      when targeting the hardfloat ABI [1];
      
      3) Instructions performing load from literal pool are not disabled.
      
      These problems are addressed by 2 separate actions:
      
      1) Making the splitters take a clobber and changing the expanders
      accordingly to generate a mov with clobber in cases where a literal
      pool would be used. The splitter can thus be enabled after reload since
      it does not call gen_reg_rtx anymore;
      
      2) Adding new predicates and constraints to disable literal pool loads
      in existing instructions when -mslow-flash-data is in effect.
      
      The patch also rework the splitter for DFmode slightly to generate an
      intermediate DI load instead of 2 intermediate SI loads, thus relying on
      the existing DI splitters instead of redoing their job. At last, the
      patch adds some missing arm_fp_ok effective target to some of the
      slow-flash-data testcases.
      
      [1]
      c-c++-common/Wunused-var-3.c
      gcc.c-torture/compile/pr72771.c
      gcc.c-torture/compile/vector-5.c
      gcc.c-torture/compile/vector-6.c
      gcc.c-torture/execute/20030914-1.c
      gcc.c-torture/execute/20050316-1.c
      gcc.c-torture/execute/pr59643.c
      gcc.dg/builtin-tgmath-1.c
      gcc.dg/debug/pr55730.c
      gcc.dg/graphite/interchange-7.c
      gcc.dg/pr56890-2.c
      gcc.dg/pr68474.c
      gcc.dg/pr80286.c
      gcc.dg/torture/pr35227.c
      gcc.dg/torture/pr65077.c
      gcc.dg/torture/pr86363.c
      g++.dg/torture/pr81112.C
      g++.dg/torture/pr82985.C
      g++.dg/warn/Wunused-var-7.C
      and a lot more in libstdc++ in special_functions/*_comp_ellint_* and
      special_functions/*_ellint_* directories.
      
      2018-12-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.md (arm_movdi): Split if -mslow-flash-data and
          source is a constant that would be loaded by literal pool.
          (movsf expander): Generate a no_literal_pool_sf_immediate insn if
          -mslow-flash-data is present, targeting hardfloat ABI and source is a
          float constant that cannot be loaded via vmov.
          (movdf expander): Likewise but generate a no_literal_pool_df_immediate
          insn.
          (arm_movsf_soft_insn): Split if -mslow-flash-data and source is a
          float constant that would be loaded by literal pool.
          (softfloat constant movsf splitter): Splitter for the above case.
          (movdf_soft_insn): Split if -mslow-flash-data and source is a float
          constant that would be loaded by literal pool.
          (softfloat constant movdf splitter): Splitter for the above case.
          * config/arm/constraints.md (Pz): Document existing constraint.
          (Ha): Define constraint.
          (Tu): Likewise.
          * config/arm/predicates.md (hard_sf_operand): New predicate.
          (hard_df_operand): Likewise.
          * config/arm/thumb2.md (thumb2_movsi_insn): Split if
          -mslow-flash-data and constant would be loaded by literal pool.
          * constant/arm/vfp.md (thumb2_movsi_vfp): Likewise and disable constant
          load in VFP register.
          (movdi_vfp): Likewise.
          (thumb2_movsf_vfp): Use hard_sf_operand as predicate for source to
          prevent match for a constant load if -mslow-flash-data and constant
          cannot be loaded via vmov.  Adapt constraint accordingly by
          using Ha instead of E for generic floating-point constant load.
          (thumb2_movdf_vfp): Likewise using hard_df_operand predicate instead.
          (no_literal_pool_df_immediate): Add a clobber to use as the
          intermediate general purpose register and also enable it after reload
          but disable it constant is a valid FP constant.  Add constraints and
          generate a DI intermediate load rather than 2 SI loads.
          (no_literal_pool_sf_immediate): Add a clobber to use as the
          intermediate general purpose register and also enable it after
          reload.
      
      2018-11-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/testsuite/
          * gcc.target/arm/thumb2-slow-flash-data-2.c: Require arm_fp_ok
          effective target.
          * gcc.target/arm/thumb2-slow-flash-data-3.c: Likewise.
          * gcc.target/arm/thumb2-slow-flash-data-4.c: Likewise.
          * gcc.target/arm/thumb2-slow-flash-data-5.c: Likewise.
      
      From-SVN: r267141
      Thomas Preud'homme committed
    • digest: Remove empty directory. · b2d02c49
      libphobos/ChangeLog:
      
      2018-12-14  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* src/std/internal/digest: Remove empty directory.
      
      From-SVN: r267138
      Iain Buclaw committed
    • re PR target/88474 (Inline built-in hypot for -ffast-math) · 4dd9b6c6
      	PR target/88474
      	* internal-fn.def (HYPOT): New.
      	* optabs.def (hypot_optab): New.
      	* config/i386/i386.md (hypot<mode>3): New expander.
      
      From-SVN: r267137
      Uros Bizjak committed
    • * target.def (post_cfi_startproc): Fix text. · 7e1f39b6
      From-SVN: r267136
      Jeff Law committed
    • [PATCH 1/3][GCC] Add new target hook asm_post_cfi_startproc · dddb7af4
      2018-12-14  Sam Tebbs  <sam.tebbs@arm.com>
      
      	* doc/tm.texi (TARGET_ASM_POST_CFI_STARTPROC): Define.
      	* doc/tm.texi.in (TARGET_ASM_POST_CFI_STARTPROC): Define.
      	* dwarf2out.c (dwarf2out_do_cfi_startproc): Trigger the hook.
      	* hooks.c (hook_void_FILEptr_tree): Define.
      	* hooks.h (hook_void_FILEptr_tree): Define.
      	* target.def (post_cfi_startproc): Define.
      
      From-SVN: r267135
      Sam Tebbs committed
    • [offloading] Error on missing symbols · b0aba46c
      When compiling an OpenMP or OpenACC program containing a reference in the
      offloaded code to a symbol that has not been included in the offloaded code,
      the offloading compiler may ICE in lto1.
      
      Fix this by erroring out instead, mentioning the problematic symbol:
      ...
      error: variable 'var' has been referenced in offloaded code but hasn't
        been marked to be included in the offloaded code
      lto1: fatal error: errors during merging of translation units
      compilation terminated.
      ...
      
      Build x86_64 with nvptx accelerator and reg-tested libgomp.
      
      Build x86_64 and reg-tested libgomp.
      
      2018-12-14  Tom de Vries  <tdevries@suse.de>
      
      	* lto-cgraph.c (verify_node_partition): New function.
      	(input_overwrite_node, input_varpool_node): Use verify_node_partition.
      
      	* testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c: New test.
      	* testsuite/libgomp.c-c++-common/function-not-offloaded.c: New test.
      	* testsuite/libgomp.c-c++-common/variable-not-offloaded.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/variable-not-offloaded.c: New test.
      
      From-SVN: r267134
      Tom de Vries committed
    • x86: Don't use get_frame_size when finalizing stack frame · 4f472e63
      get_frame_size () returns used stack slots during compilation, which
      may be optimized out later.  Since ix86_find_max_used_stack_alignment
      is called by ix86_finalize_stack_frame_flags to check if stack frame
      is required, there is no need to call get_frame_size () which may give
      inaccurate final stack frame size.
      
      Tested on AVX512 machine configured with
      
      --with-arch=native --with-cpu=native
      
      gcc/
      
      	PR target/88483
      	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
      	use get_frame_size ().
      
      gcc/testsuite/
      
      	PR target/88483
      	* gcc.target/i386/stackalign/pr88483.c: New test.
      
      From-SVN: r267133
      H.J. Lu committed
    • Fix LRA bug · f961ec70
      This patch fixes an ICE building libgfortran/random.c.
      
      The problem was an adddi3 instruction that had an eliminable frame pointer.
      GCN adddi3 includes a match_scratch, which LRA substitutes with a REG, and
      checks if it can be converted back to a scratch afterwards.  In the meantime,
      the add was converted to a move, meaning that the instruction pattern
      completely changed, thus causing a segfault when the instruction is revisited
      in restore_scratches.
      
      2018-12-14  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* gcc/lra-int.h (lra_register_new_scratch_op): Add third parameter.
      	* gcc/lra-remat.c (update_scratch_ops): Pass icode to
      	lra_register_new_scratch_op.
      	* gcc/lra.c (struct sloc): Add icode field.
      	(lra_register_new_scratch_op): Add icode parameter.
      	Use icode to skip insns that have changed beyond recognition.
      
      From-SVN: r267132
      Andrew Stubbs committed
    • decl.c (rm_size): Take into account the padding in the case of a record type containing a template. · 65e0a92b
      	* gcc-interface/decl.c (rm_size): Take into account the padding in
      	the case of a record type containing a template.
      	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Likewise.
      	Do not subtract the padded size for Max_Size_In_Storage_Elements.
      	<Attr_Descriptor_Size>: Tweak comment.
      
      From-SVN: r267131
      Eric Botcazou committed
    • dwarf2out.c (analyze_discr_in_predicate): Simplify. · fcdc7fd5
      	* dwarf2out.c (analyze_discr_in_predicate): Simplify.
      	(analyze_variants_discr): Deal with naked boolean discriminants.
      ada/
      	* gcc-interface/decl.c (choices_to_gnu): Directly use a naked boolean
      	discriminant if the value is the boolean true.
      
      From-SVN: r267130
      Eric Botcazou committed
    • [ARC] Fix millicode wrong blink restore. · 544a4843
      The blink is restored wrongly when using millicode and regular load
      instructions.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_restore_callee_milli) Don't clobber off
      	variable.
      
      testsuite/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* gcc.target/arc/milli-1.c: New test.
      
      From-SVN: r267129
      Claudiu Zissulescu committed
    • [ARC] Fix REG_CLASS_NAMES. · d77aa5cd
      From-SVN: r267128
      Claudiu Zissulescu committed
    • [testsuite] Remove bashism from libbacktrace/allocfail.sh · a37a52e5
      Test-case libbacktrace/allocfail.sh contains bashism "set -o pipefail", which
      makes the script fail on ubuntu 18.04, which links /bin/sh to /bin/dash.
      
      Fix this by removing the "set -o pipefail".
      
      Tested by running the test-case with dash on x86_64-linux.
      
      2018-12-14  Tom de Vries  <tdevries@suse.de>
      
      	PR testsuite/88491
      	* allocfail.sh: Remove "set -o pipefail".
      
      From-SVN: r267127
      Tom de Vries committed
    • gimple-ssa-split-paths.c (is_feasible_trace): Remove duplicated code block. · b210534e
      2018-12-14  Richard Biener  <rguenther@suse.de>
      
      	* gimple-ssa-split-paths.c (is_feasible_trace): Remove
      	duplicated code block.
      
      From-SVN: r267126
      Richard Biener committed
    • [RS6000] PR88311, mlongcall indirections are optimised away · 04f4909a
      Masking CALL_LONG from the cookie was done in order to simplify and
      correct length attribute calculations for indirect calls at one point
      in my call series tidy when the indirect patterns used alternatives
      "0,n" on the cookie operand.  (Leaving the CALL_LONG in place
      calculated the wrong length for long calls without fp args.)
      
      This is no longer necessary now that the indirect sysv call patterns
      explicitly test for the fp arg bits in their length attribute
      expressions.  And without the CALL_LONG to disable insns like
      call_value_local_svsv, combine merrily replaces the indirect long call
      sequence with a direct call.  As it should.  This patch reinstates
      the CALL_LONG bit.
      
      	PR rtl-optimization/88311
      	* config/rs6000/rs6000.c (rs6000_call_sysv): Do not mask cookie.
      	(rs6000_sibcall_sysv): Likewise.
      
      From-SVN: r267123
      Alan Modra committed
    • match_asm_constraints: Use copy_rtx where needed (PR88001) · 6c4ff3c9
      The new insn here (temporarily) illegally shares RTL.  This fixes it.
      
      
      	PR rtl-optimization/88001
      	* function.c (match_asm_constraints_1): Don't invalidly share RTL.
      
      From-SVN: r267122
      Segher Boessenkool committed
    • auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even if autofdo counts are all zeros. · b30bde10
      	* auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
      	if autofdo counts are all zeros.
      
      From-SVN: r267121
      Bin Cheng committed
    • auto-profile.c (afdo_indirect_call): Skip generating histogram value for internal call. · 7f3477fb
      	* auto-profile.c (afdo_indirect_call): Skip generating histogram
      	value for internal call.
      
      From-SVN: r267120
      Bin Cheng committed
    • auto-profile.c (AFDO_EINFO): New macro. · 47b4c53f
      	* auto-profile.c (AFDO_EINFO): New macro.
      	(class edge_info): New class.
      	(is_edge_annotated, set_edge_annotated): Delete.
      	(afdo_propagate_edge, afdo_propagate_circuit, afdo_propagate): Remove
      	parameter.  Adjust edge count computation and annotation using class
      	edge_info.
      	(afdo_calculate_branch_prob, afdo_annotate_cfg): Likewise.
      
      From-SVN: r267119
      Bin Cheng committed
    • ipa-cp.c (print_all_lattices): Skip cp clones. · 9ee46552
      	* ipa-cp.c (print_all_lattices): Skip cp clones.
      
      	* gcc.dg/lto/pr88297_0.c: New test.
      	* gcc.dg/lto/pr88297_1.c: New test.
      
      From-SVN: r267118
      Michael Ploujnikov committed
    • Daily bump. · e8e50c1b
      From-SVN: r267117
      GCC Administrator committed