From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2487 invoked by alias); 2 Feb 2009 10:07:07 -0000 Received: (qmail 2443 invoked by uid 48); 2 Feb 2009 10:06:53 -0000 Date: Mon, 02 Feb 2009 10:07:00 -0000 Message-ID: <20090202100653.2442.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug inline-asm/39058] [4.3/4.4 regression] ICE with double in inline-asm 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: 2009-02/txt/msg00093.txt.bz2 ------- Comment #2 from jakub at gcc dot gnu dot org 2009-02-02 10:06 ------- I think the bug is in check_asm_operands/asm_operand_ok. The latter has: case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': /* For best results, our caller should have given us the proper matching constraint, but we can't actually fail the check if they didn't. Indicate that results are inconclusive. */ but the former only handles the simple case: if (c[0] == '%') c++; if (ISDIGIT ((unsigned char) c[0]) && c[1] == '\0') c = constraints[c[0] - '0']; Together this allows combine to combine something that definitely shouldn't be combined. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-02-02 10:06:53 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39058