]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years ago[nvptx] Fix whitespace in nvptx_single and nvptx_neuter_pars
vries [Mon, 17 Dec 2018 21:26:59 +0000 (21:26 +0000)] 
[nvptx] Fix whitespace in nvptx_single and nvptx_neuter_pars

Fix whitespace in nvptx_single and nvptx_neuter_pars.

Build and reg-tested on x86_64 with nvptx accelerator.

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

* config/nvptx/nvptx.c (nvptx_single): Fix whitespace.
(nvptx_neuter_pars): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267214 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[nvptx] Unify C/Fortran routine handling in nvptx_goacc_validate_dims
vries [Mon, 17 Dec 2018 21:26:49 +0000 (21:26 +0000)] 
[nvptx] Unify C/Fortran routine handling in nvptx_goacc_validate_dims

The Fortran front-end has a bug (PR72741) that means what when
nvptx_goacc_validate_dims is called for a Fortran routine, the dims parameter
is not the same as it would have been if the function would have been called for
an equivalent C routine.

Work around this bug by overriding the dims parameter for routines, allowing the
function to handle routines in Fortran and C the same.

Build and reg-tested on x86_64 with nvptx accelerator.

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

* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Work around Fortran
bug PR72741 by overriding dims parameter for routines.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267213 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[nvptx] Rewrite nvptx_goacc_validate_dims to use predicate vars
vries [Mon, 17 Dec 2018 21:26:39 +0000 (21:26 +0000)] 
[nvptx] Rewrite nvptx_goacc_validate_dims to use predicate vars

The function nvptx_goacc_validate_dims has arguments decl and fn_level which
together describe different situations.

Introduce a predicate var for each situation, and use them, allowing to
understand what the function does in each situation without having to know the
way the situations are encoded in the args.

Build and reg-tested on x86_64 with nvptx accelerator.

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

* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Rewrite using
predicate vars.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267212 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing ChangeLog entry from last checkin:
sje [Mon, 17 Dec 2018 19:23:02 +0000 (19:23 +0000)] 
Add missing ChangeLog entry from last checkin:

2018-12-17  Steve Ellcey  <sellcey@cavium.com>

* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
* gcc.target/aarch64/torture/simd-abi-1.c: New test.
* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267210 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-17 Steve Ellcey <sellcey@cavium.com>
sje [Mon, 17 Dec 2018 19:18:17 +0000 (19:18 +0000)] 
2018-12-17  Steve Ellcey  <sellcey@cavium.com>

* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
* gcc.target/aarch64/torture/simd-abi-1.c: New test.
* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267209 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-17 Steve Ellcey <sellcey@cavium.com>
sje [Mon, 17 Dec 2018 19:14:04 +0000 (19:14 +0000)] 
2018-12-17  Steve Ellcey  <sellcey@cavium.com>

* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
New prototype.
(aarch64_epilogue_uses): Ditto.
* config/aarch64/aarch64.c (aarch64_attribute_table): New array.
(aarch64_simd_decl_p): New function.
(aarch64_reg_save_mode): New function.
(aarch64_function_ok_for_sibcall): Check for simd calls.
(aarch64_layout_frame): Check for simd function.
(aarch64_gen_storewb_pair): Handle E_TFmode.
(aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
(aarch64_gen_loadwb_pair): Handle E_TFmode.
(aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
(aarch64_gen_store_pair): Handle E_TFmode.
(aarch64_gen_load_pair): Ditto.
(aarch64_save_callee_saves): Handle different mode sizes.
(aarch64_restore_callee_saves): Ditto.
(aarch64_components_for_bb): Check for simd function.
(aarch64_epilogue_uses): New function.
(aarch64_process_components): Check for simd function.
(aarch64_expand_prologue): Ditto.
(aarch64_expand_epilogue): Ditto.
(aarch64_expand_call): Ditto.
(aarch64_use_simple_return_insn_p): New function.
(TARGET_ATTRIBUTE_TABLE): New define.
* config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
(FP_SIMD_SAVED_REGNUM_P): New macro.
* config/aarch64/aarch64.md (simple_return): New define_expand.
(load_pair_dw_tftf): New instruction.
(store_pair_dw_tftf): Ditto.
(loadwb_pair<TX:mode>_<P:mode>): Ditto.
(storewb_pair<TX:mode>_<P:mode>): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267208 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMerge dmd upstream 237ca3fbe
ibuclaw [Mon, 17 Dec 2018 18:32:31 +0000 (18:32 +0000)] 
Merge dmd upstream 237ca3fbe

Backports a fix where a bad cast to TypeFunction resulted in memory
corruption.  The logic in the function semantic has been fixed, and
casts have been replaced with a function call to always check the
front-end AST node value.

Reviewed-on: https://github.com/dlang/dmd/pull/9054

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267207 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/testsuite/ChangeLog:
msebor [Mon, 17 Dec 2018 18:10:58 +0000 (18:10 +0000)] 
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/builtin-snprintf-4.c: Adjust for ILP32.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267206 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR target/88502
uros [Mon, 17 Dec 2018 15:46:20 +0000 (15:46 +0000)] 
PR target/88502
* internal-fn.def (ACOSH): New.
(ASINH): Ditto.
(ATANH): Ditto.
* optabs.def (acosh_optab): New.
(asinh_optab): Ditto.
(atanh_optab): Ditto.
* config/i386/i386-protos.h (ix86_emit_i387_asinh): New prototype.
(ix86_emit_i387_acosh): Ditto.
(ix86_emit_i387_atanh): Ditto.
* config/i386/i386.c (ix86_emit_i387_asinh): New function.
(ix86_emit_i387_acosh): Ditto.
(ix86_emit_i387_atanh): Ditto.
* config/i386/i386.md (asinhxf2): New expander.
(asinh<mode>2): Ditto.
(acoshxf2): Ditto.
(acosh<mode>2): Ditto.
(atanhxf2): Ditto.
(atanh<mode>2): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267204 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago* config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
dje [Mon, 17 Dec 2018 15:07:22 +0000 (15:07 +0000)] 
* config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
(powerpc-ibm-aix7.1.*): Same.
(powerpc-ibm-aix[789].*): Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267203 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDWARF: Don't expand hash table when no insertion is needed
hjl [Mon, 17 Dec 2018 13:49:16 +0000 (13:49 +0000)] 
DWARF: Don't expand hash table when no insertion is needed

dwarf2out_finish performs:

1. save_macinfo_strings
2. hash table traverse of index_string
3. output_macinfo -> output_macinfo_op
4. output_indirect_strings -> hash table traverse of output_index_string

find_slot_with_hash has

 if (insert == INSERT && m_size * 3 <= m_n_elements * 4)
    expand ();

which may expand hash table even if no insertion is neeed and change hash
table traverse order.  When output_macinfo_op is called, all index strings
have been added to hash table by save_macinfo_strings and we shouldn't
expand index string hash table.  Otherwise find_slot_with_hash will expand
hash table when hash table has the right size and hash table traverse of
output_index_string will have a different traverse order from index_string.

PR debug/79342
* dwarf2out.c (find_AT_string_in_table): Add insert argument
defaulting to INSERT and replace INSERT.
(find_AT_string): Likewise.
(output_macinfo_op): Pass NO_INSERT to find_AT_string.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267202 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * coverage.c (struct conts_entry): Add n_counts.
hubicka [Mon, 17 Dec 2018 13:21:52 +0000 (13:21 +0000)] 
* coverage.c (struct conts_entry): Add n_counts.
(remap_counts_file): Record number of ocunts.
(get_coverage_counts): Verify that counts match.
* coverage.h (get_coverage_counts): Update prototype.
* profile.c (get_exec_counts. compute_value_histograms): Add
n_counts parametrs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267200 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix PR 88253
saaadhu [Mon, 17 Dec 2018 10:50:54 +0000 (10:50 +0000)] 
Fix PR 88253

gcc/ChangeLog:

PR rtl-optimization/88253
* combine.c (combine_simplify_rtx): Test for side-effects before
substituting by zero.

gcc/testsuite/ChangeLog:

PR rtl-optimization/88253
* gcc.target/avr/pr88253.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267198 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd a loop versioning pass
rsandifo [Mon, 17 Dec 2018 10:05:51 +0000 (10:05 +0000)] 
Add a loop versioning pass

This patch adds a pass that versions loops with variable index strides
for the case in which the stride is 1.  E.g.:

    for (int i = 0; i < n; ++i)
      x[i * stride] = ...;

becomes:

    if (stepx == 1)
      for (int i = 0; i < n; ++i)
        x[i] = ...;
    else
      for (int i = 0; i < n; ++i)
        x[i * stride] = ...;

This is useful for both vector code and scalar code, and in some cases
can enable further optimisations like loop interchange or pattern
recognition.

The pass gives a 7.6% improvement on Cortex-A72 for 554.roms_r at -O3
and a 2.4% improvement for 465.tonto.  I haven't found any SPEC tests
that regress.

Sizewise, there's a 10% increase in .text for both 554.roms_r and
465.tonto.  That's obviously a lot, but in tonto's case it's because
the whole program is written using assumed-shape arrays and pointers,
so a large number of functions really do benefit from versioning.
roms likewise makes heavy use of assumed-shape arrays, and that
improvement in performance IMO justifies the code growth.

The next biggest .text increase is 4.5% for 548.exchange2_r.  I did see
a small (0.4%) speed improvement there, but although both 3-iteration runs
produced stable results, that might still be noise.  There was a slightly
larger (non-noise) improvement for a 256-bit SVE model.

481.wrf and 521.wrf_r .text grew by 2.8% and 2.5% respectively, but
without any noticeable improvement in performance.  No other test grew
by more than 2%.

Although the main SPEC beneficiaries are all Fortran tests, the
benchmarks we use for SVE also include some C and C++ tests that
benefit.

Using -frepack-arrays gives the same benefits in many Fortran cases.
The problem is that using that option inappropriately can force a full
array copy for arguments that the function only reads once, and so it
isn't really something we can turn on by default.  The new pass is
supposed to give most of the benefits of -frepack-arrays without
the risk of unnecessary repacking.

The patch therefore enables the pass by default at -O3.

2018-12-17  Richard Sandiford  <richard.sandiford@arm.com>
    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

gcc/
* doc/invoke.texi (-fversion-loops-for-strides): Document
(loop-versioning-group-size, loop-versioning-max-inner-insns)
(loop-versioning-max-outer-insns): Document new --params.
* Makefile.in (OBJS): Add gimple-loop-versioning.o.
* common.opt (fversion-loops-for-strides): New option.
* opts.c (default_options_table): Enable fversion-loops-for-strides
at -O3.
* params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE)
(PARAM_LOOP_VERSIONING_MAX_INNER_INSNS)
(PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters.
* passes.def: Add pass_loop_versioning.
* timevar.def (TV_LOOP_VERSIONING): New time variable.
* tree-ssa-propagate.h
(substitute_and_fold_engine::substitute_and_fold): Add an optional
block parameter.
* tree-ssa-propagate.c
(substitute_and_fold_engine::substitute_and_fold): Likewise.
When passed, only walk blocks dominated by that block.
* tree-vrp.h (range_includes_p): Declare.
(range_includes_zero_p): Turn into an inline wrapper around
range_includes_p.
* tree-vrp.c (range_includes_p): New function, generalizing...
(range_includes_zero_p): ...this.
* tree-pass.h (make_pass_loop_versioning): Declare.
* gimple-loop-versioning.cc: New file.

gcc/testsuite/
* gcc.dg/loop-versioning-1.c: New test.
* gcc.dg/loop-versioning-10.c: Likewise.
* gcc.dg/loop-versioning-11.c: Likewise.
* gcc.dg/loop-versioning-2.c: Likewise.
* gcc.dg/loop-versioning-3.c: Likewise.
* gcc.dg/loop-versioning-4.c: Likewise.
* gcc.dg/loop-versioning-5.c: Likewise.
* gcc.dg/loop-versioning-6.c: Likewise.
* gcc.dg/loop-versioning-7.c: Likewise.
* gcc.dg/loop-versioning-8.c: Likewise.
* gcc.dg/loop-versioning-9.c: Likewise.
* gfortran.dg/loop_versioning_1.f90: Likewise.
* gfortran.dg/loop_versioning_2.f90: Likewise.
* gfortran.dg/loop_versioning_3.f90: Likewise.
* gfortran.dg/loop_versioning_4.f90: Likewise.
* gfortran.dg/loop_versioning_5.f90: Likewise.
* gfortran.dg/loop_versioning_6.f90: Likewise.
* gfortran.dg/loop_versioning_7.f90: Likewise.
* gfortran.dg/loop_versioning_8.f90: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267197 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-16 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Mon, 17 Dec 2018 02:19:58 +0000 (02:19 +0000)] 
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85314
* resolve.c (resolve_transfer): Remove dead code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267196 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Mon, 17 Dec 2018 00:16:51 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267195 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibphobos: Merge common version blocks for core.sys.posix.sys.msg.
ibuclaw [Sun, 16 Dec 2018 23:18:25 +0000 (23:18 +0000)] 
libphobos: Merge common version blocks for core.sys.posix.sys.msg.

This is a continuation of simplifying C bindings so there aren't dozens
of duplicated code for each architecture.  For this particular module,
it now more closely resembles how glibc arranges msq.h, fixing a couple
of targets in the process, notably X32.

Backport from upstream druntime 2.084.

Reviewed-on: https://github.com/dlang/druntime/pull/2362

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267192 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes
hubicka [Sun, 16 Dec 2018 18:57:48 +0000 (18:57 +0000)] 
* ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes
are not streamed in.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267191 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-16 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sun, 16 Dec 2018 16:29:43 +0000 (16:29 +0000)] 
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88116
PR fortran/88467
* array.c (gfc_match_array_constructor): Check return value of
gfc_convert_type().  Skip constructor elements with BT_UNKNOWN,
which need to go through resolution.
* intrinsic.c (gfc_convert_type_warn): Return early if the types
martch (i.e., no conversion is required).
* simplify.c (gfc_convert_constant): Remove a gfc_internal_error,
and return gfc_bad_expr.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88116
* gfortran.dg/pr88116_1.f90: New test.
* gfortran.dg/pr88116_2.f90: Ditto.

