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