/* { dg-do compile } */
/* { dg-options "-mpure-code -mfp16-format=ieee" } */
/* { dg-skip-if "" { *-*-* } { "-g" "-fpic" "-fPIC" } { "" } } */

__fp16 hf;
float sf;
double df;
long long l;
static char *p = "Hello World";

__fp16
testsfp16 (__fp16 *p)
{
  hf = 1.3;
  *p += hf;
  if (*p > 1.1234f)
    return 2.1234f;
  else
    return 3.1234f;
}

float
testsf (float *p)
{
  if (*p > 1.1234f)
    return 2.1234f;
  else
    return 3.1234f;
}

double
testdf (double *p)
{
  if (*p > 4.1234)
    return 2.1234;
  else
    return 3.1234;
}

long long
testll (long long *p)
{
  if (*p > 0x123456789ABCDEFll)
    return 0x111111111ll;
  else
    return 0x222222222ll;
}

char *
testchar ()
{
  return p + 4;
}

int
foo (int a, int b)
{
  int i;
  volatile int *labelref = &&label1;

  if (a > b)
    {
      while (i < b)
	{
	  a += *labelref;
	  i += 1;
	}
      goto *labelref;
    }
  else
    b = b + 3;

  a = a * b;

label1:
  return a + b;
}

/* { dg-final { scan-assembler-not "\\.(float|l\\?double|\d?byte|short|int|long|quad|word)\\s+\[^.\]" } } */
/* { dg-final { scan-assembler "text,\"0x20000006\"" } } */
