[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