Index: llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp =================================================================== --- llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp +++ llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp @@ -427,13 +427,13 @@ GroupName = getTok().getString(); Lex(); } else if (getParser().parseIdentifier(GroupName)) { - return true; + return TokError("invalid group name"); } if (L.is(AsmToken::Comma)) { Lex(); StringRef Linkage; if (getParser().parseIdentifier(Linkage)) - return true; + return TokError("invalid linkage"); if (Linkage != "comdat") return TokError("Linkage must be 'comdat'"); } Index: llvm/trunk/test/MC/ELF/comdat-declaration-errors.s =================================================================== --- llvm/trunk/test/MC/ELF/comdat-declaration-errors.s +++ llvm/trunk/test/MC/ELF/comdat-declaration-errors.s @@ -0,0 +1,14 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s \ +// RUN: -filetype=obj -o %t.o 2>&1 | FileCheck %s + +// Check we error out on incorrect COMDATs declarations +// and not just silently ingnore them. + +// CHECK: error: invalid group name +// CHECK-NEXT: .section .foo,"G",@progbits,-abc,comdat + +// CHECK: error: invalid linkage +// CHECK-NEXT: .section .bar,"G",@progbits,abc,-comdat + +.section .foo,"G",@progbits,-abc,comdat +.section .bar,"G",@progbits,abc,-comdat