------- Comment #5 from thutt at vmware dot com  2009-01-21 13:06 -------
(In reply to comment #2)
> I think this code is undefined as you are using uninitialized variables for
> input of the inline-asm.
> 

I disagree.  

The registers are intended to have their *current*
values saved across the 'vmrun' instruction.  Since it's
not possible to specify registers R8 through R15 in constraints, bug  
16331 suggests this obtuse workaround.

The intent of this code is twofold: demonstrate the assginment of 
two variables to '%rbp' and to show that it's not possible to 
show clobber an arbitrary set of registers.  It does both well.

Furthermore, if you'd take the code and compile with all the initializations,
in place, you would have seen that it makes no difference whatsoever: two
variables are assigned to '%rbp', just the same.

But, all the initializations also make the code incorrect: the point is to
either save all the registers across the 'vmrun' instruction, or to
clearly indicate to the compiler that all the registers are clobbered 
at the end of the 'vmrun' instruction.


-- 

thutt at vmware dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|inline-asm                  |c


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38925

Reply via email to