193c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify %s 293c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman 393c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman// Make sure diagnostics that we don't print based on runtime control 493c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman// flow are delayed correctly in cases where we can't immediately tell whether 593c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman// the context is unevaluated. 693c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman 793c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmannamespace std { 893c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman class type_info; 993c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman} 1093c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman 1193c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmanint& NP(int); 1293c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmanvoid test1() { (void)typeid(NP(1 << 32)); } 1393c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman 1493c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmanclass Poly { virtual ~Poly(); }; 1593c878ee093f2a233c32b29f074e6a3f511e333fEli FriedmanPoly& P(int); 1693c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmanvoid test2() { (void)typeid(P(1 << 32)); } // expected-warning {{shift count >= width of type}} 1793c878ee093f2a233c32b29f074e6a3f511e333fEli Friedman 1893c878ee093f2a233c32b29f074e6a3f511e333fEli Friedmanvoid test3() { 1 ? (void)0 : (void)typeid(P(1 << 32)); } 19