LinkAllCodegenComponents.h revision c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1
1c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//===- llvm/Codegen/LinkAllCodegenComponents.h ------------------*- C++ -*-===// 2c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// 3c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// The LLVM Compiler Infrastructure 4c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// 5c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// This file was developed by James M. Laskey and is distributed under the 6c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// University of Illinois Open Source License. See LICENSE.TXT for details. 7c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// 8c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//===----------------------------------------------------------------------===// 9c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// 10c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// This header file pulls in all codegen related passes for tools like lli and 11c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// llc that need this functionality. 12c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey// 13c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//===----------------------------------------------------------------------===// 14c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 15c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey#ifndef LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 16c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey#define LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H 17c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 18c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey#include "llvm/CodeGen/Passes.h" 19c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey#include "llvm/CodeGen/ScheduleDAG.h" 20c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 21c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskeynamespace { 22c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey struct ForceCodegenLinking { 23c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey ForceCodegenLinking() { 24c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey // We must reference the passes in such a way that compilers will not 25c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey // delete it all as dead code, even with whole program optimization, 26c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey // yet is effectively a NO-OP. As the compiler isn't smart enough 27c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey // to know that getenv() never returns -1, this will do the job. 28c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey if (std::getenv("bar") != (char*) -1) 29c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey return; 30c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 31c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createSimpleRegisterAllocator(); 32c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createLocalRegisterAllocator(); 33c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createLinearScanRegisterAllocator(); 34c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 35c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createBFS_DAGScheduler(NULL, NULL); 36c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createSimpleDAGScheduler(NULL, NULL); 37c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createNoItinsDAGScheduler(NULL, NULL); 38c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createBURRListDAGScheduler(NULL, NULL); 39c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createTDRRListDAGScheduler(NULL, NULL); 40c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey (void) llvm::createTDListDAGScheduler(NULL, NULL); 41c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 42c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey } 43c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey } ForceCodegenLinking; // Force link by creating a global definition. 44c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey} 45c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey 46c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey#endif