1 //===-- TargetAsmInfo.cpp - Asm Info ---------------------------------------==//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by James M. Laskey and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines target asm properties related what form asm statements
13 //===----------------------------------------------------------------------===//
15 #include "llvm/Target/TargetAsmInfo.h"
19 TargetAsmInfo::TargetAsmInfo() :
28 PrivateGlobalPrefix("."),
29 GlobalVarAddrPrefix(""),
30 GlobalVarAddrSuffix(""),
31 FunctionAddrPrefix(""),
32 FunctionAddrSuffix(""),
33 InlineAsmStart("#APP"),
34 InlineAsmEnd("#NO_APP"),
35 ZeroDirective("\t.zero\t"),
36 ZeroDirectiveSuffix(0),
37 AsciiDirective("\t.ascii\t"),
38 AscizDirective("\t.asciz\t"),
39 Data8bitsDirective("\t.byte\t"),
40 Data16bitsDirective("\t.short\t"),
41 Data32bitsDirective("\t.long\t"),
42 Data64bitsDirective("\t.quad\t"),
43 AlignDirective("\t.align\t"),
44 AlignmentIsInBytes(true),
45 SwitchToSectionDirective("\t.section\t"),
46 TextSectionStartSuffix(""),
47 DataSectionStartSuffix(""),
48 SectionEndDirectiveSuffix(0),
49 ConstantPoolSection("\t.section .rodata\n"),
50 JumpTableDataSection("\t.section .rodata\n"),
51 JumpTableDirective(0),
53 StaticCtorsSection("\t.section .ctors,\"aw\",@progbits"),
54 StaticDtorsSection("\t.section .dtors,\"aw\",@progbits"),
55 FourByteConstantSection(0),
56 EightByteConstantSection(0),
57 SixteenByteConstantSection(0),
60 COMMDirective("\t.comm\t"),
61 COMMDirectiveTakesAlignment(true),
62 HasDotTypeDotSizeDirective(true),
67 DwarfAbbrevSection(".debug_abbrev"),
68 DwarfInfoSection(".debug_info"),
69 DwarfLineSection(".debug_line"),
70 DwarfFrameSection(".debug_frame"),
71 DwarfPubNamesSection(".debug_pubnames"),
72 DwarfPubTypesSection(".debug_pubtypes"),
73 DwarfStrSection(".debug_str"),
74 DwarfLocSection(".debug_loc"),
75 DwarfARangesSection(".debug_aranges"),
76 DwarfRangesSection(".debug_ranges"),
77 DwarfMacInfoSection(".debug_macinfo") {
80 TargetAsmInfo::~TargetAsmInfo() {
83 /// Measure the specified inline asm to determine an approximation of its
85 unsigned TargetAsmInfo::getInlineAsmLength(const char *Str) const {
86 // Count the number of instructions in the asm.
87 unsigned NumInsts = 0;
89 if (*Str == '\n' || *Str == SeparatorChar)
93 // Multiply by the worst-case length for each instruction.
94 return NumInsts * MaxInstLength;