From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4213 invoked by alias); 14 Sep 2010 17:16:16 -0000 Received: (qmail 4129 invoked by uid 48); 14 Sep 2010 17:15:59 -0000 Date: Tue, 14 Sep 2010 17:16:00 -0000 Message-ID: <20100914171559.4128.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/45633] [4.6 regression] internal compiler error: verify_stmts failed In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub 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: 2010-09/txt/msg01656.txt.bz2 ------- Comment #8 from jakub at gcc dot gnu dot org 2010-09-14 17:15 ------- I've looked at the combiner with the second patch, but I'm afraid this isn't fixable in the combiner easily. While combiner is able for i3 (set (reg:V2DI res) (plus:V2DI (reg:V2DI temp) (mem:V2DI (symbol_ref:P t)))) , i2 (set (reg:V2DI temp) (minus:V2DI zero) (mem:V2DI (reg:V2DI a))) and i1 (set (reg:V2DI zero) (const_vector:V2DI [0 0])) to figure this is (set (reg:V2DI res) (minus:V2DI (mem:V2DI (symbol_ref:P t)) (reg:V2DI a)) (plus repeating i1, as its result is not dead), this pattern doesn't match as minus obviously isn't commutative and combiner doesn't try to make 3 insns out of 3. So I'd prefer if we could either apply the first patch, or try TER on the PLUS_EXPR to see if the second operand isn't negation and expand it as MINUS_EXPR, even when MINUS_EXPR isn't allowed on such arguments in GIMPLE. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45633