strict aliasing и реальные компиляторы

221
27 ноября 2017, 18:51

Сразу же оговорюсь: я уважаю стандарт :)
"Закон есть закон" (с) Фердинанд Пасторелли

Тем не менее - насколько это серьезно в реальной жизни? Хочется посмотреть на конкретные примеры, где нарушение strict aliasing реально приводит к неприятностям, причем желательно не запутанные примеры с передачей трех разных указателей на одно и то же место в памяти в одну функцию, а что-то типа обнуления массива char через long long?

Еще раз прошу не подозревать в том, что я хочу получить ответ и на его основании наехать на стандарт :)

Answer 1

Вот пример:

char const * test(char const * p_data)
{
    reinterpret_cast< int const * & >(p_data) += 1; // пропускаем 4 байта
    return(p_data);
}

-O3

mov rax, rdi

ret

-O3 -fno-strict-aliasing

lea rax, [rdi+4]

ret

Online compiler

READ ALSO
Заголовочный файл для структур C++

Заголовочный файл для структур C++

Как создать правильно создать заголовочный файл для структур? Пытаюсь так, не выходит: structuresh

235
Задача на массивы по OpenMP

Задача на массивы по OpenMP

Написать программу, в которой объявлен массив из 16000 элементов и инициализирован так, что значение элемента массива равно его порядковому...

394
List C++ Не выводит список

List C++ Не выводит список

Вот,учу списки, и не понимаю почему не выводит отсортированный список

282
Посчитать сумму чисел в каждой строке файла

Посчитать сумму чисел в каждой строке файла

Имеется текстовый файл, содержащий действительные числаКоличество чисел в строке может быть любым, количество строк, не превосходит 100

211