From: David Malcolm <dmalcolm@redhat.com>
To: "Marc Nieper-Wißkirchen" <marc.nieper+gnu@gmail.com>,
"Marc Nieper-Wißkirchen via Jit" <jit@gcc.gnu.org>
Subject: Re: C++ API: Vector arguments / error detection
Date: Mon, 31 Jan 2022 09:49:01 -0500 [thread overview]
Message-ID: <1e83575c7d369fa96844b551f8606922fc8e0627.camel@redhat.com> (raw)
In-Reply-To: <CAEYrNrQnB1rerguZNtpM0D=V7z6Q9JRAy4S=b3z2pSAe_3ejQg@mail.gmail.com>
On Sun, 2022-01-30 at 16:35 +0100, Marc Nieper-Wißkirchen via Jit
wrote:
> This is about two unrelated issues regarding the C++ API:
>
> (1) At the moment, a lot of API functions like new_function take non-
> const
> referenced to vectors, e.g. std::vector <param> ¶ms;
>
> Can we change this into const references? This way, one can write
>
> auto param1 = ctxt.new_param (...);
> auto param2 = ctxt.new_param (...);
> auto func = new_function (..., {param1, param2}, ...);
>
> instead of the more complicated and less convenient
>
> auto param1 = ...;
> auto param2 = ...;
> auto params = std::vector {param1, param2};
> auto func = new_function (..., params, ...);
I wonder why they're not const already - maybe I just forgot?
Making the refs const sounds like a good idea to me.
>
> (2) When using gccjit::context::compile_to_file, how can I check
> whether
> the compilation succeeded without errors or not? In libgccjit++.h no
> error
> is checked and no exception thrown.
Looks like I forgot to:
(a) give a return value to gcc_jit_context_compile_to_file, and
(b) add C++ bindings for gcc_jit_context_get_first_error and
gcc_jit_context_get_last_error.
Looks like fixing (a) would be an ABI break, bother (perhaps we could
add a revised gcc_jit_context_compile_to_file symbol and do it with
symbol versioning)
With those in place, it looks like either the client code needs to
check gcc::jit::context::get_last_error on failure, or, better, it
should probably change to look something like this (untested):
inline void
context::compile_to_file (enum gcc_jit_output_kind output_kind,
const char *output_path)
{
if (gcc_jit_context_compile_to_file (m_inner_ctxt,
output_kind,
output_path))
throw error (m_inner_ctxt);
}
where error's ctor should call gcc::jit::context::get_last_error on the
ctxt, or something similar to this.
Sorry about the C++ API being much less polished that the C API.
Dave
next prev parent reply other threads:[~2022-01-31 14:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-30 15:35 Marc Nieper-Wißkirchen
2022-01-31 14:49 ` David Malcolm [this message]
2022-01-31 15:08 ` Marc Nieper-Wißkirchen
2022-01-31 15:19 ` David Malcolm
2022-01-31 15:32 ` Marc Nieper-Wißkirchen
2022-01-31 15:39 ` Marc Nieper-Wißkirchen
2022-02-01 14:41 ` Marc Nieper-Wißkirchen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1e83575c7d369fa96844b551f8606922fc8e0627.camel@redhat.com \
--to=dmalcolm@redhat.com \
--cc=jit@gcc.gnu.org \
--cc=marc.nieper+gnu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).