Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(557)

Side by Side Diff: lib/Target/X86/X86AsmPrinter.cpp

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/Target/X86/X86AsmPrinter.h ('k') | lib/Target/X86/X86CallingConv.td » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===-- X86AsmPrinter.cpp - Convert X86 LLVM code to AT&T assembly --------===// 1 //===-- X86AsmPrinter.cpp - Convert X86 LLVM code to AT&T assembly --------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file contains a printer that converts from our internal representation 10 // This file contains a printer that converts from our internal representation
(...skipping 12 matching lines...) Expand all
23 #include "llvm/CodeGen/MachineValueType.h" 23 #include "llvm/CodeGen/MachineValueType.h"
24 #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" 24 #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
25 #include "llvm/IR/DebugInfo.h" 25 #include "llvm/IR/DebugInfo.h"
26 #include "llvm/IR/DerivedTypes.h" 26 #include "llvm/IR/DerivedTypes.h"
27 #include "llvm/IR/Mangler.h" 27 #include "llvm/IR/Mangler.h"
28 #include "llvm/IR/Module.h" 28 #include "llvm/IR/Module.h"
29 #include "llvm/IR/Type.h" 29 #include "llvm/IR/Type.h"
30 #include "llvm/MC/MCAsmInfo.h" 30 #include "llvm/MC/MCAsmInfo.h"
31 #include "llvm/MC/MCContext.h" 31 #include "llvm/MC/MCContext.h"
32 #include "llvm/MC/MCExpr.h" 32 #include "llvm/MC/MCExpr.h"
33 #include "llvm/MC/MCNaCl.h" // @LOCALMOD
33 #include "llvm/MC/MCSectionCOFF.h" 34 #include "llvm/MC/MCSectionCOFF.h"
34 #include "llvm/MC/MCSectionMachO.h" 35 #include "llvm/MC/MCSectionMachO.h"
35 #include "llvm/MC/MCStreamer.h" 36 #include "llvm/MC/MCStreamer.h"
36 #include "llvm/MC/MCSymbol.h" 37 #include "llvm/MC/MCSymbol.h"
37 #include "llvm/Support/COFF.h" 38 #include "llvm/Support/COFF.h"
38 #include "llvm/Support/Debug.h" 39 #include "llvm/Support/Debug.h"
39 #include "llvm/Support/ErrorHandling.h" 40 #include "llvm/Support/ErrorHandling.h"
40 #include "llvm/Support/TargetRegistry.h" 41 #include "llvm/Support/TargetRegistry.h"
41 using namespace llvm; 42 using namespace llvm;
42 43
(...skipping 21 matching lines...) Expand all
64 // Have common code print out the function header with linkage info etc. 65 // Have common code print out the function header with linkage info etc.
65 EmitFunctionHeader(); 66 EmitFunctionHeader();
66 67
67 // Emit the rest of the function body. 68 // Emit the rest of the function body.
68 EmitFunctionBody(); 69 EmitFunctionBody();
69 70
70 // We didn't modify anything. 71 // We didn't modify anything.
71 return false; 72 return false;
72 } 73 }
73 74
75 // @LOCALMOD-BEGIN
76 bool X86AsmPrinter::UseReadOnlyJumpTables() const {
77 return Subtarget->isTargetNaCl();
78 }
79
80 unsigned X86AsmPrinter::GetTargetBasicBlockAlign() const {
81 if (Subtarget->isTargetNaCl())
82 return 5;
83 return 0;
84 }
85
86 unsigned X86AsmPrinter::GetTargetLabelAlign(const MachineInstr *MI) const {
87 if (Subtarget->isTargetNaCl()) {
88 switch (MI->getOpcode()) {
89 default: return 0;
90 // These labels may indicate an indirect entry point that is
91 // externally reachable and hence must be bundle aligned.
92 // Note: these labels appear to be always at basic block beginnings
93 // so it may be possible to simply set the MBB alignment.
94 // However, it is unclear whether this always holds.
95 case TargetOpcode::EH_LABEL:
96 case TargetOpcode::GC_LABEL:
97 return 5;
98 }
99 }
100 return 0;
101 }
102 // @LOCALMOD-END
103
74 /// printSymbolOperand - Print a raw symbol reference operand. This handles 104 /// printSymbolOperand - Print a raw symbol reference operand. This handles
75 /// jump tables, constant pools, global address and external symbols, all of 105 /// jump tables, constant pools, global address and external symbols, all of
76 /// which print to a label with various suffixes for relocation types etc. 106 /// which print to a label with various suffixes for relocation types etc.
77 static void printSymbolOperand(X86AsmPrinter &P, const MachineOperand &MO, 107 static void printSymbolOperand(X86AsmPrinter &P, const MachineOperand &MO,
78 raw_ostream &O) { 108 raw_ostream &O) {
79 switch (MO.getType()) { 109 switch (MO.getType()) {
80 default: llvm_unreachable("unknown symbol type!"); 110 default: llvm_unreachable("unknown symbol type!");
81 case MachineOperand::MO_ConstantPoolIndex: 111 case MachineOperand::MO_ConstantPoolIndex:
82 O << *P.GetCPISymbol(MO.getIndex()); 112 O << *P.GetCPISymbol(MO.getIndex());
83 P.printOffset(MO.getOffset(), O); 113 P.printOffset(MO.getOffset(), O);
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 // for "registered SEH". This means that all SEH handler entry points 551 // for "registered SEH". This means that all SEH handler entry points
522 // must be registered in .sxdata. Use of any unregistered handlers will 552 // must be registered in .sxdata. Use of any unregistered handlers will
523 // cause the process to terminate immediately. LLVM does not know how to 553 // cause the process to terminate immediately. LLVM does not know how to
524 // register any SEH handlers, so its object files should be safe. 554 // register any SEH handlers, so its object files should be safe.
525 S->setAbsolute(); 555 S->setAbsolute();
526 OutStreamer.EmitSymbolAttribute(S, MCSA_Global); 556 OutStreamer.EmitSymbolAttribute(S, MCSA_Global);
527 OutStreamer.EmitAssignment( 557 OutStreamer.EmitAssignment(
528 S, MCConstantExpr::Create(int64_t(1), MMI->getContext())); 558 S, MCConstantExpr::Create(int64_t(1), MMI->getContext()));
529 } 559 }
530 } 560 }
561
562 // @LOCALMOD-BEGIN
563 if (Subtarget->isTargetNaCl())
564 initializeNaClMCStreamer(OutStreamer, OutContext,
565 Subtarget->getTargetTriple());
566 // @LOCALMOD-END
531 } 567 }
532 568
533 static void 569 static void
534 emitNonLazySymbolPointer(MCStreamer &OutStreamer, MCSymbol *StubLabel, 570 emitNonLazySymbolPointer(MCStreamer &OutStreamer, MCSymbol *StubLabel,
535 MachineModuleInfoImpl::StubValueTy &MCSym) { 571 MachineModuleInfoImpl::StubValueTy &MCSym) {
536 // L_foo$stub: 572 // L_foo$stub:
537 OutStreamer.EmitLabel(StubLabel); 573 OutStreamer.EmitLabel(StubLabel);
538 // .indirect_symbol _foo 574 // .indirect_symbol _foo
539 OutStreamer.EmitSymbolAttribute(MCSym.getPointer(), MCSA_IndirectSymbol); 575 OutStreamer.EmitSymbolAttribute(MCSym.getPointer(), MCSA_IndirectSymbol);
540 576
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 781
746 //===----------------------------------------------------------------------===// 782 //===----------------------------------------------------------------------===//
747 // Target Registry Stuff 783 // Target Registry Stuff
748 //===----------------------------------------------------------------------===// 784 //===----------------------------------------------------------------------===//
749 785
750 // Force static initialization. 786 // Force static initialization.
751 extern "C" void LLVMInitializeX86AsmPrinter() { 787 extern "C" void LLVMInitializeX86AsmPrinter() {
752 RegisterAsmPrinter<X86AsmPrinter> X(TheX86_32Target); 788 RegisterAsmPrinter<X86AsmPrinter> X(TheX86_32Target);
753 RegisterAsmPrinter<X86AsmPrinter> Y(TheX86_64Target); 789 RegisterAsmPrinter<X86AsmPrinter> Y(TheX86_64Target);
754 } 790 }
OLDNEW
« no previous file with comments | « lib/Target/X86/X86AsmPrinter.h ('k') | lib/Target/X86/X86CallingConv.td » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698