Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust compiler crashes during compilation #66595

Closed
ethindp opened this issue Nov 21, 2019 · 12 comments
Closed

Rust compiler crashes during compilation #66595

ethindp opened this issue Nov 21, 2019 · 12 comments
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. I-compiletime Issue: Problems and improvements with respect to compile times. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@ethindp
Copy link

ethindp commented Nov 21, 2019

So, I have no idea exactly what I did. I'm writing an operating system and am working on implementing SATA disk IO in my kernel. My code is at https://github.com/ethindp/kernel.
In order to actively read from the disk and get all updates, I use read_volatile() all over the place in my disk IO functions. I have no idea what I did, but now my kernel doesn't build. When I run cargo xbuild, the following happens:

  1. Cargo builds all dependencies and begins building the kernel.
  2. Rustc sits there for over an hour, not producing any output, then crashes with (on windows) error code 0xc000000005 (access violation).

I am running the latest nightly version of rust, rustc 1.41.0-nightly (3e525e3 2019-11-18). The troublesome code is at https://github.com/ethindp/kernel/blob/master/src/drivers/storage/ahci.rs. (Note: the code is very messy right now.)

@csmoe csmoe added the E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example label Nov 21, 2019
@hellow554
Copy link
Contributor

hellow554 commented Nov 21, 2019

@ethindp any specific commit one should use for the error to reproduce? What OS are you on?

Could you please elaborate the steps to reproduce this error a little bit further? e.g.

  1. clone this repository (link please)
  2. checkout commit 87cba879f78e
  3. run cargo xbuild

something like that.

@hellow554
Copy link
Contributor

hellow554 commented Nov 21, 2019

So I did some RUSTC_LOG=debug and it seems, that the rust compiler runs into some kind of error. These are the last lines the debug output will give me:

Debug output
[INFO  rustc_codegen_ssa::base] codegen_instance(core::str::<impl str>::bytes)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::str::<impl str>::as_bytes)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::str::from_utf8_unchecked_mut)
[INFO  rustc_codegen_ssa::base] codegen_instance(<core::str::Bytes as core::iter::Iterator>::next)
[INFO  rustc_codegen_ssa::base] codegen_instance(init::{{closure}}#0)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::ptr::<impl *mut drivers::fs::vfs::Mountpoint>::is_null)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::ptr::<impl *const drivers::fs::vfs::Mountpoint>::is_null)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::ptr::null::<u8>)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::ptr::null_mut::<u8>)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::slice::<impl core::ops::IndexMut<core::ops::RangeFull> for [drivers::fs::vfs::Mountpoint]>::index_mut)
[INFO  rustc_codegen_ssa::base] codegen_instance(<i32 as core::ops::Add>::add)
[INFO  rustc_codegen_ssa::base] codegen_instance(<u64 as core::ops::Add>::add)
[INFO  rustc_codegen_ssa::base] codegen_instance(<usize as core::ops::Add>::add)
[INFO  rustc_codegen_ssa::base] codegen_instance(<usize as core::ops::AddAssign>::add_assign)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::iter::Iterator::find::check::<&ReErased bootloader::bootinfo::memory_map::MemoryRegion, &ReErased mut [closure@src/memory.rs:122:28: 122:83 closure_kind_ty=i16 closure_sig_ty=for<'r> extern "rust-call" fn((&ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0), 'r)) &ReErased bootloader::bootinfo::memory_map::MemoryRegion,)) -> bool]>)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::iter::Iterator::find::check::<&ReErased bootloader::bootinfo::memory_map::MemoryRegion, &ReErased mut [closure@src/memory.rs:122:28: 122:83 closure_kind_ty=i16 closure_sig_ty=for<'r> extern "rust-call" fn((&ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0), 'r)) &ReErased bootloader::bootinfo::memory_map::MemoryRegion,)) -> bool]>::{{closure}}#0)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::fmt::Arguments::new_v1_formatted)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::fmt::Arguments::new_v1)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::mem::size_of::<usize>)
[INFO  rustc_codegen_ssa::base] codegen_instance(pci::alloc::raw_vec::alloc_guard)
[INFO  rustc_codegen_ssa::base] codegen_instance(vga::volatile::Volatile::<vga::DrawableChar>::read)
[INFO  rustc_codegen_ssa::base] codegen_instance(vga::volatile::Volatile::<vga::DrawableChar>::write)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::arch::x86_64::_rdrand64_step)
[INFO  rustc_codegen_ssa::base] codegen_instance(<x86_64::structures::paging::page_table::PageTableFlags as core::ops::BitOr>::bitor)
[INFO  rustc_codegen_ssa::base] codegen_instance(<&ReErased mut x86_64::structures::idt::InterruptStackFrame as core::fmt::Debug>::fmt)
[INFO  rustc_codegen_ssa::base] codegen_instance(<x86_64::structures::paging::mapper::MapToError as core::convert::From<x86_64::structures::paging::mapper::MapToError>>::from)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::structures::paging::mapper::MapperFlush::<x86_64::structures::paging::page::Size4KiB>::flush)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::addr::VirtAddr::from_ptr::<[u8; Const { ty: usize, val: Value(Scalar(0x0000000000001000)) }]>)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::instructions::tlb::flush)
[INFO  rustc_codegen_ssa::base] codegen_instance(<core::marker::PhantomData<x86_64::structures::paging::page::Size4KiB> as core::clone::Clone>::clone)
[INFO  rustc_codegen_ssa::base] codegen_instance(<core::marker::PhantomData<x86_64::structures::paging::page::Size4KiB> as core::cmp::PartialOrd>::partial_cmp)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::clone::impls::<impl core::clone::Clone for i32>::clone)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::clone::impls::<impl core::clone::Clone for u32>::clone)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::clone::impls::<impl core::clone::Clone for u64>::clone)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::clone::impls::<impl core::clone::Clone for usize>::clone)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::instructions::tables::load_tss)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::char::from_u32_unchecked)
[INFO  rustc_codegen_ssa::base] codegen_instance(<u32 as core::default::Default>::default)
[INFO  rustc_codegen_ssa::base] codegen_instance(<bool as core::default::Default>::default)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::instructions::interrupts::enable)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::instructions::interrupts::disable)
[INFO  rustc_codegen_ssa::base] codegen_instance(<pci::alloc::collections::TryReserveError as core::convert::From<pci::alloc::collections::TryReserveError>>::from)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::structures::idt::PageFaultErrorCode::bits)
[INFO  rustc_codegen_ssa::base] codegen_instance(<&ReErased bootloader::bootinfo::memory_map::MemoryRegion as core::convert::From<&ReErased bootloader::bootinfo::memory_map::MemoryRegion>>::from)
[INFO  rustc_codegen_ssa::base] codegen_instance(x86_64::instructions::hlt)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::hint::unreachable_unchecked)
[INFO  rustc_codegen_ssa::base] codegen_instance(core::hint::spin_loop)

