Комментарии 6
А если вместо
ULONG64 res = fib_tail_x64(40, 0, 1);
написать
ULONG64 res = fib_tail_x64(40ull, 0, 1);
?
ULONG64 res = fib_tail_x64(40, 0, 1);
написать
ULONG64 res = fib_tail_x64(40ull, 0, 1);
?
> нужно обязательно выключать параметр 'Whole Program Optimization' тогда, и только тогда, когда происходит прямой вызов рекурсивной x64 функции
Это все как-то нереально замороченно, так что лучше не закладываться на эту оптимизациюю в реальном проекте. Если я правильно понял, то в debug/release сборках будет разное поведение из-за флагов оптимизаций, получается очень непрактично.
Это все как-то нереально замороченно, так что лучше не закладываться на эту оптимизациюю в реальном проекте. Если я правильно понял, то в debug/release сборках будет разное поведение из-за флагов оптимизаций, получается очень непрактично.
А это не может быть как-то связано с этим флажочком для gcc/clang? Он в x86_64 включен, а в x86 нет.
software.intel.com/en-us/node/512887
software.intel.com/en-us/node/512887
Я, может, сейчас жутко крамольную вещь скажу…
Но не кажется ли, что в ДАННОМ случае вместо массажа опций компилятора и рассматривания дизассемблера можно просто написать goto в исходном коде и получить нужный результат независимо от положения звёзд?
Но не кажется ли, что в ДАННОМ случае вместо массажа опций компилятора и рассматривания дизассемблера можно просто написать goto в исходном коде и получить нужный результат независимо от положения звёзд?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Хвостовая рекурсия в C++ с использованием 64-битных переменных — Часть 2