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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Again what is happening is when expanding INTEGER_CST to const_int, the last
bit of precision is extended to all of the rest. This is how const_int works
and has always worked.

PR 85344 is exactly the same issue:
```
void
foo (void)
{
  __asm( "%0" :: "I" ((unsigned char) 0x80));
}
```

Notice `unsigned char` there. 0x80 is then extended to 0xffffff80 as expected
by the rules of RTL and const_int.

*** This bug has been marked as a duplicate of bug 85344 ***

Reply via email to