Skip to content

hang/slowdown in rustc_middle::traits::ObligationCauseCode #105269

Open
@matthiaskrgr

Description

@matthiaskrgr

see also #90180

pub struct B0;
pub struct B1;
use std::ops::Shl;
use std::ops::Sub;
pub type Shleft<A, B> = <A as Shl<B>>::Output;
pub type Sub1<A> = <A as Sub<B1>>::Output;
pub struct UInt<U, B> {
    pub(crate) msb: U,
    pub(crate) lsb: B,
}
impl<U, B, Ur, Br> Shl<UInt<Ur, Br>> for UInt<U, B>
where
    UInt<Ur, Br>: Sub<Br>,
    UInt<UInt<B, U>, B0>: Shl<Self::Output>,
{
    type Output = Shleft<UInt<UInt<U, B>, B0>, Sub1<UInt<Ur, Br>>>;
    fn shl(self, rhs: UInt<Ur, Br>) -> Sub1<UInt<Ur, B1>> {
        unimplemented!()
    }
}

rustc --crate-type lib -Ztime-passes hang.rs

time:   0.018; rss:   37MB ->   39MB (   +2MB)	parse_crate
time:   0.011; rss:   42MB ->   57MB (  +15MB)	expand_crate
time:   0.011; rss:   42MB ->   57MB (  +15MB)	macro_expand_crate
time:   0.000; rss:   57MB ->   59MB (   +2MB)	finalize_macro_resolutions
time:   0.001; rss:   59MB ->   62MB (   +3MB)	late_resolve_crate
time:   0.002; rss:   57MB ->   62MB (   +5MB)	resolve_crate
time:   0.013; rss:   39MB ->   62MB (  +23MB)	configure_and_expand
time:   0.001; rss:   62MB ->   65MB (   +3MB)	looking_for_derive_registrar
time:   0.001; rss:   62MB ->   65MB (   +3MB)	misc_checking_1
time:   0.001; rss:   65MB ->   69MB (   +4MB)	type_collecting
time:   0.001; rss:   69MB ->   71MB (   +3MB)	coherence_checking
<freeze>

perf top shows a lot of processing in <rustc_middle::traits::ObligationCauseCode as core::cmp::PartialEq>::eq

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-trait-systemArea: Trait systemC-bugCategory: This is a bug.I-hangIssue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions