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

    <tr>
        <th>Summary</th>
        <td>
            Assertion failure: "conflicting locations for variable"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            debuginfo
      </td>
    </tr>

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

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

<pre>
    From https://bugzilla.redhat.com/show_bug.cgi?id=2226564:
```llvm
; RUN: llc < %s
define void @test() !dbg !4 {
  %a1 = alloca { i64, [3 x i64] }, i32 0, align 8
  %a2 = alloca [6 x i8], i32 0, align 2
  call void @llvm.dbg.declare(metadata ptr %a2, metadata !7, metadata !DIExpression(DW_OP_LLVM_fragment, 80, 48)), !dbg !16
  call void @llvm.dbg.declare(metadata ptr %a1, metadata !7, metadata !DIExpression()), !dbg !16
  call void @llvm.memcpy.p0.p0.i64(ptr null, ptr null, i64 1, i1 false), !dbg !18
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare void @llvm.dbg.declare(metadata, metadata, metadata) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }

!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !2, producer: "clang LLVM (rustc version 1.73.0-nightly (31395ec38 2023-07-24) (Fedora 1.71.0-2.fc39))", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !3, splitDebugInlining: false)
!2 = !DIFile(filename: "src/cargo/lib.rs/@/cargo.c1756bb5859f0146-cgu.10", directory: "/builddir/build/BUILD/rustc-nightly-src/src/tools/cargo")
!3 = !{}
!4 = distinct !DISubprogram(name: "__deserialize_content<cargo::util::config::de::Deserializer, serde::__private::de::content::ContentVisitor>", linkageName: "_RINvYNtNtNtNtCsgBM6TfnZ7YU_5cargo4util6config2de12DeserializerNtNtCs8ELY4rCNAV8_5serde2de12Deserializer21___deserialize_contentNtNtNtNtB12_9___private2de7content14ContentVisitorEBb_", scope: null, file: !5, line: 1226, type: !6, scopeLine: 1226, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !1, templateParams: !3, retainedNodes: !3)
!5 = !DIFile(filename: "/builddir/build/BUILD/rustc-nightly-src/vendor/serde/src/de/mod.rs", directory: "", checksumkind: CSK_MD5, checksum: "fe168d8d4803c3f449894ca7aef5947a")
!6 = distinct !DISubroutineType(types: !3)
!7 = !DILocalVariable(name: "res", scope: !8, file: !9, line: 52, type: !14, align: 8)
!8 = distinct !DILexicalBlock(scope: !10, file: !9, line: 52, column: 13)
!9 = !DIFile(filename: "src/cargo/util/config/de.rs", directory: "/builddir/build/BUILD/rustc-nightly-src/src/tools/cargo", checksumkind: CSK_MD5, checksum: "3faaefd60c37a4d05ff3cc3354e2863b")
!10 = distinct !DILexicalBlock(scope: !11, file: !9, line: 51, column: 30)
!11 = distinct !DILexicalBlock(scope: !12, file: !9, line: 50, column: 9)
!12 = distinct !DISubprogram(name: "deserialize_any<serde::__private::de::content::ContentVisitor>", linkageName: "_RINvXNtNtNtCsgBM6TfnZ7YU_5cargo4util6config2deNtB3_12DeserializerNtNtCs8ELY4rCNAV8_5serde2de12Deserializer15deserialize_anyNtNtNtNtB15_9___private2de7content14ContentVisitorEB9_", scope: null, file: !9, line: 46, type: !13, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !1, templateParams: !3, retainedNodes: !3)
!13 = distinct !DISubroutineType(types: !3)
!14 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "(core::result::Result<serde::__private::de::content::Content, cargo::util::config::ConfigError>, cargo::util::config::value::Definition)", file: !15, size: 576, align: 64, elements: !3, templateParams: !3, identifier: "5b7515cf7e437618b1f84245f51f5b4c")
!15 = !DIFile(filename: "<unknown>", directory: "")
!16 = !DILocation(line: 52, column: 17, scope: !8, inlinedAt: !17)
!17 = distinct !DILocation(line: 1234, column: 9, scope: !4)
!18 = !DILocation(line: 62, column: 23, scope: !8, inlinedAt: !17)
```

Results in:
```
llc: /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:318: void llvm::DbgVariable::addMMIEntry(const llvm::DbgVariable&): Assertion `(FrameIndexExprs.size() == 1 || llvm::all_of(FrameIndexExprs, [](FrameIndexExpr &FIE) { return FIE.Expr && FIE.Expr->isFragment(); })) && "conflicting locations for variable"' failed.
[...]
 #7 0x00007ff4180497fc abort /usr/src/debug/glibc-2.36-9.fc37.x86_64/stdlib/abort.c:81:7
 #8 0x00007ff41804971b _nl_load_domain.cold /usr/src/debug/glibc-2.36-9.fc37.x86_64/intl/loadmsgcat.c:1177:9
 #9 0x00007ff418058656 (/lib64/libc.so.6+0x35656)
