llvm-project/llvm/lib/Target/AVR
Dylan McKay 77364be497 [AVR] Fix codegen bug in 16-bit loads
Prior to this patch, the AVR::LDWRdPtr instruction was always lowered to
instructions of this pattern:

    ld  $GPR8, [PTR:XYZ]+
    ld  $GPR8, [PTR]+1

This has a problem; the [PTR] is incremented in-place once, but never
decremented.

Future uses of the same pointer will use the now clobbered value,
leading to the pointer being incorrect by an offset of one.

This patch modifies the expansion code of the LDWRdPtr pseudo
instruction so that the pointer variable is not silently clobbered in
future uses in the same live range.

Patch by Keshav Kini.

llvm-svn: 351544
2019-01-18 11:27:38 +00:00
..
AsmParser [AVR] Rewrite the CBRRdK instruction as an alias of ANDIRdK 2019-01-18 07:31:34 +00:00
Disassembler
InstPrinter
MCTargetDesc [AVR] Fix build after r334078 2018-06-07 15:29:09 +00:00
TargetInfo
AVR.h [AVR] Document some public functions 2018-07-15 07:24:27 +00:00
AVR.td
AVRAsmPrinter.cpp
AVRCallingConv.td
AVRDevices.td
AVRExpandPseudoInsts.cpp [AVR] Fix codegen bug in 16-bit loads 2019-01-18 11:27:38 +00:00
AVRFrameLowering.cpp
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] Expand 8/16-bit multiplication to libcalls on MCUs that don't have hardware MUL 2019-01-18 06:10:41 +00:00
AVRISelLowering.h [AVR] Expand 8/16-bit multiplication to libcalls on MCUs that don't have hardware MUL 2019-01-18 06:10:41 +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] Rewrite the CBRRdK instruction as an alias of ANDIRdK 2019-01-18 07:31:34 +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
AVRSelectionDAGInfo.h
AVRSubtarget.cpp [AVR] Expand 8/16-bit multiplication to libcalls on MCUs that don't have hardware MUL 2019-01-18 06:10:41 +00:00
AVRSubtarget.h [AVR] Expand 8/16-bit multiplication to libcalls on MCUs that don't have hardware MUL 2019-01-18 06:10:41 +00:00
AVRTargetMachine.cpp [Targets] Add errors for tiny and kernel codemodel on targets that don't support them 2018-12-07 12:10:23 +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.