// RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only %s // Just don't crash. #if !defined(RUN1) #define RUN1 struct CXXRecordDecl { CXXRecordDecl(int); }; template <typename T, typename U> T cast(U u) { return reinterpret_cast<T&>(u); } void test1() { cast<float>(1); } #elif !defined(RUN2) #define RUN2 template <typename T> void test2(T) { cast<CXXRecordDecl>(1.0f); } #else void test3() { cast<CXXRecordDecl>(1.0f); test2(1); } #endif