<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/57509>57509</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            LLVM format - wrong parsing of do {} while
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          MaJerle
      </td>
    </tr>
</table>

<pre>
    Following code is wrongly processed by clang-format. It won't compile afterwards.

```c
void
PostSleepProcessing(uint32_t ulExpectedIdleTime) {
    do {
#if 0
        if (a) {
#else
        if (b) {
#endif
        }
    } while (1);
}
```

Generated
```c
void
PostSleepProcessing(uint32_t ulExpectedIdleTime) {
    do {
#if 0
        if (a) {
#else
        if (b) {
#endif
    }
}

while (1) {
    ;
}
}
```

Format file

```
---
Language:        Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveMacros:
  Enabled: true
  AcrossEmptyLines: true
  AcrossComments: true
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields:
  Enabled: true
  AcrossEmptyLines: true
  AcrossComments: true
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Right
AlignOperands: Align
InsertBraces: true                                      # Control statements must have curly brackets
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: AllDefinitions
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
  - __capability
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterCaseLabel:  false
  AfterClass:      false
  AfterControlStatement: Never
  AfterEnum:       false
  AfterFunction:   false
  AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct:     false
  AfterUnion:      false
  AfterExternBlock: false
  BeforeCatch:     false
  BeforeElse:      false
  BeforeLambdaBody: false
  BeforeWhile:     false
  IndentBraces:    false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     120
CommentPragmas:  '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat:   false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle:    ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IfMacros:
  - KJ_IF_MAYBE
IncludeBlocks:   Preserve
IncludeCategories:
  - Regex:           '^<(.*)>'
    Priority:        0
  - Regex:           '^"(.*)"'
    Priority:        1
  - Regex:           '(.*)'
    Priority:        2
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: AfterExternBlock
IndentRequires:  true
IndentWidth:     4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
PPIndentWidth:   -1
ReferenceAlignment: Pointer
ReflowComments:  false
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Always
ShortNamespaceLines: 1
SortIncludes:    CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
  AfterControlStatements: true
  AfterForeachMacros: true
  AfterFunctionDefinitionName: false
  AfterFunctionDeclarationName: false
  AfterIfMacros:   true
  AfterOverloadedOperator: false
  BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles:  Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
  Minimum:         1
  Maximum:         -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard:        Latest
StatementAttributeLikeMacros:
  - Q_EMIT
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TabWidth:        8
UseCRLF:         false
UseTab:          Never
WhitespaceSensitiveMacros:
  - STRINGIZE
  - PP_STRINGIZE
  - BOOST_PP_STRINGIZE
  - NS_SWIFT_NAME
  - CF_SWIFT_NAME
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdWV132jwS_jXkxic5xCRpc8EFEOi6JUCBvD3dG46wB9BbY_mV5STsr9-RZEvyV9qrvVhOS8DzaDSa7xF7Fl2GMxbH7I0mRy9kEXg08944S47xxUs5CyHLIPL2Fy-MSXK8PjB-JuLGC4T3xpKe_0ngqnNKY_DIQQB_IzzKbnr9p15_VLw_9PW_UH9_ZTTSn1YsE5sYIF3pfVCEnv85p4kY-Dvh5fH0PYVQQBREMWzpGXr-o9f7NNarPXxFzH7v-QN68PqWKF_4BFmSykIEQpxBG3DfACYRPVSRvU9P9gF-8d5O8vS4-hZX9wbl4hJmzu8q5QskwAke7f9PR_bg5oN6r6ipKmKL0j7U3kw5oXdAhq2epr9eX1_rD3N03JwcoTcwR5mkqZHfGxN08WWyEZdYY-bzv541eRRKpT8zPCEFvjwcMhAScu0X9Jgek5F0_GUKyZiT8JcGKIKL4ZxcloeN4Hkocg6ZBC1YAg5mwpIMwlzQV3gmIWcSUyppmpB9jO6Cq5CFMcxIwrLpORWXOU001yZ9ws5nSESNWt9zhN51TAywW7gxFTMKcfQ_lu8JMAVh0FB81CLgNAtJCtEC3uJypzU9noQDQRtxkii5XQMFuAUX0nhWQO-PXtJ7UELBWexlAuNZHcM755nwTuQVvDDnmEf32i8yR5QtJxTlPHYdHTMyvo34MVfkZbKAdyFV2A5coWLOgG6YLQ-Onj5ctjkxLqZJfkbuow3KEsNHyHHMwl9NqLJtHTvBiJqTPaaQBv5ATF6x-FmehMquDThi6uA5Oe8j8kfQAAOutEoDv4BX4A3mjKW_EfqNXLIxB_JLxf0THGhCpfBrwMBOtpcU6t5ZXVHF4daWRdZYMQasuPCcx0K6C2D-QMGybpm2cE5jPHI9WH5CyVsgi30uminm2tvtMITIHncqTTqmyQp91_hh1TkKqnW-GllG1A9O0lRWLbuR0oJxEZVxncOU9JhkmcnYLXQddsa-NYsWKOneNu03uZSOpzFN-gIPlqV4jA4pl_u_J46qa3YpQDrpl2I06S-JkaCVPn3Ht0TFX2MD7R8TIsJT6waaPpVPWjfQdB1SY-wGOzb4IYt36wZBEqH2bfKs0zcpepNKEq6u3RpgEWsIGW_UEEuvWMP1MxMo6JGEX1SeF4yXZcJWtsYCdKMQUlEPl3bm5pAYRAQVXgcEyQk4FQRZyrxOaspUSAczp5nyilKSmCUNllu0fP1ENeFkiVQexngg0wiJ6X8wFkuuHXJ0rOqWR7niV_JKVO0fJQkTVl917jpPzSkuQUpVaGScn5M5PVMTE7d-v6Spcrji5Hgm2p9wxujdT73gx88XHEjkc5lK8KFa8D1HwWVvpqpqmQjmgMXXcESPEcZ16uK260F79Q8aCRVWdwYraJKrY3cg0vT2VvlJJK1rWkp7-ie0_qsqLFPsm1VebFBXDPv72pEckZ9oJpst3QU3MpdptpTBqg1sLUkaqLZ4EztnRxqSWKcevQTHDU6lUCQe5YI9Yd4PRVEIiuM4wsinH3maXlc4Tr0N17YvLd3OBsvnEtscpdAlxw8r4F2tBr51yNLVJ83ou3Gc9k4NjTDFVNBSTKVGTZKQD77vZsv1dDT5l300Xi432-rj4NDC69vXXTDbPY9-jqdlyxrGeQS6J9PKWuFQAbx0-wKAhQGOjFOo8lvDEd6dccgrw6w3mOCEdtPzR2qWnRrte2oHiqzExVnY_xOevu_wlF8-5nn7W54Ot49Z-RVlBNkzoYnhqTltAZOwPOus598ZfpUVG5bzEKrrDE5mgWrg1DOMxtiWuOpAlmqN2Vj8hQnWvXi1eqIcoxAzR20w0vRa_9DoKRzoGv7JaTGdNvYxyU6-7ioU2eRBVFZ4FTONg8ghyx17SE1YWVs2Iaep-J4zoRk4idyS5W7BOcVuvaaObwCpnTVHYnvChplwsTxY3Vq0bXr0IUwHt8G0S-SQrnEqHhWDMRxpUncBS8aErrVTJb9bkbZMiihBhZOb7FITwWpFdphln83RDUIWl32DzL8OSIpQM5TvkG1PsUCXh0jhVeteVYsEb6RIyk9wT0z4ot4XGpDmWJfMcltBQmJx0R2EbcOsbC5AM5tRnmFAOEOtUthjE1-kZEke9PtNuuI0x9CU_xUTvwUlb25wK2R0gowqXAtKdzSKSb9tr5bBS4Mr0Om7zBSTEyLC8mB99arA7Ii4TAIcXd-SsjY9VIHa3hBhfy5sa1xiWtqIORyKJni1akT1deGVazgA6gNdwF1asDMQrKhuTXTdYw1n9lr0y-oyreo9G0ilisAOvjY-9Sxb4OREbkLEXCAVUm7kgK_zdDl5yDS6gSSjMhdalEodMrhCnTZsk2sxL_JqtXsMsBExUQ0K7lRvyyykaJsWrBtSuss3uLw1Zh4nsmzMdIwADlaeXnftLbsWgSr9XHGoz89ZB3aZltr4cPxu3uyp8Vr3QKajaUEUJcO6grR3-xxtscZK3WCnj_K85r5LbIJjRiLsOAu9dky-mIlV_jYZolHZtFE5y5OoCBEzlCgoHo3ksWjod02SI6imF9Uk752M7WrWDbQEbRcALv03EhYDYdvF460LC5KRvPrSinOGhZKKlo-UoUj18qWxn4IK7J9kR942CBqYiajfHSFQedAMiegz745jPqMHnd37HqeXxDJcp13Xjv37zTf_5ERfA6jb3M4o-xBX3p4ra8tFRVkZM1EMC6jWJCI8coSdo6IzYcha6-Yqb05_tV3nfd9Nn4NtbVEr7mXxspk-OU-2u_X0-0uwnu7-mq43wXKhaVuyrzSB-PqsKS-Yetbzmatf58xIxaWVRt7xLFu8TO5ukXKzXQeLL8G_p_bRarVreaqHqnbaYrPb_Ahm291i9Ow8nswaj928Wh3qu-0-qY6VXfHcclnUAN7clD-ilj9qXcHw9uHB7z8M_Af_KhoOosfBI7kSVMQwlEXW07_N4nHU77ce1lhZ0zx2KH8DLH-svMp5PDwJkSoN-zj5zI5UnPL9TcjO-CWOX8s_1ylnf-NsgV9pluUYGv7s_tN9__HqNCT7T9Hn8LCPDjA4DO76D4-P4e3hPgT_LrwjKGSsRpZh736MY18Cb55iIUfA-6crOvT7vt9_7GNTdnvn395E8HhH7ga-H-3h_uBD764PZ0xWN1KOG8aPV3yoRNrnxwyJMdois0SiKiWA2g75k1xg-zB8Jl8x08OV2nqoRP8vzB3Zlw">