thirdparty/gcc.git
4 hours agoDaily bump. master trunk trunk
gccadmin [Fri, 23 Aug 2019 00:16:54 +0000 (00:16 +0000)] 
Daily bump.

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

4 hours ago PR c++/91304 - prefix attributes ignored in condition.
mpolacek [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.

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

4 hours ago2019-08-22 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Thu, 22 Aug 2019 23:50:57 +0000 (23:50 +0000)] 
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.

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

5 hours agoPR middle-end/91490 - bogus argument missing terminating nul warning on strlen of...
msebor [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.

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

6 hours agoFix gcc.target/i386/minmax-4.c etc. on 32-bit Solaris/x86
ro [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.

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

9 hours agors6000: Use unspec_volatile for darn (PR91481)
segher [Thu, 22 Aug 2019 19:36:21 +0000 (19:36 +0000)] 
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.

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

9 hours agors6000: Move various non-vector things out of altivec.md
segher [Thu, 22 Aug 2019 19:33:38 +0000 (19:33 +0000)] 
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.

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

11 hours ago * c-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a
ebotcazou [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 nested declarators.

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

12 hours ago[arm] Fix use of CRC32 intrinsics with Armv8-a and hard-float
ktkachov [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.

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

13 hours ago[ARM] Remove remaining Neon DImode support
wilco [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.

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

13 hours ago[ARM] Cleanup DImode shifts
wilco [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.

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

13 hours ago[ARM] Cleanup logical DImode operations
wilco [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.

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

14 hours ago[Arm] Add 16-bit thumb alternatives to iorsi3_compare0[_scratch]
rearnsha [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.

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

17 hours ago[aarch64]: add intrinsics for vld1(q)_x4 and vst1(q)_x4
ktkachov [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.

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

20 hours ago2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
prathamesh3492 [Thu, 22 Aug 2019 08:48:42 +0000 (08:48 +0000)] 
2019-08-22  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* config/aarch64/aarch64-sve.md (vcond_mask): Add "@".

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

28 hours agoDaily bump.
gccadmin [Thu, 22 Aug 2019 00:16:17 +0000 (00:16 +0000)] 
Daily bump.

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

32 hours ago2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
prathamesh3492 [Wed, 21 Aug 2019 20:41:41 +0000 (20:41 +0000)] 
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.

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

34 hours ago2019-08-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
prathamesh3492 [Wed, 21 Aug 2019 18:34:43 +0000 (18:34 +0000)] 
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.

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

35 hours ago compiler: don't use pkgpath for fieldtrack of unexported field
ian [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

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

38 hours ago compiler: if hidden function referenced by inline, don't hide descriptor
ian [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

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

38 hours ago[C++] Protect call to copy_attributes_to_builtin (PR91505)
rsandifo [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.

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

41 hours ago2019-08-21 Richard Biener <rguenther@suse.de>
rguenth [Wed, 21 Aug 2019 11:45:34 +0000 (11:45 +0000)] 
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.

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

42 hours ago * c-ada-spec.c (dump_ada_function_declaration): Be prepared for broken
ebotcazou [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.  Rename variables.

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

43 hours ago[testsuite][arm] Add missing quotes to expected warning messages.
clyon [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.

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

44 hours ago2019-08-21 Richard Biener <rguenther@suse.de>
rguenth [Wed, 21 Aug 2019 08:44:59 +0000 (08:44 +0000)] 
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.

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

44 hours ago[Ada] Improve detection of end of the process by GNAT.Expect
pmderodat [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.

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

44 hours ago[Ada] Minor refactorings/reformattings
pmderodat [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.

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

44 hours ago[Ada] Allow for of iteration on formal vectors
pmderodat [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.

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

44 hours ago[Ada] More precise propagation of Size attribute in generic instances
pmderodat [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.

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

44 hours ago[Ada] Update references to the SPARK RM
pmderodat [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.

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

44 hours ago[Ada] More complete information level for -gnatR4 output
pmderodat [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.

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

44 hours ago[Ada] Add the System.Bitfield_Utils runtime unit
pmderodat [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.

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

44 hours ago[Ada] Bindo.Graphs: Minor typo fixes
pmderodat [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.

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

44 hours ago[Ada] Undefined master in task with limited class-wide aliased entry formal
pmderodat [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).

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

44 hours ago[Ada] Fix type mismatch in extended return statement expansion
pmderodat [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.

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

44 hours ago[Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis
pmderodat [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.

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

44 hours ago[Ada] Avoid spurious error in GNATprove mode on non-null access types
pmderodat [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.

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

44 hours ago[Ada] Ignore subprogram address in ownership checking
pmderodat [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.

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

44 hours ago[Ada] Fix assertion failure on derived private protected type
pmderodat [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.

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

44 hours ago[Ada] Replace low-level membership tests with high-level routines
pmderodat [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.

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

44 hours ago[Ada] Missing attribute update in new_copy_tree
pmderodat [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.

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

44 hours ago[Ada] doc/Makefile: automatically create doc/share/_static
pmderodat [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.

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

44 hours ago[Ada] Max_Entry_Queue_Length aspect for protected entries
pmderodat [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.

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

44 hours agolibphobos: Merge upstream druntime 5bb8ce19
ibuclaw [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.

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

44 hours agolibphobos: Merge upstream druntime 94686651
ibuclaw [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.

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

44 hours ago PR d/91339
ibuclaw [Wed, 21 Aug 2019 07:54:06 +0000 (07:54 +0000)] 
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

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

44 hours agolibphobos: Merge upstream phobos 66ae77ac3
ibuclaw [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

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

44 hours agod: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40
ibuclaw [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.

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

44 hours agod/dmd: Merge upstream dmd 375ed10aa
ibuclaw [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.

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

44 hours agod: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539
ibuclaw [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.

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

44 hours agod: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783
ibuclaw [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.

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

44 hours agod: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121
ibuclaw [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.

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

2 days agoPR testsuite/91458
msebor [Wed, 21 Aug 2019 02:18:41 +0000 (02:18 +0000)] 
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.

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

2 days agoDaily bump.
gccadmin [Wed, 21 Aug 2019 00:16:16 +0000 (00:16 +0000)] 
Daily bump.

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

2 days agoDo not try to process deleted headers with Doxygen
redi [Tue, 20 Aug 2019 21:35:55 +0000 (21:35 +0000)] 
Do not try to process deleted headers with Doxygen

* doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.

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

2 days agoFix markdown in Doxygen comments for std::reduce
redi [Tue, 20 Aug 2019 21:34:15 +0000 (21:34 +0000)] 
Fix markdown in Doxygen comments for std::reduce

* include/std/numeric (reduce): Fix Doxygen markup.

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

2 days agoPR libstdc++/91371 make std::is_function handle other calling conventions
redi [Tue, 20 Aug 2019 21:21:15 +0000 (21:21 +0000)] 
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.

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

2 days ago compiler, runtime: implement shifts by signed amounts
ian [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.

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

2 days ago2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Tue, 20 Aug 2019 16:08:12 +0000 (16:08 +0000)] 
2019-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.

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

2 days ago2019-08-19 Matthew Beliveau <mbelivea@redhat.com>
mbelivea [Tue, 20 Aug 2019 13:23:01 +0000 (13:23 +0000)] 
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.

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

2 days ago2019-08-20 Richard Biener <rguenther@suse.de>
rguenth [Tue, 20 Aug 2019 13:14:59 +0000 (13:14 +0000)] 
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.

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

2 days ago2019-08-20 Richard Biener <rguenther@suse.de>
rguenth [Tue, 20 Aug 2019 12:02:56 +0000 (12:02 +0000)] 
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.

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

2 days agoIntrinsic documentation changes.
markeggleston [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.

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

2 days ago[Ada] Unnesting: take inlining (-gnatn) into account
pmderodat [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.

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

2 days ago[Ada] Crash on a Storage_Size aspect depending on attr. of another type
pmderodat [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.

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

2 days ago[Ada] Inconsistent scope chain due to quantified expression
pmderodat [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.

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

2 days ago[Ada] Adapt GNATprove expansion for slices with access prefix
pmderodat [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.

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

2 days ago[Ada] Improve efficiency of aggregates with <>
pmderodat [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.

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

2 days ago[Ada] Improve speed of discriminated return types
pmderodat [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.

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

2 days ago[Ada] Minor reformattings
pmderodat [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.

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

2 days ago[Ada] Set GNAT.OS_Lib.GM_Split's granularity back to 1 second
pmderodat [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.

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

2 days ago[Ada] Fix propagation of compiler internal flag
pmderodat [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.

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

2 days ago[Ada] Crash on Loop_Entry for while_loop involving substrings
pmderodat [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.

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

2 days ago[Ada] Spurious error in dispatching call with class-wide precondition
pmderodat [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.

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

2 days ago[Ada] Suppress Initialize_Scalars for Persistent_BSS
pmderodat [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.

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

2 days ago[Ada] Illegal limited function call accepted in a type conversion
pmderodat [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.

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

2 days ago[Ada] New pragma Aggregate_Individually_Assign
pmderodat [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.

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

2 days ago[Ada] Enable delta_aggregate only in Ada 2020 mode
pmderodat [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.

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

2 days ago[Ada] Improve generated code for initialization of atomics
pmderodat [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.

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

2 days ago[Ada] More complete information level for -gnatR4 output
pmderodat [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.

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

2 days ago[Ada] Fix a folding issue with System'To_Address
pmderodat [Tue, 20 Aug 2019 09:49:23 +0000 (09:49 +0000)] 
[Ada] Fix a folding issue with System'To_Address

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_eval.adb (Expr_Value): Implement the case of an unchecked
conversion of a static expression.

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

2 days ago[Ada] Warn on Unchecked_Conversion to zero-sized array
pmderodat [Tue, 20 Aug 2019 09:49:12 +0000 (09:49 +0000)] 
[Ada] Warn on Unchecked_Conversion to zero-sized array

The compiler usually warns on Unchecked_Conversion between types with
mismatched sizes. This warning is now extended to the case where the
target type is a zero-sized array.

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch13.adb (Is_Null_Array): New function, used to detect the
null array case; used to warn about uncheckedly converting to a
zero-sized array.  It is unfortunate that we can't just check
the size, and warn on all cases of converting from a
nonzero-sized type to a zero-sized one. That's because "0" means
two different things: "size is zero" and "size is unknown".
Until we fix that design flaw, we need this more targeted fix.

gcc/testsuite/

* gnat.dg/unchecked_convert14.adb: New testcase.

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

2 days ago[Ada] Efficiency improvement in bounded ordered containers
pmderodat [Tue, 20 Aug 2019 09:49:07 +0000 (09:49 +0000)] 
[Ada] Efficiency improvement in bounded ordered containers

The Delete operations in the bounded ordered containers have been
substantially sped up.  No change in semantics, so no test.

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly
call Delete. This avoids clearing the free list, which
substantially speeds up future Delete operations.

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

2 days ago[Ada] Warning for out-of-order record representation clauses
pmderodat [Tue, 20 Aug 2019 09:49:02 +0000 (09:49 +0000)] 
[Ada] Warning for out-of-order record representation clauses

The compiler can now warn for out-of-order record representation
clauses. A warning is given if the order of component declarations,
component clauses, and bit-level layout do not all agree.  The warning
is disabled by default, and may be enabled by the -gnatw_r switch.

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch13.adb (Component_Order_Check): New procedure to check
for out-of-order clauses.
* warnsw.ads, warnsw.adb: New -gnatw_r switch.
* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
Document new switch.
* gnat_ugn.texi: Regenerate.

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

2 days ago[Ada] Object_Size clause specifying 0 bits is illegal
pmderodat [Tue, 20 Aug 2019 09:48:57 +0000 (09:48 +0000)] 
[Ada] Object_Size clause specifying 0 bits is illegal

The patch gives an error message on "for T'Object_Size use 0;".

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch13.adb (Object_Size): Give an error for zero. It really
rubs me the wrong way that we don't honor "for T'Object_Size use
0;", but it's not important enough to fix. In any case, if we're
not going to obey the clause, we should give an error.

gcc/testsuite/

* gnat.dg/object_size1.adb: New testcase.

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

2 days ago[Ada] Pragma Warning_As_Error works for style warnings
pmderodat [Tue, 20 Aug 2019 09:48:51 +0000 (09:48 +0000)] 
[Ada] Pragma Warning_As_Error works for style warnings

Pragma Warning_As_Error now works for style warnings (messages that
start with "(style)", enabled by -gnaty) the same way it works for
regular warnings enabled by -gnatw.

The following test should fail to build with style checks:

gnat.adc:

pragma Warning_As_Error ("two spaces required");

style.adb:

procedure Style is
   X : Integer;
begin
   null;
   --Hello
end;

gnatmake -q -f -g style.adb -gnaty

should get:

style.adb:2:04: warning: variable "X" is never read and never assigned
style.adb:5:06: error: (style) two spaces required [warning-as-error]
style.adb:6:01: (style) "end Style" required
gnatmake: "style.adb" compilation error

and no executable should be created.

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* errout.adb (Error_Msg_Internal): Set Warn_Err in case of
Is_Style_Msg.
* erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors
processing and [warning-as-error] modification for style
messages.  Clean up code, simplify, remove unnecessary block
statement, add renaming of table entry.
* erroutc.ads (Warning_Treated_As_Error): Fix comment: no such
thing as Set_Warning_As_Error.
* opt.ads: Clean up comments and move related declarations near
each other.
* par-prag.adb: Process Warning_As_Error. This is necessary
because many style warning happen during parsing.
* sem_prag.adb: Use new Acquire_Warning_Match_String.
* sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New
function shared by par-prag.adb and sem_prag.adb. Replaces the
procedure in sem_prag.adb. Avoid use of global variables.
* stringt.ads, stringt.adb (To_String): New function to convert
String_Id to String.
* doc/gnat_rm/implementation_defined_pragmas.rst: Document the
new feature.
* gnat_rm.texi: Regenerate.

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

2 days ago[Ada] Get rid of linear searches in Lib
pmderodat [Tue, 20 Aug 2019 09:48:33 +0000 (09:48 +0000)] 
[Ada] Get rid of linear searches in Lib

This change is aimed at removing a couple of linear searches in the
units management code that can become problematic performance-wise when
the number of loaded units is in the several hundreds, which can happen
for large files even at -O0 without any inlining.

It introduces an auxiliary hash table to record a mapping between the
name of units and their entry in the units table, and then replaces the
linear searches by lookups in this names table.  This can save up to 2%
of the compilation time spent in the front-end in some cases.

There should be no functional changes, except in the error message
issued for circular unit dependencies in very peculiar and convoluted
cases.

2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* lib.ads: Add with clause for GNAT.HTable.
Add pragma Inline for Is_Loaded and alphabetize the list.
(Unit_Name_Table_Size): New constant.
(Unit_Name_Header_Num): New subtype.
(Unit_Name_Hash): New function declaration.
(Unit_Names): New simple hash table.
(Init_Unit_Name): New procedure declaration.
* lib.adb (Set_Unit_Name): Unregister the old name in the table,
if any, and then register the new name.
(Init_Unit_Name): New procedure.
(Is_Loaded): Reimplement using a lookup in the names table.
(Remove_Unit): Unregister the name.
(Unit_Name_Hash): New function.
* lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name.
(Load_Unit): Use a lookup in the names table to find out whether
the unit has already been loaded.  Call Init_Unit_Name and then
Remove_Unit if the loading has failed.
(Make_Child_Decl_Unit): Call Init_Unit_Name.
(Make_Instance_Unit): Likewise.
* lib-writ.adb (Ensure_System_Dependency): Likewise.

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

2 days ago[Ada] Sem_Ch13: fix uninitialized parameter static analysis warning
pmderodat [Tue, 20 Aug 2019 09:48:11 +0000 (09:48 +0000)] 
[Ada] Sem_Ch13: fix uninitialized parameter static analysis warning

No functional change.

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch13.adb (Record_Hole_Check): Initialize After_Last.

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

2 days ago[Ada] Revert change for gnatprove that is no longer needed
pmderodat [Tue, 20 Aug 2019 09:48:02 +0000 (09:48 +0000)] 
[Ada] Revert change for gnatprove that is no longer needed

Years ago, we adapted Get_Kind_Of_Unit so that gnatprove could use it to
detect both bodies and specs of predefined units.

However, this wasn't really needed: gnatprove could simply reuse
Lib.In_Predefined_Unit and now it does. This patch simply reverts two
commits mentioned above.

No frontend test provided, because the removed comment is clear that this
doesn't affect the compiler. Other tools similarly should not be affected
(at least they were not when this change was introduced in 2012).

2019-08-20  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* impunit.adb (Get_Kind_Of_Unit): Revert change for adapting
this routine for gnatprove.

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

2 days ago[Ada] Document requirements for Pragma Lock_Free
pmderodat [Tue, 20 Aug 2019 09:47:58 +0000 (09:47 +0000)] 
[Ada] Document requirements for Pragma Lock_Free

2019-08-20  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* doc/gnat_rm/implementation_defined_pragmas.rst: Document
requirements for Pragma Lock_Free.
* gnat_rm.texi: Regenerate.

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

2 days ago[Ada] Initialize gnat_argc/gnat_argv only the first time
pmderodat [Tue, 20 Aug 2019 09:47:53 +0000 (09:47 +0000)] 
[Ada] Initialize gnat_argc/gnat_argv only the first time

2019-08-20  Philippe Gil  <gil@adacore.com>

gcc/ada/

* bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv
only when still uninitialized.

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

2 days ago[Ada] Fix documentation for GNAT.Command_Line.Exit_From_Command_Line
pmderodat [Tue, 20 Aug 2019 09:47:49 +0000 (09:47 +0000)] 
[Ada] Fix documentation for GNAT.Command_Line.Exit_From_Command_Line

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

* libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
documentation for GNAT.Command_Line.

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

2 days ago[Ada] Add missing dot at the end of lang.opt doc for -fdump-scos
pmderodat [Tue, 20 Aug 2019 09:47:44 +0000 (09:47 +0000)] 
[Ada] Add missing dot at the end of lang.opt doc for -fdump-scos

2019-08-20  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

PR ada/91492
* gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
end of the documentation.

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

2 days ago PR rtl-optimization/91347
ebotcazou [Tue, 20 Aug 2019 09:10:53 +0000 (09:10 +0000)] 
PR rtl-optimization/91347
* dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls
before reload if HARD_FRAME_POINTER_IS_ARG_POINTER.

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

2 days agoAdd a pass_by_reference flag to function_arg_info
rsandifo [Tue, 20 Aug 2019 08:54:03 +0000 (08:54 +0000)] 
Add a pass_by_reference flag to function_arg_info

This patch adds a flag that tells targets whether an argument
has been converted to pass-by-reference form.  This replaces
assign_parm_data_one::passed_pointer in function.c.

The flag is set automatically for places that call
apply_pass_by_reference_rules.  Places that apply
pass-by-reference manually need to set it themselves.

(After previous changes, no targets apply pass-by-reference
manually.  They all go through apply_pass_by_reference_rules.)

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (function_arg_info): Add a pass_by_reference field,
defaulting to false.
* calls.c (apply_pass_by_reference_rules): Set pass_by_reference
when applying pass-by-reference semantics.
(initialize_argument_information): Likewise.
(emit_library_call_value_1): Likewise.
* function.c (assign_parm_data_one): Remove passed_pointer field.
(assign_parm_find_data_types): Don't set it.
(assign_parm_find_stack_rtl, assign_parm_adjust_stack_rtl)
(assign_parm_setup_reg, assign_parms, gimplify_parameters): Use
arg.pass_by_reference instead of passed_pointer.

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

2 days agoMake calls.c use function_arg_info internally
rsandifo [Tue, 20 Aug 2019 08:53:56 +0000 (08:53 +0000)] 
Make calls.c use function_arg_info internally

This patch makes the two main calls.c argument-processing
routines track the state of the argument in a function_arg_info
instead of using separate mode variables.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.c (emit_library_call_value_1): Merge arg and orig_arg
into a single function_arg_info, updating its fields when we
apply pass-by-reference and promotion semantics.  Use the
function_arg_info to track the mode rather than keeping it in
a separate local variable.
(initialize_argument_information): Likewise.  Base the final
arg_to_skip on this new function_arg_info rather than creating
a new one from scratch.

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

2 days agoMake function.c use function_arg_info internally
rsandifo [Tue, 20 Aug 2019 08:53:52 +0000 (08:53 +0000)] 
Make function.c use function_arg_info internally

This patch adds a function_arg_info field to assign_parm_data_one,
so that:

  - passed_type -> arg.type
  - promoted_mode -> arg.mode
  - named_arg -> arg.named

We can then pass this function_arg_info directly to the converted
hooks.

Between the initialisation of the assign_parm_data_one and the
application of promotion rules (which is a state internal to
assign_parm_find_data_types), arg.mode is equivalent to passed_mode
(i.e. to TYPE_MODE).

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* function.c (assign_parm_data_one): Replace passed_type,
promoted_mode and named_arg with a function_arg_info field.
(assign_parm_find_data_types): Remove local variables and
assign directly to "data".  Make data->passed_mode shadow
data->arg.mode until promotion, then assign the promoted
mode to data->arg.mode.
(assign_parms_setup_varargs, assign_parm_find_entry_rtl)
(assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl)
(assign_parm_remove_parallels, assign_parm_setup_block_p)
(assign_parm_setup_block, assign_parm_setup_reg)
(assign_parm_setup_stack, assign_parms, gimplify_parameters): Use
arg.mode instead of promoted_mode, arg.type instead of passed_type
and arg.named instead of named_arg.  Use data->arg for
function_arg_info structures that had the field values passed_type,
promoted_mode and named_arg.  Base other function_arg_infos on
data->arg, changing the necessary properties.

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

2 days agoAdd a apply_pass_by_reference_rules helper
rsandifo [Tue, 20 Aug 2019 08:53:47 +0000 (08:53 +0000)] 
Add a apply_pass_by_reference_rules helper

This patch adds a helper routine that applies pass-by-reference
semantics to an existing function_arg_info.

The c6x part means that c6x_function_arg and c6x_function_arg_advance
see the same "named" value as pass_by_reference did, rather than
pass_by_reference seeing "true" and the others seeing "false".
This doesn't matter because the c6x port doesn't care about namedness.

The rs6000.c patch removes an assignment to "type", but the only
later code to use it was the patched promote_mode line.

(The reason for patching these places despite the above is that
often target code gets used as a basis for new targets or changes
to existing ones.)

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* calls.h (apply_pass_by_reference_rules): Declare.
* calls.c (apply_pass_by_reference_rules): New function.
* config/c6x/c6x.c (c6x_call_saved_register_used): Use it.
* config/rs6000/rs6000-call.c (rs6000_parm_needs_stack): Likewise.
* config/s390/s390.c (s390_call_saved_register_used): Likewise.
* function.c (assign_parm_find_data_types): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.

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

2 days agoUse function_arg_info for TARGET_MUST_PASS_IN_STACK
rsandifo [Tue, 20 Aug 2019 08:53:39 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_MUST_PASS_IN_STACK

The hook is passed the promoted mode instead of the original type mode.

The expr.h reference in the documentation is no longer correct, but
pointing to calls.h or calls.c doesn't help much either.  I just left
this as-is since it's not related to the point of the series.

After previous changes, most places already pass arg.mode and arg.type.
Only i386 and mcore needed to construct a new one out of nothing.
rs6000 needs to construct one slightly earlier than before.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (must_pass_in_stack): Take a function_arg_info instead
of a mode and a type.
* doc/tm.texi: Regenerate.
* calls.h (must_pass_in_stack_var_size): Take a function_arg_info
instead of a mode and a type.
(must_pass_in_stack_var_size_or_pad): Likewise.
* calls.c (must_pass_in_stack_var_size): Likewise.
(must_pass_in_stack_var_size_or_pad): Likewise.
(initialize_argument_information): Update call to
targetm.calls.must_pass_in_stack.
(must_pass_va_arg_on_stack): Likewise.
* function.c (assign_parm_find_entry_rtl): Likewise.
* targhooks.c (hook_pass_by_reference_must_pass_in_stack): Likewise.
* config/alpha/alpha.c (alpha_function_arg): Likewise.
(alpha_function_arg_advance): Likewise.
* config/cr16/cr16.c (cr16_function_arg): Likewise.
(cr16_function_arg_advance): Likewise.
* config/cris/cris.c (cris_pass_by_reference): Likewise.
(cris_arg_partial_bytes): Likewise.
* config/iq2000/iq2000.c (iq2000_pass_by_reference): Likewise.
* config/lm32/lm32.c (lm32_function_arg): Likewise.
* config/mcore/mcore.c (mcore_num_arg_regs): Likewise.
(mcore_function_arg, mcore_arg_partial_bytes): Likewise.
* config/mips/mips.c (mips_pass_by_reference): Likewise.
* config/mmix/mmix.c (mmix_function_arg_advance): Likewise.
(mmix_function_arg_1, mmix_pass_by_reference): Likewise.
* config/sh/sh.c (sh_pass_by_reference): Likewise.
* config/stormy16/stormy16.c (xstormy16_function_arg): Likewise.
* config/xtensa/xtensa.c (xtensa_function_arg_advance): Likewise.
* config/arm/arm.c (arm_must_pass_in_stack): Take a function_arg_info
instead of a mode and a type.
* config/fr30/fr30.c (fr30_must_pass_in_stack): Likewise.
(fr30_num_arg_regs): Likewise.
(fr30_setup_incoming_varargs): Update calls accordingly.
(fr30_arg_partial_bytes, fr30_function_arg): Likewise.
(fr30_function_arg_advance): Likewise.
* config/frv/frv.c (frv_must_pass_in_stack): Take a function_arg_info
instead of a mode and a type.
* config/gcn/gcn.c (num_arg_regs): Likewise.
(gcn_function_arg, gcn_function_arg_advance): Update calls to
num_arg_regs and targetm.calls.must_pass_in_stack.
(gcn_arg_partial_bytes): Likewise.
* config/i386/i386.c (ix86_must_pass_in_stack): Take a
function_arg_info instead of a mode and a type.
(classify_argument): Update call accordingly.
* config/nds32/nds32.c (nds32_must_pass_in_stack): Take a
function_arg_info instead of a mode and a type.
* config/rs6000/rs6000-internal.h (rs6000_must_pass_in_stack):
Likewise.
* config/rs6000/rs6000-call.c (rs6000_must_pass_in_stack): Likewise.
(rs6000_parm_needs_stack): Update call accordingly.
(setup_incoming_varargs): Likewise.

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

2 days agoUse function_arg_info for TARGET_CALLEE_COPIES
rsandifo [Tue, 20 Aug 2019 08:53:23 +0000 (08:53 +0000)] 
Use function_arg_info for TARGET_CALLEE_COPIES

The hook is passed the unpromoted type mode instead of the promoted mode.

The aarch64 definition is redundant, but worth keeping for emphasis.

2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (callee_copies): Take a function_arg_info instead
of a mode, type and named flag.
* doc/tm.texi: Regenerate.
* targhooks.h (hook_callee_copies_named): Take a function_arg_info
instead of a mode, type and named flag.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
(hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
* targhooks.c (hook_callee_copies_named): Take a function_arg_info
instead of a mode, type and named flag.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
(hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
* calls.h (reference_callee_copied): Take a function_arg_info
instead of a mode, type and named flag.
* calls.c (reference_callee_copied): Likewise.
(initialize_argument_information): Update call accordingly.
(emit_library_call_value_1): Likewise.
* function.c (gimplify_parameters): Likewise.
* config/aarch64/aarch64.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_false instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false.
* config/c6x/c6x.c (c6x_callee_copies): Delete.
(TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
* config/epiphany/epiphany.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
* config/mips/mips.c (mips_callee_copies): Take a function_arg_info
instead of a mode, type and named flag.
* config/mmix/mmix.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
* config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): Likewise.
* config/msp430/msp430.c (msp430_callee_copies): Delete.
(TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
* config/pa/pa.c (pa_callee_copies): Take a function_arg_info
instead of a mode, type and named flag.
* config/sh/sh.c (sh_callee_copies): Likewise.
* config/v850/v850.c (TARGET_CALLEE_COPIES): Define to
hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.

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