and then it just halts... Actually busy waiting (100% CPU load on one core).

gdb output:

(gdb) info threads 
  Id   Target Id                                 Frame 
* 1    Thread 0x7fd470219400 (LWP 20211) "rustc" __GI___pthread_timedjoin_ex (
    threadid=140550382548736, thread_return=0x0, abstime=<optimized out>, block=<optimized out>)
    at pthread_join_common.c:142
  2    Thread 0x7fd46f9ff700 (LWP 20212) "rustc" futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x7fd46fe1123c) at ../sysdeps/unix/sysv/linux/futex-internal.h:80
  3    Thread 0x7fd468a0b700 (LWP 20249) "rustc" futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x7fd4627f123c) at ../sysdeps/unix/sysv/linux/futex-internal.h:80
  4    Thread 0x7fd45cce3700 (LWP 20250) "rustc" futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x7fd4627f1598) at ../sysdeps/unix/sysv/linux/futex-internal.h:80
  5    Thread 0x7fd45b17f700 (LWP 20268) "rustc" 0x00007fd46aa5ffd2 in (anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
(gdb) thread 5
[Switching to thread 5 (Thread 0x7fd45b17f700 (LWP 20268))]
#0  0x00007fd46aa5ffd2 in (anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
(gdb) bt
#0  0x00007fd46aa5ffd2 in (anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#1  0x00007fd46aa0611c in (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#2  0x00007fd46aa02a4c in (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#3  0x00007fd46aa011e3 in llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#4  0x00007fd46ac382f0 in llvm::SelectionDAGISel::CodeGenAndEmitDAG() ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#5  0x00007fd46ac37b48 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#6  0x00007fd46ac34176 in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#7  0x00007fd46c70591d in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#8  0x00007fd46a7fcd9e in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#9  0x00007fd46a60542f in llvm::FPPassManager::runOnFunction(llvm::Function&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#10 0x00007fd46a605893 in llvm::FPPassManager::runOnModule(llvm::Module&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#11 0x00007fd46a606030 in llvm::legacy::PassManagerImpl::run(llvm::Module&) ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/../lib/libLLVM-9-rust-1.41.0-nightly.so
#12 0x00007fd46d07a4ef in LLVMRustWriteOutputFile () from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#13 0x00007fd46d027a9c in rustc_codegen_llvm::back::write::write_output_file ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#14 0x00007fd46cf17b96 in rustc_codegen_llvm::back::write::codegen::{{closure}} ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#15 0x00007fd46cf15ff1 in rustc::util::common::time_ext () from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#16 0x00007fd46d0366c1 in <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::write::WriteBackendMethods>::codegen ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#17 0x00007fd46cf477c4 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#18 0x00007fd46cf4c5d6 in std::panicking::try::do_call () from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#19 0x00007fd4708cef5a in __rust_maybe_catch_panic () at src/libpanic_unwind/lib.rs:86
#20 0x00007fd46cf4ce16 in core::ops::function::FnOnce::call_once{{vtable-shim}} ()
   from /home/op/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/codegen-backends/librustc_codegen_llvm-llvm.so
#21 0x00007fd47089fcbf in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once () at /rustc/5c5b8afd80e6fa1d24632153cb2257c686041d41/src/liballoc/boxed.rs:942
#22 0x00007fd4708cd980 in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once () at /rustc/5c5b8afd80e6fa1d24632153cb2257c686041d41/src/liballoc/boxed.rs:942
#23 std::sys_common::thread::start_thread () at src/libstd/sys_common/thread.rs:13
#24 std::sys::unix::thread::Thread::new::thread_start () at src/libstd/sys/unix/thread.rs:79
#25 0x00007fd47080d669 in start_thread (arg=<optimized out>) at pthread_create.c:479
#26 0x00007fd470722323 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Looking at the assembly, there's are these 4 lines

>0x7fd46aa5ffd2 <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26418>    mov    0x20(%rcx),%rcx
 0x7fd46aa5ffd6 <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26422>    test   %rcx,%rcx
 0x7fd46aa5ffd9 <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26425>    je     0x7fd46aa5fff0 <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26448>
 0x7fd46aa5ffdb <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26427>    cmp    %eax,0x8(%rcx)
 0x7fd46aa5ffde <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26430>    jne    0x7fd46aa5ffd2 <(anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*)+26418>

and this loops "forever". Not quiet sure what it's trying to find there.

So this is a LLVM bug?

@jonas-schievink jonas-schievink added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 21, 2019
@hellow554
Copy link
Contributor

hellow554 commented Nov 21, 2019

struct HbaCmdTbl {
    _prdt_entry: [HbaPrdtEntry; 65535],
}

struct HbaPrdtEntry {
    _non_empty: u32 
}

fn main() {
    let cmdtbl_ptr = std::ptr::null_mut::<HbaCmdTbl>();
    let _cmdtbl = unsafe { cmdtbl_ptr.read_volatile() };
}

the 65535 is taken from the sourcecode, I'm not sure if it can be lowered any further. but this code triggers the long build time for me.

@rustbot modify labels: -E-needs-mcve

edit: In fact I optimized too much I'm afraid. The build succeeds after roughly 6m. I'm not sure if I optimized something away. Should I dig further?

@rustbot rustbot added E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc and removed E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc labels Nov 21, 2019
@jonas-schievink jonas-schievink added I-compiletime Issue: Problems and improvements with respect to compile times. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. labels Nov 21, 2019
@ethindp
Copy link
Author

ethindp commented Nov 21, 2019 via email

@Aaron1011
Copy link
Member

It looks like LLVM is getting stuck in this loop forever

@ethindp
Copy link
Author

ethindp commented Nov 23, 2019

Any progress on this?

@jonas-schievink
Copy link
Contributor

@ethindp filed https://bugs.llvm.org/show_bug.cgi?id=44128

If you want to help out, you can try minimizing the LLVM IR further.

@ethindp
Copy link
Author

ethindp commented Nov 23, 2019

I'm not even remotely familiar with LLVM's inner workings so I don't know how I could help. :(

@ethindp
Copy link
Author

ethindp commented Nov 23, 2019

Just looked at the issue. I could reduce the HbaCmdHeader size considerably if I just made an array without a size, but I don't know if Rustc would then allow me to access arbitrary elements when I read it from memory.

@ethindp
Copy link
Author

ethindp commented Dec 1, 2019

OK, managed to fix the bug by reducing the array item list to 1024. But that'ssignificantly low and doesn't allow me to use every PRDT f I must do that for some reason -- instead I need to batch them, which I suppose isn't necessarily a bad thing.

@comex
Copy link
Contributor

comex commented Apr 1, 2020

You probably don't actually want volatile for this; a command table is stored in RAM and is not itself composed of hardware registers, so you don't need to regulate the memory access size. (The same is true for command lists, incidentally.)

Instead, you probably want to follow the general pattern:

  1. Use regular memory writes to write the data to some address;
  2. Execute a compiler fence to prevent the compiler from reordering 1 after 3;
  3. Do whatever will make the hardware read from that address.

That works as long as the hardware is not concurrently accessing the memory while you're writing it.

(On some architectures you would need a hardware fence instruction or something even more heavyweight at step 2, even if you did use volatile. I guess you don't need it on x86? I don't have experience interacting with hardware on x86 specifically.)

If you do need volatile for whatever reason, avoid volatile loads/stores of entire structs at once. Even if the slow compilation issue were fixed, their behavior is not really well-defined and they would likely result in horrible assembly: emitting a separate load/store instruction for every array member instead of using a loop. Instead, you should write the loop yourself and only do volatile loads/stores of one integer at a time. Alternately, you could try volatile_copy_memory, but it's only available in nightly.

That said, it would be nice if rustc and/or LLVM did something saner here. At minimum, rustc could emit a warning for struct-typed volatile accesses.

@ethindp
Copy link
Author

ethindp commented Apr 1, 2020

Sage advice. This hasn't happened to me for a while now, so I'll close this issue. I'll reopen it if I hit this problem again.

@ethindp ethindp closed this as completed Apr 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. I-compiletime Issue: Problems and improvements with respect to compile times. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

7 participants