Skip to content

ICE: segfault with recursive enum #3611

@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

enum ast<'a> {
    num(usize),
    add(&'a ast<'result>),
}

original:

// run-pass
#![allow(dead_code)]
#![allow(non_camel_case_types)]

// pretty-expanded FIXME #23616

enum ast<'a> {
    num(usize),
    add(&'a ast<'result>, &'a ast<'a>)
}

fn mk_add_ok<'r>(x: &'r ast<'r>, y: &'r ast<'r>) -> ast<'r> {
    ast::add(x, y)
}

pub fn main() {
}

Version information:

4019d70

Command:
crab1 -Warray-bounds -mtune=generic -march=x86-64 -O0 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -frust-incomplete-and-experimental-compiler-do-not-use

Program output

crab1: internal compiler error: Segmentation fault
0x1702eaf crash_signal
	../../gcc/toplev.cc:319
0xec6842 Rust::TyTy::VarianceAnalysis::Variance::join(Rust::TyTy::VarianceAnalysis::Variance, Rust::TyTy::VarianceAnalysis::Variance)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:85
0xec6842 Rust::TyTy::VarianceAnalysis::Variance::join(Rust::TyTy::VarianceAnalysis::Variance)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:91
0xec6842 Rust::TyTy::VarianceAnalysis::GenericTyVisitorCtx::add_constraint(unsigned int, Rust::TyTy::VarianceAnalysis::Term)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:412
0xec9d3d Rust::TyTy::VarianceAnalysis::GenericTyVisitorCtx::add_constraints_from_region(Rust::TyTy::Region const&, Rust::TyTy::VarianceAnalysis::Term)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:426
0xec9d3d Rust::TyTy::VarianceAnalysis::VisitorBase<Rust::TyTy::VarianceAnalysis::Term>::visit(Rust::TyTy::ReferenceType&)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis-private.h:113
0xec4302 Rust::TyTy::VarianceAnalysis::GenericTyVisitorCtx::add_constraints_from_ty(Rust::TyTy::BaseType*, Rust::TyTy::VarianceAnalysis::Term)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:400
0xec7ac9 Rust::TyTy::VarianceAnalysis::GenericTyVisitorCtx::process_type(Rust::TyTy::ADTType&)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:250
0xec7ac9 Rust::TyTy::VarianceAnalysis::GenericTyPerCrateCtx::process_type(Rust::TyTy::ADTType&)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:131
0xec7ac9 Rust::TyTy::VarianceAnalysis::CrateCtx::add_type_constraints(Rust::TyTy::ADTType&)
	../../gcc/rust/typecheck/rust-tyty-variance-analysis.cc:26
0xef3669 Rust::Resolver::TypeCheckItem::visit(Rust::HIR::Enum&)
	../../gcc/rust/typecheck/rust-hir-type-check-item.cc:391
0xeed937 Rust::Resolver::TypeCheckItem::Resolve(Rust::HIR::Item&)
	../../gcc/rust/typecheck/rust-hir-type-check-item.cc:59
0xf996ed Rust::Resolver::query_type(unsigned int, Rust::TyTy::BaseType**)
	../../gcc/rust/typecheck/rust-type-util.cc:58
0xf04ce1 Rust::Resolver::TypeCheckType::resolve_root_path(Rust::HIR::TypePath&, unsigned long*, bool*)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:411
0xf06df2 Rust::Resolver::TypeCheckType::visit(Rust::HIR::TypePath&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:139
0xf02c06 Rust::Resolver::TypeCheckType::Resolve(Rust::HIR::Type&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:70
0xf033a5 Rust::Resolver::TypeCheckType::Resolve(Rust::HIR::Type&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:66
0xf033a5 Rust::Resolver::TypeCheckType::visit(Rust::HIR::ReferenceType&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:717
0xf02c06 Rust::Resolver::TypeCheckType::Resolve(Rust::HIR::Type&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:70
0xf04ae7 Rust::Resolver::TypeCheckType::Resolve(Rust::HIR::Type&)
	../../gcc/rust/typecheck/rust-hir-type-check-type.cc:66
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