LinkAllCodegenComponents.h revision 210299
1183567Sstas//===- llvm/Codegen/LinkAllCodegenComponents.h ------------------*- C++ -*-===// 2183567Sstas// 3183567Sstas// The LLVM Compiler Infrastructure 4183567Sstas// 5183567Sstas// This file is distributed under the University of Illinois Open Source 6183567Sstas// License. See LICENSE.TXT for details. 7183567Sstas// 8183567Sstas//===----------------------------------------------------------------------===// 9183567Sstas// 10183567Sstas// This header file pulls in all codegen related passes for tools like lli and 11183567Sstas// llc that need this functionality. 12183567Sstas// 13183567Sstas//===----------------------------------------------------------------------===// 14183567Sstas 15183567Sstas#ifndef LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 16183567Sstas#define LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 17183567Sstas 18183567Sstas#include "llvm/CodeGen/Passes.h" 19183567Sstas#include "llvm/CodeGen/SchedulerRegistry.h" 20183567Sstas#include "llvm/CodeGen/GCs.h" 21183567Sstas#include "llvm/Target/TargetMachine.h" 22183567Sstas#include <cstdlib> 23183567Sstas 24183567Sstasnamespace { 25183567Sstas struct ForceCodegenLinking { 26183567Sstas ForceCodegenLinking() { 27183567Sstas // We must reference the passes in such a way that compilers will not 28183567Sstas // delete it all as dead code, even with whole program optimization, 29183567Sstas // yet is effectively a NO-OP. As the compiler isn't smart enough 30183567Sstas // to know that getenv() never returns -1, this will do the job. 31183567Sstas if (std::getenv("bar") != (char*) -1) 32183567Sstas return; 33183567Sstas 34183567Sstas (void) llvm::createDeadMachineInstructionElimPass(); 35183567Sstas 36183567Sstas (void) llvm::createFastRegisterAllocator(); 37183567Sstas (void) llvm::createLinearScanRegisterAllocator(); 38183567Sstas (void) llvm::createPBQPRegisterAllocator(); 39183567Sstas 40183567Sstas (void) llvm::createSimpleRegisterCoalescer(); 41183567Sstas 42183567Sstas llvm::linkOcamlGC(); 43183567Sstas llvm::linkShadowStackGC(); 44183567Sstas 45183567Sstas (void) llvm::createBURRListDAGScheduler(NULL, llvm::CodeGenOpt::Default); 46183567Sstas (void) llvm::createTDRRListDAGScheduler(NULL, llvm::CodeGenOpt::Default); 47183567Sstas (void) llvm::createSourceListDAGScheduler(NULL,llvm::CodeGenOpt::Default); 48183567Sstas (void) llvm::createHybridListDAGScheduler(NULL,llvm::CodeGenOpt::Default); 49183567Sstas (void) llvm::createTDListDAGScheduler(NULL, llvm::CodeGenOpt::Default); 50183567Sstas (void) llvm::createFastDAGScheduler(NULL, llvm::CodeGenOpt::Default); 51183567Sstas (void) llvm::createDefaultScheduler(NULL, llvm::CodeGenOpt::Default); 52183567Sstas 53183567Sstas } 54183567Sstas } ForceCodegenLinking; // Force link by creating a global definition. 55183567Sstas} 56183567Sstas 57183567Sstas#endif 58183567Sstas