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

[AVR] Failed to select instruction for 'i8 @llvm.fshr.i8(i8, i8, i8)' #63098

Closed
benshi001 opened this issue Jun 4, 2023 · 2 comments
Closed
Labels
backend:AVR crash Prefer [crash-on-valid] or [crash-on-invalid]

Comments

@benshi001
Copy link
Member

With the following code a.ll

define i8 @test(i8 %0) {
start:
  %1 = call i8 @llvm.fshr.i8(i8 %0, i8 %0, i8 1)
  ret i8 %1
}

declare i8 @llvm.fshr.i8(i8, i8, i8)

Build it with llc a.ll -march=avr -mcpu=atmega328, the following error rises

LLVM ERROR: Cannot select: 0x3e38b00: i8 = ROL 0x3e387f0
  0x3e387f0: i8,ch = CopyFromReg 0x3df6db0, Register:i8 %0
    0x3e38780: i8 = Register %0
In function: test
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: ./bin/llc a.ll -march=avr -mcpu=atmega328
1.	Running pass 'Function Pass Manager' on module 'a.ll'.
2.	Running pass 'AVR DAG->DAG Instruction Selection' on function '@test'
 #0 0x0000000001a0dc08 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/llc+0x1a0dc08)
 #1 0x0000000001a0b63c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f435a0f0cf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #3 0x00007f4358e13aff raise (/lib64/libc.so.6+0x4eaff)
 #4 0x00007f4358de6ea5 abort (/lib64/libc.so.6+0x21ea5)
 #5 0x000000000066ae2f llvm::getDefaultPrecision(llvm::FloatStyle) (.cold.18) NativeFormatting.cpp:0:0
 #6 0x000000000182d114 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (./bin/llc+0x182d114)
 #7 0x00000000018311ba llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (./bin/llc+0x18311ba)
 #8 0x0000000000a2dc53 (anonymous namespace)::AVRDAGToDAGISel::Select(llvm::SDNode*) AVRISelDAGToDAG.cpp:0:0
 #9 0x000000000182b6cc llvm::SelectionDAGISel::DoInstructionSelection() (./bin/llc+0x182b6cc)
#10 0x000000000183588e llvm::SelectionDAGISel::CodeGenAndEmitDAG() (./bin/llc+0x183588e)
#11 0x000000000183852e llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (./bin/llc+0x183852e)
#12 0x000000000183a3ec llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.1076) SelectionDAGISel.cpp:0:0
#13 0x0000000000eab07e llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.78) MachineFunctionPass.cpp:0:0
#14 0x000000000134ebd9 llvm::FPPassManager::runOnFunction(llvm::Function&) (./bin/llc+0x134ebd9)
#15 0x000000000134ed21 llvm::FPPassManager::runOnModule(llvm::Module&) (./bin/llc+0x134ed21)
#16 0x000000000134f8bf llvm::legacy::PassManagerImpl::run(llvm::Module&) (./bin/llc+0x134f8bf)
#17 0x00000000006cd0c5 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#18 0x000000000067295a main (./bin/llc+0x67295a)
#19 0x00007f4358dffd85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#20 0x00000000006c4b6e _start (./bin/llc+0x6c4b6e)
Aborted (core dumped)
@benshi001
Copy link
Member Author

relates to rust-lang/rust#107261

@EugeneZelenko EugeneZelenko added the crash Prefer [crash-on-valid] or [crash-on-invalid] label Jun 4, 2023
@benshi001
Copy link
Member Author

fixed by ff75a2b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AVR crash Prefer [crash-on-valid] or [crash-on-invalid]
Projects
None yet
Development

No branches or pull requests

2 participants