Commit Graph

165999 Commits

Author SHA1 Message Date
Thomas Schwinge
c8ab8aab9f [PR88484] OpenACC wait directive without wait argument but with async clause
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
2018-12-14 21:42:50 +01:00
Thomas Schwinge
1404af62dc [PR88407] [OpenACC] Correctly handle unseen async-arguments
... 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
2018-12-14 21:42:40 +01:00
Thomas Schwinge
7de562eec2 Revise libgomp.oacc-c-c++-common/data-2-lib.c, libgomp.oacc-c-c++-common/data-2.c
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
2018-12-14 21:42:29 +01:00
Chung-Lin Tang
17469af75b Correctly describe OpenACC async/wait dependencies
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
2018-12-14 21:42:18 +01:00
Thomas Schwinge
18c247cc0b [PR88370] acc_get_cuda_stream/acc_set_cuda_stream: acc_async_sync, acc_async_noval
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
2018-12-14 21:42:08 +01:00
Thomas Schwinge
5d390fd3ae Add user-friendly diagnostics for OpenACC loop parallelism assigned
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
2018-12-14 21:41:58 +01:00
Thomas Schwinge
890b87d174 Repair liboffloadmic after "(Partial) OpenMP 5.0 support for GCC 9"
..., 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
2018-12-14 21:41:46 +01:00
Alexandre Oliva
b96778342f [PR86823] retain deferred access checks from outside firewall
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
2018-12-14 20:06:15 +00:00
Jakub Jelinek
0fca07e31d 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
2018-12-14 20:37:38 +01:00
Jakub Jelinek
faa9232da3 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
2018-12-14 20:36:33 +01:00
Thomas Preud'homme
8d33eae891 ARM] Improve robustness of -mslow-flash-data
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
2018-12-14 19:20:29 +00:00
Iain Buclaw
b2d02c4915 digest: Remove empty directory.
libphobos/ChangeLog:

2018-12-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* src/std/internal/digest: Remove empty directory.

From-SVN: r267138
2018-12-14 18:03:58 +00:00
Uros Bizjak
4dd9b6c6bc re PR target/88474 (Inline built-in hypot for -ffast-math)
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
2018-12-14 18:04:48 +01:00
Jeff Law
7e1f39b6aa * target.def (post_cfi_startproc): Fix text.
From-SVN: r267136
2018-12-14 09:48:50 -07:00
Sam Tebbs
dddb7af4e7 [PATCH 1/3][GCC] Add new target hook asm_post_cfi_startproc
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
2018-12-14 15:52:05 +00:00
Tom de Vries
b0aba46ca6 [offloading] Error on missing symbols
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
2018-12-14 13:48:56 +00:00
H.J. Lu
4f472e636f x86: Don't use get_frame_size when finalizing stack frame
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
2018-12-14 04:38:04 -08:00
Andrew Stubbs
f961ec70ee Fix LRA bug
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
2018-12-14 11:49:28 +00:00
Eric Botcazou
65e0a92b23 decl.c (rm_size): Take into account the padding in the case of a record type containing a template.
* 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
2018-12-14 11:08:15 +00:00
Eric Botcazou
fcdc7fd55d dwarf2out.c (analyze_discr_in_predicate): Simplify.
* 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
2018-12-14 10:53:41 +00:00
Claudiu Zissulescu
544a4843e8 [ARC] Fix millicode wrong blink restore.
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
2018-12-14 11:42:44 +01:00
Claudiu Zissulescu
d77aa5cd56 [ARC] Fix REG_CLASS_NAMES.
From-SVN: r267128
2018-12-14 11:42:32 +01:00
Tom de Vries
a37a52e592 [testsuite] Remove bashism from libbacktrace/allocfail.sh
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
2018-12-14 09:43:41 +00:00
Richard Biener
b210534e5c gimple-ssa-split-paths.c (is_feasible_trace): Remove duplicated code block.
2018-12-14  Richard Biener  <rguenther@suse.de>

	* gimple-ssa-split-paths.c (is_feasible_trace): Remove
	duplicated code block.

From-SVN: r267126
2018-12-14 09:26:05 +00:00
Alan Modra
04f4909a1e [RS6000] PR88311, mlongcall indirections are optimised away
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
2018-12-14 19:33:50 +10:30
Segher Boessenkool
6c4ff3c98c match_asm_constraints: Use copy_rtx where needed (PR88001)
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
2018-12-14 09:29:34 +01:00
Bin Cheng
b30bde1063 auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even if autofdo counts are all zeros.
* auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
	if autofdo counts are all zeros.

