make DecorateCygMingName a static method.
[oota-llvm.git] / lib / Target / X86 / X86AsmBackend.cpp
1 //===-- X86AsmBackend.cpp - X86 Assembler Backend -------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "llvm/Target/TargetAsmBackend.h"
11 #include "X86.h"
12 #include "llvm/Target/TargetRegistry.h"
13 #include "llvm/Target/TargetAsmBackend.h"
14 using namespace llvm;
15
16 namespace {
17
18 class X86AsmBackend : public TargetAsmBackend {
19 public:
20   X86AsmBackend(const Target &T)
21     : TargetAsmBackend(T) {}
22 };
23
24 class DarwinX86AsmBackend : public X86AsmBackend {
25 public:
26   DarwinX86AsmBackend(const Target &T)
27     : X86AsmBackend(T) {}
28
29   virtual bool hasAbsolutizedSet() const { return true; }
30
31   virtual bool hasScatteredSymbols() const { return true; }
32 };
33
34 }
35
36 TargetAsmBackend *llvm::createX86_32AsmBackend(const Target &T,
37                                                const std::string &TT) {
38   switch (Triple(TT).getOS()) {
39   case Triple::Darwin:
40     return new DarwinX86AsmBackend(T);
41   default:
42     return new X86AsmBackend(T);
43   }
44 }
45
46 TargetAsmBackend *llvm::createX86_64AsmBackend(const Target &T,
47                                                const std::string &TT) {
48   switch (Triple(TT).getOS()) {
49   case Triple::Darwin:
50     return new DarwinX86AsmBackend(T);
51   default:
52     return new X86AsmBackend(T);
53   }
54 }