spatel added inline comments.
================
Comment at: llvm/lib/IR/ConstantFold.cpp:633
// the input constant.
- return UndefValue::get(DestTy);
+ return PoisonValue::get(DestTy);
}
----------------
aqjune wrote:
> neildhar wrote:
> > spatel wrote:
> > > MatzeB wrote:
> > > > I believe this is causing some of our clients trouble, especially since
> > > > we somehow have a `-fno-strict-float-cast-overflow` flag in clang that
> > > > says float->int overflows are not UB... (CC @spatel )
> > > I can guess at what the example looks like, but it would be great to have
> > > a reduced test.
> > > There should be a function attribute in IR corresponding to that clang
> > > flag, so we could alter the behavior here based on checking that? Not
> > > sure if there's precedence for that kind of transform though.
> > Here's a minimal repro for the issue we ran into:
> > https://godbolt.org/z/Wdr7q1a9M
> Clang is lowering fp-to-int casts into fptosi/ui
> (https://godbolt.org/z/Gz3Y7YKKf), but I think in this case clang must emit
> the fptosi.sat intrinsic:
> https://llvm.org/docs/LangRef.html#llvm-fptosi-sat-intrinsic
> It guarantees that the result is well-defined.
I agree with this suggestion. Here's a patch proposal:
D115804
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92270/new/
https://reviews.llvm.org/D92270
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits