From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3679 invoked by alias); 27 Jan 2002 01:40:45 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 3640 invoked from network); 27 Jan 2002 01:40:44 -0000 Received: from unknown (HELO nondot.org) (64.5.103.85) by sources.redhat.com with SMTP; 27 Jan 2002 01:40:44 -0000 Received: by nondot.org (Postfix, from userid 501) id 989BD11884; Sat, 26 Jan 2002 19:40:22 -0600 (CST) Received: from localhost (localhost [127.0.0.1]) by nondot.org (Postfix) with ESMTP id 945471183E for ; Sat, 26 Jan 2002 19:40:22 -0600 (CST) Date: Sun, 27 Jan 2002 04:34:00 -0000 From: Chris Lattner To: Subject: reload question Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-01/txt/msg01744.txt.bz2 I'm fixing some bugs in a test backend I wrote for GCC, and am hitting a few snags in the reload phase. Specifically, GCC isn't able to reload: (insn 29 28 31 (set (reg:SI 8 %o0 [113]) (zero_extend:SI (subreg:QI (reg/v:SI 108) 0))) 19 {zero_extendqisi2} (nil) (expr_list:REG_EQUIV (mem/f:SI (reg/f:PDI 14 %sp) 0) (expr_list:REG_DEAD (reg/v:SI 108) (nil)))) and a small set of other cases, involving (zero|sign) extending subregs of registers. Can anyone give me a hint as to what could cause this? I have the following instruction pattern: (define_insn "zero_extendqisi2" [(set (match_operand:SI 0 "register_operand" "=r") (zero_extend:SI (match_operand:QI 1 "register_operand" "")))] "" "zero_extendqisi2 %1 -> %0") Which is obviously matched by the labeler, and combined by the combiner... but reload isn't able to split the combined instruction into something like this: (set (reg:QI %reg:QI 1000) (subreg:QI (reg/v:SI 108))) (set (reg:SI 8 %o0 [113]) (zero_extend:SI (reg:QI 1000))) Is there something that I'm missing that enables such transformations to take place? Is there someplace in the manual that I should reread to understand this phase of GCC? Do subreg's ever get turned into truncate's? Thanks for the help, -Chris http://www.nondot.org/sabre/os/