aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
authorAyke van Laethem <aykevanlaethem@gmail.com>2022-01-16 09:34:04 +0100
committerAyke van Laethem <aykevanlaethem@gmail.com>2022-08-15 14:29:38 +0200
commita560e57a7e32d7da3fd897b3d09ee541911eed65 (patch)
tree549c5a00ab380dc8eba3100537ac77fa6f15daec /llvm/tools/llvm-objdump/llvm-objdump.cpp
parent43a8dbc5be8ae9d31fb86f333794e51280ea3992 (diff)
downloadllvm-a560e57a7e32d7da3fd897b3d09ee541911eed65.zip
llvm-a560e57a7e32d7da3fd897b3d09ee541911eed65.tar.gz
llvm-a560e57a7e32d7da3fd897b3d09ee541911eed65.tar.bz2
[AVR] Only push and clear R1 in interrupts when necessary
R1 is a reserved register, but LLVM gives the APIs to know when it is used or not. So this patch uses these APIs to only save/clear/restore R1 in interrupts when necessary. The main issue here was getting inline assembly to work. One could argue that this is the job of Clang, but for consistency I've made sure that R1 is always usable in inline assembly even if that means clearing it when it might not be needed. Information on inline assembly in AVR can be found here: https://www.nongnu.org/avr-libc/user-manual/inline_asm.html#asm_code Essentially, this seems to suggest that r1 can be freely used in avr-gcc inline assembly, even without specifying it as an input operand. Differential Revision: https://reviews.llvm.org/D117426
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions