diff options
Diffstat (limited to 'clang/test/CodeGenCXX/debug-info.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/debug-info.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/debug-info.cpp b/clang/test/CodeGenCXX/debug-info.cpp new file mode 100644 index 0000000..33b5278 --- /dev/null +++ b/clang/test/CodeGenCXX/debug-info.cpp @@ -0,0 +1,69 @@ +// RUN: %clang_cc1 -emit-llvm-only -g %s +template<typename T> struct Identity { + typedef T Type; +}; + +void f(Identity<int>::Type a) {} +void f(Identity<int> a) {} +void f(int& a) { } + +template<typename T> struct A { + A<T> *next; +}; +void f(A<int>) { } + +struct B { }; + +void f() { + int B::*a = 0; + void (B::*b)() = 0; +} + +namespace EmptyNameCrash { + struct A { A(); }; + typedef struct { A x; } B; + B x; +} + +// PR4890 +namespace PR4890 { + struct X { + ~X(); + }; + + X::~X() { } +} + +namespace VirtualDtor { + struct Y { + virtual ~Y(); + }; + + Y::~Y() { } +} + +namespace VirtualBase { + struct A { }; + struct B : virtual A { }; + + void f() { + B b; + } +} + +void foo() { + const wchar_t c = L'x'; + wchar_t d = c; +} + +namespace b5249287 { +template <typename T> class A { + struct B; +}; + +class Cls { + template <typename T> friend class A<T>::B; +}; + +Cls obj; +} |