about summary refs log tree commit diff
path: root/tests/pretty
diff options
context:
space:
mode:
authorHaeNoe <git@haenoe.party>2025-04-01 07:25:04 +0200
committerHaeNoe <git@haenoe.party>2025-04-06 21:36:20 +0200
commit63e825e52a1961f1270bed5075c52f2c9921ef08 (patch)
tree6d7113e22fd51987595d5403e7b5704c4a360c5d /tests/pretty
parent72091edcc46601b0fc10c8d71349449d86718d5e (diff)
downloadrust-63e825e52a1961f1270bed5075c52f2c9921ef08.tar.gz
rust-63e825e52a1961f1270bed5075c52f2c9921ef08.zip
feat: apply autodiff macro twice to inner function
Verify that the expanded `inline` and `rustc_autodiff` macros are not
duplicated.
Diffstat (limited to 'tests/pretty')
-rw-r--r--tests/pretty/autodiff_forward.pp10
-rw-r--r--tests/pretty/autodiff_forward.rs3
2 files changed, 11 insertions, 2 deletions
diff --git a/tests/pretty/autodiff_forward.pp b/tests/pretty/autodiff_forward.pp
index a62ced56dc4..713b8f541ae 100644
--- a/tests/pretty/autodiff_forward.pp
+++ b/tests/pretty/autodiff_forward.pp
@@ -164,9 +164,17 @@ pub fn f9() {
     #[rustc_autodiff]
     #[inline(never)]
     fn inner(x: f32) -> f32 { x * x }
+    #[rustc_autodiff(Forward, 1, Dual, Dual)]
+    #[inline(never)]
+    fn d_inner_2(x: f32, bx_0: f32) -> (f32, f32) {
+        unsafe { asm!("NOP", options(pure, nomem)); };
+        ::core::hint::black_box(inner(x));
+        ::core::hint::black_box((bx_0,));
+        ::core::hint::black_box(<(f32, f32)>::default())
+    }
     #[rustc_autodiff(Forward, 1, Dual, DualOnly)]
     #[inline(never)]
-    fn d_inner(x: f32, bx_0: f32) -> f32 {
+    fn d_inner_1(x: f32, bx_0: f32) -> f32 {
         unsafe { asm!("NOP", options(pure, nomem)); };
         ::core::hint::black_box(inner(x));
         ::core::hint::black_box((bx_0,));
diff --git a/tests/pretty/autodiff_forward.rs b/tests/pretty/autodiff_forward.rs
index e61d1ec3617..5a0660a08e5 100644
--- a/tests/pretty/autodiff_forward.rs
+++ b/tests/pretty/autodiff_forward.rs
@@ -56,7 +56,8 @@ fn f8(x: &f32) -> f32 {
 
 // We want to make sure that we can use the macro for functions defined inside of functions
 pub fn f9() {
-    #[autodiff(d_inner, Forward, Dual, DualOnly)]
+    #[autodiff(d_inner_1, Forward, Dual, DualOnly)]
+    #[autodiff(d_inner_2, Forward, Dual, Dual)]
     fn inner(x: f32) -> f32 {
         x * x
     }