dead_code_removing (Новый проход) #21
Reference in New Issue
Block a user
Delete Branch "dead_code_removing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Вынес общую часть с обходом ГПУ в отдельный код, который можно переиспользовать и переиспользовал его вместе с другой функцией из анализа живых переменных в новом проходе удаления мёртвого кода. Анализ и удаление недостижимого кода пока не сделаны.
Из-за изменений в анализе живых переменных он маловероятно, но может перестать работать корректно, как и анализ приватных в следствии этого, поэтому это нужно ещё протестировать
Ещё я не совсем уверен в том, как правильно удалять SgStatement'ы. Нужно ли ещё удалять отдельно его SgExpression'ы? Нужно ли вызывать деструктор через delete? Вроде так, как написал я, не вызывает ошибок
@xnpster
удалять Sg* объекты не нужно, для "удаления" SgStatement есть функция извлечения и удаления этого оператора - extract/delete соответственно. Для SgExpression достаточно присвоить NULL в соответствующее поддерево или изменить связи. Удаление объектов класса может привести к не предвиденным обстоятельствам, поэтому
Да, переход на вектора в живых переменных действительно дал прям огромное ускорение, с ~300 секунд до ~120