From patchwork Thu Nov 17 19:47:43 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 126303 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 7A8E9B722A for ; Fri, 18 Nov 2011 06:48:00 +1100 (EST) Received: (qmail 10210 invoked by alias); 17 Nov 2011 19:47:58 -0000 Received: (qmail 10200 invoked by uid 22791); 17 Nov 2011 19:47:57 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-yw0-f47.google.com (HELO mail-yw0-f47.google.com) (209.85.213.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 17 Nov 2011 19:47:44 +0000 Received: by ywt2 with SMTP id 2so1711487ywt.20 for ; Thu, 17 Nov 2011 11:47:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.100.115.6 with SMTP id n6mr7528401anc.165.1321559263689; Thu, 17 Nov 2011 11:47:43 -0800 (PST) Received: by 10.146.137.4 with HTTP; Thu, 17 Nov 2011 11:47:43 -0800 (PST) Date: Thu, 17 Nov 2011 20:47:43 +0100 Message-ID: Subject: =?windows-1252?Q?=5BPATCH=2C_tree=2Dopt=5D=3A_Fix_PR5118=2C_ICE=3A_tree_check=3A_expe?= =?windows-1252?Q?cted_tree_that_contains_=91typed=92_structure=2C_have_=91block?= =?windows-1252?Q?=92_in_fold=5Fchecksum=5Ftree?= From: Uros Bizjak To: gcc-patches@gcc.gnu.org Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello! Currently, bootstrap crashes with --enable-stage1-checking=all with: ../../../libgcc/libgcc2.c:553:3: internal compiler error: tree check: expected tree that contains ‘typed’ structure, have ‘block’ in fold_checksum_tree, at fold-const.c:14160 The problem is in fold_checksum_tree function itself, when it recurses for i.e. (gdb) p debug_tree (expr) > --- body side-effects arg 0 031.c:4:32> block > 031.c:4:23> The function decomposes the tree expression with: case tcc_expression: ... len = TREE_OPERAND_LENGTH (expr); for (i = 0; i < len; ++i) >> fold_checksum_tree (TREE_OPERAND (expr, i), ctx, ht); break; where we recurse with "block" expression, that has no type. This recursion crashes at md5_process_bytes (expr, tree_size (expr), ctx); >> fold_checksum_tree (TREE_TYPE (expr), ctx, ht); The fix is fairly trivial - check for typed structure before using TREE_TYPE accessor, as the error said. 2011-11-17 Uros Bizjak PR tree-optimization/51118 * fold-const.c (fold_checksum_tree): Check for TS_TYPED structure before using TREE_TYPE accessor on expr. Patch was tested by bootstrapping --enable-stage1-checking=all configured bootstrap (which takes ages...) on x86_64-pc-linux-gnu. OK for mainline and release branches? Uros. Index: fold-const.c =================================================================== --- fold-const.c (revision 181443) +++ fold-const.c (working copy) @@ -14157,7 +14157,8 @@ fold_checksum_tree (const_tree expr, struct md5_ct } } md5_process_bytes (expr, tree_size (expr), ctx); - fold_checksum_tree (TREE_TYPE (expr), ctx, ht); + if (CODE_CONTAINS_STRUCT (code, TS_TYPED)) + fold_checksum_tree (TREE_TYPE (expr), ctx, ht); if (TREE_CODE_CLASS (code) != tcc_type && TREE_CODE_CLASS (code) != tcc_declaration && code != TREE_LIST