This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/47744] [x32] ICE: in reload_cse_simplify_operands, at postreload.c:403
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 18 Jul 2011 13:55:10 +0000
- Subject: [Bug target/47744] [x32] ICE: in reload_cse_simplify_operands, at postreload.c:403
- Auto-submitted: auto-generated
- References: <bug-47744-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47744
--- Comment #29 from H.J. Lu <hjl.tools at gmail dot com> 2011-07-18 13:55:05 UTC ---
(In reply to comment #28)
> Here is my latest proposed patch:
>
> --cut here--
> Index: i386.c
> ===================================================================
> --- i386.c (revision 176386)
> +++ i386.c (working copy)
> @@ -11149,8 +11149,13 @@
> return 0;
> break;
>
> + case SUBREG:
> + /* Allow only subregs of DImode hard regs in PLUS chains. */
> + if (!register_no_elim_operand (SUBREG_REG (op), DImode))
> + return 0;
> + /* FALLTHRU */
> +
> case REG:
> - case SUBREG:
> if (!base)
> base = op;
> else if (!index)
> --cut here--
>
> The patch will also benefit x86_64 and x86_32. The patch allows only SUBREGs
> with DImode non-eliminable hard register. This way paradoxical subregs are
> avoided, and at the same time, the patch makes sure that PLUS RTX in wider mode
> won't enter the address RTX (via combine pass, register elimination in reload,
> etc).
This patch increases bootstrap time from
5173.47user 394.52system 14:59.75elapsed 618%CPU (0avgtext+0avgdata
362556maxresident)k
to
7742.94user 475.20system 19:19.84elapsed 708%CPU (0avgtext+0avgdata
362556maxresident)k