Fix PR77933: stack corruption on ARM when using high registers and LR
commit5bbf96333b77aff602bef6b0fa77ae94ba7ee66b
authorthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Nov 2016 20:12:13 +0000 (17 20:12 +0000)
committerthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Nov 2016 20:12:13 +0000 (17 20:12 +0000)
tree57d72e555ae16df422d83d7d1b6434b8123f1ac1
parent175cdef4437ea8d5b4532e7d332cb8d75290a38c
Fix PR77933: stack corruption on ARM when using high registers and LR

2016-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR target/77933
    * config/arm/arm.c (thumb1_expand_prologue): Distinguish between lr
    being live in the function and lr needing to be saved.  Distinguish
    between already saved pushable registers and registers to push.
    Check for LR being an available pushable register.

    gcc/testsuite/
    PR target/77933
    * gcc.target/arm/pr77933-1.c: New test.
    * gcc.target/arm/pr77933-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242559 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr77933-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/pr77933-2.c [new file with mode: 0644]