Skip to content

ICE: in visit, at rust/backend/rust-compile-item.cc:179 #4486

@Anonymous1-design

Description

@Anonymous1-design

Code

Reduced:

 trait Number:  {
    fn from<T: >(n: T) -> Self;
}
trait NumConv {}
fn main() {
    let _: f64 = Number::from(0.0f64);
}

Original:

pub trait Number: NumConv {
    fn from<T: Number>(n: T) -> Self;
}
trait NumberExt: Number {
    fn to_double(&self) -> f64 {
        self.to_float() * 2.0
    }
}
impl<T: Number> NumberExt for T {}
impl Number for f64 {
    fn from<T: Number + NewTrait>(n: T) -> f64 {
        n.to_float()
    }
}
pub trait NumConv {
    fn to_float(&self) -> f64;
}
impl NumConv for f64 {
    fn to_float(&self) -> f64 {
        *self
    }
}
pub fn main() {
    let _: f64 = Number::from(0.0f64);
}
trait NewTrait {
    type Assoc;
}

Meta

1a91028

Error output

/tmp/trait_fuzzer_rustc_ddbzy8h3/temp_w0_iter_50_original_var_18.rs:17:5: error: bounds not satisfied for f64 'NewTrait' is not satisfied [E0277]
   17 |     fn from<T: Number + NewTrait>(n: T) -> f64 {
      |     ^~                  ~~~~~~~~
Backtrace

crab1: internal compiler error: in visit, at rust/backend/rust-compile-item.cc:179
0x2c1ef7b internal_error(char const*, ...)
  ../../gcc/diagnostic-global-context.cc:787
0xb49f7d fancy_abort(char const*, int, char const*)
  ../../gcc/diagnostics/context.cc:1813
0x914999 Rust::Compile::CompileItem::visit(Rust::HIR::Function&)
  ../../gcc/rust/backend/rust-compile-item.cc:179
0xd2a658 Rust::Compile::CompileInherentImplItem::Compile(Rust::HIR::ImplItem*, Rust::Compile::Context*, Rust::TyTy::BaseType*, unsigned long)
  ../../gcc/rust/backend/rust-compile-implitem.h:36
0xd2a658 Rust::Compile::HIRCompileBase::query_compile(unsigned int, Rust::TyTy::BaseType*, Rust::HIR::PathIdentSegment const&, Rust::Analysis::NodeMapping const&, unsigned long, bool)
  ../../gcc/rust/backend/rust-compile-resolve-path.cc:387
0xd2aab7 Rust::Compile::ResolvePathRef::resolve_with_node_id(Rust::HIR::PathIdentSegment const&, Rust::Analysis::NodeMapping const&, unsigned long, bool, unsigned int)
  ../../gcc/rust/backend/rust-compile-resolve-path.cc:212
0xd2adb9 Rust::Compile::ResolvePathRef::resolve(Rust::HIR::PathIdentSegment const&, Rust::Analysis::NodeMapping const&, unsigned long, bool)
  ../../gcc/rust/backend/rust-compile-resolve-path.cc:243
0xd2ae5f Rust::Compile::ResolvePathRef::Compile(Rust::HIR::PathInExpression&, Rust::Compile::Context*)
  ../../gcc/rust/backend/rust-compile-resolve-path.cc:46
0xf4d2b3 ???
  ../../gcc/rust/backend/rust-compile-expr.h:59
0xf52601 Rust::Compile::CompileExpr::Compile(Rust::HIR::Expr&, Rust::Compile::Context*)
  ../../gcc/rust/backend/rust-compile-expr.cc:52
0xf52601 Rust::Compile::CompileExpr::visit(Rust::HIR::CallExpr&)
  ../../gcc/rust/backend/rust-compile-expr.cc:1396
0xf4e4e4 Rust::Compile::CompileExpr::Compile(Rust::HIR::Expr&, Rust::Compile::Context*)
  ../../gcc/rust/backend/rust-compile-expr.cc:52
0xf49b22 Rust::Compile::CompileStmt::visit(Rust::HIR::LetStmt&)
  ../../gcc/rust/backend/rust-compile-stmt.cc:74
0xf49d71 Rust::Compile::CompileStmt::Compile(Rust::HIR::Stmt*, Rust::Compile::Context*)
  ../../gcc/rust/backend/rust-compile-stmt.cc:36
0xf759ab Rust::Compile::HIRCompileBase::compile_function_body(tree_node*, Rust::HIR::BlockExpr&, Rust::TyTy::BaseType*)
  ../../gcc/rust/backend/rust-compile-base.cc:607
0xf79319 Rust::Compile::HIRCompileBase::compile_function(bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tl::optional<Rust::HIR::SelfParam>&, std::vector<Rust::HIR::FunctionParam, std::allocator<Rust::HIR::FunctionParam> >&, Rust::HIR::FunctionQualifiers const&, Rust::HIR::Visibility&, std::vector<Rust::AST::Attribute, std::allocator<Rust::AST::Attribute> >&, unsigned long, Rust::HIR::BlockExpr*, Rust::Resolver::CanonicalPath const&, Rust::TyTy::FnType*)
  ../../gcc/rust/backend/rust-compile-base.cc:809
0xf47c39 Rust::Compile::CompileItem::visit(Rust::HIR::Function&)
  ../../gcc/rust/backend/rust-compile-item.cc:231
0xd1cc0a Rust::Compile::CompileItem::compile(Rust::HIR::Item*, Rust::Compile::Context*, Rust::TyTy::BaseType*, unsigned long)
  ../../gcc/rust/backend/rust-compile-item.h:37
0xd1cc0a Rust::Compile::CompileCrate::go()
  ../../gcc/rust/backend/rust-compile.cc:48
0xd1cc98 Rust::Compile::CompileCrate::Compile(Rust::HIR::Crate&, Rust::Compile::Context*)
  ../../gcc/rust/backend/rust-compile.cc:41
/home/gccrs/build/gcc/crab1 /tmp/trait_fuzzer_rustc_ddbzy8h3/temp_w0_iter_50_original_var_18.rs -frust-incomplete-and-experimental-compiler-do-not-use
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions