Информация об изменениях

Сообщение Re[16]: Когда это наконец станет defined behavior? от 28.04.2023 20:29

Изменено 28.04.2023 20:32 T4r4sB

Re[16]: Когда это наконец станет defined behavior?
Здравствуйте, rg45, Вы писали:

TB>>Лол это и называется уб


R>Я думаю, тебе не помешало бы разобраться с такими понятиями как undefined behavior, unspecified behavior и implementation defined behavior.


То, от чего меняется логика при оптимизации — это как раз undefined behavior.

R>То есть, порядок выполнения операций (ассоциативность) и порядок вычисления операндов (подвыражений) — это две разные и независимые вещи.


Да, мой изначальный пример был плох, потому что зависел от порядка вычисления операндов.
Я уже исправил.
int bar();

int foo(const int& a) {
  int ll = a;
  int l = ll + bar();
  return l + a;
}

Так вот, почему гцц ссыт убрать лишнее чтение из памяти?
Re[16]: Когда это наконец станет defined behavior?
Здравствуйте, rg45, Вы писали:

TB>>Лол это и называется уб


R>Я думаю, тебе не помешало бы разобраться с такими понятиями как undefined behavior, unspecified behavior и implementation defined behavior.


То, от чего меняется логика при оптимизации — это как раз undefined behavior.
Что и написано по твоей ссылке, целый раздел есть "UB and optimization".

R>То есть, порядок выполнения операций (ассоциативность) и порядок вычисления операндов (подвыражений) — это две разные и независимые вещи.


Да, мой изначальный пример был плох, потому что зависел от порядка вычисления операндов.
Я уже исправил.
int bar();

int foo(const int& a) {
  int ll = a;
  int l = ll + bar();
  return l + a;
}

Так вот, почему гцц ссыт убрать лишнее чтение из памяти?