From-SVN: r267121
2018-12-14 05:46:55 +00:00
Bin Cheng
7f3477fb78 auto-profile.c (afdo_indirect_call): Skip generating histogram value for internal call.
* auto-profile.c (afdo_indirect_call): Skip generating histogram
	value for internal call.

From-SVN: r267120
2018-12-14 05:42:56 +00:00
Bin Cheng
47b4c53f03 auto-profile.c (AFDO_EINFO): New macro.
* 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
2018-12-14 05:40:07 +00:00
Michael Ploujnikov
9ee4655240 ipa-cp.c (print_all_lattices): Skip cp clones.
* 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
2018-12-13 17:19:08 -07:00
GCC Administrator
e8e50c1bd7 Daily bump.
From-SVN: r267117
2018-12-14 00:16:55 +00:00
Michael Ploujnikov
f25ae20e5b * ipa-cp.c: Fix various comment typos.
From-SVN: r267114
2018-12-13 17:15:08 -07:00
Jakub Jelinek
0864675cc5 re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444
	* tree-inline.c (fold_marked_statements): Iterate up to
	last_basic_block_for_fn rather than n_basic_blocks_for_fn.

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

From-SVN: r267113
2018-12-14 00:35:10 +01:00
Jakub Jelinek
b532a7859f re PR rtl-optimization/88470 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2354)
PR rtl-optimization/88470
	* cfgcleanup.c (outgoing_edges_match): If the function is
	shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
	edge to EXIT, return false.

	* gcc.target/i386/pr88470.c: New test.

From-SVN: r267112
2018-12-14 00:33:57 +01:00
Martin Sebor
6bb4268527 extend.texi: Consistently use @code for const and volatile qualifiers...
gcc/ChangeLog:
	* doc/extend.texi: Consistently use @code for const and volatile
	qualifiers, the true and false constants, and asm statements.

From-SVN: r267111
2018-12-13 15:52:19 -07:00
Vladimir Makarov
11067dee85 re PR rtl-optimization/88414 (ICE in lra_assign, at lra-assigns.c:1624)
2018-12-13  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/88414
	* lra-int.h (lra_asm_error_p): New.
	* lra-assigns.c (lra_assign): Check lra_asm_error_p for checking
	call crossed pseudo assignment correctness.
	(lra_split_hard_reg_for): Set up lra_asm_error_p.
	* lra-constraints.c (curr_insn_transform): Ditto.
	* lra.c (lra_asm_error_p): New.
	(lra): Reset lra_asm_error_p.

2018-12-13  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/88414
	* gcc.target/i386/pr88414.c: New.

From-SVN: r267109
2018-12-13 20:54:27 +00:00
Marek Polacek
b46e1a6997 PR c++/88216 - ICE with class type in non-type template parameter.
* mangle.c (write_expression): Handle TARGET_EXPR and
	VIEW_CONVERT_EXPR.
	* pt.c (convert_nontype_argument): Don't call
	get_template_parm_object for value-dependent expressions.

	* g++.dg/cpp2a/nontype-class9.C: New test.

From-SVN: r267108
2018-12-13 20:47:32 +00:00
Jonathan Wakely
2b462958e2 Fix handling of POSIX paths containing a root-name
Fix path appending and concatenating to work correctly for a leading
root-name. Check a new macro, SLASHSLASH_IS_ROOT_NAME, instead of making
the behaviour depend directly on __CYGWIN__.

	* src/filesystem/std-path.cc (SLASHSLASH_IS_ROOT_NAME): New macro to
	control whether interpret paths with two slashes as a root-name.
	(path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Add a
	root-directory when appending to a root-name.
	(path::_M_append(basic_string_view<value_type>))
	[SLASHSLASH_IS_ROOT_NAME]: Likewise.
	(path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Likewise.
	(path::_M_concat(basic_string_view<value_type>))
	[SLASHSLASH_IS_ROOT_NAME]: Likewise.
	(path::lexically_normal()) [SLASHSLASH_IS_ROOT_NAME]: Use += instead
	of /= to add a root-directory to the result.
	* testsuite/27_io/filesystem/path/decompose/root_directory.cc: Fix
	expected result for Cygwin.

From-SVN: r267107
2018-12-13 20:34:10 +00:00
Jonathan Wakely
4f87bb8d6e PR libstdc++/71044 optimize std::filesystem::path construction
This new implementation has a smaller footprint than the previous
implementation, due to replacing std::vector<_Cmpt> with a custom pimpl
type that only needs a single pointer. The _M_type enumeration is also
combined with the pimpl type, by using a tagged pointer, reducing
sizeof(path) further still.

Construction and modification of paths is now done more efficiently, by
splitting the input into a stack-based buffer of string_view objects
instead of a dynamically-allocated vector containing strings. Once the
final size is known only a single allocation is needed to reserve space
for it.  The append and concat operations no longer require constructing
temporary path objects, nor re-parsing the entire native pathname.

This results in algorithmic improvements to path construction, and
working with large paths is much faster.

	PR libstdc++/71044
	* include/bits/fs_path.h (path::path(path&&)): Add noexcept when
	appropriate. Move _M_cmpts instead of reparsing the native pathname.
	(path::operator=(const path&)): Do not define as defaulted.
	(path::operator/=, path::append): Call _M_append.
	(path::concat): Call _M_concat.
	(path::path(string_type, _Type): Change type of first parameter to
	basic_string_view<value_type>.
	(path::_M_append(basic_string_view<value_type>)): New member function.
	(path::_M_concat(basic_string_view<value_type>)): New member function.
	(_S_convert(value_type*, __null_terminated)): Return string view.
	(_S_convert(const value_type*, __null_terminated)): Return string view.
	(_S_convert(value_type*, value_type*))
	(_S_convert(const value_type*, const value_type*)): Add overloads for
	pairs of pointers.
	(_S_convert(_InputIterator, __null_terminated)): Construct string_type
	explicitly, for cases where _S_convert returns a string view.
	(path::_S_is_dir_sep): Replace with non-member is_dir_sep.
	(path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
	(path::_M_add_filename): Remove.
	(path::_M_type()): New member function to replace _M_type data member.
	(path::_List): Define new struct type instead of using std::vector.
	(path::_Cmpt::_Cmpt(string_type, _Type, size_t)): Change type of
	first parameter to basic_string_view<value_type>.
	(path::operator+=(const path&)): Do not define inline.
	(path::operator+=(const string_type&)): Call _M_concat.
	(path::operator+=(const value_type*)): Likewise.
	(path::operator+=(value_type)): Likewise.
	(path::operator+=(basic_string_view<value_type>)): Likewise.
	(path::operator/=(const path&)): Do not define inline.
	(path::_M_append(path)): Remove.
	* python/libstdcxx/v6/printers.py (StdPathPrinter): New printer that
	understands the new path::_List type.
	* src/filesystem/std-path.cc (is_dir_sep): New function to replace
	path::_S_is_dir_sep.
	(path::_Parser): New helper class to parse strings as paths.
	(path::_List::_Impl): Define container type for path components.
	(path::_List): Define members.
	(path::operator=(const path&)): Define explicitly, to provide the
	strong exception safety guarantee.
	(path::operator/=(const path&)): Implement manually by processing
	each component of the argument, rather than using _M_split_cmpts
	to parse the entire string again.
	(path::_M_append(string_type)): Likewise.
	(path::operator+=(const path&)): Likewise.
	(path::_M_concat(string_type)): Likewise.
	(path::remove_filename()): Perform trim directly instead of calling
	_M_trim().
	(path::_M_split_cmpts()): Rewrite in terms of _Parser class.
	(path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
	(path::_M_add_filename): Remove.
	* testsuite/27_io/filesystem/path/append/source.cc: Test appending a
	string view that aliases the path.
	testsuite/27_io/filesystem/path/concat/strings.cc: Test concatenating
	a string view that aliases the path.

From-SVN: r267106
2018-12-13 20:33:55 +00:00
Jakub Jelinek
51beaeba8a re PR rtl-optimization/88416 (ICE in in df_uses_record, at df-scan.c:3013)
PR rtl-optimization/88416
	* valtrack.c (cleanup_auto_inc_dec): Handle pre/post-inc/dec/modify
	even if !AUTO_INC_DEC.

	* gcc.target/i386/pr88416.c: New test.

From-SVN: r267105
2018-12-13 20:44:50 +01:00
David Edelsohn
ab0cdfdd97 rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
* config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
(rs6000_arg_partial_bytes): Same.

From-SVN: r267104
2018-12-13 14:25:59 -05:00
Peter Bergner
d1573fe051 target.h (htm_available): Add support for PPC_FEATURE2_HTM_NO_SUSPEND.
libitm/
	* config/powerpc/target.h (htm_available):  Add support for
	PPC_FEATURE2_HTM_NO_SUSPEND.  Use __builtin_cpu_supports if available.

From-SVN: r267101
2018-12-13 12:04:11 -06:00
Tom de Vries
fe0827eed0 [libgomp, nvptx] Fix libgomp.c/target-5.c compilation
Libgomp test-case libgomp.c/target-5.c is failing to compile when building for
x86_64 with nvptx accelerator due to missing:
- getpid
- gethostname
- isatty (pulled in by fwrite)
in the nvptx newlib.

This patch fixes the build failure by:
- adding a function gomp_print_string which limits the use of fwrite to a single
  location (in affinity-fmt.c), and
- creating an nvptx version of affinity-fmt.c, which:
  - overrides the configure test results HAVE_GETPID and HAVE_GETHOSTNAME, and
  - implements fwrite using write.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-13  Tom de Vries  <tdevries@suse.de>

	* affinity-fmt.c (gomp_print_string): New function, factored out of ...
	(omp_display_affinity, gomp_display_affinity_thread): ... here, and ...
	* fortran.c (omp_display_affinity_): ... here.
	* libgomp.h (gomp_print_string): Declare.
	* config/nvptx/affinity-fmt.c: New file.  Include affinity-fmt.c,
	undefining HAVE_GETPID and HAVE_GETHOSTNAME, and mapping fwrite to
	write.

From-SVN: r267100
2018-12-13 18:04:05 +00:00
Jason Merrill
b3147e5928 gdbinit.in (pp): New macro.
* gdbinit.in (pp): New macro.

	(pbb): Remove.

From-SVN: r267098
2018-12-13 12:45:40 -05:00
Jakub Jelinek
0e350f135b re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")
PR tree-optimization/88464
	* tree-vect-stmts.c (vect_build_gather_load_calls): Handle INTEGER_TYPE
	masktype if mask is non-NULL.
	(vectorizable_load): Don't reject masked gather loads if masktype
	in the decl is INTEGER_TYPE.

	* gcc.target/i386/avx512f-pr88462-1.c: New test.
	* gcc.target/i386/avx512f-pr88462-2.c: New test.

From-SVN: r267097
2018-12-13 18:01:50 +01:00
Nathan Sidwell
2139fd74f3 [PR c++/87531] Fix second bug
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00929.html

	PR c++/87531
	* class.c (finish_struct): Set DECL_CONTEXT of template assign op.
	* name-lookup.c (get_class_binding_direct): Don't strip using-decl
	of overload here.
	* parser.c (cp_parser_postfix_expression): Cope with using decl in
	overload set.
	* semantics.c (finish_id_expr): Likewise.

	* g++.dg/lookup/pr87531-2.C: New.

From-SVN: r267096
2018-12-13 15:57:24 +00:00
Rainer Orth
f1d42e85ad Include gdc.test prefix in test names (PR testsuite/88041)
PR testsuite/88041
	* lib/gdc-dg.exp (gdc-dg-test): Strip gdc.test prefix.
	* gdc.test/gdc-test.exp (gdc-do-test): Create $subdir link.
	Include $subdir in filename.
	Cleanup generated source.
	* gdc.test/compilable/ddoc9676a.d (EXTRA_SOURCES): Don't use
	absolute path.
	* gdc.test/compilable/depsOutput9948.d: Likewise.

From-SVN: r267094
2018-12-13 14:41:34 +00:00
Jakub Jelinek
a51f8c92e2 re PR libgomp/88460 ([nvptx] FAIL: libgomp.c++/for-24.C (internal compiler error))
PR libgomp/88460
	* testsuite/libgomp.c++/for-24.C (results): Include it in
	omp declare target region.
	(main): Use map (always, tofrom: results) instead of
	map (tofrom: results).

From-SVN: r267093
2018-12-13 13:53:19 +01:00
Jakub Jelinek
b9cbcd3ef0 re PR testsuite/88454 (test case gcc.dg/tree-ssa/split-path-5.c fails after r266971)
PR testsuite/88454
	* gcc.dg/tree-ssa/split-path-5.c (__ctype_ptr__): Change type from
	const char * to const signed char *.
	(bmhi_init): Change pattern parameter's type the same.  Use
	__builtin_strlen instead of undeclared strlen.

From-SVN: r267092
2018-12-13 13:52:11 +01:00
Jonathan Wakely
a7a6c14a55 Fix [fs.path.gen] tests to use backslashes for mingw
The normalized paths contain backslashes so fix the expected values to
use backslashes too.

	* testsuite/27_io/filesystem/path/generation/proximate.cc: Use
	preferred directory separators for normalized paths.
	* testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.

From-SVN: r267090
2018-12-13 12:26:52 +00:00