[PATCH] D49637: [AArch64] Use MCAsmInfoMicrosoft and MCAsmInfoGNUCOFF as base classes

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jul 21 12:32:06 PDT 2018


mstorsjo created this revision.
mstorsjo added reviewers: compnerd, smeenai, t.p.northover.
Herald added a reviewer: javed.absar.
Herald added a subscriber: kristof.beyls.

This matches the structure used on X86 and ARM. This requires a little bit of duplication of the parts that are equal in both AArch64 COFF variants though.

Before SVN r335286, these classes didn't add anything that MCAsmInfoCOFF didn't, but now they do.

This makes AArch64 match X86 in how comdat is used for float constants for MinGW.


Repository:
  rL LLVM

https://reviews.llvm.org/D49637

Files:
  lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
  lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
  test/CodeGen/AArch64/win_cst_pool.ll


Index: test/CodeGen/AArch64/win_cst_pool.ll
===================================================================
--- /dev/null
+++ test/CodeGen/AArch64/win_cst_pool.ll
@@ -0,0 +1,13 @@
+; RUN: llc < %s -mtriple=aarch64-win32-gnu | FileCheck -check-prefix=MINGW %s
+
+define double @double() {
+  ret double 0x0000000000800000
+}
+; MINGW:              .section        .rdata,"dr"
+; MINGW-NEXT:         .p2align  3
+; MINGW-NEXT: [[LABEL:\.LC.*]]:
+; MINGW-NEXT:         .xword   8388608
+; MINGW:      double:
+; MINGW:               adrp    x8, [[LABEL]]
+; MINGW-NEXT:          ldr     d0, [x8, [[LABEL]]]
+; MINGW-NEXT:          ret
Index: lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
===================================================================
--- lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
+++ lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
@@ -34,15 +34,11 @@
   explicit AArch64MCAsmInfoELF(const Triple &T);
 };
 
-struct AArch64MCAsmInfoCOFF : public MCAsmInfoCOFF {
-  explicit AArch64MCAsmInfoCOFF();
-};
-
-struct AArch64MCAsmInfoMicrosoftCOFF : public AArch64MCAsmInfoCOFF {
+struct AArch64MCAsmInfoMicrosoftCOFF : public MCAsmInfoMicrosoft {
   explicit AArch64MCAsmInfoMicrosoftCOFF();
 };
 
-struct AArch64MCAsmInfoGNUCOFF : public AArch64MCAsmInfoCOFF {
+struct AArch64MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
   explicit AArch64MCAsmInfoGNUCOFF();
 };
 
Index: lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
===================================================================
--- lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+++ lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
@@ -101,7 +101,7 @@
   HasIdentDirective = true;
 }
 
-AArch64MCAsmInfoCOFF::AArch64MCAsmInfoCOFF() {
+AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
   PrivateGlobalPrefix = ".L";
   PrivateLabelPrefix = ".L";
 
@@ -112,14 +112,23 @@
   AlignmentIsInBytes = false;
   SupportsDebugInformation = true;
   CodePointerSize = 8;
-}
 
-AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
   CommentString = ";";
   ExceptionsType = ExceptionHandling::WinEH;
 }
 
 AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
+  PrivateGlobalPrefix = ".L";
+  PrivateLabelPrefix = ".L";
+
+  Data16bitsDirective = "\t.hword\t";
+  Data32bitsDirective = "\t.word\t";
+  Data64bitsDirective = "\t.xword\t";
+
+  AlignmentIsInBytes = false;
+  SupportsDebugInformation = true;
+  CodePointerSize = 8;
+
   CommentString = "//";
   ExceptionsType = ExceptionHandling::DwarfCFI;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49637.156686.patch
Type: text/x-patch
Size: 2539 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180721/8bc53305/attachment.bin>


More information about the llvm-commits mailing list