1
1
use crate :: errors;
2
- //use rustc_ast::expand::autodiff_attrs::{AutoDiffAttrs, DiffActivity, DiffMode, is_fwd, is_rev, valid_input_activity, valid_ty_for_activity};
3
- //use rustc_ast::ptr::P;
4
- //use rustc_ast::token::{Token, TokenKind};
5
- //use rustc_ast::tokenstream::*;
6
- //use rustc_ast::FnRetTy;
7
- use rustc_ast:: { self as ast} ; //, FnHeader, FnSig, Generics, MetaItemKind, NestedMetaItem, StmtKind};
8
- //use rustc_ast::ByRef;
9
- //use rustc_ast::{BindingAnnotation, ByRef};
10
- //use rustc_ast::{Fn, ItemKind, PatKind, Stmt, TyKind};
11
- //use rustc_ast::{Fn, ItemKind, PatKind, Stmt, TyKind, Unsafe};
2
+ use rustc_ast:: expand:: autodiff_attrs:: { AutoDiffAttrs , DiffActivity , DiffMode , is_fwd, is_rev, valid_input_activity, valid_ty_for_activity} ;
3
+ use rustc_ast:: ptr:: P ;
4
+ use rustc_ast:: token:: { Token , TokenKind } ;
5
+ use rustc_ast:: tokenstream:: * ;
6
+ use rustc_ast:: FnRetTy ;
7
+ use rustc_ast:: { self as ast, NestedMetaItem } ; //, FnHeader, FnSig, Generics, MetaItemKind, NestedMetaItem, StmtKind};
8
+ use rustc_ast:: { ItemKind , PatKind , TyKind } ;
12
9
use rustc_expand:: base:: { Annotatable , ExtCtxt } ;
13
- // use rustc_span::symbol::{kw, sym, Ident};
10
+ use rustc_span:: symbol:: { kw, sym, Ident } ;
14
11
use rustc_span:: Span ;
15
- //use rustc_span::Symbol;
16
- //use std::string::String;
17
- //use thin_vec::{thin_vec, ThinVec};
18
- //use std::str::FromStr;
12
+ use rustc_span:: Symbol ;
13
+ use std:: string:: String ;
14
+ use thin_vec:: { thin_vec, ThinVec } ;
15
+ use std:: str:: FromStr ;
16
+ use rustc_ast:: ast:: Generics ;
17
+ use rustc_ast:: FnSig ;
18
+
19
+ use rustc_ast:: AssocItemKind ;
20
+ use tracing:: trace;
19
21
20
- //use rustc_ast::AssocItemKind;
21
22
22
23
#[ cfg( not( llvm_enzyme) ) ]
23
24
pub fn expand (
@@ -151,7 +152,7 @@ pub fn expand(
151
152
if !sig. decl . output . has_ret ( ) {
152
153
// We don't want users to provide a return activity if the function doesn't return anything.
153
154
// For simplicity, we just add a dummy token to the end of the list.
154
- let t = Token :: new ( TokenKind :: Ident ( sym:: None , false ) , Span :: default ( ) ) ;
155
+ let t = Token :: new ( TokenKind :: Ident ( sym:: None , false . into ( ) ) , Span :: default ( ) ) ;
155
156
ts. push ( TokenTree :: Token ( t, Spacing :: Joint ) ) ;
156
157
}
157
158
let ts: TokenStream = TokenStream :: from_iter ( ts) ;
@@ -195,7 +196,7 @@ pub fn expand(
195
196
P ( ast:: NormalAttr :: from_ident ( Ident :: with_dummy_span ( sym:: rustc_autodiff) ) ) ;
196
197
let ts2: Vec < TokenTree > = vec ! [
197
198
TokenTree :: Token (
198
- Token :: new( TokenKind :: Ident ( sym:: never, false ) , span) ,
199
+ Token :: new( TokenKind :: Ident ( sym:: never, false . into ( ) ) , span) ,
199
200
Spacing :: Joint ,
200
201
) ] ;
201
202
let never_arg = ast:: DelimArgs {
@@ -204,6 +205,7 @@ pub fn expand(
204
205
tokens : ast:: tokenstream:: TokenStream :: from_iter ( ts2) ,
205
206
} ;
206
207
let inline_item = ast:: AttrItem {
208
+ unsafety : ast:: Safety :: Default ,
207
209
path : ast:: Path :: from_ident ( Ident :: with_dummy_span ( sym:: inline) ) ,
208
210
args : ast:: AttrArgs :: Delimited ( never_arg) ,
209
211
tokens : None ,
@@ -322,7 +324,7 @@ fn gen_enzyme_body(
322
324
let blackbox_path = ecx. std_path ( & [ Symbol :: intern ( "hint" ) , Symbol :: intern ( "black_box" ) ] ) ;
323
325
let empty_loop_block = ecx. block ( span, ThinVec :: new ( ) ) ;
324
326
let noop = ast:: InlineAsm {
325
- template : vec ! [ ast:: InlineAsmTemplatePiece :: String ( "NOP" . to_string( ) ) ] ,
327
+ template : vec ! [ ast:: InlineAsmTemplatePiece :: String ( "NOP" . to_string( ) . into ( ) ) ] ,
326
328
template_strs : Box :: new ( [ ] ) ,
327
329
operands : vec ! [ ] ,
328
330
clobber_abis : vec ! [ ] ,
@@ -509,6 +511,8 @@ fn gen_enzyme_decl(
509
511
x : & AutoDiffAttrs ,
510
512
span : Span ,
511
513
) -> ( ast:: FnSig , Vec < String > , Vec < Ident > ) {
514
+ use ast:: BindingMode ;
515
+
512
516
let sig_args = sig. decl . inputs . len ( ) + if sig. decl . output . has_ret ( ) { 1 } else { 0 } ;
513
517
let num_activities = x. input_activity . len ( ) + if x. has_ret_activity ( ) { 1 } else { 0 } ;
514
518
if sig_args != num_activities {
@@ -560,7 +564,7 @@ fn gen_enzyme_decl(
560
564
shadow_arg. pat = P ( ast:: Pat {
561
565
// TODO: Check id
562
566
id : ast:: DUMMY_NODE_ID ,
563
- kind : PatKind :: Ident ( BindingAnnotation :: NONE , ident, None ) ,
567
+ kind : PatKind :: Ident ( BindingMode :: NONE , ident, None ) ,
564
568
span : shadow_arg. pat . span ,
565
569
tokens : shadow_arg. pat . tokens . clone ( ) ,
566
570
} ) ;
@@ -580,7 +584,7 @@ fn gen_enzyme_decl(
580
584
shadow_arg. pat = P ( ast:: Pat {
581
585
// TODO: Check id
582
586
id : ast:: DUMMY_NODE_ID ,
583
- kind : PatKind :: Ident ( BindingAnnotation :: NONE , ident, None ) ,
587
+ kind : PatKind :: Ident ( BindingMode :: NONE , ident, None ) ,
584
588
span : shadow_arg. pat . span ,
585
589
tokens : shadow_arg. pat . tokens . clone ( ) ,
586
590
} ) ;
@@ -624,7 +628,7 @@ fn gen_enzyme_decl(
624
628
ty : ty. clone ( ) ,
625
629
pat : P ( ast:: Pat {
626
630
id : ast:: DUMMY_NODE_ID ,
627
- kind : PatKind :: Ident ( BindingAnnotation :: NONE , ident, None ) ,
631
+ kind : PatKind :: Ident ( BindingMode :: NONE , ident, None ) ,
628
632
span : ty. span ,
629
633
tokens : None ,
630
634
} ) ,
0 commit comments