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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2020-02-10
     Ever confirmed|0                           |1

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The generated inline-asm looks correct for both x86_64 and AARCH64.
There is a warning too for x86_64:
# 4 "t1.cc" 1
t1.cc: In function ‘int main()’:
t1.cc:6:1: warning: unsupported size for integer register
    6 | }
      | ^


The generated code is:
        movq    .LC0(%rip), %rax
        movq    .LC0+8(%rip), %rdx
#APP
# 4 "t1.cc" 1
        //%rax
# 0 "" 2
#NO_APP
        movsbl  %al, %eax

here the reference is stabilized.


>Changing the '+' modifier to '=' turns it into an uninitialized register read. 
> See the attachment for details.

Yes because it is saying you are writing the whole field and not reading from
it at all.  Using the wrong modifier and the wrong constraints can do that.

The documentation for '=' is:
Means that this operand is written to by this instruction: the previous value
is discarded and replaced by new data.

What did you think was correct?

Reply via email to