Index: lib/CodeGen/CGCall.cpp =================================================================== --- lib/CodeGen/CGCall.cpp +++ lib/CodeGen/CGCall.cpp @@ -1845,6 +1845,8 @@ FuncAttrs.addAttribute(llvm::Attribute::Convergent); if (const FunctionDecl *Fn = dyn_cast(TargetDecl)) { + if (!AttrOnCallSite && !Fn->hasPrototype()) + FuncAttrs.addAttribute("no-prototype"); AddAttributesFromFunctionProtoType( getContext(), FuncAttrs, Fn->getType()->getAs()); // Don't use [[noreturn]] or _Noreturn for a call to a virtual function. Index: test/CodeGen/no-prototype.c =================================================================== --- /dev/null +++ test/CodeGen/no-prototype.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s + +extern void foo(); + +void bar(int a) { + foo(1); +} + +// CHECK: declare void @foo(...) [[NOPROTO:#[0-9]+]] +// CHECK: attributes [[NOPROTO]] = { {{.*}}"no-prototype"{{.*}} }