[llvm] [IRBuilder] Refactor FMF interface (PR #121657)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 5 01:07:36 PST 2025


================
@@ -869,28 +869,28 @@ CallInst *IRBuilderBase::CreateGCGetPointerOffset(Value *DerivedPtr,
 }
 
 CallInst *IRBuilderBase::CreateUnaryIntrinsic(Intrinsic::ID ID, Value *V,
-                                              Instruction *FMFSource,
+                                              FMFSource FMFSource,
                                               const Twine &Name) {
   Module *M = BB->getModule();
   Function *Fn = Intrinsic::getOrInsertDeclaration(M, ID, {V->getType()});
   return createCallHelper(Fn, {V}, Name, FMFSource);
 }
 
 Value *IRBuilderBase::CreateBinaryIntrinsic(Intrinsic::ID ID, Value *LHS,
-                                            Value *RHS, Instruction *FMFSource,
+                                            Value *RHS, FMFSource FMFSource,
                                             const Twine &Name) {
   Module *M = BB->getModule();
   Function *Fn = Intrinsic::getOrInsertDeclaration(M, ID, {LHS->getType()});
   if (Value *V = Folder.FoldBinaryIntrinsic(ID, LHS, RHS, Fn->getReturnType(),
-                                            FMFSource))
+                                            FMFSource.Source))
----------------
dtcxzyw wrote:

It is used to flush denormal values according to the parent function attributes of FMFSource. But I think the denormal handling is also poor in other places of IRBuilder (e.g, `CreateFAddFMF`) :(


https://github.com/llvm/llvm-project/pull/121657


More information about the llvm-commits mailing list