PR fortran/88467
* gfortran.dg/pr88467.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267189 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-16 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sun, 16 Dec 2018 16:01:19 +0000 (16:01 +0000)] 
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

* decl.c (variable_decl): Typo fixes.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

* gfortran.dg/pr88138.f90: Remove extraneous 's' in comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267188 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-16 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sun, 16 Dec 2018 14:32:46 +0000 (14:32 +0000)] 
2018-12-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

PF fortran/88364
* trans-expr.c (gfc_conv_expr_reference): Do not add clobber if
the expression contains a reference.

2018-12-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/88363
* intent_out_13.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267187 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agox86: Revert reversion 267133
hjl [Sun, 16 Dec 2018 13:55:18 +0000 (13:55 +0000)] 
x86: Revert reversion 267133

Revert commit:

commit 76c21b271247ccbd681bdb4530426d2fe35dbfa5
Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Dec 14 12:38:04 2018 +0000

    x86: Don't use get_frame_size when finalizing stack frame

gcc/

PR target/88483
* config/i386/i386.c (ix86_finalize_stack_frame_flags): Revert
reversion 267133.

gcc/testsuite/

PR target/88483
* gcc.target/i386/stackalign/pr88483.c: Removed.  Revert
reversion 267133.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267186 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
hubicka [Sun, 16 Dec 2018 12:05:04 +0000 (12:05 +0000)] 
* ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
size_time_table.
(ipa_fn_summary_generate): Add prevails parameter; do not allocate
data when symbol is not prevailing.
(inline_read_section): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267185 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-15 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sun, 16 Dec 2018 03:33:05 +0000 (03:33 +0000)] 
2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/87944
* decl.c (match_data_constant): Allow inquiry parameter as data
constant in data statement.

