10a264f39SAlex Lorenz // RUN: env SDKROOT="/" %clang -emit-llvm -S -o %t1.ll -x c++ - < %s
20a264f39SAlex Lorenz // RUN: env SDKROOT="/" %clang -fno-delayed-template-parsing -emit-ast -o %t.ast %s
30a264f39SAlex Lorenz // RUN: env SDKROOT="/" %clang -emit-llvm -S -o %t2.ll -x ast - < %t.ast
4c00f43a3SArgyrios Kyrtzidis // RUN: diff %t1.ll %t2.ll
5c00f43a3SArgyrios Kyrtzidis 
6c00f43a3SArgyrios Kyrtzidis // http://llvm.org/bugs/show_bug.cgi?id=15377
7c00f43a3SArgyrios Kyrtzidis template<typename T>
8c00f43a3SArgyrios Kyrtzidis struct S {
9c00f43a3SArgyrios Kyrtzidis     T *mf();
10c00f43a3SArgyrios Kyrtzidis };
11c00f43a3SArgyrios Kyrtzidis template<typename T>
mf()12c00f43a3SArgyrios Kyrtzidis T *S<T>::mf() {
13*5c50109bSDávid Bolvanský     // warning: non-void function does not return a value [-Wreturn-type]
14c00f43a3SArgyrios Kyrtzidis }
15c00f43a3SArgyrios Kyrtzidis 
f()16c00f43a3SArgyrios Kyrtzidis void f() {
17c00f43a3SArgyrios Kyrtzidis     S<int>().mf();
18c00f43a3SArgyrios Kyrtzidis }
19c00f43a3SArgyrios Kyrtzidis 
main()20c00f43a3SArgyrios Kyrtzidis int main() {
21c00f43a3SArgyrios Kyrtzidis   return 0;
22c00f43a3SArgyrios Kyrtzidis }
23