aqjune added inline comments.
================ Comment at: llvm/test/Transforms/PhaseOrdering/unsigned-multiply-overflow-check.ll:20 +; FIXME: noundef should be attached to args define i1 @will_not_overflow(i64 %arg, i64 %arg1) { ---------------- aqjune wrote: > spatel wrote: > > Any ideas about what it will take to get those argument attributes for the > > C++ source example shown in the code comment? > > > > SDAG is still going to convert the `select` to `and`, so we can probably > > avoid regressions by replicating InstSimplify's > > omitCheckForZeroBeforeMulWithOverflow() as a DAG combine. Let me know if I > > should do that. > I promised to do the patch at D82317, but these days I'm occupied with other > things, so it might not be a recent future (not in a month at least)... > > I think it is a good chance to use freeze here: We can add > ``` > %cond = icmp ne %x, 0 > %v = call @llvm.umul.with.overflow(%x, %y) > %ov = extractvalue %v, 1 > %res = select i1 %cond, %ov, false > => > %y.fr = freeze %y > %v = call @llvm.umul.with.overflow(%x, %y.fr) > %ov = extractvalue %v, 1 > %res = %ov > ``` > into CodeGenPrepare. > What do you think? CodeGenPrepare is already using freeze for a few > transformations. Alive2 proof: https://alive2.llvm.org/ce/z/zgPUGT Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D101191/new/ https://reviews.llvm.org/D101191 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits