Received: by 10.192.165.156 with SMTP id m28csp960661imm; Wed, 18 Apr 2018 01:14:35 -0700 (PDT) X-Google-Smtp-Source: AIpwx48c4LWm0Uynk9Mpuv09FD7+Yyo/bEE1Cai+1fNtYQYgg7sOS0fJaochlpCeu+b5OnLONJc8 X-Received: by 2002:a17:902:481:: with SMTP id e1-v6mr1155853ple.377.1524039275533; Wed, 18 Apr 2018 01:14:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524039275; cv=none; d=google.com; s=arc-20160816; b=J/JUfXxnAXC73z8YMkq0BYeGcVrsfLxNQK3O6dCNek5r3iqbzBgWDU8AXhHN0V+bGF 2UB4FSBklrOyLdDgaqLcvDwvIlopKjKpFmGhtC3wovGO6BBlAq8B7VumzaLhzKQjH++s JF+eiDhYtCgYS005qnR7XyH8UKt8TZhzs6OjfB5+tzL+AJZpb3OwTUtcmyUX8l0HjYyE WhV9tcRWsaAyGHgJEZwIu5MwQQCe/dGp1u2f18D7hmEv5bEFyotv5zhgLnCtVRIhEsJD dTpuclguVzlRl5ucwvFalOH0v8OQqkqaZmyciQOGMX7dj/s+PnDp0hZe+yvL4ofrOrx6 IYCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=WU9JkdELbmObjLdknUbuaLNpo2eyHDDWXtDXr8M0MhA=; b=Et5lOKqJ8oozUvB3mgUxUIiWeOuJ7NQhoESp0NCo58hjSGqGkoArRZz4K4OWZRbp6V dr8BMSJDXdELDHlp+Ic+8KU8FMxrfYF9ynNC0qs0+nI4rl3KBshnA/kCTNZCVB12adkp Ab+fPqqRcWCNVy9F3oC1qbZBt2GUcLKxlchI6UXZlPD4KW2PkgV3wVbr3QlJHiHLYwas DwOzsHNhJyqChh15Dhwzn/TX9GPrmOQ5fU2xypNwfd4zZEMVgK3QHwXOqOcrypeocW+E ub5V8e5Vrm2RoJjEkPHnISMY6a2Luf8OT9GULesjVnl87TNWlWddixR3+DG7+I4Hiu7D 6GLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d128si654162pgc.445.2018.04.18.01.14.21; Wed, 18 Apr 2018 01:14:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753639AbeDRINT (ORCPT + 99 others); Wed, 18 Apr 2018 04:13:19 -0400 Received: from victor.provo.novell.com ([137.65.250.26]:55647 "EHLO prv3-mh.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752592AbeDRINQ (ORCPT ); Wed, 18 Apr 2018 04:13:16 -0400 Received: from [192.168.1.40] (prv-ext-foundry1int.gns.novell.com [137.65.251.240]) by prv3-mh.provo.novell.com with ESMTP (TLS encrypted); Wed, 18 Apr 2018 02:12:57 -0600 Message-ID: <1524039174.3028.24.camel@suse.com> Subject: Re: [PATCH v3 1/6] ilog2: create truly constant version for sparse From: Martin Wilck To: Linus Torvalds Cc: "Martin K. Petersen" , Linux SCSI List , Linux Kernel Mailing List , Hannes Reinecke , James Bottomley , Xose Vazquez Perez , Bart Van Assche , Ard Biesheuvel , Thomas Gleixner , Jonathan Corbet , Randy Dunlap Date: Wed, 18 Apr 2018 10:12:54 +0200 In-Reply-To: References: <20180417233511.6573-1-mwilck@suse.com> <20180417233511.6573-2-mwilck@suse.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.26.4 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2018-04-17 at 17:07 -0700, Linus Torvalds wrote: > On Tue, Apr 17, 2018 at 4:35 PM, Martin Wilck > wrote: > > Sparse emits errors about ilog2() in array indices because of the > > use of > > __ilog2_32() and __ilog2_64(), > > If sparse warns about it, then presumably gcc with -Wvla warns about > it too? No, it doesn't (gcc 7.3.0). -> https://paste.opensuse.org/27471594 It doesn't even warn on an expression like this: #define SIZE (1<<10) static int foo[ilog2(SIZE)]; sparse 0.5.2 doesn't warn about that either. It emits "error: bad integer constant expression" only if ilog2 is used in an array initializer, like this: #define SIZE (1<<10) #define SUBS (1<<5) static int foo [ilog2(SIZE)] = { [ilog2(SUBS)] = 0, }; So maybe I was wrong, and this is actually a false positive in sparse. > So I suspect that what you'd want is > > #define ilog2(n) \ > __builtin_choose_expr(__is_constexpr(n), \ > const_ilog2(n), \ > __builtin_choose_expr(sizeof(n) <= 4, \ > __ilog2_u32(n), \ > __ilog2_u64(n))) > > or something. Hmm? Do you want me to convert the patch to your approach anyway? Or should I throw this away and report to sparse? Regards and thanks, Martin PS: apologies to all recipients for the broken cc list in my post. -- Dr. Martin Wilck , Tel. +49 (0)911 74053 2107 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg)