История изменений
Исправление SZT, (текущая версия) :
поэтому gcc, должно быть, очень умный если умеет такое доказывать или опровергать для любого test();
GCC как раз этого делать не умеет. Он сворачивает это в return 1;
только если ему явно сказать, что функция чистая. Но тогда мемоизация не работает.
Вопрос - при чем тут компиляторы?
Компиляторы делают оптимизации. Я хочу делать свой язык и компилировать его в Си, потом код на Си компилировать компилятором Си. Все испробованные мною компиляторы Си не умеют в оптимизациию, которая мне нужна. Вот причем. Думаю, надо в компилятор систему символьных вычислений интегрировать. Абстрактное представление LLVM мне не очень нравится, на мой взгляд оно не очень подходит для символьных вычислений
Исходная версия SZT, :
поэтому gcc, должно быть, очень умный если умеет такое доказывать или опровергать для любого test();
GCC как раз этого делать не умеет. Он сворачивает это в return 1;
только если ему явно сказать, что функция чистая. Но тогда мемоизация не работает.
Вопрос - при чем тут компиляторы?
Компиляторы делают оптимизации. Я хочу делать свой язык и компилировать его в Си, потом код на Си компилировать компилятором Си. Все испробованные мною компиляторы Си не умеют в оптимизациию, которая мне нужна. Вот причем. Думаю, надо в компилятор систему символьных вычислений интегрировать. Абстрактное представление LLVM мне не очень нравится, на мой взгляд он не очень подходит для символьных вычислений