From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16166 invoked by alias); 10 Feb 2009 09:51:01 -0000 Received: (qmail 16107 invoked by uid 48); 10 Feb 2009 09:50:45 -0000 Date: Tue, 10 Feb 2009 09:51:00 -0000 Message-ID: <20090210095045.16106.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/39139] [4.4 Regression] ICE with stringop and register var In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "bonzini at 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-02/txt/msg00858.txt.bz2 ------- Comment #23 from bonzini at gnu dot org 2009-02-10 09:50 ------- > I guess it is too expensive to add a new reg class for each > register to support constraints for all registers. This has no reference to the actual problem of this PR. The sparc testcase that Jakub posted is particularly significative, since you don't get ICEs but wrong code there. > Unfortunately this means that in a function which contains both local register > variables and an asm, we must severely restrict any code motion which may > involve a function call or the use of hidden registers. I think that in the GIMPLE grammar local register variables should be treated as memory, with loads and stores separated from the computations; and just like memory, each asm or function call should have a VUSE and (depending on the asm's inputs, outputs and clobbers; and in the case of function calls for call-clobbered local register variables) VDEF for the local register variables. -- bonzini at gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bonzini at gnu dot org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-02-10 09:50:44 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39139