From patchwork Sat Oct 17 22:56:22 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: 11843055 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 500AF14B5 for ; Sat, 17 Oct 2020 22:56:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 347D520897 for ; Sat, 17 Oct 2020 22:56:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jy+c2Rwc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439818AbgJQW4l (ORCPT ); Sat, 17 Oct 2020 18:56:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43312 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439817AbgJQW4l (ORCPT ); Sat, 17 Oct 2020 18:56:41 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0237CC061755 for ; Sat, 17 Oct 2020 15:56:40 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id v19so6445005edx.9 for ; Sat, 17 Oct 2020 15:56:40 -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=bme2c4zWU+1p4vw3BAkOHr93X6SQcXKxu5llH7gC5Yg=; b=jy+c2RwcANH7OmDSwtKzwDZmnpauzbQm0HvBhO2XWYjR5x2TOEd8QLru4jK7m04CQz L2iNLD9wpCaX76rddnhHtQKRfD16e5JhMeZJO+N4n50CQc2gHf7eUii83YHlWjeiBmXH aDIJDn/SuPDKO4qlw1s3f27q0yu8iO9x1ivL028/Yee6ac2fEe/hiTuk9OXiJviBKdvu yTClZfytVlYVCeXizs+qVSgRraalClw2gcbVWJtgu0VrLu8+ymHbLAMej8xUFtwI+5bU 8/QxZyETn5+0oic4DGos5WiLGNt5kpjWSOsJUO4qqwDIs7y6OAr0MU7RFrXnDZwdNtQJ kjIg== 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=bme2c4zWU+1p4vw3BAkOHr93X6SQcXKxu5llH7gC5Yg=; b=fSIASpciVuyG1r2RYTZ5VEXpPcjyUQz4128ZH9nO36vm8/1lauCmR9URj9ErS5zud4 4pgmrBqmJxIzkrStaH0j8cJgI5TZYrxw20mxT61LaZec4+Zo/TJVabxQisS4ygp7B4h7 c+uejfrRV8Sr8f040WzPvpsv8y9ZbWttx3p+gohDaKzZ9vh0pyZlavA4ETby68hPt+y0 imVTpaQN6PK+u8OXV4ZUXHTCzlL0jfC1qHAwjwwgdB+GJ8JObnjYTmLEel3/zHCZVqN0 Z0HYaf+h0eP58IlnZIWKHb5GpxeTLs1F3Pdk33R5DV0hN7PbEMW7jC4Ca8k/fVtgYNoJ tDHw== X-Gm-Message-State: AOAM532dlZqYyFR77hCh8k8zSm9zqO/hULMVWQkopthJV27+m+NFnQMP g9yhXXUmGhjKaKy7WbfCybEqHrZ2r4Q= X-Google-Smtp-Source: ABdhPJx+xUp8MHVeOcsEItlgTRXwsQQLc3yuZAEQ+/A5WGfD8PYhNpBb1dgyMrXOireGPEcbOxpLkQ== X-Received: by 2002:aa7:c451:: with SMTP id n17mr10731883edr.266.1602975399177; Sat, 17 Oct 2020 15:56:39 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:38 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 01/12] builtin: add generic .args method Date: Sun, 18 Oct 2020 00:56:22 +0200 Message-Id: <20201017225633.53274-2-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The arity of builtin functions can be retrieved from their prototype. So, create a generic .args method, doing the evaluation of all arguments present in the prototype. Signed-off-by: Luc Van Oostenryck --- builtin.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/builtin.c b/builtin.c index 26b612dc401b..0d4cb12cca22 100644 --- a/builtin.c +++ b/builtin.c @@ -83,6 +83,13 @@ error: return 0; } +static int args_prototype(struct expression *expr) +{ + struct symbol *fntype = expr->fn->ctype->ctype.base_type; + int n = symbol_list_size(fntype->arguments); + return eval_args(expr, n); +} + static int args_triadic(struct expression *expr) { return eval_args(expr, 3); From patchwork Sat Oct 17 22:56:23 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: 11843059 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 BD54814B5 for ; Sat, 17 Oct 2020 22:56:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A1E7C20878 for ; Sat, 17 Oct 2020 22:56:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ia5MSPo8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388643AbgJQW4n (ORCPT ); Sat, 17 Oct 2020 18:56:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439817AbgJQW4n (ORCPT ); Sat, 17 Oct 2020 18:56:43 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA346C061755 for ; Sat, 17 Oct 2020 15:56:42 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id z5so2892055ejw.7 for ; Sat, 17 Oct 2020 15:56:42 -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=NJjGEijVEjKo6kAdm2Le4F1XCtWuym+9/UfsGOO/5ds=; b=ia5MSPo8HxcOxNYPLSr0uVE+sN5iMb0ugczcsz/vRVps5AyfSHmj1txe1SAIdoobGi TjTiQx5rkxGv8yEfn1ue53buSWG1jMGOrocdZ5Jn87t7DvRvR7Fszpexb0Lomt9kxFds kYQGH0fgjeAA4L5PvtgUHhvgMlUWPIP76mGZsvrAW1mw46YWtC0je5AaMYOGTQrxh/bp yk+e+1iUtWGDJ8oWPd+veyn+aKiPIsMD+VaTD6BpwMls1Ps9kVGW3u0u5Yr5cyFA2e8I Om8d9BzrNuEqdz2Z/NPIvx5SmEndaSm7B/AtpqD4XDtiihEnUjeulwgpo0r9FQLPGwiO eYAg== 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=NJjGEijVEjKo6kAdm2Le4F1XCtWuym+9/UfsGOO/5ds=; b=rWm20AIglH39fBBkcXgwaRL4ai5+TEIQpI6iSqIeqCFuwURdfpTLGwocXZM/KKJyj6 rJW5O/y8rEg1jDzKFNoesTA6JDmrAauKMYOwRrZIB8NbiOoFIsiohU7OYusqQgqr101a s046RK4Wgv1bWQDZMs6y0Uhfvh+5kCemypA3BQJhkly6htESvKVIjzrAcqH13O4eKu7Q 27ZdiNEoZG2l6mjyaykZa0CJtkp10tePtLYXBkpbP8eyvyKlnAUbEslDyEYkZMaunAiW iLo3ErjSwiFXScW0jUMCJQvULTh7b5ndguD0Ne9FpY2OOKyjVPPL8A4LDoUeo697sy/U s4aw== X-Gm-Message-State: AOAM532vzpoWN7mPKLxy8jBEjSo+BxH5sVcQaCR/NJIjpLsns/r22Z8C houAPrL+jmoB+LGYYEii6c2jwPz47H0= X-Google-Smtp-Source: ABdhPJxwwEYZUp4nYR37DpYHjy5uorwW5kCgZv36Tml8FtSfG28henNT6QdP60MTcHVXhbsjcUkYHw== X-Received: by 2002:a17:906:3b8e:: with SMTP id u14mr10212432ejf.127.1602975399952; Sat, 17 Oct 2020 15:56:39 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:39 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 02/12] builtin: add builtin type for volatile void * Date: Sun, 18 Oct 2020 00:56:23 +0200 Message-Id: <20201017225633.53274-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org This is the type of most __sync_* or __atomic_* builtins. Signed-off-by: Luc Van Oostenryck --- symbol.c | 3 +++ symbol.h | 1 + 2 files changed, 4 insertions(+) diff --git a/symbol.c b/symbol.c index 5e7f07969f96..ec514eb45df4 100644 --- a/symbol.c +++ b/symbol.c @@ -805,6 +805,7 @@ struct symbol float128_ctype; struct symbol const_void_ctype, const_char_ctype; struct symbol const_ptr_ctype, const_string_ctype; struct symbol const_wchar_ctype, const_wstring_ctype; +struct symbol volatile_void_ctype, volatile_ptr_ctype; struct symbol zero_int; @@ -909,6 +910,8 @@ static const struct ctype_declare { { &const_void_ctype, T_CONST(&void_ctype, NULL, NULL) }, { &const_char_ctype, T_CONST(&char_ctype, &bits_in_char, &max_int_alignment)}, { &const_wchar_ctype, T_CONST(&int_ctype, NULL, NULL) }, + { &volatile_void_ctype,T_NODE(MOD_VOLATILE, &void_ctype, NULL, NULL) }, + { &volatile_ptr_ctype, T_PTR(&volatile_void_ctype) }, { NULL, } }; diff --git a/symbol.h b/symbol.h index e75ea3abfcd3..97c608e84704 100644 --- a/symbol.h +++ b/symbol.h @@ -310,6 +310,7 @@ extern struct symbol float128_ctype; extern struct symbol const_void_ctype, const_char_ctype; extern struct symbol const_ptr_ctype, const_string_ctype; extern struct symbol const_wchar_ctype, const_wstring_ctype; +extern struct symbol volatile_void_ctype, volatile_ptr_ctype; /* Special internal symbols */ extern struct symbol zero_int; From patchwork Sat Oct 17 22:56:24 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: 11843061 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 59D1214B5 for ; Sat, 17 Oct 2020 22:56:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4003820897 for ; Sat, 17 Oct 2020 22:56:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fMlRlqcG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439821AbgJQW4o (ORCPT ); Sat, 17 Oct 2020 18:56:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439817AbgJQW4o (ORCPT ); Sat, 17 Oct 2020 18:56:44 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D09E3C0613CE for ; Sat, 17 Oct 2020 15:56:42 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id p5so8734528ejj.2 for ; Sat, 17 Oct 2020 15:56:42 -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=Axh13ffiywg+dIi5fr7+AQD2wa8ZKJ2aDCsL+RtOrwY=; b=fMlRlqcGds8UhUDwHiv2I2eavT3E22DoQV5qzzdI7nCy4/efWxiHbT+UTww6123Ekv YRxvb+A6wT9gH/XI8BzuDgxwV5DGzTytgJgRDHyRRo/0cRBil8Q+hVWlt1MoKrot6go7 +97+WN4Vq75aoPxomJ/94aYwmhJNH7I1hZi/qVeYKRfJILg8ODnVIIJCPDsF1tReN3eI 8HEMBdSlSi+XejBLs+Ki5K0v0am9Saw33aN5aOzEu291GDkPB06JkVvQ+AwmNh54EIQG AlAL1KxdacXu18Ekpo6GciR/fYliVyZm5SXgH2Togf4lhQSkMF7yjcJxhq7a4Fw19aVU fUOQ== 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=Axh13ffiywg+dIi5fr7+AQD2wa8ZKJ2aDCsL+RtOrwY=; b=qBU+V92JdJ0A9CRxnmqtDKOWd84hUWW5oApecWWo4MewjUjiGXXi5uHPkxrbRQ3Jps 6RnXy+KxzahDxwXo/ensCv/zEenXdKGh7olMzFKYD5W/t35fEVfIMPMuSG2MouaMm6Mw VDw6pN254O11c1rMFCFx1V2VqlWt/NFkBH8ShIHwFmFKZmnjE9daUk66pmhBVqwKqh/d mieVVow3836Pm1XF2R1e2R5BnaxL7RMS2+YgVtEt3KHDrVUU9zekey28P71wRcfas7Qf dCfr7ldvlDjRfKL5rI0KDf+qxKdnUX4jNMApaSX98T4/3AuezZaO7ULoT4cz5atioYfi 8q5Q== X-Gm-Message-State: AOAM5305/KpM48yD7oLqFj/a8GJjBVNtH1YyHQovEB5cr+L3GLQPVOHc fY+hYHzOpPliJyp+J0bRDXXK0MQdRfQ= X-Google-Smtp-Source: ABdhPJzzzpPJeVS1nSvXwCbuIiO3xDeGUQem6KY1o6XR51VuCkLeOoUAc9gNNQ6jt/wKQJAmiCRQiQ== X-Received: by 2002:a17:906:1152:: with SMTP id i18mr10302541eja.101.1602975400808; Sat, 17 Oct 2020 15:56:40 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:40 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 03/12] builtin: make eval_sync_compare_and_swap() more generic Date: Sun, 18 Oct 2020 00:56:24 +0200 Message-Id: <20201017225633.53274-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Most __sync_* or __atomic_* builtin functions have one or more arguments having its real type determined by the first argument: either the same type (a pointer to an integral type) or the type of the object it points to. Currently, only __sync_{bool,val}_compare_and_swap() are handled but lots of very similar variants would be needed for the others. So, make it a generic function, able to handle all these builtins. Signed-off-by: Luc Van Oostenryck --- builtin.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/builtin.c b/builtin.c index 0d4cb12cca22..880dd54f647e 100644 --- a/builtin.c +++ b/builtin.c @@ -31,6 +31,14 @@ #include "compat/bswap.h" #include +#define dyntype incomplete_ctype +static bool is_dynamic_type(struct symbol *t) +{ + if (t->type == SYM_NODE) + t = t->ctype.base_type; + return t == &dyntype; +} + static int evaluate_to_int_const_expr(struct expression *expr) { expr->ctype = &int_ctype; @@ -362,29 +370,32 @@ static struct symbol_op overflow_p_op = { }; -static int eval_sync_compare_and_swap(struct expression *expr) +static int eval_atomic_common(struct expression *expr) { + struct symbol *fntype = expr->fn->ctype->ctype.base_type; struct symbol_list *types = NULL; struct symbol *ctype = NULL; + struct symbol *t; struct expression *arg; int n = 0; - /* the first arg is a pointer type; we'd already verified that */ + // The number of arguments have already be verified. + // The first arg must be a pointer type to an integral type. + PREPARE_PTR_LIST(fntype->arguments, t); FOR_EACH_PTR(expr->args, arg) { - struct symbol *t = arg->ctype; + struct symbol *ptrtype = NULL; - if (!t) - return 0; - - // 2nd & 3rd args must be a basic integer type or a pointer - // 1st arg must be a pointer to such a type. if (++n == 1) { + t = arg->ctype; + if (!t) + return 0; if (t->type == SYM_NODE) t = t->ctype.base_type; if (!t) return 0; if (t->type != SYM_PTR) goto err; + ptrtype = t; t = t->ctype.base_type; if (!t) return 0; @@ -395,11 +406,14 @@ static int eval_sync_compare_and_swap(struct expression *expr) if (t->type != SYM_PTR && t->ctype.base_type != &int_type) goto err; ctype = t; - add_ptr_list(&types, arg->ctype); - } else { - add_ptr_list(&types, ctype); + t = ptrtype; + } else if (is_dynamic_type(t)) { + t = ctype; } + add_ptr_list(&types, t); + NEXT_PTR_LIST(t); } END_FOR_EACH_PTR(arg); + FINISH_PTR_LIST(t); if (!expr->ctype) // __sync_val_compare_and_swap() expr->ctype = ctype; @@ -412,9 +426,9 @@ err: return 0; } -static struct symbol_op sync_compare_and_swap_op = { - .args = args_triadic, - .evaluate = eval_sync_compare_and_swap, +static struct symbol_op atomic_op = { + .args = args_prototype, + .evaluate = eval_atomic_common, }; @@ -464,6 +478,7 @@ static void declare_builtins(int stream, const struct builtin_fn tbl[]) static const struct builtin_fn builtins_common[] = { #define size_t_ctype &size_t_alias #define va_list_ctype &ptr_ctype +#define vol_ptr &volatile_ptr_ctype { "__builtin_choose_expr", NULL, 1, .op = &choose_op }, { "__builtin_constant_p", NULL, 1, .op = &constant_p_op }, { "__builtin_expect", &long_ctype, 0, { &long_ctype ,&long_ctype }, .op = &expect_op }, @@ -614,7 +629,7 @@ static const struct builtin_fn builtins_common[] = { { "__sync_add_and_fetch", &int_ctype, 1, { &ptr_ctype }}, { "__sync_and_and_fetch", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_bool_compare_and_swap", &bool_ctype, 1, { &ptr_ctype }, .op = &sync_compare_and_swap_op}, + { "__sync_bool_compare_and_swap", &bool_ctype, 1, { vol_ptr, &dyntype, &dyntype }, .op = &atomic_op}, { "__sync_fetch_and_add", &int_ctype, 1, { &ptr_ctype }}, { "__sync_fetch_and_and", &int_ctype, 1, { &ptr_ctype }}, { "__sync_fetch_and_nand", &int_ctype, 1, { &ptr_ctype }}, @@ -627,7 +642,7 @@ static const struct builtin_fn builtins_common[] = { { "__sync_or_and_fetch", &int_ctype, 1, { &ptr_ctype }}, { "__sync_sub_and_fetch", &int_ctype, 1, { &ptr_ctype }}, { "__sync_synchronize", &void_ctype, 0 }, - { "__sync_val_compare_and_swap", NULL, 1, { &ptr_ctype }, .op = &sync_compare_and_swap_op }, + { "__sync_val_compare_and_swap", NULL, 1, { vol_ptr, &dyntype, &dyntype }, .op = &atomic_op }, { "__sync_xor_and_fetch", &int_ctype, 1, { &ptr_ctype }}, { } From patchwork Sat Oct 17 22:56:25 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: 11843063 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 9DDD514B5 for ; Sat, 17 Oct 2020 22:56:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7D2F920897 for ; Sat, 17 Oct 2020 22:56:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Jq5YV9nB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439823AbgJQW4q (ORCPT ); Sat, 17 Oct 2020 18:56:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439817AbgJQW4p (ORCPT ); Sat, 17 Oct 2020 18:56:45 -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 87B39C061755 for ; Sat, 17 Oct 2020 15:56:45 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id l16so6479945eds.3 for ; Sat, 17 Oct 2020 15:56:45 -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=RQXH+XSpwSyrzZCarUHoV9BYGozadj5zbeYjlNeyYaE=; b=Jq5YV9nBOHHPiqeyvAp5yhhzu0PwVNrttsJ5yprvzSrZ0Mu2qT4Am4FajmqKSwBrlC iSJnZtdy3hLuFmNUqA2WIpEetsJbz+bIpoL0ZqDtBvIP9MMbl4Jtt9BNcSgtKUSH20kk vBQwipniPdx9kYTTY6hyMasOwxRn0TBz5tQpSqezhkDbWxMYrEFylyrgG5Lz9OHc/vEj fGYBkWhR3EnKKfedbyra+HuRPM1g/eyGQjOhJSYxdfOp9kUtqUZUekHU4IEIoH3WxNbq Iyh8/iHmko2e/14SqHaOY6hqic9U1qtHjI12TdLY/akd7a/xbh1WrXkWKUKMoKGdq+2U dBvQ== 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=RQXH+XSpwSyrzZCarUHoV9BYGozadj5zbeYjlNeyYaE=; b=uQ9FBHKPQ+ycXKYexFEKXsy9X2KN+Jj0iZA6woyNoFvnhhkRXOaOUChcta72YMvd19 WIuc4vcbw0OxE8z+hYEcasK0/++1Ihg1Jo51smWfcc0cs03dcAEnj3FUgR3xC4tIsDPt vgkoX3reus+RwovhP21qutLaNDbo7D2NvXdAZS9bQGtf+SLt7XjJe5Km213F29YKBe5Q YIscpai5Ci+kTuWy57EHo9zZegKwyfLy49AKMvvHey4rMvVsXHHJLulM9LJBqNTLlT07 WsZGaYKk+G45aQbWkLBy24Sf2243vjjBoO3HO8kl+bI5Sp6Xpzp0qfUq/kGT0BxG0EF/ gKkw== X-Gm-Message-State: AOAM532elOhBs6GtkKNC89wlT8ZoanTrpTa+BGGE4vwRTz9YJ3vGEgUd euYYZ6jKxfyAEVi4qPIETHCwRabHg8I= X-Google-Smtp-Source: ABdhPJzodCz9WlTv+FKjNkoRyDsXp+Gi2DqEYOWZpynIPB2xq1np2LUGpYwcshEdA3uc7ny6548opw== X-Received: by 2002:aa7:da12:: with SMTP id r18mr10620579eds.169.1602975401560; Sat, 17 Oct 2020 15:56:41 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:41 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 04/12] builtin: evaluate __sync_*_fetch*() Date: Sun, 18 Oct 2020 00:56:25 +0200 Message-Id: <20201017225633.53274-5-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Reuse the generic method for all these builtins. Signed-off-by: Luc Van Oostenryck --- builtin.c | 26 +++++++++++++------------- validation/builtin-sync-fetch.c | 24 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 validation/builtin-sync-fetch.c diff --git a/builtin.c b/builtin.c index 880dd54f647e..5e490830e147 100644 --- a/builtin.c +++ b/builtin.c @@ -627,23 +627,23 @@ static const struct builtin_fn builtins_common[] = { { "__builtin___vsnprintf_chk", &int_ctype, 0, { &string_ctype, size_t_ctype, &int_ctype, size_t_ctype, &const_string_ctype, va_list_ctype }}, { "__builtin___vsprintf_chk", &int_ctype, 0, { &string_ctype, &int_ctype, size_t_ctype, &const_string_ctype, va_list_ctype }}, - { "__sync_add_and_fetch", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_and_and_fetch", &int_ctype, 1, { &ptr_ctype }}, + { "__sync_add_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_and_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_bool_compare_and_swap", &bool_ctype, 1, { vol_ptr, &dyntype, &dyntype }, .op = &atomic_op}, - { "__sync_fetch_and_add", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_fetch_and_and", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_fetch_and_nand", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_fetch_and_or", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_fetch_and_sub", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_fetch_and_xor", &int_ctype, 1, { &ptr_ctype }}, + { "__sync_fetch_and_add", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_fetch_and_and", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_fetch_and_nand", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_fetch_and_or", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_fetch_and_sub", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_fetch_and_xor", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_lock_release", &void_ctype, 1, { &ptr_ctype }}, - { "__sync_lock_test_and_set", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_nand_and_fetch", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_or_and_fetch", &int_ctype, 1, { &ptr_ctype }}, - { "__sync_sub_and_fetch", &int_ctype, 1, { &ptr_ctype }}, + { "__sync_lock_test_and_set", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_nand_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_or_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, + { "__sync_sub_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_synchronize", &void_ctype, 0 }, { "__sync_val_compare_and_swap", NULL, 1, { vol_ptr, &dyntype, &dyntype }, .op = &atomic_op }, - { "__sync_xor_and_fetch", &int_ctype, 1, { &ptr_ctype }}, + { "__sync_xor_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { } }; diff --git a/validation/builtin-sync-fetch.c b/validation/builtin-sync-fetch.c new file mode 100644 index 000000000000..45139a3c8c3e --- /dev/null +++ b/validation/builtin-sync-fetch.c @@ -0,0 +1,24 @@ +static int ok_int(int *ptr, int val) +{ + return __sync_add_and_fetch(ptr, val); +} + +static long* ok_ptr(long **ptr, long *val) +{ + return __sync_add_and_fetch(ptr, val); +} + +static void chk_ret_ok(long *ptr, long val) +{ + _Static_assert([typeof(__sync_add_and_fetch(ptr, val))] == [long], ""); +} + +static int chk_val(int *ptr, long val) +{ + // OK: val is converted to an int + return __sync_add_and_fetch(ptr, val); +} + +/* + * check-name: builtin-sync-fetch + */ From patchwork Sat Oct 17 22:56:26 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: 11843065 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 BF8EC17CA for ; Sat, 17 Oct 2020 22:56:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A6D01208B6 for ; Sat, 17 Oct 2020 22:56:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E+y7MNuN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439817AbgJQW4q (ORCPT ); Sat, 17 Oct 2020 18:56:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439822AbgJQW4q (ORCPT ); Sat, 17 Oct 2020 18:56:46 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9457C0613CE for ; Sat, 17 Oct 2020 15:56:45 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id lw21so8703887ejb.6 for ; Sat, 17 Oct 2020 15:56:45 -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=/hKNvpvSHPf7IgS4snsk3zTEIH6ExTBe5klcnoYkbHQ=; b=E+y7MNuNdw9RNHpIc5LpoUD97UVzr8H812+D7yz+5b0cr17LIgQbAIKdDptoYM3SFg d/QUwU4rFfmV5NPEUQR9dWtS1k8pSAPvNCpl+iCvbzV/7zX1GKEM569a3p45SYZ8UJDm ez2io4DVN5vhNXXRqANyExhZmnScOVjJRX53PiJ4DrPfPSRHItf6jP2vflEvBoTY06pS 3ZRtCUi+M+UXOyPTm9aUidq+zFLjEARun+6PR/IZWPIQK3TlbOeJRCeRMAjQV5Rn9E+U uzIndRWMSLpZWUhRirF1SFFmwViyK39FdIcpzsTurZKQ3OA+NAlbGeg7ztLA+Qr2zT9M C1Fg== 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=/hKNvpvSHPf7IgS4snsk3zTEIH6ExTBe5klcnoYkbHQ=; b=fUOGqcE/bXOmSer0yZZnBunkACQC4ajfgk7EXrovM+ckbmOMFOBOfFpK+xeUZtp9Hs 63wPu2jZs+3bdFzGf+SCYS1AZ+OXosDIFaN5PVxzKQN21enzZrojmAztqFm7xEhzhR7G i0MkQnCh8zIHU7BvfnzlZ1DICu8PQ9MtaZndGp9Moi1nFL9IQfoTml0f0qNqYYR6PGzp G7mQq8zgjYUS+Ss5Al930VbryeixPcg8vM2eQUsPZyEJe/5GjSi24lD1ssWEUNOfrLxK YwASV21CX5FZgxeSMjYdS0CeOAk1TBT6/7lhiy7q4Zr3jqOBJ9Icw+D/wQo+UZY2usB1 nt7g== X-Gm-Message-State: AOAM532B9w0l/RU7hvvVRTj0LrFBhZ+RH7wirzBOVLrN/74zhoqJkJN3 otXhhWmjvW9BNEwmBPtillyjHy6d4Jg= X-Google-Smtp-Source: ABdhPJwVAc4hgMvXBv8Hy4mKcEVn2JZFqiic2Fbm9QOwHlDQqD677RqiFwXNwnBKcV+7ww/i7Dg8zA== X-Received: by 2002:a17:906:cd14:: with SMTP id oz20mr10519613ejb.7.1602975402577; Sat, 17 Oct 2020 15:56:42 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:42 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 05/12] builtin: fix evaluation of __sync_lock_release Date: Sun, 18 Oct 2020 00:56:26 +0200 Message-Id: <20201017225633.53274-6-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org It must use the generic method too. Signed-off-by: Luc Van Oostenryck --- builtin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin.c b/builtin.c index 5e490830e147..cb900599f112 100644 --- a/builtin.c +++ b/builtin.c @@ -636,7 +636,7 @@ static const struct builtin_fn builtins_common[] = { { "__sync_fetch_and_or", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_fetch_and_sub", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_fetch_and_xor", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, - { "__sync_lock_release", &void_ctype, 1, { &ptr_ctype }}, + { "__sync_lock_release", &void_ctype, 1, { vol_ptr }, .op = &atomic_op }, { "__sync_lock_test_and_set", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_nand_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_or_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, From patchwork Sat Oct 17 22:56:27 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: 11843075 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 1ADA81862 for ; Sat, 17 Oct 2020 22:56:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 00C5E20897 for ; Sat, 17 Oct 2020 22:56:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ufzHLB2E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439826AbgJQW4u (ORCPT ); Sat, 17 Oct 2020 18:56:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43344 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439827AbgJQW4t (ORCPT ); Sat, 17 Oct 2020 18:56:49 -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 D5046C061755 for ; Sat, 17 Oct 2020 15:56:47 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id l24so6444571edj.8 for ; Sat, 17 Oct 2020 15:56: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=4Ca3I1k5F9zXMoAQp+4bX8vRlxSxtpvWqBBlIPnk/7M=; b=ufzHLB2EyaVYJEfnQjQ5JcQr5CeHM4uvyJda6hsVXdWBZiEIPJuxrsmjCGxgWQTU86 uU9s0htV4YJvOAF4LRA+5vUqbMdIUYrVNq6nYTTNA/PxXWpPuvsT95qjfCyj1sDfWb8X Nha5T26K1X2NRdoKWvf14JRBSrWbL0HGWkRnhOHXosoLXZ86T9WGibvGvVOCiiabvh3i SdDuA20wbRXDViZXSm+3fhGjPoXIV/oA4WgO+DiGFvl5zGbXYstXWc9NXVR52Ch/8BgQ xmCeE8KUi4L4KvhdGf54Ek7kOX8wApfcj78XfA119qkthvarOnO1o0uejaaeDlQbtn+C HGKA== 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=4Ca3I1k5F9zXMoAQp+4bX8vRlxSxtpvWqBBlIPnk/7M=; b=dYWkQUZJTIYbb7aPoEBwqvA7HyL9u4gK+wkZVl2dP8mVhvzz5B/YKObW9yZdQEvJrO asZ+H5ixadpEb7dUd4alWMdw05pnDArdBoz8kQr4E0ae+JNE3K7jZuNwtIPm74fctRLb oSFJgnGuefor900slUl4wsqtjPYxJ/BbB1W7+aakuu00ISiUURHX55w0oYpfXYED7IlI xQf1An/xiWxELkwPaN4YMeIBSJvX8B5P2AxyRB6LqB0pTSgouN/t3//roAdx/BPDiZRC 1uObVMoQCPfC14d6TUjsj9iXd4XbkHYCqGhYAcS4qIEOgShwrDYBQme/IkP3x2VcVOid t7DQ== X-Gm-Message-State: AOAM53296c48kcsBLy2T9cKCCzs9yY8nWOCnI2JSeLXnMHpljXoX3Z6t NpcnYUbsIlryQs3mhuzgWzP+tKnW6ts= X-Google-Smtp-Source: ABdhPJwNKC1M+vsaqkSpKM2DZsR/Bo9ZoCMM/jHi1CPF9JH+h4wJbr3btmzoq9ILqRZGboKJtaszCA== X-Received: by 2002:a05:6402:21c5:: with SMTP id bi5mr11265804edb.380.1602975403615; Sat, 17 Oct 2020 15:56:43 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:43 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 06/12] builtin: __sync_synchronize() too is variadic Date: Sun, 18 Oct 2020 00:56:27 +0200 Message-Id: <20201017225633.53274-7-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org This builtin was marked as taking no argument but is in fact variadic (like all the __sync_* builtins). Fix this by marking it as being variadic. Signed-off-by: Luc Van Oostenryck --- builtin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin.c b/builtin.c index cb900599f112..4921a2429f55 100644 --- a/builtin.c +++ b/builtin.c @@ -641,7 +641,7 @@ static const struct builtin_fn builtins_common[] = { { "__sync_nand_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_or_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, { "__sync_sub_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, - { "__sync_synchronize", &void_ctype, 0 }, + { "__sync_synchronize", &void_ctype, 1 }, { "__sync_val_compare_and_swap", NULL, 1, { vol_ptr, &dyntype, &dyntype }, .op = &atomic_op }, { "__sync_xor_and_fetch", NULL, 1, { vol_ptr, &dyntype }, .op = &atomic_op }, From patchwork Sat Oct 17 22:56:28 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: 11843067 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 B477B1580 for ; Sat, 17 Oct 2020 22:56:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9AE2D20897 for ; Sat, 17 Oct 2020 22:56:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sGX+X4rG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439824AbgJQW4r (ORCPT ); Sat, 17 Oct 2020 18:56:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439822AbgJQW4r (ORCPT ); Sat, 17 Oct 2020 18:56:47 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 108A5C061755 for ; Sat, 17 Oct 2020 15:56:46 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id lw21so8703934ejb.6 for ; Sat, 17 Oct 2020 15:56:45 -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=yzbwhgM1b2KZznlK+JCIHyQBOKMQ8o5rvF04A7Pc4Js=; b=sGX+X4rGY6Q3QJAVKNZoOI+L3vRAuwFprti8qJpAar1guA9fnkPmy3HSrCLCaagmmi 5jx7BNv+RRqWCwqiP7nCBfO6aHQ9CfnyD2jMY4xH7Orw/Awua1IcGaSbbXLpcyfDp4d7 405oFhodJOLBC2t4JlSaPoZ7nrC9dE6hmteIYWP7i1O83+dFSeMIAJjp5uTkEEsGqgn6 /JlHbDGcplyyEqlh2FzWMsD+fCDoBtAoBvoqKCynC3Mw/Ol4+S9gnTD6YgrmPpZx+5vK hQtcZLP4BAHkyTUxqycRUQWtV49upQEcRfpp7RPIM3u4oOd0EcveBAmfLyYaTR76Ow92 LZZg== 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=yzbwhgM1b2KZznlK+JCIHyQBOKMQ8o5rvF04A7Pc4Js=; b=CMBy16r1Ml4b0mKE8NsxFHt9rmvugPhEqKZSAGRMkpsyMvO6nNpTQ9cl8aQSSR5S86 oHJJ4p7w/Br4n7Cru1ShvoR2bVCww7blVkz1RH9di4iN7x3pz/djM3dWpXCasqSA3DZg P4Lwt/NCrVPWMUm/wTdTJDnc4aEn3B7aJdjuxnOPLgFQmQecQtb4GV9UndvZcRPR0jOW yLQ55/f8dmPBspzXaZBuiP2A5y5FRdLYDELgWIlznhVGbCe5De4hKbjGB+ABn0s6dS6t KyC/IcV2CET8ZPsXc5Cm+/Yi5qILcSjD5aO/KlzHJQ1GCYs11yxUw6BVEL2EbDjh97vs 2MYA== X-Gm-Message-State: AOAM532Tpt8HsxT+WLMXRWh2ykBqHPFl16pynSOxaLETKj9a6KKMenZf v9sON3HMwMZ6R2pyplU3x4G56ZtA0Og= X-Google-Smtp-Source: ABdhPJwojYyBYRTmwXrfD+OExshLsKvunyIIzsCYwZA+Fm2sjmeABmsSKx3kucKqrZrMnpfjxa+lXg== X-Received: by 2002:a17:906:9702:: with SMTP id k2mr10413779ejx.494.1602975404547; Sat, 17 Oct 2020 15:56:44 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:44 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 07/12] builtin: add predefines for __ATOMIC_RELAXED & friends Date: Sun, 18 Oct 2020 00:56:28 +0200 Message-Id: <20201017225633.53274-8-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The __atomic_*() builtins take an int argument to specify the desired memory ordering. The different admissible values are predefined by the compiler, so do that too for Sparse. Signed-off-by: Luc Van Oostenryck --- predefine.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/predefine.c b/predefine.c index f898cdfa39b8..98e38a04579d 100644 --- a/predefine.c +++ b/predefine.c @@ -179,6 +179,13 @@ void predefined_macros(void) if (arch_target->has_int128) predefined_sizeof("INT128", "", 128); + predefine("__ATOMIC_RELAXED", 0, "0"); + predefine("__ATOMIC_CONSUME", 0, "1"); + predefine("__ATOMIC_ACQUIRE", 0, "3"); + predefine("__ATOMIC_RELEASE", 0, "4"); + predefine("__ATOMIC_ACQ_REL", 0, "7"); + predefine("__ATOMIC_SEQ_CST", 0, "8"); + predefine("__ORDER_LITTLE_ENDIAN__", 1, "1234"); predefine("__ORDER_BIG_ENDIAN__", 1, "4321"); predefine("__ORDER_PDP_ENDIAN__", 1, "3412"); From patchwork Sat Oct 17 22:56:29 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: 11843069 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 7762B14B5 for ; Sat, 17 Oct 2020 22:56:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5D1C120897 for ; Sat, 17 Oct 2020 22:56:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ROKeyCHW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439825AbgJQW4s (ORCPT ); Sat, 17 Oct 2020 18:56:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439822AbgJQW4r (ORCPT ); Sat, 17 Oct 2020 18:56:47 -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 5B6D7C061755 for ; Sat, 17 Oct 2020 15:56:47 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id cm24so6487527edb.0 for ; Sat, 17 Oct 2020 15:56: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=hWuX5J7f4g+31ZemDmc5lgTq/Bv5hJ2Gx8IkgUGSJxg=; b=ROKeyCHWCpKe+ZMZqWGz3PSEVEpHSP2ODVK98ZTGK/JXK7D35YpqYVzkzKoLffZRC0 kGkha0uk5VilXdgEkKyaVOdbKZJu+L2WDd04U/IN0i+jKXRDm4ALpqL8SPqMhIXEX/g/ pmHlfZNZh7raS80wB8yBX7t1moz9pMirDs4lf8dbYj+tlHCejJ8Gadcw1CBBvhbdsebX wf0aPNUMXYxWGAUlw/yIMddk2GQi9uwopEUE5I+aWquzZ/8fZa5+YaY69v30cIL5Sb4c ZItdHYzZMggFKkG+V+z9R5ABY+2tPevVNnWOqZ27uS+jpnXAmcMyXi67Nk+rYeKgbZQz FVrg== 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=hWuX5J7f4g+31ZemDmc5lgTq/Bv5hJ2Gx8IkgUGSJxg=; b=Z+JmCCpbI2hpmP48QmbP2Ao+1qZf4mga0HX119+ub3/w/jnseUsiow9H/DDdeeRYDI 2ASo2iBvYHHlb6e9ybcK9j/uAaqO92vQ7sVHFUv7M5kDuS4j/XpnxUHFUG95lv1Rqzyg XEWAIkhaotMSIv+cyqu/LWDM3mqdU/MLruLTYXLKGJUSHXBAFpFu623tu9cluox3tzZz DNQuPojEl+CffzG1olKXwIiBHe4RjEMXwRLwJp9qdV5qIRXaSY7MoDg6Dwqwc2fd7nJI quwrneVNBy5dEIJB2EpuxRAf0Lv9e0ovJUE/0H2pG0C/wxTXHu5QwERUIz/0mqCoq22t xtrw== X-Gm-Message-State: AOAM532qCpRSsRIA/nuj33YCzo5RgvYgyrsE43AuhWLVTJ3RbzLHzHS2 2S8dDSYDOI4dwcpU0Kd9u5RWijCxoAo= X-Google-Smtp-Source: ABdhPJynvS8Xvtd04hn921l7ptVC8+OXVjdwkMSvMLOObXBirXZf2apULsO7kPXHmAaYb2dv/w/R9g== X-Received: by 2002:a05:6402:1004:: with SMTP id c4mr11144819edu.149.1602975405459; Sat, 17 Oct 2020 15:56:45 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:45 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 08/12] builtin: add support for __atomic_add_fetch(), ... Date: Sun, 18 Oct 2020 00:56:29 +0200 Message-Id: <20201017225633.53274-9-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Reuse the generic method for all these builtins. Signed-off-by: Luc Van Oostenryck --- builtin.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builtin.c b/builtin.c index 4921a2429f55..a65cfd53ced1 100644 --- a/builtin.c +++ b/builtin.c @@ -479,6 +479,18 @@ static const struct builtin_fn builtins_common[] = { #define size_t_ctype &size_t_alias #define va_list_ctype &ptr_ctype #define vol_ptr &volatile_ptr_ctype + { "__atomic_add_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_and_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_add", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_and", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_nand",NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_or", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_sub", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_fetch_xor", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_nand_fetch",NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_or_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_sub_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_xor_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__builtin_choose_expr", NULL, 1, .op = &choose_op }, { "__builtin_constant_p", NULL, 1, .op = &constant_p_op }, { "__builtin_expect", &long_ctype, 0, { &long_ctype ,&long_ctype }, .op = &expect_op }, From patchwork Sat Oct 17 22:56:30 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: 11843073 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 B01D41580 for ; Sat, 17 Oct 2020 22:56:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 98244208B6 for ; Sat, 17 Oct 2020 22:56:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UClsNl56" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439822AbgJQW4u (ORCPT ); Sat, 17 Oct 2020 18:56:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439826AbgJQW4t (ORCPT ); Sat, 17 Oct 2020 18:56:49 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4228C0613CE for ; Sat, 17 Oct 2020 15:56:48 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id dt13so8663905ejb.12 for ; Sat, 17 Oct 2020 15:56: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=Mq5L0kJtABgMXj/9u7g8XhvrAug4jR17KlIP0wE1XqY=; b=UClsNl56kHUZKMxddhpBVV+4uNXsCUsicFg6b4Dxff7YLr5iG60qocui2jermNphAj H8RTMD9DuEvi10a2KT9VJmby1EkchIya/7lNYmKpvmH2LiWN3QDrDmKKEwYtZxeq+W0x eejUOfreO+GLLcxsu9FPmBTfy/A/Mcoy17kTTxMX3vBd3BuINxVFn8LDzQSp+EvWM9zT U4itiNCtFI9RuKDsQJjzxGKeI2tLPxVRR/Io+jkQeSW6l+yZWavQi94uJ3EZzYtt7xE3 8haGmjmDUaE3HFDyk8kfWAGNhv3BuOeXYmlXZAqjGXEb2Zz737DBTJId8YuUc4rlT5Ze pUZA== 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=Mq5L0kJtABgMXj/9u7g8XhvrAug4jR17KlIP0wE1XqY=; b=DD4kRP78OFu99NFQMCSeZBjHff6m+LhydLhcaUUMBWVHRg3qgvwy1d47MZgdYOWEmj xfkVN2qIB3SjvnADoCbIAG+7ByacrDJDeJQ2bwL62iiQuXrFl3/No8uE80dAMgtlUVdJ Eowxl/LmnC2AQh4sW7ziWYSVFXE4Qm/8QYv4thbL5dMcVoULM9fOZNUMOenGdBbZK7db fjrch6TRLiZag1bnwHPzzxuH2zEHfm85DrwBuEwUwqLNMKOtMb+hWhNbwX1ik2YMo1br SkAYNR3GKaMY71ylf48rUVlV1JLhmTp4BNZAXu+3P1r0Nr5CcVoRIarFJ9T/BMTcbfdu 2Pig== X-Gm-Message-State: AOAM5322dGt0OpoY3joKk/AjfmP2qJTs/zd3fQSXQEhAX3PDagj6FNeV Kd5OGNM2iNyizGMWyUmpZllzpjnHspU= X-Google-Smtp-Source: ABdhPJxEJ2qocYUHdrQmk1NSRzrsIujgRNwoWKwIfBeuzSyThdkZ1SwdQwcZzqiHahM1EHYeOfUDwA== X-Received: by 2002:a17:906:c0c8:: with SMTP id bn8mr10405116ejb.256.1602975406310; Sat, 17 Oct 2020 15:56:46 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:45 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 09/12] builtin: add support for others generic atomic builtins Date: Sun, 18 Oct 2020 00:56:30 +0200 Message-Id: <20201017225633.53274-10-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Reuse the generic method for all these builtins. Signed-off-by: Luc Van Oostenryck --- builtin.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/builtin.c b/builtin.c index a65cfd53ced1..94f86a87c3e2 100644 --- a/builtin.c +++ b/builtin.c @@ -409,6 +409,8 @@ static int eval_atomic_common(struct expression *expr) t = ptrtype; } else if (is_dynamic_type(t)) { t = ctype; + } else if (t == &ptr_ctype) { + t = ptrtype; } add_ptr_list(&types, t); NEXT_PTR_LIST(t); @@ -481,14 +483,22 @@ static const struct builtin_fn builtins_common[] = { #define vol_ptr &volatile_ptr_ctype { "__atomic_add_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_and_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_compare_exchange", &bool_ctype, 0, { vol_ptr, &ptr_ctype, &ptr_ctype, &bool_ctype, &int_ctype, &int_ctype }, .op = &atomic_op }, + { "__atomic_compare_exchange_n", &bool_ctype, 0, { vol_ptr, &ptr_ctype, &dyntype, &bool_ctype, &int_ctype, &int_ctype }, .op = &atomic_op }, + { "__atomic_exchange", &void_ctype, 0, { vol_ptr, &ptr_ctype, &ptr_ctype, &int_ctype }, .op = &atomic_op }, + { "__atomic_exchange_n", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_add", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_and", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_nand",NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_or", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_sub", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_xor", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_load", &void_ctype, 0, { vol_ptr, &ptr_ctype, &int_ctype }, .op = &atomic_op }, + { "__atomic_load_n", NULL, 0, { vol_ptr, &int_ctype }, .op = &atomic_op }, { "__atomic_nand_fetch",NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_or_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_store", &void_ctype, 0, { vol_ptr, &ptr_ctype, &int_ctype }, .op = &atomic_op }, + { "__atomic_store_n", &void_ctype, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_sub_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_xor_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__builtin_choose_expr", NULL, 1, .op = &choose_op }, From patchwork Sat Oct 17 22:56:31 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: 11843071 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 759BE14B5 for ; Sat, 17 Oct 2020 22:56:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5BF4D20897 for ; Sat, 17 Oct 2020 22:56:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hvl9+/GO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439828AbgJQW4u (ORCPT ); Sat, 17 Oct 2020 18:56:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439822AbgJQW4t (ORCPT ); Sat, 17 Oct 2020 18:56:49 -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 67391C0613D3 for ; Sat, 17 Oct 2020 15:56:49 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id l24so6444625edj.8 for ; Sat, 17 Oct 2020 15:56: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=v6STfh1QtZTmwM7DfFK1cWkmVmSNUlE4JxjQqf1gcvI=; b=hvl9+/GOSHHs/BgCwgzjm+1MSzjXzyOaXoYeclOVUvgmrya3mYVRiA7VX1Z4LqeGkT hwwi/GpZ8jQxtT6BwQPqWaQS5ierJeUDsm02XAbTYi9LNpP6/bqOrT4n3Rp4Kdv6OBru KBcIypTDPqJ69IeoawvIdmM7aCrXneMfwpt1K2hPbfgHyrjhS3WA21TNv3hd9Vo5e0al +TwH6hHbsNvMUpu+vpAWHE1I2JX4hzBm8Bgkmyu3m09yh8RPSQS7+LxjnTVKkPbm9tx9 YpKHw9R/StbzO1b4j+qrZ/mtqc5lRHn198nxHrAHYmIHj6SCEkm07Q0BJWHsm6MQ6dHw MiLA== 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=v6STfh1QtZTmwM7DfFK1cWkmVmSNUlE4JxjQqf1gcvI=; b=ukTsEgsk7riPI7kuNGRQnWgM6+TUa8uVy96PC/8mo7F/Z6ulcsjQufzCRkl+DTGQnL +b5faSPOXdV51VwvovPc5g3xW4nHx+tyotzgMC+8rlgRq8+3EZv/iyt+arCHJJAg3jXw VrOTnnUP8HC6hrFASHwujJOvCu6kMjqAxTw/5VRLK25f1xw5Vf+2QfmHXyZSNMlv6zwc vs1Si1M5xmvNSLju1Y0FdRLrveO7DVFj+z3T4qa2RvZcxeUz9prjAkXRJsfo/C4+KQnd P0HZTyBRns7nMKZpw/20Ha1WGPv6SLjfljGrbXWB34wQ7WBxUvKrOWSnchN9Gax+WzsU qTHQ== X-Gm-Message-State: AOAM533+13a5UMiVveBYJvcIRPN5RPlABMD9gOeoH3A7xgEV/3EtbpIz HdtfA3thT6AKSi20/DWC/B8SjihPEiA= X-Google-Smtp-Source: ABdhPJzVyq4KmXMGCSvPapc8/rko6PuE09/Bt1r9QzbWwP/FR7fW9x74B+nK+xYECoAt2SZUqFImEQ== X-Received: by 2002:a50:ef0a:: with SMTP id m10mr11245109eds.116.1602975407324; Sat, 17 Oct 2020 15:56:47 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:46 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 10/12] builtin: add builtin type: [volatile] pointer to bool Date: Sun, 18 Oct 2020 00:56:31 +0200 Message-Id: <20201017225633.53274-11-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org This builtin type is needed for __atomic_clear()'s prototype. Signed-off-by: Luc Van Oostenryck --- symbol.c | 3 +++ symbol.h | 1 + 2 files changed, 4 insertions(+) diff --git a/symbol.c b/symbol.c index ec514eb45df4..5d4f078b3444 100644 --- a/symbol.c +++ b/symbol.c @@ -806,6 +806,7 @@ struct symbol const_void_ctype, const_char_ctype; struct symbol const_ptr_ctype, const_string_ctype; struct symbol const_wchar_ctype, const_wstring_ctype; struct symbol volatile_void_ctype, volatile_ptr_ctype; +struct symbol volatile_bool_ctype, volatile_bool_ptr_ctype; struct symbol zero_int; @@ -912,6 +913,8 @@ static const struct ctype_declare { { &const_wchar_ctype, T_CONST(&int_ctype, NULL, NULL) }, { &volatile_void_ctype,T_NODE(MOD_VOLATILE, &void_ctype, NULL, NULL) }, { &volatile_ptr_ctype, T_PTR(&volatile_void_ctype) }, + { &volatile_bool_ctype,T_NODE(MOD_VOLATILE, &bool_ctype, NULL, NULL) }, + { &volatile_bool_ptr_ctype, T_PTR(&volatile_bool_ctype) }, { NULL, } }; diff --git a/symbol.h b/symbol.h index 97c608e84704..5c5a7f12affa 100644 --- a/symbol.h +++ b/symbol.h @@ -311,6 +311,7 @@ extern struct symbol const_void_ctype, const_char_ctype; extern struct symbol const_ptr_ctype, const_string_ctype; extern struct symbol const_wchar_ctype, const_wstring_ctype; extern struct symbol volatile_void_ctype, volatile_ptr_ctype; +extern struct symbol volatile_bool_ctype, volatile_bool_ptr_ctype; /* Special internal symbols */ extern struct symbol zero_int; From patchwork Sat Oct 17 22:56:32 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: 11843077 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 DE8C214B5 for ; Sat, 17 Oct 2020 22:56:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C4AEC20897 for ; Sat, 17 Oct 2020 22:56:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NCPfD/ty" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439829AbgJQW4v (ORCPT ); Sat, 17 Oct 2020 18:56:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439827AbgJQW4v (ORCPT ); Sat, 17 Oct 2020 18:56:51 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12EB7C061755 for ; Sat, 17 Oct 2020 15:56:51 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id u8so8719010ejg.1 for ; Sat, 17 Oct 2020 15:56: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=wBMTECHk24dCmuASYwN15UEWJ11+jX5bB/+QCA/Zpuo=; b=NCPfD/tymi3VaPxcWaDXfPe02XIRBoQhQFrfnOjBsuqCiwJRbQMa+8K6y84+e/5xt/ EywGIQsyBhvenIU2eCQrbPDrlfBvFprs7HW7mhHCfG9Tryfz4AWwUeLRr7pBChdPMR4l an+28i2ZD6tw+a/8iPJhKxIzELeP0meORbf9OBGsYl/02+JyPfVUmtpW+S2PeUEG6pTs zAvuCdhOSGkA4eUTyaE8Fdwezhx40G4a5WrvdwOdtyFJ6gVIsUUXLbRXZdiP+AEwYMxv U16k4M8NnSL+gt5O3VMRhSGUu9siHc5D8vuKAur29diFZJnoCNAAYuq5fovyJufHz14e b/Tg== 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=wBMTECHk24dCmuASYwN15UEWJ11+jX5bB/+QCA/Zpuo=; b=gZpVLewSpCPqPzmJ4Rcr9/BYBDKalYfROQyMSGBwY0xDIRep/Y8UG/q0b95jeb6JjD KXApSKNTBWO7bNf9p9SStUAgJli0zG71aZ4D5RnhxXMgz4jhrxvCOeyNfAR3J3m1RwJT M13i1nBTlqTLkisvpZu0wr5wHfY3du/HZdDgyrMbFUVlBLz78dWr9RYWxBffYOXNMVMz Vb1JpuOIL2i6sjJIGcY8wGUsaeO2O9p+5re71+OX3bLXiP4PUfIwmT3bUz8/7nGUlIlc njdvDv5mYmuS21/QV0G2QhfCj1MbqCsut01n2ulXBgBXxEV4MXuQKXj/qFIRbr9eZcuk i5eA== X-Gm-Message-State: AOAM530DazyjrGIGyQVrIa5sJ/aqknESsxaDyQH2FnzoSHIGGXP9o/m5 WFYm700YIIyib/lrUDVENuv5KBU+JE0= X-Google-Smtp-Source: ABdhPJwK3D9nC/m+9Od6stzEa6Kvu9qFAVM6YdjYVex/QOvo+RNNIcytm0Y97nC3g+BgShisGpxKFQ== X-Received: by 2002:a17:906:b218:: with SMTP id p24mr10382510ejz.136.1602975408252; Sat, 17 Oct 2020 15:56:48 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:47 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 11/12] builtin: add support for __atomic_clear() Date: Sun, 18 Oct 2020 00:56:32 +0200 Message-Id: <20201017225633.53274-12-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The first argument is supposed to be a pointer to a bool, but of course, a volatile qualified pointer should be accepted too. Signed-off-by: Luc Van Oostenryck --- builtin.c | 1 + validation/builtin-atomic-clear.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 validation/builtin-atomic-clear.c diff --git a/builtin.c b/builtin.c index 94f86a87c3e2..1c502597315f 100644 --- a/builtin.c +++ b/builtin.c @@ -483,6 +483,7 @@ static const struct builtin_fn builtins_common[] = { #define vol_ptr &volatile_ptr_ctype { "__atomic_add_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_and_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_clear", &void_ctype, 0, { &volatile_bool_ptr_ctype, &int_ctype }}, { "__atomic_compare_exchange", &bool_ctype, 0, { vol_ptr, &ptr_ctype, &ptr_ctype, &bool_ctype, &int_ctype, &int_ctype }, .op = &atomic_op }, { "__atomic_compare_exchange_n", &bool_ctype, 0, { vol_ptr, &ptr_ctype, &dyntype, &bool_ctype, &int_ctype, &int_ctype }, .op = &atomic_op }, { "__atomic_exchange", &void_ctype, 0, { vol_ptr, &ptr_ctype, &ptr_ctype, &int_ctype }, .op = &atomic_op }, diff --git a/validation/builtin-atomic-clear.c b/validation/builtin-atomic-clear.c new file mode 100644 index 000000000000..ef430c64c244 --- /dev/null +++ b/validation/builtin-atomic-clear.c @@ -0,0 +1,15 @@ +void foo(void *ptr, _Bool *bptr, volatile void *vptr, volatile _Bool *vbptr, int mo) +{ + __atomic_clear(ptr, mo); + __atomic_clear(bptr, mo); + __atomic_clear(vptr, mo); + __atomic_clear(vbptr, mo); +} + +/* + * check-name: builtin-atomic-clear + * + * check-error-start +builtin-atomic-clear.c:1:6: warning: symbol 'foo' was not declared. Should it be static? + * check-error-end + */ From patchwork Sat Oct 17 22:56:33 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: 11843079 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 BC64114B5 for ; Sat, 17 Oct 2020 22:56:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9E9B120878 for ; Sat, 17 Oct 2020 22:56:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OL5UfKfn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439830AbgJQW4w (ORCPT ); Sat, 17 Oct 2020 18:56:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2439827AbgJQW4w (ORCPT ); Sat, 17 Oct 2020 18:56:52 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AA81C061755 for ; Sat, 17 Oct 2020 15:56:51 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id dt13so8663982ejb.12 for ; Sat, 17 Oct 2020 15:56: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=2yUCLtFJm276K2BcMTUy4T8wv3RzmVN2aICSpyg0Vfo=; b=OL5UfKfnoQ7o3dhSO6g2p09dEACCmYmJFm3H/1anvYxHJKb+oPVeRTzyRcWHbq2Vbl BVI6lsat7/nXYq8vdZJBsvvFxA500uDgRp9+bA1w0tIpART4+uIBDV0CcLHe273XwGfY LKws6xviuD5xcK9nfZ4MgWRFRKzcZ8sf2oLao4gKbedfLKSJxfhXkHFtTjpXSJzfW0r5 s3gmYXSqorqGbK+9MHlWTOXkdRgJ37+i+c0GOYafhJteY8QUb8TKa0bGZrc+bg2q50f/ gT1yIrRjoPpDb7+eZqp2iZq6hKScoy115cn9FyLc4xrHb6QJrfxtMyiikMSK5X/TZC14 iMJg== 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=2yUCLtFJm276K2BcMTUy4T8wv3RzmVN2aICSpyg0Vfo=; b=JmZr31UpA1/UAxCIhIVihbQgjKPKn/un9rKRthy1mr0i+7sLieXemT+sQiVy8SnzG3 c5dhKPKdX4oJyT7VDYwv7ufI6pp0pY4ukaZpB8Awx1MXkeM+cJp0IZEY4X7jKH4E7ZlF NjECQ9+wbt+P64RIQ4cHIRZ0hbwOGfIQl8To0rxTjLKoaw7PM4b5Y3Q1/RzDTbsUFKu8 0Q+uGpK/aM6l4B2iov2pbMxLP/BECEOnXohRx0DzdLWOPsVVsZQxe0/l5VnglEVuedtE aBLdtUPs45+EdFAeYQGJHwufqAH+Sm5xV6ZhoNltrV6oU44HshKZRhXf/LTjRJjThtJ3 Aqng== X-Gm-Message-State: AOAM532vOIRbkQqLa2XTtk5j7Db5f8mElJFHAffQQwvrqrAvSk6uF0BF 4eoxM/DYwEAXK/JbPBXtDF7vQmmnh/c= X-Google-Smtp-Source: ABdhPJx5Zm/tKgtIsZjVQAdpHvbjlM7t0ZgfjBCixNrd4MUjoM0Gw6I+4EiX70k/wOL8jQbAsgm9VA== X-Received: by 2002:a17:906:34ce:: with SMTP id h14mr10186702ejb.325.1602975408950; Sat, 17 Oct 2020 15:56:48 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:c81f:df9c:7723:c5a1]) by smtp.gmail.com with ESMTPSA id k26sm6129311eji.22.2020.10.17.15.56.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 15:56:48 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 12/12] builtin: add support for remaining atomic builtins Date: Sun, 18 Oct 2020 00:56:33 +0200 Message-Id: <20201017225633.53274-13-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> References: <20201017225633.53274-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Nothing special for these ones, just plain functions with fixed types and arity. Signed-off-by: Luc Van Oostenryck --- builtin.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builtin.c b/builtin.c index 1c502597315f..bb0f11b9428b 100644 --- a/builtin.c +++ b/builtin.c @@ -482,6 +482,7 @@ static const struct builtin_fn builtins_common[] = { #define va_list_ctype &ptr_ctype #define vol_ptr &volatile_ptr_ctype { "__atomic_add_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_always_lock_free", &bool_ctype, 0, { size_t_ctype, vol_ptr }}, { "__atomic_and_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_clear", &void_ctype, 0, { &volatile_bool_ptr_ctype, &int_ctype }}, { "__atomic_compare_exchange", &bool_ctype, 0, { vol_ptr, &ptr_ctype, &ptr_ctype, &bool_ctype, &int_ctype, &int_ctype }, .op = &atomic_op }, @@ -494,13 +495,17 @@ static const struct builtin_fn builtins_common[] = { { "__atomic_fetch_or", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_sub", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_fetch_xor", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_is_lock_free", &bool_ctype, 0, { size_t_ctype, vol_ptr }}, { "__atomic_load", &void_ctype, 0, { vol_ptr, &ptr_ctype, &int_ctype }, .op = &atomic_op }, { "__atomic_load_n", NULL, 0, { vol_ptr, &int_ctype }, .op = &atomic_op }, { "__atomic_nand_fetch",NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_or_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_signal_fence", &void_ctype, 0, { &int_ctype }}, { "__atomic_store", &void_ctype, 0, { vol_ptr, &ptr_ctype, &int_ctype }, .op = &atomic_op }, { "__atomic_store_n", &void_ctype, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__atomic_sub_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, + { "__atomic_test_and_set", &bool_ctype, 0, { vol_ptr, &int_ctype }}, + { "__atomic_thread_fence", &void_ctype, 0, { &int_ctype }}, { "__atomic_xor_fetch", NULL, 0, { vol_ptr, &dyntype, &int_ctype }, .op = &atomic_op }, { "__builtin_choose_expr", NULL, 1, .op = &choose_op }, { "__builtin_constant_p", NULL, 1, .op = &constant_p_op },