• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -fblocks -debug-info-kind=limited -gcodeview -emit-llvm %s -o - -triple=x86_64-pc-win32 -std=c++98 | \
2 // RUN:  grep 'DISubprogram' | sed -e 's/.*name: "\([^"]*\)".*/"\1"/' | FileCheck %s
3 
freefunc()4 void freefunc() { }
5 // CHECK-DAG: "freefunc"
6 
7 namespace N {
b()8   int b() { return 0; }
9 // CHECK-DAG: "N::b"
func()10   namespace { void func() { } }
11 // CHECK-DAG: "N::`anonymous namespace'::func
12 }
13 
_c(void)14 void _c(void) {
15   N::func();
16 }
17 // CHECK-DAG: "_c"
18 
19 struct foo {
20   int operator+(int);
foofoo21   foo(){}
22 // CHECK-DAG: "foo::foo"
23 
~foofoo24   ~foo(){}
25 // CHECK-DAG: "foo::~foo"
26 
foofoo27   foo(int i){}
28 // CHECK-DAG: "foo::foo"
29 
foofoo30   foo(char *q){}
31 // CHECK-DAG: "foo::foo"
32 
static_methodfoo33   static foo* static_method() { return 0; }
34 // CHECK-DAG: "foo::static_method"
35 
36 };
37 
use_foo()38 void use_foo() {
39   foo f1, f2(1), f3((char*)0);
40   foo::static_method();
41 }
42 
43 // CHECK-DAG: "foo::operator+"
operator +(int a)44 int foo::operator+(int a) { return a; }
45 
46 // PR17371
47 struct OverloadedNewDelete {
48   // __cdecl
49   void *operator new(__SIZE_TYPE__);
50   void *operator new[](__SIZE_TYPE__);
51   void operator delete(void *);
52   void operator delete[](void *);
53   // __thiscall
54   int operator+(int);
55 };
56 
operator new(__SIZE_TYPE__ s)57 void *OverloadedNewDelete::operator new(__SIZE_TYPE__ s) { return 0; }
operator new[](__SIZE_TYPE__ s)58 void *OverloadedNewDelete::operator new[](__SIZE_TYPE__ s) { return 0; }
operator delete(void *)59 void OverloadedNewDelete::operator delete(void *) { }
operator delete[](void *)60 void OverloadedNewDelete::operator delete[](void *) { }
operator +(int x)61 int OverloadedNewDelete::operator+(int x) { return x; };
62 
63 // CHECK-DAG: "OverloadedNewDelete::operator new"
64 // CHECK-DAG: "OverloadedNewDelete::operator new[]"
65 // CHECK-DAG: "OverloadedNewDelete::operator delete"
66 // CHECK-DAG: "OverloadedNewDelete::operator delete[]"
67 // CHECK-DAG: "OverloadedNewDelete::operator+"
68 
69 template <void (*)(void)>
fn_tmpl()70 void fn_tmpl() {}
71 
72 template void fn_tmpl<freefunc>();
73 // CHECK-DAG: "fn_tmpl"
74