我正在编写一段代码来识别 LLVM 堆栈的机器功能级别的某些模式。我想为此组件编写一个测试驱动程序。测试驱动程序需要创建一段机器代码并将指令指针传递给我的匹配器:
MachineInstruction* mi = createSnipit(...);
bool result = matcher(mi, ...);
ASSERT_TRUE(result);
如果这不是一个独立的测试驱动程序,那么在特定的基本块中创建一条新指令或一组指令将很容易。但是,测试驱动程序是一个独立的程序,不会从编译器中调用。不知何故,我似乎需要先创建一个机器函数、一个基本块和一个 MachineRegisterInfo 实例,然后才能创建任何指令。我该怎么做才能正确链接所有内容并且 LLVM 基础架构处于一致状态?