// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only %s -verify -DTEST1
// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only %s -verify -DTEST2 -emit-llvm -o - | FileCheck %s
// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only %s -verify -DTEST3
// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only %s -verify -DTEST4

#ifdef TEST1

class MyClass {
 static void meth();
};
void MyClass::meth() { } // expected-note {{previous}}
extern "C" {
  void _ZN7MyClass4methEv() { } // expected-error {{definition with same mangled name '_ZN7MyClass4methEv' as another definition}}
}

#elif TEST2

// expected-no-diagnostics

// We expect no warnings here, as there is only declaration of _ZN1TD1Ev
// function, no definitions.
extern "C" void _ZN1TD1Ev();
struct T {
  ~T() {}
};

// We expect no warnings here, as there is only declaration of _ZN2nm3abcE
// global, no definitions.
extern "C" {
  int _ZN2nm3abcE;
}

namespace nm {
  float abc = 2;
}
// CHECK: @_ZN2nm3abcE = {{(dso_local )?}}global float

float foo() {
  _ZN1TD1Ev();
// CHECK: call void @_ZN1TD1Ev()
  T t;
// CHECK: call {{.*}} @_ZN1TD1Ev(ptr {{[^,]*}} %t)
  return _ZN2nm3abcE + nm::abc;
}

#elif TEST3

extern "C" void _ZN2T2D2Ev() {}; // expected-note {{previous definition is here}}

struct T2 {
  ~T2() {} // expected-error {{definition with same mangled name '_ZN2T2D2Ev' as another definition}}
};

void foo() {
  _ZN2T2D2Ev();
  T2 t;
}

#elif TEST4

extern "C" {
  int _ZN2nm3abcE = 1; // expected-note {{previous definition is here}}
}

namespace nm {
  float abc = 2; // expected-error {{definition with same mangled name '_ZN2nm3abcE' as another definition}}
}

float foo() {
  return _ZN2nm3abcE + nm::abc;
}

#else

#error Unknown test

#endif

