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

    <tr>
        <th>Summary</th>
        <td>
            Assert in X86AsmParser::ParseMemOperand when passing two segment prefixes
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86,
            llvm:asmparser
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          ramosian-glider
      </td>
    </tr>
</table>

<pre>
    The following code:
```
void foo() {
  asm("movq $0, %cs:%ds:(%rax)");
}
```

triggers an assertion in `X86AsmParser::ParseMemOperand()`:

```
clang: /root/llvm-project/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp:2946: bool {anonymous}::X86AsmParser::ParseMemOperand(unsigned int, const llvm::MCExpr*, llvm::SMLoc, llvm::SMLoc, llvm::OperandVector&): Assertion `!isa<X86MCExpr>(Disp) && "Expected non-register here."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -S --gcc-toolchain=/opt/compiler-explorer/gcc-9.2.0 -fcolor-diagnostics -fno-crash-diagnostics <source>
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '<source>'.
4.      Running pass 'X86 Assembly Printer' on function '@foo'
 #0 0x000055a44e7bcdff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3febdff)
 #1 0x000055a44e7bab3c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fe9b3c)
```

Godbolt link: https://godbolt.org/z/b381Werh9
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TX0ZSCDpmR9HHzwOnYvG2zQLNrcCoocyWwoUiWpjdNfX5BSnGQRdIu2gCFZQ3LmzcybR-696g3ijmw_ke3Nik_hbN3O8cF6xU3WayXRrVorn3dfzwid1do-KdODsBJJvif0htA9KenyS5_frJLQWUtYTVgDpPo02wG4H5KRDfbbH0BYQQk7AGFb4aMztpXzuyZs6_iFsIYwFp_54oJUNx-GnJ_Bqb5H54Eb4N6jC8oaUAZISR_qcu-HO-48uhgj36f_tzh8GdFxI2e00eM1rY8iCc1NT_I9EHZy1gbCTlp_G7LR2d9RvHzGl2oJO33lrsdofahLwk6vEJLl-rkW40jyPWuKMvpurdWxbtxY8zzYyce8E-h_ksZkUlclKBNifYU1PkCClU7cHo6X0RG2j4uv5vvbz1b80LSE-QVFsI6wMnVnD_truWOl2EZ5TvLDQ10uwfIjYfWN8mNiRDxWAmHseBlRBJRgrMkc9soHdHBGh-vU-Qo6rjTK9Vz8u8_H_f0R_NQOKgCHdurB4WhdgGDhHMI48-dE2KlX4Ty1a2GHNz153ynl_YSesBNwE6sl9CQRwhlBOO7P0HLxGBwXGEswOhydFeg9SvB2crM5nuTeW6F4zMNNBrxwagwL5PvAxSPIaRivvKJrQps7Z3vHB-CunwY0wS-csmNEJuwwKo0uw8uorUt8SczLrrz2WXCTeSTs1CrzsgxZL5-467ICsh4yGz3ycYx-pzBOYe0hu4cs64XIgrVanLkyJL_528Bxc7NmawpZJ6y2LpOK98b6oISHrDM2S_V6Zyb5YSlSfpzT3sS0SX5A25H8CGPiMPAAaCTYDjqlcd7J4s6DlQg9GnQ8pjuv5HHl58mYqEEj9x4Iq06TEYl6d9Fwyw3vI-4KrIHByklj3PUOEKuW9hQfOXyoy0ToodXPcOeUCVd_3Uus6LGgSeWqRd4IyynQC6WUbre8KLBqhey6N8Pjn_0ytNFposbXmV_16ybHn36zPjjkQxqUwzzHcWzq_0wQwj7RS95hK7suju4V-eY75LzNxUfIDxq5mcYv5l71huu3cqNt9P__4mzaXFxxfij6P1nZWh1AK_MYZ-g7FZhX19b1hJ3-jEHyevMrunOzkrtcNnnDV7jblFXd0LzaNqvzjm7rtuw6yRpWI24LIcqtrGhRN7KjtNqs1I5RltN8s93UtNk066YqZFEWvGMtVl1JSUFx4EqvYwFj7FWSml25KfJ6pXmL2qc7l7GoMWjkLO1J8w6EsaXw3A_jcl2weD-7XVKwduo9KahWPvjXEEEFjbtZiOOl98OrAp7OaBLpI_nDkwWPfdSiqHWduqBfTU7v_r2spnT_CgAA___TCJ2E">