Repository: rust
Issue: Panic: forcing query with already existing `DepNode`
Labels: I-ICE,T-compiler,A-incr-comp,C-bug,S-needs-repro

### Code

I'm sorry, but trying to minimize from here is going to take longer than I can afford to spend.  The best I can do is open this ticket and point to the code:
https://github.com/martinthomson/raw-ipa/commit/c8390ab0caac848b524ed9ee9638c0eb4d444c53

Note that the snapshot I provided here does not compile, but then it won't crash the compiler either in most cases.  This seems to be an interaction with incremental compilation.  Running `cargo clean` makes the problem go away.  I don't have exact STR for getting into the necessary state for reproducing the bug.

### Meta

`rustc --version --verbose`:
```
rustc 1.68.2 (9eb3afe9e 2023-03-27)
binary: rustc
commit-hash: 9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0
commit-date: 2023-03-27
host: x86_64-unknown-linux-gnu
release: 1.68.2
LLVM version: 15.0.6
```

### Error output

```
thread 'rustc' panicked at 'forcing query with already existing `DepNode`
```

...more in the details (there is a lot).

<details><summary><strong>Backtrace</strong></summary>
<p>

```
$ cargo bench -F enable-benches --bench oneshot_ipa -- -a 20 -n 100
   Compiling raw-ipa v0.1.0 (...)
thread 'rustc' panicked at 'forcing query with already existing `DepNode`
- query-key: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [Binder(TraitPredicate(<S as protocol::basics::BasicProtocols<C, F>>, polarity:Positive), []), Binder(TraitPredicate(<S as protocol::basics::sum_of_product::SumOfProducts<C>>, polarity:Positive), []), Binder(TraitPredicate(<S as protocol::basics::share_known_value::ShareKnownValue<C, F>>, polarity:Positive), []), Binder(TraitPredicate(<S as protocol::basics::mul::SecureMul<C>>, polarity:Positive), []), Binder(TraitPredicate(<S as std::marker::Sync>, polarity:Positive), []), Binder(TraitPredicate(<S as std::marker::Send>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [S, C, protocol::RecordId], def_id: DefId(0:6550 ~ raw_ipa[ec22]::protocol::basics::reveal::Reveal::Output) }, Term::Ty(F)), []), Binder(TraitPredicate(<S as protocol::basics::reveal::Reveal<C, protocol::RecordId>>, polarity:Positive), []), Binder(TraitPredicate(<S as protocol::basics::reshare::Reshare<C, protocol::RecordId>>, polarity:Positive), []), Binder(TraitPredicate(<S as secret_sharing::scheme::Linear<F>>, polarity:Positive), []), Binder(TraitPredicate(<S as ff::ArithmeticRefOps<F>>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [S, F], def_id: DefId(2:2765 ~ core[1d43]::ops::arith::Mul::Output) }, Term::Ty(S)), []), Binder(TraitPredicate(<S as std::ops::Mul<F>>, polarity:Positive), []), Binder(TraitPredicate(<S as std::ops::SubAssign<&'a S>>, polarity:Positive), [Region(BrNamed(DefId(0:212 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a#3), 'a))]), Binder(ProjectionPredicate(AliasTy { substs: [S, &'a S], def_id: DefId(2:2760 ~ core[1d43]::ops::arith::Sub::Output) }, Term::Ty(S)), [Region(BrNamed(DefId(0:211 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a#2), 'a))]), Binder(TraitPredicate(<S as std::ops::Sub<&'a S>>, polarity:Positive), [Region(BrNamed(DefId(0:211 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a#2), 'a))]), Binder(ProjectionPredicate(AliasTy { substs: [S], def_id: DefId(2:2781 ~ core[1d43]::ops::arith::Neg::Output) }, Term::Ty(S)), []), Binder(TraitPredicate(<S as std::ops::Neg>, polarity:Positive), []), Binder(TraitPredicate(<S as std::ops::AddAssign<&'a S>>, polarity:Positive), [Region(BrNamed(DefId(0:210 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a#1), 'a))]), Binder(ProjectionPredicate(AliasTy { substs: [S, &'a S], def_id: DefId(2:2755 ~ core[1d43]::ops::arith::Add::Output) }, Term::Ty(S)), [Region(BrNamed(DefId(0:209 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a), 'a))]), Binder(TraitPredicate(<S as std::ops::Add<&'a S>>, polarity:Positive), [Region(BrNamed(DefId(0:209 ~ raw_ipa[ec22]::ff::ArithmeticRefOps::'a), 'a))]), Binder(TraitPredicate(<S as secret_sharing::scheme::SecretSharing<F>>, polarity:Positive), []), Binder(TraitPredicate(<S as std::fmt::Debug>, polarity:Positive), []), Binder(TraitPredicate(<S as std::clone::Clone>, polarity:Positive), []), Binder(TraitPredicate(<C as protocol::context::Context>, polarity:Positive), []), Binder(TraitPredicate(<C as seq_join::SeqJoin>, polarity:Positive), []), Binder(TraitPredicate(<C as std::marker::Sync>, polarity:Positive), []), Binder(TraitPredicate(<C as std::marker::Send>, polarity:Positive), []), Binder(TraitPredicate(<C as std::clone::Clone>, polarity:Positive), []), Binder(TraitPredicate(<F as ff::prime_field::PrimeField>, polarity:Positive), []), Binder(TraitPredicate(<F as ff::field::Field>, polarity:Positive), []), Binder(TraitPredicate(<F as std::convert::Into<<F as secret_sharing::SharedValue>::Storage>>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [F, u128], def_id: DefId(2:2499 ~ core[1d43]::convert::TryFrom::Error) }, Term::Ty(error::Error)), []), Binder(TraitPredicate(<F as std::convert::TryFrom<u128>>, polarity:Positive), []), Binder(TraitPredicate(<F as secret_sharing::SharedValue>, polarity:Positive), []), Binder(TraitPredicate(<F as ff::Serializable>, polarity:Positive), []), Binder(TraitPredicate(<F as ff::ArithmeticOps>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [F], def_id: DefId(2:2781 ~ core[1d43]::ops::arith::Neg::Output) }, Term::Ty(F)), []), Binder(TraitPredicate(<F as std::ops::Neg>, polarity:Positive), []), Binder(TraitPredicate(<F as std::ops::MulAssign>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [F, F], def_id: DefId(2:2765 ~ core[1d43]::ops::arith::Mul::Output) }, Term::Ty(F)), []), Binder(TraitPredicate(<F as std::ops::Mul>, polarity:Positive), []), Binder(TraitPredicate(<F as std::ops::SubAssign>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [F, F], def_id: DefId(2:2760 ~ core[1d43]::ops::arith::Sub::Output) }, Term::Ty(F)), []), Binder(TraitPredicate(<F as std::ops::Sub>, polarity:Positive), []), Binder(TraitPredicate(<F as std::ops::AddAssign>, polarity:Positive), []), Binder(ProjectionPredicate(AliasTy { substs: [F, F], def_id: DefId(2:2755 ~ core[1d43]::ops::arith::Add::Output) }, Term::Ty(F)), []), Binder(TraitPredicate(<F as std::ops::Add>, polarity:Positive), []), Binder(TraitPredicate(<F as std::marker::Sync>, polarity:Positive), []), Binder(TraitPredicate(<F as std::marker::Send>, polarity:Positive), []), Binder(TraitPredicate(<F as std::fmt::Debug>, polarity:Positive), []), Binder(TraitPredicate(<F as std::cmp::PartialEq>, polarity:Positive), []), Binder(TraitPredicate(<F as std::marker::Copy>, polarity:Positive), []), Binder(TraitPredicate(<F as std::clone::Clone>, polarity:Positive), []), Binder(TraitPredicate(<S as std::marker::Sized>, polarity:Positive), []), Binder(TraitPredicate(<C as std::marker::Sized>, polarity:Positive), []), Binder(TraitPredicate(<F as std::marker::Sized>, polarity:Positive), []), Binder(OutlivesPredicate(F, ReStatic), [])], reveal: UserFacing, constness: NotConst }, value: Normalize { value: [async fn body@src/protocol/boolean/comparison.rs:249:1: 299:2] } } }
- dep-node: type_op_normalize_ty(b5469e9901a70790-27338bfc99117c96)', /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/compiler/rustc_query_system/src/dep_graph/graph.rs:316:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/std/src/panicking.rs:575:5
   1: core::panicking::panic_fmt
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/core/src/panicking.rs:64:14
   2: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Ty>>>, core::result::Result<&rustc_middle::infer::canonical::Canonical<rustc_middle::infer::canonical::QueryResponse<rustc_middle::ty::Ty>>, rustc_middle::traits::query::NoSolution>>
   3: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::queries::type_op_normalize_ty, rustc_query_impl::plumbing::QueryCtxt>
   4: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::type_op_normalize_ty
   5: <rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Ty>> as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform
   6: <&mut <rustc_borrowck::type_check::free_region_relations::UniversalRegionRelationsBuilder>::create::{closure#0} as core::ops::function::FnOnce<(rustc_middle::ty::Ty,)>>::call_once
   7: <alloc::vec::Vec<&rustc_middle::infer::canonical::QueryRegionConstraints> as alloc::vec::spec_from_iter::SpecFromIter<&rustc_middle::infer::canonical::QueryRegionConstraints, core::iter::adapters::flatten::FlatMap<core::iter::adapters::chain::Chain<core::iter::adapters::cloned::Cloned<core::slice::iter::Iter<rustc_middle::ty::Ty>>, core::option::IntoIter<rustc_middle::ty::Ty>>, core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<&rustc_middle::infer::canonical::QueryRegionConstraints>, core::option::IntoIter<&rustc_middle::infer::canonical::QueryRegionConstraints>>, core::option::IntoIter<&rustc_middle::infer::canonical::QueryRegionConstraints>>, <rustc_borrowck::type_check::free_region_relations::UniversalRegionRelationsBuilder>::create::{closure#0}>>>::from_iter
   8: rustc_borrowck::type_check::free_region_relations::create
   9: rustc_borrowck::nll::compute_regions
  10: rustc_borrowck::do_mir_borrowck
  11: rustc_borrowck::mir_borrowck
  12: <rustc_borrowck::provide::{closure#0} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId)>>::call_once
  13: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId, &rustc_middle::mir::query::BorrowCheckResult>
  14: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::queries::mir_borrowck, rustc_query_impl::plumbing::QueryCtxt>
  15: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_borrowck
  16: <rustc_borrowck::type_check::TypeChecker>::prove_closure_bounds
  17: <rustc_borrowck::type_check::TypeChecker>::typeck_mir
  18: rustc_borrowck::nll::compute_regions
  19: rustc_borrowck::do_mir_borrowck
  20: rustc_borrowck::mir_borrowck
  21: <rustc_borrowck::provide::{closure#0} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId)>>::call_once
  22: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId, &rustc_middle::mir::query::BorrowCheckResult>
  23: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::queries::mir_borrowck, rustc_query_impl::plumbing::QueryCtxt>
  24: rustc_query_system::query::plumbing::force_query::<rustc_query_impl::queries::mir_borrowck, rustc_query_impl::plumbing::QueryCtxt, rustc_middle::dep_graph::dep_node::DepKind>
  25: rustc_query_impl::plumbing::force_from_dep_node::<rustc_query_impl::queries::mir_borrowck>
  26: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  27: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::type_of, rustc_query_impl::plumbing::QueryCtxt, rustc_middle::dep_graph::dep_node::DepKind>
  28: <rustc_middle::ty::context::TyCtxt>::bound_type_of
  29: <rustc_middle::ty::util::OpaqueTypeExpander>::expand_opaque_ty
  30: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  31: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  32: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  33: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  34: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  35: <rustc_middle::ty::util::OpaqueTypeExpander>::expand_opaque_ty
  36: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  37: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  38: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  39: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  40: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  41: <rustc_middle::ty::util::OpaqueTypeExpander>::expand_opaque_ty
  42: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  43: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  44: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  45: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  46: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  47: <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  48: <rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  49: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  50: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  51: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  52: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  53: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  54: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  55: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  56: <rustc_middle::ty::util::OpaqueTypeExpander>::expand_opaque_ty
  57: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  58: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  59: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  60: rustc_middle::ty::util::fold_list::<rustc_middle::ty::util::OpaqueTypeExpander, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with<rustc_middle::ty::util::OpaqueTypeExpander>::{closure#0}>
  61: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_middle::ty::util::OpaqueTypeExpander>
  62: <rustc_middle::ty::util::OpaqueTypeExpander>::expand_opaque_ty
  63: <rustc_middle::ty::context::TyCtxt>::try_expand_impl_trait_type
  64: rustc_hir_analysis::check::check::check_mod_item_types
  65: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId, ()>
  66: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::queries::check_mod_item_types, rustc_query_impl::plumbing::QueryCtxt>
  67: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::check_mod_item_types
  68: <rustc_session::session::Session>::time::<(), rustc_hir_analysis::check_crate::{closure#6}>
  69: rustc_hir_analysis::check_crate
  70: rustc_interface::passes::analysis
  71: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, (), core::result::Result<(), rustc_errors::ErrorGuaranteed>>
  72: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
  73: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
  74: <rustc_interface::passes::QueryContext>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}::{closure#2}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
  75: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  76: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.68.2 (9eb3afe9e 2023-03-27) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C opt-level=3 -C linker-plugin-lto -C debug-assertions=on -C overflow-checks=off -C incremental=[REDACTED] -C link-arg=-fuse-ld=lld

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [type_op_normalize_ty] normalizing `[async fn body@src/protocol/boolean/comparison.rs:249:1: 299:2]`
#1 [mir_borrowck] borrow-checking `protocol::boolean::comparison::first_differing_bit::{closure#0}`
#2 [mir_borrowck] borrow-checking `protocol::boolean::comparison::first_differing_bit`
#3 [type_of] computing type of `protocol::boolean::comparison::first_differing_bit::{opaque#0}`
#4 [check_mod_item_types] checking item types in module `protocol::attribution::apply_attribution_window`
#5 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `raw-ipa`
```

</p>
</details>