ICE: in get_filename, at rust/expand/rust-macro-invoc-lexer.h:41
Open
@CohenArthur is already working on this.
Since Mar 31, 2025.
AST
bug
expansion
- Dominant language
- C++
- Stars
- 2.9k
- Forks
- 231
- Avg merge
- 19h 55m
- Merged PRs (30d)
- 67
Description
auto-reduced (treereduce-rust):
//@compile-flags: -frust-incomplete-and-experimental-compiler-do-not-use
mod foo {
macro_rules! m {
() => {
mod std {
pub struct io;
}
};
}
m!();
}
original:
#[allow(non_camel_case_types)]
mod foo {
pub use std::io;
//~^ ERROR `std` is ambiguous
macro_rules! m {
() => {
mod std {
pub struct io;
}
}
}
m!();
}
fn main() {
use bar::foo::{alpha, charlie};
match alpha {
alpha | beta => {} //~ ERROR variable `beta` is not bound in all patterns
'a'..='b' => {}
}
}
Version information:
765121736dfe3f5b319bbe9837880deda326394e
Possibly related line of code:
https://github.com/Rust-GCC/gccrs/blob/765121736dfe3f5b319bbe9837880deda326394e/gcc/rust/expand/rust-macro-invoc-lexer.h#L35-L47
Command:
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 -frust-incomplete-and-experimental-compiler-do-not-use
Program output
crab1: internal compiler error: in get_filename, at rust/expand/rust-macro-invoc-lexer.h:41
0xcecfb2 Rust::MacroInvocLexerBase<std::unique_ptr<Rust::AST::Token, std::default_delete<Rust::AST::Token> > >::get_filename[abi:cxx11]() const
../../gcc/rust/expand/rust-macro-invoc-lexer.h:41
0xcecfb2 Rust::Parser<Rust::MacroInvocLexer>::parse_module(Rust::AST::Visibility, std::vector<Rust::AST::Attribute, std::allocator<Rust::AST::Attribute> >)
../../gcc/rust/parse/rust-parse-impl.h:2479
0xceb669 Rust::Parser<Rust::MacroInvocLexer>::parse_vis_item(std::vector<Rust::AST::Attribute, std::allocator<Rust::AST::Attribute> >)
../../gcc/rust/parse/rust-parse-impl.h:1313
0xcec190 Rust::Parser<Rust::MacroInvocLexer>::parse_item(bool)
../../gcc/rust/parse/rust-parse-impl.h:1145
0xc7f3b5 operator()
../../gcc/rust/expand/rust-macro-expand.cc:820
0xc7f3b5 __invoke_impl<Rust::AST::SingleASTNode, Rust::transcribe_many_items(Parser<MacroInvocLexer>&, TokenId&)::<lambda()>&>
/usr/include/c++/14.2.1/bits/invoke.h:61
0xc7f3b5 __invoke_r<Rust::AST::SingleASTNode, Rust::transcribe_many_items(Parser<MacroInvocLexer>&, TokenId&)::<lambda()>&>
/usr/include/c++/14.2.1/bits/invoke.h:116
0xc7f3b5 _M_invoke
/usr/include/c++/14.2.1/bits/std_function.h:291
0xc7c216 std::function<Rust::AST::SingleASTNode ()>::operator()() const
/usr/include/c++/14.2.1/bits/std_function.h:591
0xc7c216 parse_many
../../gcc/rust/expand/rust-macro-expand.cc:794
0xc7e779 transcribe_many_stmts
../../gcc/rust/expand/rust-macro-expand.cc:909
0xc7e779 transcribe_context
../../gcc/rust/expand/rust-macro-expand.cc:1003
0xc7e779 Rust::MacroExpander::transcribe_rule(Rust::AST::MacroRulesDefinition&, Rust::AST::MacroRule&, Rust::AST::DelimTokenTree&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Rust::MatchedFragmentContainer*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Rust::MatchedFragmentContainer*> > >&, Rust::AST::InvocKind, Rust::MacroExpander::ContextType)
../../gcc/rust/expand/rust-macro-expand.cc:1086
0xc82df5 Rust::MacroExpander::expand_decl_macro(unsigned int, Rust::AST::MacroInvocData&, Rust::AST::MacroRulesDefinition&, Rust::AST::InvocKind)
../../gcc/rust/expand/rust-macro-expand.cc:123
0xc8338b Rust::MacroExpander::expand_invoc(Rust::AST::MacroInvocation&, Rust::AST::InvocKind)
../../gcc/rust/expand/rust-macro-expand.cc:305
0xd3dc40 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
0xd3dc40 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
0xd3dc40 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
0xd3dc40 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
0xc46135 Rust::Session::expansion(Rust::AST::Crate&, Rust::Resolver2_0::NameResolutionContext&)
../../gcc/rust/rust-session-manager.cc:959
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.