Skip to content

Commit 63e825e

Browse files
committed
feat: apply autodiff macro twice to inner function
Verify that the expanded `inline` and `rustc_autodiff` macros are not duplicated.
1 parent 72091ed commit 63e825e

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

tests/pretty/autodiff_forward.pp

+9-1
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,17 @@
164164
#[rustc_autodiff]
165165
#[inline(never)]
166166
fn inner(x: f32) -> f32 { x * x }
167+
#[rustc_autodiff(Forward, 1, Dual, Dual)]
168+
#[inline(never)]
169+
fn d_inner_2(x: f32, bx_0: f32) -> (f32, f32) {
170+
unsafe { asm!("NOP", options(pure, nomem)); };
171+
::core::hint::black_box(inner(x));
172+
::core::hint::black_box((bx_0,));
173+
::core::hint::black_box(<(f32, f32)>::default())
174+
}
167175
#[rustc_autodiff(Forward, 1, Dual, DualOnly)]
168176
#[inline(never)]
169-
fn d_inner(x: f32, bx_0: f32) -> f32 {
177+
fn d_inner_1(x: f32, bx_0: f32) -> f32 {
170178
unsafe { asm!("NOP", options(pure, nomem)); };
171179
::core::hint::black_box(inner(x));
172180
::core::hint::black_box((bx_0,));

tests/pretty/autodiff_forward.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ fn f8(x: &f32) -> f32 {
5656

5757
// We want to make sure that we can use the macro for functions defined inside of functions
5858
pub fn f9() {
59-
#[autodiff(d_inner, Forward, Dual, DualOnly)]
59+
#[autodiff(d_inner_1, Forward, Dual, DualOnly)]
60+
#[autodiff(d_inner_2, Forward, Dual, Dual)]
6061
fn inner(x: f32) -> f32 {
6162
x * x
6263
}

0 commit comments

Comments
 (0)