Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751191AbdHaCQ4 (ORCPT ); Wed, 30 Aug 2017 22:16:56 -0400 Received: from ozlabs.org ([103.22.144.67]:39515 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750757AbdHaCQz (ORCPT ); Wed, 30 Aug 2017 22:16:55 -0400 From: Michael Ellerman To: Joe Stringer , Andrew Morton Cc: LKML , Ian Abbott , Arnd Bergmann , Michal Nazarewicz , Kees Cook Subject: Re: [PATCH] compiler: Don't perform compiletime_assert with -O0. In-Reply-To: References: <20170829230114.11662-1-joe@ovn.org> <20170830155910.4e2d43b92ff2d1e4492965d0@linux-foundation.org> User-Agent: Notmuch/0.21 (https://notmuchmail.org) Date: Thu, 31 Aug 2017 12:16:53 +1000 Message-ID: <878ti08oru.fsf@concordia.ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1402 Lines: 31 Joe Stringer writes: > On 30 August 2017 at 15:59, Andrew Morton wrote: >> On Tue, 29 Aug 2017 16:01:14 -0700 Joe Stringer wrote: >> >>> Recent changes[0] to make use of __compiletime_assert() from >>> container_of() increased the usage of this macro, allowing developers to >>> notice type conflicts in usage of container_of() at compile time. >>> However, the implementation of __compiletime_assert relies on compiler >>> optimizations to report an error. This means that if a developer uses >>> "-O0" with any code that performs container_of(), the compiler will >>> always report an error regardless of whether there is an actual problem >>> in the code. >>> >>> This patch disables compile_time_assert when optimizations are disabled >>> to allow such code to compile with CFLAGS="-O0". >> >> I'm wondering if we should backport this into -stable. Probably not, >> as I doubt if many people use -O0 - it's a pretty weird thing to do. I >> used to use it a bit because it makes the ".lst" files (intermingled .c >> and .s files) make more sense. In fact I'm wondering how you even >> noticed this? > > Local debugging, was trying to get a better understanding of the > underlying assembly and the code I was using just happened to use > container_of(). Does the kernel actually build with -O0? I didn't think it actually worked. cheers