llvm-project/llvm/lib/Target/AVR
Dylan McKay 4c5a5c8db6 [AVR] Fix a backend bug that left extraneous operands after expansion
This patch fixes a bug in the AVR FRMIDX expansion logic.

The expansion would leave a leftover operand from the original FRMIDX,
but now attached to a MOVWRdRr instruction. The MOVWRdRr instruction
did not expect this operand and so LLVM rejected the machine
instruction.

This would trigger an assertion:

    Assertion failed: ((isImpReg || Op.isRegMask() || MCID->isVariadic() ||
                        OpNo < MCID->getNumOperands() || isMetaDataOp) &&
                        "Trying to add an operand to a machine instr that is already done!"),
    function addOperand, file llvm/lib/CodeGen/MachineInstr.cpp

Tim fixed this so that now the FRMIDX is expanded correctly into
a well-formed MOVWRdRr.

Patch by Tim Neumann

llvm-svn: 346117
2018-11-05 05:49:04 +00:00
..
AsmParser Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
Disassembler
InstPrinter
MCTargetDesc [AVR] Fix build after r334078 2018-06-07 15:29:09 +00:00
TargetInfo Add backend name to AVR Target to enable runtime info to be fed back into TableGen 2017-11-23 04:11:11 +00:00
AVR.h [AVR] Document some public functions 2018-07-15 07:24:27 +00:00
AVR.td
AVRAsmPrinter.cpp Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
AVRCallingConv.td
AVRDevices.td
AVRExpandPseudoInsts.cpp [AVR] Redefine the 'LSL' instruction as an alias of 'ADD' 2018-09-01 12:23:00 +00:00
AVRFrameLowering.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
AVRFrameLowering.h
AVRISelDAGToDAG.cpp [SDAG] Update the AVR backend for the SelectionDAG API changes in 2018-08-15 01:22:50 +00:00
AVRISelLowering.cpp [AVR] Redefine the 'LSL' instruction as an alias of 'ADD' 2018-09-01 12:23:00 +00:00
AVRISelLowering.h Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
AVRInstrFormats.td
AVRInstrInfo.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
AVRInstrInfo.h
AVRInstrInfo.td [AVR] Disallow the LDDWRdPtrQ instruction with Z as the destination 2018-11-05 05:00:44 +00:00
AVRMCInstLower.cpp
AVRMCInstLower.h
AVRMachineFunctionInfo.h
AVRRegisterInfo.cpp [AVR] Fix a backend bug that left extraneous operands after expansion 2018-11-05 05:49:04 +00:00
AVRRegisterInfo.h [AVR] Set trackLivenessAfterRegAlloc 2018-06-11 14:46:48 +00:00
AVRRegisterInfo.td [AVR] Disallow the LDDWRdPtrQ instruction with Z as the destination 2018-11-05 05:00:44 +00:00
AVRRelaxMemOperations.cpp Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
AVRSelectionDAGInfo.h
AVRSubtarget.cpp
AVRSubtarget.h Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
AVRTargetMachine.cpp [AVR] Set the program address space in the data layout 2018-02-19 10:40:59 +00:00
AVRTargetMachine.h
AVRTargetObjectFile.cpp
AVRTargetObjectFile.h
CMakeLists.txt Remove duplicate tablegen lines from AVR target. 2018-04-04 12:27:43 +00:00
LLVMBuild.txt
README.md
TODO.md

README.md

AVR backend

This experimental backend is for the 8-bit Atmel AVR microcontroller.