freebsd-ports/devel/avr-gcc/files/patch-303-gcc-4.5.1-osmain
Joerg Wunsch 0c19ecdca8 Upgrade to GCC 4.5.1.
Completely reorganize the patches for this port.

Patches for new devices are now synchronized with the Atmel AVR tools.
The main difference is the naming scheme, as FreeBSD patches start
with "patch-", while the Atmel AVR Tools patches end up in ".patch".
2011-12-17 09:56:31 +00:00

52 lines
1.9 KiB
Text

diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c
--- gcc/config/avr/avr.c 2011-01-19 13:45:00.000000000 -0600
+++ gcc/config/avr/avr.c 2011-01-19 13:45:47.000000000 -0600
@@ -784,7 +784,8 @@ expand_prologue (void)
}
else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS)
|| (!AVR_XMEGA && cfun->machine->is_signal)
- || (!AVR_XMEGA && cfun->machine->is_OS_main))
+ || (!AVR_XMEGA && cfun->machine->is_OS_main)
+ || (AVR_XMEGA && cfun->machine->is_nmi))
{
insn =
emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx,
@@ -963,7 +964,8 @@ expand_epilogue (void)
emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
}
else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS)
- || (!AVR_XMEGA && cfun->machine->is_signal))
+ || (!AVR_XMEGA && cfun->machine->is_signal)
+ || (AVR_XMEGA && cfun->machine->is_nmi))
{
emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx,
frame_pointer_rtx));
diff -Naurp gcc/function.c gcc/function.c
--- gcc/function.c 2010-02-26 09:58:57.000000000 -0600
+++ gcc/function.c 2011-01-19 13:45:48.000000000 -0600
@@ -4980,6 +4980,14 @@ contains (const_rtx insn, htab_t hash)
}
int
+prologue_contains (const_rtx insn)
+{
+ if (contains (insn, prologue_insn_hash))
+ return 1;
+ return 0;
+}
+
+int
prologue_epilogue_contains (const_rtx insn)
{
if (contains (insn, prologue_insn_hash))
diff -Naurp gcc/rtl.h gcc/rtl.h
--- gcc/rtl.h 2010-03-16 05:50:42.000000000 -0500
+++ gcc/rtl.h 2011-01-19 13:45:48.000000000 -0600
@@ -2296,6 +2296,7 @@ extern void print_inline_rtx (FILE *, co
/* In function.c */
extern void reposition_prologue_and_epilogue_notes (void);
+extern int prologue_contains (const_rtx);
extern int prologue_epilogue_contains (const_rtx);
extern int sibcall_epilogue_contains (const_rtx);
extern void mark_temp_addr_taken (rtx);