X86MCAsmInfo.h revision 261991
190075Sobrien//===-- X86MCAsmInfo.h - X86 asm properties --------------------*- C++ -*--===//
290075Sobrien//
390075Sobrien//                     The LLVM Compiler Infrastructure
490075Sobrien//
590075Sobrien// This file is distributed under the University of Illinois Open Source
690075Sobrien// License. See LICENSE.TXT for details.
790075Sobrien//
890075Sobrien//===----------------------------------------------------------------------===//
990075Sobrien//
1090075Sobrien// This file contains the declaration of the X86MCAsmInfo class.
1190075Sobrien//
1290075Sobrien//===----------------------------------------------------------------------===//
1390075Sobrien
1490075Sobrien#ifndef X86TARGETASMINFO_H
1590075Sobrien#define X86TARGETASMINFO_H
1690075Sobrien
1790075Sobrien#include "llvm/MC/MCAsmInfo.h"
1890075Sobrien#include "llvm/MC/MCAsmInfoCOFF.h"
1990075Sobrien#include "llvm/MC/MCAsmInfoDarwin.h"
2090075Sobrien#include "llvm/MC/MCAsmInfoELF.h"
2190075Sobrien
2290075Sobriennamespace llvm {
2390075Sobrien  class Triple;
2490075Sobrien
2590075Sobrien  class X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
2690075Sobrien    virtual void anchor();
2790075Sobrien  public:
2890075Sobrien    explicit X86MCAsmInfoDarwin(const Triple &Triple);
2990075Sobrien  };
3090075Sobrien
3190075Sobrien  struct X86_64MCAsmInfoDarwin : public X86MCAsmInfoDarwin {
3290075Sobrien    explicit X86_64MCAsmInfoDarwin(const Triple &Triple);
3390075Sobrien    virtual const MCExpr *
3490075Sobrien    getExprForPersonalitySymbol(const MCSymbol *Sym,
3590075Sobrien                                unsigned Encoding,
3690075Sobrien                                MCStreamer &Streamer) const;
3790075Sobrien  };
3890075Sobrien
3990075Sobrien  class X86ELFMCAsmInfo : public MCAsmInfoELF {
4090075Sobrien    virtual void anchor();
4190075Sobrien  public:
4290075Sobrien    explicit X86ELFMCAsmInfo(const Triple &Triple);
4390075Sobrien    virtual const MCSection *getNonexecutableStackSection(MCContext &Ctx) const;
4490075Sobrien  };
4590075Sobrien
4690075Sobrien  class X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
4790075Sobrien    virtual void anchor();
4890075Sobrien  public:
4990075Sobrien    explicit X86MCAsmInfoMicrosoft(const Triple &Triple);
5090075Sobrien  };
5190075Sobrien
5290075Sobrien  class X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
5390075Sobrien    virtual void anchor();
5490075Sobrien  public:
5590075Sobrien    explicit X86MCAsmInfoGNUCOFF(const Triple &Triple);
5690075Sobrien  };
5790075Sobrien} // namespace llvm
5890075Sobrien
5990075Sobrien#endif
6090075Sobrien