gcc.git
6 years agoc-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.
Richard Biener [Tue, 2 Oct 2018 10:08:22 +0000 (10:08 +0000)]
c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.

2018-10-02  Richard Biener  <rguenther@suse.de>

c/
* c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.

cp/
* name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.

From-SVN: r264779

6 years agotree-inline.c (expand_call_inline): Use the location of the callee declaration for...
Richard Biener [Tue, 2 Oct 2018 10:07:29 +0000 (10:07 +0000)]
tree-inline.c (expand_call_inline): Use the location of the callee declaration for the inline-entry marker.

2018-10-02  Richard Biener  <rguenther@suse.de>

* tree-inline.c (expand_call_inline): Use the location of
the callee declaration for the inline-entry marker.
* final.c (notice_source_line): Remove special-casing of
NOTE_INSN_INLINE_ENTRY.

From-SVN: r264778

6 years agoDaily bump.
GCC Administrator [Tue, 2 Oct 2018 00:16:36 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264777

6 years agocompiler: use the underlying type to build placeholder type for alias
Ian Lance Taylor [Mon, 1 Oct 2018 22:25:52 +0000 (22:25 +0000)]
compiler: use the underlying type to build placeholder type for alias

    When asking for a placeholder type of an alias type, build a
    placeholder for the underlying type, instead of treating the
    alias as a named type and calling get_backend. The latter may
    fail as we may not be ready to build a complete backend type. We
    have already used a unified backend type for alias type and its
    underlying type. Do the same for placeholders as well.

    Reviewed-on: https://go-review.googlesource.com/138635

From-SVN: r264773

6 years agolibgo: support x32 as GOARCH=amd64p32 GOOS=linux
Ian Lance Taylor [Mon, 1 Oct 2018 20:17:11 +0000 (20:17 +0000)]
libgo: support x32 as GOARCH=amd64p32 GOOS=linux

    This is enough to let libgo build when configured using
    --with-multilib-list=m64,m32,mx32.  I don't have an x32-enabled kernel
    so I haven't tested whether it executes correctly.

    For https://gcc.gnu.org/PR87470

    Reviewed-on: https://go-review.googlesource.com/138817

From-SVN: r264772

6 years agoruntime: add arm64 version of AES hash code
Ian Lance Taylor [Mon, 1 Oct 2018 20:14:29 +0000 (20:14 +0000)]
runtime: add arm64 version of AES hash code

    Rewrite the arm64 AES hashing code from gc assembler to C code using
    intrinsics.  The resulting code generates the same hash code for the
    same input as the gc code--that doesn't matter as such, but testing it
    ensures that the C code does something useful.

    Reviewed-on: https://go-review.googlesource.com/138535

From-SVN: r264771

6 years ago[libiberty] Use pipe inside pex_run
Nathan Sidwell [Mon, 1 Oct 2018 18:46:51 +0000 (18:46 +0000)]
[libiberty] Use pipe inside pex_run

https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00039.html
* configure.ac (checkfuncs): Add pipe2.
* config.in, configure: Rebuilt.
* pex-unix.c (pex_unix_exec_child): Comminicate errors from child
to parent with a pipe, when possible.

From-SVN: r264769

6 years ago* ru.po: Update.
Joseph Myers [Mon, 1 Oct 2018 17:11:46 +0000 (18:11 +0100)]
* ru.po: Update.

From-SVN: r264766

6 years agoUpdate, forgot to put the PR number in the Change Log.
Carl Love [Mon, 1 Oct 2018 15:57:13 +0000 (15:57 +0000)]
Update, forgot to put the PR number in the Change Log.

gcc/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

PR 69431
* config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
(__builtin_mtfsb0): New.
(__builtin_mtfsb1): New.
( __builtin_set_fpscr_rn): New.
(__builtin_set_fpscr_drn): New.
* config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
(rs6000_expand_set_fpscr_rn_builtin): Add.
(rs6000_expand_set_fpscr_drn_builtin): Add.
(rs6000_expand_builtin): Add case statement entries for
RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1,
RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN,
RS6000_BUILTIN_MFFSL.
(rs6000_init_builtins): Add ftype initialization and def_builtin
calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
__builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
* config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
rs6000_mffscdrn): Add define_insn.
(rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
* doc/extend.texi: Add documentation for the builtins.

gcc/testsuite/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

PR 69431
* gcc.target/powerpc/test_mffsl-p9.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file.

From-SVN: r264764

6 years agors6000-builtin.def (__builtin_mffsl): New.
Carl Love [Mon, 1 Oct 2018 15:41:24 +0000 (15:41 +0000)]
rs6000-builtin.def (__builtin_mffsl): New.

gcc/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
(__builtin_mtfsb0): New.
(__builtin_mtfsb1): New.
( __builtin_set_fpscr_rn): New.
(__builtin_set_fpscr_drn): New.
* config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
(rs6000_expand_set_fpscr_rn_builtin): Add.
(rs6000_expand_set_fpscr_drn_builtin): Add.
(rs6000_expand_builtin): Add case statement entries for
RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1,
RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN,
RS6000_BUILTIN_MFFSL.
(rs6000_init_builtins): Add ftype initialization and def_builtin
calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
__builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
* config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
rs6000_mffscdrn): Add define_insn.
(rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
* doc/extend.texi: Add documentation for the builtins.

gcc/testsuite/ChangeLog:

2018-10-01  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/test_mffsl-p9.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin.c: New file.
* gcc.target/powerpc/test_fpscr_rn_builtin_error.c: New file.
* gcc.target/powerpc/test_fpscr_drn_builtin_error.c: New file.

From-SVN: r264762

6 years agoallocator.xml: Adjust link to "Reconsidering Custom Memory Allocation".
Gerald Pfeifer [Mon, 1 Oct 2018 15:17:15 +0000 (15:17 +0000)]
allocator.xml: Adjust link to "Reconsidering Custom Memory Allocation".

* doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
Custom Memory Allocation".

From-SVN: r264761

6 years agoRegenerate libstdc++ HTML pages
Jonathan Wakely [Mon, 1 Oct 2018 14:28:36 +0000 (15:28 +0100)]
Regenerate libstdc++ HTML pages

* doc/html/*: Regenerate.

From-SVN: r264760

6 years agore PR fortran/65677 (Incomplete assignment on deferred-length character variable)
Paul Thomas [Mon, 1 Oct 2018 14:27:17 +0000 (14:27 +0000)]
re PR fortran/65677 (Incomplete assignment on deferred-length character variable)

2018-10-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65677
* trans-expr.c (gfc_trans_assignment_1): Set the 'identical'
flag in the call to gfc_check_dependency.

2018-10-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65677
* gfortran.dg/dependency_52.f90 : Expand the test to check both
the call to adjustl and direct assignment of the substring.

From-SVN: r264759

6 years agore PR tree-optimization/87465 (Loop removal regression)
Richard Biener [Mon, 1 Oct 2018 13:10:48 +0000 (13:10 +0000)]
re PR tree-optimization/87465 (Loop removal regression)

2018-10-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87465
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo
causing branch miscounts.

* gcc.dg/tree-ssa/cunroll-15.c: New testcase.

From-SVN: r264758

6 years agoValidate and set default parameters for stack-clash.
Tamar Christina [Mon, 1 Oct 2018 13:09:29 +0000 (13:09 +0000)]
Validate and set default parameters for stack-clash.

This patch defines the default parameters and validation for the aarch64
stack clash probing interval and guard sizes.  It cleans up the previous
implementation and insures that at no point the invalidate arguments are
present in the pipeline for AArch64.  Currently they are only corrected once
cc1 initalizes the back-end.

The default for AArch64 is 64 KB for both of these and we only support 4 KB and 64 KB
probes.  We also enforce that any value you set here for the parameters must be
in sync.

If an invalid value is specified an error will be generated and compilation aborted.

gcc/

* common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM,
aarch64_option_default_param): New.
(params.h): Include.
(TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New.
* config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify
stack-clash protection validation code.

From-SVN: r264757

6 years agoUpdate options framework for parameters to properly handle and validate configure...
Tamar Christina [Mon, 1 Oct 2018 13:08:10 +0000 (13:08 +0000)]
Update options framework for parameters to properly handle and validate configure time params.

This patch changes it so that default parameters are validated during
initialization. This change is needed to ensure parameters set via by the
target specific common initialization routines still keep the parameters within
the valid range.

gcc/

* params.c (validate_param): New.
(add_params): Use it.
(set_param_value): Refactor param validation into validate_param.
(diagnostic.h): Include.
* diagnostic.h (diagnostic_ready_p): New.

From-SVN: r264756

6 years agoAllow back-ends to be able to do custom validations on params.
Tamar Christina [Mon, 1 Oct 2018 13:06:53 +0000 (13:06 +0000)]
Allow back-ends to be able to do custom validations on params.

This patch adds the ability for backends to add custom constrains to the param
values by defining a new hook option_validate_param.

This hook is invoked on every set_param_value which allows the back-end to
ensure that the parameters are always within it's desired state.

gcc/

* params.c (set_param_value):
Add index of parameter being validated.
* common/common-target.def (option_validate_param): New.
* common/common-targhooks.h (default_option_validate_param): New.
* common/common-targhooks.c (default_option_validate_param): New.
* doc/tm.texi.in (TARGET_OPTION_VALIDATE_PARAM): New.
* doc/tm.texi: Regenerate.

From-SVN: r264755

6 years agoCleanup the AArch64 testsuite when stack-clash is on.
Tamar Christina [Mon, 1 Oct 2018 13:05:30 +0000 (13:05 +0000)]
Cleanup the AArch64 testsuite when stack-clash is on.

This patch cleans up the testsuite when a run is done with stack clash
protection turned on.

Concretely this switches off -fstack-clash-protection for a couple of tests:

* assembler scan: some tests are quite fragile in that they check for exact
       assembly output, e.g. check for exact amount of sub etc.  These won't
       match now.
* vla: Some of the ubsan tests negative array indices. Because the arrays weren't
       used before the incorrect $sp wouldn't have been used. The correct value is
       restored on ret.  Now however we probe the $sp which causes a segfault.
* params: When testing the parameters we have to skip these on AArch64 because of our
          custom constraints on them.  We already test them separately so this isn't a
          loss.

Note that the testsuite is not entire clean due to gdb failure caused by alloca with
stack clash. On AArch64 we output an incorrect .loc directive, but this is already the
case with the current implementation in GCC and is a bug unrelated to this patch series.

gcc/testsuite/

PR target/86486
* gcc.dg/pr82788.c: Skip for AArch64.
* gcc.dg/guality/vla-1.c: Turn off stack-clash.
* gcc.target/aarch64/subsp.c: Likewise.
* gcc.dg/params/blocksort-part.c: Skip stack-clash checks
on AArch64.
* gcc.dg/stack-check-10.c: Add AArch64 specific checks.
* gcc.dg/stack-check-12.c: ILP32 fixup.
* gcc.dg/stack-check-5.c: Add AArch64 specific checks.
* gcc.dg/stack-check-6a.c: Skip on AArch64, we don't support this.
* testsuite/lib/target-supports.exp
(check_effective_target_frame_pointer_for_non_leaf): AArch64 does not
require frame pointer for non-leaf functions.

From-SVN: r264754

6 years agoSet default values for stack-clash and do basic validation in back-end.
Tamar Christina [Mon, 1 Oct 2018 13:03:31 +0000 (13:03 +0000)]
Set default values for stack-clash and do basic validation in back-end.

This patch enforces that the default guard size for stack-clash protection for
AArch64 be 64KB unless the user has overriden it via configure in which case
the user value is used as long as that value is within the valid range.

It also does some basic validation to ensure that the guard size is only 4KB or
64KB and also enforces that for aarch64 the stack-clash probing interval is
equal to the guard size.

gcc/

PR target/86486
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Add validation for stack-clash parameters and set defaults.

From-SVN: r264753

6 years agoAllow setting of stack-clash via configure options.
Tamar Christina [Mon, 1 Oct 2018 13:02:21 +0000 (13:02 +0000)]
Allow setting of stack-clash via configure options.

This patch defines a configure option to allow the setting of the default
guard size via configure flags when building the target.

The new flag is:

 * --with-stack-clash-protection-guard-size=<num>

The patch defines a new macro DEFAULT_STK_CLASH_GUARD_SIZE which targets need
to use explicitly is they want to support this configure flag and values that
users may have set.

gcc/

PR target/86486
* configure.ac: Add stack-clash-protection-guard-size.
* doc/install.texi: Document it.
* config.in (DEFAULT_STK_CLASH_GUARD_SIZE): New.
* params.def: Update comment for guard-size.
(PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Update description.
* configure: Regenerate.

From-SVN: r264752

6 years agoEnsure that outgoing argument size is at least 8 bytes when alloca and stack-clash.
Tamar Christina [Mon, 1 Oct 2018 13:00:58 +0000 (13:00 +0000)]
Ensure that outgoing argument size is at least 8 bytes when alloca and stack-clash.

This patch adds a requirement that the number of outgoing arguments for a
function is at least 8 bytes when using stack-clash protection and alloca.

By using this condition we can avoid a check in the alloca code and so have
smaller and simpler code there.

A simplified version of the AArch64 stack frames is:

   +-----------------------+
   |                       |
   |                       |
   |                       |
   +-----------------------+
   |LR                     |
   +-----------------------+
   |FP                     |
   +-----------------------+
   |dynamic allocations    | ----  expanding area which will push the outgoing
   +-----------------------+       args down during each allocation.
   |padding                |
   +-----------------------+
   |outgoing stack args    | ---- safety buffer of 8 bytes (aligned)
   +-----------------------+

By always defining an outgoing argument, alloca(0) effectively is safe to probe
at $sp due to the reserved buffer being there.  It will never corrupt the stack.

This is also safe for alloca(x) where x is 0 or x % page_size == 0.  In the
former it is the same case as alloca(0) while the latter is safe because any
allocation pushes the outgoing stack args down:

   |FP                     |
   +-----------------------+
   |                       |
   |dynamic allocations    | ----  alloca (x)
   |                       |
   +-----------------------+
   |padding                |
   +-----------------------+
   |outgoing stack args    | ---- safety buffer of 8 bytes (aligned)
   +-----------------------+

Which means when you probe for the residual, if it's 0 you'll again just probe
in the outgoing stack args range, which we know is non-zero (at least 8 bytes).

gcc/

PR target/86486
* config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS,
STACK_DYNAMIC_OFFSET): New.
* config/aarch64/aarch64.c (aarch64_layout_frame):
Update outgoing args size.
(aarch64_stack_clash_protection_alloca_probe_range,
TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New.

gcc/testsuite/

PR target/86486
* gcc.target/aarch64/stack-check-alloca-1.c: New.
* gcc.target/aarch64/stack-check-alloca-10.c: New.
* gcc.target/aarch64/stack-check-alloca-2.c: New.
* gcc.target/aarch64/stack-check-alloca-3.c: New.
* gcc.target/aarch64/stack-check-alloca-4.c: New.
* gcc.target/aarch64/stack-check-alloca-5.c: New.
* gcc.target/aarch64/stack-check-alloca-6.c: New.
* gcc.target/aarch64/stack-check-alloca-7.c: New.
* gcc.target/aarch64/stack-check-alloca-8.c: New.
* gcc.target/aarch64/stack-check-alloca-9.c: New.
* gcc.target/aarch64/stack-check-alloca.h: New.
* gcc.target/aarch64/stack-check-14.c: New.
* gcc.target/aarch64/stack-check-15.c: New.

From-SVN: r264751

6 years agoAdd a hook to support telling the mid-end when to probe the stack.
Tamar Christina [Mon, 1 Oct 2018 12:58:21 +0000 (12:58 +0000)]
Add a hook to support telling the mid-end when to probe the stack.

This patch adds a hook to tell the mid-end about the probing requirements of the
target.  On AArch64 we allow a specific range for which no probing needs to
be done.  This same range is also the amount that will have to be probed up when
a probe is needed after dropping the stack.

Defining this probe comes with the extra requirement that the outgoing arguments
size of any function that uses alloca and stack clash be at the very least 8
bytes.  With this invariant we can skip doing the zero checks for alloca and
save some code.

A simplified version of the AArch64 stack frame is:

   +-----------------------+
   |                       |
   |                       |
   |                       |
   +-----------------------+
   |LR                     |
   +-----------------------+
   |FP                     |
   +-----------------------+
   |dynamic allocations    | -\      probe range hook effects these
   +-----------------------+   --\   and ensures that outgoing stack
   |padding                |      -- args is always > 8 when alloca.
   +-----------------------+  ---/   Which means it's always safe to probe
   |outgoing stack args    |-/       at SP
   +-----------------------+

This allows us to generate better code than without the hook without affecting
other targets.

With this patch I am also removing the stack_clash_protection_final_dynamic_probe
hook which was added specifically for AArch64 but that is no longer needed.

gcc/

PR target/86486
* explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom
probe ranges.
* target.def (stack_clash_protection_alloca_probe_range): New.
(stack_clash_protection_final_dynamic_probe): Remove.
* targhooks.h (default_stack_clash_protection_alloca_probe_range) New.
(default_stack_clash_protection_final_dynamic_probe): Remove.
* targhooks.c: Likewise.
* doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New.
(TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): Remove.
* doc/tm.texi: Regenerate.

From-SVN: r264750

6 years agoAdd support for SVE stack clash probing.
Tamar Christina [Mon, 1 Oct 2018 12:56:40 +0000 (12:56 +0000)]
Add support for SVE stack clash probing.

This patch adds basic support for SVE stack clash protection.
It is a first implementation and will use a loop to do the
probing and stack adjustments.

An example sequence is:

        .cfi_startproc
        mov     x15, sp
        cntb    x16, all, mul #11
        add     x16, x16, 304
        .cfi_def_cfa_register 15
.SVLPSPL0:
        cmp     x16, 61440
        b.lt    .SVLPEND0
        sub     sp, sp, 61440
        str     xzr, [sp, 0]
        sub     x16, x16, 61440
        b      .SVLPSPL0
.SVLPEND0:
        sub     sp, sp, x16
        .cfi_escape 0xf,0xc,0x8f,0,0x92,0x2e,0,0x8,0x58,0x1e,0x23,0xb0,0x2,0x22

for a 64KB guard size, and for a 4KB guard size

        .cfi_startproc
        mov     x15, sp
        cntb    x16, all, mul #11
        add     x16, x16, 304
        .cfi_def_cfa_register 15
.SVLPSPL0:
        cmp     x16, 3072
        b.lt    .SVLPEND0
        sub     sp, sp, 3072
        str     xzr, [sp, 0]
        sub     x16, x16, 3072
        b       .SVLPSPL0
.SVLPEND0:
        sub     sp, sp, x16
        .cfi_escape 0xf,0xc,0x8f,0,0x92,0x2e,0,0x8,0x58,0x1e,0x23,0xb0,0x2,0x22

This has about the same semantics as alloca, except we prioritize the common case
where no probe is required.  We also change the amount we adjust the stack and
the probing interval to be the nearest value to `guard size - abi buffer` that
fits in the 12-bit shifted immediate used by cmp.

While this would mean we probe a bit more often than we require, in practice the
amount of SVE vectors you'd need to spill is significant. Even more so to enter the
loop more than once.

gcc/

PR target/86486
* config/aarch64/aarch64-protos.h (aarch64_output_probe_sve_stack_clash): New.
* config/aarch64/aarch64.c (aarch64_output_probe_sve_stack_clash,
aarch64_clamp_to_uimm12_shift): New.
(aarch64_allocate_and_probe_stack_space): Add SVE specific section.
* config/aarch64/aarch64.md (probe_sve_stack_clash): New.

gcc/testsuite/

PR target/86486
* gcc.target/aarch64/stack-check-prologue-16.c: New test
* gcc.target/aarch64/stack-check-cfa-3.c: New test.
* gcc.target/aarch64/sve/struct_vect_24.c: New test.
* gcc.target/aarch64/sve/struct_vect_24_run.c: New test.

From-SVN: r264749

6 years agostack-clash: Add LR assert to layout_frame.
Tamar Christina [Mon, 1 Oct 2018 12:53:34 +0000 (12:53 +0000)]
stack-clash: Add LR assert to layout_frame.

Since stack clash depends on the LR being saved for non-leaf functions this
patch adds an assert such that if this changes we would notice this.

gcc/
PR target/86486
* config/aarch64/aarch64.c (aarch64_layout_frame): Add assert.

From-SVN: r264748

6 years agoUpdated stack-clash implementation supporting 64k probes.
Jeff Law [Mon, 1 Oct 2018 12:49:35 +0000 (06:49 -0600)]
Updated stack-clash implementation supporting 64k probes.

This patch implements the use of the stack clash mitigation for aarch64.
In Aarch64 we expect both the probing interval and the guard size to be 64KB
and we enforce them to always be equal.

We also probe up by 1024 bytes in the general case when a probe is required.

AArch64 has the following probing conditions:

 1a) Any initial adjustment less than 63KB requires no probing.  An ABI defined
     safe buffer of 1Kbytes is used and a page size of 64k is assumed.

  b) Any final adjustment residual requires a probe at SP + 1KB.
     We know this to be safe since you would have done at least one page worth
     of allocations already to get to that point.

  c) Any final adjustment more than remainder (total allocation amount) larger
     than 1K - LR offset requires a probe at SP.

  safe buffer mentioned in 1a is maintained by the storing of FP/LR.
  In the case of -fomit-frame-pointer we can still count on LR being stored
  if the function makes a call, even if it's a tail call.  The AArch64 frame
  layout code guarantees this and tests have been added to check against
  this particular case.

 2) Any allocations larger than 1 page size, is done in increments of page size
    and probed up by 1KB leaving the residuals.

 3a) Any residual for initial adjustment that is less than guard-size - 1KB
     requires no probing.  Essentially this is a sliding window.  The probing
     range determines the ABI safe buffer, and the amount to be probed up.

Incrementally allocating less than the probing thresholds, e.g. recursive functions will
not be an issue as the storing of LR counts as a probe.

                            +-------------------+
                            |  ABI SAFE REGION  |
                  +------------------------------
                  |         |                   |
                  |         |                   |
                  |         |                   |
                  |         |                   |
                  |         |                   |
                  |         |                   |
 maximum amount   |         |                   |
 not needing a    |         |                   |
 probe            |         |                   |
                  |         |                   |
                  |         |                   |
                  |         |                   |
                  |         |                   |        Probe offset when
                  |         ---------------------------- probe is required
                  |         |                   |
                  +-------- +-------------------+ --------  Point of first probe
                            |  ABI SAFE REGION  |
                            ---------------------
                            |                   |
                            |                   |
                            |                   |

Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.
Target was tested with stack clash on and off by default.

GLIBC testsuite also ran with stack clash on by default and no new
regressions.

Co-Authored-By: Richard Sandiford <richard.sandiford@linaro.org>
Co-Authored-By: Tamar Christina <tamar.christina@arm.com>
From-SVN: r264747

6 years agoFix caching of tests for multiple variant runs and update existing target-supports...
Tamar Christina [Mon, 1 Oct 2018 12:34:05 +0000 (12:34 +0000)]
Fix caching of tests for multiple variant runs and update existing target-supports tests.

Currently some target supports checks such as vect_int cache their
results in a manner that would cause them not to be rechecked when
running the same tests against a different variant in a multi variant
run.  This causes tests to be skipped or run when they shouldn't be.

there is already an existing caching mechanism in place that does the
caching correctly, but presumably these weren't used because some of these
tests originally only contained static data. e.g. only checked if the target is
aarch64*-*-* etc.

This patch changes every function that needs to do any caching at all to use
check_cached_effective_target which will cache per variant instead of globally.

For those tests that already parameterize over et_index I have created
check_cached_effective_target_indexed to handle this common case by creating a list
containing the property name and the current value of et_index.

These changes result in a much simpler implementation for most tests and a large
reduction in lines for target-supports.exp.

Regtested on
  aarch64-none-elf
  x86_64-pc-linux-gnu
  powerpc64-unknown-linux-gnu
  arm-none-eabi

and no testsuite errors. Difference would depend on your site.exp.
On arm we get about 4500 new testcases and on aarch64 the low 10s.
On PowerPC and x86_64 no changes as expected since the default exp for these
just test the default configuration.

What this means for new target checks is that they should always use either
check_cached_effective_target or check_cached_effective_target_indexed if the
result of the check is to be cached.

As an example the new vect_int looks like

proc check_effective_target_vect_int { } {
    return [check_cached_effective_target_indexed <name> {
      expr {
         <condition>
}}]
}

The debug information that was once there is now all hidden in
check_cached_effective_target, (called from check_cached_effective_target_indexed)
and so the only thing you are required to do is give it a unique cache name and a condition.

The condition doesn't need to be an if statement so simple boolean expressions are enough here:

         [istarget i?86-*-*] || [istarget x86_64-*-*]
         || ([istarget powerpc*-*-*]
     && ![istarget powerpc-*-linux*paired*])
         || ...

From-SVN: r264745

6 years agore PR tree-optimization/87261 (Optimize bool expressions)
MCC CS [Mon, 1 Oct 2018 11:25:45 +0000 (11:25 +0000)]
re PR tree-optimization/87261 (Optimize bool expressions)

2018-10-01  MCC CS <deswurstes@users.noreply.github.com>

PR tree-optimization/87261
* match.pd: Remove trailing whitespace.
Add (x & y) | ~(x | y) -> ~(x ^ y),
(~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y)

* gcc.dg/pr87261.c: New test.

From-SVN: r264744

6 years agoc-ada-spec.c (get_underlying_decl): Get to the main type variant.
Eric Botcazou [Mon, 1 Oct 2018 09:39:28 +0000 (09:39 +0000)]
c-ada-spec.c (get_underlying_decl): Get to the main type variant.

* c-ada-spec.c (get_underlying_decl): Get to the main type variant.
(dump_ada_node): Add const keyword.

From-SVN: r264738

6 years ago[ARC] Avoid specific constants to end in limm field.
Claudiu Zissulescu [Mon, 1 Oct 2018 09:37:46 +0000 (11:37 +0200)]
[ARC] Avoid specific constants to end in limm field.

Avoid constants to end up in the limm field for particular
instructions when compiling for size.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (*add_n): Clean up pattern, update instruction
constraints.
(ashlsi3_insn): Update instruction constraints.
(ashrsi3_insn): Likewise.
(rotrsi3): Likewise.
(add_shift): Likewise.
* config/arc/constraints.md (Csz): New 32 bit constraint. It
avoids placing in the limm field small constants which, otherwise,
could end into a small instruction.

testsuite/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/tph_addx.c: New test.

From-SVN: r264737

6 years ago[ARC] Check for odd-even register when emitting double mac ops.
Claudiu Zissulescu [Mon, 1 Oct 2018 09:37:33 +0000 (11:37 +0200)]
[ARC] Check for odd-even register when emitting double mac ops.

gcc/
Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (maddsidi4_split): Don't use dmac if the
destination register is not odd-even.
(umaddsidi4_split): Likewise.

gcc/testsuite/
Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/tmac-3.c: New file.

From-SVN: r264736

6 years agotree-inline.c (expand_call_inline): Store origin of fn in BLOCK_ABSTRACT_ORIGIN for...
Richard Biener [Mon, 1 Oct 2018 07:48:51 +0000 (07:48 +0000)]
tree-inline.c (expand_call_inline): Store origin of fn in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK.

2018-10-01  Richard Biener  <rguenther@suse.de>

* tree-inline.c (expand_call_inline): Store origin of fn
in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK.
* tree.c (block_ultimate_origin): Simplify and do some
checking.

From-SVN: r264734

6 years ago[Ada] use -gnatd_A to disable .ali on -fcompare-debug recompile
Alexandre Oliva [Mon, 1 Oct 2018 00:27:45 +0000 (00:27 +0000)]
[Ada] use -gnatd_A to disable .ali on -fcompare-debug recompile

for  gcc/ada/ChangeLog

* gcc-interface/lang-specs.h (default_compilers): When given
fcompare-debug-second, adjust auxbase like cc1, and pass
gnatd_A.
* gcc-interface/misc.c (flag_compare_debug): Remove variable.
(gnat_post_options): Do not set it.
* lib-writ.adb (flag_compare_debug): Remove import.
(Write_ALI): Do not test it.

From-SVN: r264732

6 years agoDaily bump.
GCC Administrator [Mon, 1 Oct 2018 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264731

6 years agommx.md (EMMS): New int iterator.
Uros Bizjak [Sun, 30 Sep 2018 22:13:36 +0000 (00:13 +0200)]
mmx.md (EMMS): New int iterator.

* config/i386/mmx.md (EMMS): New int iterator.
(emms): New int attribute.
(mmx_<emms>): Macroize insn from *mmx_emms and *mmx_femms using
EMMS int iterator.  Explicitly declare clobbers.
(mmx_emms): Remove expander.
(mmx_femms): Ditto.
* config/i386/predicates.md (emms_operation): Remove predicate.
(vzeroall_pattern): New predicate.
(vzeroupper_pattern): Rename from vzeroupper_operation.
* config/i386/i386.c (ix86_avx_u128_mode_after): Use
vzeroupper_pattern and vzeroall_pattern predicates.

From-SVN: r264727

6 years agore PR rtl-optimization/86939 (IRA incorrectly creates an interference between a pseud...
Peter Bergner [Sun, 30 Sep 2018 20:03:14 +0000 (20:03 +0000)]
re PR rtl-optimization/86939 (IRA incorrectly creates an interference between a pseudo register and a hard register)

gcc/
PR rtl-optimization/86939
* ira-lives.c (make_hard_regno_born): Rename from this...
(make_hard_regno_live): ... to this.  Remove update to conflict
information.  Update function comment.
(make_hard_regno_dead): Add conflict information update.  Update
function comment.
(make_object_born): Rename from this...
(make_object_live): ... to this.  Remove update to conflict information.
Update function comment.
(make_object_dead):  Add conflict information update.  Update function
comment.
(mark_pseudo_regno_live): Call make_object_live.
(mark_pseudo_regno_subword_live): Likewise.
(mark_hard_reg_dead): Update function comment.
(mark_hard_reg_live): Call make_hard_regno_live.
(process_bb_node_lives): Likewise.
* lra-lives.c (make_hard_regno_born): Rename from this...
(make_hard_regno_live): ... to this.  Remove update to conflict
information.  Remove now uneeded check_pic_pseudo_p argument.
Update function comment.
(make_hard_regno_dead): Add check_pic_pseudo_p argument and add update
to conflict information.  Update function comment.
(mark_pseudo_live): Remove update to conflict information.  Update
function comment.
(mark_pseudo_dead): Add conflict information update.
(mark_regno_live): Call make_hard_regno_live.
(mark_regno_dead): Call make_hard_regno_dead with new arguement.
(process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead.

From-SVN: r264726

6 years agore PR fortran/87359 (pointer being freed was not allocated)
Paul Thomas [Sun, 30 Sep 2018 13:52:55 +0000 (13:52 +0000)]
re PR fortran/87359 (pointer being freed was not allocated)

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* trans-array.c (gfc_is_reallocatable_lhs): Correct the problem
introduced by r264358, which prevented components of associate
names from being reallocated on assignment.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* gfortran.dg/associate_40.f90 : New test.

From-SVN: r264725

6 years agore PR fortran/70752 (Incorrect LEN for ALLOCATABLE CHARACTER)
Paul Thomas [Sun, 30 Sep 2018 12:22:07 +0000 (12:22 +0000)]
re PR fortran/70752 (Incorrect LEN for ALLOCATABLE CHARACTER)

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70752
PR fortran/72709
* trans-array.c (gfc_conv_scalarized_array_ref): If this is a
deferred type and the info->descriptor is present, use the
info->descriptor
(gfc_conv_array_ref): Is the se expr is a descriptor type, pass
it as 'decl' rather than the symbol backend_decl.
(gfc_array_allocate): If the se string_length is a component
reference, fix it and use it for the expression string length
if the latter is not a variable type. If it is a variable do
an assignment. Make use of component ref string lengths to set
the descriptor 'span'.
(gfc_conv_expr_descriptor): For pointer assignment, do not set
the span field if gfc_get_array_span returns zero.
* trans.c (get_array_span): If the upper bound a character type
is zero, use the descriptor span if available.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70752
PR fortran/72709
* gfortran.dg/deferred_character_25.f90 : New test.
* gfortran.dg/deferred_character_26.f90 : New test.
* gfortran.dg/deferred_character_27.f90 : New test to verify
that PR82617 remains fixed.

From-SVN: r264724

6 years agomessages.xml: Switch link to www.oracle.com to https.
Gerald Pfeifer [Sun, 30 Sep 2018 11:41:31 +0000 (11:41 +0000)]
messages.xml: Switch link to oracle.com to https.

* doc/xml/manual/messages.xml: Switch link to www.oracle.com
to https.

From-SVN: r264723

6 years agopolicy_data_structures_biblio.xml: Update link to Microsoft Component Model Object...
Gerald Pfeifer [Sun, 30 Sep 2018 10:53:14 +0000 (10:53 +0000)]
policy_data_structures_biblio.xml: Update link to Microsoft Component Model Object Technologies.

* doc/xml/manual/policy_data_structures_biblio.xml: Update
link to Microsoft Component Model Object Technologies.

From-SVN: r264722

6 years agore PR fortran/70149 ([F08] Character pointer initialization causes ICE)
Paul Thomas [Sun, 30 Sep 2018 07:02:49 +0000 (07:02 +0000)]
re PR fortran/70149 ([F08] Character pointer initialization causes ICE)

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70149
* trans-decl.c (gfc_get_symbol_decl): A deferred character
length pointer that is initialized needs the string length to
be initialized as well.

2018-09-30  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/70149
* gfortran.dg/deferred_character_24.f90 : New test.

From-SVN: r264721

6 years agoDaily bump.
GCC Administrator [Sun, 30 Sep 2018 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264720

6 years agoi386: Use TImode for BLKmode values in 2 integer registers
H.J. Lu [Sat, 29 Sep 2018 21:59:59 +0000 (21:59 +0000)]
i386: Use TImode for BLKmode values in 2 integer registers

When passing and returning BLKmode values in 2 integer registers, use
1 TImode register instead of 2 DImode registers. Otherwise, V1TImode
may be used to move and store such BLKmode values, which prevent RTL
optimizations.

gcc/

PR target/87370
* config/i386/i386.c (construct_container): Use TImode for
BLKmode values in 2 integer registers.

gcc/testsuite/

PR target/87370
* gcc.target/i386/pr87370.c: New test.

From-SVN: r264716

6 years agore PR fortran/65677 (Incomplete assignment on deferred-length character variable)
Paul Thomas [Sat, 29 Sep 2018 17:17:09 +0000 (17:17 +0000)]
re PR fortran/65677 (Incomplete assignment on deferred-length character variable)

2018-09-29  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65667
* trans-expr.c (gfc_trans_assignment_1): If there is dependency
fix the rse stringlength.

2018-09-29  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/65667
* gfortran.dg/dependency_52.f90 : New test.

From-SVN: r264715

6 years agobuiltins.c (unterminated_array): Pass in c_strlen_data * to c_strlen rather than...
Jeff Law [Sat, 29 Sep 2018 16:06:09 +0000 (10:06 -0600)]
builtins.c (unterminated_array): Pass in c_strlen_data * to c_strlen rather than just a tree *.

* builtins.c (unterminated_array): Pass in c_strlen_data * to
c_strlen rather than just a tree *.
(c_strlen): Change NONSTR argument to a c_strlen_data pointer.
Update recursive calls appropriately.  If caller did not provide a
suitable data pointer, create a local one.  When a non-terminated
string is discovered, bubble up information about the string via the
c_strlen_data object.
* builtins.h (c_strlen): Update prototype.
(c_strlen_data): New structure.
* gimple-fold.c (get_range_strlen): Update calls to c_strlen.
For a type 2 call, if c_strlen indicates a non-terminated string
use the length of the non-terminated string.
(gimple_fold_builtin_stpcpy): Update calls to c_strlen.

From-SVN: r264712

6 years agore PR target/87467 (Incorrect function parameter for _mm512_abs_pd in `include/avx512...
Jakub Jelinek [Sat, 29 Sep 2018 16:04:09 +0000 (18:04 +0200)]
re PR target/87467 (Incorrect function parameter for _mm512_abs_pd in `include/avx512fintrin.h`)

PR target/87467
* config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use
__m512d type for __A argument rather than __m512.

* gcc.target/i386/avx512f-abspd-1.c (SIZE): Divide by two.
(CALC): Use double instead of float.
(TEST): Adjust to test _mm512_abs_pd and _mm512_mask_abs_pd rather than
_mm512_abs_ps and _mm512_mask_abs_ps.

From-SVN: r264711

6 years agofdl-1.3.xml: The Free Software Foundation web site now uses https.
Gerald Pfeifer [Sat, 29 Sep 2018 11:25:57 +0000 (11:25 +0000)]
fdl-1.3.xml: The Free Software Foundation web site now uses https.

* doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
site now uses https. Also omit the unnecessary trailing slash.
* doc/xml/gnu/gpl-3.0.xml: Ditto.

From-SVN: r264710

6 years agoDaily bump.
GCC Administrator [Sat, 29 Sep 2018 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264709

6 years agomatch.pd (simple_comparison): Don't optimize if either operand is a function pointer...
John David Anglin [Fri, 28 Sep 2018 23:13:10 +0000 (23:13 +0000)]
match.pd (simple_comparison): Don't optimize if either operand is a function pointer when...

* match.pd (simple_comparison): Don't optimize if either operand is
a function pointer when target needs function pointer canonicalization.

From-SVN: r264705

6 years agors5000: Delete all specific asm_cpu_* and ASM_CPU_*_SPEC
Segher Boessenkool [Fri, 28 Sep 2018 22:30:45 +0000 (00:30 +0200)]
rs5000: Delete all specific asm_cpu_* and ASM_CPU_*_SPEC

Now that e.g. ASM_CPU_POWER5_SPEC is always "-mpower5" it is clearer and
easier to just write that directly.

* config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for
power5 .. power9 to remove indirection.
* config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC,
ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC,
ASM_CPU_476_SPEC): Delete.
(ASM_CPU_SPEC): Adjust.
(EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7,
asm_cpu_power8, asm_cpu_power9, asm_cpu_476.

From-SVN: r264704

6 years agors6000: Delete HAVE_AS_DCI
Segher Boessenkool [Fri, 28 Sep 2018 22:02:17 +0000 (00:02 +0200)]
rs6000: Delete HAVE_AS_DCI

Every supported assembler supports these instructions.  Committing.

* config.in: Delete HAVE_AS_DCI.
* config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true.
* config/rs6000/rs6000.h: Ditto.
* configure.ac: Delete HAVE_AS_DCI.
* configure: Regenerate.

From-SVN: r264703

6 years agors6000: Delete HAVE_AS_LWSYNC and TARGET_LWSYNC_INSTRUCTION
Segher Boessenkool [Fri, 28 Sep 2018 21:50:34 +0000 (23:50 +0200)]
rs6000: Delete HAVE_AS_LWSYNC and TARGET_LWSYNC_INSTRUCTION

All supported assemblers know lwsync, so we never need to generate this
instruction using the .long escape hatch.

* config.in (HAVE_AS_LWSYNC): Delete.
* config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete.
* config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never
do it as a .long .
* config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete.
* config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it
as a .long .
* configure.ac: Delete HAVE_AS_LWSYNC.
* configure: Regenerate.

From-SVN: r264702

6 years agocalls.c (expand_call): Try to do a tail call for thunks at -O0 too.
Eric Botcazou [Fri, 28 Sep 2018 21:20:53 +0000 (21:20 +0000)]
calls.c (expand_call): Try to do a tail call for thunks at -O0 too.

* calls.c (expand_call): Try to do a tail call for thunks at -O0 too.
* cgraph.h (struct cgraph_thunk_info): Add indirect_offset.
(cgraph_node::create_thunk): Add indirect_offset parameter.
(thunk_adjust): Likewise.
* cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter
and initialize the corresponding field with it.
(cgraph_node::dump): Dump indirect_offset field.
* cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset.
* cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks.
(thunk_adjust): Add indirect_offset parameter and deal with it.
(cgraph_node::expand_thunk): Deal with the indirect_offset field and
pass it to thunk_adjust.  Do not call the target hook if it's non-zero
or if the thunk is external or local.  Fix formatting.  Do not chain
the RESULT_DECL to BLOCK_VARS.  Pass the static chain to the target,
if any, in the GIMPLE representation.
* ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset.
* lto-cgraph.c (lto_output_node): Write indirect_offset field.
(input_node): Read indirect_offset field.
* tree-inline.c (expand_call_inline): Pass indirect_offset field in the
call to thunk_adjust.
* tree-nested.c (struct nesting_info): Add thunk_p field.
(create_nesting_tree): Set it.
(convert_all_function_calls): Copy static chain from targets to thunks.
(finalize_nesting_tree_1): Return early for thunks.
(unnest_nesting_tree_1): Do not finalize thunks.
(gimplify_all_functions): Do not gimplify thunks.
cp/
* method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
ada/
* gcc-interface/decl.c (is_cplusplus_method): Do not require C++
convention on Interfaces.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Try to create a
bona-fide thunk and hand it over to the middle-end.
(get_controlling_type): New function.
(use_alias_for_thunk_p): Likewise.
(thunk_labelno): New static variable.
(make_covariant_thunk): New function.
(maybe_make_gnu_thunk): Likewise.
* gcc-interface/utils.c (finish_subprog_decl): Set DECL_CONTEXT of the
result DECL here instead of...
(end_subprog_body): ...here.

Co-Authored-By: Pierre-Marie de Rodat <derodat@adacore.com>
From-SVN: r264701

6 years agofunctions.h (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&...
François Dumont [Fri, 28 Sep 2018 20:26:29 +0000 (20:26 +0000)]
functions.h (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&, const _InputIter&, __true_type)): Use empty() rather than begin() == end().

2018-09-28  François Dumont  <fdumont@gcc.gnu.org>

* include/debug/functions.h
(__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
const _InputIter&, __true_type)): Use empty() rather than begin() ==
end().

From-SVN: r264699

6 years agoopt-suggestions.c: fix minor memory leak
David Malcolm [Fri, 28 Sep 2018 17:49:48 +0000 (17:49 +0000)]
opt-suggestions.c: fix minor memory leak

gcc/ChangeLog:
* opt-suggestions.c (option_proposer::build_option_suggestions):
Release "option_values".

From-SVN: r264698

6 years agodumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTI...
David Malcolm [Fri, 28 Sep 2018 17:40:04 +0000 (17:40 +0000)]
dumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION}

As noted at Cauldron, dumpfile.c currently emits "note: " for all kinds
of dump message, so that (after filtering) there's no distinction between
MSG_OPTIMIZED_LOCATIONS vs MSG_NOTE vs MSG_MISSED_OPTIMIZATION in the
textual output.

This patch changes dumpfile.c so that the "note: " varies to show
which MSG_* was used, with the string prefix matching that used for
filtering in -fopt-info, hence e.g.
  directive_unroll_3.f90:24:0: optimized: loop unrolled 7 times
and:
  pr19210-1.c:24:3: missed: missed loop optimization: niters analysis ends up with assumptions.

The patch adds "dg-optimized" and "dg-missed" directives for use
in the testsuite for matching these (with -fopt-info on stderr; they
don't help for dumpfile output).

The patch also converts the various problem-reporting dump messages
in coverage.c:get_coverage_counts to use MSG_MISSED_OPTIMIZATION
rather than MSG_OPTIMIZED_LOCATIONS, as the docs call out "optimized"
as
  "information when an optimization is successfully applied",
whereas "missed" is for
  "information about missed optimizations",
and problems with profile data seem to me to fall much more into the
latter category than the former.  Doing so requires converting a few
tests from using "-fopt-info" (which is implicitly
"-fopt-info-optimized-optall") to getting the "missed" optimizations.
Changing them to "-fopt-info-missed" added lots of noise from the
vectorizer, so I changed these tests to use "-fopt-info-missed-ipa".

gcc/ChangeLog:
* coverage.c (get_coverage_counts): Convert problem-reporting dump
messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION.
* dumpfile.c (kind_as_string): New function.
(dump_loc): Rather than a hardcoded prefix of "note: ", use
kind_as_string to vary the prefix based on dump_kind.
(selftest::test_capture_of_dump_calls): Update for above.

gcc/testsuite/ChangeLog:
* c-c++-common/unroll-1.c: Update expected output from "note" to
"optimized".
* c-c++-common/unroll-2.c: Likewise.
* c-c++-common/unroll-3.c: Likewise.
* g++.dg/tree-ssa/dom-invalid.C: Update expected output from
dg-message to dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* g++.dg/tree-ssa/pr81408.C: Update expected output from
dg-message to dg-missed.
* g++.dg/vect/slp-pr56812.cc: Update expected output from
dg-message to dg-optimized.
* gcc.dg/pr26570.c: Update expected output from dg-message to
dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* gcc.dg/pr32773.c: Likewise.
* gcc.dg/tree-ssa/pr19210-1.c: Update expected output from
dg-message to dg-missed.
* gcc.dg/unroll-2.c: Update expected output from dg-message to
dg-optimized.
* gcc.dg/vect/nodump-vect-opt-info-1.c: Likewise.  Convert param
from -fopt-info to -fopt-info-vec.
* gfortran.dg/directive_unroll_1.f90: Update expected output from
"note" to "optimized".
* gfortran.dg/directive_unroll_2.f90: Likewise.
* gfortran.dg/directive_unroll_3.f90: Likewise.
* gnat.dg/unroll4.adb: Likewise.
* lib/gcc-dg.exp (dg-optimized): New procedure.
(dg-missed): New procedure.

From-SVN: r264697

6 years agoFix gcc.dg/torture/fp-int-convert.h for excess precision after PR c/87390.
Joseph Myers [Fri, 28 Sep 2018 15:45:51 +0000 (16:45 +0100)]
Fix gcc.dg/torture/fp-int-convert.h for excess precision after PR c/87390.

As reported in
<https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01684.html>, some
fp-int-convert tests fail after my fix for PR c/87390, in Arm /
AArch64 configurations where _Float16 uses excess precision by
default.  The issue is comparisons of the results of a conversion by
assignment (compile-time or run-time) from integer to floating-point
with the original integer value; previously this would compare against
an implicit compile-time conversion to the target type, but now, for
C11 and later, it compares against an implicit compile-time conversion
to a possibly wider evaluation format.  This is fixed by adding casts
to the test so that the comparison is with a value converted
explicitly to the target type at compile time, without any use of a
wider evaluation format.

PR c/87390
* gcc.dg/torture/fp-int-convert.h (TEST_I_F_VAL): Convert integer
values explicitly to target type for comparison.

From-SVN: r264696

6 years agoi386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
Uros Bizjak [Fri, 28 Sep 2018 15:30:46 +0000 (17:30 +0200)]
i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.

* config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
(GET_SSE_REGNO): Rename from SSE_REGNO.  Update all uses for rename.

From-SVN: r264695

6 years agoi386.h (CC_REGNO): Remove FPSR_REGS.
Uros Bizjak [Fri, 28 Sep 2018 15:15:57 +0000 (17:15 +0200)]
i386.h (CC_REGNO): Remove FPSR_REGS.

* config/i386/i386.h (CC_REGNO): Remove FPSR_REGS.
* config/i386/i386.c (ix86_fixed_condition_code_regs): Use
INVALID_REGNUM instead of FPSR_REG.
(ix86_md_asm_adjust): Do not clobber FPSR_REG.
* config/i386/i386.md: Update comment of FP compares.
(fldenv): Do not clobber FPSR_REG.

From-SVN: r264694

6 years agoFix date in ChangeLog file.
Steve Ellcey [Fri, 28 Sep 2018 14:46:21 +0000 (14:46 +0000)]
Fix date in ChangeLog file.

From-SVN: r264693

6 years agore PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and gcc.target/aarch64/ashltidis...
Steve Ellcey [Fri, 28 Sep 2018 14:44:15 +0000 (14:44 +0000)]
re PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and gcc.target/aarch64/ashltidisi.c tests fail after combine two to two instruction patch on aarch64)

2018-09-28  Steve Ellcey  <sellcey@cavium.com>

PR testsuite/87433
* gcc.target/aarch64/ashltidisi.c: Expect 3 asr instructions
instead of 4.

From-SVN: r264692

6 years agore PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and gcc.target/aarch64/ashltidis...
Steve Ellcey [Fri, 28 Sep 2018 14:41:45 +0000 (14:41 +0000)]
re PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and gcc.target/aarch64/ashltidisi.c tests fail after combine two to two instruction patch on aarch64)

2018-09-28  Steve Ellcey  <sellcey@cavium.com>

PR testsuite/87433
* gcc.dg/zero_bits_compound-1.c: Do not run on aarch64*-*-*.

From-SVN: r264691

6 years agocompiler: fix parsing issue with non-ASCII first package char
Ian Lance Taylor [Fri, 28 Sep 2018 13:50:44 +0000 (13:50 +0000)]
compiler: fix parsing issue with non-ASCII first package char

    Fix a bug in the parser code that decides whether a given name should
    be considered exported or not. The function Lex::is_exported_name
    (which assumes that its input is a mangled name) was being called on
    non-mangled (raw utf-8) names in various places. For the bug in
    question this caused an imported package to be registered under the
    wrong name. To fix the issue, rename 'Lex::is_exported_name' to
    'Lex::is_exported_mangled_name', and add a new 'Lex::is_exported_name'
    that works on utf-8 strings.

    Fixes golang/go#27836.

    Reviewed-on: https://go-review.googlesource.com/137736

From-SVN: r264690

6 years agotree.h (BLOCK_ORIGIN): New.
Richard Biener [Fri, 28 Sep 2018 11:33:29 +0000 (11:33 +0000)]
tree.h (BLOCK_ORIGIN): New.

2018-09-28  Richard Biener  <rguenther@suse.de>

* tree.h (BLOCK_ORIGIN): New.
* omp-expand.c (grid_expand_target_grid_body): Assign
BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN.
* tree-inline.c (remap_block): Likewise.

* auto-profile.c (get_function_decl_from_block): Simplify
by eliding the BLOCK_ABSTRACT_ORIGIN chasing.
* langhooks.c (lhd_print_error_function): Likewise.
* optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to):
Likewise.
* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
* tree.c (block_nonartificial_location): Likewise.
(block_ultimate_origin): Likewise.
* tree-pretty-print.c (percent_K_format): Likewise.  Remove
no longer needed LTO case.

cp/
* error.c (cp_print_error_function): Simplify by eliding
the BLOCK_ABSTRACT_ORIGIN chasing.

From-SVN: r264689

6 years agoSimplify vec_merge according to the mask.
Andrew Stubbs [Fri, 28 Sep 2018 10:54:34 +0000 (10:54 +0000)]
Simplify vec_merge according to the mask.

This patch was part of the original patch we acquired from Honza and Martin.

It simplifies nested vec_merge operations using the same mask.

Self-tests are included.

2018-09-28  Andrew Stubbs  <ams@codesourcery.com>
    Jan Hubicka  <jh@suse.cz>
    Martin Jambor  <mjambor@suse.cz>

* simplify-rtx.c (simplify_merge_mask): New function.
(simplify_ternary_operation): Use it, also see if VEC_MERGEs with the
same masks are used in op1 or op2.
(test_vec_merge): New function.
(test_vector_ops): Call test_vec_merge.

Co-Authored-By: Jan Hubicka <jh@suse.cz>
Co-Authored-By: Martin Jambor <mjambor@suse.cz>
From-SVN: r264688

6 years agosparc-protos.h (sparc_branch_cost): Declare.
Eric Botcazou [Fri, 28 Sep 2018 08:47:20 +0000 (08:47 +0000)]
sparc-protos.h (sparc_branch_cost): Declare.

* config/sparc/sparc-protos.h (sparc_branch_cost): Declare.
* config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost.
* config/sparc/sparc.c (struct processor_costs): Add branch_cost field.
(cypress_costs): Set it.
(supersparc_costs): Likewise.
(hypersparc_costs): Likewise.
(leon_cost): Likewise.
(leon3_costs): Likewise.
(sparclet_costs): Likewise.
(ultrasparc_costs): Likewise.
(ultrasparc_costs): Likewise.
(niagara_costs): Likewise.
(niagara2_costs): Likewise.
(niagara3_costs): Likewise.
(niagara4_costs): Likewise.
(niagara7_costs): Likewise.
(m8_costs): Likewise.
(TARGET_CAN_FOLLOW_JUMP): Define.
(pass_work_around_errata::gate): Minor tweak.
(sparc_option_override): Remove MASK_FSMULD mask for V7 processors.
Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor.
Automaitcally clear MASK_FSMULD mask for V7 processors.
(sparc_can_follow_jump): New static function.
(output_ubranch): Deal with CROSSING_JUMP_P.
(sparc_use_sched_lookahead): Rewrite using switch statement.
(sparc_issue_rate): Reorder.
(sparc_branch_cost): New function.

From-SVN: r264687

6 years agoDaily bump.
GCC Administrator [Fri, 28 Sep 2018 00:16:43 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264685

6 years agors6000: Fix one more vec_splat case
Segher Boessenkool [Thu, 27 Sep 2018 22:56:37 +0000 (00:56 +0200)]
rs6000: Fix one more vec_splat case

This fixes the one remaining case where the stricter vec_splat checking
complains in the testsuite.

* g++.dg/ext/altivec-6.C: Change the vec_splat second argument to a
valid value, in the "vector bool int" case.

From-SVN: r264681

6 years agotree.h (tree_to_shwi): Add attribute nonnull and pure.
Martin Sebor [Thu, 27 Sep 2018 22:55:23 +0000 (22:55 +0000)]
tree.h (tree_to_shwi): Add attribute nonnull and pure.

gcc/ChangeLog:

* tree.h (tree_to_shwi): Add attribute nonnull and pure.
(tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same.
(int_fits_type_p): Same.

gcc/ada/ChangeLog:

* gcc-interface/utils.c (make_packable_type): Introduce a temporary
to avoid -Wnonnull.
(unchecked_convert): Same.

From-SVN: r264680

6 years agommintrin.h (_mm_unpackhi_pi8): Change __int128_t to __int128.
Jinsong Ji [Thu, 27 Sep 2018 20:48:53 +0000 (20:48 +0000)]
mmintrin.h (_mm_unpackhi_pi8): Change __int128_t to __int128.

2018-09-27  Jinsong Ji  <jji@us.ibm.com>
    Bill Schmidt  <wschmidt@linux.ibm.com>

* config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Change __int128_t
to __int128.
(_mm_unpacklo_pi8): Likewise.
(_mm_add_pi8): Likewise.
(_mm_add_pi16): Likewise.
(_mm_add_pi32): Likewise.
(_mm_sub_pi8): Likewise.
(_mm_sub_pi16): Likewise.
(_mm_sub_pi32): Likewise.
(_mm_cmpgt_pi8): Likewise.
(_mm_cmpeq_pi16): Likewise.
(_mm_cmpgt_pi16): Likewise.
(_mm_cmpeq_pi32): Likewise.
(_mm_cmpgt_pi32): Likewise.
(_mm_adds_pi8): Likewise.
(_mm_adds_pi16): Likewise.
(_mm_adds_pu8): Likewise.
(_mm_adds_pu16): Likewise.
(_mm_subs_pi8): Likewise.
(_mm_subs_pi16): Likewise.
(_mm_subs_pu8): Likewise.
(_mm_subs_pu16): Likewise.
(_mm_madd_pi16): Likewise.
(_mm_mulhi_pi16): Likewise.
(_mm_mullo_pi16): Likewise.
(_mm_sll_pi16): Likewise.
(_mm_sra_pi16): Likewise.
(_mm_srl_pi16): Likewise.
(_mm_set1_pi16): Likewise.
(_mm_set1_pi8): Likewise.
* config/rs6000/xmmintrin.h (_mm_max_pi16): Likewise.
(_mm_max_pu8): Likewise.
(_mm_min_pi16): Likewise.
(_mm_min_pu8): Likewise.

From-SVN: r264678

6 years agoi386.md (UNSPEC_FLDCW): Remove.
Uros Bizjak [Thu, 27 Sep 2018 20:21:06 +0000 (22:21 +0200)]
i386.md (UNSPEC_FLDCW): Remove.

* config/i386/i386.md (UNSPEC_FLDCW): Remove.

From-SVN: r264677

6 years agoi386.md (FPSR_REG): Remove.
Uros Bizjak [Thu, 27 Sep 2018 20:04:15 +0000 (22:04 +0200)]
i386.md (FPSR_REG): Remove.

* config/i386/i386.md (FPSR_REG): Remove.
(x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG.
(x86_fldcw_1): Remove insn pattern.
(fnstenv): Do not clobber FPCR_REG.
(fldenv): Ditto.
* config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register.
(CALL_USED_REGISTERS): Ditto.
(REG_ALLOC_ORDER): Ditto.
(REG_CLASS_CONTENTS): Ditto.
(HI_REGISTER_NAMES): Ditto.
(ADDITIONAL_REGISTER_NAMES): Use defines instead
of numerical constants.
* config/i386/i386.c (regclass_map): Remove fpsr register.
(dbx_register_map): Ditto.
(dbx64_register_map): Ditto.
(svr4_dbx_register_map): Ditto.
(print_reg): Do not handle FPCR_REG.

testsuite/ChangeLog:

* gcc.dg/rtl/x86_64/dfinit.c: Update scan-rtl-dump string.
* gcc.dg/rtl/x86_64/times-two.c.before-df.c: Ditto.
* gcc.target/i386/pr79804.c (foo): Use register "19", not "20".

From-SVN: r264676

6 years agors6000: Delete many HAVE_AS_* (PR87149)
Segher Boessenkool [Thu, 27 Sep 2018 19:54:09 +0000 (21:54 +0200)]
rs6000: Delete many HAVE_AS_* (PR87149)

This deletes most HAVE_AS_* that determine if the assembler supports
some ISA level (and also HAVE_AS_MFPGPR and HAVE_AS_DFP).

These are not useful: we will only generate an instruction that requires
some newer ISA if the user specifically asked for it (with -mcpu=, say).
If the assembler cannot handle that, it is fine if it gives an error.

They also hurt: it increases the number of possible situations that all
need handling and all need testing.  We do not handle all cases, and
obviously do not test all either.

This patch removes:

HAVE_AS_POPCNTB (power5,  2.02)
HAVE_AS_FPRND   (power5+, 2.04)
HAVE_AS_CMPB    (power6,  2.05)
HAVE_AS_POPCNTD (power7,  2.06)
HAVE_AS_POWER8  (power8,  2.07)
HAVE_AS_POWER9  (power9,  3.0)

HAVE_AS_DFP     (power6,  2.05, server)
HAVE_AS_MFPGPR  (power6x but not later, not arch)

PR target/87149
* config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR,
HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9):
Delete, always treat as true.
* config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
Ditto.  Simplify remaining code.
* config/powerpcspe/powerpcspe.h: Ditto.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto.
Simplify remaining code.
(rs6000_expand_builtin): Ditto.
* config/rs6000/rs6000.h: Ditto.
* configure.ac: Ditto.
* configure: Regenerate.

From-SVN: r264675

6 years agocoverage.c (get_coverage_counts): Revert the formatting of missing profile opt info.
Martin Liska [Thu, 27 Sep 2018 14:53:35 +0000 (16:53 +0200)]
coverage.c (get_coverage_counts): Revert the formatting of missing profile opt info.

2018-09-27  Martin Liska  <mliska@suse.cz>

* coverage.c (get_coverage_counts): Revert the formatting
of missing profile opt info.

* g++.dg/pr60518.C: Add -Wno-missing-profile.
* g++.dg/torture/pr59265.C: Likewise.
* g++.dg/tree-prof/morefunc.C: Likewise.
* g++.dg/tree-ssa/dom-invalid.C: Likewise.
* gcc.dg/pr26570.c: Likewise.
* gcc.dg/pr32773.c: Likewise.
* gcc.dg/pr40209.c: Likewise.
* gcc.dg/pr51957-1.c: Likewise.
* gcc.dg/pr80747.c: Likewise.
* gcc.target/aarch64/pr62262.c: Likewise.

From-SVN: r264669

6 years agore PR debug/87451 (FAIL: gcc.dg/debug/dwarf2/inline5.c)
Richard Biener [Thu, 27 Sep 2018 14:17:52 +0000 (14:17 +0000)]
re PR debug/87451 (FAIL: gcc.dg/debug/dwarf2/inline5.c)

2018-09-27  Richard Biener  <rguenther@suse.de>

PR testsuite/87451
* gcc.dg/debug/dwarf2/inline5.c: Deal with different comment characters.

From-SVN: r264668

6 years agore PR debug/37801 (DWARF output for inlined functions doesn't always use DW_TAG_inlin...
Richard Biener [Thu, 27 Sep 2018 14:10:45 +0000 (14:10 +0000)]
re PR debug/37801 (DWARF output for inlined functions doesn't always use DW_TAG_inlined_subroutine)

2018-09-27  Richard Biener  <rguenther@suse.de>

PR debug/37801
PR debug/87440
* dwarf2out.c (set_block_origin_self): Do not mark outermost
block as we do not output that.
(gen_inlined_subroutine_die): Elide the originally outermost
block, matching what we do for concrete instances.
(decls_for_scope): Add parameter specifying whether to recurse
to subblocks.

* gcc.dg/debug/dwarf2/inline2.c: Adjust.
* gcc.dg/debug/dwarf2/inline4.c: New testcase.

From-SVN: r264667

6 years ago[pr82089] Don't sign-extend SFV 1 in BImode
Andrew Stubbs [Thu, 27 Sep 2018 11:15:48 +0000 (11:15 +0000)]
[pr82089] Don't sign-extend SFV 1 in BImode

This is an update of the patch posted to PR82089 long ago.  We ran into the
same bug on GCN, so we need this fixed as part of this series.

2018-09-27  Andrew Stubbs  <ams@codesourcery.com>
            Tom de Vries  <tom@codesourcery.com>

PR 82089

gcc/
* expmed.c (emit_cstore): Fix handling of result_mode == BImode and
STORE_FLAG_VALUE == 1.

Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r264666

6 years agore PR c++/67544 (ICE: SIGSEGV in tree_check3 (tree.h:2896) with -fconcepts)
Paolo Carlini [Thu, 27 Sep 2018 09:53:08 +0000 (09:53 +0000)]
re PR c++/67544 (ICE: SIGSEGV in tree_check3 (tree.h:2896) with -fconcepts)

2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67544
* g++.dg/concepts/pr67544.C: New.

From-SVN: r264665

6 years agore PR c++/84940 (internal compiler error: in build_value_init_noctor, at cp/init...
Paolo Carlini [Thu, 27 Sep 2018 08:33:41 +0000 (08:33 +0000)]
re PR c++/84940 (internal compiler error: in build_value_init_noctor, at cp/init.c:465)

/cp
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84940
* semantics.c (finish_unary_op_expr): Check return value of
build_x_unary_op for error_mark_node.

/testsuite
2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84940
* g++.dg/expr/unary4.C: New.

From-SVN: r264664

6 years agoS/390: Implement speculation barrier
Andreas Krebbel [Thu, 27 Sep 2018 08:03:42 +0000 (08:03 +0000)]
S/390: Implement speculation barrier

gcc/ChangeLog:

2018-09-27  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New
constant definitions.
("tx_assist"): Replace magic number with PPA_TX_ABORT.
("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
("speculation_barrier"): New expander definition.

From-SVN: r264663

6 years agoDaily bump.
GCC Administrator [Thu, 27 Sep 2018 00:16:55 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264661

6 years agore PR gcov-profile/86957 (gcc should warn about missing profiles for a compilation...
Indu Bhagat [Wed, 26 Sep 2018 22:29:54 +0000 (22:29 +0000)]
re PR gcov-profile/86957 (gcc should warn about missing profiles for a compilation unit or a new function with -fprofile-use)

2018-09-26  Indu Bhagat  <indu.bhagat@oracle.com>

PR gcov-profile/86957
* common.opt: New warning option -Wmissing-profile.
* coverage.c (get_coverage_counts): Add warning for missing .gcda file.
* doc/invoke.texi: Document -Wmissing-profile.

From-SVN: r264657

6 years agoSupport excess precision for integer / floating-point comparisons (PR c/87390).
Joseph Myers [Wed, 26 Sep 2018 21:14:16 +0000 (22:14 +0100)]
Support excess precision for integer / floating-point comparisons (PR c/87390).

In C11, implicit conversions from integer to floating-point types
produce results with the range and precision of the corresponding
evaluation format rather than only those of the type implicitly
converted to.  This patch implements that case of C11 excess precision
semantics in the case of a comparison between integer and
floating-point types, previously missed when implementing other cases
of excess precision for such implicit conversions.  As with other such
fixes, this patch conservatively follows the reading of C99 where
conversions from integer to floating-point do not produce results with
excess precision and so the change is made for C11 mode only.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc/c:
PR c/87390
* c-typeck.c (build_binary_op): Use excess precision for
comparisons of integers and floating-point for C11 and later.

gcc/testsuite:
PR c/87390
* gcc.target/i386/excess-precision-9.c,
gcc.target/i386/excess-precision-10.c: New tests.

From-SVN: r264656

6 years agoRISC-V: Add missing negate patterns.
Jim Wilson [Wed, 26 Sep 2018 21:06:01 +0000 (21:06 +0000)]
RISC-V: Add missing negate patterns.

gcc/
* config/riscv/riscv.md (subsi3_extended2): Add J constraint.
(negdi2, negsi2, negsi2_extended, negsi2_extended2): New.

From-SVN: r264655

6 years agotree.c (zerop): Change return type to bool.
Martin Sebor [Wed, 26 Sep 2018 19:03:26 +0000 (19:03 +0000)]
tree.c (zerop): Change return type to bool.

gcc/ChangeLog:

* tree.c (zerop): Change return type to bool.
(integer_zerop, integer_onep, integer_each_onep): Same.
(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
(real_onep, real_minus_onep, chain_index): Same.
(print_type_hash_statistics, type_list_equal): Same.
* tree.h (zerop): Same.
(zerop, integer_zerop, integer_onep, integer_each_onep): Same.
(integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
(integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
(real_onep, real_minus_onep, chain_index): Same.
(print_type_hash_statistics, type_list_equal): Same.

From-SVN: r264653

6 years agoRISC-V: Delete obsolete MIPS comment.
Jim Wilson [Wed, 26 Sep 2018 18:42:19 +0000 (18:42 +0000)]
RISC-V: Delete obsolete MIPS comment.

gcc/
* config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment.

From-SVN: r264652

6 years agore PR target/87414 (-mindirect-branch=thunk produces thunk with incorrect CFI on...
Jakub Jelinek [Wed, 26 Sep 2018 17:00:49 +0000 (19:00 +0200)]
re PR target/87414 (-mindirect-branch=thunk produces thunk with incorrect CFI on x86_64)

PR target/87414
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the
call.

From-SVN: r264651

6 years agoFix AArch64 ILP32 ICE.
Andrew Stubbs [Wed, 26 Sep 2018 15:59:13 +0000 (15:59 +0000)]
Fix AArch64 ILP32 ICE.

Ensure that the address really is the correct mode for an address.

2018-09-25  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* builtins.c (get_builtin_sync_mem): Force address mode conversion.

From-SVN: r264650

6 years agocrtprec.c (set_precision): Use fnstcw instead of fstcw.
Uros Bizjak [Wed, 26 Sep 2018 15:25:15 +0000 (17:25 +0200)]
crtprec.c (set_precision): Use fnstcw instead of fstcw.

* config/i386/crtprec.c (set_precision): Use fnstcw instead of fstcw.

From-SVN: r264649

6 years agoi386.h (enum reg_class): Remove FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS.
Uros Bizjak [Wed, 26 Sep 2018 15:17:32 +0000 (17:17 +0200)]
i386.h (enum reg_class): Remove FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS.

* config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
and FP_SECOND_SSE_REGS.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Ditto.
* config/i386/i386.c (ix86_preferred_reload_class) Do not handle
FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes.
(ix86_preferred_output_reload_class): Ditto.
* config/i386/i386.md (fix_trunc<mode>_i387_fisttp): Change "=&1f"
clobber constraint to "=&f".
(fix_truncdi_i387): Ditto.
(lrintxfdi2): Ditto.
(fistdi2_<rounding>): Ditto.
(fpremxf4_i387): Change "=u" constraint to "=f".
(fprem1xf4_i387): Ditto.
(sincosxf3): Ditto.
(fptanxf4_i387): Ditto.
(fxtractxf3_i387): Ditto.
(fscalexf4_i387): Ditto.
(atan2xf3): Change "u" constraint to "f".
(fyl2xxf3_i387): Ditto.
(fyl2xp1xf3_i387): Ditto.

From-SVN: r264648

6 years agosyscall: don't assume we have a GETEUID system call
Ian Lance Taylor [Wed, 26 Sep 2018 15:17:30 +0000 (15:17 +0000)]
syscall: don't assume we have a GETEUID system call

    On Alpha GNU/Linux there is no geteuid system call, there is only
    getresuid.  The raw geteuid system call is only used for testing, so
    just skip the test if it's not available.

    Reviewed-on: https://go-review.googlesource.com/137655

From-SVN: r264647

6 years ago* ChangeLog: Add missing PR number.
Uros Bizjak [Wed, 26 Sep 2018 15:00:00 +0000 (17:00 +0200)]
* ChangeLog: Add missing PR number.

From-SVN: r264646

6 years agore PR target/87439 (ICE in ix86_mode_needed, at config/i386/i386.c:18907)
Uros Bizjak [Wed, 26 Sep 2018 14:55:59 +0000 (16:55 +0200)]
re PR target/87439 (ICE in ix86_mode_needed, at config/i386/i386.c:18907)

PR target/87439
* config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
for removed I387_MASK_PM entity.

From-SVN: r264645

6 years agoRevert
Jeff Law [Wed, 26 Sep 2018 14:50:03 +0000 (08:50 -0600)]
Revert
2018-09-26  Alexey Neyman  <stilor@att.net>

* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

From-SVN: r264644

6 years agore PR debug/87443 (GCC mixes abstract and concrete instances in abstract origins...
Richard Biener [Wed, 26 Sep 2018 14:35:48 +0000 (14:35 +0000)]
re PR debug/87443 (GCC mixes abstract and concrete instances in abstract origins for inlines)

2018-09-26  Richard Biener  <rguenther@suse.de>

PR debug/87443
* dwarf2out.c (gen_lexical_block_die): Do not equate inline
or concrete instance DIE to the tree.  Create abstract origin
attributes also for concrete instances.

* gcc.dg/debug/dwarf2/inline5.c: New testcase.

From-SVN: r264643

6 years agographite.h: Include <isl/id.h> and <isl/space.h>...
Alexey Neyman [Wed, 26 Sep 2018 14:09:03 +0000 (14:09 +0000)]
graphite.h: Include <isl/id.h> and <isl/space.h>...

* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

From-SVN: r264642

6 years agoIgnore chmod errors during mostlyclean-local, check-go-tool
Rainer Orth [Wed, 26 Sep 2018 12:56:09 +0000 (12:56 +0000)]
Ignore chmod errors during mostlyclean-local, check-go-tool

* Makefile.am (mostlyclean-local): Ignore chmod errors.
(check-go-tool): Likewise.
* Makefile.in: Regenerate.

From-SVN: r264641

6 years ago[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL
Martin Jambor [Wed, 26 Sep 2018 11:58:18 +0000 (13:58 +0200)]
[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL

2018-09-26  Martin Jambor  <mjambor@suse.cz>

PR c/87347
c/
* c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
        comment.

testsuite/
* gcc.dg/pr87347.c: New test.

From-SVN: r264640

6 years agore PR c++/71131 ([concepts] Ill-formed code declaring a variable with a template...
Paolo Carlini [Wed, 26 Sep 2018 09:59:56 +0000 (09:59 +0000)]
re PR c++/71131 ([concepts] Ill-formed code declaring a variable with a template concept not rejected)

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71131
* g++.dg/concepts/pr71131.C: New.

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71127
* g++.dg/concepts/pr71127.C: New.

From-SVN: r264639

6 years agore PR c++/67655 ([concepts] expression constraints and variadic expansions)
Paolo Carlini [Wed, 26 Sep 2018 09:23:00 +0000 (09:23 +0000)]
re PR c++/67655 ([concepts] expression constraints and variadic expansions)

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67655
* g++.dg/concepts/pr67655.C: New.

From-SVN: r264638

6 years ago[Ada] SPARK: minor error message enhancement
Elisa Barboni [Wed, 26 Sep 2018 09:20:10 +0000 (09:20 +0000)]
[Ada] SPARK: minor error message enhancement

2018-09-26  Elisa Barboni  <barboni@adacore.com>

gcc/ada/

* sem_prag.adb (Check_Refined_Global_Item): Improve error
message.

From-SVN: r264637