From patchwork Thu Dec 21 16:59:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antoni Boucher X-Patchwork-Id: 1879283 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=zoho.com header.i=bouanto@zoho.com header.a=rsa-sha256 header.s=zm2022 header.b=IxdGxmnc; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SwxWR2rzZz1ydZ for ; Fri, 22 Dec 2023 04:00:19 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 97ACE385C6E5 for ; Thu, 21 Dec 2023 17:00:16 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from sender4-pp-o90.zoho.com (sender4-pp-o90.zoho.com [136.143.188.90]) by sourceware.org (Postfix) with ESMTPS id A01943858404; Thu, 21 Dec 2023 16:59:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A01943858404 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=zoho.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zoho.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A01943858404 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.188.90 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1703177997; cv=pass; b=h759inw2hmsdrKGVA1TqPuwtUAifgvGwVI343zClLxv0kQB2mgxipSHqk85nBPLQG+xBKoO4QToD8dT9kR/lBTj121o9JDb6UL/2PiJq1+OeJdEBvC0fu1076GY5KsNuoKJVHhfK86iY5ZDpFpIGQPMDjJxwTpa9eu8moPEVVv0= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1703177997; c=relaxed/simple; bh=km8cznKmwrgK/G5INvrCV67bpF7EwBpvcuMHVbGZDHE=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=FXX9arcVe1VEPWFow20aaubw5SXgFNoydqB5EbVD9ZjYAx8jk+vSnOdzdS0Zxt5L9SFI3zhLcCsmGj6zTuFyTpCMoFyTtr0J7H1VBLLGPYKeVJrvcPa3Iqlp+xVSKweGY1z4NIt/Nin36XULH9DLWO6cD8rMVfRKh9Bn3Sypmbs= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1703177987; cv=none; d=zohomail.com; s=zohoarc; b=ESJeZjd/w+zCL65qAAXklwtarVmk7SzOHuD/XAac5DRajRxZD+ZEQHlS0C8ToiirTKRP8NoM2ihWAZAkgBy28r1/Fv7CSO+CEbcoY12HKT7ukN9b4ogw2Y48dRE3VeXhaKSUP8wHSzSZR+SYP15luZWpAKLBwMc+ra5yjZuFZAM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1703177987; h=Content-Type:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=LPAvcQr1b4Cg+pq5+WP5Mrgh3T9/FxuQs5aYyWT9jtU=; b=Jlts465YGpbt6V1yJ0t5qjWfNBkSk18HjG0krMt0mKbryOvza7A6LKg7DI/4XfzpNgBXU4PSilfngGdT+RspXEYzgSFSZAtYaTM2pzTa/M+TCX4pNNP793HUC9ZQTHEbLQPHeR5S1S+DvhrSxPizEaccQwuvWLmQADhUBom1BHI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1703177987; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Subject:Subject:From:From:To:To:Cc:Cc:Date:Date:Content-Type:MIME-Version:Feedback-ID:Message-Id:Reply-To; bh=LPAvcQr1b4Cg+pq5+WP5Mrgh3T9/FxuQs5aYyWT9jtU=; b=IxdGxmnco4W9GGmUbPPleBVsobsjq1WAwoX+DtFYkKUmaOtyGZYYkXAuOi8GN0Hm GsC/IOjxTFYvkF2A092OHenYpMb+4cR0MjQ+nJ+FDtj5Az5K+N98ZQSjAlMnhiCrlH9 xjDThtXf0R0dbjMez+R7mfnsH80aYbjL+V1sTX/w= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1703177986742195.05910121211753; Thu, 21 Dec 2023 08:59:46 -0800 (PST) Message-ID: Subject: [PATCH] libgccjit: Allow sending a const pointer as argument From: Antoni Boucher To: "jit@gcc.gnu.org" , "gcc-patches@gcc.gnu.org" Cc: David Malcolm Date: Thu, 21 Dec 2023 11:59:45 -0500 Autocrypt: addr=bouanto@zoho.com; prefer-encrypt=mutual; keydata=mQENBFOSMLQBCADO5aw6Ys8thMQUNzrwAnfJX2wbgWiz0pQ01DjYj22eeIpChkoZn6LWdt4dieq30u2rFi/yQzJ02foHwI2+aL9rU6xz/x4TwqyRJQGMOqklNc3R+pdXmH4WDQkQDWmLxvc07vu+zb8Tx5A6pMDh4J2ncCEhLEUcH39Yq/yg4eBnFwUX6N7kakvHrnScGNqhnSFCacoJeMJUAR+1G7VBSBd++jmnHLnx3mj7QkRZVECJUw2zqiv1yReCC6GU4SvqLjdqm5ZGeoWOqD/NHjBRoEeOVjzp6M/qOjjWRbkJVqmvgfcD8UytSSqqboR35YFT4L+rZt2ri3T12MJb3i5syCAXABEBAAG0IUFudG9uaSBCb3VjaGVyIDxib3VhbnRvQHpvaG8uY29tPokBVgQTAQgAQAIbIwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QM4FCRLMEZoACgkQRVeGAwR4zcFBQQf/afttJrA/puADQZhrDfkgr0MFvq6iB+GCy1b8BkXimk1TOXTPt87YLehSeijNu3JkYhl5eRc87BNfU9J87KfI/KIy6hZxqlDXk16FhW9bw/7wYEA0hpb3MUn7xLElXDT0ZHaD+KTe8Oun7qfzgx5RlL6r/WODf3CkSpO085R/rfeBqDEx9mVlhDWgq6Az3CZoD+3CqiCKVqmDuHTWz4kwrd9AM5eVcLvvLKnZIdoIp+G5Ao6BvaGlZyfenN1iOSjLy2NXNt4MnUt0lUYEP5KSIIRhHQ8xkUbj7eWUmaahkxhNb3fH3sAPwGnRZrPpb4rgYzNmSk63wWMh9M2xk+rLb7kBDQRTkjC0AQgAumZzsAV/UFWI+dpzebQfma36kKYZZFuseant5sq/HWP553XQ/U6ttJiKyN5MpCqtxvCAoRplf42YhlHuFqgf73WJxoJ6Y+sdyqoBSwlR+ gzAneAmsa8gmmY0wawH0Z2leazjKuS7mJjVEQZg0ZGsiCVRGeRnDqFGzDEzDc9ngWKSoTq0fKzlGy1X85OrtmUrvEbhSo6HP+FoeunHkIqrxu3w3vDoFEXxVQlKI6V3I4nCz5n6DB8WR3L7nsiiTnOiGirPw1ngvWFLW86kkA4FJpayc8Xl3va3SLY+2y4yuROboX2DVI4AC/Qeug/mDiBicPxkP6YfUartQRMe6obkEQARAQABiQE8BBgBCAAmAhsMFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QRsFCRLMEecACgkQRVeGAwR4zcE56ggAgTgrJInBKC+7552Dpccuo6Clh3wZfjlNLv9/6r5lKEbaNzaTrfhPiAP4WgnluIUmj8amOFLFJpj+BAVNOXpZ4D2R3o9ch8z7fot+fW4Yw+PKIxH4I2xEys8ndoEB3aiQwHjKcGIhkIU7uyMJFQr2aWjdTY0gmXw0YZueHOSLgo7uX4XKxB8fEO/yto/Tff2YBAAq+AtNwt+Gh5YS9rZw7rwUTWMi84yVOlc+zRE79E9NJkvdTwX7IJYo64VzIRNfgHsn7QNdVzuM1XIFHl+Glk6cIlI8s6BO7nEoCn3hTF104fQTAO3fEs+XXZOKXo2lk8faowEoPq5r58StrV0nyg== User-Agent: Evolution 3.50.2 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/203.141.47 Feedback-ID: rr0801122841f846ff0643a0637f1ebbe400000015b142dfde9d293366421c448e00a5f3a8ab77da2502b56bce:zu0801122665453ec71ae80a2aacd45c840000242bd973ddd1274d27c66bb7a45f3da38a5039391eae4db5:rf080112322f3c35a220243698e15152f20000b0a681395ff5df4d1c1d72ff7cacef800c79df5860804d5d18f9af6829106096242fa916:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Hi. This patch adds the ability to send const pointer as argument to a function. Thanks for the review. From f53c4600d8103a5612e7de6cb8205cad37421074 Mon Sep 17 00:00:00 2001 From: Antoni Boucher Date: Tue, 24 May 2022 17:44:53 -0400 Subject: [PATCH] libgccjit: Allow sending a const pointer as argument gcc/jit/ChangeLog: * jit-recording.h: Remove memento_of_get_const::accepts_writes_from. gcc/testsuite/ChangeLog: * jit.dg/all-non-failing-tests.h: Add test-const-pointer-argument.c. * jit.dg/test-const-pointer-argument.c: New test. --- gcc/jit/jit-recording.h | 6 -- gcc/testsuite/jit.dg/all-non-failing-tests.h | 10 +++ .../jit.dg/test-const-pointer-argument.c | 76 +++++++++++++++++++ 3 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/jit.dg/test-const-pointer-argument.c diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h index 4a8082991fb..21aeb7d0bbd 100644 --- a/gcc/jit/jit-recording.h +++ b/gcc/jit/jit-recording.h @@ -720,12 +720,6 @@ public: memento_of_get_const (type *other_type) : decorated_type (other_type) {} - bool accepts_writes_from (type */*rtype*/) final override - { - /* Can't write to a "const". */ - return false; - } - /* Strip off the "const", giving the underlying type. */ type *unqualified () final override { return m_other_type; } diff --git a/gcc/testsuite/jit.dg/all-non-failing-tests.h b/gcc/testsuite/jit.dg/all-non-failing-tests.h index e762563f9bd..6ac9173ea7d 100644 --- a/gcc/testsuite/jit.dg/all-non-failing-tests.h +++ b/gcc/testsuite/jit.dg/all-non-failing-tests.h @@ -126,6 +126,13 @@ #undef create_code #undef verify_code +/* test-const-pointer-argument.c */ +#define create_code create_code_const_pointer_argument +#define verify_code verify_code_const_pointer_argument +#include "test-const-pointer-argument.c" +#undef create_code +#undef verify_code + /* test-debug-strings.c */ #define create_code create_code_debug_strings #define verify_code verify_code_debug_strings @@ -437,6 +444,9 @@ const struct testcase testcases[] = { {"constants", create_code_constants, verify_code_constants}, + {"const_pointer_argument", + create_code_const_pointer_argument, + verify_code_const_pointer_argument}, {"debug_strings", create_code_debug_strings, verify_code_debug_strings}, diff --git a/gcc/testsuite/jit.dg/test-const-pointer-argument.c b/gcc/testsuite/jit.dg/test-const-pointer-argument.c new file mode 100644 index 00000000000..836634f1dd0 --- /dev/null +++ b/gcc/testsuite/jit.dg/test-const-pointer-argument.c @@ -0,0 +1,76 @@ +#include +#include +#include +#include + +#include "libgccjit.h" + +#include "harness.h" + +void +create_code (gcc_jit_context *ctxt, void *user_data) +{ + /* Let's try to inject the equivalent of: + + int test_ptr(const int* value) + { + return *foo; + } + + int main (void) + { + int value = 10; + const int *ptr = &value; + int res = test_ptr (ptr); + return res; + } + */ + gcc_jit_type *int_type = + gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT); + gcc_jit_type *int_ptr_type = + gcc_jit_type_get_pointer (int_type); + gcc_jit_type *const_ptr_type = + gcc_jit_type_get_const (int_ptr_type); + + /* Build the test_ptr. */ + gcc_jit_param *param = + gcc_jit_context_new_param (ctxt, NULL, const_ptr_type, "value"); + gcc_jit_function *test_ptr = + gcc_jit_context_new_function (ctxt, NULL, + GCC_JIT_FUNCTION_EXPORTED, + int_type, + "test_ptr", + 1, ¶m, + 0); + gcc_jit_block *block = gcc_jit_function_new_block (test_ptr, NULL); + gcc_jit_block_end_with_return (block, + NULL, + gcc_jit_lvalue_as_rvalue ( + gcc_jit_rvalue_dereference (gcc_jit_param_as_rvalue (param), NULL))); + + /* Build main. */ + gcc_jit_function *main = + gcc_jit_context_new_function (ctxt, NULL, + GCC_JIT_FUNCTION_EXPORTED, + int_type, + "main", + 0, NULL, + 0); + gcc_jit_block *main_block = gcc_jit_function_new_block (main, NULL); + gcc_jit_lvalue *variable = + gcc_jit_function_new_local (main, NULL, int_type, "value"); + gcc_jit_lvalue *pointer = + gcc_jit_function_new_local (main, NULL, const_ptr_type, "ptr"); + gcc_jit_block_add_assignment (main_block, NULL, pointer, + gcc_jit_lvalue_get_address (variable, NULL)); + gcc_jit_rvalue *ptr_rvalue = gcc_jit_lvalue_as_rvalue (pointer); + gcc_jit_rvalue *res = + gcc_jit_context_new_call (ctxt, NULL, test_ptr, 1, &ptr_rvalue); + gcc_jit_block_end_with_return (main_block, NULL, res); +} + +void +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) +{ + CHECK_NON_NULL (result); +} -- 2.43.0