[Bug target/105814] 16 "=rm" use in inline-asm is rejected at -O0

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jun 2 04:29:54 GMT 2022


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|operand has impossible      |16 "=rm" use in inline-asm
                   |constraints - worked with   |is rejected at -O0
                   |previous releases           |

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reduced testcase:
```
void collect_regs(unsigned long *regs)
{
 __asm__ __volatile__(""
   :"=rm"(regs[0]), "=rm"(regs[1]), "=rm"(regs[2]), "=rm"(regs[3]),
"=rm"(regs[4]), "=rm"(regs[5]), "=rm"(regs[6]), "=rm"(regs[7]),
    "=rm"(regs[8]), "=rm"(regs[9]), "=rm"(regs[10]), "=rm"(regs[11]),
"=rm"(regs[12]), "=rm"(regs[13]), "=rm"(regs[14]), "=rm"(regs[15]));
}
```

This fails only at -O0. at -O1 it works. clang even rejects it at -O0 too.


More information about the Gcc-bugs mailing list