[llvm] r260835 - Support: Fix incremental build when re-configuring targets

Duncan P. N. Exon Smith via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 13 14:58:43 PST 2016


Author: dexonsmith
Date: Sat Feb 13 16:58:43 2016
New Revision: 260835

URL: http://llvm.org/viewvc/llvm-project?rev=260835&view=rev
Log:
Support: Fix incremental build when re-configuring targets

r180893 added an indirect include of llvm/Config/Targets.def to
llvm/Support/CodeGen.h, which in turn is included by things like
llvm/IR/Module.h.  After a full build of LLVM and Clang, ninja had to
rebuild 1274 files after reconfiguring.

This commit strips CodeGen.h back down to just a pile of enums and moves
the expensive includes over to CodeGenCWrappers.h (which is only
included in two places).  This gets ninja down to 88 files if you
reconfigure with, e.g., -DLLVM_TARGETS_TO_BUILD=X86.

Added:
    llvm/trunk/include/llvm/Support/CodeGenCWrappers.h
Modified:
    llvm/trunk/include/llvm/Support/CodeGen.h
    llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
    llvm/trunk/lib/Target/TargetMachineC.cpp

Modified: llvm/trunk/include/llvm/Support/CodeGen.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/CodeGen.h?rev=260835&r1=260834&r2=260835&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/CodeGen.h (original)
+++ llvm/trunk/include/llvm/Support/CodeGen.h Sat Feb 13 16:58:43 2016
@@ -15,9 +15,6 @@
 #ifndef LLVM_SUPPORT_CODEGEN_H
 #define LLVM_SUPPORT_CODEGEN_H
 
-#include "llvm-c/TargetMachine.h"
-#include "llvm/Support/ErrorHandling.h"
-
 namespace llvm {
 
   // Relocation model types.
@@ -27,6 +24,7 @@ namespace llvm {
 
   // Code model types.
   namespace CodeModel {
+    // Sync changes with CodeGenCWrappers.h.
     enum Model { Default, JITDefault, Small, Kernel, Medium, Large };
   }
 
@@ -54,42 +52,6 @@ namespace llvm {
     };
   }
 
-  // Create wrappers for C Binding types (see CBindingWrapping.h).
-  inline CodeModel::Model unwrap(LLVMCodeModel Model) {
-    switch (Model) {
-      case LLVMCodeModelDefault:
-        return CodeModel::Default;
-      case LLVMCodeModelJITDefault:
-        return CodeModel::JITDefault;
-      case LLVMCodeModelSmall:
-        return CodeModel::Small;
-      case LLVMCodeModelKernel:
-        return CodeModel::Kernel;
-      case LLVMCodeModelMedium:
-        return CodeModel::Medium;
-      case LLVMCodeModelLarge:
-        return CodeModel::Large;
-    }
-    return CodeModel::Default;
-  }
-
-  inline LLVMCodeModel wrap(CodeModel::Model Model) {
-    switch (Model) {
-      case CodeModel::Default:
-        return LLVMCodeModelDefault;
-      case CodeModel::JITDefault:
-        return LLVMCodeModelJITDefault;
-      case CodeModel::Small:
-        return LLVMCodeModelSmall;
-      case CodeModel::Kernel:
-        return LLVMCodeModelKernel;
-      case CodeModel::Medium:
-        return LLVMCodeModelMedium;
-      case CodeModel::Large:
-        return LLVMCodeModelLarge;
-    }
-    llvm_unreachable("Bad CodeModel!");
-  }
 }  // end llvm namespace
 
 #endif

Added: llvm/trunk/include/llvm/Support/CodeGenCWrappers.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/CodeGenCWrappers.h?rev=260835&view=auto
==============================================================================
--- llvm/trunk/include/llvm/Support/CodeGenCWrappers.h (added)
+++ llvm/trunk/include/llvm/Support/CodeGenCWrappers.h Sat Feb 13 16:58:43 2016
@@ -0,0 +1,64 @@
+//===- llvm/Support/CodeGenCWrappers.h - CodeGen C Wrappers -----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h
+// that need them.  The wrappers are separated to avoid adding an indirect
+// dependency on llvm/Config/Targets.def to CodeGen.h.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_CODEGENCWRAPPERS_H
+#define LLVM_SUPPORT_CODEGENCWRAPPERS_H
+
+#include "llvm-c/TargetMachine.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/CodeGenCWrappers.h"
+
+namespace llvm {
+
+inline CodeModel::Model unwrap(LLVMCodeModel Model) {
+  switch (Model) {
+  case LLVMCodeModelDefault:
+    return CodeModel::Default;
+  case LLVMCodeModelJITDefault:
+    return CodeModel::JITDefault;
+  case LLVMCodeModelSmall:
+    return CodeModel::Small;
+  case LLVMCodeModelKernel:
+    return CodeModel::Kernel;
+  case LLVMCodeModelMedium:
+    return CodeModel::Medium;
+  case LLVMCodeModelLarge:
+    return CodeModel::Large;
+  }
+  return CodeModel::Default;
+}
+
+inline LLVMCodeModel wrap(CodeModel::Model Model) {
+  switch (Model) {
+  case CodeModel::Default:
+    return LLVMCodeModelDefault;
+  case CodeModel::JITDefault:
+    return LLVMCodeModelJITDefault;
+  case CodeModel::Small:
+    return LLVMCodeModelSmall;
+  case CodeModel::Kernel:
+    return LLVMCodeModelKernel;
+  case CodeModel::Medium:
+    return LLVMCodeModelMedium;
+  case CodeModel::Large:
+    return LLVMCodeModelLarge;
+  }
+  llvm_unreachable("Bad CodeModel!");
+}
+
+} // end llvm namespace
+
+#endif
+

Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp?rev=260835&r1=260834&r2=260835&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp Sat Feb 13 16:58:43 2016
@@ -17,6 +17,7 @@
 #include "llvm/ExecutionEngine/RTDyldMemoryManager.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Module.h"
+#include "llvm/Support/CodeGenCWrappers.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Target/TargetOptions.h"
 #include <cstring>

Modified: llvm/trunk/lib/Target/TargetMachineC.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetMachineC.cpp?rev=260835&r1=260834&r2=260835&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetMachineC.cpp (original)
+++ llvm/trunk/lib/Target/TargetMachineC.cpp Sat Feb 13 16:58:43 2016
@@ -18,7 +18,7 @@
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/LegacyPassManager.h"
-#include "llvm/Support/CodeGen.h"
+#include "llvm/Support/CodeGenCWrappers.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Host.h"




More information about the llvm-commits mailing list