forked from OSchip/llvm-project
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. llvm-svn: 260835
This commit is contained in:
parent
08ba012973
commit
3f7f883e06
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue