[Bug target/50883] [ARM] Suboptimal optimization for small structures

sebastian.huber@embedded-brains.de gcc-bugzilla@gcc.gnu.org
Fri Feb 4 16:29:35 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50883

--- Comment #18 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
clang 11 produces this code for the attached test case:

clang -O2 -S -o - pr50883.c -target arm 
clang-11.0: warning: unknown platform, assuming -mfloat-abi=soft
clang-11.0: warning: unknown platform, assuming -mfloat-abi=soft
        .text
        .syntax unified
        .eabi_attribute 67, "2.09"      @ Tag_conformance
        .cpu    arm7tdmi
        .eabi_attribute 6, 2    @ Tag_CPU_arch
        .eabi_attribute 8, 1    @ Tag_ARM_ISA_use
        .eabi_attribute 9, 1    @ Tag_THUMB_ISA_use
        .eabi_attribute 34, 0   @ Tag_CPU_unaligned_access
        .eabi_attribute 17, 1   @ Tag_ABI_PCS_GOT_use
        .eabi_attribute 20, 1   @ Tag_ABI_FP_denormal
        .eabi_attribute 21, 0   @ Tag_ABI_FP_exceptions
        .eabi_attribute 23, 3   @ Tag_ABI_FP_number_model
        .eabi_attribute 24, 1   @ Tag_ABI_align_needed
        .eabi_attribute 25, 1   @ Tag_ABI_align_preserved
        .eabi_attribute 38, 1   @ Tag_ABI_FP_16bit_format
        .eabi_attribute 18, 4   @ Tag_ABI_PCS_wchar_t
        .eabi_attribute 26, 2   @ Tag_ABI_enum_size
        .eabi_attribute 14, 0   @ Tag_ABI_PCS_R9_use
        .file   "pr50883.c"
        .globl  f                               @ -- Begin function f
        .p2align        2
        .type   f,%function
        .code   32                              @ @f
f:
        .fnstart
@ %bb.0:
        mov     r0, r1
        bx      lr
.Lfunc_end0:
        .size   f, .Lfunc_end0-f
        .cantunwind
        .fnend
                                        @ -- End function
        .globl  g                               @ -- Begin function g
        .p2align        2
        .type   g,%function
        .code   32                              @ @g
g:
        .fnstart
@ %bb.0:
        mov     r0, r1
        bx      lr
.Lfunc_end1:
        .size   g, .Lfunc_end1-g
        .cantunwind
        .fnend
                                        @ -- End function
        .globl  h                               @ -- Begin function h
        .p2align        2
        .type   h,%function
        .code   32                              @ @h
h:
        .fnstart
@ %bb.0:
        ldr     r1, .LCPI2_0
        ldm     r1, {r0, r1}
        b       j
        .p2align        2
@ %bb.1:
.LCPI2_0:
        .long   ss
.Lfunc_end2:
        .size   h, .Lfunc_end2-h
        .cantunwind
        .fnend
                                        @ -- End function
        .globl  i                               @ -- Begin function i
        .p2align        2
        .type   i,%function
        .code   32                              @ @i
i:
        .fnstart
@ %bb.0:
        ldr     r1, .LCPI3_0
        ldm     r1, {r0, r1}
        b       k
        .p2align        2
@ %bb.1:
.LCPI3_0:
        .long   tt
.Lfunc_end3:
        .size   i, .Lfunc_end3-i
        .cantunwind
        .fnend
                                        @ -- End function
        .ident  "clang version 11.0.1"
        .section        ".note.GNU-stack","",%progbits
        .addrsig


More information about the Gcc-bugs mailing list