On Mon, Mar 02, 2026 at 02:39:39PM +0100, Torbjörn SVENSSON wrote:
> Changes since v1:
> 
> - Adjust the inline assembler to also work for Cortex-M.
> - Droped dg-skip-if.
> 
> Tested on top of r16-7367-g7b2e9d01d325f0 for arm-none-eabi and 
> x86_64-pc-linux-gnu with success.
> 
> Ok for trunk?
> 
> --
> 
> gcc/testsuite/ChangeLog:
> 
>       PR testsuite/124320
>       * gcc.dg/lto/toplevel-extended-asm-1_0.c: Adjust inline
>       assembler for arm-none-eabi.

This is wrong.
You shouldn't provide two separate inline asms that claim
to define the same function, it will cause havoc with cgraph/LTO etc.
For #ifdef __ELF__, you should simply add that .type directive to the
asm templates of the existing inline asms.

Also, not sure if the second operand (i.e. function without @ or % in
front of it) is accepted by all ELF assemblers.

config/aarch64/aarch64-elf.h:#undef TYPE_OPERAND_FMT
config/aarch64/aarch64-elf.h:#define TYPE_OPERAND_FMT   "%%%s"
config/arc/arc.h:#undef  TYPE_OPERAND_FMT
config/arc/arc.h:#define TYPE_OPERAND_FMT       "@%s"
config/arm/elf.h:   TYPE_OPERAND_FMT.  */
config/arm/elf.h:#undef  TYPE_OPERAND_FMT
config/arm/elf.h:#define TYPE_OPERAND_FMT       "%%%s"
config/elfos.h:#define TYPE_OPERAND_FMT "@%s"
config/microblaze/microblaze.h:#define TYPE_OPERAND_FMT         "@%s"
config/microblaze/microblaze.h:    fprintf (FILE, TYPE_OPERAND_FMT, "object");  
                        \
config/openbsd.h:#undef TYPE_OPERAND_FMT
config/openbsd.h:#define TYPE_OPERAND_FMT       "@%s"
config/pa/pa64-hpux.h:  fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);               
        \
config/rx/linux.h:      fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);               
                \
config/rx/rx.h:      fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);                  
        \
config/sparc/sysv4.h:#undef TYPE_OPERAND_FMT
config/sparc/sysv4.h:#define TYPE_OPERAND_FMT      "#%s"

        Jakub

Reply via email to