Skip to content

Commit 6b29bb6

Browse files
committed
Prevent ICE in autodiff validation by emitting user-friendly errors
1 parent 7c4a55c commit 6b29bb6

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Diff for: compiler/rustc_codegen_ssa/src/codegen_attrs.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -930,13 +930,19 @@ fn autodiff_attrs(tcx: TyCtxt<'_>, id: DefId) -> Option<AutoDiffAttrs> {
930930
}
931931
}
932932

933+
// Validate input and return activities
934+
let mut msg = "".to_string();
933935
for &input in &arg_activities {
934936
if !valid_input_activity(mode, input) {
935-
span_bug!(attr.span(), "Invalid input activity {} for {} mode", input, mode);
937+
msg = format!("Invalid input activity {} for {} mode", input, mode);
936938
}
937939
}
938940
if !valid_ret_activity(mode, ret_activity) {
939-
span_bug!(attr.span(), "Invalid return activity {} for {} mode", ret_activity, mode);
941+
msg = format!("Invalid return activity {} for {} mode", ret_activity, mode);
942+
}
943+
if msg != "".to_string() {
944+
tcx.dcx().struct_span_err(attr.span(), msg).with_note("invalid activity").emit();
945+
return Some(AutoDiffAttrs::error());
940946
}
941947

942948
Some(AutoDiffAttrs { mode, ret_activity, input_activity: arg_activities })

0 commit comments

Comments
 (0)