1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only %s 2*67e74705SXin Li 3*67e74705SXin Li template<typename T, int N> 4*67e74705SXin Li struct X0 { f0X05*67e74705SXin Li const char *f0(bool Cond) { 6*67e74705SXin Li return Cond? "honk" : N; 7*67e74705SXin Li } 8*67e74705SXin Li f1X09*67e74705SXin Li const char *f1(bool Cond) { 10*67e74705SXin Li return Cond? N : "honk"; 11*67e74705SXin Li } 12*67e74705SXin Li f2X013*67e74705SXin Li bool f2(const char *str) { 14*67e74705SXin Li return str == N; 15*67e74705SXin Li } 16*67e74705SXin Li }; 17*67e74705SXin Li 18*67e74705SXin Li // PR4996 f0()19*67e74705SXin Litemplate<unsigned I> int f0() { 20*67e74705SXin Li return __builtin_choose_expr(I, 0, 1); 21*67e74705SXin Li } 22*67e74705SXin Li 23*67e74705SXin Li // PR5041 24*67e74705SXin Li struct A { }; 25*67e74705SXin Li f(T * t)26*67e74705SXin Litemplate <typename T> void f(T *t) 27*67e74705SXin Li { 28*67e74705SXin Li (void)static_cast<void*>(static_cast<A*>(t)); 29*67e74705SXin Li } 30