aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust/execute/torture/macros16.rs14
-rw-r--r--gcc/testsuite/rust/execute/torture/macros17.rs17
-rw-r--r--gcc/testsuite/rust/execute/torture/macros18.rs14
3 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/execute/torture/macros16.rs b/gcc/testsuite/rust/execute/torture/macros16.rs
new file mode 100644
index 0000000..47ab241
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros16.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:literal) => {
+ 0 + $e
+ };
+ ($e:literal $($es:literal)*) => {
+ $e + add!($($es)*)
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(1 2 3 10); // 16
+
+ a - 16
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros17.rs b/gcc/testsuite/rust/execute/torture/macros17.rs
new file mode 100644
index 0000000..e007bb3
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros17.rs
@@ -0,0 +1,17 @@
+macro_rules! two {
+ (2) => {
+ 3
+ };
+}
+
+macro_rules! one {
+ (1) => {
+ two!(2)
+ };
+}
+
+fn main() -> i32 {
+ let a = one!(1);
+
+ a - 3
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros18.rs b/gcc/testsuite/rust/execute/torture/macros18.rs
new file mode 100644
index 0000000..61df17e
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros18.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:literal) => {
+ 0 + $e
+ };
+ ($e:literal $($es:literal)*) => {
+ $e + add!($($es)*)
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(3 4); // 7
+
+ a - 7
+}