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

Juneyoung Lee via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 28 20:19:45 PDT 2021


aqjune added inline comments.


================
Comment at: llvm/lib/IR/ConstantFold.cpp:633
         // the input constant.
-        return UndefValue::get(DestTy);
+        return PoisonValue::get(DestTy);
       }
----------------
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.


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