backport: re PR target/60991 ([avr] Stack corruption when using 24-bit integers __int24 or __memx pointers in large stack frame)
gcc/ 2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> Backport from mainline r210325 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> PR target/60991 * config/avr/avr.c (avr_out_store_psi): Use correct constant to restore Y. gcc/testsuite/ 2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> Backport from mainline r210325 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> PR target/60991 * gcc.target/avr/pr60991.c: New testcase. From-SVN: r210635
This commit is contained in:
parent
48d4e34ad2
commit
fd941454c7
|
@ -1,3 +1,12 @@
|
|||
2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
|
||||
|
||||
Backport from mainline r210325
|
||||
2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
|
||||
|
||||
PR target/60991
|
||||
* config/avr/avr.c (avr_out_store_psi): Use correct constant
|
||||
to restore Y.
|
||||
|
||||
2014-05-13 Richard Biener <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -3643,7 +3643,7 @@ avr_out_store_psi (rtx insn, rtx *op, int *plen)
|
|||
"std Y+61,%A1" CR_TAB
|
||||
"std Y+62,%B1" CR_TAB
|
||||
"std Y+63,%C1" CR_TAB
|
||||
"sbiw r28,%o0-60", op, plen, -5);
|
||||
"sbiw r28,%o0-61", op, plen, -5);
|
||||
|
||||
return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB
|
||||
"sbci r29,hi8(-%o0)" CR_TAB
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
|
||||
|
||||
Backport from mainline r210325
|
||||
2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
|
||||
|
||||
PR target/60991
|
||||
* gcc.target/avr/pr60991.c: New testcase.
|
||||
|
||||
2014-05-13 Richard Biener <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
/* { dg-do run } */
|
||||
/* { dg-options "-O1" } */
|
||||
|
||||
/* This testcase (simplified from the original bug report) exposes
|
||||
PR60991. The code generated for writing the __int24 value corrupts
|
||||
the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
volatile char junk[62];
|
||||
junk[0] = 5;
|
||||
volatile __int24 staticConfig = 0;
|
||||
|
||||
if (junk[0] != 5)
|
||||
abort();
|
||||
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue