[PATCH] D23810: [MC] Support .dc directives in assembler parser
Petr Hosek via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 23 14:43:23 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL279577: [MC] Support .dc directives in assembler parser (authored by phosek).
Changed prior to commit:
https://reviews.llvm.org/D23810?vs=69019&id=69039#toc
Repository:
rL LLVM
https://reviews.llvm.org/D23810
Files:
llvm/trunk/lib/MC/MCParser/AsmParser.cpp
llvm/trunk/test/MC/AsmParser/directive_dc.s
Index: llvm/trunk/test/MC/AsmParser/directive_dc.s
===================================================================
--- llvm/trunk/test/MC/AsmParser/directive_dc.s
+++ llvm/trunk/test/MC/AsmParser/directive_dc.s
@@ -0,0 +1,41 @@
+# RUN: not llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
+# RUN: not llvm-mc -triple i386-unknown-unknown %s 2>&1 > /dev/null| FileCheck %s --check-prefix=CHECK-ERROR
+
+# CHECK: TEST0:
+# CHECK: .byte 0
+TEST0:
+ .dc.b 0
+
+# CHECK: TEST1:
+# CHECK: .short 3
+TEST1:
+ .dc 3
+
+# CHECK: TEST2:
+# CHECK: .short 3
+TEST2:
+ .dc.w 3
+
+# CHECK: TEST3:
+# CHECK: .long 8
+TEST3:
+ .dc.l 8
+
+# CHECK: TEST4:
+# CHECK: .long 8
+TEST4:
+ .dc.a 8
+
+# CHECK: TEST5
+# CHECK: .long 1067412619
+TEST5:
+ .dc.s 1.2455
+
+# CHECK: TEST6
+# CHECK: .quad 4597526701198935065
+TEST6:
+ .dc.d .232
+
+# CHECK-ERROR: error: .dc.x not currently supported for this target
+TEST7:
+ .dc.x 1.2e3
Index: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
===================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp
@@ -426,6 +426,7 @@
DK_SET, DK_EQU, DK_EQUIV, DK_ASCII, DK_ASCIZ, DK_STRING, DK_BYTE, DK_SHORT,
DK_RELOC,
DK_VALUE, DK_2BYTE, DK_LONG, DK_INT, DK_4BYTE, DK_QUAD, DK_8BYTE, DK_OCTA,
+ DK_DC, DK_DC_A, DK_DC_B, DK_DC_D, DK_DC_L, DK_DC_S, DK_DC_W, DK_DC_X,
DK_SINGLE, DK_FLOAT, DK_DOUBLE, DK_ALIGN, DK_ALIGN32, DK_BALIGN, DK_BALIGNW,
DK_BALIGNL, DK_P2ALIGN, DK_P2ALIGNW, DK_P2ALIGNL, DK_ORG, DK_FILL, DK_ENDR,
DK_BUNDLE_ALIGN_MODE, DK_BUNDLE_LOCK, DK_BUNDLE_UNLOCK,
@@ -1905,6 +1906,23 @@
return parseDirectiveWarning(IDLoc);
case DK_RELOC:
return parseDirectiveReloc(IDLoc);
+ case DK_DC:
+ return parseDirectiveValue(2);
+ case DK_DC_A:
+ return parseDirectiveValue(getContext().getAsmInfo()->getPointerSize());
+ case DK_DC_B:
+ return parseDirectiveValue(1);
+ case DK_DC_D:
+ return parseDirectiveRealValue(APFloat::IEEEdouble);
+ case DK_DC_L:
+ return parseDirectiveValue(4);
+ case DK_DC_S:
+ return parseDirectiveRealValue(APFloat::IEEEsingle);
+ case DK_DC_W:
+ return parseDirectiveValue(2);
+ case DK_DC_X:
+ return TokError(Twine(IDVal) +
+ " not currently supported for this target");
}
return Error(IDLoc, "unknown directive");
@@ -4763,6 +4781,14 @@
DirectiveKindMap[".error"] = DK_ERROR;
DirectiveKindMap[".warning"] = DK_WARNING;
DirectiveKindMap[".reloc"] = DK_RELOC;
+ DirectiveKindMap[".dc"] = DK_DC;
+ DirectiveKindMap[".dc.a"] = DK_DC_A;
+ DirectiveKindMap[".dc.b"] = DK_DC_B;
+ DirectiveKindMap[".dc.d"] = DK_DC_D;
+ DirectiveKindMap[".dc.l"] = DK_DC_L;
+ DirectiveKindMap[".dc.s"] = DK_DC_S;
+ DirectiveKindMap[".dc.w"] = DK_DC_W;
+ DirectiveKindMap[".dc.x"] = DK_DC_X;
}
MCAsmMacro *AsmParser::parseMacroLikeBody(SMLoc DirectiveLoc) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23810.69039.patch
Type: text/x-patch
Size: 3009 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160823/a0d07992/attachment.bin>
More information about the llvm-commits
mailing list