Open meheff opened 4 weeks ago
Maybe related error with use of MAX
attribute of imported type.
my_lib.x:
pub const W = s32:16;
pub type T = bits[W as u32];
my_test.x:
import my_lib;
fn Bar () -> my_lib::T {
my_lib::T::MAX
}
Repro (needs to be test
!):
bazel test my_test
Error message:
F0815 10:27:44.941148 9883 type_info.cc:323] Check failed: key->owner() == module_ (0x12bdffe20138 vs. 0x12bdffe209c0) google3.experimental.users.meheff.xls.dslx_errors.my_lib vs my_test key: bits[W as u32]
*** Check failure stack trace: ***
@ 0x564e40510d04 absl::log_internal::LogMessage::SendToLog()
@ 0x564e40510836 absl::log_internal::LogMessage::Flush()
@ 0x564e40511129 absl::log_internal::LogMessageFatal::~LogMessageFatal()
@ 0x564e3d5d107b xls::dslx::TypeInfo::GetItem()
@ 0x564e3d34c9d0 xls::dslx::FunctionConverter::ResolveType()
@ 0x564e3d34f080 xls::dslx::FunctionConverter::ResolveTypeToIr()
@ 0x564e3d379fce std::__u::__variant_detail::__visitation::__base::__dispatcher<>::__dispatch<>()
@ 0x564e3d36ef37 xls::dslx::FunctionConverter::HandleColonRef()
@ 0x564e3d349cb6 xls::dslx::FunctionConverterVisitor::Visit()
@ 0x564e3d37a5d5 std::__u::__variant_detail::__visitation::__base::__dispatcher<>::__dispatch<>()
@ 0x564e3d37207c xls::dslx::FunctionConverter::HandleStatement()
@ 0x564e3d349cb6 xls::dslx::FunctionConverterVisitor::Visit()
@ 0x564e3d371d44 xls::dslx::FunctionConverter::HandleStatementBlock()
@ 0x564e3d349cb6 xls::dslx::FunctionConverterVisitor::Visit()
@ 0x564e3d36c0b3 xls::dslx::FunctionConverter::HandleFunction()
@ 0x564e3d344ff1 xls::dslx::(anonymous namespace)::ConvertCallGraph()
@ 0x564e3d342c89 xls::dslx::ConvertModuleIntoPackage()
@ 0x564e3d34599a xls::dslx::ConvertModuleToPackage()
@ 0x564e3d3387b7 xls::dslx::ParseAndTest()
@ 0x564e3d32571f main
@ 0x7f62428633d4 __libc_start_main
@ 0x564e3d32402a _start
@cdleary it looks like PR #1548 fixes the first example in https://github.com/google/xls/issues/1540#issue-2467049604. Thanks! We're working on landing it internally.
The second example https://github.com/google/xls/issues/1540#issuecomment-2291819096 looks like it still fails.
Also another example of use of imported types which fail is:
my_enum.x
pub enum MyEnum : bits[1] {
kA = 0,
kB = 1,
}
my_param_proc.x
import my_enum;
proc foo_proc<N: my_enum::MyEnum> {
config() { () }
init { () }
next(state: ()) { () }
}
proc bar_proc {
config() {
spawn foo_proc<my_enum::MyEnum::kA>();
()
}
init { () }
next(state: ()) { () }
}
Repro: bazel test my_param_proc
Making a type alias for my_enum::MyEnum
fixes the issue.
Stack trace:
*** SIGABRT received by PID 1543330 (TID 1543330) on cpu 7 from PID 1543330; stack trace: ***
PC: @ 0x7f3123ff7981 (unknown) gsignal
@ 0x55d3b067fdd2 288 FailureSignalHandler()
@ 0x7f312416ae80 (unknown) (unknown)
@ 0x55d3b0abb77b 288 std::__u::__libcpp_verbose_abort()
@ 0x55d3a9226ca2 240 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleColonRef()
@ 0x55d3abba0f23 16 xls::dslx::ColonRef::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a921b665 208 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleTypeRef()
@ 0x55d3abba0af3 16 xls::dslx::TypeRef::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a92204a7 464 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleTypeRefTypeAnnotation()
@ 0x55d3abba1703 16 xls::dslx::TypeRefTypeAnnotation::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a93552a0 160 xls::dslx::ParametricBindingToType()
@ 0x55d3a91d2ab1 848 xls::dslx::InstantiateParametricFunction()
@ 0x55d3a91c5911 752 xls::dslx::TypecheckInvocation()
@ 0x55d3a91aa491 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a925f431 224 xls::dslx::DeduceInstantiation()
@ 0x55d3a926b0f5 736 xls::dslx::DeduceSpawn()
@ 0x55d3a922f862 144 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleSpawn()
@ 0x55d3abba2193 16 xls::dslx::Spawn::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a921ab74 176 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleStatement()
@ 0x55d3abba35f3 16 xls::dslx::Statement::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a9223089 336 xls::dslx::(anonymous namespace)::DeduceVisitor::HandleStatementBlock()
@ 0x55d3abba29a3 16 xls::dslx::StatementBlock::Accept()
@ 0x55d3a9213f86 256 xls::dslx::Deduce()
@ 0x55d3a91aa3ae 32 std::__u::__function::__policy_invoker<>::__call_impl<>()
@ 0x55d3a935b505 192 xls::dslx::DeduceCtx::Deduce()
@ 0x55d3a9214794 128 xls::dslx::DeduceAndResolve()
@ 0x55d3a91b48da 320 xls::dslx::TypecheckFunction()
@ 0x55d3a91a6ee4 1568 xls::dslx::TypecheckModule()
@ 0x55d3a909b1ca 256 xls::dslx::TypecheckModule()
@ 0x55d3a909a505 224 xls::dslx::ParseAndTypecheck()
@ 0x55d3a907c42e 1232 xls::dslx::ParseAndTest()
@ 0x55d3a901c925 464 main
@ 0x7f3123fe33d4 192 __libc_start_main
@ 0x55d3a8f440aa (unknown) _start
@richmckeever I assume I still have the assignment on this one? Can look at what's still failing if you confirm, thanks!
@cdleary go for it. Rich is OOO.
Repro:
my_enum.x:
my_lib.x:
my_top.x:
Building my_top:
Internally, repro is available at
experimental/users/meheff/xls/dslx_errors:my_top