aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-05-17 02:50:18 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-05-17 02:50:18 +0000
commit9a0fcfe659b65e1e1bba4ba5f35a12ffcd088ea0 (patch)
treef2b33bffc1df68a7d79aa696d282b43afc35ca37
parent150fcd5dcb79ad0a9cc6824c5589000e3669c7a4 (diff)
PR7117: Make sure we don't lose the calling convention for K&R-style
definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103932 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaExpr.cpp3
-rw-r--r--test/CodeGen/stdcall-fastcall.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 5a24a2c4c0..b573e2dcc9 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -1176,7 +1176,8 @@ Sema::OwningExprResult Sema::ActOnIdExpression(Scope *S,
QualType T = Func->getType();
QualType NoProtoType = T;
if (const FunctionProtoType *Proto = T->getAs<FunctionProtoType>())
- NoProtoType = Context.getFunctionNoProtoType(Proto->getResultType());
+ NoProtoType = Context.getFunctionNoProtoType(Proto->getResultType(),
+ Proto->getExtInfo());
return BuildDeclRefExpr(Func, NoProtoType, NameLoc, &SS);
}
}
diff --git a/test/CodeGen/stdcall-fastcall.c b/test/CodeGen/stdcall-fastcall.c
index bea6df39f9..46fe326fad 100644
--- a/test/CodeGen/stdcall-fastcall.c
+++ b/test/CodeGen/stdcall-fastcall.c
@@ -31,3 +31,9 @@ int main(void) {
return 0;
}
+// PR7117
+void __attribute((stdcall)) f5(foo) int foo; {}
+void f6(void) {
+ f5(0);
+ // CHECK: call x86_stdcallcc void (...)* bitcast
+}