1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -std=c++11 -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s
2d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregor
3d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregortemplate<int *ip> struct IP {};
4d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregor
593ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z5test12IPILPi0EE
6d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregorvoid test1(IP<nullptr>) {}
7d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregor
8d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregorstruct X{ };
9d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregortemplate<int X::*pm> struct PM {};
10d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregor
1193ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z5test22PMILM1Xi0EE
12d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregorvoid test2(PM<nullptr>) { }
13d2008e2c80d6c9282044ec873a937a17a0f33579Douglas Gregor
1493ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z5test316DependentTypePtrIPiLS0_0EE
15d7a6b1640e565487d163023a6a2e83f55476ae96Eli Friedmantemplate<typename T, T x> struct DependentTypePtr {};
16d7a6b1640e565487d163023a6a2e83f55476ae96Eli Friedmanvoid test3(DependentTypePtr<int*,nullptr>) { }
17