Compiler projects using llvm
// RUN: %clang_cc1 -triple x86_64-unk-unk -o - -emit-llvm -debug-info-kind=limited %s | FileCheck %s
// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -o - -emit-llvm -debug-info-kind=limited %s | FileCheck %s

// PR3023
void convert(void) {
  struct { typeof(0) f0; } v0;
}


// PR2784
struct OPAQUE; // CHECK-DAG: DW_TAG_structure_type, name: "OPAQUE"
typedef struct OPAQUE *PTR;
PTR p;


// PR2950
struct s0;
struct s0 { struct s0 *p; } g0;

struct s0 *f0(struct s0 *a0) {
  return a0->p;
}


// PR3134
char xpto[];


// PR3427
struct foo {
  int a;
  void *ptrs[];
};
struct foo bar;


// PR4143
struct foo2 {
  enum bar *bar;
};

struct foo2 foo2;


// Radar 7325611
// CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "barfoo"
typedef int barfoo;
barfoo foo(void) {
}

// CHECK-DAG: __uint128_t
__uint128_t foo128 (void)
{
  __uint128_t int128 = 44;
  return int128;
}

// CHECK-DAG: uint64x2_t
typedef unsigned long long uint64_t;
typedef uint64_t uint64x2_t __attribute__((ext_vector_type(2)));
uint64x2_t extvectbar[4];

// CHECK-DAG: !DIBasicType(name: "long"
// CHECK-DAG: !DIBasicType(name: "unsigned long long"
void integral_types(long x, unsigned long long y) {
}