aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/mips-unsigned-ext-var.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/mips-unsigned-ext-var.c')
-rw-r--r--test/CodeGen/mips-unsigned-ext-var.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/CodeGen/mips-unsigned-ext-var.c b/test/CodeGen/mips-unsigned-ext-var.c
new file mode 100644
index 000000000000..2e04792cf375
--- /dev/null
+++ b/test/CodeGen/mips-unsigned-ext-var.c
@@ -0,0 +1,22 @@
+// RUN: %clang_cc1 -triple mips64-unknown-linux -O2 -target-abi n64 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N64
+// RUN: %clang_cc1 -triple mips64-unknown-linux -O2 -target-abi n32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N32
+// RUN: %clang_cc1 -triple mips-unknown-linux -O2 -target-abi o32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=O32
+
+#include <stdarg.h>
+
+unsigned foo(int x, ...) {
+ va_list valist;
+ va_start(valist, x);
+ unsigned a;
+ a = va_arg(valist, unsigned);
+ return a;
+}
+
+void foo1() {
+ unsigned f = 0xffffffe0;
+ foo(1,f);
+}
+
+//N64: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32)
+//N32: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32)
+//O32: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32) \ No newline at end of file