2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/87944
* gfortran.dg/pr87994_1.f90: New test.
* gfortran.dg/pr87994_2.f90: Ditto.
* gfortran.dg/pr87994_3.f90: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267184 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sun, 16 Dec 2018 00:16:43 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267183 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/88482
jakub [Sat, 15 Dec 2018 23:51:31 +0000 (23:51 +0000)] 
PR c++/88482
* except.c (verify_library_fn): New function.
(declare_library_fn): Use it.  Initialize TM even if the non-TM
library function has been user declared.
(do_end_catch): Don't set TREE_NOTHROW on error_mark_node.
(expand_start_catch_block): Don't call initialize_handler_parm
for error_mark_node.
(build_throw): Use verify_library_fn.  Initialize TM even if the
non-TM library function has been user declared.  Don't crash if
any library fn is error_mark_node.

* g++.dg/eh/builtin5.C: New test.
* g++.dg/eh/builtin6.C: New test.
* g++.dg/eh/builtin7.C: New test.
* g++.dg/eh/builtin8.C: New test.
* g++.dg/eh/builtin9.C: New test.
* g++.dg/eh/builtin10.C: New test.
* g++.dg/eh/builtin11.C: New test.
* g++.dg/parse/crash55.C: Adjust expected diagnostics.

* eh_cpp.cc (__cxa_throw): Change DEST argument type from
void * to void (*) (void *).
(_ITM_cxa_throw): Likewise.
* libitm.h (_ITM_cxa_throw): Likewise.
* libitm.texi (_ITM_cxa_throw): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267179 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2019-12-15 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 15 Dec 2018 22:53:26 +0000 (22:53 +0000)] 
2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88138
* decl.c (variable_decl): Check that a derived isn't being assigned
an incompatible entity in an initialization.

2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88138
* gfortran.dg/pr88138.f90: new test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267177 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoSmall lambda instantiation tweak.
jason [Sat, 15 Dec 2018 22:10:18 +0000 (22:10 +0000)] 
Small lambda instantiation tweak.

