diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -3354,12 +3354,14 @@ if (parseEOL()) return true; - if (FillSize < 0) { - Warning(SizeLoc, "'.fill' directive with negative size has no effect"); + if (FillSize <= 0) { + Warning(SizeLoc, "'.fill' directive with a size of '" + Twine(FillSize) + + "' has no effect"); return false; } if (FillSize > 8) { - Warning(SizeLoc, "'.fill' directive with size greater than 8 has been truncated to 8"); + Warning(SizeLoc, "'.fill' directive with a size of '" + Twine(FillSize) + + "' has been truncated to 8"); FillSize = 8; } diff --git a/llvm/test/MC/AsmParser/directive_fill.s b/llvm/test/MC/AsmParser/directive_fill.s --- a/llvm/test/MC/AsmParser/directive_fill.s +++ b/llvm/test/MC/AsmParser/directive_fill.s @@ -35,7 +35,7 @@ # CHECK: TEST6 # CHECK: .fill 1, 8, 0x2 -# CHECK-WARNINGS: '.fill' directive with size greater than 8 has been truncated to 8 +# CHECK-WARNINGS: '.fill' directive with a size of '9' has been truncated to 8 TEST6: .fill 1, 9, 2 @@ -51,7 +51,7 @@ TEST8: .fill -1, 8, 1 -# CHECK-WARNINGS: '.fill' directive with negative size has no effect +# CHECK-WARNINGS: '.fill' directive with a size of '-1' has no effect TEST9: .fill 1, -1, 1 @@ -77,3 +77,6 @@ TEST13: .fill TEST11 - TEST12+i, 4, 0x12345678 +# CHECK-WARNINGS: '.fill' directive with a size of '0' has no effect +TEST14: + .fill 1, 0