From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2733 invoked by alias); 23 Jun 2009 17:22:16 -0000 Received: (qmail 2602 invoked by uid 48); 23 Jun 2009 17:21:57 -0000 Date: Tue, 23 Jun 2009 17:22:00 -0000 Message-ID: <20090623172157.2601.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/37053] [4.3/4.4/4.5 regression] ICE in reload_cse_simplify_operands, at postreload.c:395 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "mkuvyrkov at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-06/txt/msg01707.txt.bz2 ------- Comment #12 from mkuvyrkov at gcc dot gnu dot org 2009-06-23 17:21 ------- (In reply to comment #11) > Still, I don't think a target hook is the solution. Even if it adds hack over > hack, having the "funny precedence" rules only before reload could be a > solution. For the record, I consider the hook to be a feature, the one which backends can use to tweak code generation, not a hack. At the moment, the precedence which favors pointers is a hack, but we cannot remove it due to powerpc being a important platform. Also, favoring the pointers may be useful for other similar to ppc platforms even if we are not aware of them right now. That said, conditioning the precedence on (!reload_in_progress && !reload_completed) fixes the bug so I consider this to be the second best thing to a hook. It is not as good as a hook because there may be corner cases during reload when pointers should be favored on powerpc (multi-dimension array references, probably). On the other hand m68k need unrestricted (in the sense that all RTX_OBJ are the same) commutativeness during reload to avoid ICEs. So, conditioning pointer precedence on reload_in_progress has possible performance degradation on powerpc on one hand and ICE on m68k on the other. > I'm pretty sure that we are talking about two different things. :-) Err, I don't fully follow you here. What are the two different things? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37053