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