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