<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63851>63851</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
memcpyopt fails with Assertion `Parent == Other->Parent && "cross-BB instruction order comparison"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
serge-sans-paille
</td>
</tr>
</table>
<pre>
While compiling firefox with clang from 253a52988fe37887ba1f7741271d602083fe7dd7 , I hit an assert.
The following (reduced) test case fails on `opt '-passes=early-cse,memcpyopt' -S cross-block.ll` where `cross-block.ll` contains
```llvm
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
define void @test_case(ptr %this, ptr %aFrame, i1 %call14) unnamed_addr {
entry:
%r = alloca %struct.nsRect
%ref.tmp18 = alloca %struct.nsRect
%x = getelementptr inbounds %struct.nsRect, ptr %r, i32 0, i32 0
store i32 0, ptr %x
br i1 %call14, label %if.then17, label %if.end21
if.then17:
call void @fwd_decl(ptr %ref.tmp18, ptr %r)
call void @llvm.memcpy.p0.p0.i64(ptr %r, ptr %ref.tmp18, i64 16, i1 false)
br label %if.end21
if.end21:
ret void
}
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
declare hidden void @fwd_decl(ptr, ptr )
```
I couldn't remove the `ealy-cse` pass :-/
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVUGPqzYQ_jXOZQSCMQFy4LD70kjv1KqvUo8rg4fg1tjINpvNv6_sJJvsbqs-CRF7PDOe75vhi_BeHQ1Rx7bPbLvfiDVM1nWe3JEyL4zPFqG0pk1v5bn7c1KaYLDzorQyRxiVo9G-wUmFCQYtosnZGXDLxRZ3bTsSb9q26UU5Nk1VYlPKusCi5SM1UjbA8Bt8h0kFEAaE9-RCzoo9K54u7z8mgtFqbU_xOoatI7kOJBnuIJAPMAhPMAqlPVgDrC7sEoBhky0xm2d8T8LpczZ4YvhtpnlYznYJDBvIfsDgrPdZr-3wd641qwuA00SOYqKvZ4M1QSjjHwtkdXF5tH6dL6Yg3JECSBGEFme7BmB8DwyRspnxJ8oWbArGnzimV9yWH7dxVVfplanbYmxjUIltZtq4qG8xdZX9KLFliI-FSRqVIXi1SgKrikjWSySLYbsEBwy3YVI-8n_dioMTcyQJVBn3g9C6rCLRqzFiJvkipHTAmufLBWSCOzN-vQ5iiEtIhdZ2EHHvg1uHkBv_Ow3h0Y_GPMxL2f6k_1vyO1IgTTOZECtWprerkf5r3B2SS2g4QnFfXLP6YB3dz64Bb7fj3n1i4Rto0ZOOJjXmYSJTNp-tZCSWjz24e95pignfuzKe5IukQd-b8k7NRxi7fw2PM5dfZjpfivjEabnneszxmFfVFZT1tdWj0HEqdg_Q_w_UxXbH5Cikmq5uzf7jIA5aOPqpoo0VWgkPxg5iCasjODkVyBp9vmH56uJIyJtHSpVgqXkW7viO62Mtk5KSzH-04c7a7tM3_pjqOwx21dIwbAI4mu0rQZiScpC4Ck5dQJQhYPwpY3jYyI7LHd-JDXVl3e5w2xbYbqau531fC6yKsSp2dcupr3jVVA1V1LR1td2oDgvkRVPyssICMe9H3shRinJs21LwllUFzULpPLFr3XGjvF-pq3m7LTepnz5JPKKhE6TDKBjb_cZ1MSbr16OP3VE--HuWoIKm7l02r0qb5P4pqbW6qO5vwpFJQhe_1F_DRC5j_JebGWuGdZTAi6g-P4Myl482xlsnyaV_FeGUtyYWhk26i2S-WZ3uphAWHycODwwPRxWmtc8HOzM8JOG9_GSLs38lCTgkhJ7hITHwTwAAAP__1kgQlA">