git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125978
91177308-0d34-0410-b5e6-
96231b3b80d8
void setAvailable(LibFunc::Func F) {
AvailableArray[F/8] |= 1 << (F&7);
}
+
+ /// disableAllFunctions - This disables all builtins, which is used for
+ /// options like -fno-builtin.
+ void disableAllFunctions();
};
} // end namespace llvm
initialize(*this, T);
}
+
+/// disableAllFunctions - This disables all builtins, which is used for options
+/// like -fno-builtin.
+void TargetLibraryInfo::disableAllFunctions() {
+ memset(AvailableArray, 0, sizeof(AvailableArray));
+}
PassManager Passes;
// Add an appropriate TargetLibraryInfo pass for the module's triple.
- if (!M->getTargetTriple().empty())
- Passes.add(new TargetLibraryInfo(Triple(M->getTargetTriple())));
+ TargetLibraryInfo *TLI = new TargetLibraryInfo(Triple(M->getTargetTriple()));
+
+ // The -disable-simplify-libcalls flag actually disables all builtin optzns.
+ if (DisableSimplifyLibCalls)
+ TLI->disableAllFunctions();
+ Passes.add(TLI);
// Add an appropriate TargetData instance for this module.
TargetData *TD = 0;