diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -357,7 +357,8 @@ if (Current.MustBreakBefore || (Current.is(TT_InlineASMColon) && (Style.BreakBeforeInlineASMColon == FormatStyle::BBIAS_Always || - Style.BreakBeforeInlineASMColon == FormatStyle::BBIAS_OnlyMultiline))) { + (Style.BreakBeforeInlineASMColon == FormatStyle::BBIAS_OnlyMultiline && + Style.ColumnLimit != 0)))) { return true; } if (CurrentState.BreakBeforeClosingBrace && diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -4617,6 +4617,42 @@ format("__asm {\n" "}\n" "int i;")); + + auto Style = getLLVMStyleWithColumns(0); + Style.BreakBeforeInlineASMColon = FormatStyle::BBIAS_OnlyMultiline; + verifyFormat("asm(\"xyz\" : \"=a\"(a), \"=d\"(b) : \"a\"(data));", Style); + EXPECT_EQ("asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + format("asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + Style)); + EXPECT_EQ("asm(\"xyz\" : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + format("asm(\"xyz\" : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + Style)); + + Style.BreakBeforeInlineASMColon = FormatStyle::BBIAS_Always; + EXPECT_EQ( + "asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + format("asm(\"xyz\" : \"=a\"(a), \"=d\"(b) : \"a\"(data));", Style)); + EXPECT_EQ("asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + format("asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + Style)); + EXPECT_EQ("asm(\"xyz\"\n" + " : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + format("asm(\"xyz\" : \"=a\"(a), \"=d\"(b)\n" + " : \"a\"(data));", + Style)); } TEST_F(FormatTest, FormatTryCatch) {