diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2010-05-17 02:50:18 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2010-05-17 02:50:18 +0000 |
commit | 9a0fcfe659b65e1e1bba4ba5f35a12ffcd088ea0 (patch) | |
tree | f2b33bffc1df68a7d79aa696d282b43afc35ca37 | |
parent | 150fcd5dcb79ad0a9cc6824c5589000e3669c7a4 (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.cpp | 3 | ||||
-rw-r--r-- | test/CodeGen/stdcall-fastcall.c | 6 |
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 +} |