Skip to content

Commit a02aaec

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 d38ebeb commit a02aaec

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
@@ -106,9 +106,17 @@
106106
#[rustc_autodiff]
107107
#[inline(never)]
108108
fn inner(x: f32) -> f32 { x * x }
109+
#[rustc_autodiff(Forward, Dual, Dual,)]
110+
#[inline(never)]
111+
fn d_inner_2(x: f32, bx: f32) -> (f32, f32) {
112+
unsafe { asm!("NOP", options(pure, nomem)); };
113+
::core::hint::black_box(inner(x));
114+
::core::hint::black_box((bx,));
115+
::core::hint::black_box((inner(x), f32::default()))
116+
}
109117
#[rustc_autodiff(Forward, Dual, DualOnly,)]
110118
#[inline(never)]
111-
fn d_inner(x: f32, bx: f32) -> f32 {
119+
fn d_inner_1(x: f32, bx: f32) -> f32 {
112120
unsafe { asm!("NOP", options(pure, nomem)); };
113121
::core::hint::black_box(inner(x));
114122
::core::hint::black_box((bx,));

tests/pretty/autodiff_forward.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ pub fn f5(x: &[f64], y: f64) -> f64 {
3838

3939
// We want to make sure that we can use the macro for functions defined inside of functions
4040
pub fn f6() {
41-
#[autodiff(d_inner, Forward, Dual, DualOnly)]
41+
#[autodiff(d_inner_1, Forward, Dual, DualOnly)]
42+
#[autodiff(d_inner_2, Forward, Dual, Dual)]
4243
fn inner(x: f32) -> f32 {
4344
x * x
4445
}

0 commit comments

Comments
 (0)