asm-block-68.c   [plain text]


/* APPLE LOCAL file CW asm blocks */
/* { dg-do assemble { target i?86*-*-darwin* } } */
/* { dg-options { -fasm-blocks } } */
/* <rdar://problem/7763139> */

#include <stdio.h>

#if !__x86_64__ && !__i386__
#error compile with -arch x86_64 or -arch i386
#endif

int main()
{
  float a = 1.0;
  float *aPtr = NULL;
  double b = 2.0;
  double *bPtr = NULL;
  
  __asm__
    {
#if __x86_64__
        lea     rax,a
	mov     aPtr,rax
	lea     rax,b
	mov     bPtr,rax
#elif __i386__
	lea     eax,a
	mov     aPtr,eax
	lea     eax,b
	mov     bPtr,eax
#endif
	}
  
  printf("a: %f, b: %lf\n", *aPtr, *bPtr);
  
  return 0;
}