add a way to disable all builtins, wire it up to opt's -disable-simplifylibcalls flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125978 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2011-02-18 22:34:03 +00:00
parent c19175c9d8
commit 188a7e00e7
3 changed files with 16 additions and 2 deletions

View File

@ -55,6 +55,10 @@ public:
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

View File

@ -47,3 +47,9 @@ TargetLibraryInfo::TargetLibraryInfo(const Triple &T) : ImmutablePass(ID) {
initialize(*this, T);
}
/// disableAllFunctions - This disables all builtins, which is used for options
/// like -fno-builtin.
void TargetLibraryInfo::disableAllFunctions() {
memset(AvailableArray, 0, sizeof(AvailableArray));
}

View File

@ -532,8 +532,12 @@ int main(int argc, char **argv) {
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;