]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Add named variadic argument test
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Mon, 6 Nov 2023 10:37:50 +0000 (11:37 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:13:12 +0000 (19:13 +0100)
Variadic arguments may have a name or a pattern. This commit provides two
new tests in order to ensure their correct behavior.

gcc/testsuite/ChangeLog:

* rust/compile/pattern_variadic.rs: New test.
* rust/execute/torture/named_variadic.rs: New test.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/testsuite/rust/compile/pattern_variadic.rs [new file with mode: 0644]
gcc/testsuite/rust/execute/torture/named_variadic.rs [new file with mode: 0644]

diff --git a/gcc/testsuite/rust/compile/pattern_variadic.rs b/gcc/testsuite/rust/compile/pattern_variadic.rs
new file mode 100644 (file)
index 0000000..2932b70
--- /dev/null
@@ -0,0 +1,14 @@
+extern "C" {
+    fn printf(fmt: *const i8, _: ...);
+}
+
+fn main() -> i32 {
+    unsafe {
+        printf(
+            "%s" as *const str as *const i8,
+            "Message" as *const str as *const i8,
+        );
+    }
+
+    0
+}
diff --git a/gcc/testsuite/rust/execute/torture/named_variadic.rs b/gcc/testsuite/rust/execute/torture/named_variadic.rs
new file mode 100644 (file)
index 0000000..d9b59cf
--- /dev/null
@@ -0,0 +1,20 @@
+// { dg-output "Named variadic" }
+
+extern "C" {
+    fn printf(fmt: *const i8, variadic: ...);
+}
+
+fn print(s: &str) {
+    unsafe {
+        printf(
+            "%s" as *const str as *const i8,
+            s as *const str as *const i8,
+        );
+    }
+}
+
+fn main() -> i32 {
+    print("Named variadic");
+
+    0
+}