From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14311 invoked by alias); 23 Jun 2010 17:22:39 -0000 Received: (qmail 14302 invoked by uid 22791); 23 Jun 2010 17:22:38 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,T_RP_MATCHES_RCVD,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from web62407.mail.re1.yahoo.com (HELO web62407.mail.re1.yahoo.com) (69.147.75.84) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Wed, 23 Jun 2010 17:22:32 +0000 Received: (qmail 19877 invoked by uid 60001); 23 Jun 2010 17:22:30 -0000 Message-ID: <449357.18702.qm@web62407.mail.re1.yahoo.com> Received: from [164.129.1.41] by web62407.mail.re1.yahoo.com via HTTP; Wed, 23 Jun 2010 10:22:30 PDT Date: Wed, 23 Jun 2010 17:41:00 -0000 From: Alex Turjan Subject: reload question To: gcc@gcc.gnu.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2010-06/txt/msg00697.txt.bz2 Hi, My port supports hardware loops generated by the following (do_end) pattern: (set (pc) (if_then_else (ne (match_operand:HI 0 "general_register_operand" "d") (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) (set (match_operand:HI 2 "general_register_operand" "=0") (plus:HI (match_operand:HI 3 "general_register_operand" "0") (const_int -1))) (clobber (match_operand:BI 4 "predicate_register_operand" "=j")) When Im compiling a loop with high register pressure the register allocator does not allocate a register for the loop counter (i.e., operand 0) as it has a long life range. Thus operand 0 has to be reloaded but then I get a failure in the reload: error: unable to generate reloads for: (jump_insn 211 182 188 11 lib5.c:51 (parallel [ (set (pc) (if_then_else (ne (reg:HI 292 [ N ]) (const_int 0 [0x0])) (label_ref 183) (pc))) (set (reg:HI 292 [ N ]) (plus:HI (reg:HI 292 [ N ]) (const_int -1 [0xffffffffffffffff]))) (clobber (reg:BI 33 p1 [293])) ]) 506 {do_endhi} (expr_list:REG_UNUSED (reg:BI 33 p1 [293]) (expr_list:REG_BR_PROB (const_int 9100 [0x238c]) (nil))) -> 183) lib5.c:105:1: internal compiler error: in find_reloads, at reload.c:3821 Can anybody give me a hint? I am aware of the following msg: http://gcc.gnu.org/ml/gcc/2001-09/msg00942.html but still dont know how to make reload do the work. thanks, Alex