1234353Sdim//===-- X86MCAsmInfo.h - X86 asm properties --------------------*- C++ -*--===//
2224133Sdim//
3224133Sdim//                     The LLVM Compiler Infrastructure
4224133Sdim//
5224133Sdim// This file is distributed under the University of Illinois Open Source
6224133Sdim// License. See LICENSE.TXT for details.
7224133Sdim//
8224133Sdim//===----------------------------------------------------------------------===//
9224133Sdim//
10224133Sdim// This file contains the declaration of the X86MCAsmInfo class.
11224133Sdim//
12224133Sdim//===----------------------------------------------------------------------===//
13224133Sdim
14224133Sdim#ifndef X86TARGETASMINFO_H
15224133Sdim#define X86TARGETASMINFO_H
16224133Sdim
17224133Sdim#include "llvm/MC/MCAsmInfo.h"
18224133Sdim#include "llvm/MC/MCAsmInfoCOFF.h"
19224133Sdim#include "llvm/MC/MCAsmInfoDarwin.h"
20263508Sdim#include "llvm/MC/MCAsmInfoELF.h"
21224133Sdim
22224133Sdimnamespace llvm {
23224133Sdim  class Triple;
24224133Sdim
25234353Sdim  class X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
26234353Sdim    virtual void anchor();
27234353Sdim  public:
28224133Sdim    explicit X86MCAsmInfoDarwin(const Triple &Triple);
29224133Sdim  };
30224133Sdim
31224133Sdim  struct X86_64MCAsmInfoDarwin : public X86MCAsmInfoDarwin {
32224133Sdim    explicit X86_64MCAsmInfoDarwin(const Triple &Triple);
33224133Sdim    virtual const MCExpr *
34224133Sdim    getExprForPersonalitySymbol(const MCSymbol *Sym,
35224133Sdim                                unsigned Encoding,
36224133Sdim                                MCStreamer &Streamer) const;
37224133Sdim  };
38224133Sdim
39263508Sdim  class X86ELFMCAsmInfo : public MCAsmInfoELF {
40234353Sdim    virtual void anchor();
41234353Sdim  public:
42224133Sdim    explicit X86ELFMCAsmInfo(const Triple &Triple);
43224133Sdim    virtual const MCSection *getNonexecutableStackSection(MCContext &Ctx) const;
44224133Sdim  };
45224133Sdim
46234353Sdim  class X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
47234353Sdim    virtual void anchor();
48234353Sdim  public:
49234353Sdim    explicit X86MCAsmInfoMicrosoft(const Triple &Triple);
50224133Sdim  };
51234353Sdim
52234353Sdim  class X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
53234353Sdim    virtual void anchor();
54234353Sdim  public:
55234353Sdim    explicit X86MCAsmInfoGNUCOFF(const Triple &Triple);
56234353Sdim  };
57224133Sdim} // namespace llvm
58224133Sdim
59224133Sdim#endif
60