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

    <tr>
        <th>Summary</th>
        <td>
            int128 as underlying enum type leaks memory
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend
      </td>
    </tr>

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

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

<pre>
    Code:

```c++
enum A : __int128 {
  a,
  b
};
```

Leak reported by asan:

```
Direct leak of 32 byte(s) in 2 object(s) allocated from:
    #0 0x3e3301 in operator new[](unsigned long) (/home/tbaeder/code/llvm-project/build/bin/clang-18+0x3e3301) (BuildId: f60b6049740dff9abb50a1499d5e41906fc6ed51)
    #1 0x7f7bdcfbfdfe in getMemory(unsigned int) /home/tbaeder/code/llvm-project/llvm/lib/Support/APInt.cpp:45:10
    #2 0x7f7bdcfbfbf3 in llvm::APInt::initSlowCase(llvm::APInt const&) /home/tbaeder/code/llvm-project/llvm/lib/Support/APInt.cpp:86:12
    #3 0x7f7c20dcb581 in llvm::APInt::APInt(llvm::APInt const&) /home/tbaeder/code/llvm-project/llvm/include/llvm/ADT/APInt.h:158:7
    #4 0x7f7c2176a5c6 in llvm::APSInt::APSInt(llvm::APSInt const&) /home/tbaeder/code/llvm-project/llvm/include/llvm/ADT/APSInt.h:23:21
 #5 0x7f7c22be7fc6 in clang::EnumConstantDecl::EnumConstantDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr*, llvm::APSInt const&) /home/tbaeder/code/llvm-project/clang/include/clang/AST/Decl.h:3262:62
 #6 0x7f7c22bc2833 in clang::EnumConstantDecl::Create(clang::ASTContext&, clang::EnumDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr*, llvm::APSInt const&) /home/tbaeder/code/llvm-project/clang/lib/AST/Decl.cpp:5376:22
    #7 0x7f7c27b0048e in clang::Sema::CheckEnumConstant(clang::EnumDecl*, clang::EnumConstantDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::Expr*) /home/tbaeder/code/llvm-project/clang/lib/Sema/SemaDecl.cpp:19743:10
 #8 0x7f7c27b02e75 in clang::Sema::ActOnEnumConstant(clang::Scope*, clang::Decl*, clang::Decl*, clang::SourceLocation, clang::IdentifierInfo*, clang::ParsedAttributesView const&, clang::SourceLocation, clang::Expr*) /home/tbaeder/code/llvm-project/clang/lib/Sema/SemaDecl.cpp:19808:5
    #9 0x7f7c21265efd in clang::Parser::ParseEnumBody(clang::SourceLocation, clang::Decl*) /home/tbaeder/code/llvm-project/clang/lib/Parse/ParseDecl.cpp:5301:35
 #10 0x7f7c2125905b in clang::Parser::ParseEnumSpecifier(clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext) /home/tbaeder/code/llvm-project/clang/lib/Parse/ParseDecl.cpp:5220:5
 #11 0x7f7c2124bc69 in clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) /home/tbaeder/code/llvm-project/clang/lib/Parse/ParseDecl.cpp:4413:7
 #12 0x7f7c212a0904 in clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*) /home/tbaeder/code/llvm-project/clang/include/clang/Parse/Parser.h:2452:12
 #13 0x7f7c2171d673 in clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /home/tbaeder/code/llvm-project/clang/lib/Parse/Parser.cpp:1143:3
    #14 0x7f7c2171c018 in clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /home/tbaeder/code/llvm-project/clang/lib/Parse/Parser.cpp:1261:12
    #15 0x7f7c21719d32 in clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /home/tbaeder/code/llvm-project/clang/lib/Parse/Parser.cpp:1065:14
    #16 0x7f7c21710c3e in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /home/tbaeder/code/llvm-project/clang/lib/Parse/Parser.cpp:755:12
    #17 0x7f7c2170e1fd in clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /home/tbaeder/code/llvm-project/clang/lib/Parse/Parser.cpp:602:26
    #18 0x7f7c211a4372 in clang::ParseAST(clang::Sema&, bool, bool) /home/tbaeder/code/llvm-project/clang/lib/Parse/ParseAST.cpp:162:25
 #19 0x7f7c33140d83 in clang::ASTFrontendAction::ExecuteAction() /home/tbaeder/code/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1183:3
 #20 0x7f7c2ed59c12 in clang::CodeGenAction::ExecuteAction() /home/tbaeder/code/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1153:30
 #21 0x7f7c3313efbf in clang::FrontendAction::Execute() /home/tbaeder/code/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1069:8
 #22 0x7f7c32c5c476 in clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/tbaeder/code/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057:33
[...]
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkmd2OozoSx5_GuUEn8gfm4yIXdDI5aqmPZnbT2tuRMUWaHbBZY2Y6b78yhISQZLpnJlnt6EhRIATK__q5KFeBaJpiqwAWiD8gvpqJ1r5os7CpgAyMmaU62y2WOgPEEoRXCA_fAe4_EtEH9-mOgmorL_EQS7zPnwtlCY08FO7_9DyB6HLYT_d2whViDxOb44GeQHzxDNTaWMi8dOeJRqhrYvqfq8KAtF7prtS5x6iX7iwgGjWIxl6hPOrp9N8g7XBIlKWWwtnPja4Oxj3P8xBl2MOvDBjDxF2razDCauMp-NYzQzRqVUcx80qtts4iohGi6xddAaLrPUxE19KBpOuy_Fr9URvda1inbVFmblsod04p1PYPEiH6MIy7t_jgznvMHN08wGmA_Tj0cZbnsUhTjgXx4zjj4JMYB7kMIOPuyhNfiIdfwzxMM5mneZaD82gL9i-otNmNHSmU7Ud9rxPup9sUKaLrTVu7CUN0nXx6VHYu6xqxxOeIJQSfCKJjQWnOnKDOFEsQS7qr-91CFXZT6m9L0bipnJzjSa0ai2hwc9FR4ETTE9GsFy0pzmTKI3JVdL97Y7WFkmV7-N_JXT0fRL84tTxCLAlPJPuDZBIGgstgKnkz0rw5F725n-rNIJsy90X2shFlfNBMUwjzXnN3d_SqPqi2WjpJQtkVyPLKURqNrnFHllpZeLWIJoguxwY3ujUSnlwqKLSa_PmYgbJFXoB5VLk-v_gfrSifdzVMDn94rc3-5Bvx7I2PgQ5Hko0j6lzseDIaUMSSgB6JBkeikkaMvYvo0oDo0ufozGTzfMAYTF1WbdWT_70B91lhBLVPCJyFLiXQ05QQDmTDFGM_ggnZDVRiT_MF5Jcx6FOw1-GdB_ZN8R44_jyqzsl-M-JF4tBn48SPKItGtCiE_CqtRNqP6jqtjdQuIKa-XMZzB2ifhGkgS6w1RdpaaP5VwLdR1L1_oDvSj7BbDfhJtMaH1YAGHPJswr9zy4z23Qw86Gw3of89jw60f96jbuhhe3IHYuLyGz8GFMFHj3iMefoejzY1yG5yf9Atd935_J4NkT1DVZfCgouda1GRSAlNM1Jy1eYw8iHv3gEspXgUK44rOXL1UxnEb3F11oTpyB2cas7X4P8ThFfPfBIWjjf3U9FcKBceq7osZGHdoqREBXecGN8nbFTSuYmhx4kROMb-33tiblNAneA3fVHqczpuABx6dqylSRaE0yrqIvqPZt0q6eivIH9UFowSk9p0uphcmYY3zyjU9vpMns3JjYLVDOsN6RZ7dtp1jroPIjGJfiBYT8C5JrDLyXfnNr3Z786NBuS80SR8BC7OGH1zWXvtI2sE8H8D69Y4cNA9LPBPcQQjHFiyaZV9huNZ10_wFcrzRvBjLf7TwidrEFtOUuCfRrf1PyFH7MOFKu5Qmv6ls7aEx6rWxm5s1yH9UqNxkUPI-YWoCI8YMJC3y7d1YRr727MIsMvENDhlcWglCBE-Cy_eIV0PF02V9_6kWpfH7Y0kJ5vnIZC7HpyOS6qh-GaM-DiLpstHsnleG7cOqizp8t7QIYBsLewP0ehXtA72R7u93UMSj8ZJHFFGD_U1ZDyWZIp5qTP4E9S9BO_NH_cmcnknd9RgUnKEzCBP84ne7xC-N1scxIgl0UjrUMoxKrn0w-lzrqWu6qJ0LajrgCVcxnvduV-7FUf-TIUcPOKhw78PF8Qf5vM54qvJs_lZtmBZzGIxgwUJMWc0IDSYvSxYgGOWg_Q5xjwOQinjnALnfkqwoH46KxYUUx8TwgnzKfbn0g-jUPAwDnAe5owiH0MlinLuPJlrs50VTdPCIoxIgGelSKFsuhcclA6Y8oNbFPHVzCw6CGm7bZCPy6KxzdGYLWwJi_3rDNF4rcrAlLtCbb3uhYfd1dC9bWi8qnuQPmtNuXixtm7chNA1outtYV_adC51NXrsfMq909wguu5k_zcAAP__CSfbGQ">