Rust-GCC / Rust-GCC/gccrs

ICE in get_outer_attrs, at rust/ast/rust-expr.h:3012

Open
#3,543 5 comments 0 reactions 1 assignee View on GitHub

@Prajwal-kp-18 is already working on this.

Since Jan 3, 2026.

bug good-first-pr
Dominant language
C++
Stars
2.9k
Forks
231
Avg merge
19h 55m
Merged PRs (30d)
67

Description

auto-reduced (treereduce-rust):

impl<'r> Itble<'r, usize> for (usize, usize) {
    fn iter(&'r self) -> Range<usize> {
        min..max
    }
}

original:

use std::ops::Range;

trait Itble<'r, T, I: Iterator<Item=T>> { fn iter(&'r self) -> I; }

impl<'r> Itble<'r, usize, Range<usize>> for (usize, usize) {
    fn iter(&'r self) -> Range<usize> {
        let &(min, max) = self;
        min..max
    }
}

fn check<'r, I: Iterator<Item=usize>, T: Itble<'r, usize, I>>(cont: &T) -> bool
{Some(mask|bit)}

fn main() {
    check(&(3, 5));
}

Version information:

a988708b4ba2b5a27715ea34c09ccfd3ed5143ca

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: in get_outer_attrs, at rust/ast/rust-expr.h:3012
0x861758 Rust::AST::RangeExpr::get_outer_attrs()
	../../gcc/rust/ast/rust-expr.h:3012
0xd3efda Rust::expand_tail_expr(Rust::AST::BlockExpr&, Rust::MacroExpander&)
	../../gcc/rust/expand/rust-expand-visitor.cc:134
0xd3fbbc Rust::ExpandVisitor::visit(Rust::AST::BlockExpr&)
	../../gcc/rust/expand/rust-expand-visitor.cc:631
0xd40b4b void Rust::ExpandVisitor::expand_macro_children<std::vector<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> >, std::allocator<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > > >, std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > >(std::vector<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> >, std::allocator<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > > >&, std::function<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > (Rust::AST::SingleASTNode)>)
	../../gcc/rust/expand/rust-expand-visitor.h:133
0xd3b1d7 void Rust::ExpandVisitor::expand_macro_children<std::vector<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> >, std::allocator<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > > >, std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > >(Rust::MacroExpander::ContextType, std::vector<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> >, std::allocator<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > > >&, std::function<std::unique_ptr<Rust::AST::AssociatedItem, std::default_delete<Rust::AST::AssociatedItem> > (Rust::AST::SingleASTNode)>)
	../../gcc/rust/expand/rust-expand-visitor.h:114
0xd3b1d7 Rust::ExpandVisitor::visit(Rust::AST::TraitImpl&)
	../../gcc/rust/expand/rust-expand-visitor.cc:928
0xd3db00 void Rust::ExpandVisitor::expand_macro_children<std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >, std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > >(std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >&, std::function<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > (Rust::AST::SingleASTNode)>)
	../../gcc/rust/expand/rust-expand-visitor.h:133
0xd3db00 Rust::ExpandVisitor::expand_inner_items(std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >&)
	../../gcc/rust/expand/rust-expand-visitor.cc:239
0xc460f5 Rust::Session::expansion(Rust::AST::Crate&, Rust::Resolver2_0::NameResolutionContext&)
	../../gcc/rust/rust-session-manager.cc:959
0xc5bc91 Rust::Session::compile_crate(char const*)
	../../gcc/rust/rust-session-manager.cc:619
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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.