aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/stdcall-fastcall.c
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-09-21 08:08:30 +0000
committerJohn McCall <rjmccall@apple.com>2011-09-21 08:08:30 +0000
commit01f151e0ffba72bcad770bea5f563a9b68ca050e (patch)
tree82059ede608914861b730d6334f0e312456da3a9 /test/CodeGen/stdcall-fastcall.c
parent036277e3e7bfa3ccef96fabf0b34a75d9a7c015b (diff)
ANSI C requires that a call to an unprototyped function type succeed
if the definition has a non-variadic prototype with compatible parameters. Therefore, the default rule for such calls must be to use a non-variadic convention. Achieve this by casting the callee to the function type with which it is required to be compatible, unless the target specifically opts out and insists that unprototyped calls should use the variadic rules. The only case of that I'm aware of is the x86-64 convention, which passes arguments the same way in both cases but also sets a small amount of extra information; here we seek to maintain compatibility with GCC, which does set this when calling an unprototyped function. Addresses PR10810 and PR10713. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140241 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/stdcall-fastcall.c')
-rw-r--r--test/CodeGen/stdcall-fastcall.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/test/CodeGen/stdcall-fastcall.c b/test/CodeGen/stdcall-fastcall.c
index 6f3b003287..3de7b6727b 100644
--- a/test/CodeGen/stdcall-fastcall.c
+++ b/test/CodeGen/stdcall-fastcall.c
@@ -46,5 +46,5 @@ int main(void) {
void __attribute((stdcall)) f7(foo) int foo; {}
void f8(void) {
f7(0);
- // CHECK: call x86_stdcallcc void (...)* bitcast
+ // CHECK: call x86_stdcallcc void @f7(i32 0)
}