Robert P. J. DAY says:
apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
1 http://gcc.gnu.org/PR20973
3 "gcc 4 (about RC1) miscompiles khtml, in fact something in CSS, which basically
4 leads to all websites being misrendered. I can't easily reduce the testcase,
5 but have applied the whole preprocessed source of css/cssstyleselector.ii.
7 It is to be compiled with g++ -O2 -fPIC -march=i586 -mtune=i686
8 -fno-exceptions. A more detailed analysis will follow, as we've found out
17 Branch: gcc-4_0-branch
18 Changes by: matz@gcc.gnu.org 2005-04-22 17:30:21
21 gcc : ChangeLog reload.c
25 * reload.c (push_reload, find_dummy_reload): Check for uninitialized
29 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.177&r2=2.7592.2.178
30 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/reload.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.268&r2=1.268.2.1
34 ===================================================================
35 RCS file: /cvs/gcc/gcc/gcc/reload.c,v
36 retrieving revision 1.268
37 retrieving revision 1.268.2.1
38 diff -u -r1.268 -r1.268.2.1
39 --- gcc/gcc/reload.c 2005/02/24 22:06:06 1.268
40 +++ gcc/gcc/reload.c 2005/04/22 17:30:15 1.268.2.1
42 But if there is no spilling in this block, that is OK.
43 An explicitly used hard reg cannot be a spill reg. */
45 - if (rld[i].reg_rtx == 0 && in != 0)
46 + if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known)
50 @@ -1534,6 +1534,11 @@
51 && REG_P (XEXP (note, 0))
52 && (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER
53 && reg_mentioned_p (XEXP (note, 0), in)
54 + /* Check that we don't use a hardreg for an uninitialized
55 + pseudo. See also find_dummy_reload(). */
56 + && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
57 + || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end,
58 + ORIGINAL_REGNO (XEXP (note, 0))))
59 && ! refers_to_regno_for_reload_p (regno,
61 + hard_regno_nregs[regno]
62 @@ -1997,7 +2002,17 @@
63 is a subreg, and in that case, out
65 (GET_MODE (out) != VOIDmode
66 - ? GET_MODE (out) : outmode)))
67 + ? GET_MODE (out) : outmode))
68 + /* But only do all this if we can be sure, that this input
69 + operand doesn't correspond with an uninitialized pseudoreg.
70 + global can assign some hardreg to it, which is the same as
71 + a different pseudo also currently live (as it can ignore the
72 + conflict). So we never must introduce writes to such hardregs,
73 + as they would clobber the other live pseudo using the same.
74 + See also PR20973. */
75 + && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER
76 + || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end,
77 + ORIGINAL_REGNO (in))))
79 unsigned int regno = REGNO (in) + in_offset;
80 unsigned int nwords = hard_regno_nregs[regno][inmode];