diff options
| author | HaeNoe <git@haenoe.party> | 2025-04-01 07:25:04 +0200 |
|---|---|---|
| committer | HaeNoe <git@haenoe.party> | 2025-04-06 21:36:20 +0200 |
| commit | 63e825e52a1961f1270bed5075c52f2c9921ef08 (patch) | |
| tree | 6d7113e22fd51987595d5403e7b5704c4a360c5d /tests/pretty | |
| parent | 72091edcc46601b0fc10c8d71349449d86718d5e (diff) | |
| download | rust-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.pp | 10 | ||||
| -rw-r--r-- | tests/pretty/autodiff_forward.rs | 3 |
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 } |
