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

    <tr>
        <th>Summary</th>
        <td>
            InstructionCombine error when monolithic LTO used
        </td>
    </tr>

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

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

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

<pre>
    // Monolithic LTO bug results in call to f() being erased by InstCombinerImpl::visitUnreachableInst

// File f.c
extern void __attribute__((noreturn))f();
extern volatile int b,c,d,e;
int main() {
  if (b) {
    c = 1;
  } else {
    d = 2;
  }
  e = 1;
  e = 2;
  e = 3;
  f(); // CALL IS DELETED
  e = 5;
  return 0;
}

// file g.c
volatile int b=1,c,d,e;
void __attribute__((noreturn))f() {
  while(1) {
    c++;
  }
}

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVU8mO2zAM_Rr5QjSw5Xg7-JBJMkCAFD10eg4kmY7VylIgyZnO31d2lskylwKUTT9SJPX0zE3zURP6Ggy-G22U9J0UsH37AXzYg0U3KO9AahBMKfAGWkJLQivgKPUe0DKHDfAP2Gjnl6bnUqPd9AdF0kWwo3TS_9IWmegYVzhmkXhF4sX5eWr9KhVCOxMnEP96tBqORjaw2zHvreSDx91ual1qY9EPVocpgp3nIenLw2bF_FhVag-c0KUIqwkLr5ljpGdSnw9EijMOIFsIIH9AAQSQdAXJtQKE8ApQObzPa6Y8ep93cfGpCD6ln5D0Bvk8Jpw5Wy62W9j8hNV6u35bP5TPbrae2IL4Cl2HubuDdmRrf7mDB_7SVfIlh_91R7ckvXeheICTZ5IJfRntC_KuToR1kmdVViRlmkVNnTZVWrHIS6-wHjVmB-Gl0WdBBplaY0NP1NDfq3wI8o0Gq-rO-4MbRTuxsQ8ZA58J04cPpY6X17eDNb9R-PApnRvQBSfLqySOuloUeZGyfE4bjmU7TsZzmjMs8jKl2ZxGivGglZpk4XxU4ztMJYJPslUkaxpTGpfxPI6TOJ3PKtFmrCnmSdUWaSNKMo8xyFXNxjlmxu4jW08jhR_VhaCSzrvPIHNO7jXi1C7UZ4PvjK17Zv840cm-RxVN_etp_n_OsiQf">