aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-02-21 15:03:18 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2022-02-22 12:06:27 +0100
commit6db51e39363a4500dd8d3e04d87f682f9ef11f26 (patch)
treed1a876127ff2bc1b978b89544d1cb60c8d71f0d1 /gcc
parentded1aca9022faa4a72a97f117ace085ecb34487f (diff)
downloadgcc-6db51e39363a4500dd8d3e04d87f682f9ef11f26.zip
gcc-6db51e39363a4500dd8d3e04d87f682f9ef11f26.tar.gz
gcc-6db51e39363a4500dd8d3e04d87f682f9ef11f26.tar.bz2
subs_repetition: Add simple test cases
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust/execute/torture/macros10.rs20
-rw-r--r--gcc/testsuite/rust/execute/torture/macros11.rs22
-rw-r--r--gcc/testsuite/rust/execute/torture/macros12.rs20
-rw-r--r--gcc/testsuite/rust/execute/torture/macros13.rs20
4 files changed, 82 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/execute/torture/macros10.rs b/gcc/testsuite/rust/execute/torture/macros10.rs
new file mode 100644
index 0000000..f1fc34e
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros10.rs
@@ -0,0 +1,20 @@
+// { dg-output "18\n" }
+extern "C" {
+ fn printf(s: *const i8, ...);
+}
+
+fn print_int(value: i32) {
+ let s = "%d\n\0" as *const str as *const i8;
+ printf(s, value);
+}
+
+macro_rules! add_exprs {
+ ($($e:expr)*) => (0 $(+ $e)*)
+}
+
+fn main() -> i32 {
+ // 1 + 2 + 15 => 18
+ print_int(add_exprs!(1 2 15));
+
+ 0
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros11.rs b/gcc/testsuite/rust/execute/torture/macros11.rs
new file mode 100644
index 0000000..7ce7d80
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros11.rs
@@ -0,0 +1,22 @@
+// { dg-output "2" }
+extern "C" {
+ fn printf(s: *const i8, ...);
+}
+
+fn print_int(value: i32) {
+ let s = "%d\n\0";
+ let s_p = s as *const str;
+ let c_p = s_p as *const i8;
+ unsafe { printf(c_p, value); }
+}
+
+macro_rules! add_exprs {
+ ($($e:expr)?) => (0 $(+ $e)?)
+}
+
+fn main() -> i32 {
+ // 2
+ print_int(add_exprs!(2));
+
+ 0
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros12.rs b/gcc/testsuite/rust/execute/torture/macros12.rs
new file mode 100644
index 0000000..ff4a862
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros12.rs
@@ -0,0 +1,20 @@
+// { dg-output "0\n" }
+extern "C" {
+ fn printf(s: *const i8, ...);
+}
+
+fn print_int(value: i32) {
+ let s = "%d\n\0" as *const str as *const i8;
+ printf(s, value);
+}
+
+macro_rules! add_exprs {
+ ($($e:expr)?) => (0 $(+ $e)?)
+}
+
+fn main() -> i32 {
+ // 0
+ print_int(add_exprs!());
+
+ 0
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros13.rs b/gcc/testsuite/rust/execute/torture/macros13.rs
new file mode 100644
index 0000000..af5dfe8
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros13.rs
@@ -0,0 +1,20 @@
+// { dg-output "18\n" }
+extern "C" {
+ fn printf(s: *const i8, ...);
+}
+
+fn print_int(value: i32) {
+ let s = "%d\n\0" as *const str as *const i8;
+ printf(s, value);
+}
+
+macro_rules! add_exprs {
+ ($($e:expr)+) => (0 $(+ $e)+)
+}
+
+fn main() -> i32 {
+ // 1 + 2 + 15 => 18
+ print_int(add_exprs!(1 2 15));
+
+ 0
+}