История изменений
Исправление
ckotinko,
(текущая версия)
:
там 100% баг. я не могу его изолировано повторить, но «в сумме» в результате видимо инлайнинга уничтожается И. причем уничтожается жёстко. а кстати я даже догадывась отчего. gcc видит первое И в инлайновой функции, и видит второе И в функции не-инлайновой. походу он инлайнит вторую функцию хотя бы частично и удаляет оттуда второе и. вторая функция живет только в cpp файле и наружу не торчит.
f(g(h()))
если в f и h используется И то оно каким-то хером пролезает сквозь оптимизацию intов и уничтожается несмотря на операции в g
gcc походу делает перестановки операций сложения и логических. вот гнида.
Исправление
ckotinko,
:
там 100% баг. я не могу его изолировано повторить, но «в сумме» в результате видимо инлайнинга уничтожается И. причем уничтожается жёстко. а кстати я даже догадывась отчего. gcc видит первое И в инлайновой функции, и видит второе И в функции не-инлайновой. походу он инлайнит вторую функцию хотя бы частично и удаляет оттуда второе и. вторая функция живет только в cpp файле и наружу не торчит.
f(g(h()))
если в f и h используется И то оно каким-то хером пролезает сквозь оптимизацию intов и уничтожается несмотря на операции в g
Исправление
ckotinko,
:
там 100% баг. я не могу его изолировано повторить, но «в сумме» в результате видимо инлайнинга уничтожается И. причем уничтожается жёстко. а кстати я даже догадывась отчего. gcc видит первое И в инлайновой функции, и видит второе И в функции не-инлайновой. походу он инлайнит вторую функцию хотя бы частично и удаляет оттуда второе и. вторая функция живет только в cpp файле и наружу не торчит.
Исходная версия
ckotinko,
:
там 100% баг. я не могу его изолировано повторить, но «в сумме» в результате видимо инлайнинга уничтожается И. причем уничтожается жёстко. а кстати я даже догадывась отчего. gcc видит первое И в инлайновой функции, и видит второе И в функции не-инлайновой. походу он инлайнит вторую функцию хотя бы частично и удаляет оттуда второе и.