[Bug c/53353] Missing error/warning when using __int128_t with incorrect asm register constraints
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2012-05-15 06:19:51 UTC --- You are wrong. A class contains the ax and dx registers, which means that for say 64-bit value it can give you either %rax, or %rdx, for 128-bit value obviously only %rax:%rdx pair. But r class contains all the non-fixed general purpose registers, so it can give you any pair of consecutive registers. The only classes that can't hold 128-bit values are the single register classes, like a, b, ..., D, S, etc.
[Bug c/53353] Missing error/warning when using __int128_t with incorrect asm register constraints
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353 Andrew Pinski pinskia at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-05-15 01:40:11 UTC --- It fits into two registers, rax and rbx.
[Bug c/53353] Missing error/warning when using __int128_t with incorrect asm register constraints
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353 --- Comment #2 from Steven Fuerst svfuerst at gmail dot com 2012-05-15 01:54:46 UTC --- Obviously a __int128_t fits in two registers. The bug is that gcc doesn't warn/error about code mistakenly trying to fit it into one. Instead, gcc generates a weird 16-bit operation, causing silent bad code generation.
[Bug c/53353] Missing error/warning when using __int128_t with incorrect asm register constraints
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353 --- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-05-15 02:02:23 UTC --- (In reply to comment #2) Obviously a __int128_t fits in two registers. The bug is that gcc doesn't warn/error about code mistakenly trying to fit it into one. Instead, gcc generates a weird 16-bit operation, causing silent bad code generation. It does not know what you want to do? Really it is the ax:dx pair most likely. Also the inline-asm uses internal GCC representation. How does GCC not know the inline-asm did the correct thing of what the user wanted it to do? Hint GCC cannot read your mind to say you made a mistake here.
[Bug c/53353] Missing error/warning when using __int128_t with incorrect asm register constraints
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53353 --- Comment #4 from Steven Fuerst svfuerst at gmail dot com 2012-05-15 02:09:05 UTC --- Actually, it is the rax:rdx pair that is most likely. ax:dx only has 32 bits. rax:rdx is specified by the 'A' constraint, the only gpr option that is 128 bits. (Yes, it would be nice to pass a 128 bit integer in some other pair of registers as an enhancement, but currently only the 'A' constraint works.)