1186ca60eSEric Fiselier //===----------------------------------------------------------------------===// 2186ca60eSEric Fiselier // 3186ca60eSEric Fiselier // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4186ca60eSEric Fiselier // See https://llvm.org/LICENSE.txt for license information. 5186ca60eSEric Fiselier // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6186ca60eSEric Fiselier // 7186ca60eSEric Fiselier //===----------------------------------------------------------------------===// 8*480cd780SLouis Dionne 9186ca60eSEric Fiselier #ifndef TEST_SUPPORT_TEMPLATE_COST_TESTING_H 10186ca60eSEric Fiselier #define TEST_SUPPORT_TEMPLATE_COST_TESTING_H 11186ca60eSEric Fiselier 12186ca60eSEric Fiselier // This file contains macros used to repeat an expression many times. 13186ca60eSEric Fiselier // This is useful for testing the compile time and memory usage 14186ca60eSEric Fiselier // of templates. 15186ca60eSEric Fiselier 16186ca60eSEric Fiselier #define REPEAT_10(DO_IT) \ 17186ca60eSEric Fiselier DO_IT() DO_IT() DO_IT() DO_IT() DO_IT() \ 18186ca60eSEric Fiselier DO_IT() DO_IT() DO_IT() DO_IT() DO_IT() 19186ca60eSEric Fiselier #define REPEAT_100(DO_IT) \ 20186ca60eSEric Fiselier REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) \ 21186ca60eSEric Fiselier REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) REPEAT_10(DO_IT) 22186ca60eSEric Fiselier #define REPEAT_200(DO_IT) \ 23186ca60eSEric Fiselier REPEAT_100(DO_IT) REPEAT_100(DO_IT) 24186ca60eSEric Fiselier #define REPEAT_300(DO_IT) \ 25186ca60eSEric Fiselier REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) 26186ca60eSEric Fiselier #define REPEAT_500(DO_IT) \ 27186ca60eSEric Fiselier REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) 28186ca60eSEric Fiselier #define REPEAT_1000(DO_IT) \ 29186ca60eSEric Fiselier REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) \ 30186ca60eSEric Fiselier REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) REPEAT_100(DO_IT) 31186ca60eSEric Fiselier #define REPEAT_5000(DO_IT) \ 32186ca60eSEric Fiselier REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) 33186ca60eSEric Fiselier #define REPEAT_10000(DO_IT) \ 34186ca60eSEric Fiselier REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) \ 35186ca60eSEric Fiselier REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) REPEAT_1000(DO_IT) 36186ca60eSEric Fiselier 37186ca60eSEric Fiselier #endif // TEST_SUPPORT_TEMPLATE_COST_TESTING_H 38