]> git.ipfire.org Git - people/ms/gcc.git/log
people/ms/gcc.git
3 years agogimple: allow more folding of memcpy [PR102125]
Richard Earnshaw [Fri, 3 Sep 2021 16:06:15 +0000 (17:06 +0100)] 
gimple: allow more folding of memcpy [PR102125]

The current restriction on folding memcpy to a single element of size
MOVE_MAX is excessively cautious on most machines and limits some
significant further optimizations.  So relax the restriction provided
the copy size does not exceed MOVE_MAX * MOVE_RATIO and that a SET
insn exists for moving the value into machine registers.

Note that there were already checks in place for having misaligned
move operations when one or more of the operands were unaligned.

On Arm this now permits optimizing

uint64_t bar64(const uint8_t *rData1)
{
    uint64_t buffer;
    memcpy(&buffer, rData1, sizeof(buffer));
    return buffer;
}

from
        ldr     r2, [r0]        @ unaligned
        sub     sp, sp, #8
        ldr     r3, [r0, #4]    @ unaligned
        strd    r2, [sp]
        ldrd    r0, [sp]
        add     sp, sp, #8

to
        mov     r3, r0
        ldr     r0, [r0]        @ unaligned
        ldr     r1, [r3, #4]    @ unaligned

PR target/102125 - (ARM Cortex-M3 and newer) missed optimization. memcpy not needed operations

gcc/ChangeLog:

PR target/102125
* gimple-fold.c (gimple_fold_builtin_memory_op): Allow folding
memcpy if the size is not more than MOVE_MAX * MOVE_RATIO.

3 years agoarm: expand handling of movmisalign for DImode [PR102125]
Richard Earnshaw [Fri, 3 Sep 2021 15:53:13 +0000 (16:53 +0100)] 
arm: expand handling of movmisalign for DImode [PR102125]

DImode is currently handled only for machines with vector modes
enabled, but this is unduly restrictive and is generally better done
in core registers.

gcc/ChangeLog:

PR target/102125
* config/arm/arm.md (movmisaligndi): New define_expand.
* config/arm/vec-common.md (movmisalign<mode>): Iterate over VDQ mode.

3 years agortl: directly handle MEM in gen_highpart [PR102125]
Richard Earnshaw [Thu, 9 Sep 2021 09:56:01 +0000 (10:56 +0100)] 
rtl: directly handle MEM in gen_highpart [PR102125]

gen_lowpart_general handles forming a lowpart of a MEM by using
adjust_address to rework and validate a new version of the MEM.
Do the same for gen_highpart rather than calling simplify_gen_subreg
for this case.

gcc/ChangeLog:

PR target/102125
* emit-rtl.c (gen_highpart): Use adjust_address to handle
MEM rather than calling simplify_gen_subreg.

3 years agocr16-elf is now obsoleted
Jan-Benedict Glaw [Mon, 13 Sep 2021 10:13:17 +0000 (12:13 +0200)] 
cr16-elf is now obsoleted

As we are still building it for ./contrib/config-list.mk, let's add
--enable-obsolete so this has a chance to work.

contrib/ChangeLog:

* config-list.mk (LIST): --enable-obsolete for cr16-elf.

3 years agoFix multi-statment macro
Content-type: text/html ]> git.ipfire.org Git - people/ms/gcc.git/log


500 - Internal Server Error

Wide character in subroutine entry at /usr/share/gitweb/gitweb.cgi line 2219.