что heap-аллокации (через вызов оператор new) не создают сайд-эффектов чтобы компилятор убрал их если он может это сделать?
То есть я хочу чтобы в этой демке https://godbolt.org/z/nfj8YheqE вариант с хип-аллокациями выдавал такой же ассемблерный код как и вариант с аллокациями на стеке
attribute((malloc))
а где я должен написать этот аттрибут?
как там может быть тот же самый код , если там даже delete нет при том что new есть?
Если я добавляю delete то ничего не поменяется
Я хочу чтобы компилятор рассматривал new как некую аллокацию которая не создает никаких сайд-эффектов и в случае когда компилятор может проанализировать и увидеть что объект больше нигде не используется и никуда не передается то чтобы в этом случае компилятор мог бы не аллоцировать этот объект в хипе
компиляторам и так разрешено это делать даже при наличии побочных эффектов http://eel.is/c++draft/expr.new#13.sentence-1
отлично, тогда может есть возможность заставить Сlang и GCC с аллокацией в хипе выдавать такой же ассемблерный код как и с аллокацией на стеке в демке выше?
напиши оптимизации в компилятор
я не знаю для этого надо знать проход оптимизации, который это делает. если таковой вообще есть
Обсуждают сегодня