LinkAllCodegenComponents.h revision 7ed47a13356daed2a34cd2209a31f92552e3bdd8
1c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//===- llvm/Codegen/LinkAllCodegenComponents.h ------------------*- C++ -*-===//
2c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//
3c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//                      The LLVM Compiler Infrastructure
4c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey//
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// This file is distributed under the University of Illinois Open Source
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// 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();
33a8c768293966822840199b496a9b020b6b460e8dDuraid Madina      (void) llvm::createBigBlockRegisterAllocator();
34c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey      (void) llvm::createLinearScanRegisterAllocator();
352c17c4d8d9f232f0329786ad9abee976bc0f3d27David Greene
362c17c4d8d9f232f0329786ad9abee976bc0f3d27David Greene      (void) llvm::createSimpleRegisterCoalescer();
37c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey
389ff542f2cce5bf7bf3cf9f692cf3ec0690ad2b3bJim Laskey      (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL);
399ff542f2cce5bf7bf3cf9f692cf3ec0690ad2b3bJim Laskey      (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL);
409ff542f2cce5bf7bf3cf9f692cf3ec0690ad2b3bJim Laskey      (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL);
419373beba6010dd34316a801c3a9b37ab9e048031Jim Laskey      (void) llvm::createDefaultScheduler(NULL, NULL, NULL);
42c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey
43c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey    }
44c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey  } ForceCodegenLinking; // Force link by creating a global definition.
45c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey}
46c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1Jim Laskey
479ff542f2cce5bf7bf3cf9f692cf3ec0690ad2b3bJim Laskey#endif
48