Skip to content

Commit ac20dc9

Browse files
committed
some bugfixes
1 parent 1e283c1 commit ac20dc9

File tree

3 files changed

+31
-29
lines changed

3 files changed

+31
-29
lines changed

compiler/rustc_builtin_macros/src/autodiff.rs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
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};
129
use rustc_expand::base::{Annotatable, ExtCtxt};
13-
//use rustc_span::symbol::{kw, sym, Ident};
10+
use rustc_span::symbol::{kw, sym, Ident};
1411
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;
1921

20-
//use rustc_ast::AssocItemKind;
2122

2223
#[cfg(not(llvm_enzyme))]
2324
pub fn expand(
@@ -151,7 +152,7 @@ pub fn expand(
151152
if !sig.decl.output.has_ret() {
152153
// We don't want users to provide a return activity if the function doesn't return anything.
153154
// 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());
155156
ts.push(TokenTree::Token(t, Spacing::Joint));
156157
}
157158
let ts: TokenStream = TokenStream::from_iter(ts);
@@ -195,7 +196,7 @@ pub fn expand(
195196
P(ast::NormalAttr::from_ident(Ident::with_dummy_span(sym::rustc_autodiff)));
196197
let ts2: Vec<TokenTree> = vec![
197198
TokenTree::Token(
198-
Token::new(TokenKind::Ident(sym::never, false), span),
199+
Token::new(TokenKind::Ident(sym::never, false.into()), span),
199200
Spacing::Joint,
200201
)];
201202
let never_arg = ast::DelimArgs {
@@ -204,6 +205,7 @@ pub fn expand(
204205
tokens: ast::tokenstream::TokenStream::from_iter(ts2),
205206
};
206207
let inline_item = ast::AttrItem {
208+
unsafety: ast::Safety::Default,
207209
path: ast::Path::from_ident(Ident::with_dummy_span(sym::inline)),
208210
args: ast::AttrArgs::Delimited(never_arg),
209211
tokens: None,
@@ -322,7 +324,7 @@ fn gen_enzyme_body(
322324
let blackbox_path = ecx.std_path(&[Symbol::intern("hint"), Symbol::intern("black_box")]);
323325
let empty_loop_block = ecx.block(span, ThinVec::new());
324326
let noop = ast::InlineAsm {
325-
template: vec![ast::InlineAsmTemplatePiece::String("NOP".to_string())],
327+
template: vec![ast::InlineAsmTemplatePiece::String("NOP".to_string().into())],
326328
template_strs: Box::new([]),
327329
operands: vec![],
328330
clobber_abis: vec![],
@@ -509,6 +511,8 @@ fn gen_enzyme_decl(
509511
x: &AutoDiffAttrs,
510512
span: Span,
511513
) -> (ast::FnSig, Vec<String>, Vec<Ident>) {
514+
use ast::BindingMode;
515+
512516
let sig_args = sig.decl.inputs.len() + if sig.decl.output.has_ret() { 1 } else { 0 };
513517
let num_activities = x.input_activity.len() + if x.has_ret_activity() { 1 } else { 0 };
514518
if sig_args != num_activities {
@@ -560,7 +564,7 @@ fn gen_enzyme_decl(
560564
shadow_arg.pat = P(ast::Pat {
561565
// TODO: Check id
562566
id: ast::DUMMY_NODE_ID,
563-
kind: PatKind::Ident(BindingAnnotation::NONE, ident, None),
567+
kind: PatKind::Ident(BindingMode::NONE, ident, None),
564568
span: shadow_arg.pat.span,
565569
tokens: shadow_arg.pat.tokens.clone(),
566570
});
@@ -580,7 +584,7 @@ fn gen_enzyme_decl(
580584
shadow_arg.pat = P(ast::Pat {
581585
// TODO: Check id
582586
id: ast::DUMMY_NODE_ID,
583-
kind: PatKind::Ident(BindingAnnotation::NONE, ident, None),
587+
kind: PatKind::Ident(BindingMode::NONE, ident, None),
584588
span: shadow_arg.pat.span,
585589
tokens: shadow_arg.pat.tokens.clone(),
586590
});
@@ -624,7 +628,7 @@ fn gen_enzyme_decl(
624628
ty: ty.clone(),
625629
pat: P(ast::Pat {
626630
id: ast::DUMMY_NODE_ID,
627-
kind: PatKind::Ident(BindingAnnotation::NONE, ident, None),
631+
kind: PatKind::Ident(BindingMode::NONE, ident, None),
628632
span: ty.span,
629633
tokens: None,
630634
}),

compiler/rustc_middle/src/ty/typetree.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::ty::{self, Ty, FieldsShape};
1+
use crate::ty::{self, Ty, FieldsShape, TypeAndMut};
22
use rustc_ast::expand::typetree::{Type, TypeTree, FncTree, Kind};
33
//, Type, Kind, TypeTree, FncTree, FieldsShape};
44
use super::context::TyCtxt;
@@ -8,7 +8,7 @@ use crate::error::AutodiffUnsafeInnerConstRef;
88
use super::adt::*;
99
use rustc_hir as hir;
1010
use rustc_type_ir::Adt;
11-
11+
use tracing::trace;
1212

1313
pub fn typetree_from<'tcx>(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> TypeTree {
1414
let mut visited = vec![];
@@ -128,9 +128,8 @@ fn typetree_from_ty<'a>(ty: Ty<'a>, tcx: TyCtxt<'a>, depth: usize, safety: bool,
128128
unimplemented!("what to do whith fn ptr?");
129129
}
130130

131-
let inner_ty_and_mut = ty.builtin_deref(true).unwrap();
132-
let is_mut = inner_ty_and_mut.mutbl == hir::Mutability::Mut;
133-
let inner_ty = inner_ty_and_mut.ty;
131+
let inner_ty = ty.builtin_deref(true).unwrap();
132+
let is_mut = inner_ty.is_mutable_ptr();
134133

135134
// Now account for inner mutability.
136135
if !is_mut && depth > 0 && safety {
@@ -149,7 +148,7 @@ fn typetree_from_ty<'a>(ty: Ty<'a>, tcx: TyCtxt<'a>, depth: usize, safety: bool,
149148

150149
tcx.sess
151150
.dcx()
152-
.emit_warning(AutodiffUnsafeInnerConstRef{span, ty: ptr_ty});
151+
.emit_warn(AutodiffUnsafeInnerConstRef{span, ty: ptr_ty});
153152
}
154153

155154
//visited.push(inner_ty);

compiler/rustc_span/src/symbol.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,6 @@ symbols! {
536536
cfg_attr_multi,
537537
cfg_autodiff_fallback,
538538
cfg_doctest,
539-
cfg_autodiff_fallback,
540539
cfg_eval,
541540
cfg_hide,
542541
cfg_overflow_checks,

0 commit comments

Comments
 (0)