1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===- llvm/Codegen/LinkAllAsmWriterComponents.h ----------------*- C++ -*-===//
2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//                      The LLVM Compiler Infrastructure
4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// This file is distributed under the University of Illinois Open Source
6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// License. See LICENSE.TXT for details.
7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===----------------------------------------------------------------------===//
9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// This header file pulls in all assembler writer related passes for tools like
11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// llc that need this functionality.
12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//===----------------------------------------------------------------------===//
14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#ifndef LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#define LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include "llvm/CodeGen/GCs.h"
19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include <cstdlib>
20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaonamespace {
22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  struct ForceAsmWriterLinking {
23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao    ForceAsmWriterLinking() {
24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      // We must reference the plug-ins in such a way that compilers will not
25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      // delete it all as dead code, even with whole program optimization,
26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      // yet is effectively a NO-OP. As the compiler isn't smart enough
27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      // to know that getenv() never returns -1, this will do the job.
28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      if (std::getenv("bar") != (char*) -1)
29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao        return;
30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      llvm::linkOcamlGCPrinter();
32477de3a7859104d7c41a36628169e13e524e980aYiannis Tsiouris      llvm::linkErlangGCPrinter();
33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao    }
35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  } ForceAsmWriterLinking; // Force link by creating a global definition.
36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao}
37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#endif // LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
39