I have the following snippet:
pub enum Enum<'a> {
A(&'a str),
B { ptr: usize, len: usize },
C(&'a [u8]),
D(u8),
}
impl Enum<'_> {
pub(crate) fn foo(&self, tmp: &mut Vec<u8>) {
match self {
Self::A(_) => tmp.push(0),
Enum::B { .. } => tmp.push(1),
Enum::C(_) => tmp.push(2),
Enum::D(_) => tmp.push(3),
}
}
}
pub struct B<'a> {
slice: &'a [Enum<'a>],
}
impl B<'_> {
pub fn foo(&self, tmp: &mut Vec<u8>) {
for e in self.slice {
e.foo(tmp);
}
}
}
Trying to compile it, the build fails with: LLVM ERROR: Not supported instr: <MCInst 271 <MCOperand Reg:42>>. Slight modifications of this example can halt the compiler in a (seemingly, I got bored after 15 minutes of waiting) infinite loop.
This is a minimized repro. What's especially interesting is that deleting the D variant causes the code to compile. However, on the original code, having the A-B-C variants still fails.
I am trying to build for an ESP32 using the 1.56.0.1 rustc version. Build fails both locally (version below) and on a freshly set-up ubuntu GHA runner.
❯ rustc +esp -vV
rustc 1.56.0-dev
binary: rustc
commit-hash: unknown
commit-date: unknown
host: x86_64-pc-windows-msvc
release: 1.56.0-dev
LLVM version: 12.0.1
I have the following snippet:
Trying to compile it, the build fails with:
LLVM ERROR: Not supported instr: <MCInst 271 <MCOperand Reg:42>>. Slight modifications of this example can halt the compiler in a (seemingly, I got bored after 15 minutes of waiting) infinite loop.This is a minimized repro. What's especially interesting is that deleting the D variant causes the code to compile. However, on the original code, having the A-B-C variants still fails.
I am trying to build for an ESP32 using the 1.56.0.1 rustc version. Build fails both locally (version below) and on a freshly set-up ubuntu GHA runner.