| // 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 |