为 Os 而不是 O2 启用 llvm pass
Enable a llvm pass for Os but not O2
我在 O2 上有通行证 运行,现在想在 Os 上禁用它。一种解决方案是添加如下编译选项:
static cl::opt<bool> DisableMyPass("disable-mypass",cl::Hidden,cl::init(false));
并与 -mllvm disable-mypass=true
一起使用。
但我真正需要的是默认情况下在 -Os 时禁用它,而在 -O2 时启用它而没有任何其他命令行选项,我找不到办法做到这一点。
你应该添加
// This pass generally increases code size
if (skipFunction(F) || F.optForSize()) {
return false;
}
在 runOnFunction
的开头。
我在 O2 上有通行证 运行,现在想在 Os 上禁用它。一种解决方案是添加如下编译选项:
static cl::opt<bool> DisableMyPass("disable-mypass",cl::Hidden,cl::init(false));
并与 -mllvm disable-mypass=true
一起使用。
但我真正需要的是默认情况下在 -Os 时禁用它,而在 -O2 时启用它而没有任何其他命令行选项,我找不到办法做到这一点。
你应该添加
// This pass generally increases code size
if (skipFunction(F) || F.optForSize()) {
return false;
}
在 runOnFunction
的开头。