From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751677AbdJCVuI (ORCPT ); Tue, 3 Oct 2017 17:50:08 -0400 Received: from mail-qt0-f182.google.com ([209.85.216.182]:48450 "EHLO mail-qt0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751120AbdJCVuF (ORCPT ); Tue, 3 Oct 2017 17:50:05 -0400 X-Google-Smtp-Source: AOwi7QBuNG3HPM9R3024tXv8ULe+luDUKn1VT+1huzw2b03jYslhJgnxnX3PMUYX27xRNlAHIpD6vw== Date: Tue, 3 Oct 2017 14:50:00 -0700 From: Jakub Kicinski To: Matthias Kaehlcke Cc: "David S . Miller" , Simon Horman , Dirk van der Merwe , oss-drivers@netronome.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Renato Golin , Manoj Gupta , Guenter Roeck , Doug Anderson Subject: Re: [PATCH] nfp: convert nfp_eth_set_bit_config() into a macro Message-ID: <20171003145000.53683e21@cakuba> In-Reply-To: <20171003200546.165731-1-mka@chromium.org> References: <20171003200546.165731-1-mka@chromium.org> Organization: Netronome Systems, Ltd. MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 3 Oct 2017 13:05:46 -0700, Matthias Kaehlcke wrote: > nfp_eth_set_bit_config() is marked as __always_inline to allow gcc to > identify the 'mask' parameter as known to be constant at compile time, > which is required to use the FIELD_GET() macro. > > The forced inlining does the trick for gcc, but for kernel builds with > clang it results in undefined symbols: > > drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.o: In function > `__nfp_eth_set_aneg': > drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c:(.text+0x787): > undefined reference to `__compiletime_assert_492' > drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c:(.text+0x7b1): > undefined reference to `__compiletime_assert_496' > > These __compiletime_assert_xyx() calls would have been optimized away if > the compiler had seen 'mask' as a constant. > > Convert nfp_eth_set_bit_config() into a macro, which allows both gcc and > clang to identify 'mask' as a compile time constant. > > Signed-off-by: Matthias Kaehlcke :( Is there no chance of fixing the constant propagation in the compiler?