diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -2432,7 +2432,8 @@ // Decide whether the argument we're handling could be partially undef if (CodeGenOpts.EnableNoundefAttrs && DetermineNoUndef(ParamType, getTypes(), DL, AI)) { - if(!FuncAttrs.contains(llvm::Attribute::Convergent)) + // Skip adding noundef attribute to arguments when function has convergent attribute. + if (!FuncAttrs.contains(llvm::Attribute::Convergent)) Attrs.addAttribute(llvm::Attribute::NoUndef); }