Index: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h =================================================================== --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h @@ -38,6 +38,14 @@ explicit AArch64MCAsmInfoCOFF(); }; +struct AArch64MCAsmInfoMicrosoftCOFF : public AArch64MCAsmInfoCOFF { + explicit AArch64MCAsmInfoMicrosoftCOFF(); +}; + +struct AArch64MCAsmInfoGNUCOFF : public AArch64MCAsmInfoCOFF { + explicit AArch64MCAsmInfoGNUCOFF(); +}; + } // namespace llvm #endif Index: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp =================================================================== --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp @@ -102,10 +102,17 @@ } AArch64MCAsmInfoCOFF::AArch64MCAsmInfoCOFF() { - CommentString = ";"; PrivateGlobalPrefix = ".L"; PrivateLabelPrefix = ".L"; AlignmentIsInBytes = false; SupportsDebugInformation = true; ExceptionsType = ExceptionHandling::WinEH; } + +AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() { + CommentString = ";"; +} + +AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() { + CommentString = "//"; +} Index: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp =================================================================== --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp @@ -69,8 +69,10 @@ MCAsmInfo *MAI; if (TheTriple.isOSBinFormatMachO()) MAI = new AArch64MCAsmInfoDarwin(); + else if (TheTriple.isWindowsMSVCEnvironment()) + MAI = new AArch64MCAsmInfoMicrosoftCOFF(); else if (TheTriple.isOSBinFormatCOFF()) - MAI = new AArch64MCAsmInfoCOFF(); + MAI = new AArch64MCAsmInfoGNUCOFF(); else { assert(TheTriple.isOSBinFormatELF() && "Invalid target"); MAI = new AArch64MCAsmInfoELF(TheTriple); Index: llvm/trunk/test/MC/AArch64/coff-gnu.s =================================================================== --- llvm/trunk/test/MC/AArch64/coff-gnu.s +++ llvm/trunk/test/MC/AArch64/coff-gnu.s @@ -0,0 +1,11 @@ +// RUN: llvm-mc -triple aarch64-windows-gnu -filetype obj -o %t.obj %s +// RUN: llvm-objdump -d %t.obj | FileCheck %s + +func: +// Check that the nop instruction after the semicolon also is handled +nop; nop +add x0, x0, #42 + +// CHECK: 0: 1f 20 03 d5 nop +// CHECK: 4: 1f 20 03 d5 nop +// CHECK: 8: 00 a8 00 91 add x0, x0, #42