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>
--- /dev/null
+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
+}
--- /dev/null
+// { 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
+}