clang: распечатать текущий шаблон в сообщении об ошибке

У меня есть код с #pragma clang loop vectorize(enable), что обеспечивает векторизацию. Для некоторых типов эта векторизация невозможна — пример:

#include <string>
#include <vector>

template <typename T>
void double_entries(std::vector<T>& vec) {
#pragma clang loop vectorize(enable)
for (auto i = 0; i < 100; ++i) vec[i] = vec[i] + vec[i];
}

int main() {
auto char_vector = std::vector<char>{100};
auto string_vector = std::vector<std::string>{100};

double_entries(char_vector);
double_entries(string_vector);
}

https://godbolt.org/z/EgiogQ

Clang дает мне предупреждение об этом:

<source>:7:2: warning: loop not vectorized: failed explicitly specified loop vectorization [-Wpass-failed=loop-vectorize]

for (auto i = 0; i < 100; ++i) vec[i] = vec[i] + vec[i];

^

Это действительно не поможет, если я не знаю, что std::string инициализация double_entries вызывает проблему.

Есть ли способ заставить Clang распечатать все вовлеченные экземпляры шаблонов? Однажды я могу идентифицировать проблемные типы, использующие этот вывод компилятора, я могу просто отключить векторизацию для них.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector