Bug#367448: gcc-3.4:[Patch] Removed autoreconf patch, Fixed some bugs.
Package:gcc-3.4
Version:3.4.6-1
Severity:wishlist
Tags:patch
Could you please apply the following patch?
This patch is to fix some problems.
Remove a patahes/autoconf.dpatch because it has not already conflicted.
The following patches have been applied to gcc-3.4 to fix some bugs.
m32r-remove-addsi3.dpatch, m32r-auto.dpatch
Regards,
Kazuhiro Inaoka
diff -urNp ../org/gcc-3.4-3.4.6/debian/changelog gcc-3.4-3.4.6/debian/changelog
--- ../org/gcc-3.4-3.4.6/debian/changelog 2006-05-16 10:42:25.752663200 +0900
+++ gcc-3.4-3.4.6/debian/changelog 2006-05-16 10:43:03.097769356 +0900
@@ -1,3 +1,12 @@
+gcc-3.4 (3.4.6-1ds01) unstable; urgency=low
+
+ * rules.patch: Removed autoreconf.dpatch for m32r.
+ * debian/patches/m32r-remove-addsi3.dpatch: Fixed FAIL gcc.dg/2004013-1.c.
+ * debian/patches/m32r-auto.dpatch: Fixed target/26775 target/26776.
+ * debian/rule.patch: Added m32r-remove-addsi3 m32r-auto.dpatch.
+
+ -- Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com> Fri, 12 May 2006 19:04:17 +0900
+
gcc-3.4 (3.4.6-1) unstable; urgency=low
* GCC 3.4.6 release.
diff -urNp ../org/gcc-3.4-3.4.6/debian/patches/m32r-auto.dpatch gcc-3.4-3.4.6/debian/patches/m32r-auto.dpatch
--- ../org/gcc-3.4-3.4.6/debian/patches/m32r-auto.dpatch 1970-01-01 09:00:00.000000000 +0900
+++ gcc-3.4-3.4.6/debian/patches/m32r-auto.dpatch 2006-05-16 10:43:02.479866874 +0900
@@ -0,0 +1,97 @@
+#! /bin/sh -e
+#
+#
+# DP: Author: Kazuhiro Inaoka
+# DP: Fixed PR target/26775 target/26776
+
+if [ $# -eq 3 ] && [ "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+--- gcc/gcc/config/m32r/m32r.c.orig 2006-03-01 16:28:44.000000000 +0900
++++ gcc/gcc/config/m32r/m32r.c 2006-03-21 15:33:53.894564698 +0900
+@@ -2087,11 +2087,19 @@ m32r_output_function_epilogue (FILE * fi
+ else if (reg_offset < 32768)
+ fprintf (file, "\tadd3 %s,%s,%s%d\n",
+ sp_str, sp_str, IMMEDIATE_PREFIX, reg_offset);
+- else
++ else if (reg_offset <= 0xffffff)
+ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
+ reg_names[PROLOGUE_TMP_REGNUM],
+ IMMEDIATE_PREFIX, reg_offset,
+ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
++ else
++ fprintf (file, "\tseth %s,%shigh(%d)\n\tor3 %s,%s,%slow(%d)\n\tadd %s,%s\n",
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, reg_offset,
++ reg_names[PROLOGUE_TMP_REGNUM],
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, reg_offset,
++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
+ }
+ else if (frame_pointer_needed)
+ {
+@@ -2102,10 +2110,20 @@ m32r_output_function_epilogue (FILE * fi
+ else if (reg_offset < 32768)
+ fprintf (file, "\tadd3 %s,%s,%s%d\n",
+ sp_str, fp_str, IMMEDIATE_PREFIX, reg_offset);
++ else if (reg_offset <= 0xffffff)
++ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n\tmv %s,%s\n",
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, reg_offset,
++ reg_names[PROLOGUE_TMP_REGNUM], fp_str,
++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
+ else
+- fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
++ fprintf (file, "\tseth %s,%shigh(%d)\nor3 %s,%s,%slow(%d)\n\tadd %s,%s\n\tmv %s,%s\n",
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, reg_offset,
++ reg_names[PROLOGUE_TMP_REGNUM],
+ reg_names[PROLOGUE_TMP_REGNUM],
+ IMMEDIATE_PREFIX, reg_offset,
++ reg_names[PROLOGUE_TMP_REGNUM], fp_str,
+ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
+ }
+ else
+@@ -2127,8 +2145,26 @@ m32r_output_function_epilogue (FILE * fi
+
+ /* Remove varargs area if present. */
+ if (current_frame_info.pretend_size != 0)
+- fprintf (file, "\taddi %s,%s%d\n",
+- sp_str, IMMEDIATE_PREFIX, current_frame_info.pretend_size);
++ if (current_frame_info.pretend_size < 128)
++ fprintf (file, "\taddi %s,%s%d\n",
++ sp_str, IMMEDIATE_PREFIX, current_frame_info.pretend_size);
++ else if (current_frame_info.pretend_size < 32768)
++ fprintf (file, "\tadd3 %s,%s,%s%d\n",
++ sp_str, sp_str, IMMEDIATE_PREFIX,
++ current_frame_info.pretend_size);
++ else if (current_frame_info.pretend_size <= 0xffffff)
++ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, current_frame_info.pretend_size,
++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
++ else
++ fprintf (file, "\tseth %s,%shigh(%d)\n\tor3 %s,%s,%slow(%d)\n\tadd %s,%s\n",
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, current_frame_info.pretend_size,
++ reg_names[PROLOGUE_TMP_REGNUM],
++ reg_names[PROLOGUE_TMP_REGNUM],
++ IMMEDIATE_PREFIX, current_frame_info.pretend_size,
++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
+
+ /* Emit the return instruction. */
+ if (M32R_INTERRUPT_P (fn_type))
diff -urNp ../org/gcc-3.4-3.4.6/debian/patches/m32r-remove-addsi3.dpatch gcc-3.4-3.4.6/debian/patches/m32r-remove-addsi3.dpatch
--- ../org/gcc-3.4-3.4.6/debian/patches/m32r-remove-addsi3.dpatch 1970-01-01 09:00:00.000000000 +0900
+++ gcc-3.4-3.4.6/debian/patches/m32r-remove-addsi3.dpatch 2006-05-16 10:43:02.470868294 +0900
@@ -0,0 +1,134 @@
+#! /bin/sh -e
+#
+#
+# DP: Author: Kazuhiro Inaoka
+# DP: Fixed FAIL gcc.dg/2004013-1.c.
+
+if [ $# -eq 3 ] && [ "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+--- gcc-3.4.4/gcc/config/m32r/m32r.c (revision 109855)
++++ gcc-3.4.4/gcc/config/m32r/m32r.c (working copy)
+@@ -1028,6 +1028,20 @@
+ {
+ case EQ:
+ if (GET_CODE (y) == CONST_INT
++ && UINT16_P (INTVAL (y)) /* Reg equal to small const. */
++ && y != const0_rtx)
++ {
++ rtx tmp = gen_reg_rtx (SImode);
++
++ emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y))));
++ x = tmp;
++ y = const0_rtx;
++ }
++#if 0
++ /*
++ * Removed for miss optimizing at simplify_relational_operation().
++ */
++ else if (GET_CODE (y) == CONST_INT
+ && CMP_INT16_P (INTVAL (y)) /* Reg equal to small const. */
+ && y != const0_rtx)
+ {
+@@ -1037,6 +1051,7 @@
+ x = tmp;
+ y = const0_rtx;
+ }
++#endif
+ else if (CONSTANT_P (y)) /* Reg equal to const. */
+ {
+ rtx tmp = force_reg (GET_MODE (x), y);
+@@ -1151,6 +1166,20 @@
+ /* Reg/smallconst equal comparison. */
+ if (compare_code == EQ
+ && GET_CODE (y) == CONST_INT
++ && UINT16_P (INTVAL (y)))
++ {
++ rtx tmp = gen_reg_rtx (SImode);
++
++ emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y))));
++ return gen_rtx (code, CCmode, tmp, const0_rtx);
++ }
++
++#if 0
++ /*
++ * Removed for miss optimizing at simplify_relational_operation().
++ */
++ if (compare_code == EQ
++ && GET_CODE (y) == CONST_INT
+ && CMP_INT16_P (INTVAL (y)))
+ {
+ rtx tmp = gen_reg_rtx (SImode);
+@@ -1158,6 +1187,7 @@
+ emit_insn (gen_addsi3 (tmp, x, GEN_INT (-INTVAL (y))));
+ return gen_rtx (code, CCmode, tmp, const0_rtx);
+ }
++#endif
+
+ /* Reg/const equal comparison. */
+ if (compare_code == EQ
+Index: m32r.md
+===================================================================
+--- gcc-3.4.4/gcc/config/m32r/m32r.md (revision 109855)
++++ gcc-3.4.4/gcc/config/m32r/m32r.md (working copy)
+@@ -1690,7 +1691,7 @@
+ DONE;
+ }
+
+- if (! reg_or_eq_int16_operand (op2, mode))
++ if (! reg_or_uint16_operand (op2, mode))
+ op2 = force_reg (mode, op2);
+
+ emit_insn (gen_seq_insn (op0, op1, op2));
+@@ -1752,7 +1753,7 @@
+ (define_insn "seq_insn"
+ [(set (match_operand:SI 0 "register_operand" "=r,r,??r,r")
+ (eq:SI (match_operand:SI 1 "register_operand" "r,r,r,r")
+- (match_operand:SI 2 "reg_or_eq_int16_operand" "r,r,r,PK")))
++ (match_operand:SI 2 "reg_or_uint16_operand" "r,r,r,K")))
+ (clobber (reg:CC 17))
+ (clobber (match_scratch:SI 3 "=1,2,&r,r"))]
+ "TARGET_M32R"
+@@ -1763,7 +1764,7 @@
+ (define_split
+ [(set (match_operand:SI 0 "register_operand" "")
+ (eq:SI (match_operand:SI 1 "register_operand" "")
+- (match_operand:SI 2 "reg_or_eq_int16_operand" "")))
++ (match_operand:SI 2 "reg_or_uint16_operand" "")))
+ (clobber (reg:CC 17))
+ (clobber (match_scratch:SI 3 ""))]
+ "TARGET_M32R && reload_completed"
+@@ -1791,10 +1792,15 @@
+ op1 = op3;
+ }
+
+- if (GET_CODE (op2) == CONST_INT && (value = INTVAL (op2)) != 0
+- && CMP_INT16_P (value))
+- emit_insn (gen_addsi3 (op3, op1, GEN_INT (-value)));
+- else
++/*
++ * Removed for miss optimizing at simplify_relational_operation().
++ *
++ * if (GET_CODE (op2) == CONST_INT && (value = INTVAL (op2)) != 0
++ * && !(GET_CODE (op1) == REG && REG_POINTER (op1))
++ * && CMP_INT16_P (value))
++ * emit_insn (gen_addsi3 (op3, op1, GEN_INT (-value)));
++ * else
++ */
+ emit_insn (gen_xorsi3 (op3, op1, op2));
+
+ emit_insn (gen_cmp_ltusi_insn (op3, GEN_INT (1)));
diff -urNp ../org/gcc-3.4-3.4.6/debian/rules.patch gcc-3.4-3.4.6/debian/rules.patch
--- ../org/gcc-3.4-3.4.6/debian/rules.patch 2006-05-16 10:42:25.706670459 +0900
+++ gcc-3.4-3.4.6/debian/rules.patch 2006-05-16 10:43:00.696148380 +0900
@@ -77,8 +77,8 @@ ifeq ($(DEB_TARGET_ARCH_OS),hurd)
endif
ifeq ($(DEB_TARGET_GNU_CPU),m32r)
- debian_patches += autoreconf m32r-gotoff m32r-stack m32r-libffi \
- m32r-fixes m32r-limits m32r-pie
+ debian_patches += m32r-gotoff m32r-stack m32r-libffi \
+ m32r-fixes m32r-limits m32r-pie m32r-remove-addsi3 m32r-auto
endif
ifeq ($(DEB_TARGET_ARCH),alpha)
debian_patches += alpha-ieee
Reply to: