GCC Bugzilla – Attachment 8614 Details for
Bug 20973
[4.0 Regression] kdelibs (khtml) miscompiled by reload
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for this problem
reload-gcc4.diff (text/plain), 1.96 KB, created by
Michael Matz
on 2005-04-12 19:47:54 UTC
(
hide
)
Description:
Patch for this problem
Filename:
MIME Type:
Creator:
Michael Matz
Created:
2005-04-12 19:47:54 UTC
Size:
1.96 KB
patch
obsolete
>Index: reload.c >=================================================================== >RCS file: /cvs/gcc/gcc/gcc/reload.c,v >retrieving revision 1.268 >diff -u -p -r1.268 reload.c >--- reload.c 24 Feb 2005 22:06:06 -0000 1.268 >+++ reload.c 12 Apr 2005 19:42:16 -0000 >@@ -1520,7 +1520,7 @@ push_reload (rtx in, rtx out, rtx *inloc > But if there is no spilling in this block, that is OK. > An explicitly used hard reg cannot be a spill reg. */ > >- if (rld[i].reg_rtx == 0 && in != 0) >+ if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known) > { > rtx note; > int regno; >@@ -1534,6 +1534,9 @@ push_reload (rtx in, rtx out, rtx *inloc > && REG_P (XEXP (note, 0)) > && (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER > && reg_mentioned_p (XEXP (note, 0), in) >+ && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER >+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, >+ ORIGINAL_REGNO (XEXP (note, 0)))) > && ! refers_to_regno_for_reload_p (regno, > (regno > + hard_regno_nregs[regno] >@@ -1997,7 +2000,16 @@ find_dummy_reload (rtx real_in, rtx real > is a subreg, and in that case, out > has a real mode. */ > (GET_MODE (out) != VOIDmode >- ? GET_MODE (out) : outmode))) >+ ? GET_MODE (out) : outmode)) >+ /* But only do all this if we can be sure, that this input >+ operand doesn't correspond with an uninitialized pseudoreg. >+ global can assign some hardreg to it, which is the same as >+ a different pseudo also currently live (as it can ignore the >+ conflict). So we never must introduce writes to such hardregs, >+ as they would clobber the other live pseudo using the same. */ >+ && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER >+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, >+ ORIGINAL_REGNO (in)))) > { > unsigned int regno = REGNO (in) + in_offset; > unsigned int nwords = hard_regno_nregs[regno][inmode];
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 20973
:
8610
| 8614