#include "llvm/Type.h"
#include "llvm/Support/CFG.h"
#include "llvm/Support/LeakDetector.h"
+#include "llvm/Support/Visibility.h"
#include "SymbolTableListTraitsImpl.h"
#include <algorithm>
using namespace llvm;
namespace {
/// DummyInst - An instance of this class is used to mark the end of the
/// instruction list. This is not a real instruction.
- struct DummyInst : public Instruction {
+ struct VISIBILITY_HIDDEN DummyInst : public Instruction {
DummyInst() : Instruction(Type::VoidTy, OtherOpsEnd, 0, 0) {
// This should not be garbage monitored.
LeakDetector::removeGarbageObject(this);
//===----------------------------------------------------------------------===//
#include "llvm/Support/LeakDetector.h"
+#include "llvm/Support/Visibility.h"
#include "llvm/Value.h"
#include <iostream>
#include <set>
namespace {
template <class T>
- struct PrinterTrait {
+ struct VISIBILITY_HIDDEN PrinterTrait {
static void print(const T* P) { std::cerr << P; }
};
template<>
- struct PrinterTrait<Value> {
+ struct VISIBILITY_HIDDEN PrinterTrait<Value> {
static void print(const Value* P) { std::cerr << *P; }
};
template <typename T>
- struct LeakDetectorImpl {
+ struct VISIBILITY_HIDDEN LeakDetectorImpl {
LeakDetectorImpl(const char* const name) : Cache(0), Name(name) { }
// Because the most common usage pattern, by far, is to add a