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);
     }