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

    <tr>
        <th>Summary</th>
        <td>
            Clang (all versions) crashes on use '-Wconsumed' and loops
        </td>
    </tr>

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

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

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

<pre>
    [files.zip](https://github.com/llvm/llvm-project/files/9578150/files.zip)

https://godbolt.org/z/hzP8We8qz

```
struct [[clang::consumable(consumed)]] Ptr
{
    int id_ {};
                                
    [[clang::set_typestate(unconsumed)]]
    void operator=( int in_id ) { id_ = in_id; }

    [[clang::test_typestate(unconsumed)]]
    operator bool() const { return id_; }
};

static void foo( Ptr in_ptr ) {
    if( !in_ptr )
        in_ptr = 1;

    for( int n: "abc" ) 
        in_ptr = n;
}
```

```
Stack dump:
0.      Program arguments: /usr/lib/llvm-16/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/home/lester -resource-dir /usr/lib/llvm-16/lib/clang/16.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/backward -internal-isystem /usr/lib/llvm-16/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wconsumed -fdeprecated-macro -fdebug-compilation-dir=/home/lester -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-a3efa7.o -x c++ ./test.cpp
1.      <eof> parser at end of file
2.      ./test.cpp:12:31: parsing function body 'foo'
 #0 0x00007f654aa82591 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xf13591)
 #1 0x00007f654aa80760 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xf11760)
 #2 0x00007f654aa82a7d (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xf13a7d)
 #3 0x00007f6549633520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f6552739bbe clang::consumed::ConsumedBlockInfo::getInfo(clang::CFGBlock const*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1dcabbe)
 #5 0x00007f655273ba56 clang::consumed::ConsumedAnalyzer::run(clang::AnalysisDeclContext&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1dcca56)
 #6 0x00007f6551ae9a48 clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::sema::FunctionScopeInfo*, clang::Decl const*, clang::QualType) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x117aa48)
 #7 0x00007f6551b5cef1 clang::Sema::PopFunctionScopeInfo(clang::sema::AnalysisBasedWarnings::Policy const*, clang::Decl const*, clang::QualType) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x11edef1)
 #8 0x00007f6551ccf0aa clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x13600aa)
 #9 0x00007f6551500c95 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xb91c95)
#10 0x00007f655151a905 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbab905)
#11 0x00007f6551472273 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xb03273)
#12 0x00007f65515199ca clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbaa9ca)
#13 0x00007f6551519437 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbaa437)
#14 0x00007f6551518759 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xba9759)
#15 0x00007f65515169f4 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xba79f4)
#16 0x00007f655145917e clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xaea17e)
#17 0x00007f65525d49fa clang::CodeGenAction::ExecuteAction() (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1c659fa)
#18 0x00007f6552f13026 clang::FrontendAction::Execute() (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x25a4026)
#19 0x00007f6552e90da6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x2521da6)
#20 0x00007f6552f8eb40 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x261fb40)
#21 0x000055cb7968a346 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-16/bin/clang+0x13346)
#22 0x000055cb796884a8 (/usr/lib/llvm-16/bin/clang+0x114a8)
#23 0x000055cb796882ff clang_main(int, char**) (/usr/lib/llvm-16/bin/clang+0x112ff)
#24 0x00007f654961ad90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#25 0x00007f654961ae40 call_init ./csu/../csu/libc-start.c:128:20
#26 0x00007f654961ae40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#27 0x000055cb796853b1 _start (/usr/lib/llvm-16/bin/clang+0xe3b1)
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Debian clang version 16.0.0-++20220909072630+a3a8bd00c8f1-1~exp1~20220909072734.741
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFWl1zm7oW_TXOC4OHDwPmIQ9O3PRkpr3NbTKnjx4hhM0pRhwBqdNff9aWcGw5jpt0fM91XYyEtLXW0tbWB8lk_nQ5iq6KshLt-GfZjKL5KJiuuq5pR-FsFNzguyy7VZ-NuVwjUVWP2x-3UfIvwTskdX38plEy9SNvm6MtBunIm4-8mbkemJZ5JqtuLNUSqZ_4v_p5N_0mpn__3K80ir3hq5Ntp3reOcCNL69YvSSD4YzLuu3XLKsEOJiEyKl9kIrmzl2nBnPJlblx8CnrzinzhUOZyXwU7j069dmVegGjFd2ie2pE27GOkPT1Cyy72o-yzB3ZCMU6qUYhqW8g1Qs8QAUCZgCGc5MLjA5B3RPoKI4OCN4OZIvByaSsUJiapuKdBqBE16uacNit7ym27RvWldzQKqQkOtCdgDf4GfjsqV9QiVHg7wrY-m_zQd4_aIoeFxBtUKwGZdQPWMZxNU29ZqremXqmYvvY0cz7jvHvTt6vG1JYZ3ljY_xOyaVia4epJQSuu9aguelbRcOlzLaDxo9xl5U1rrqvHJdz33E7VTaVcDbTeBFP3Ia7VVn3G3dZ944r1mXnyuwvx10rUbGNy6rKcbcJXCWH6Ogrx83LlvzfLZQQsFwJplzWdm4moJRwM-AXdb4rpyE9ClUWpVA6mzOVu4-s6oVbs7WAzTUra5fGs85wyK3GvGkMmqFpdy1zUTkNut7Fxa3EI5KBSZQtfgBnXUAh4TYS3SXI2TWPYs26lSuUqiUSRePC6zrFEFfCuayRVUtXyb7Oy3rpUlkY0o5JQUCCXlWylnAWff2jrHO3I2bQf47mO_SH6Fze9CStG0-Q1ddCZyxFDeIAvCYVqAsE61wIUBkJy43ICRe10bo_mKpL6q5cZP1yKRQZKmmszZd5hta5hI5sCdty3ZSVkSUvzaC-Wcm1IBeAeCS0Eq3sFRdU4HU3MWkzpIMbPx57Y89xtXo1q6DrE6ytd_WNW43Hz1WXHGPhZnCqZ48iW8G24MGlrHnV5wQVNa_0F4X_tUaP1Pq_4NhvlGxj3MAB8lPtv6Xzdm2ctIRBVb2t6BlIHyn7smGxoRv-EsDrXXe69vubcNxv2-kLoy0XjRKIPRiia8aV1FkYmG8afYUZ1VWJwOr4KTKAl1McbFENVSbjYOzTmN5sgIuLZgivhZXgsoKVvGTLWraY9SiP5TmMIEzMF4uP19eLP2Z_fljMv82-3gSL65vbxez-M-zDtiSCHWYSXAHLZaEoWDIGkY0zeJ8zHh5SuDXTjT9MN6PwWshiFH5wGqZacGKdQ4FdFg5FalM4GApbZsIZPCGchT5NUFSZghpCJydWmPzzJwBL9NSdDPPnKAg9x9t4-CRFHE0YmwZR6jt6LWiWPE-tublT6E89TT4ghNOiY1dIsR8L6IQoixUkRsg1Tdt6mqbVxsmZcs_Bcf306c_PeDpu5diHTN6m8EPg2a0dANg_AOwlsXcM8Ne-vi-X8L8_WJ1XcIBh6XMGTD6atDAFhyKyJD8LedixGgr3G0rjMIwCb2jI2Dky5vGAk9FYG50EqGLZnOzZjIIkTLNMOC8W31ha6tT1kLpCLPt-WxfSZGMu1gksz3c1r28-6mJmuTkKZr-jv7aHab3RwhgSfs4ZUFo0ogMaGYviX9OYwUGeftKaRTtyX9sM9OO2bOeCV6jSIZRpDz8bDQ6UFo14n4bPRMomU8fag6yZje0Ki6T8m1nEDL5_27a9eM6yGL2p_p2sSv5EA_lozZshqNxz7C1Mt88OCpNge91uPftvz6oH7F7OJqOfMKhkyZhYMmYRF4W_j-H-mcydbI7w-U3JXqP878ohcrC15JhacnBeeIwdl2PGuy81ZuayXW1lucLUYStCdF4Sue_WW3pmq3kmPmHsAa7FJ7X4RJ7H02gfyp2eO_fun7uYdsy0jXsrqReWtJOcMQhkqQ_wu8MUzHCezc5nqfc2dnNRoOfozqZ2Z1YDxJCZ8wgzTZ-ymT-IdYPllh4QW989VesTypqas65Tn8qzRvyMZRDBUsm3VJokAYL-SUZE_yM2nM2r4tw3gr8kuZPteQp4KYImXWZ9R8dlhxbu9Zbw07ClPu1kN1J9xQPIXp5VQC-EPpaAwYGbpSlnvxTwi9pzttthif9S0NN6_FLyGeeibemZPr84nxcxcLRECA9FmGDu-JUI5A1QwNLi1YH3TikOfeN_JwWYWlJMDqSYJlF6UooPG9P9e5Kcg_65CKbAbxGMDgjGaTE5SfBBNp_ovMtMDfvMvjTs717QwXN4fRAqdIj5KmgPdyQSPE-0n2XeV-J23UjV3Ztz3PPNKSwBNYu7va6cYFeViBfcZ_cPNk0N15AwU_p5p3YmGGBYOK2FWxDlk7SwgtK1zMVHUc_0sDNZHzaCw7uGrN_b5R1dePA4QusWPGshFWCH5gXWLuNG0RRR50fwnRFZELGJF8QWMmtJFIjUy1lsC0fHJ0LdYiJnNXbwR7V7ncr5vBM7UB_g9tEHnq3rVGQTbx_9gHNH4vF5Mp2eInm-eBLEfgFQFurtEiSKeJak8ZSFE2jO_QWdrFtHJDOl2JMOCtd8xdRuL0BBAhHCykMGvWZ5M_jhKFKvlYHAghgcQJxO2PR9Jn3UsEyGhyaDojB9teWtj38MK03i_Tx82LQandgnHz7LU89ZLKizFuhr1S04qyoNQB-L8bbfdmv71OaiobeYddNVQw8fVhqv0EvRFBcAem41OmxVkFtSHZruDxsyt2Td1dbHnMwFZDTwdkbjY0YtKsdYHDUeJinB3tlODvomCjPfMVbf1QEC9Z713w4wR5-u0k1f05sUp5OOMAMTzrtes5pOV5x7saQdlh6eTsH6qnvNjHlPVgyBZmsDdTCGcyfvdQutPsUj9H0rHPdR5wnhlHsxYAA6F1nJ6sHscOjrmAN615y8Bl4QeCn-JUEcYjBfsZBNsxwbyGnhu_4o-SA2Df3sFUzCyTiZ-KaJB_3eicAfeaM3FFkpwXJHvzijgo1sy415pONSBXLzUgsw2j_ut19MXohLP47hLdNgGlzkl2Gehim76MquEpfXmiEkoRdtA9FWv9hVrF2J1gFvUmsUJLvDdSQckreSsmkvelVdvvvPAUo6WKKRFCVJHF-sLlnMJ0kMT06SMCqmPiJgkBap4HHKPM6Ki4plomrpTxFGQVCLH442gftRNL8oL43MtNiMpl4wjtJsKrwcfZGyfDqZjCYeViBlNSYc9McEF-pSQ8r6ZYuHFXaZ7e4ha8lZhNDNwT7ru5VUl7dLqf5Tfsf6vL7QzV9q-P8ABFroUA">