add a way to disable all builtins, wire it up to opt's -disable-simplifylibcalls...
authorChris Lattner <sabre@nondot.org>
Fri, 18 Feb 2011 22:34:03 +0000 (22:34 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 18 Feb 2011 22:34:03 +0000 (22:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125978 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetLibraryInfo.h
lib/Target/TargetLibraryInfo.cpp
tools/opt/opt.cpp

index b11c24bffb5371f01bfde3e708a8d3c1d47e238c..bdd214b6b743e5803b862582fbedc6fe7a51161e 100644 (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
index f4a85b0cd6239fdf6a0755d017a40d920d4731c0..c8bed18ffabef33a0b23229dff7130c4c771810b 100644 (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));
+}
index 8ccd8e877b96c0d326608f272e15d8f488408600..e55b4b3e2afcefa7f672999aec871d9205e67f30 100644 (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;