1bb09ef95SLouis Dionne //===----------------------------------------------------------------------===// 2bb09ef95SLouis Dionne // 3bb09ef95SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4bb09ef95SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5bb09ef95SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6bb09ef95SLouis Dionne // 7bb09ef95SLouis Dionne //===----------------------------------------------------------------------===// 8bb09ef95SLouis Dionne 9f9e70fa5SLouis Dionne // Make sure the TEST_HAS_NO_RTTI macro is defined when the no-rtti Lit feature 10bb09ef95SLouis Dionne // is defined. 11bb09ef95SLouis Dionne 12f9e70fa5SLouis Dionne // REQUIRES: no-rtti 13bb09ef95SLouis Dionne 14bb09ef95SLouis Dionne #include "test_macros.h" 15bb09ef95SLouis Dionne 16bb09ef95SLouis Dionne #ifndef TEST_HAS_NO_RTTI 17bb09ef95SLouis Dionne # error "TEST_HAS_NO_RTTI should be defined" 18bb09ef95SLouis Dionne #endif 19bb09ef95SLouis Dionne ~AA20bb09ef95SLouis Dionnestruct A { virtual ~A() { } }; 21bb09ef95SLouis Dionne struct B : A { }; 22bb09ef95SLouis Dionne f()23*72f0edf3SLouis Dionnevoid f() { 24bb09ef95SLouis Dionne A* ptr = new B; 25bb09ef95SLouis Dionne (void)dynamic_cast<B*>(ptr); // expected-error{{use of dynamic_cast requires -frtti}} 26bb09ef95SLouis Dionne } 27