#10 0x00007ff41d4a5410 llvm::DbgVariable::addMMIEntry(llvm::DbgVariable const&) /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:308:7
#11 0x00007ff41d4ab54a llvm::DwarfDebug::collectVariableInfoFromMFTable(llvm::DwarfCompileUnit&, llvm::DenseSet<std::pair<llvm::DINode const*, llvm::DILocation const*>, llvm::DenseMapInfo<std::pair<llvm::DINode const*, llvm::DILocation const*>, void>>&) /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:1581:28
#12 0x00007ff41d4ac896 llvm::DwarfDebug::collectEntityInfo(llvm::DwarfCompileUnit&, llvm::DISubprogram const*, llvm::DenseSet<std::pair<llvm::DINode const*, llvm::DILocation const*>, llvm::DenseMapInfo<std::pair<llvm::DINode const*, llvm::DILocation const*>, void>>&) /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:1879:24
#13 0x00007ff41d4ae15e llvm::DwarfDebug::endFunctionImpl(llvm::MachineFunction const*) /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:2291:24
#14 0x00007ff41d45c662 llvm::DebugHandlerBase::endFunction(llvm::MachineFunction const*) /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp:412:18
#15 0x00007ff41d3ecd45 llvm::AsmPrinter::emitFunctionBody() /home/npopov/repos/llvm-project/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:1901:3
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsOVlP5Dj-n8a8RESxnfOBhzrI_EsDTKuv-c--lBzbCV4cu-Q4NPSnX9lJVSUFTQOa3tVKqy41vn73aYd0nWgU5xcgWYJkfUZ6e6vNhRJ3gp5Vmj1elEa3wa21uw7gBUAlQGXVN9-FlCQ0nN0SG1LdAlR2t_rbtuqbkDYC4FIwgNcIoTRJYwcZrUG0AGk0_KS8b8clvAw-frkBeBFISQOAVwFASTdsMl4LxYN7LVgA4sjyzgKUA1QEAEFWNe5PHIBsORwPHCiBAcDrgEipKXF7gUhjgFYBSJY4ePCzZB2AbO0WBUZB5AZEikYF-RQRmiFKlqmDzkHyHCDaA1Ii5YFhJ2bIqiZknEpiOEB5yy1hxJJgZ81AxSE5rAIEs9OF9ebyYWd41wmtAMrXf27_-LC9uvp6va0NaVqurIPIPTex047_rSY6gum72YNvZe-t9Fve0t1juIvcz5sqd7RVL6VDMh2LNA48PwIGNZEdf0roYEDDraczelm2HgcHpyt7Ra3QKlhYa5xzB0o77ipC7wKla8N5oHT3qGigdK--CcWCbsdpL4klleTBNyGl4bY3Kmh5q80jQLnSyjM1eq_X6mvUPdXpfOxcHUfvY37k-jlGiWla3jpAwwn7ZoT9Cd8_MpMmUpDOk9_Z3vDA49JKPh6s9-SII7k_MQangIFoW2KaUWI4lZhYa0TVW955ZfiwdIH99xksODjInBZ8kdab9Ruc-iGCg3I16yUPa0mabqCIoMtqCEZHiPGscyDaz0_Bp3ijyQmXq9AYKAChNa_6JtioWgdfuRnCFu1zGp4SHMRnorNCUTsE-0q3OyH5FyVcLpZENT1puJN0_ef2anHz2_Zj3_mMVAvp1wGCHv3OaNZTboY1RB1s4PJYAFBu-s7S4H7gJ4BhhsPoXInm1spHt48hLhJOcR6gCOHzKDtH8eArecmZNsTBwDA6R2FNcbHPQoNc3R87K1rxnTNH25qeu2XTKytavtcBXgwJnbfC57LfhfLHy15KrzK_qfq2G4XCbqGRuiJyttTtpLAeYqOkUEI1bveQsPbKRXsLrTel0xTKncIUaUeloc5QgEpKTKMBKqWoQtO5ChxH--WQwixJqyrJk6KOYJye06YPYTTKzYTh1DqHHBD62i0kY8LshwCVyy-bqzVApbfAXuXnA_Hhf6u17I6soKkUeOqJE9eJn3GdT321M7oxpHWRdxR0u2W840YQKb7zLdXKupqGVwM9vAB40VshhxHVqhbNMGZ8-Ls-ghtvAW72W9vtzoh7Yvkc4kDETVbD5KvohNUG4MtRf1KoO9LwmwmnHzc393_d2OHfqmuW1-nnWv0j--vLNvHsxo7TdGASMQ7RlLcBKL-8-is2q5vF13ybeFafHERw-6xS9pSXEG2L7UE2xHg2noDxXJrLZbUdxemo3nlB9vV0EqDJKK-fQ4RSN7ePu_1-ekBwdXLIJy0f_ptSkuaD0VY7QDaEQnnc_vTBTa5cIv2sXf4IQLY6rK9dryd8UZsuHyMXrYLeJZ2BId8HWN7uJLH8AzFkHpaGWyIUZzea8cnG0W-Tn0Xf24Plnium3eHB_fbR44etZj56fxCXfpnecnrX9e3dmHhWn37fXq-T6dYIUHOY5ixncR5hius4LvIipiQjvE6KOCMnMZo-H4tG91Yo_tlZGeXOZs9qKjtqytvuKzHC1dN5DBvenboZQDA_cbNi6mYJOnEyGB8aareST7nIn5Hhij8ISuRSanoHUD4lDKOfU6Za9q2nNBe4eFti9qkJlWNecvZ-ydJ_VwZ-i7vgmhBeszSiOCMxi5K6xpRinMQc5SmuTtxl7B1er2v4oq7hXNc4mtF6rsV4iRZ6kVY0p1XMSKE3lKRp7iXqEeDVr60p___qinJjl3j7zrICkxO5jvUkeXU9KV5TT2ZmiU-rydgnTctJ_N9cTMYu6L0Z9tlmyfXZuhP2AE2ascn-vPht21nTU3eZ2nq1olUwK1051Wb0SsO7Xo5O-XEcv9OZfXD9rCdb-fGlMaPXvwLknsj-0MntDXds3yduNfQpnfg-hHuWzgrGcJXkkrdc2ZkFf2xbwbiyohaHa0lSZQlMaJ3xGGcpzCtY5zGKkzqBdVLF9DRZ_ryRwKte3Sn9TR2zwLMdwARpOq-5gz7yH5av7Nm6K9ztg7PFwcuzGY3sucz7lBhEOH6SVefU4hne_EXe0xPeEX4z7_tHxOmNd_DsLhDq6WPjMJWSDrjKW926lkzt9E7fu7LLd9oVV3e9Pt8Z_U9O7Tgd7l0AlSvN-G9cAVQuuvaDEcq6m0a5_kZM7a96Id3tAF5gmDsq_unEIxi8umoOXZNfIIxdX28ulfWPBVSrzv7guGuyC4dy0XXcDBktjdyt15CWbxTjD5cPO9OFPijGx1G8diaALve59HfETKTc6vop9Pg-6t82T_YCgNJyczm8XiyD8aGj3FyG-12A0sP8HOBL0ZWHd0nfw-Hl8NxaDBd2DwAQcilACmqFagI5ekoX1NoE9wfpEUBZUBMhOQtHsybLMAwdp8NLH0A4C6KHKIqirK5jmEdxkdU0IJU2zqvLvjOTXtzf48tGioqeoxCn50VYU5yFD3m6dfmj7CwbTO4RhM5pcgjwIjvSy5_Qg1WwVXIrNWFbplsiVEi1ZO8gL5R13aTD1HYNJQMHEGYZwIviyEMx5yHJ08QpNR881qNyRMJOhylAy-gBJ2mSTgIVw2iKgsUkiWH0eqd99mDgXXlw2l8ealF-NIuTB57IUyUxmcpzQLCvQFJyavesb1StS6Pb6_LzeLs5AZ09fPnCMznAVcc_cV9aLRvWdkQYgFeTQxvXQOxVtDjBcEiWxwND-Tyhck12jtVfQcm_l-NLP_t3WBAmPrJQfrQhOrEhzYv05za8VFbYR6-Wt5lt0v__SFv_s-x7LJtnrmih-GhZfGJZDhP-gmW5YvuPHJt2J2d2vSb0Vih--Ahy1MYvFwyhAp4IFs8FS2iaoplpq775P6KY5GZJOv5EvP-UaCd8jQLGEHn7HeVLZvJhTlmcTOSbIB0ka4Xds7_U7PHwwfbvZP442TtcETm74JPW74xdYFbggpzxC5gWURxnBYZntxeUZpjWaZ0SFhUoRoymcc45qtKCJjRlZ-ICRQhHGcqiPEEQhjxOOI4Yy0hBEEo5iCPeEiFD_1VGm-ZMdF3PL9IYxsWZJBWXnf-sjpAv-8JnJwSS9Zm58CJXfdOBOJKis90RixVW8otjt-ean97sLxOv6pnOeiMv5t_sG2Fv-2r8VL_X8Fzvnn1nDy_BvwIAAP__I9ysAw">