While looking at something else I noticed that we were passing 0 to the
"nonclass" parameter here; we might as well pass 1, since capture proxies
are always at block scope.

* pt.c (tsubst_expr) [DECL_EXPR]: Ignore class-scope bindings when
looking up a capture proxy.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267176 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * cgraph.h (cgraph_node): Add predicate prevailing_p.
hubicka [Sat, 15 Dec 2018 21:24:52 +0000 (21:24 +0000)] 
* cgraph.h (cgraph_node): Add predicate prevailing_p.
(cgraph_edge): Add predicate possible_call_in_translation_unit_p.
* ipa-prop.c (ipa_write_jump_function): Optimize streaming of ADDR_EXPR.
(ipa_read_jump_function): Add prevails parameter; optimize streaming.
(ipa_read_edge_info): Break out from ...
(ipa_read_node_info): ... here; optimize streaming.
* cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): New
predicate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267175 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa-utils.c (ipa_merge_profiles): Do no merging when source function
hubicka [Sat, 15 Dec 2018 21:04:29 +0000 (21:04 +0000)] 
* ipa-utils.c (ipa_merge_profiles): Do no merging when source function
has zero count.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267174 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR tree-optimization/88464
jakub [Sat, 15 Dec 2018 11:04:41 +0000 (11:04 +0000)] 
PR tree-optimization/88464
PR target/88498
* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
and mask with integral masktype, don't try to permute mask vectors,
instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
(vectorizable_store): Handle masked scatters with decl and integral
mask type.
(permute_vec_elements): Allow scalar_dest to be NULL.
* config/i386/i386.c (ix86_get_builtin)
<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
to be the same.

* gcc.target/i386/avx512f-pr88462-1.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-1.c: ... this.  Fix up PR number.
Expect 4 vectorized loops instead of 3.
(f4): New function.
* gcc.target/i386/avx512f-pr88462-2.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-2.c: ... this.  Fix up PR number
and #include.
(avx512f_test): Prepare arguments for f4 and check the results.
* gcc.target/i386/avx512f-pr88464-3.c: New test.
* gcc.target/i386/avx512f-pr88464-4.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267170 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR tree-optimization/88464
jakub [Sat, 15 Dec 2018 11:02:28 +0000 (11:02 +0000)] 
PR tree-optimization/88464
PR target/88498
* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
and mask with integral masktype, don't try to permute mask vectors,
instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
(vectorizable_store): Handle masked scatters with decl and integral
mask type.
(permute_vec_elements): Allow scalar_dest to be NULL.
* config/i386/i386.c (ix86_get_builtin)
<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
to be the same.

