https://gcc.gnu.org/g:25652e25b53c1a47162256dcf644d2f19f9b0966
commit 25652e25b53c1a47162256dcf644d2f19f9b0966 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Mon Nov 6 11:37:50 2023 +0100 Add named variadic argument test 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.pa...@embecosm.com> Diff: --- gcc/testsuite/rust/compile/pattern_variadic.rs | 14 ++++++++++++++ gcc/testsuite/rust/execute/torture/named_variadic.rs | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/gcc/testsuite/rust/compile/pattern_variadic.rs b/gcc/testsuite/rust/compile/pattern_variadic.rs new file mode 100644 index 000000000000..2932b70f5b47 --- /dev/null +++ b/gcc/testsuite/rust/compile/pattern_variadic.rs @@ -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 index 000000000000..d9b59cff41c0 --- /dev/null +++ b/gcc/testsuite/rust/execute/torture/named_variadic.rs @@ -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 +}