-
- Как я понял, компилер пытается подложить самую оптимальную версию
memcpy основываясь на своём представлении о прекрасном. И иногда
эвристика слишком оптимистична. - LightElf(31.07.2023 00:14)
- Если не забыть расставить volatile, где требуется, проблем не
будет. Просто компиляторы становятся более совершенными и
оптимизируют больше, чем программист мог себе это представить, но
не больше, чем позволяет выбранный стандарт. - Nikolay_Po(31.07.2023 00:45)
- Не, там не в volatile дело было. Там именно компилятор терял
информацию о типе и делал неверные предположения о выровненности
указателя. LightElf(141 знак., 31.07.2023 01:14)
- "...компилятор терял информацию о типе и делал неверные
предположения о выровненности указателя" - думаю, что именно из-за
того, что указатель был слишком изменчив (слишком волатилен), за
пределами контекста секции кода. Nikolay_Po(27 знак., 31.07.2023 07:47)
- volatile - это совсем не про это - SciFi(31.07.2023 07:50)
- Не удивлюсь, что про всё. Оптимизации случаются весьма и весьма изощрённые. Если, в контексте, обычный указатель меняется только с шагом двойного слова, то компилятор имеет право считать указатель выровненным. И, если программист, не объявив указатель volatile, вне контекста, прирастит эту переменную на байт - жди беды. - Nikolay_Po(31.07.2023 07:54)
- volatile - это совсем не про это - SciFi(31.07.2023 07:50)
- "...компилятор терял информацию о типе и делал неверные
предположения о выровненности указателя" - думаю, что именно из-за
того, что указатель был слишком изменчив (слишком волатилен), за
пределами контекста секции кода. Nikolay_Po(27 знак., 31.07.2023 07:47)
- Не, там не в volatile дело было. Там именно компилятор терял
информацию о типе и делал неверные предположения о выровненности
указателя. LightElf(141 знак., 31.07.2023 01:14)
- Если не забыть расставить volatile, где требуется, проблем не
будет. Просто компиляторы становятся более совершенными и
оптимизируют больше, чем программист мог себе это представить, но
не больше, чем позволяет выбранный стандарт. - Nikolay_Po(31.07.2023 00:45)
- Как я понял, компилер пытается подложить самую оптимальную версию
memcpy основываясь на своём представлении о прекрасном. И иногда
эвристика слишком оптимистична. - LightElf(31.07.2023 00:14)