Index: lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h =================================================================== --- lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h +++ lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h @@ -38,6 +38,10 @@ explicit AArch64MCAsmInfoCOFF(); }; +struct AArch64MCAsmInfoCOFFGNU : public AArch64MCAsmInfoCOFF { + explicit AArch64MCAsmInfoCOFFGNU(); +}; + } // namespace llvm #endif Index: lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp =================================================================== --- lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp +++ lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp @@ -109,3 +109,7 @@ SupportsDebugInformation = true; ExceptionsType = ExceptionHandling::WinEH; } + +AArch64MCAsmInfoCOFFGNU::AArch64MCAsmInfoCOFFGNU() { + CommentString = "//"; +} Index: lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp =================================================================== --- lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp +++ lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp @@ -69,6 +69,8 @@ MCAsmInfo *MAI; if (TheTriple.isOSBinFormatMachO()) MAI = new AArch64MCAsmInfoDarwin(); + else if (TheTriple.isOSBinFormatCOFF() && TheTriple.isGNUEnvironment()) + MAI = new AArch64MCAsmInfoCOFFGNU(); else if (TheTriple.isOSBinFormatCOFF()) MAI = new AArch64MCAsmInfoCOFF(); else { Index: test/MC/AArch64/coff-gnu.s =================================================================== --- /dev/null +++ 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