/* CTF forward type is generated for forward declarations of types in C.
   
   Check that the ctf-kind of CTF_K_FOWARD type is CTF_K_STRUCT or CTF_K_UNION.
   For forward types, the compiler encodes the CTF kind in the ctt_type field.
   CTF_K_FORWARD is used as the CTF type as usual in the ctt_info.  */

/* Note - A value of 6 in "ctt_size or ctt_type" appears twice in this
   testcase. This might be misconstrued as  2 CTK_K_FORWARD records of struct
   type.  The second assembler tag is due to a ref type in a CVR CTF record.
   TBD - perhaps a more robust string pattern is needed.  */

/* { dg-do compile )  */
/* { dg-options "-O0 -gctf -dA" } */

/* { dg-final { scan-assembler-times "\[\t \]0x26000000\[\t \]+\[^\n\]*ctt_info" 2 } } */
/* { dg-final { scan-assembler-times "\[\t \]0x6\[\t \]+\[^\n\]*ctt_size or ctt_type" 2 } } */
/* { dg-final { scan-assembler-times "\[\t \]0x7\[\t \]+\[^\n\]*ctt_size or ctt_type" 2 } } */

typedef struct __locale_struct
{
  struct __locale_data *__locales[13]; /* forward struct type.  */

  const int *__ctype_toupper;
  const char *__names[13];
} *__locale_t;

typedef __locale_t locale_t;

locale_t loc;

typedef struct __inter_struct
{
  union __inter_data * __inters[13]; /* forward union type.  */

  const int * __ctype_kind;
} * __inter_t;

typedef __inter_t inter_t;

inter_t inter;
