From patchwork Mon Dec 5 17:05:14 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Vyukov X-Patchwork-Id: 129367 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 AC8ED1007D4 for ; Tue, 6 Dec 2011 04:05:39 +1100 (EST) Received: (qmail 9494 invoked by alias); 5 Dec 2011 17:05:34 -0000 Received: (qmail 9485 invoked by uid 22791); 5 Dec 2011 17:05:32 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-yx0-f201.google.com (HELO mail-yx0-f201.google.com) (209.85.213.201) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 05 Dec 2011 17:05:17 +0000 Received: by yenm7 with SMTP id m7so334727yen.2 for ; Mon, 05 Dec 2011 09:05:17 -0800 (PST) Received: by 10.236.156.98 with SMTP id l62mr40417231yhk.4.1323104717165; Mon, 05 Dec 2011 09:05:17 -0800 (PST) Received: by 10.236.156.98 with SMTP id l62mr40417218yhk.4.1323104717107; Mon, 05 Dec 2011 09:05:17 -0800 (PST) Received: from wpzn4.hot.corp.google.com (216-239-44-65.google.com [216.239.44.65]) by gmr-mx.google.com with ESMTPS id r38si6212380ano.2.2011.12.05.09.05.17 (version=TLSv1/SSLv3 cipher=AES128-SHA); Mon, 05 Dec 2011 09:05:17 -0800 (PST) Received: from wpaz9.hot.corp.google.com (wpaz9.hot.corp.google.com [172.24.198.73]) by wpzn4.hot.corp.google.com (Postfix) with ESMTPS id 128C31E004D; Mon, 5 Dec 2011 09:05:17 -0800 (PST) Received: from 1024cores.msk.corp.google.com (1024cores.msk.corp.google.com [172.28.51.220]) by wpaz9.hot.corp.google.com with ESMTP id pB5H5FvA007116; Mon, 5 Dec 2011 09:05:16 -0800 Received: by 1024cores.msk.corp.google.com (Postfix, from userid 129372) id CDB44C1C49; Mon, 5 Dec 2011 21:05:14 +0400 (MSK) To: reply@codereview.appspotmail.com, gcc-patches@gcc.gnu.org Subject: Fix a bug in ThreadSanitizer pass (issue5448109) Message-Id: <20111205170514.CDB44C1C49@1024cores.msk.corp.google.com> Date: Mon, 5 Dec 2011 21:05:14 +0400 (MSK) From: dvyukov@google.com (Dmitriy Vyukov) X-System-Of-Record: true 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 This is for google-main branch. Fix taking address of SSA_NAME in ThreadSanitizer pass. --- This patch is available for review at http://codereview.appspot.com/5448109 Index: gcc/tree-tsan.c =================================================================== --- gcc/tree-tsan.c (revision 182014) +++ gcc/tree-tsan.c (working copy) @@ -726,13 +726,20 @@ struct mop_desc mop; unsigned fld_off; unsigned fld_size; + tree base; + + base = get_base_address (expr); + if (base == NULL_TREE + || TREE_CODE (base) == SSA_NAME + || TREE_CODE (base) == STRING_CST) + return; + tcode = TREE_CODE (expr); /* Below are things we do not instrument (no possibility of races or not implemented yet). */ if ((func_ignore & (tsan_ignore_mop | tsan_ignore_rec)) - || get_base_address (expr) == NULL /* Compiler-emitted artificial variables. */ || (DECL_P (expr) && DECL_ARTIFICIAL (expr)) /* The var does not live in memory -> no possibility of races. */ Index: gcc/ChangeLog.google-main =================================================================== --- gcc/ChangeLog.google-main (revision 182014) +++ gcc/ChangeLog.google-main (working copy) @@ -1,3 +1,8 @@ +2011-12-05 Dmitriy Vyukov + + Fix taking address of SSA_NAME in ThreadSanitizer pass. + * gcc/tree-tsan.c (handle_expr): Add the additional check. + 2011-11-30 Dmitriy Vyukov Add directives to run ThreadSanitizer tests