LINUX.ORG.RU

История изменений

Исправление 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 видит первое И в инлайновой функции, и видит второе И в функции не-инлайновой. походу он инлайнит вторую функцию хотя бы частично и удаляет оттуда второе и.