[llvm] [AVR] Set mayLoad/mayStore flags of some load/store instructions (PR #172986)
Ben Shi via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 22 19:39:46 PST 2025
================
@@ -1149,17 +1160,16 @@ def STDPtrQRr : FSTDLDD<1, (outs), (ins memri:$memri, GPR8:$reg),
// st P+, Rr
// st P+, Rr+1
// subiw P, q+2
+let mayStore = 1 in
def STDWPtrQRr : Pseudo<(outs), (ins memri:$memri, DREGS:$src),
"stdw\t$memri, $src", [(store i16:$src, addr:$memri)]>,
Requires<[HasSRAM]>;
// Load program memory operations.
-let canFoldAsLoad = 1, isReMaterializable = 1, mayLoad = 1,
- hasSideEffects = 0 in {
- let Defs = [R0],
- Uses = [R31R30] in def LPM
- : F16<0b1001010111001000, (outs), (ins), "lpm", []>,
- Requires<[HasLPM]>;
+let isReMaterializable = 1, mayLoad = 1, hasSideEffects = 0 in {
+ let Defs = [R0], Uses = [R31R30] in
----------------
benshi001 wrote:
> Now that i think about it, why do we have `Defs = [R0]` here? 🤔
It seems all instructions with implicit R0 destination or may overwrite R0 are marked with Defs = [R0], let us just follow this rule. We can fix that in the future.
https://github.com/llvm/llvm-project/pull/172986
More information about the llvm-commits
mailing list