diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -5020,9 +5020,11 @@ while (!getLexer().is(AsmToken::EndOfStatement)) { Parser.Lex(); } + Parser.Lex(); return true; } } + Parser.Lex(); return false; } diff --git a/llvm/test/MC/AMDGPU/round-trip.s b/llvm/test/MC/AMDGPU/round-trip.s new file mode 100644 --- /dev/null +++ b/llvm/test/MC/AMDGPU/round-trip.s @@ -0,0 +1,13 @@ +# RUN: llvm-mc -preserve-comments -triple amdgcn-amd-amdhsa %s >%t-1.s +# RUN: llvm-mc -preserve-comments -triple amdgcn-amd-amdhsa %t-1.s >%t-2.s +# RUN: diff %t-1.s %t-2.s + +# Test that AMDGPU assembly round-trips when run through MC; the first +# transition from hand-written to "canonical" output may introduce some small +# differences, so we don't include the initial input in the comparison. + +.text + +# The AMDGPU asm parser didn't consume the end of statement +# consistently, which led to extra empty lines in the output. +s_nop 0