Stephen Hines | 176edba | 2014-12-01 14:53:08 -0800 | [diff] [blame] | 1 | // RUN: %clang_cc1 -mrtd -triple i386-unknown-unknown -std=c89 -emit-llvm -o - %s 2>&1 | FileCheck %s |
| 2 | |
| 3 | // CHECK: mrtd.c:10:3: warning: function with no prototype cannot use the stdcall calling convention |
Roman Divacky | cfe9af2 | 2011-03-01 17:40:53 +0000 | [diff] [blame] | 4 | |
| 5 | void baz(int arg); |
| 6 | |
Bill Wendling | c3af679 | 2013-02-26 23:08:48 +0000 | [diff] [blame] | 7 | // CHECK: define x86_stdcallcc void @foo(i32 %arg) [[NUW:#[0-9]+]] |
Roman Divacky | cfe9af2 | 2011-03-01 17:40:53 +0000 | [diff] [blame] | 8 | void foo(int arg) { |
John McCall | 01f151e | 2011-09-21 08:08:30 +0000 | [diff] [blame] | 9 | // CHECK: call x86_stdcallcc i32 bitcast (i32 (...)* @bar to i32 (i32)*)( |
Roman Divacky | cfe9af2 | 2011-03-01 17:40:53 +0000 | [diff] [blame] | 10 | bar(arg); |
Douglas Gregor | 438d7f0 | 2011-03-01 19:55:40 +0000 | [diff] [blame] | 11 | // CHECK: call x86_stdcallcc void @baz(i32 |
Roman Divacky | cfe9af2 | 2011-03-01 17:40:53 +0000 | [diff] [blame] | 12 | baz(arg); |
| 13 | } |
| 14 | |
| 15 | // CHECK: declare x86_stdcallcc i32 @bar(...) |
| 16 | |
| 17 | // CHECK: declare x86_stdcallcc void @baz(i32) |
Bill Wendling | f7a9da0 | 2013-02-20 07:22:19 +0000 | [diff] [blame] | 18 | |
Reid Kleckner | ef07203 | 2013-08-27 23:08:25 +0000 | [diff] [blame] | 19 | void qux(int arg, ...) { } |
| 20 | // CHECK: define void @qux(i32 %arg, ...) |
| 21 | |
| 22 | void quux(int a1, int a2, int a3) { |
| 23 | qux(a1, a2, a3); |
| 24 | } |
| 25 | // CHECK-LABEL: define x86_stdcallcc void @quux |
Pirama Arumuga Nainar | 33337ca | 2015-05-06 11:48:57 -0700 | [diff] [blame] | 26 | // CHECK: call void (i32, ...) @qux |
Reid Kleckner | ef07203 | 2013-08-27 23:08:25 +0000 | [diff] [blame] | 27 | |
Bill Wendling | c3af679 | 2013-02-26 23:08:48 +0000 | [diff] [blame] | 28 | // CHECK: attributes [[NUW]] = { nounwind{{.*}} } |