From patchwork Fri Mar 20 21:10:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 1259248 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48kbzw3tXLz9sR4 for ; Sat, 21 Mar 2020 08:11:24 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C3454394742C; Fri, 20 Mar 2020 21:11:19 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 32B9A385F02A for ; Fri, 20 Mar 2020 21:11:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 32B9A385F02A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Tobias_Burnus@mentor.com IronPort-SDR: wqQnJYI1cSY1mLTNbco0BJpN/K93dcLXHRxa2Z9Ob7KwN9dzhv8ejpbN3kj+DcarcjKLDMU4zx ztOkJWkCllPeucg/TU/24Gx5OMdDAGbChGRcSXLMgg5uuPjp8qo3VyIAnfktw1s2VvoJUCb+rr qJCAMNoI0hI+nsl0+OK6LvHU/gBXcYVnIL60BPyoYSzfqPLIzibhCxVPtjAZT+3MdUj+5emw1x 8FsJDdXYogODtwsmHOExuQc0ZUJUton2wmeGO/qclZVx8HahOuwqXg108JxZTw2kFKnwOWbNa8 loI= X-IronPort-AV: E=Sophos;i="5.72,286,1580803200"; d="diff'?scan'208";a="46954822" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 20 Mar 2020 13:11:16 -0800 IronPort-SDR: b92EzHkukXTO3qjaPwYhzS8YiPG/LTsP3BR03EHkXcxF6fm/rgPB8mZakqJQ/9x8g8DboPlWRA 9m5/VRngv1b13exSeN437xWSF0rUaC83xZtY5U//0LupDDVM1cTaMNkua/+2HAWJJLNkSWr6U0 8ad+piFPhwQguYF9mdoogos2tRnPLMuBOwtK/vtBaSMN7i6DcPdXWJP0hcOxVgtYq23b7+xW/M 7ZfE4hBilVos+2hupS24VKj1DP09lJsyBXGpgJxNMxs15t1KW9+V8fZUV1Wq/mQFyDdahFhP9k nmY= From: Tobias Burnus Subject: [Patch][LTO] Set proper DECL_ALIGN in offload_handle_link_vars (PR94233) To: gcc-patches , Jakub Jelinek , Richard Biener Message-ID: Date: Fri, 20 Mar 2020 22:10:54 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 Content-Language: en-US X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) To SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) X-Spam-Status: No, score=-26.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" When compiling the existing libgomp.c/target-link-1.c with -O3, the test case was ICEing as DECL_ALIGN was 1 (alias "1U << 0"). The reason is that "make_node (VAR_DECL)" calls "SET_DECL_ALIGN (t, 1)" and unless one overrides this, it stays like that. Here, it later failed by violating the assert that "align % BITS_PER_UNIT == 0" as 1 % 8 != 0 I don't know why this only fails with -O3. (For Nvidia, this test case is disabled. I don't know why or whether it work(s/ed) with Intel MIC or HSA.) I am not sure what to do about the testcase; it is currently is run with -O2 – which did not trigger this ICE. I could add '{ dg-do run }', but this does not make a difference. I could add '{ dg-additional-options "-O3" }' – if that makes sense. Better ideas? OK for the trunk? Tobias Side notes: * The modified code is protected by "#ifdef ACCEL_COMPILER". * The function was added 2015-12-15; I assume that nothing but GCN uses it (as Nvidia PTX does not work); hence, I do not see a reason for backporting. * Independent of that patch, it still fails at run time with "libgomp: Cannot map target variables (size mismatch)" My feeling is that the following bit flip of omp-offload.c's add_decls_addresses_to_decl_constructor is not handled in libgomp/target.c: if (!is_link_var) else isize |= 1ULL << (int_size_in_bytes (const_ptr_type_node) ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter Set proper DECL_ALIGN in offload_handle_link_vars (PR94233) gcc/lto/ * lto.c (offload_handle_link_vars): Set DECL_ALIGN. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 39bb5f45c95..93127f7498c 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -566,6 +566,7 @@ offload_handle_link_vars (void) TREE_USED (link_ptr_var) = 1; TREE_STATIC (link_ptr_var) = 1; SET_DECL_MODE (link_ptr_var, TYPE_MODE (type)); + SET_DECL_ALIGN (link_ptr_var, TYPE_ALIGN (ptr_type_node)); DECL_SIZE (link_ptr_var) = TYPE_SIZE (type); DECL_SIZE_UNIT (link_ptr_var) = TYPE_SIZE_UNIT (type); DECL_ARTIFICIAL (link_ptr_var) = 1;