diff options
author | Geoffrey Wossum <gwossum@acm.org> | 2008-03-26 18:53:12 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2008-03-26 18:53:12 +0000 |
commit | 4bf3bfe80042c3f441f458453fb43082790b7a7c (patch) | |
tree | 8697684e02ea4bb10c5a3067f3727c526f191cd0 /packages/gcc/gcc-4.2.1 | |
parent | 324fd6d122adccad973cbf891bfb89ea4a5e802d (diff) |
gcc 4.2.1: Fix ICE that occurs with AVR32 gcc, especially when compiling OpenSSH.
Mainly just applies patch for gcc pr32889.
Since this ICE was first reported on the debian-gcc list
(see http://lists.debian.org/debian-gcc/2007/10/msg00306.html), and was
actually report for the HPPA, this patch might be desireable for other
architectures. This patch showed in mainline gcc 4.2.3
See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32889 for mor info
Diffstat (limited to 'packages/gcc/gcc-4.2.1')
-rw-r--r-- | packages/gcc/gcc-4.2.1/gcc-pr32889.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/packages/gcc/gcc-4.2.1/gcc-pr32889.patch b/packages/gcc/gcc-4.2.1/gcc-pr32889.patch new file mode 100644 index 0000000000..3135f23907 --- /dev/null +++ b/packages/gcc/gcc-4.2.1/gcc-pr32889.patch @@ -0,0 +1,57 @@ +diff -urNp --exclude '*.swp' --exclude DEV-PHASE gcc-orig/gcc/reload.c gcc/gcc/reload.c +--- gcc-orig/gcc/reload.c 2008-02-18 09:59:15.000000000 -0800 ++++ gcc/gcc/reload.c 2008-02-18 10:05:47.000000000 -0800 +@@ -4574,7 +4574,7 @@ find_reloads_toplev (rtx x, int opnum, e + x = mem; + i = find_reloads_address (GET_MODE (x), &x, XEXP (x, 0), &XEXP (x, 0), + opnum, type, ind_levels, insn); +- if (x != mem) ++ if (!rtx_equal_p (x, mem)) + push_reg_equiv_alt_mem (regno, x); + if (address_reloaded) + *address_reloaded = i; +@@ -4789,7 +4789,7 @@ find_reloads_address (enum machine_mode + find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0), + &XEXP (tem, 0), opnum, + ADDR_TYPE (type), ind_levels, insn); +- if (tem != orig) ++ if (!rtx_equal_p (tem, orig)) + push_reg_equiv_alt_mem (regno, tem); + } + /* We can avoid a reload if the register's equivalent memory +@@ -5589,7 +5589,7 @@ find_reloads_address_1 (enum machine_mod + RELOAD_OTHER, + ind_levels, insn); + +- if (tem != orig) ++ if (!rtx_equal_p (tem, orig)) + push_reg_equiv_alt_mem (regno, tem); + + /* Then reload the memory location into a base +@@ -5656,7 +5656,7 @@ find_reloads_address_1 (enum machine_mod + find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0), + &XEXP (tem, 0), opnum, type, + ind_levels, insn); +- if (tem != orig) ++ if (!rtx_equal_p (tem, orig)) + push_reg_equiv_alt_mem (regno, tem); + /* Put this inside a new increment-expression. */ + x = gen_rtx_fmt_e (GET_CODE (x), GET_MODE (x), tem); +@@ -5848,7 +5848,7 @@ find_reloads_address_1 (enum machine_mod + find_reloads_address (GET_MODE (x), &x, XEXP (x, 0), + &XEXP (x, 0), opnum, ADDR_TYPE (type), + ind_levels, insn); +- if (x != tem) ++ if (!rtx_equal_p (x, tem)) + push_reg_equiv_alt_mem (regno, x); + } + } +@@ -6076,7 +6076,7 @@ find_reloads_subreg_address (rtx x, int + XEXP (tem, 0), &XEXP (tem, 0), + opnum, type, ind_levels, insn); + /* ??? Do we need to handle nonzero offsets somehow? */ +- if (!offset && tem != orig) ++ if (!offset && !rtx_equal_p (tem, orig)) + push_reg_equiv_alt_mem (regno, tem); + + /* For some processors an address may be valid in the |