Ian Lance Taylor [Fri, 23 Aug 2019 22:38:58 +0000 (22:38 +0000)]
compiler: record pointer var values to remove write barriers
Record when a local pointer variable is set to a value such that
indirecting through the pointer does not require a write barrier. Use
that to eliminate write barriers when indirecting through that local
pointer variable. Only keep this information per-block, so it's not
all that applicable.
This reduces the number of write barriers generated when compiling the
runtime package from 553 to 524.
The point of this is to eliminate a bad write barrier in the bytes
function in runtime/print.go. Mark that function nowritebarrier so
that the problem does not recur.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191581
From-SVN: r274890
Segher Boessenkool [Fri, 23 Aug 2019 22:19:40 +0000 (00:19 +0200)]
rs6000: New darn testcase (PR91481)
We used to implement darn with unspecs, not unspec_volatiles, which
means two darn instructions could be CSEd together.
This testcase tests it by adding together four random numbers. If all
is well that means we get four darn instructions, because such a small
loop is unrolled fine at -O2 already. If things go bad, combine will
combine it all to one darn and a shift left by two.
gcc/testsuite/
PR target/91481
* gcc.target/powerpc/darn-3.c: New testcase.
From-SVN: r274889
Marek Polacek [Fri, 23 Aug 2019 22:04:32 +0000 (22:04 +0000)]
PR c++/79817 - attribute deprecated on namespace.
* cp-tree.h (cp_warn_deprecated_use_scopes): Declare.
* decl.c (grokdeclarator): Call cp_warn_deprecated_use_scopes.
(type_is_deprecated): Likewise.
* decl2.c (cp_warn_deprecated_use_scopes): New function.
* name-lookup.c (handle_namespace_attrs): Handle attribute deprecated.
* parser.c (cp_parser_namespace_alias_definition): Call
cp_warn_deprecated_use_scopes.
(cp_parser_using_declaration): Likewise.
(cp_parser_using_directive): Likewise.
* semantics.c (finish_id_expression_1): Likewise.
* g++.dg/cpp0x/attributes-namespace1.C: New test.
* g++.dg/cpp0x/attributes-namespace2.C: New test.
* g++.dg/cpp0x/attributes-namespace3.C: New test.
* g++.dg/cpp0x/attributes-namespace4.C: New test.
* g++.dg/cpp0x/attributes-namespace5.C: New test.
* g++.dg/cpp1z/namespace-attribs.C: Adjust.
* g++.dg/cpp1z/namespace-attribs2.C: Adjust.
From-SVN: r274888
Michael Forney [Fri, 23 Aug 2019 21:37:22 +0000 (21:37 +0000)]
Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
* Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
* Makefile.in: Regenerate.
From-SVN: r274887
Joseph Myers [Fri, 23 Aug 2019 21:04:33 +0000 (22:04 +0100)]
Fix libstdc++ lstat missing return type for Windows target.
Building for i686-mingw32 target (with some local changes) produced an
error
error: ISO C++ forbids declaration of 'lstat' with no type [-fpermissive]
in libstdc++-v3/src/filesystem/ops-common.h. This patch adds the
missing return type. OK to commit (trunk and GCC 9 branch)?
Note 1: I haven't run the testsuite with this patch, but it fixes the
build failure I see (in sources with other local changes).
Note 2: I don't know why this hasn't produced build failures for other
people, but the missing return type looks wrong in any case even if
other local changes are for some reason needed for it to produce an
error.
* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
(std::filesystem::__gnu_posix::lstat): Add return type.
From-SVN: r274885
Joseph Myers [Fri, 23 Aug 2019 19:47:30 +0000 (20:47 +0100)]
* zh_CN.po: Update.
From-SVN: r274868
Nathan Sidwell [Fri, 23 Aug 2019 19:26:04 +0000 (19:26 +0000)]
[C++ PATCH] vfunc overrider simplification
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01674.html
* class.c (check_for_override): Checking IDENTIFIER_VIRTUAL_P is
sufficient, reorder DECL_OVERRIDE_P check.
From-SVN: r274867
Mihailo Stojanovic [Fri, 23 Aug 2019 19:04:56 +0000 (19:04 +0000)]
mips.md (mips_get_fcsr, [...]): Use SI machine mode for unspec_volatile operand.
* config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
machine mode for unspec_volatile operand.
* gcc.target/mips/get-fcsr-3.c: New test.
From-SVN: r274863
Martin Sebor [Fri, 23 Aug 2019 16:16:42 +0000 (16:16 +0000)]
pr78973.c: Make functions static to avoid failures with -fpic
gcc/testsuite/ChangeLog:
* gcc.dg/pr78973.c: Make functions static to avoid failures
with -fpic
* gcc.dg/pr78973-2.c: Same.
From-SVN: r274860
Martin Sebor [Fri, 23 Aug 2019 15:57:46 +0000 (15:57 +0000)]
Warray-bounds-36.c: Make functions static to avoid failures with -fpic.
gcc/testsuite/ChangeLog:
* gcc.dg/Warray-bounds-36.c: Make functions static to avoid failures
with -fpic.
* gcc.dg/Warray-bounds-41.c: Same.
From-SVN: r274859
Wilco Dijkstra [Fri, 23 Aug 2019 14:53:45 +0000 (14:53 +0000)]
[ARM] Deprecate -mneon-for-64bits
Deprecate -mneon-for-64bits since it no longer has any effect after
the DImode codegen improvements.
gcc/
* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
(prefer_neon_for_64bits): Remove.
* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
(tune_params): Remove PREF_NEON_64_FALSE uses.
(arm_option_override): Remove prefer_neon selection code.
(arm_print_tune_info): Remove prefer_neon_for_64bits.
* gcc/config/arm/arm-protos.h (tune_params): Remove
prefer_neon_for_64bits.
(prefer_neon_for_64bits): Remove.
From-SVN: r274858
Mark Eggleston [Fri, 23 Aug 2019 13:03:26 +0000 (13:03 +0000)]
PDF Layout
Prevent lines overlapping the right hand margin, this occurred for
references in the "See also:" section, it is prevented by placing
references on their own lines. Two example programs overlapped the
right hand margin: fixed by adjusting the position and of the comments.
Some tables had overlapping colums: the column widths were adjusted
accordingly.
From-SVN: r274857
Iain Sandoe [Fri, 23 Aug 2019 12:41:39 +0000 (12:41 +0000)]
[PATCH, c-family] Fix a PCH thinko (and thus PR61250).
When we are parsing a source file, the very first token might
be a PRAGMA_GCC_PCH_PREPROCESS. This indicates that we are going
read in a PCH file (named as the value of the pragma). If we don't
see this pragma, then we know that it's OK to release any resources
that the host might have set aside for the PCH file.
This fixes a thinko in the current implementation, in that the decision
to release resources was happening unconditionally right after the first
token is extracted but before it's been checked or acted upon.
This leads to the pch bug (seen on Darwin), because we actually do release
resources - which are subsequently (reasonably) assumed to be available
when reading a PCH file. We then get random crashes or hangs depending
on the interaction between unmmap and malloc.
The bug is present everywhere but doesn't show on (say) Linux, since
the release of PCH resources is a NOP there.
This effects all the c-family front ends, because they all use c_lex_with_flags ()
to implement this.
The solution is to check for the PRAGMA_GCC_PCH_PREPROCESS and only call
c_common_no_more_pch () when that is not the first token.
A secondary effect of the collection is that the name of the PCH file
can be collected during the ggc_pch_read() reset of state. Therefore
we should issue any diagnostic that might name the file before the
collections are triggered.
gcc/c-family/
2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
PR pch/61250
* c-lex.c (c_lex_with_flags): Don't call
c_common_no_more_pch () from here.
gcc/c/
2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
PR pch/61250
* c-parser.c (c_parse_file): Call c_common_no_more_pch ()
after determining that the first token is not
PRAGMA_GCC_PCH_PREPROCESS.
gcc/cp/
2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
PR pch/61250
* parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
after determining that the first token is not
PRAGMA_GCC_PCH_PREPROCESS.
gcc/
2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
PR pch/61250
* ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
and issue any diagnostics needed before collecting the pre-PCH
state.
From-SVN: r274856
Jakub Jelinek [Fri, 23 Aug 2019 11:37:29 +0000 (13:37 +0200)]
re PR middle-end/91283 (gcc.dg/torture/c99-contract-1.c FAILs)
PR middle-end/91283
* common.opt (fexcess-precision=): Add Optimization flag. Use
flag_excess_precision variable instead of
flag_excess_precision_cmdline.
* flags.h (class target_flag_state): Remove x_flag_excess_precision
member.
(flag_excess_precision): Don't define.
* langhooks.c (lhd_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline. Remove comment.
* opts.c (set_fast_math_flags): Use frontend_set_flag_excess_precision
and x_flag_excess_precision instead of
frontend_set_flag_excess_precision_cmdline and
x_flag_excess_precision_cmdline.
(fast_math_flags_set_p): Use x_flag_excess_precision instead of
x_flag_excess_precision_cmdline.
* toplev.c (init_excess_precision): Remove.
(lang_dependent_init_target): Don't call it.
ada/
* gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
brig/
* brig-lang.c (brig_langhook_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
c-family/
* c-common.c (c_ts18661_flt_eval_method): Use flag_excess_precision
instead of flag_excess_precision_cmdline.
* c-cppbuiltin.c (c_cpp_flt_eval_method_iec_559): Likewise.
* c-opts.c (c_common_post_options): Likewise.
d/
* d-lang.cc (d_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline.
fortran/
* options.c (gfc_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline. Remove comment.
go/
* go-lang.c (go_langhook_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
lto/
* lto-lang.c (lto_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline. Remove comment.
From-SVN: r274850
Martin Liska [Fri, 23 Aug 2019 11:27:12 +0000 (13:27 +0200)]
Make -flto=jobserver parallel again.
2019-08-23 Martin Liska <mliska@suse.cz>
* lto-wrapper.c (run_gcc): When setting jobserver
set also parallel to 1. This was done so before r273908.
From-SVN: r274849
Mark Eggleston [Fri, 23 Aug 2019 10:16:47 +0000 (10:16 +0000)]
Intrinsic documentation layout changes.
Documentation of all intrinsics now have their sections in a consistent
order. Empty sections have been removed. Stray words have been removed.
Text in a wrong section has been moved. A missing standard was inserted.
From-SVN: r274848
Mark Eggleston [Fri, 23 Aug 2019 09:31:48 +0000 (09:31 +0000)]
ABS Documentation fix
The specific intrinsics ZABS and CDABS return REAL(8) not COMPLEX(8).
From-SVN: r274847
Jozef Lawrynowicz [Fri, 23 Aug 2019 09:21:26 +0000 (09:21 +0000)]
re PR target/91306 ([MSP430] libgcc/crtstuff.c: Alignment of frame_dummy .init_array entry is too big)
2019-08-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
PR target/91306
* crtstuff.c (__CTOR_LIST__): Align to the "__alignof__" the array
element type, instead of "sizeof" the element type.
(__DTOR_LIST__): Likewise.
(__TMC_LIST__): Likewise.
(__do_global_dtors_aux_fini_array_entry): Likewise.
(__frame_dummy_init_array_entry): Likewise.
(__CTOR_END__): Likewise.
(__DTOR_END__): Likweise.
(__FRAME_END__): Likewise.
(__TMC_END__): Likewise.
From-SVN: r274846
Dennis Zhang [Fri, 23 Aug 2019 08:25:44 +0000 (08:25 +0000)]
[Arm] Add support for missing CPUs
This patch adds '-mcpu' options for following CPUs:
Cortex-M35P, Cortex-A77, Cortex-A76AE.
Related specifications are as following:
https://developer.arm.com/ip-products/processors/cortex-m
https://developer.arm.com/ip-products/processors/cortex-a
2019-08-23 Dennis Zhang <dennis.zhang@arm.com>
* config/arm/arm-cpus.in (cortex-m35p): New entry.
(cortex-a76ae): Likewise.
(cortex-a77): Likewise
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Likewise.
* doc/invoke.texi (ARM Options): Document cortex-m35p, cortx-a76ae,
cortex-a77 CPU options.
From-SVN: r274845
Martin Liska [Fri, 23 Aug 2019 07:48:34 +0000 (09:48 +0200)]
Clean up value-prof.c a bit.
2019-08-23 Martin Liska <mliska@suse.cz>
* profile.c (instrument_values): Do not set
0 as last argument.
* tree-profile.c (gimple_gen_interval_profiler): Remove
last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.
* value-prof.c (dump_histogram_value): Use default
in switch statement instead of HIST_TYPE_MAX.
(stream_in_histogram_value): Likewise.
(gimple_duplicate_stmt_histograms): Do not
use NULL for implicitly set arguments.
(gimple_divmod_values_to_profile): Do not use
reserve+quick_push.
(gimple_indirect_call_to_profile): Likewise.
(gimple_find_values_to_profile): Use implicit
function call arguments.
* value-prof.h (gimple_alloc_histogram_value):
Set default values.
(gimple_gen_interval_profiler): Remove last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.
From-SVN: r274844
GCC Administrator [Fri, 23 Aug 2019 00:16:54 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r274843
Marek Polacek [Fri, 23 Aug 2019 00:06:25 +0000 (00:06 +0000)]
PR c++/91304 - prefix attributes ignored in condition.
* parser.c (cp_parser_condition): Handle prefix attributes.
* g++.dg/cpp0x/gen-attrs-70.C: New test.
From-SVN: r274839
Steven G. Kargl [Thu, 22 Aug 2019 23:50:57 +0000 (23:50 +0000)]
intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in co_broadcast, co_max, co_min, co_reduce, and co_sum.
2019-08-22 Steven G. Kargl <kargl@gcc.gnu.org>
* intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in
co_broadcast, co_max, co_min, co_reduce, and co_sum.
From-SVN: r274838
Martin Sebor [Thu, 22 Aug 2019 23:09:26 +0000 (23:09 +0000)]
PR middle-end/91490 - bogus argument missing terminating nul warning on strlen of a flexible array member
gcc/c-family/ChangeLog:
PR middle-end/91490
* c-common.c (braced_list_to_string): Add argument and overload.
Handle flexible length arrays and unions.
gcc/testsuite/ChangeLog:
PR middle-end/91490
* c-c++-common/Warray-bounds-7.c: New test.
* gcc.dg/Warray-bounds-39.c: Expect either -Warray-bounds or
-Wstringop-overflow.
* gcc.dg/strlenopt-78.c: New test.
gcc/ChangeLog:
PR middle-end/91490
* builtins.c (c_strlen): Rename argument and introduce new local.
Set no-warning bit on original argument.
* expr.c (string_constant): Pass argument type to fold_ctor_reference.
Fold empty and zero constructors into empty strings.
* gimple-fold.c (fold_nonarray_ctor_reference): Return a STRING_CST
for missing initializers.
* tree.c (build_string_literal): Handle optional argument.
* tree.h (build_string_literal): Add defaulted argument.
* gimple-ssa-warn-restrict.c (maybe_diag_access_bounds): Check
no-warning bit on original expression.
From-SVN: r274837
Rainer Orth [Thu, 22 Aug 2019 21:55:19 +0000 (21:55 +0000)]
Fix gcc.target/i386/minmax-4.c etc. on 32-bit Solaris/x86
* gcc.target/i386/minmax-4.c: Add -mno-stackrealign to dg-options.
* gcc.target/i386/minmax-5.c: Likewise.
* gcc.target/i386/minmax-6.c: Likewise.
* gcc.target/i386/minmax-7.c: Likewise.
* gcc.target/i386/pr91154.c: Likewise.
From-SVN: r274836
Segher Boessenkool [Thu, 22 Aug 2019 19:36:21 +0000 (21:36 +0200)]
rs6000: Use unspec_volatile for darn (PR91481)
Every call to darn should deliver a *new* random number; such calls
should not be CSEd together. So they should be unspec_volatile, not
plain unspec.
PR target/91481
* config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
and UNSPEC_DARN_RAW.
(unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
UNSPECV_DARN_RAW.
(darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
(darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
(darn): Use an unspec_volatile, and UNSPECV_DARN.
From-SVN: r274835
Segher Boessenkool [Thu, 22 Aug 2019 19:33:38 +0000 (21:33 +0200)]
rs6000: Move various non-vector things out of altivec.md
* config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
* config/rs6000/rs6000.md (unspec): ... here.
* config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
cmpeqb, *cmpeqb_internal): Delete, move to...
* config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
cmpeqb, *cmpeqb_internal): ... here.
From-SVN: r274834
Eric Botcazou [Thu, 22 Aug 2019 17:31:02 +0000 (17:31 +0000)]
c-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a FUNCTION_DECL to the right value in the presence of...
* c-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a
FUNCTION_DECL to the right value in the presence of nested declarators.
From-SVN: r274828
Kyrylo Tkachov [Thu, 22 Aug 2019 15:55:39 +0000 (15:55 +0000)]
[arm] Fix use of CRC32 intrinsics with Armv8-a and hard-float
We currently have a nasty error when trying to use the __crc* intrinsics
with an -mfloat-abi=hard.
That is because the target pragma guarding them uses armv8-a+crc that
does not include fp by default.
So we get errors like:
error: '-mfloat-abi=hard': selected processor lacks an FPU
This patch fixes that by using an FP-enabled arch target pragma to guard
these intrinsics when floating-point is available.
That way both the softfloat and hardfloat variants work.
* config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
intrinsics if __ARM_FP.
Use __ARM_FEATURE_CRC32 ifdef guard.
* gcc.target/arm/acle/crc_hf_1.c: New test.
From-SVN: r274827
Wilco Dijkstra [Thu, 22 Aug 2019 15:19:58 +0000 (15:19 +0000)]
[ARM] Remove remaining Neon DImode support
Remove the remaining Neon adddi3, subdi3 and negdi2 patterns. As a result
adddi3, subdi3 and negdi2 can now always be expanded early irrespectively of
whether Neon is available. Also expand the extenddi patterns at the same
time. Several Neon arch attributes are no longer used and removed.
Code generation is improved in all cases, saving another 400-500 instructions
from the PR77308 testcase (total improvement is over 1700 instructions with
-mcpu=cortex-a57 -O2).
Bootstrap & regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57
gcc/
* config/arm/arm.md (neon_for_64bits): Remove.
(avoid_neon_for_64bits): Remove.
(arm_adddi3): Always split early.
(arm_subdi3): Always split early.
(negdi2): Remove Neon expansion.
(split zero_extend): Split before reload.
(split sign_extend): Split before reload.
From-SVN: r274825
Wilco Dijkstra [Thu, 22 Aug 2019 15:06:37 +0000 (15:06 +0000)]
[ARM] Cleanup DImode shifts
Like the logical operations, expand all shifts early rather than only
sometimes. The Neon shift expansions are never emitted (not even with
-fneon-for-64bits), so they are not useful. So all the late expansions
and Neon shift patterns can be removed, and shifts are more optimized
as a result. Since some extend patterns use Neon DImode shifts, remove
the Neon extend variants and related splits.
A simple example now generates the same efficient code after this
patch with -mfpu=neon and -mfpu=vfp (previously just the fact of
having Neon enabled resulted inefficient code for no reason).
unsigned long long f(unsigned long long x, unsigned long long y)
{ return x & (y >> 33); }
Before:
strd r4, r5, [sp, #-8]!
lsr r4, r3, #1
mov r5, #0
and r1, r1, r5
and r0, r0, r4
ldrd r4, r5, [sp]
add sp, sp, #8
bx lr
After:
and r0, r0, r3, lsr #1
mov r1, #0
bx lr
Bootstrap and regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57
gcc/
* config/arm/iterators.md (qhs_extenddi_cstr): Update.
(qhs_extenddi_cstr): Likewise.
* config/arm/arm.md (ashldi3): Always expand early.
(ashlsi3): Likewise.
(ashrsi3): Likewise.
(zero_extend<mode>di2): Remove Neon variants.
(extend<mode>di2): Likewise.
* config/arm/neon.md (ashldi3_neon_noclobber): Remove.
(signed_shift_di3_neon): Likewise.
(unsigned_shift_di3_neon): Likewise.
(ashrdi3_neon_imm_noclobber): Likewise.
(lshrdi3_neon_imm_noclobber): Likewise.
(<shift>di3_neon): Likewise.
(split extend): Remove DI extend split patterns.
gcc/testsuite/
* gcc.target/arm/neon-extend-1.c: Remove test.
* gcc.target/arm/neon-extend-2.c: Remove test.
From-SVN: r274824
Wilco Dijkstra [Thu, 22 Aug 2019 14:52:24 +0000 (14:52 +0000)]
[ARM] Cleanup logical DImode operations
Cleanup the logical DImode operations since the current implementation is way
too complicated. Thumb-1, Thumb-2, VFP/Neon and iwMMXt all work differently,
resulting in a bewildering number of expansions, patterns and splits across
several md files. All this complexity is counterproductive and results in
inefficient code.
A much simpler approach is to split these operations early in the expander
so that optimizations and register allocation are applied on the 32-bit halves.
Codegeneration is unchanged on Thumb-1 and Arm/Thumb-2 without Neon or iwMMXt
(which already expand these instructions early). With Neon these changes save
~1000 instructions from the PR77308 testcase, mostly by significantly reducing
register pressure and spilling.
Bootstrap OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57
gcc/
* config/arm/arm.md (split and/eor/ior): Remove Neon check.
(split not): Add DImode not splitter.
(anddi3): Remove pattern.
(anddi3_insn): Likewise.
(anddi_zesidi_di): Likewise.
(anddi_sesdi_di): Likewise.
(anddi_notdi_di): Likewise.
(anddi_notzesidi_di): Likewise.
(anddi_notsesidi_di): Likewise.
(iordi3): Likewise.
(iordi3_insn): Likewise.
(iordi_zesidi_di): Likewise.
(iordi_sesidi_di): Likewise.
(xordi3): Likewise.
(xordi3_insn): Likewise.
(xordi_sesidi_di): Likewise.
(xordi_zesidi_di): Likewise.
(one_cmpldi2): Likewise.
(one_cmpldi2_insn): Likewise.
* config/arm/constraints.md: Remove De, Df, Dg constraints.
* config/arm/iwmmxt.md (iwmmxt_iordi3): Remove general register
alternative.
(iwmmxt_xordi3): Likewise.
(iwmmxt_anddi3): Likewise.
* config/arm/neon.md (orndi3_neon): Remove pattern.
(anddi_notdi_di): Likewise.
* config/arm/predicates.md (arm_anddi_operand_neon): Remove.
(arm_iordi_operand_neon): Likewise.
(arm_xordi_operand_neon): Likewise.
* config/arm/thumb2.md(iordi_notdi_di): Remove pattern.
(iordi_notzesidi_di): Likewise.
(iordi_notdi_zesidi): Likewise.
(iordi_notsesidi_di): Likewise.
From-SVN: r274823
Richard Earnshaw [Thu, 22 Aug 2019 14:40:52 +0000 (14:40 +0000)]
[Arm] Add 16-bit thumb alternatives to iorsi3_compare0[_scratch]
The iorsi3_compare0 and iorsi3_compare0_scratch patterns can make use
of the 16-bit thumb orrs instruction if suitable registers are
allocated. This patch adds the alternative to allow this to happen.
* config/arm/arm.md (iorsi3_compare0): Add alternative for 16-bit thumb
insn.
(iorsi3_compare0_scratch): Likewise.
From-SVN: r274822
Sylvia Taylor [Thu, 22 Aug 2019 11:28:26 +0000 (11:28 +0000)]
[aarch64]: add intrinsics for vld1(q)_x4 and vst1(q)_x4
This patch adds the intrinsic functions for:
- vld1_<mode>_x4
- vst1_<mode>_x4
- vld1q_<mode>_x4
- vst1q_<mode>_x4
Bootstrapped and tested on aarch64-none-linux-gnu.
Committed on behalf of Sylvia Taylor.
2019-08-22 Sylvia Taylor <sylvia.taylor@arm.com>
* config/aarch64/aarch64-simd-builtins.def:
(ld1x4): New.
(st1x4): Likewise.
* config/aarch64/aarch64-simd.md:
(aarch64_ld1x4<VALLDIF:mode>): New pattern.
(aarch64_st1x4<VALLDIF:mode>): Likewise.
(aarch64_ld1_x4_<mode>): Likewise.
(aarch64_st1_x4_<mode>): Likewise.
* config/aarch64/arm_neon.h:
(vld1_s8_x4): New function.
(vld1q_s8_x4): Likewise.
(vld1_s16_x4): Likewise.
(vld1q_s16_x4): Likewise.
(vld1_s32_x4): Likewise.
(vld1q_s32_x4): Likewise.
(vld1_u8_x4): Likewise.
(vld1q_u8_x4): Likewise.
(vld1_u16_x4): Likewise.
(vld1q_u16_x4): Likewise.
(vld1_u32_x4): Likewise.
(vld1q_u32_x4): Likewise.
(vld1_f16_x4): Likewise.
(vld1q_f16_x4): Likewise.
(vld1_f32_x4): Likewise.
(vld1q_f32_x4): Likewise.
(vld1_p8_x4): Likewise.
(vld1q_p8_x4): Likewise.
(vld1_p16_x4): Likewise.
(vld1q_p16_x4): Likewise.
(vld1_s64_x4): Likewise.
(vld1_u64_x4): Likewise.
(vld1_p64_x4): Likewise.
(vld1q_s64_x4): Likewise.
(vld1q_u64_x4): Likewise.
(vld1q_p64_x4): Likewise.
(vld1_f64_x4): Likewise.
(vld1q_f64_x4): Likewise.
(vst1_s8_x4): Likewise.
(vst1q_s8_x4): Likewise.
(vst1_s16_x4): Likewise.
(vst1q_s16_x4): Likewise.
(vst1_s32_x4): Likewise.
(vst1q_s32_x4): Likewise.
(vst1_u8_x4): Likewise.
(vst1q_u8_x4): Likewise.
(vst1_u16_x4): Likewise.
(vst1q_u16_x4): Likewise.
(vst1_u32_x4): Likewise.
(vst1q_u32_x4): Likewise.
(vst1_f16_x4): Likewise.
(vst1q_f16_x4): Likewise.
(vst1_f32_x4): Likewise.
(vst1q_f32_x4): Likewise.
(vst1_p8_x4): Likewise.
(vst1q_p8_x4): Likewise.
(vst1_p16_x4): Likewise.
(vst1q_p16_x4): Likewise.
(vst1_s64_x4): Likewise.
(vst1_u64_x4): Likewise.
(vst1_p64_x4): Likewise.
(vst1q_s64_x4): Likewise.
(vst1q_u64_x4): Likewise.
(vst1q_p64_x4): Likewise.
(vst1_f64_x4): Likewise.
(vst1q_f64_x4): Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vld1x4.c: New test.
* gcc.target/aarch64/advsimd-intrinsics/vst1x4.c: New test.
From-SVN: r274820
Prathamesh Kulkarni [Thu, 22 Aug 2019 08:48:42 +0000 (08:48 +0000)]
aarch64-sve.md (vcond_mask): Add "@".
2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* config/aarch64/aarch64-sve.md (vcond_mask): Add "@".
From-SVN: r274817
GCC Administrator [Thu, 22 Aug 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r274816
Prathamesh Kulkarni [Wed, 21 Aug 2019 20:41:41 +0000 (20:41 +0000)]
re PR target/88839 ([SVE] Poor implementation of blend-like permutes)
2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Richard Sandiford <richard.sandiford@arm.com>
PR target/88839
* config/aarch64/aarch64.c (aarch64_evpc_sel): New function.
(aarch64_expand_vec_perm_const_1): Call aarch64_evpc_sel.
testsuite/
* gcc.target/aarch64/sve/sel_1.c: New test.
* gcc.target/aarch64/sve/sel_2.c: Likewise.
* gcc.target/aarch64/sve/sel_3.c: Likewise.
* gcc.target/aarch64/sve/sel_4.c: Likewise.
* gcc.target/aarch64/sve/sel_5.c: Likewise.
* gcc.target/aarch64/sve/sel_6.c: Likewise.
Co-Authored-By: Richard Sandiford <richard.sandiford@arm.com>
From-SVN: r274810
Prathamesh Kulkarni [Wed, 21 Aug 2019 18:34:43 +0000 (18:34 +0000)]
re PR target/90724 (ICE with __sync_bool_compare_and_swap with -march=armv8.2-a+sve)
2019-08-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR target/90724
* config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): Force y
in reg if it fails aarch64_plus_operand predicate.
From-SVN: r274805
Ian Lance Taylor [Wed, 21 Aug 2019 17:19:52 +0000 (17:19 +0000)]
compiler: don't use pkgpath for fieldtrack of unexported field
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191040
From-SVN: r274803
Ian Lance Taylor [Wed, 21 Aug 2019 14:11:24 +0000 (14:11 +0000)]
compiler: if hidden function referenced by inline, don't hide descriptor
Fixes golang/go#33739
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191037
From-SVN: r274800
Richard Sandiford [Wed, 21 Aug 2019 13:59:31 +0000 (13:59 +0000)]
[C++] Protect call to copy_attributes_to_builtin (PR91505)
copy_attributes_to_builtin only handles BUILT_IN_NORMAL, but C++ was
calling it immediately after the:
if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)
block. The corresponding C code calls it inside the block instead.
2019-08-21 Richard Sandiford <richard.sandiford@arm.com>
gcc/cp/
PR c++/91505
* decl.c (duplicate_decls): Call copy_attributes_to_builtin inside
the BUILT_IN_NORMAL block rather than afterward.
gcc/testsuite/
PR c++/91505
* g++.target/i386/crc32-4.C: New test.
From-SVN: r274799
Richard Biener [Wed, 21 Aug 2019 11:45:34 +0000 (11:45 +0000)]
re PR tree-optimization/91482 (__builtin_assume_aligned should not break write combining)
2019-08-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/91482
* tree-ssa-ccp.c (ccp_folder::fold_stmt): Remove useless
BUILT_IN_ASSUME_ALIGNED calls.
* gcc.dg/tree-ssa/pr91482.c: New testcase.
From-SVN: r274796
Eric Botcazou [Wed, 21 Aug 2019 09:54:04 +0000 (09:54 +0000)]
c-ada-spec.c (dump_ada_function_declaration): Be prepared for broken function declarations where arguments are missing.
* c-ada-spec.c (dump_ada_function_declaration): Be prepared for broken
function declarations where arguments are missing. Rename variables.
From-SVN: r274794
Christophe Lyon [Wed, 21 Aug 2019 09:40:51 +0000 (09:40 +0000)]
[testsuite][arm] Add missing quotes to expected warning messages.
2019-08-21 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.target/arm/cmse/cmse-9.c: Add quotes to expected
warning messages.
From-SVN: r274793
Richard Biener [Wed, 21 Aug 2019 08:44:59 +0000 (08:44 +0000)]
re PR target/91498 (STV change in r274481 causes 300.twolf regression on Haswell)
2019-08-21 Richard Biener <rguenther@suse.de>
PR target/91498
PR target/91503
* config/i386/i386-features.c
(general_scalar_chain::make_vector_copies): Copy stack temporary
rtx when using it multiple times.
(general_scalar_chain::convert_reg): Likewise.
From-SVN: r274792
Vadim Godunko [Wed, 21 Aug 2019 08:31:20 +0000 (08:31 +0000)]
[Ada] Improve detection of end of the process by GNAT.Expect
'read' system call may be interrupted by signal with 'errno' is set to
EINTER. In this case, re-try a few times.
2019-08-21 Vadim Godunko <godunko@adacore.com>
gcc/ada/
* libgnat/g-expect.adb (Expect_Internal): Attempt to read
several times when 'read' returns non-positive.
From-SVN: r274791
Piotr Trojanek [Wed, 21 Aug 2019 08:31:16 +0000 (08:31 +0000)]
[Ada] Minor refactorings/reformattings
2019-08-21 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* einfo.adb (Is_Discriminal): Remove extra parens.
(Is_Constant_Object): Simplify by reusing Ekind_In.
(Is_Prival): Remove extra parens.
* checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor
reformattings.
From-SVN: r274790
Claire Dross [Wed, 21 Aug 2019 08:31:11 +0000 (08:31 +0000)]
[Ada] Allow for of iteration on formal vectors
2019-08-21 Claire Dross <dross@adacore.com>
gcc/ada/
* libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow
iteration.
(Iter_First, Iter_Next): Primitives used for iteration.
From-SVN: r274789
Yannick Moy [Wed, 21 Aug 2019 08:31:07 +0000 (08:31 +0000)]
[Ada] More precise propagation of Size attribute in generic instances
GNATprove analyzer for SPARK code depends on the frontend to accurately
propagate the known value of Size attribute. This was not done for
formal type parameters in generic instantiations. Now fixed.
There is no impact on compilation.
2019-08-21 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size
field for formal type parameters in generic instantiations.
From-SVN: r274788
Yannick Moy [Wed, 21 Aug 2019 08:31:03 +0000 (08:31 +0000)]
[Ada] Update references to the SPARK RM
2019-08-21 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_spark.adb: Update references to the SPARK RM.
From-SVN: r274787
Eric Botcazou [Wed, 21 Aug 2019 08:30:58 +0000 (08:30 +0000)]
[Ada] More complete information level for -gnatR4 output
This instructs -gnatR4 to also list the Etype of components in
user-declared record types if it is compiler-generated, for example in:
package P3 is
type idx is range 1 .. 100;
type Arr is array (Idx range <>) of Character;
type Rec is record
C : Arr (1 .. 5);
end record;
end P3;
2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
relevant flag on the component type here instead of...
(List_Object_Info): Likewise for the object type.
(List_Entities): ...here. In -gnatR4 mode, recurse into
entities local to a record type.
(List_Component_Layout): In -gnatR4 mode, mark the type as
relevant.
From-SVN: r274786
Bob Duff [Wed, 21 Aug 2019 08:30:53 +0000 (08:30 +0000)]
[Ada] Add the System.Bitfield_Utils runtime unit
2019-08-21 Bob Duff <duff@adacore.com>
gcc/ada/
* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
s-biutin.o.
* exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to
generate a call to Copy_Bitfield. This is disabled for now.
(Expand_Assign_Array_Loop_Or_Bitfield): New function to decide
whether to call Expand_Assign_Array_Bitfield.
(Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield
instead of Expand_Assign_Array_Loop.
* libgnat/s-bitfie.ads, libgnat/s-bituti.adb,
libgnat/s-bituti.ads: New units.
* rtsfind.ads: Add enum literals for accessing Copy_Bitfield.
From-SVN: r274785
Piotr Trojanek [Wed, 21 Aug 2019 08:30:32 +0000 (08:30 +0000)]
[Ada] Bindo.Graphs: Minor typo fixes
2019-08-21 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in
pragma Inline.
* bindo-graphs.adb (Delete_Edge): Fix layout in parameter list.
From-SVN: r274784
Gary Dismukes [Wed, 21 Aug 2019 08:30:17 +0000 (08:30 +0000)]
[Ada] Undefined master in task with limited class-wide aliased entry formal
In the case of a task declaring an entry with an aliased formal
parameter of a limited class-wide type, the front end was creating a
master object (_master) for the access type generated for such an entry
formal inside the task specification, even though such access types
don't need an associated master. The master object wasn't being copied
into the procedure expanded for the task body, but a renaming for the
master appeared in the statements of the task body, and the LLVM back
end rejects this since the master object doesn't appear in the expanded
task procedure (for some reason, gigi doesn't complain). This is fixed
by suppressing the creation of the master object in the case where the
access-to-limited-class-wide access type is the type of a component in
an entry's parameter block. This is similar to the suppression done for
the master object in other cases, where the access type designates a
type explicitly containing tasks (though the suppression involves
testing Comes_From_Source in that case).
No simple test (and this only affects the LLVM-based compiler).
2019-08-21 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* exp_ch3.adb (Build_Master): Suppress call to
Build_Class_Wide_Master in the case where the
access-to-limited-class-wide type was created for a component in
an entry's formal parameter
block (Is_Parameter_Block_Component_Type), to prevent a master
from being created for such access types generated by the front
end in a task spec for entry formals in a parameter block. Add
a ??? about whether this suppression should be done more
generally (such as by using Comes_From_Source).
From-SVN: r274783
Eric Botcazou [Wed, 21 Aug 2019 08:30:00 +0000 (08:30 +0000)]
[Ada] Fix type mismatch in extended return statement expansion
This fixes a (sub)type mismatch in the expansion of an extended return
statement generated for a built-in-place function that doesn't need a
BIP_Alloc_Form parameter but returns unconstrained.
No functional changes.
2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case
of a built-in-place function that doesn't need a BIP_Alloc_Form
parameter but returns unconstrained, build the return
consistently using the function's result subtype. Remove bypass
added in previous change.
From-SVN: r274782
Piotr Trojanek [Wed, 21 Aug 2019 08:29:56 +0000 (08:29 +0000)]
[Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis
It was unusual for the analysis phase of compiler to rewrite static
expression of pragma Entry_Queue_Length with its value. This typically
happens when expanding the AST and only if needed for a given backend.
In particular, GNATprove doesn't need such an expansion and actually
needs the unrewritten AST to detect references to constants declared
with SPARK_Mode => Off within a code with SPARK_Mode => On.
This change has no impact on compilation, so no frontend test is
provided.
2019-08-21 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
expression of the pragma argument with its value during
analysis.
* sem_util.adb (Get_Max_Queue_Length): Compute value of the
pragma argument when needed.
From-SVN: r274781
Yannick Moy [Wed, 21 Aug 2019 08:29:51 +0000 (08:29 +0000)]
[Ada] Avoid spurious error in GNATprove mode on non-null access types
GNATprove directly handles non-null access checks, and requires that the
frontend does not insert explicit checks in the form of conditional
exceptions being raised. Now fixed.
There is no impact on compilation.
2019-08-21 Yannick Moy <moy@adacore.com>
gcc/ada/
* checks.adb (Install_Null_Excluding_Check): Do not install
check in GNATprove mode.
From-SVN: r274780
Yannick Moy [Wed, 21 Aug 2019 08:29:47 +0000 (08:29 +0000)]
[Ada] Ignore subprogram address in ownership checking
Ownership checking done as in GNATprove should ignore address of
subprograms, as it applies only on objects. Now fixed.
There is no impact on compilation.
2019-08-21 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_spark.adb (Process_Path): Do nothing on address of
subprogram.
From-SVN: r274779
Eric Botcazou [Wed, 21 Aug 2019 08:29:42 +0000 (08:29 +0000)]
[Ada] Fix assertion failure on derived private protected type
This fixes an assertion failure on the instantiation of a generic
package on a type derived from the private view of a protected type,
ultimately caused by Finalize_Address returning Empty for the subtype
built for the generic actual type of the instantiation.
Finalize_Address has a special processing for untagged derivations of
private views, but it would no longer trigger for the subtype because
this subtype is now represented as a subtype of an implicit derived base
type instead of as the derived type of an implicit subtype previously.
2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_util.adb (Finalize_Address): Deal consistently with
subtypes of private protected types.
gcc/testsuite/
* gnat.dg/prot9.adb, gnat.dg/prot9_gen.ads,
gnat.dg/prot9_pkg1.ads, gnat.dg/prot9_pkg2.ads: New testcase.
From-SVN: r274778
Piotr Trojanek [Wed, 21 Aug 2019 08:29:37 +0000 (08:29 +0000)]
[Ada] Replace low-level membership tests with high-level routines
Code cleanup to improve readablity. Semantics unaffected.
2019-08-21 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_util.adb (Corresponding_Runtime_Package): Use high-level
Is_Protected_Type.
* sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
* sem_ch9.adb (Analyze_Requeue): Likewise.
From-SVN: r274777
Javier Miranda [Wed, 21 Aug 2019 08:29:33 +0000 (08:29 +0000)]
[Ada] Missing attribute update in new_copy_tree
The compiler crashes processing an internally generated cloned tree that
has a subprogram call with a named actual parameter.
2019-08-21 Javier Miranda <miranda@adacore.com>
gcc/ada/
* sem_util.adb (Update_Named_Associations): Update
First_Named_Actual when the subprogram call has a single named
actual.
gcc/testsuite/
* gnat.dg/implicit_param.adb, gnat.dg/implicit_param_pkg.ads:
New testcase.
From-SVN: r274776
Joel Brobecker [Wed, 21 Aug 2019 08:29:27 +0000 (08:29 +0000)]
[Ada] doc/Makefile: automatically create doc/share/_static
2019-08-21 Joel Brobecker <brobecker@adacore.com>
gcc/ada/
* doc/Makefile (mk_empty_dirs): New (PHONY) rule.
(%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
mk_empty_dirs.
From-SVN: r274775
Justin Squirek [Wed, 21 Aug 2019 08:29:23 +0000 (08:29 +0000)]
[Ada] Max_Entry_Queue_Length aspect for protected entries
Allow values of negative one to be accepted as a valid parameter as a
special case.
2019-08-21 Justin Squirek <squirek@adacore.com>
gcc/ada/
* doc/gnat_rm/implementation_defined_pragmas.rst: Modify
documentation to reflect expected behavior.
* gnat_rm.texi: Regenerate.
* sem_prag.adb (Analyze_Pragma): Modify handling of pragma
Max_Entry_Queue_Length to not reject integer values of negative
one.
* sem_util.adb (Get_Max_Queue_Length): Add processing for values
of negative one to fit within the current scheme.
From-SVN: r274774
Iain Buclaw [Wed, 21 Aug 2019 07:54:34 +0000 (07:54 +0000)]
libphobos: Merge upstream druntime
5bb8ce19
Synchronizes extern(C) bindings with latest release.
Reviewed-on: https://github.com/dlang/druntime/pull/2741
libphobos/ChangeLog:
* libdruntime/Makefile.am (DRUNTIME_DSOURCES_BIONIC): Add
core/sys/bionic/string.d.
(DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/string.d.
(DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/string.d,
core/sys/dragonflybsd/sys/socket.d.
(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/string.d.
(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/string.d.
(DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/string.d,
core/sys/netbsd/sys/featuretest.d.
* libdruntime/Makefile.in: Regenerate.
From-SVN: r274773
Iain Buclaw [Wed, 21 Aug 2019 07:54:19 +0000 (07:54 +0000)]
libphobos: Merge upstream druntime
94686651
Adds extern(C) bindings for version OpenBSD.
Reviewed-on: https://github.com/dlang/druntime/pull/2748
libphobos/ChangeLog:
* libdruntime/Makefile.am (DRUNTIME_DSOURCES_OPENBSD): Add
core/sys/openbsd/sys/cdefs.d, core/sys/openbsd/sys/elf.d,
core/sys/openbsd/sys/elf32.d, core/sys/openbsd/sys/elf64.d,
core/sys/openbsd/sys/elf_common.d, core/sys/openbsd/sys/link_elf.d,
core/sys/openbsd/sys/mman.d, core/sys/openbsd/time.d.
* libdruntime/Makefile.in: Regenerate.
From-SVN: r274772
Iain Buclaw [Wed, 21 Aug 2019 07:54:06 +0000 (07:54 +0000)]
re PR d/91339 (libphobos: ftbfs when the path contains '~')
PR d/91339
d/dmd: Merge upstream dmd
b37a537d3
Fixes the error: cannot find source code for runtime library file
'object.d' when the path contains '~'.
Reviewed-on: https://github.com/dlang/dmd/pull/10309
From-SVN: r274771
Iain Buclaw [Wed, 21 Aug 2019 07:53:55 +0000 (07:53 +0000)]
libphobos: Merge upstream phobos
66ae77ac3
Finishes off phobos support for musl targets.
Reviewed-on: https://github.com/dlang/phobos/pull/7108
From-SVN: r274770
Iain Buclaw [Wed, 21 Aug 2019 07:53:44 +0000 (07:53 +0000)]
d: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40
gcc/d/ChangeLog:
PR d/88722
* modules.cc: Include diagnostic.h.
(register_moduleinfo): Use sorry instead of gcc_assert for targets
without named sections.
From-SVN: r274769
Iain Buclaw [Wed, 21 Aug 2019 07:53:35 +0000 (07:53 +0000)]
d/dmd: Merge upstream dmd
375ed10aa
Don't crash when compiling for 16-bit platforms.
Reviewed-on: https://github.com/dlang/dmd/pull/10306
gcc/d/ChangeLog:
* d-target.cc: Include diagnostic.h.
(Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if
the target pointer size is 2. Add sorry if the pointer size is not
either 2, 4, or 8.
From-SVN: r274768
Iain Buclaw [Wed, 21 Aug 2019 07:53:25 +0000 (07:53 +0000)]
d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539
gcc/d/ChangeLog:
PR d/90446
* d-lang.cc (d_type_for_mode): Check for all internal __intN types.
(d_type_for_size): Likewise.
From-SVN: r274767
Iain Buclaw [Wed, 21 Aug 2019 07:53:15 +0000 (07:53 +0000)]
d: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783
gcc/d/ChangeLog:
PR d/90445
* d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting
uintmax_type_node. Set signed_size_type_node as the signed_type_for
size_type_node.
From-SVN: r274766
Iain Buclaw [Wed, 21 Aug 2019 07:53:05 +0000 (07:53 +0000)]
d: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121
gcc/d/ChangeLog:
PR d/90444
* d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE
nodes as well, push all fields to the struct members.
(d_build_builtins_module): Push anonymous va_list structs to the
builtins module, naming them __builtin_va_list.
(d_init_builtins): Use sorry instead of gcc_unreachable if va_list did
not succeed in being represented as a D type.
From-SVN: r274765
Martin Sebor [Wed, 21 Aug 2019 02:18:41 +0000 (02:18 +0000)]
re PR testsuite/91458 (FAIL: g++.dg/tree-ssa/pr19807.C -std=gnu++98 scan-tree-dump-times optimized "&MEM\\\\[\\\\(void .\\\\)&a \\\\+ 8B\\\\]" 3)
PR testsuite/91458
gcc/testsuite/ChangeLog:
* g++.dg/tree-ssa/ssa-dse-1.C: Use the same search pattern
unconditionally (correcting r272199, PR middle-end/90676).
* gcc.dg/tree-prof/stringop-2.c: Same.
From-SVN: r274764
GCC Administrator [Wed, 21 Aug 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r274763
Jonathan Wakely [Tue, 20 Aug 2019 21:35:55 +0000 (22:35 +0100)]
Do not try to process deleted headers with Doxygen
* doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
From-SVN: r274758
Jonathan Wakely [Tue, 20 Aug 2019 21:34:15 +0000 (22:34 +0100)]
Fix markdown in Doxygen comments for std::reduce
* include/std/numeric (reduce): Fix Doxygen markup.
From-SVN: r274757
Jonathan Wakely [Tue, 20 Aug 2019 21:21:15 +0000 (22:21 +0100)]
PR libstdc++/91371 make std::is_function handle other calling conventions
The x86 attributes such as ms_abi, stdcall, fastcall etc. alter the
function type, which means that functions with one of those attributes
do not match any of the partial specializations of std::is_function.
Rather than duplicating the list for every calling convention, use a
much simpler definition of std::is_function.
Also redefine __is_referenceable to not rely on partial specializations
for each type of referenceable function.
PR libstdc++/91371
* include/std/type_traits (is_function): Simplify definition. Remove
partial specializations for function types.
(__is_referenceable): Simplify definition.
* testsuite/20_util/bind/91371.cc: New test.
* testsuite/20_util/is_function/91371.cc: New test.
* testsuite/20_util/is_function/value.cc: Check more pointer types.
* testsuite/20_util/is_member_function_pointer/91371.cc: New test.
* testsuite/20_util/is_object/91371.cc: New test.
From-SVN: r274756
Ian Lance Taylor [Tue, 20 Aug 2019 21:15:46 +0000 (21:15 +0000)]
compiler, runtime: implement shifts by signed amounts
Shifting by signed types is a new language feature in Go 1.13.
This requires a patch to the testsuite.
Updates golang/go#19113
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190977
* go.test/test/fixedbugs/bug073.go: Update for language changes.
From-SVN: r274755
Bernd Edlinger [Tue, 20 Aug 2019 16:08:12 +0000 (16:08 +0000)]
function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.
2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
* function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.
From-SVN: r274751
Matthew Beliveau [Tue, 20 Aug 2019 13:23:01 +0000 (13:23 +0000)]
tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to catch more redundant zero initialization cases.
2019-08-19 Matthew Beliveau <mbelivea@redhat.com>
* tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to
catch more redundant zero initialization cases.
(dse_dom_walker::dse_optimize_stmt): Likewise.
From-SVN: r274749
Richard Biener [Tue, 20 Aug 2019 13:14:59 +0000 (13:14 +0000)]
re PR lto/91307 (-flto causes binary to vary)
2019-08-20 Richard Biener <rguenther@suse.de>
PR lto/91307
* ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable
by collect2 when targetm.have_ctors_dtors which avoids dragging
in temporary filenames from LTO input objects.
From-SVN: r274748
Richard Biener [Tue, 20 Aug 2019 12:02:56 +0000 (12:02 +0000)]
re PR tree-optimization/37242 (missed FRE opportunity because of signedness of addition)
2019-08-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/37242
* tree-ssa-sccvn.c (visit_nary_op): Also CSE (T)(a + b)
to (T)a + (T)b if we know that a + b does not overflow.
* gcc.dg/tree-ssa/ssa-fre-80.c: New testcase.
From-SVN: r274746
Mark Eggleston [Tue, 20 Aug 2019 10:08:10 +0000 (10:08 +0000)]
Intrinsic documentation changes.
Add notes to DIM, MOD and MODULE stating that as a GNU extension,
integers of different kinds are allowed as arguments and that the
return value has the larger kind.
From-SVN: r274744
Arnaud Charlet [Tue, 20 Aug 2019 09:50:43 +0000 (09:50 +0000)]
[Ada] Unnesting: take inlining (-gnatn) into account
This affects only LLVM-based compilation.
2019-08-20 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take
inlining (-gnatn) into account.
From-SVN: r274743
Ed Schonberg [Tue, 20 Aug 2019 09:50:38 +0000 (09:50 +0000)]
[Ada] Crash on a Storage_Size aspect depending on attr. of another type
This patch fixes a crash on an aspect specification for Storage_Size for
a type T when the expression for the aspect depends on attributes of a
previously declared type that is not frozen yet. The temporary
declaration that captures the value of the aspect must be part of the
actions attached to the freeze node for T.
2019-08-20 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
Storage_Size): If the expression for Storage_Size is not static
it may depend on characterstics of another type that may bot be
frozen yet, so the elaboration of the expression for the aspect
must be attached directly to the freeze actions of the type to
which it applies.
gcc/testsuite/
* gnat.dg/storage_size1.adb: New testcase.
From-SVN: r274742
Piotr Trojanek [Tue, 20 Aug 2019 09:50:34 +0000 (09:50 +0000)]
[Ada] Inconsistent scope chain due to quantified expression
Routine Build_DIC_Procedure_Declaration appears to be heavily inspired
by Build_Invariant_Procedure_Declaration; they both wrap an expression
attached to a type inside an internal procedure. Initially none of them
were calling Set_Last_Entity.
For Build_Invariant_Procedure_Declaration this was fixed previously.
For Build_DIC_Procedure_Declaration this is fixed here.
The issue affects the GNATprove tool and is not visible to end users of
the GNAT compiler. No simple test is available because this would
require a debug session.
2019-08-20 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* exp_util.adb (Build_DIC_Procedure_Declaration): Set the last
entity of the generated Default_Initial_Condition procedure in
order to construct a proper entity chain.
From-SVN: r274741
Yannick Moy [Tue, 20 Aug 2019 09:50:29 +0000 (09:50 +0000)]
[Ada] Adapt GNATprove expansion for slices with access prefix
The special expansion done in GNATprove mode should be adapted to slices
where the prefix has access type, like indexed expressions.
There is no impact on compilation.
2019-08-20 Yannick Moy <moy@adacore.com>
gcc/ada/
* exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component):
Renaming of function to apply to slices as well.
(Expand_SPARK): Expand prefix of slices of access type.
From-SVN: r274740
Bob Duff [Tue, 20 Aug 2019 09:50:24 +0000 (09:50 +0000)]
[Ada] Improve efficiency of aggregates with <>
The generated code has been improved so that aggregates with <> are more
efficient. No change in behavior; no test.
2019-08-20 Bob Duff <duff@adacore.com>
gcc/ada/
* exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in
the nonlimited case in STEP 4. This improves the efficiency of
things like (1 .. 1000 => <>). We still generate some code for
that, unfortunately, but it is much improved.
(Aggr_Assignment_OK_For_Backend): Return false if <> components
are present.
From-SVN: r274739
Bob Duff [Tue, 20 Aug 2019 09:50:19 +0000 (09:50 +0000)]
[Ada] Improve speed of discriminated return types
The compiler now generates faster code for functions that return
discriminated types in many cases where the size is known at compile
time.
2019-08-20 Bob Duff <duff@adacore.com>
gcc/ada/
* exp_ch6.adb (Needs_BIP_Alloc_Form): Call
Requires_Transient_Scope rather than checking constrainedness
and so forth. We have previously improved
Requires_Transient_Scope to return False in various cases,
notably a limited record with an access discriminant. This
change takes advantage of that to avoid using the secondary
stack for functions returning such types.
(Make_Build_In_Place_Call_In_Allocator): Be consistent by
calling Needs_BIP_Alloc_Form rather than Is_Constrained and so
forth.
* sem_ch4.adb (Analyze_Allocator): The above change causes the
compiler to generate code that is not legal Ada, in particular
an uninitialized allocator for indefinite subtype. This is
harmless, so we suppress the error message in this case.
From-SVN: r274738
Gary Dismukes [Tue, 20 Aug 2019 09:50:14 +0000 (09:50 +0000)]
[Ada] Minor reformattings
2019-08-20 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb,
doc/gnat_rm/implementation_defined_pragmas.rst,
doc/gnat_ugn/building_executable_programs_with_gnat.rst,
einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb,
exp_disp.adb, inline.adb, libgnat/a-locale.ads,
libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb,
sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb,
sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and
and rewordings.
From-SVN: r274737
Dmitriy Anisimkov [Tue, 20 Aug 2019 09:50:09 +0000 (09:50 +0000)]
[Ada] Set GNAT.OS_Lib.GM_Split's granularity back to 1 second
The modification to round time up to even second was added decades ago.
It was done to avoid unneeded recompilations when the project was built
on non-FAT filesystems and then moved to FAT filesystems. Such a
situation is now very rare and does not deserve time distortion.
2019-08-20 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up
to even second.
From-SVN: r274736
Ed Schonberg [Tue, 20 Aug 2019 09:50:05 +0000 (09:50 +0000)]
[Ada] Fix propagation of compiler internal flag
No change in behavior for GCC-based compilations.
2019-08-20 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch3.adb (Analyze_Object_Declaration): If actual type is
private and distinct from nominal type in declaration, propagate
flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view
of private type.
From-SVN: r274735
Ed Schonberg [Tue, 20 Aug 2019 09:50:00 +0000 (09:50 +0000)]
[Ada] Crash on Loop_Entry for while_loop involving substrings
When expanding a loop entry attribute for a while_loop we construct a
function that incorporates the expanded condition of the loop. The
itypes that may be generated in that expansion must carry the scope of
the constructed function for proper handling in the backend.
2019-08-20 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a
loop entry attribute for a while_loop we construct a function
that incorporates the expanded condition of the loop. The itypes
that may be generated in that expansion must carry the scope of
the constructed function for proper handling in gigi.
gcc/testsuite/
* gnat.dg/loop_entry2.adb: New testcase.
From-SVN: r274734
Ed Schonberg [Tue, 20 Aug 2019 09:49:56 +0000 (09:49 +0000)]
[Ada] Spurious error in dispatching call with class-wide precondition
This patch fixes a spurious visibility error on a dispatching call to
a subprogram with a classwide precondition, when the call qppears in
the same declarative part as the subprogram declaration itself.
2019-08-20 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a
dispatching call tp a subprogram with a class-wide precondition
occurrs in the same declarative part as the ancestor subprogram
being called, the`expression for the precondition has not been
analyzed yet. Such a call may appear, e.g. in an expression
function. In that case, the replacement of formals by actuals in
the call cannot use the formal entities of the subprogram being
called, and the occurrence of the formals in the expression must
be located by name (Chars fields) as would be done at a later
freeze point, when the expression is resolved in the context of
the subprogram itself.
gcc/testsuite/
* gnat.dg/tagged5.adb, gnat.dg/tagged5.ads: New testcase.
From-SVN: r274733
Bob Duff [Tue, 20 Aug 2019 09:49:51 +0000 (09:49 +0000)]
[Ada] Suppress Initialize_Scalars for Persistent_BSS
If a variable has pragma Persistent_BSS, the compiler now automatically
suppresses implicit initializations caused by Initialize_Scalars and
Normalize_Scalars. Variables with Persistent_BSS cannot be initialized,
and previously a pragma Suppress_Initialization was required before the
pragma Persistent_BSS.
2019-08-20 Bob Duff <duff@adacore.com>
gcc/ada/
* sem_prag.adb (Persistent_BSS): If an initialization is present
because of Initialize_Scalars or Normalize_Scalars, generate an
implicit pragma Suppress_Initialization to remove that, because
initialization is not allowed for these variables. Other
initializations remain illegal.
From-SVN: r274732
Gary Dismukes [Tue, 20 Aug 2019 09:49:46 +0000 (09:49 +0000)]
[Ada] Illegal limited function call accepted in a type conversion
It's illegal to call a function with a result of an immutably limited
type inside a type conversion that's used in one of the special contexts
that allow such a function call by itself (see RM 7.5 (2.1-2.10)), such
as in the initialization expression of an object declaration. The
compiler was recursively applying OK_For_Limited_Init_In_05 to the
expression inside of a rewritten type conversion, rather than directly
to the Original_Node itself (which is what was cased on to get to the
type conversion case alternative), which allowed such illegal
initialization, and that's corrected by this fix. However, when the
expression is not a rewriting of a user-written conversion, the
recursive call to OK_For_Limited_Init_In_05 must be applied to the
Expression of the conversion.
2019-08-20 Gary Dismukes <dismukes@adacore.com>
gcc/ada/
* sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type
conversions, apply the recursive call to the Original_Node of
the expression Exp rather than the Expression of the
Original_Node, in the case where Exp has been rewritten;
otherwise, when Original_Node is the same as Exp, apply the
recursive call to the Expression.
(Check_Initialization): Revise condition for special check on
type conversions of limited function calls to test Original_Node
(avoiding spurious errors on expanded unchecked conversions
applied to build-in-place dispatching calls).
gcc/testsuite/
* gnat.dg/type_conv2.adb, gnat.dg/type_conv2.ads: New testcase.
From-SVN: r274731
Patrick Bernardi [Tue, 20 Aug 2019 09:49:41 +0000 (09:49 +0000)]
[Ada] New pragma Aggregate_Individually_Assign
Where possible GNAT will store the binary representation of a record
aggregate in memory for space and performance reasons. This
configuration pragma changes this behaviour so that record aggregates
are instead always converted into individual assignment statements.
The following package pack.ads:
-- pack.ads
pragma Aggregate_Individually_Assign;
pragma Restrictions (No_Multiple_Elaboration);
package Pack is
type A_Rec is record
A, B, C, D : Boolean;
end record;
A : A_Rec := (True, False, True, True);
end Pack;
when compiled with
gcc -c -gnatdg pack.ads
should produce the following output:
Source recreated from tree for Pack (spec)
------------------------------------------
pragma aggregate_individually_assign;
pragma restrictions (no_multiple_elaboration);
package pack is
type pack__a_rec is record
a : boolean;
b : boolean;
c : boolean;
d : boolean;
end record;
freeze pack__a_rec [
procedure pack__a_recIP (_init : out pack__a_rec) is
begin
%push_constraint_error_label ()
%push_program_error_label ()
%push_storage_error_label ()
null;
%pop_constraint_error_label
%pop_program_error_label
%pop_storage_error_label
return;
end pack__a_recIP;
]
pack__a : pack__a_rec := (
a => true,
b => false,
c => true,
d => true);
pack__a.a := true;
pack__a.b := false;
pack__a.c := true;
pack__a.d := true;
null;
end pack;
2019-08-20 Patrick Bernardi <bernardi@adacore.com>
gcc/ada/
* exp_aggr.adb (Expand_Record_Aggregate): Always convert a
record Aggregate to assignment statements if the option
Aggregate_Individually_Assign is set.
* opt.ads (Aggregate_Individually_Assign): New option.
* par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign.
* sem_prag.adb (Analyze_Pragma): Likewise.
* snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and
Name_Aggregate_Individually_Assign.
* doc/gnat_rm/implementation_defined_pragmas.rst: Document
pragma Aggregate_Individually_Assign.
* gnat_rm.texi: Regenerate.
From-SVN: r274730
Bob Duff [Tue, 20 Aug 2019 09:49:37 +0000 (09:49 +0000)]
[Ada] Enable delta_aggregate only in Ada 2020 mode
If the delta_aggregate feature is used, the -gnat2020 or -gnatX switch
must be given.
The following test must get an error if neither
-gnat2020 nor -gnatX is specified:
gcc -c delta_aggregate.ads -gnat2012
delta_aggregate.ads:4:18: delta_aggregate is an Ada 202x feature
delta_aggregate.ads:4:18: compile with -gnatX
package Delta_Aggregate is
X : String := "Hello";
Y : String := (X with delta 1 => 'h');
end Delta_Aggregate;
2019-08-20 Bob Duff <duff@adacore.com>
gcc/ada/
* par-ch4.adb: Minor wording change in error messages.
* sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada
versions prior to Ada 2020.
From-SVN: r274729
Bob Duff [Tue, 20 Aug 2019 09:49:32 +0000 (09:49 +0000)]
[Ada] Improve generated code for initialization of atomics
This patch makes the temp for initialization of an atomic variable be
constant.
No change in behavior; no test.
2019-08-20 Bob Duff <duff@adacore.com>
gcc/ada/
* freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for
initialization of the atomic variable be constant. This is
cleaner, and might improve efficiency.
From-SVN: r274728
Eric Botcazou [Tue, 20 Aug 2019 09:49:28 +0000 (09:49 +0000)]
[Ada] More complete information level for -gnatR4 output
This instructs -gnatR4 to also list the Etype of a user-declared record
subtype if it is compiler-generated, for example in:
package P is
type U_Arr is array (Integer range <>) of Character;
type Rec1 (D1, D2 : Integer) is record
C : U_Arr (D1 .. D2);
end record;
type Rec_N is new Rec1 (1, 2);
end P;
2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* repinfo.adb (List_Record_Info): In -gnatR4 mode, set the
relevant flag on the implicit base type of a record subtype.
From-SVN: r274727