Всем привет!)
Вопрос по llvm (который дублирует
https://stackoverflow.com/questions/28900202/how-to-translate-intrinsics-to-a-legacy-architecture)
У меня есть анализатор llvm кода (не klee), у которого под капотом кастомный интерпретатор биткода. Естественно, этот интерпретатор не поддерживает все возможные интринсики.
Тем не менее, я хочу запустить его на довольно большой кодовой базе, где как раз встречаются различные интринсики. Интепретатор не может их обработать и падает с ошибкой.
Есть ли какой-то стандартный способ попробовать заловерить интринсики в минимально возможное подмножество биткода, чтобы не поддерживать все возможные интринсики в интерпретаторе? (
llvm::IntrinsicLowering
не помогает).
В Klee, как я понял, ребята борятся с этим тем, что сами ручками пишут пассы, которые ловерят интринсики, но если честно мне не хотелось бы сейчас этим заниматься :)
https://github.com/klee/klee/issues/678У меня сейчас интерпретатор не может справиться примерно с тем же списком интринсиков, что и в issue в klee.