MSP430: Fix CFA generation during function epilogues
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Fri, 18 Sep 2020 12:03:13 +0000 (13:03 +0100)
committerJozef Lawrynowicz <jozef.l@mittosystems.com>
Fri, 18 Sep 2020 12:03:13 +0000 (13:03 +0100)
commit685c95ebc4906f6b58db2e3c81ad9ab73fdca794
treef88db1c197d7e1f28908a7977405180bfdbda918
parent220724c311473b8b0f2418350c2b64e796e92bda
MSP430: Fix CFA generation during function epilogues

There is no CFA information generated for instructions that manipulate the
stack during function epilogues. This means a debugger cannot determine the
position of variables on the stack whilst the epilogue is in progress.

This can cause the debugger to give erroneous information when printing a
backtrace whilst stepping through the epilogue, or cause software watchpoints
set on stack variables to become invalidated after a function epilogue
is executed.

The patch fixes this by marking stack manipulation insns as
frame_related, and adding reg_note RTXs to stack pop instructions in the
epilogue.

gcc/ChangeLog:

* config/msp430/msp430.c (increment_stack): Mark insns which increment
the stack as frame_related.
(msp430_expand_prologue): Add comments.
(msp430_expand_epilogue): Mark insns which decrement
the stack as frame_related.
Add reg_note to stack pop insns describing position of register
variables on the stack.
gcc/config/msp430/msp430.c