<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJytVU1vnDAQ_TXsxWIF9sLCgUPSVXpqVKlVr5WBAdwam2KzSfrrOzbLfqXZVmqljeOPmXlvnodxqeuX4hGe3n95JL0wle4HIcEQ2wFptJT6SaiWWDC24gYCdhdEuyBaxjSaf1Lu-3nL8rEFS2puueQverIkYDsSUAphj94QDnQb4YRRP7hlfLl0s3Tjh1AskyZzTjHNQpW5Sbr44Nkn3EaAC3w7ikHCgv2cpV_RsB0t7DehFGp6Dls1HZ0OI02MHafKrs3A-3UceXf7MmCc7T0RCII27wiSwo3duWsNjVBA9lrUJNhEP7UNHKereOiPbBJkGLs4N85pQHPCpWgVYdShzzBlmaTHKyDO1vZD4mli0iChB2UHOxKhSj2p2vwO4yZwvCToDQWCR5do6f9Eo2-jlSORvATpLDHt7bnafv1KhtwzGzpBREyC5J40XGLFzgzKkqKiQbLzazxERqezJPVHl4nO1y81r8-ufp7cLZhub76m7Mo7vvQ-uB5jnxzjK0fqHUXVDwQrSmTHgM4lZ1fWzFvr0ed80OGQlg92JufRImXO4kxdlOZ6h10J7kzOFGf3c2rNqHviaxApuNCX9OIs_bOI6Zsi0ii_VW2vdUW8paKOmRurR7iwwrB_eZe3i9CJdNJkxK7jvv-DzbE_LC3y3PczNlcsVN3oAdOwpBqBY4slk8GBkz2XE2AH5pYIQ3pdi0YACqiMqMF3Zqn1QLiqsUQAlbCalIAMnM5Qr5d2lnXWDsZxpA_4w-T2QNeuV6_12OJOhZ_Aw0_8a-8-fs9_YNM5Z1lVrpepSelB6gGZ4arpeKfIfL6qC1bnLOcrPtlOjwUCKG5W0yiLS-RW2G4q1_i44MK_FfO_cBj1N6iwWT4IYyYwOEkY3W5XXZFXJd_W0aapANI6S9Isz8qMVxmnNWNVs_I3Ywr8mLGPK3giPoTr6clu9e8MREEjSqM4zihjSZSv67RK07LaQplnrKkaVAN6LuRR0NVY-JDl1Bo8lMJYczrkxmBtAXjCyNAKK_1ifnxxi3xY3l9uhVbkqQM1l4Z7grFeQt2EWDErz7TwNH8BGpU1RQ>53277</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [NewGVN] Miscompilation when creating phi-of-ops
        </td>
    </tr>

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

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

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

<pre>
    NewGVN miscompiles the following testcase:

```llvm
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-grtev4-linux-gnu"

%struct.spam.10 = type { i8*, i64 }

define void @zot(%struct.spam.10* %arg1, %struct.spam.10* %arg2) align 32 {
bb56:
  %tmp5 = getelementptr inbounds %struct.spam.10, %struct.spam.10* %arg1, i64 0, i32 0
  %tmp6 = getelementptr inbounds %struct.spam.10, %struct.spam.10* %arg2, i64 0, i32 0
  br label %bb57

bb57:
  %tmp59 = phi i1 [ false, %bb229 ], [ true, %bb56 ]
  %tmp60 = load i8*, i8** %tmp5, align 8
  %tmp61 = load i8, i8* %tmp60, align 1
  %tmp62 = icmp ne i8 %tmp61, 93
  %tmp63 = or i1 %tmp59, %tmp62
  br i1 %tmp63, label %bb229, label %bb237

bb229:
  ; load from tmp5 or tmp6
  %tmp186 = load i8*, i8** %tmp6, align 8
  %tmp209 = getelementptr inbounds i8, i8* %tmp186, i64 2
  store i8* %tmp209, i8** %tmp5, align 8
  br label %bb57

bb237:
  ret void
}
```

The phiofops it creates uses a value that is modified inside the loop and needs to be reloaded.
(https://alive2.llvm.org/ce/z/gAPk9q)

cc @nunoplopes @fhahn 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVUuPmzAQ_jXkYhGBHQgcOOw22p66qtSq18rAAG6NTbHJPn59xybktd20h0rEsT2vbz6Px6WuX4pHePr47ZH0wlS6H4QEQ2wHpNFS6iehWmLB2IobCNhdEO2CaBnTaP6k3PfzluVjC5bU3HLJX_RkScB2JKAUwh6tIRzoNsIJo35wy_hy6Wbpxg-hWCZN5oximoUqc5N0sUHZF9zGABfx7SgGCUvs5yz9jortaGG_CaVQ03PYqulodBhpYuw4VXZtBt6v48ib25cB_WzvicAgqPOBICjc2J2b1tAIBWSvRU2CTfSqbeAwXflDe0STIMLY-bkhpwHNCZeiVYRRF30OU5ZJejwC4nRtPyQeJiYNEnpQdrAjEarUk6rNn2LcDBwvCXpFgcGjy2jp_4xG349WjkTyEqTTxLS352z79Rsaco9s6AQRMQmSe9JwiRU7IyhLiowGyc6vUYiITrIk9aLLROfjl5rXZ0c_T-6WmG5vPqbsyjq-tD6YHn2fDOMrQ-oNRdUPBCtKZEeHziRnV9rMa-vR53zg4ZCWd3ZG51EjZU7jjF2k5nqHXRHuVM4YZ_dzas2oe-JrECE415fw4iz9O4npuyTSKL9VbW95xXhLRR0zN1aPcKGFbv_xLG8XoSPpxMmIXcfd_4POsT8sLfLc9is2VyxU3egB07CkGoFjiyWTwYGTPZcTYAfmlghDel2LRgASqIyowXdmqfVAuKqxRACZsJqUgAgcz1Cvl3aWddYOxmGkD_hhcnuga9er13pscafCK_Dwir_27vPP_Bc2nXOUVeV6mZqUHqQeEBmumo53iszyVV2wOmc5X1lhJRR4reaHBO8S-bS8JdwKrchTB2pO0z0nmHuomxCzX02jLC5htsJ2U7lGa1z4h2X-C4dR_4AKO-uDMGYCg5OE0e121RVbuimzKK_yMtokcZxCs8nreMsqVkZVnFUrf4zGQcSmr-CJeBfuAUh2K1HQiNIojjPKWBLl6zqt0rSstlDmGWuqBhOHngt55G41Fh5SObUGhVIYa05CbgyWEXhGnH8-2U6PBfKvuFn5yIVH_huUmx6Y">