diff options
author | Chris Lattner <sabre@nondot.org> | 2011-02-18 22:34:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-02-18 22:34:03 +0000 |
commit | 188a7e00e784f78d6b5b250a64ac5c374f0fd3f0 (patch) | |
tree | 42cf098b118963de0f04a559cf3c3e0fa609ba4b | |
parent | c19175c9d8d3c2663b682a7fe34bb22da370d5c1 (diff) | |
download | llvm-188a7e00e784f78d6b5b250a64ac5c374f0fd3f0.tar.gz llvm-188a7e00e784f78d6b5b250a64ac5c374f0fd3f0.tar.bz2 llvm-188a7e00e784f78d6b5b250a64ac5c374f0fd3f0.tar.xz |
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
-rw-r--r-- | include/llvm/Target/TargetLibraryInfo.h | 4 | ||||
-rw-r--r-- | lib/Target/TargetLibraryInfo.cpp | 6 | ||||
-rw-r--r-- | tools/opt/opt.cpp | 8 |
3 files changed, 16 insertions, 2 deletions
diff --git a/include/llvm/Target/TargetLibraryInfo.h b/include/llvm/Target/TargetLibraryInfo.h index b11c24bffb..bdd214b6b7 100644 --- a/include/llvm/Target/TargetLibraryInfo.h +++ b/include/llvm/Target/TargetLibraryInfo.h @@ -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 diff --git a/lib/Target/TargetLibraryInfo.cpp b/lib/Target/TargetLibraryInfo.cpp index f4a85b0cd6..c8bed18ffa 100644 --- a/lib/Target/TargetLibraryInfo.cpp +++ b/lib/Target/TargetLibraryInfo.cpp @@ -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)); +} diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index 8ccd8e877b..e55b4b3e2a 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -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; |