* gcc.target/i386/avx512f-pr88462-1.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-1.c: ... this.  Fix up PR number.
Expect 4 vectorized loops instead of 3.
(f4): New function.
* gcc.target/i386/avx512f-pr88462-2.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-2.c: ... this.  Fix up PR number
and #include.
(avx512f_test): Prepare arguments for f4 and check the results.
* gcc.target/i386/avx512f-pr88464-3.c: New test.
* gcc.target/i386/avx512f-pr88464-4.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267169 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
hubicka [Sat, 15 Dec 2018 10:31:37 +0000 (10:31 +0000)] 
* ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
parameters.
(cgraph_build_static_cdtor): Update.
(build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
callsed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267168 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago/cp
paolo [Sat, 15 Dec 2018 09:07:38 +0000 (09:07 +0000)] 
/cp
2018-12-15  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84644
* decl.c (check_tag_decl): A decltype with no declarator
doesn't declare anything.

/testsuite
2018-12-15  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84644
* g++.dg/cpp0x/decltype68.C: New.
* g++.dg/cpp0x/decltype-33838.C: Adjust.
* g++.dg/template/spec32.C: Likewise.
* g++.dg/template/ttp22.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267165 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[RS6000] Use gen_hard_reg_clobber in rs6000.c
amodra [Sat, 15 Dec 2018 07:13:19 +0000 (07:13 +0000)] 
[RS6000] Use gen_hard_reg_clobber in rs6000.c

I noticed when looking at PR88311 that rs6000_call_sysv should be
using gen_hard_reg_clobber (as the sysv call insns did prior to
introducing rs6000_call_sysv).  This patch fixes that minor
regression, and other like places in rs6000.c.

* config/rs6000/rs6000.c (generate_set_vrsave, rs6000_emit_savres_rtx),
(rs6000_emit_prologue, rs6000_call_aix, rs6000_call_sysv),
(rs6000_call_darwin_1): Use gen_hard_reg_clobber.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267164 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sat, 15 Dec 2018 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267163 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR target/88489
jakub [Fri, 14 Dec 2018 23:21:10 +0000 (23:21 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267160 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR rtl-optimization/88478
jakub [Fri, 14 Dec 2018 23:17:03 +0000 (23:17 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267159 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/88372 - alloc_size attribute is ignored on function pointers
msebor [Fri, 14 Dec 2018 22:45:55 +0000 (22:45 +0000)] 
PR tree-optimization/88372 - alloc_size attribute is ignored on function pointers

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267158 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/87096 - Optimised snprintf is not POSIX conformant
msebor [Fri, 14 Dec 2018 22:38:08 +0000 (22:38 +0000)] 
PR tree-optimization/87096 - Optimised snprintf is not POSIX conformant

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267157 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR 79738 - Documentation for __attribute__((const)) slightly misleading
msebor [Fri, 14 Dec 2018 22:16:43 +0000 (22:16 +0000)] 
PR 79738 - Documentation for __attribute__((const)) slightly misleading

gcc/ChangeLog:
* doc/extend.texi (attribute const, pure): Clarify.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267156 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR c++/87814] undefer deferred noexcept on tsubst if request
aoliva [Fri, 14 Dec 2018 21:57:07 +0000 (21:57 +0000)] 
[PR c++/87814] undefer deferred noexcept on tsubst if request

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267155 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agox86; Add -mmanual-endbr and cf_check function attribute
hjl [Fri, 14 Dec 2018 21:35:36 +0000 (21:35 +0000)] 
x86; Add -mmanual-endbr and cf_check function attribute

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267154 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMissing changes from "Adjust copy/copyin/copyout/create for OpenACC 2.5"
tschwinge [Fri, 14 Dec 2018 20:43:12 +0000 (20:43 +0000)] 
Missing changes from "Adjust copy/copyin/copyout/create for OpenACC 2.5"

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267153 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR88495] An OpenACC async queue is always synchronized with itself
tschwinge [Fri, 14 Dec 2018 20:43:02 +0000 (20:43 +0000)] 
[PR88495] An OpenACC async queue is always synchronized with itself

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267152 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR88484] OpenACC wait directive without wait argument but with async clause
tschwinge [Fri, 14 Dec 2018 20:42:50 +0000 (20:42 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267151 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR88407] [OpenACC] Correctly handle unseen async-arguments
tschwinge [Fri, 14 Dec 2018 20:42:40 +0000 (20:42 +0000)] 
[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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267150 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRevise libgomp.oacc-c-c++-common/data-2-lib.c, libgomp.oacc-c-c++-common/data-2.c
tschwinge [Fri, 14 Dec 2018 20:42:29 +0000 (20:42 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267149 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoCorrectly describe OpenACC async/wait dependencies
tschwinge [Fri, 14 Dec 2018 20:42:18 +0000 (20:42 +0000)] 
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>
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267148 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR88370] acc_get_cuda_stream/acc_set_cuda_stream: acc_async_sync, acc_async_noval
tschwinge [Fri, 14 Dec 2018 20:42:08 +0000 (20:42 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267147 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd user-friendly diagnostics for OpenACC loop parallelism assigned
tschwinge [Fri, 14 Dec 2018 20:41:58 +0000 (20:41 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267146 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRepair liboffloadmic after "(Partial) OpenMP 5.0 support for GCC 9"
tschwinge [Fri, 14 Dec 2018 20:41:46 +0000 (20:41 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267145 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR86823] retain deferred access checks from outside firewall
aoliva [Fri, 14 Dec 2018 20:06:15 +0000 (20:06 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267144 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/82294
jakub [Fri, 14 Dec 2018 19:37:38 +0000 (19:37 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267143 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/82294
jakub [Fri, 14 Dec 2018 19:36:33 +0000 (19:36 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267142 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoARM] Improve robustness of -mslow-flash-data
thopre01 [Fri, 14 Dec 2018 19:20:29 +0000 (19:20 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267141 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibphobos/ChangeLog:
ibuclaw [Fri, 14 Dec 2018 18:03:58 +0000 (18:03 +0000)] 
libphobos/ChangeLog:

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

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267138 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR target/88474
uros [Fri, 14 Dec 2018 17:04:48 +0000 (17:04 +0000)] 
PR target/88474
* internal-fn.def (HYPOT): New.
* optabs.def (hypot_optab): New.
* config/i386/i386.md (hypot<mode>3): New expander.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267137 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * target.def (post_cfi_startproc): Fix text.
law [Fri, 14 Dec 2018 16:48:50 +0000 (16:48 +0000)] 
* target.def (post_cfi_startproc): Fix text.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267136 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PATCH 1/3][GCC] Add new target hook asm_post_cfi_startproc
samtebbs [Fri, 14 Dec 2018 15:52:05 +0000 (15:52 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267135 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[offloading] Error on missing symbols
vries [Fri, 14 Dec 2018 13:48:56 +0000 (13:48 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267134 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agox86: Don't use get_frame_size when finalizing stack frame
hjl [Fri, 14 Dec 2018 12:38:04 +0000 (12:38 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267133 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix LRA bug
ams [Fri, 14 Dec 2018 11:49:28 +0000 (11:49 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267132 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * gcc-interface/decl.c (rm_size): Take into account the padding in
ebotcazou [Fri, 14 Dec 2018 11:08:15 +0000 (11:08 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267131 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * dwarf2out.c (analyze_discr_in_predicate): Simplify.
ebotcazou [Fri, 14 Dec 2018 10:53:41 +0000 (10:53 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267130 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Fix millicode wrong blink restore.
claziss [Fri, 14 Dec 2018 10:42:44 +0000 (10:42 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267129 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Fix REG_CLASS_NAMES.
claziss [Fri, 14 Dec 2018 10:42:32 +0000 (10:42 +0000)] 
[ARC] Fix REG_CLASS_NAMES.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267128 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[testsuite] Remove bashism from libbacktrace/allocfail.sh
vries [Fri, 14 Dec 2018 09:43:41 +0000 (09:43 +0000)] 
[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".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267127 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-14 Richard Biener <rguenther@suse.de>
rguenth [Fri, 14 Dec 2018 09:26:05 +0000 (09:26 +0000)] 
2018-12-14  Richard Biener  <rguenther@suse.de>

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267126 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[RS6000] PR88311, mlongcall indirections are optimised away
amodra [Fri, 14 Dec 2018 09:03:50 +0000 (09:03 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267123 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agomatch_asm_constraints: Use copy_rtx where needed (PR88001)
segher [Fri, 14 Dec 2018 08:29:34 +0000 (08:29 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267122 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
amker [Fri, 14 Dec 2018 05:46:55 +0000 (05:46 +0000)] 
* auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
if autofdo counts are all zeros.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267121 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * auto-profile.c (afdo_indirect_call): Skip generating histogram
amker [Fri, 14 Dec 2018 05:42:56 +0000 (05:42 +0000)] 
* auto-profile.c (afdo_indirect_call): Skip generating histogram
value for internal call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267120 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * auto-profile.c (AFDO_EINFO): New macro.
amker [Fri, 14 Dec 2018 05:40:07 +0000 (05:40 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267119 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa-cp.c (print_all_lattices): Skip cp clones.
law [Fri, 14 Dec 2018 00:19:08 +0000 (00:19 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267118 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Fri, 14 Dec 2018 00:16:55 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267117 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * ipa-cp.c: Fix various comment typos.
law [Fri, 14 Dec 2018 00:15:08 +0000 (00:15 +0000)] 
* ipa-cp.c: Fix various comment typos.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267114 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR tree-optimization/88444
jakub [Thu, 13 Dec 2018 23:35:10 +0000 (23:35 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267113 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR rtl-optimization/88470
jakub [Thu, 13 Dec 2018 23:33:57 +0000 (23:33 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267112 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/ChangeLog:
msebor [Thu, 13 Dec 2018 22:52:19 +0000 (22:52 +0000)] 
gcc/ChangeLog:
* doc/extend.texi: Consistently use @code for const and volatile
qualifiers, the true and false constants, and asm statements.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267111 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-12-13 Vladimir Makarov <vmakarov@redhat.com>
vmakarov [Thu, 13 Dec 2018 20:54:27 +0000 (20:54 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267109 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/88216 - ICE with class type in non-type template parameter.
mpolacek [Thu, 13 Dec 2018 20:47:32 +0000 (20:47 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267108 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix handling of POSIX paths containing a root-name
redi [Thu, 13 Dec 2018 20:34:10 +0000 (20:34 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267107 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/71044 optimize std::filesystem::path construction
redi [Thu, 13 Dec 2018 20:33:55 +0000 (20:33 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267106 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR rtl-optimization/88416
jakub [Thu, 13 Dec 2018 19:44:50 +0000 (19:44 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267105 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago* config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
dje [Thu, 13 Dec 2018 19:25:59 +0000 (19:25 +0000)] 
* config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is non-NULL.
(rs6000_arg_partial_bytes): Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267104 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibitm/
bergner [Thu, 13 Dec 2018 18:04:11 +0000 (18:04 +0000)] 
libitm/
* config/powerpc/target.h (htm_available):  Add support for
PPC_FEATURE2_HTM_NO_SUSPEND.  Use __builtin_cpu_supports if available.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267101 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Fix libgomp.c/target-5.c compilation
vries [Thu, 13 Dec 2018 18:04:05 +0000 (18:04 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267100 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * gdbinit.in (pp): New macro.
jason [Thu, 13 Dec 2018 17:45:40 +0000 (17:45 +0000)] 
* gdbinit.in (pp): New macro.

(pbb): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267098 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR tree-optimization/88464
jakub [Thu, 13 Dec 2018 17:01:50 +0000 (17:01 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267097 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[PR c++/87531] Fix second bug
nathan [Thu, 13 Dec 2018 15:57:24 +0000 (15:57 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267096 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoInclude gdc.test prefix in test names (PR testsuite/88041)
ro [Thu, 13 Dec 2018 14:41:34 +0000 (14:41 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267094 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR libgomp/88460
jakub [Thu, 13 Dec 2018 12:53:19 +0000 (12:53 +0000)] 
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).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267093 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR testsuite/88454
jakub [Thu, 13 Dec 2018 12:52:11 +0000 (12:52 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267092 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix [fs.path.gen] tests to use backslashes for mingw
redi [Thu, 13 Dec 2018 12:26:52 +0000 (12:26 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267090 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix test to work when path::native() returns wstring
redi [Thu, 13 Dec 2018 12:09:33 +0000 (12:09 +0000)] 
Fix test to work when path::native() returns wstring

* testsuite/27_io/filesystem/path/itr/traversal.cc: Fix test for
mingw.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267089 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoS/390: Fix zvector vec_double builtin
krebbel [Thu, 13 Dec 2018 11:57:16 +0000 (11:57 +0000)] 
S/390: Fix zvector vec_double builtin

The (unsigned) long int to double vector conversion instructions
expect 2 immediate parameters. One for the inexact suppression
control and another one for the rounding mode.  However, the
vec_double builtin has just the vector source operand.  The 2
addtional operands need to be added with an intermediate expander.
The expanders were already there but unfortunately not wired up
correctly to the builtin.

gcc/ChangeLog:

2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtins.def (s390_vec_double_s64): Map to
s390_vec_double_s64 instead of s390_vcdgb.
(s390_vec_double_u64): Map to s390_vec_double_u64 instead of
s390_vcdlgb.

gcc/testsuite/ChangeLog:

2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-double-1.c: New test.
* gcc.target/s390/zvector/vec-double-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267084 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoS/390: Use VEC_INEXACT/VEC_NOINEXACT instead of magic numbers.
krebbel [Thu, 13 Dec 2018 11:55:43 +0000 (11:55 +0000)] 
S/390: Use VEC_INEXACT/VEC_NOINEXACT instead of magic numbers.

2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/vx-builtins.md ("vec_ctd_s64", "vec_ctd_u64")
("vec_ctsl", "vec_ctul"): Replace 0 with VEC_NOINEXACT.
("vec_double_s64", "vec_double_u64"): Replace 4 with VEC_INEXACT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267083 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDisable new tests for configurations with no libstdc++fs.a
redi [Thu, 13 Dec 2018 11:01:03 +0000 (11:01 +0000)] 
Disable new tests for configurations with no libstdc++fs.a

* testsuite/27_io/filesystem/path/construct/80762.cc: Skip test if
the Filesystem TS support is not configured.
* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267082 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[AArch64][doc] Clarify -msve-vector-bits=128 behaviour
ktkachov [Thu, 13 Dec 2018 10:37:15 +0000 (10:37 +0000)] 
[AArch64][doc] Clarify -msve-vector-bits=128 behaviour

We've received reports about the -msve-vector-bits=128 bits being somewhat ambiguous.
It isn't clear whether -msve-vector-bits=128 forces vector-length-agnostic code or whether
-msve-vector-bits=scalable forces 128-bit vector-lengh-specific code.
The latter is a, perhaps unintuitive, reading that we want to exclude.

This patch makes it more explicit that -msve-vector-bits=128 is special and produces
vector-length *agnostic* code. In the end, I've rewritten the whole option documentation.

Checked make pdf that the output looks reasonable.

    * doc/invoke.texi (-msve-vector-bits): Clarify -msve-vector-bits=128
    behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267081 138bc75d-0d04-0410-961f-82ee72b054a4