<div dir="ltr">When lowering "cond ? X : Y" we do some safety checks to see whether we can instead emit both X and Y and use a llvm select instruction to choose between them. This code is insufficiently safe, and introducing loads into a program that didn't load is a bad idea. For example, it could be TLS. It could be a non-volatile auto in another function that isn't the current function (think lambdas).<div>

<br></div><div>Don't do this here. LLVM knows how to do this properly.</div><div><br></div><div>Patch attached, please review!</div><div><br></div><div>Nick</div><div><br></div></div>