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

    <tr>
        <th>Summary</th>
        <td>
            Assertion failed: (!hasObjCLifetime()), function addObjCLifetime
        </td>
    </tr>

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

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

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

<pre>
    $  cat test.mm
```
@class MyClass;

template <class T, class T1> struct pair {
  T first;
 T1 second;
};

MyClass *p0, *p1;
const pair<MyClass *, MyClass *> p = {p0, p1};
bool b;
MyClass *const t = b ? p.first : p.second;
```

$ clang++ -fobjc-arc -std=c++11 -c -o /dev/null test.mm
```
0  clang-16                 0x0000000102fd6678 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 80
1  clang-16 0x0000000102fd6c1c PrintStackTraceSignalHandler(void*) + 28
2 clang-16                 0x0000000102fd4b30 llvm::sys::RunSignalHandlers() + 152
3  clang-16                 0x0000000102fd5e28 llvm::sys::CleanupOnSignal(unsigned long) + 116
4  clang-16 0x0000000102e60504 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) + 180
5  clang-16                 0x0000000102e609d4 CrashRecoverySignalHandler(int) + 236
6  libsystem_platform.dylib 0x00000001900872a4 _sigtramp + 56
7  libsystem_pthread.dylib 0x0000000190058cec pthread_kill + 288
8  libsystem_c.dylib 0x000000018ff922b8 abort + 180
9  libsystem_c.dylib 0x000000018ff91610 err + 0
10 clang-16                 0x000000010896f364 clang::Qualifiers::addObjCLifetime(clang::Qualifiers::ObjCLifetime) + 132
11 clang-16                 0x000000010896f2cc clang::Qualifiers::addQualifiers(clang::Qualifiers) + 220
12 clang-16 0x000000010896f078 clang::Qualifiers::operator+=(clang::Qualifiers) + 52
13 clang-16 0x0000000108936a20 unwrapSugar(clang::SplitQualType&, clang::Qualifiers&) + 96
14 clang-16                 0x00000001089365ec clang::ASTContext::getCommonSugaredType(clang::QualType, clang::QualType, bool) + 396
15 clang-16                 0x0000000107b31d5c clang::Sema::CXXCheckConditionalOperands(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::ExprValueKind&, clang::ExprObjectKind&, clang::SourceLocation) + 3012
16 clang-16 0x000000010781b350 clang::Sema::CheckConditionalOperands(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::ExprValueKind&, clang::ExprObjectKind&, clang::SourceLocation) + 316
17 clang-16 0x000000010780cf94 clang::Sema::ActOnConditionalOp(clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::Expr*, clang::Expr*) + 1276
18 clang-16 0x0000000106f24f18 clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*, true>, clang::prec::Level) + 4608
19 clang-16 0x0000000106f23d00 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 308
20 clang-16                 0x0000000106f09170 clang::Parser::ParseInitializer() + 56
21 clang-16 0x0000000106eddb10 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) + 1956
22 clang-16                 0x0000000106edb9b8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1936
23 clang-16 0x0000000106fc4984 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1600
24 clang-16                 0x0000000106fc3ea8 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) + 168
25 clang-16                 0x0000000106fc2f30 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) + 3220
26 clang-16 0x0000000106fc0e54 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 2016
27 clang-16 0x0000000106ec9f80 clang::ParseAST(clang::Sema&, bool, bool) + 684
28 clang-16                 0x00000001044e7dbc clang::ASTFrontendAction::ExecuteAction() + 296
29 clang-16 0x0000000103d90f70 clang::CodeGenAction::ExecuteAction() + 92
30 clang-16 0x00000001044e752c clang::FrontendAction::Execute() + 124
31 clang-16                 0x00000001043eb04c clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 824
32 clang-16                 0x00000001046056c8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1060
33 clang-16                 0x00000001002cdaac cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1240
34 clang-16 0x00000001002b7730 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 408
35 clang-16                 0x0000000104191538 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1::operator()() const + 40
36 clang-16                 0x0000000104191504 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1>(long) + 24
37 clang-16 0x0000000102e603a4 llvm::function_ref<void ()>::operator()() const + 32
38 clang-16                 0x0000000102e60328 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 260
39 clang-16                 0x000000010418d578 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const + 380
40 clang-16 0x000000010412809c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 716
41 clang-16 0x0000000104128328 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const + 160
42 clang-16                 0x0000000104144584 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) + 492
43 clang-16                 0x00000001002b6bb4 clang_main(int, char**) + 3848
44 clang-16                 0x00000001002f2c30 main + 36
45 dyld 0x000000018fd2fe50 start + 2544
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1zo7jS_jXkRpWUvsBwkQuPk-xm39nKvHFqa-9SQgiHGRAcSWTG59efEkg2YOywW6fO3kxqKgEkdT_9dKu7EcO0LnZSiNsg_BSEd1esNW-1umVvzDDJvl2ldba_DTAFgDMDjNDmpqoCeBfAdRBB96-_pZCXTGvw-35j_wbkkxvofhtRNSUzAgRk0897CfAGuEsUkHugjWq5AQ0rFAhWbjUALyAvlDYHeeAFAS14LbOjitXdRJ0DAQK8bqBVZC_QYRKvpe41BWQzmGtnDm_JPWhAQO4snl5Og4bK0rouQXq4HSztNZhucQoC8gCam84OEJA1aG6mFkzI7H9jagmSuwB_CvAncJ3X6Vd-zRQH19pkAbnj_QhC4JqD6xoE-CET7wF-kG1ZXnQXBL3oaxSB6Q_8AfsfBHGeRdEqBmX5XgVkHZC13uv-4osqpNkaxr-9KMZFgOPjJMW-v9baKMGqAEeWt0KaACfAmhE7CGgAYaKSIw4m8rfFTrLyVyazUqgAx-91kXUe64XiuBeKl5pFUwLnzHpu5UiVDnDslaAQ91rIYvZCgWfZ25SCybZ5csoCHLey24oZKGvrcacRRb1GeoYsEcEQUhDgmMla7qu61UCySuim80nitCmm354Fr9-F2m9qacQP81g1ZT_aW9rNCXDceWoD5uF434ULCRARTDIKRvqnnhyEBibO3AiAskj1XhtRvdrEkdequsn2ZZEO5CcQxivMKHjVxc4oVjWdlNAJWY2EmDclWDYnI4y54MBNeP1WlKULKRdT8VAOP5EQ53mCcRoDltbKjHlKPl6KIgSBUKpb6LcGXERvnEQ5iXyS6Hz5_y0ri7ywcdvdsyx7Sr9uPhe5MEVld-mFyeOZzuXExTxCizFhzj_ANHh0DpEPCew5wbM7wOqDq_iSvroRipla2WRJ7j5S6Pc4Imf0kYhhCFr5XbFm2-6YGkvcNmVhrNiXfSNc9jujMPI6ExexiC7kmEShGHG83r64fd3f74TZ1FVVyw6hyHowU8v7pyf4_GNb3jxEcsAYLsK4SgnKwhHGraiYy0d__rl5E_zbppZZYYpasvLJOklmk3hYczv6LHRbmr5z8CP3PxrlKrZRrQjI_SnX_-RqO-cPVrbi_wqZzQ8_pV8FN_Pj27pVXHyuObMgDk6AyEdnNBudqxilJIRnWP9J-d-g3FdgtDrDOOR5QucZX3PzJEeMT3LFROVFPCfGOD6WP3UZHa-8SfGsSVGOaY5GKfULU1qowfXzr9un_FMhmdpb8ULrDuPfD6QR4kYJ3l99Fu_ikINoBF1JRsk55CSD8CLydffKUwlpzgEfLrGpcMO0bUSNOG5D320uq9NRDhO0ugzrURamYGXx764nOhQj5ymM5u0VWZaiy4LvBC-Z6mJonRuh_H2t1jJbG6OKtDVikgSOk073yYmG7MW93D3KvAbdm8_lVQ-1emZy19k8DMzkYO6yNj4SWZqklwPVWvKLqtvm1MeF3NnRbSP4Kd4jA76uztgz4u-jfDLdlosY8Q0xnu9GopzTJKYfMvCkHlrZ7cc7kT9KI1T_0vGXDFo24yKra86F1nas64EOdkbQdXl4WQcU5ZwI9rHnXeCPzC9kYeb3_H_b-qnHz1rv08my1irKOc7J5V1__6P38YCE_43BLkMe2nY836hEOYcivBy4L3XTpX8rfwz-qWH_asUXo8Z15bDXn0U-2yEcK_PvddaW4rFqauVz-6Ebx9DXfDxf8yPBkzw-dcB6-zKp71Zfj6Lvpcc9dRRTpyde5HhKxSpLp33_g7IJSmZ9vfUVVvDWCPfoWE-w7-LxfAElWQLzcaXa1Jn4Rcgl0hN_PAJnhVv4IR7Bv4B9eO6CHU9k2TsoJSKFlI-tqJqiFOpRasMkF_OGnEd2jI74AGZZkaIRDCMejxuyTu0R0_uhSMSXMA8KA_QHeYQsQgExzxjjgHP0WrFCjo7r1kqxfbdnNvyNKV_C174xGz3DGzA5e0OYejB01vEQp6sVgcDbvUEv3S4YQNhWrCz_ENzUqj-YmkFycAH1_RdZljApSlBIRi7IVPHuk81mg-y7MpPZNABnKeqOXu2z11fkDxj69j4gm4FFRhVy5zJRT-TpypTpgr_qbqqzeX6iHXk1ihVG-3nnZLKytOFUq8FEO3d9TD-d63puuyUBpkdb_GGJ3X5uE_an2T31jvloOfOQdhEzOAbNXTV-VR2j3ahTaMF2BrOyTBn_9prLcZL_6bkZz91bkwcHtYccNV_AsIggYfSveeSDyPDnhGRZLesgjM7G5w6p-5HnVm5ZLsr9yLGXIXsiDnkyWRiwcRaufqaKmYDrvexPtumZGo9wDBN-lr-upLGTYu9JHdW_yUI74dzb5YWp61EDNrRldfi4Mv92bW0h-HwsnLHltzrV5w35rU4_F9qMDLlUBk-d5j5buu80S0lwnj1DBfLbhC5sahCl4fi9c6j9bnA9anZmupxzlP4T1Lj2wvexdGlvlUZp6sjw3ZXH0G3T9fDVKKaue6HL3nUhzjEnEFjBvQQftiHI9mU2-p6U4VyEEGjD3KcoHFI6-QJ8ld2SLCEJuxK3KFrFMSExTa7ebqOYwByShIU0I4IlKIlCzAgmEYwTivOr4hZDTCBBFGNKYXITE45SJiKEY0aSnAcUiooV5Y31202tdleF1q24jRBFyVXJUlHq7v8aYCzFd9ANBhgH4d2VurVrrtN2pwMKy0IbfZRiClOK27XWQtngADkrSmG932d89Mb05DNXV6IS6wJfJ8DkW9hVq8rbN2Oa7jMRfgjww64wb216w-sqwA9d6PV_rhtVfxXcBPihg6wD_NCZ9J8AAAD___bekO4">