Есть ли способ сказать clang, чтобы развернуть конкретный цикл?
Googling для ответа дает мне параметры командной строки, которые влияют на весь компилятор, а не на один цикл.
Аналогичный вопрос для GCC --- Сообщить gcc о том, чтобы развернуть цикл --- но предоставленный там ответ не работает с clang.
Вариант 1 предложил там:
#pragma GCC optimize ("unroll-loops")
кажется, молча игнорируется. Фактически
#pragma GCC akjhdfkjahsdkjfhskdfhd
также игнорируется.
Вариант 2:
__attribute__((optimize("unroll-loops")))
выводится предупреждение:
warning: unknown attribute 'optimize' ignored [-Wattributes]
Обновление
joshuanapoli обеспечивает хорошее решение для итерации с помощью метапрограммирования шаблонов и С++ 11 без создания цикла. Конструкция будет разрешена во время компиляции, что приведет к многократно наложенному телу. Хотя это не совсем ответ на вопрос, он по сути достигает того же.
Вот почему я принимаю ответ. Однако, если вам известно, как использовать стандартный цикл C (for
, while
) и заставить его развернуть - пожалуйста, поделитесь знаниями с нами!