<div dir="ltr"><div dir="ltr">On Fri, Jun 14, 2019 at 6:24 PM Eli Friedman via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_-662731963384940304WordSection1">
<p class="MsoNormal">See <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D63036&d=DwMFAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=O_4M49EtSpZ_-BQYeigzGv0P4__noMcSu2RYEjS1vKs&m=yNP3delmjr47oSR0YAN8JwlGJEao8M6vTDRiKybxrG8&s=SdJmeI8rbeC0xfZfTawSCri0U3GDrJyUzTA-U5SJKoA&e=" target="_blank">https://reviews.llvm.org/D63036</a> for the full patch and description. Essentially, the Constant::canTrap API is going away.  To make this work, the semantics of division and remainder constant
 expressions are changing slightly, so division by zero produces poison, not undefined behavior.  (The corresponding instructions still have undefined behavior.)  This change should make writing and understanding IR optimizations easier.</p></div></div></blockquote><div> </div><div>This is a good change. Thanks for working on it.</div><div><br></div><div>I don't mean to steal your thunder, Eli, but I'd like to propose that we add constrained intrinsics for integer DIV (and maybe REM). Some architectures, like x86, can trap on integer div-by-zero. I'd like to have some way to access that behavior, even if the C/C++ Standards say it's undefined behavior.</div><div><br></div><div>We have a few dusty deck codes in-house that depend on this, so I'm motivated to push our local changes upstream. That said, if no one else finds value in this, we can keep it local.</div><div><br></div><div>-Cam</div></div></div>