]>
Commit | Line | Data |
---|---|---|
dbe7ab63 | 1 | diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c |
2 | --- gcc/config/avr/avr.c 2011-01-19 13:45:00.000000000 -0600 | |
3 | +++ gcc/config/avr/avr.c 2011-01-19 13:45:47.000000000 -0600 | |
4 | @@ -784,7 +784,8 @@ expand_prologue (void) | |
5 | } | |
6 | else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS) | |
7 | || (!AVR_XMEGA && cfun->machine->is_signal) | |
8 | - || (!AVR_XMEGA && cfun->machine->is_OS_main)) | |
9 | + || (!AVR_XMEGA && cfun->machine->is_OS_main) | |
10 | + || (AVR_XMEGA && cfun->machine->is_nmi)) | |
11 | { | |
12 | insn = | |
13 | emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, | |
14 | @@ -963,7 +964,8 @@ expand_epilogue (void) | |
15 | emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); | |
16 | } | |
17 | else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS) | |
18 | - || (!AVR_XMEGA && cfun->machine->is_signal)) | |
19 | + || (!AVR_XMEGA && cfun->machine->is_signal) | |
20 | + || (AVR_XMEGA && cfun->machine->is_nmi)) | |
21 | { | |
22 | emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, | |
23 | frame_pointer_rtx)); | |
24 | diff -Naurp gcc/function.c gcc/function.c | |
25 | --- gcc/function.c 2010-02-26 09:58:57.000000000 -0600 | |
26 | +++ gcc/function.c 2011-01-19 13:45:48.000000000 -0600 | |
27 | @@ -4980,6 +4980,14 @@ contains (const_rtx insn, htab_t hash) | |
28 | } | |
29 | ||
30 | int | |
31 | +prologue_contains (const_rtx insn) | |
32 | +{ | |
33 | + if (contains (insn, prologue_insn_hash)) | |
34 | + return 1; | |
35 | + return 0; | |
36 | +} | |
37 | + | |
38 | +int | |
39 | prologue_epilogue_contains (const_rtx insn) | |
40 | { | |
41 | if (contains (insn, prologue_insn_hash)) | |
42 | diff -Naurp gcc/rtl.h gcc/rtl.h | |
43 | --- gcc/rtl.h 2010-03-16 05:50:42.000000000 -0500 | |
44 | +++ gcc/rtl.h 2011-01-19 13:45:48.000000000 -0600 | |
45 | @@ -2296,6 +2296,7 @@ extern void print_inline_rtx (FILE *, co | |
46 | ||
47 | /* In function.c */ | |
48 | extern void reposition_prologue_and_epilogue_notes (void); | |
49 | +extern int prologue_contains (const_rtx); | |
50 | extern int prologue_epilogue_contains (const_rtx); | |
51 | extern int sibcall_epilogue_contains (const_rtx); | |
52 | extern void mark_temp_addr_taken (rtx); |