1a20e1e7ef596842127794372244fd5c646f71296Chad Rosier//===-- X86coffmachinemoduleinfo.h - X86 COFF MMI Impl ----------*- C++ -*-===//
267c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//
367c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//                     The LLVM Compiler Infrastructure
467c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//
567c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner// This file is distributed under the University of Illinois Open Source
667c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner// License. See LICENSE.TXT for details.
767c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//
867c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//===----------------------------------------------------------------------===//
967c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//
1067c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner// This is an MMI implementation for X86 COFF (windows) targets.
1167c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//
1267c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner//===----------------------------------------------------------------------===//
1367c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
1467c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner#ifndef X86COFF_MACHINEMODULEINFO_H
1567c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner#define X86COFF_MACHINEMODULEINFO_H
1667c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
1779aa3417eb6f58d668aadfedf075240a41d35a26Craig Topper#include "X86MachineFunctionInfo.h"
1867c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner#include "llvm/CodeGen/MachineModuleInfo.h"
19b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner#include "llvm/ADT/DenseSet.h"
2067c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
2167c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattnernamespace llvm {
2267c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner  class X86MachineFunctionInfo;
2367c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner  class TargetData;
244dd162f3945636cbe6123682619e994f75a62d00Anton Korobeynikov
2567c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner/// X86COFFMachineModuleInfo - This is a MachineModuleInfoImpl implementation
2667c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner/// for X86 COFF targets.
2767c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattnerclass X86COFFMachineModuleInfo : public MachineModuleInfoImpl {
28b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner  DenseSet<MCSymbol const *> Externals;
2967c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattnerpublic:
30c9747c05d1fc01678fb86b3bc4674656228269bcChris Lattner  X86COFFMachineModuleInfo(const MachineModuleInfo &) {}
31c9747c05d1fc01678fb86b3bc4674656228269bcChris Lattner  virtual ~X86COFFMachineModuleInfo();
324dd162f3945636cbe6123682619e994f75a62d00Anton Korobeynikov
33b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner  void addExternalFunction(MCSymbol* Symbol) {
34b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner    Externals.insert(Symbol);
35c9747c05d1fc01678fb86b3bc4674656228269bcChris Lattner  }
36a20e1e7ef596842127794372244fd5c646f71296Chad Rosier
37b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner  typedef DenseSet<MCSymbol const *>::const_iterator externals_iterator;
38b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner  externals_iterator externals_begin() const { return Externals.begin(); }
39b54b9ddaaf2d258767d360583642ed1b91075fc9Chris Lattner  externals_iterator externals_end() const { return Externals.end(); }
4067c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner};
4167c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
4267c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
4367c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
4467c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner} // end namespace llvm
4567c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner
4667c6b6ee71826b2c48b4da490340e5c3e2a94cd2Chris Lattner#endif
47