Кланг действительно такой умный?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Кланг действительно такой умный?

Сообщение Anonymous »

Если я составляю следующий код с Clang 3.3, используя -O3 -fno -vectorize , я получаю тот же вывод сборки, даже если я удаляю закомментированную строку. Тип кода калает все возможные 32-разрядные целые числа, чтобы плавать и считает те, которые в диапазоне [0, 1]. Является ли оптимизатор Clang на самом деле достаточно умным, чтобы понять, что 0xffffffff, когда Pan Panled Float не находится в диапазоне [0, 1], так что игнорируйте второй вызов fn полностью? GCC создает другой код, когда второй вызов удаляется.

Код: Выделить всё

#include 
#include 
#include 

template 
inline TO punning_cast(const FROM &input)
{
TO out;
std::memcpy(&out, &input, sizeof(TO));
return out;
}

int main()
{
uint32_t count = 0;

auto fn = [&count] (uint32_t x) {
float f = punning_cast(x);
if (f >= 0.0f && f 

Подробнее здесь: [url]https://stackoverflow.com/questions/23926075/is-clang-really-this-smart[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»