From patchwork Thu Jul 23 23:46:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681813 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EC92C13B6 for ; Thu, 23 Jul 2020 23:46:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D38D3207C4 for ; Thu, 23 Jul 2020 23:46:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HtqjGxc4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728166AbgGWXqs (ORCPT ); Thu, 23 Jul 2020 19:46:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727778AbgGWXqs (ORCPT ); Thu, 23 Jul 2020 19:46:48 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 122A0C0619D3 for ; Thu, 23 Jul 2020 16:46:48 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id b13so3375751edz.7 for ; Thu, 23 Jul 2020 16:46:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3VPLXJMLCwrZsIiOmSlN1XKoLOQdHPZmFmTZcKx9yvg=; b=HtqjGxc4fU2dmdEMvmS1T2P4lNZVkhem4zQU8bNw1CXzunxPH+qrQ5ACqUyRcOuTrL 7d01vgoJ0lCmH9fK23ZwH9nTHVAdSb7+TMELw9i2TPPvClJaSjpT+C/QBvSFBmbdvi/+ blGaFI1Bnuxp1/ZAJ0BULcVdJtlZZSec9kLDob+Nu5Jhl3MKNT+ugujn8lmox78qF9dx 9WvaBa15v1xRYA2dxRRybqRcFUw7YyI7wmVS0O3KO6hS+M0r5UlUizjJfEbbYZKzupEX r/kRImsPTP7Er9AVZnoY4yaNFI3Z6lPEsCkzSBzsle2skz1ex9KjQbs+H6Ogvlv8cwxM jasQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3VPLXJMLCwrZsIiOmSlN1XKoLOQdHPZmFmTZcKx9yvg=; b=jCl+P9YVkeznV4/m0wAaADn97nzBP/1SI8RFS3uHxwU02MZSsdZz88h6JWWWAum/GS 54Jc0ggzY25amhy06K4GMYzYKR/OiORxHpEE7Yw+/2wpMFLpP7QiLcfAio0y8VMvTNG5 VCUc7ZHI34/rN+b2I2w1YCmvIbN8OBlE7eQX7a1o9jomkrhuHK+vavyDV/X2E1tSGK/K 19MXrKO/tAYQqC5wSVAvXRpKtk1xZOKNM2dvVezRmkN6rVpUPhFDLhFFBaDtqB5mYMiL cL72wm0hK0c5bAyVHvEE6CHRuMSzEF0mVuKK45IwybSQbyUecuJLTjGmjyJKH3pQIIot upBw== X-Gm-Message-State: AOAM5313nUY2MDjkRp3/xsifiS61RpMW6SOyHl6M9E6ioOb5tI929TFy 6AzHfVrw0gReqICoENIhKZmjbYjQ X-Google-Smtp-Source: ABdhPJycsjv7l6Obempg9xODFu+f4YL3RkowVsf9hCM7UUJrMjLL3wR+c3ZVPRM/FkIh0GEA2EGppg== X-Received: by 2002:a05:6402:3099:: with SMTP id de25mr6619895edb.228.1595548006526; Thu, 23 Jul 2020 16:46:46 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:45 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 1/6] add testcase for comma in array declarator Date: Fri, 24 Jul 2020 01:46:36 +0200 Message-Id: <20200723234641.78462-2-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Comma expressions are not allowed for the size in an array declarator. Add a testcase for this. Signed-off-by: Luc Van Oostenryck --- validation/abstract-array-declarator.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 validation/abstract-array-declarator.c diff --git a/validation/abstract-array-declarator.c b/validation/abstract-array-declarator.c new file mode 100644 index 000000000000..f230e5862ae9 --- /dev/null +++ b/validation/abstract-array-declarator.c @@ -0,0 +1,12 @@ +void f77(int a[1, 2]); +void c99(int a[(1, 2)]); + +/* + * check-name: abstract-array-declarator + * check-known-to-fail + * + * check-error-start +abstract-array-declarator.c:1:17: error: Expected ] in abstract_array_declarator +abstract-array-declarator.c:1:17: error: got , + * check-error-end + */ From patchwork Thu Jul 23 23:46:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681815 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3EF1613A4 for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 24F0F207C4 for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DpTiv+lW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728175AbgGWXqv (ORCPT ); Thu, 23 Jul 2020 19:46:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727778AbgGWXqt (ORCPT ); Thu, 23 Jul 2020 19:46:49 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3B8BC0619D3 for ; Thu, 23 Jul 2020 16:46:48 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id h28so5772345edz.0 for ; Thu, 23 Jul 2020 16:46:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uKd43jKcj6y+qhr5DgTIhXyfVXs0sZVBdBWaslvamCc=; b=DpTiv+lWod05hzsvAhit3hwLWDLWDTFx69KVcntQvOYt8lSl1ZNKBicu5/X6umCyQ6 +UTddesD26QjDw2B4iytwMSg5zR95+R/BRYYR5/u2wwfe4F/hNNeIOLhBi6wGuu5IMFW 4wpjtLFGMbeLirF3iG+cw/yX9i7udOR1SLN0b16OUve0a5vsFSO8wK/EAAFId0xSipGV S3Yt+f+yzG4/kd1tdrXunmg1hB1FeNRSN/T4lE0W8FZtop1L9oi37SDbj32Z6UVwNoVV 4bA9vHU87bYqa0w1c3mC4Jid28UiPZhA1o9+AQnZ8QUKXCKOa1QdOl59kmxdib+OFCHe bEYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uKd43jKcj6y+qhr5DgTIhXyfVXs0sZVBdBWaslvamCc=; b=ZzIhUYAgp21tdHkAGzxxD6i24t3F97d89XfxqhYZr+9ipHu6R+jDJWCwYPHjZcDOMm Le+ovjloQTmr2bHMBOkDPJnrdvfKJ0gE3b54jjhqfX4G8xN2aM2E+ACSGRYGnN+HSBVY Ip0Lzk1/OEJfldfacFst1YA7iovPHJQeWUpmyukHOWEUfm+RYq/g4ZN+Yc/eOKlr3k1p qCQX74P/NOVO3nhjNoYLhRwfQAP7TlnZAN2PgRUbfZ3v8rrYWAKcHK9ugixr3ea5laq7 Owk7ST3QhDlZUYKuxv4fgXgh58es2oIpyf/IKJFavSpWTfm2O3V4plrFf38jwytgV1/l kDeg== X-Gm-Message-State: AOAM532HtvTs5ZzkuzxqQ79yrQlgUZ1sSw+ga9gzjrhNTP9YAqcS/Ry4 KSmlF8KDbUpjQkUury7jnygieNE4 X-Google-Smtp-Source: ABdhPJyqqthy36V1WPjupbGzVk0l3asufpRZMM14CLxk+0fzXEFU1T7EHdEbmLtLvS64LcTNFCkjow== X-Received: by 2002:aa7:c407:: with SMTP id j7mr6412503edq.96.1595548007508; Thu, 23 Jul 2020 16:46:47 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:47 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 2/6] do not accept comma expressions in array declarator Date: Fri, 24 Jul 2020 01:46:37 +0200 Message-Id: <20200723234641.78462-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Comma expressions are not allowed for the size in an array declarator. So, change the parsing of these expressions to only accept assignment-expressions. Signed-off-by: Luc Van Oostenryck --- parse.c | 2 +- validation/abstract-array-declarator.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/parse.c b/parse.c index cc5dbd522b3e..182f4ad30b9c 100644 --- a/parse.c +++ b/parse.c @@ -1743,7 +1743,7 @@ static struct token *abstract_array_declarator(struct token *token, struct symbo if (match_idents(token, &restrict_ident, &__restrict_ident, &__restrict___ident, NULL)) token = abstract_array_static_declarator(token->next, &has_static); - token = parse_expression(token, &expr); + token = assignment_expression(token, &expr); sym->array_size = expr; return token; } diff --git a/validation/abstract-array-declarator.c b/validation/abstract-array-declarator.c index f230e5862ae9..ca182373b866 100644 --- a/validation/abstract-array-declarator.c +++ b/validation/abstract-array-declarator.c @@ -3,7 +3,6 @@ void c99(int a[(1, 2)]); /* * check-name: abstract-array-declarator - * check-known-to-fail * * check-error-start abstract-array-declarator.c:1:17: error: Expected ] in abstract_array_declarator From patchwork Thu Jul 23 23:46:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681817 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 697BE159A for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 509D5207C4 for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Lekz7jFx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727778AbgGWXqw (ORCPT ); Thu, 23 Jul 2020 19:46:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728173AbgGWXqu (ORCPT ); Thu, 23 Jul 2020 19:46:50 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CED81C0619E2 for ; Thu, 23 Jul 2020 16:46:49 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id z17so5750058edr.9 for ; Thu, 23 Jul 2020 16:46:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kZwGZy4xjx6tJRmwJ3VpD9EYADjUQzmW52fl4sTPA0E=; b=Lekz7jFxjmRvGsxfwXfXnZ2gDUgBdwjF+Y0m5k8W5rhBntpDTAafw+6uVB91twfo57 a8aX9dGplFR2Ocy8YoydOv26pVLkRePlesM9oOxiaiZ+DgkBsN8dtvSU2WpFyeqia75H gX28xoVLJLVjbf9FKS8nR+HJaD3AqCU8wh4t8lrCUbYPogOBQQEE8Vh9znq4mJljf5rB utKQn++zAWijAqzwu+HU3wm17msKBIgyUdMqiBPHOJcceI7rFOuYJpOdcGcMyLGLV4MD GBgODC2W8zxg2hBqfchTqmhttWOkJGp116RyYZ4tSdzXgOyTTEIiA84GJtcu/jTawOcn jzLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kZwGZy4xjx6tJRmwJ3VpD9EYADjUQzmW52fl4sTPA0E=; b=FULX2lCIRxwrCx+MUOQ8UWP7vsX91ebnTrLKiQLmuJlsPSrbo8LX60dFXAuLTWRfN/ sNq4ziLJaZlCJ2o0NLw8qy0zikZMbvDHplzXTFmr7+toWWOSbVJi06BiyOfXU87TTQD1 avGEf3gJfbD1WYN3+RHLT2V+uejycsdc83gXoNioirbh+bOj58ypRY+LK20bl+Jb2ccJ o8Se5gAkUTNJKV7JEiOENkm0I4pFO540TcDAxlZQAp2MEIqFLNGsMjs4q/so+boVaVTN UEstapMtrn0srAKPGpRVaa/OGzszPXt9ekcpglfcoHd60z19MGZHHewIeOiqvznRw+W3 /NdQ== X-Gm-Message-State: AOAM533LehKJHGdQf1c/noXWaqGTMm4ho51uDMjxfK00AQGJ5svkmsEB tEgTbO84mQ5b1oAMyQMN7oknahTC X-Google-Smtp-Source: ABdhPJxpqpgnv1G6veux1B0dkCnkoAbjOZ8uF4acpMRaC4sSkUjYtS3Ikx5tmgX2UQAX8pkeRnsV3Q== X-Received: by 2002:a50:931e:: with SMTP id m30mr6685313eda.341.1595548008311; Thu, 23 Jul 2020 16:46:48 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:47 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 3/6] add testcases for C99 array declarators Date: Fri, 24 Jul 2020 01:46:38 +0200 Message-Id: <20200723234641.78462-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org C99 introduced some funky new array declarators, those with 'restrict' or 'static' inside the brackets. Add some testcases for them. Signed-off-by: Luc Van Oostenryck --- validation/abstract-array-declarator-quals.c | 22 ++++++++++++++++++++ validation/abstract-array-declarator-star.c | 9 ++++++++ 2 files changed, 31 insertions(+) create mode 100644 validation/abstract-array-declarator-quals.c create mode 100644 validation/abstract-array-declarator-star.c diff --git a/validation/abstract-array-declarator-quals.c b/validation/abstract-array-declarator-quals.c new file mode 100644 index 000000000000..85a35a2aca7c --- /dev/null +++ b/validation/abstract-array-declarator-quals.c @@ -0,0 +1,22 @@ +#define N 2 + +void ok1(int []); +void ok2(int [N]); +void ok3(int [const volatile restrict]); +void ok4(int [const volatile restrict N]); +void ok5(int [static N]); +void ok6(int [static const volatile restrict N]); +void ok7(int [const volatile restrict static N]); + +void ok1(int a[]); +void ok2(int a[N]); +void ok3(int a[const volatile restrict]); +void ok4(int a[const volatile restrict N]); +void ok5(int a[static N]); +void ok6(int a[static const volatile restrict N]); +void ok7(int a[const volatile restrict static N]); + +/* + * check-name: abstract-array-declarator-quals + * check-known-to-fail + */ diff --git a/validation/abstract-array-declarator-star.c b/validation/abstract-array-declarator-star.c new file mode 100644 index 000000000000..fdbdff19840d --- /dev/null +++ b/validation/abstract-array-declarator-star.c @@ -0,0 +1,9 @@ +void ok8(int [*]); + +void ok8(int a[*]); +void ok9(int a[const volatile restrict *]); + +/* + * check-name: abstract-array-declarator-star + * check-known-to-fail + */ From patchwork Thu Jul 23 23:46:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681819 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A93C013B6 for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 86750207C4 for ; Thu, 23 Jul 2020 23:46:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Na4d6EvL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728173AbgGWXqw (ORCPT ); Thu, 23 Jul 2020 19:46:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728134AbgGWXqv (ORCPT ); Thu, 23 Jul 2020 19:46:51 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7365C0619E3 for ; Thu, 23 Jul 2020 16:46:50 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id d18so5755581edv.6 for ; Thu, 23 Jul 2020 16:46:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JzwBVD/Z06tfecBn7ZNH+Tj6HQy0ne9RDaKa5mpt0rA=; b=Na4d6EvLL76spa4NbWN2pveD9OqImCP1nHUTRyw4QD/rYWCvotokPvFiJcLSwnbHTz LzEpjNn488f2m77OCo7jFVzkevMuIOFnO6yullyQRyJ5jzeffreGHzryLW0f76YAxDkK iO0CK4jQekFFcq0oZoNmFFbxrRRScdRW/5FfaL9Df099W/eXr1Xf3JC+XLnjiXDZ5c6Y VUOa8vYLF82UePXr/1tO9tF0nYBMUiCFIUCF0/GiZdciO+tSRMncqetMTtg9tTyoOlX1 1o0RS25qSsxnNpj09/2YNIX65J25QOP8zeWmvOMU7stUaEUYAJbrS6R+Ns4ZSr3e3bKb +SqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JzwBVD/Z06tfecBn7ZNH+Tj6HQy0ne9RDaKa5mpt0rA=; b=VQ+nD7oNGxqm2/avuNoJd5aL5fs/k840ehttJdndW9fG7Sxfk605BWS835wvvM1MV/ uUNtuPzpPA56UF7CQQe7HrspVye3OHPp+8eHv9KDBdJ0/GSDI2kTS7X0AxRPCkgTUv+w kDEJF/M4moMTOSNJBSCVDbOa+wwop8g7X2R28lD8Rn0t0qi7zveb1Xdp0Fua+EW4QOtz NGNMd26/W0tZbNPAVDPXLTmd8yuGbXanLkcGrDHu4BqPDXwMXgIQ+xEh/QFN9hZp8jKb YqajEPulQMIXpG2K4k8BiFvpXebMbCqpt/f5E0kOysH+uVMlUdcfeOPZY8rN3feBnH+l uiGg== X-Gm-Message-State: AOAM532ZJNM3LDuPsQeCcZ22ui1rzyUGnJVGG/co95Nppm6y3aC7c+I5 eapfqbQgPK8O2eqclf1LBDH6ZSmE X-Google-Smtp-Source: ABdhPJz8Ie+lvu1/CGz+MU9tDEbLf6+rUTPYOcrLuXohnYc/Y/hJI1Pn2fk0HIdsfPLqlTRXxr+iYQ== X-Received: by 2002:a50:d8c2:: with SMTP id y2mr6459893edj.114.1595548009160; Thu, 23 Jul 2020 16:46:49 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:48 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 4/6] simplify & fix parsing of array declarators Date: Fri, 24 Jul 2020 01:46:39 +0200 Message-Id: <20200723234641.78462-5-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Any type qualifier is valid inside an abstract-array-declarator but currently only 'restrict' is accepted. Also the parsing of this is somehow more complex than needed and done by comparing the identifiers instead of being driven by the keyword table. So, simplify & fix the parsing of these declarators by: 1) using the keyword type KW_QUALIFIER to identify all type qualifier at once. 2) add a new keyword type just for 'static' 3) folding the helper abstract_array_static_declarator() into the main function: abstract_array_declarator(). Signed-off-by: Luc Van Oostenryck --- parse.c | 28 +++++++------------- symbol.h | 2 +- validation/abstract-array-declarator-quals.c | 1 - 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/parse.c b/parse.c index 182f4ad30b9c..ec69e0c6e9ca 100644 --- a/parse.c +++ b/parse.c @@ -171,7 +171,7 @@ static struct symbol_op register_op = { }; static struct symbol_op static_op = { - .type = KW_MODIFIER, + .type = KW_MODIFIER|KW_STATIC, .declarator = static_specifier, }; @@ -1721,28 +1721,20 @@ static struct token *declaration_specifiers(struct token *token, struct decl_sta return token; } -static struct token *abstract_array_static_declarator(struct token *token, int *has_static) -{ - while (token->ident == &static_ident) { - if (*has_static) - sparse_error(token->pos, "duplicate array static declarator"); - - *has_static = 1; - token = token->next; - } - return token; - -} - static struct token *abstract_array_declarator(struct token *token, struct symbol *sym) { struct expression *expr = NULL; int has_static = 0; - token = abstract_array_static_declarator(token, &has_static); - - if (match_idents(token, &restrict_ident, &__restrict_ident, &__restrict___ident, NULL)) - token = abstract_array_static_declarator(token->next, &has_static); + while (token_type(token) == TOKEN_IDENT) { + struct symbol *sym = lookup_keyword(token->ident, NS_TYPEDEF); + if (!sym || !(sym->op->type & (KW_STATIC|KW_QUALIFIER))) + break; + if (has_static && (sym->op->type & KW_STATIC)) + sparse_error(token->pos, "duplicate array static declarator"); + has_static |= (sym->op->type & KW_STATIC); + token = token->next; + } token = assignment_expression(token, &expr); sym->array_size = expr; return token; diff --git a/symbol.h b/symbol.h index c2b60ce91c27..147306481c20 100644 --- a/symbol.h +++ b/symbol.h @@ -81,7 +81,7 @@ enum keyword { KW_BUILTIN = 1 << 4, KW_ASM = 1 << 5, KW_MODE = 1 << 6, - // KW UNUSED = 1 << 7, + KW_STATIC = 1 << 7, // KW UNUSED = 1 << 8, KW_EXACT = 1 << 9, }; diff --git a/validation/abstract-array-declarator-quals.c b/validation/abstract-array-declarator-quals.c index 85a35a2aca7c..e69df902b895 100644 --- a/validation/abstract-array-declarator-quals.c +++ b/validation/abstract-array-declarator-quals.c @@ -18,5 +18,4 @@ void ok7(int a[const volatile restrict static N]); /* * check-name: abstract-array-declarator-quals - * check-known-to-fail */ From patchwork Thu Jul 23 23:46:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681821 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1C72613A4 for ; Thu, 23 Jul 2020 23:46:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 03B1D207C4 for ; Thu, 23 Jul 2020 23:46:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YF/aHDIU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728134AbgGWXqw (ORCPT ); Thu, 23 Jul 2020 19:46:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728162AbgGWXqv (ORCPT ); Thu, 23 Jul 2020 19:46:51 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7EF6BC0619E4 for ; Thu, 23 Jul 2020 16:46:51 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id a1so5731838edt.10 for ; Thu, 23 Jul 2020 16:46:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BbBhSbMkzlC0oTJ91E6fEcPBnqPn5hnAhobeToziTqk=; b=YF/aHDIUYtguy9hUuxGUyHIedAxBPwHbP+cim1sdDQOCoESHK9t3aM26MlHuoFy4qC voMXGaSonY6BgwBrRbZGDQglikyPNxJ5jnWaMv4jtPov0pyzCZs+JsAje8MX56kT3vrV HT6QMkYdNEPKSJrZGJVbAmodINPNPa/xNst1OlKZ7sP9Fn8WchItA0bt7Emlt5/EVsgs GOSYyqRux2YBYdpjqKXzBqbDd2DNhjfobiJnIk0H92UnbwdTqjxnKjKtzAynw4XvRyIy 33qwrLGA58mRO97inKYTLIiKR+JNZ1SbMZ55IkJR1h39ngcOf2m5Izt8TbFWO6jb54CX dhlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BbBhSbMkzlC0oTJ91E6fEcPBnqPn5hnAhobeToziTqk=; b=HgG6wEoV2nMPUrU3qnH/gwZIwJnzuHG3JOGBx1JQSi5VB4som4PwAry9YHfHccCG/L lMzC9vwXmCN2lWqnhCwZlJQ5HLJTaH92crF0d7gA82Au7MXXuJg64wVxiu+VHfgkH3W3 prCL48ztoQpx0RHwkp/TijmN2FCWERbXwwhfTWCBAgnNM+MDyxV0biKxWSluWPEaZrzA uCsMh/L/hrWV2TWXFyKtjWKXaJ7n0HWgWiJvSZPUi0fDjP5KPpbAnalrtif28w9+TtPV LJA4VpDOvf6QRz9KPiUrT3tFLOEmBoO5obrETHUIRCCoeSox6jpqFaLMIZ+wsQMy+spV ki7Q== X-Gm-Message-State: AOAM532s5R8JCIEKuHCcqL8mzq2U+zGcoG6Ku7IjmK/gsGImpjOWhWPo fzqHWxERo77zCaOx1zfjqJtgYDB2 X-Google-Smtp-Source: ABdhPJxJ7li3mSXZ6stOKBlxGxtZd9jyfU151HtLWhY7oaaRHVhfCg9WWh07vU0WxUOnJGpzZ14EFQ== X-Received: by 2002:aa7:d283:: with SMTP id w3mr6534326edq.76.1595548010072; Thu, 23 Jul 2020 16:46:50 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:49 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 5/6] remove now unused match_idents() Date: Fri, 24 Jul 2020 01:46:40 +0200 Message-Id: <20200723234641.78462-6-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org match_idents() is now unused and identifier matching should preferably be done via the keyword table. So, remove this function. Signed-off-by: Luc Van Oostenryck --- parse.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/parse.c b/parse.c index ec69e0c6e9ca..c7ca3dce7f6b 100644 --- a/parse.c +++ b/parse.c @@ -678,24 +678,6 @@ static void fn_local_symbol(struct symbol *sym) add_symbol(function_symbol_list, sym); } -static int SENTINEL_ATTR match_idents(struct token *token, ...) -{ - va_list args; - struct ident * next; - - if (token_type(token) != TOKEN_IDENT) - return 0; - - va_start(args, token); - do { - next = va_arg(args, struct ident *); - } while (next && token->ident != next); - va_end(args); - - return next && token->ident == next; -} - - struct statement *alloc_statement(struct position pos, int type) { struct statement *stmt = __alloc_statement(0); From patchwork Thu Jul 23 23:46:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11681823 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0C21413A4 for ; Thu, 23 Jul 2020 23:46:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E70C7207C4 for ; Thu, 23 Jul 2020 23:46:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M1tGjZvj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728181AbgGWXqx (ORCPT ); Thu, 23 Jul 2020 19:46:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728178AbgGWXqw (ORCPT ); Thu, 23 Jul 2020 19:46:52 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45B36C0619D3 for ; Thu, 23 Jul 2020 16:46:52 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id by13so5735861edb.11 for ; Thu, 23 Jul 2020 16:46:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BPsyU1n8ZQ5VfNOjzlC2B5oiSHtFFi4AIZfwcOsCEDU=; b=M1tGjZvj8lGGcHOppJ1FE1ehVZYeN5h2nD/GzvGZ4IxbYfWjc3zLN0osqZTXsNsd8U 25WTYv2All2jr0pf2j3M5TkeVFLdG1CK+gWkRDdX3U3mcOUGLI12WRF1T/5e+YvGfGGJ GoyzYkJYTAP2r9JJzPlxVq9dDBn9W07AQaQAT9HyKTWydo/Qe8T+QlgSMgIv4STusQJg Vv7YOmhLjwtM2dkOwlaXjAxEi1P6KLOHrssuad7AKjDwbOILDLe+AUVDQ+xHx/InCS0+ pSaeN13nsFnddj0wwbwC0bddikf4+lRF3iua5rco1a/rdcP7vGvrOSwXoM9u0CGuCbFv WNYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BPsyU1n8ZQ5VfNOjzlC2B5oiSHtFFi4AIZfwcOsCEDU=; b=aESYZncbRkwhR/5PwiapJYUR0gR+szoRh7KG1FXVZTQ/VmthxtInbfKiV2lpFspSau sOHNQRkokPaBqCmmo3+w3nwJaTTCmSRK03g1a7Lo302m1/sMRKYs4eF+ny3/AU1HJhfy swEcAt2ead9TksPHXRkkOEC6YU8Hg8R7HJ4eYKwitY8HhULhgpQ+vUgAuHI92gugmqm8 YxcoXIEPeB+2ImMpr27emjc7UWkNXpXk4psRMBvWqac3MDZq7R5bIxJvsSUC1RF4Bp4X xX36w4wqooRiBbsj8paxVnp7dueOU94HcktZAGC4YoGW+fLWyrUQh2/8TbNPeEQQOI12 u/6w== X-Gm-Message-State: AOAM533e7+8Y2tiMVBv2K+hdIOfWdOTl1BmjUqjVHfppFvdA06RTbNou S9PGq7h3PsxIxChkBt0a87iYWrgT X-Google-Smtp-Source: ABdhPJwjzwKfhxjB2xztaVVOTtCKv6lIWOBUN5/K+KHPCTKNNHThrtfywEHURG5f8cUqvTQkKaJl5A== X-Received: by 2002:a05:6402:b2b:: with SMTP id bo11mr1483504edb.154.1595548010857; Thu, 23 Jul 2020 16:46:50 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:a981:5f61:c34f:8c32]) by smtp.gmail.com with ESMTPSA id bq8sm3086975ejb.103.2020.07.23.16.46.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2020 16:46:50 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 6/6] allow [*] in array declarators Date: Fri, 24 Jul 2020 01:46:41 +0200 Message-Id: <20200723234641.78462-7-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> References: <20200723234641.78462-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Since C99, a '*' is allowed in an abstract array declarator to specify that the array is a VLA with a yet-to-be-determined size. So, accept this construction (but still ignore it for now). Signed-off-by: Luc Van Oostenryck --- parse.c | 7 ++++++- validation/abstract-array-declarator-star.c | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/parse.c b/parse.c index c7ca3dce7f6b..6db70f1a95e9 100644 --- a/parse.c +++ b/parse.c @@ -1717,7 +1717,12 @@ static struct token *abstract_array_declarator(struct token *token, struct symbo has_static |= (sym->op->type & KW_STATIC); token = token->next; } - token = assignment_expression(token, &expr); + if (match_op(token, '*') && match_op(token->next, ']')) { + // FIXME: '[*]' is treated like '[]' + token = token->next; + } else { + token = assignment_expression(token, &expr); + } sym->array_size = expr; return token; } diff --git a/validation/abstract-array-declarator-star.c b/validation/abstract-array-declarator-star.c index fdbdff19840d..fc42da3ae6c9 100644 --- a/validation/abstract-array-declarator-star.c +++ b/validation/abstract-array-declarator-star.c @@ -5,5 +5,4 @@ void ok9(int a[const volatile restrict *]); /* * check-name: abstract-array-declarator-star - * check-known-to-fail */