Commit Graph

170853 Commits

Author SHA1 Message Date
Jakub Jelinek df375b0321 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
2019-08-23 13:37:29 +02:00
Martin Liska 19566bdda5 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
2019-08-23 11:27:12 +00:00
Mark Eggleston 3fa7e353ec 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
2019-08-23 10:16:47 +00:00
Mark Eggleston f3bb4623f4 ABS Documentation fix
The specific intrinsics ZABS and CDABS return REAL(8) not COMPLEX(8).

From-SVN: r274847
2019-08-23 09:31:48 +00:00
Jozef Lawrynowicz d16017da34 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
2019-08-23 09:21:26 +00:00
Dennis Zhang a50f423695 [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
2019-08-23 08:25:44 +00:00
Martin Liska 1628b2faf0 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
2019-08-23 07:48:34 +00:00
GCC Administrator 1783e319bf Daily bump.
From-SVN: r274843
2019-08-23 00:16:54 +00:00
Marek Polacek ab3dd132a1 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
2019-08-23 00:06:25 +00:00
Steven G. Kargl f99aba1562 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
2019-08-22 23:50:57 +00:00
Martin Sebor 14b7950f12 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
2019-08-22 17:09:26 -06:00
Rainer Orth 1b1e13dbde 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
2019-08-22 21:55:19 +00:00
Segher Boessenkool e99bfdd2a8 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
2019-08-22 21:36:21 +02:00
Segher Boessenkool 71278ecd4e 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
2019-08-22 21:33:38 +02:00
Eric Botcazou db376f458e 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
2019-08-22 17:31:02 +00:00
Kyrylo Tkachov 943766d37a [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
2019-08-22 15:55:39 +00:00
Wilco Dijkstra ef27f40f48 [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
2019-08-22 15:19:58 +00:00
Wilco Dijkstra 5c7c6c5fc1 [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
2019-08-22 15:06:37 +00:00
Wilco Dijkstra cdfc0e863a [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
2019-08-22 14:52:24 +00:00
Richard Earnshaw 203ef022c6 [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
2019-08-22 14:40:52 +00:00
Sylvia Taylor 391625888d [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
2019-08-22 11:28:26 +00:00
Prathamesh Kulkarni b1c9ec725d 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
2019-08-22 08:48:42 +00:00
GCC Administrator ae12842109 Daily bump.
From-SVN: r274816
2019-08-22 00:16:17 +00:00
Prathamesh Kulkarni 9556ef2016 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
2019-08-21 20:41:41 +00:00
Prathamesh Kulkarni 846f78d414 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
2019-08-21 18:34:43 +00:00
Ian Lance Taylor eda684e6a7 compiler: don't use pkgpath for fieldtrack of unexported field
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191040

From-SVN: r274803
2019-08-21 17:19:52 +00:00
Ian Lance Taylor 7f8c0c0504 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
2019-08-21 14:11:24 +00:00
Richard Sandiford 077eb7af6e [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
2019-08-21 13:59:31 +00:00
Richard Biener d6dea10acf 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
2019-08-21 11:45:34 +00:00
Eric Botcazou 8bb2ee5939 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
2019-08-21 09:54:04 +00:00
Christophe Lyon 73c1f2f00e [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
2019-08-21 11:40:51 +02:00
Richard Biener 8ef64ab954 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
2019-08-21 08:44:59 +00:00
Vadim Godunko 5eb349352b [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
2019-08-21 08:31:20 +00:00
Piotr Trojanek 7c2a44aebb [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
2019-08-21 08:31:16 +00:00
Claire Dross 0728477991 [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
2019-08-21 08:31:11 +00:00
Yannick Moy 61e33106ed [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
2019-08-21 08:31:07 +00:00
Yannick Moy e9934e8c79 [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
2019-08-21 08:31:03 +00:00
Eric Botcazou 3c488e6c86 [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
2019-08-21 08:30:58 +00:00
Bob Duff abdeafa67a [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
2019-08-21 08:30:53 +00:00
Piotr Trojanek a1fda1e875 [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
2019-08-21 08:30:32 +00:00
Gary Dismukes 830c594810 [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
2019-08-21 08:30:17 +00:00
Eric Botcazou bde9a2c227 [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
2019-08-21 08:30:00 +00:00
Piotr Trojanek 92ef57728e [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
2019-08-21 08:29:56 +00:00
Yannick Moy 5c34f30d16 [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
2019-08-21 08:29:51 +00:00
Yannick Moy 570d0072bd [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
2019-08-21 08:29:47 +00:00
Eric Botcazou 78170c8ea1 [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
2019-08-21 08:29:42 +00:00
Piotr Trojanek 5188952e59 [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
2019-08-21 08:29:37 +00:00
Javier Miranda 93a08e1e4a [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
2019-08-21 08:29:33 +00:00
Joel Brobecker cfc03d536f [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
2019-08-21 08:29:27 +00:00
Justin Squirek df2d2fe0ee [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
2019-08-21 08:29:23 +00:00