/* { dg-do compile } */
/* { dg-require-effective-target powerpc_pcrel } */
/* { dg-options "-O2 -mdejagnu-cpu=power10 -mpcrel-opt" } */

#define TYPE	double
#define LARGE	0x20000

/* Test whether we get the right number of PCREL_OPT optimizations for
   double.  */
extern TYPE ext[];

void
store (TYPE a)
{
  ext[0] = a;			/* PCREL_OPT relocation.  */
}

void
store2 (TYPE a)
{
  ext[2] = a;			/* PCREL_OPT relocation.  */
}

void
store_large (TYPE a)
{
  ext[LARGE] = a;		/* No PCREL_OPT (store is prefixed).  */
}

void
store_variable (TYPE a, unsigned long n)
{
  ext[n] = a;			/* No PCREL_OPT (store is indexed).  */
}

/* { dg-final { scan-assembler-times "R_PPC64_PCREL_OPT"  2 } } */
