[PATCH] D92270: [ConstantFold] Fold more operations to poison

Sanjay Patel via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 15 07:57:38 PST 2021


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



More information about the cfe-commits mailing list