[llvm-commits] [llvm] r125978 - in /llvm/trunk: include/llvm/Target/TargetLibraryInfo.h lib/Target/TargetLibraryInfo.cpp tools/opt/opt.cpp

Chris Lattner sabre at nondot.org
Fri Feb 18 14:34:03 PST 2011


Author: lattner
Date: Fri Feb 18 16:34:03 2011
New Revision: 125978

URL: http://llvm.org/viewvc/llvm-project?rev=125978&view=rev
Log:
add a way to disable all builtins, wire it up to opt's -disable-simplifylibcalls flag.

Modified:
    llvm/trunk/include/llvm/Target/TargetLibraryInfo.h
    llvm/trunk/lib/Target/TargetLibraryInfo.cpp
    llvm/trunk/tools/opt/opt.cpp

Modified: llvm/trunk/include/llvm/Target/TargetLibraryInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLibraryInfo.h?rev=125978&r1=125977&r2=125978&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Target/TargetLibraryInfo.h (original)
+++ llvm/trunk/include/llvm/Target/TargetLibraryInfo.h Fri Feb 18 16:34:03 2011
@@ -55,6 +55,10 @@
   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

Modified: llvm/trunk/lib/Target/TargetLibraryInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetLibraryInfo.cpp?rev=125978&r1=125977&r2=125978&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetLibraryInfo.cpp (original)
+++ llvm/trunk/lib/Target/TargetLibraryInfo.cpp Fri Feb 18 16:34:03 2011
@@ -47,3 +47,9 @@
   
   initialize(*this, T);
 }
+
+/// disableAllFunctions - This disables all builtins, which is used for options
+/// like -fno-builtin.
+void TargetLibraryInfo::disableAllFunctions() {
+  memset(AvailableArray, 0, sizeof(AvailableArray));
+}

Modified: llvm/trunk/tools/opt/opt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=125978&r1=125977&r2=125978&view=diff
==============================================================================
--- llvm/trunk/tools/opt/opt.cpp (original)
+++ llvm/trunk/tools/opt/opt.cpp Fri Feb 18 16:34:03 2011
@@ -532,8 +532,12 @@
   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;





More information about the llvm-commits mailing list