LinkAllCodegenComponents.h revision 344779
1193323Sed//===- llvm/Codegen/LinkAllCodegenComponents.h ------------------*- C++ -*-===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This header file pulls in all codegen related passes for tools like lli and 11193323Sed// llc that need this functionality. 12193323Sed// 13193323Sed//===----------------------------------------------------------------------===// 14193323Sed 15193323Sed#ifndef LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 16193323Sed#define LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 17193323Sed 18344779Sdim#include "llvm/CodeGen/BuiltinGCs.h" 19193323Sed#include "llvm/CodeGen/Passes.h" 20193323Sed#include "llvm/CodeGen/SchedulerRegistry.h" 21193323Sed#include "llvm/Target/TargetMachine.h" 22200581Srdivacky#include <cstdlib> 23193323Sed 24193323Sednamespace { 25193323Sed struct ForceCodegenLinking { 26193323Sed ForceCodegenLinking() { 27193323Sed // We must reference the passes in such a way that compilers will not 28193323Sed // delete it all as dead code, even with whole program optimization, 29193323Sed // yet is effectively a NO-OP. As the compiler isn't smart enough 30193323Sed // to know that getenv() never returns -1, this will do the job. 31193323Sed if (std::getenv("bar") != (char*) -1) 32193323Sed return; 33193323Sed 34207618Srdivacky (void) llvm::createFastRegisterAllocator(); 35218893Sdim (void) llvm::createBasicRegisterAllocator(); 36218893Sdim (void) llvm::createGreedyRegisterAllocator(); 37218893Sdim (void) llvm::createDefaultPBQPRegisterAllocator(); 38193323Sed 39344779Sdim llvm::linkAllBuiltinGCs(); 40234353Sdim 41276479Sdim (void) llvm::createBURRListDAGScheduler(nullptr, 42276479Sdim llvm::CodeGenOpt::Default); 43276479Sdim (void) llvm::createSourceListDAGScheduler(nullptr, 44276479Sdim llvm::CodeGenOpt::Default); 45276479Sdim (void) llvm::createHybridListDAGScheduler(nullptr, 46276479Sdim llvm::CodeGenOpt::Default); 47276479Sdim (void) llvm::createFastDAGScheduler(nullptr, llvm::CodeGenOpt::Default); 48276479Sdim (void) llvm::createDefaultScheduler(nullptr, llvm::CodeGenOpt::Default); 49276479Sdim (void) llvm::createVLIWDAGScheduler(nullptr, llvm::CodeGenOpt::Default); 50193323Sed 51193323Sed } 52193323Sed } ForceCodegenLinking; // Force link by creating a global definition. 53193323Sed} 54193323Sed 55193323Sed#endif 56