aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
+}