diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-07-26 17:44:50 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:56:01 +0100 |
commit | 8db58652d87e3b3bd208aea8f3aad14427780f0a (patch) | |
tree | d20074b949a6819c8ac8805ce11a97bd508a9577 /libgrust | |
parent | ce09474789d6e6df1b2b921df84c27db80fe02ba (diff) | |
download | gcc-8db58652d87e3b3bd208aea8f3aad14427780f0a.zip gcc-8db58652d87e3b3bd208aea8f3aad14427780f0a.tar.gz gcc-8db58652d87e3b3bd208aea8f3aad14427780f0a.tar.bz2 |
gccrs: proc_macro: Remode function indirection
There was no need to register a function when the value could be
registered directly.
gcc/rust/ChangeLog:
* expand/rust-proc-macro.cc (available): Remove function.
(load_macros_array): There was no need for an indirection here.
libgrust/ChangeLog:
* libproc_macro/proc_macro.cc (not_available): Remove
function.
* libproc_macro/proc_macro.h (not_available): Remove
function prototype.
* libproc_macro/registration.h: Change symbol type.
* libproc_macro/bridge.h: New file.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'libgrust')
-rw-r--r-- | libgrust/libproc_macro/bridge.h | 35 | ||||
-rw-r--r-- | libgrust/libproc_macro/proc_macro.cc | 14 | ||||
-rw-r--r-- | libgrust/libproc_macro/proc_macro.h | 3 | ||||
-rw-r--r-- | libgrust/libproc_macro/registration.h | 6 |
4 files changed, 43 insertions, 15 deletions
diff --git a/libgrust/libproc_macro/bridge.h b/libgrust/libproc_macro/bridge.h new file mode 100644 index 0000000..47eedff --- /dev/null +++ b/libgrust/libproc_macro/bridge.h @@ -0,0 +1,35 @@ +// Copyright (C) 2023 Free Software Foundation, Inc. +// +// This file is part of the GNU Proc Macro Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. +#ifndef BRIDGE_H +#define BRIDGE_H + +namespace ProcMacro { + +enum class BridgeState +{ + Available, + Unavailable, +}; + +} + +#endif /* ! BRIDGE_H */ diff --git a/libgrust/libproc_macro/proc_macro.cc b/libgrust/libproc_macro/proc_macro.cc index e05ec53..b1e108e 100644 --- a/libgrust/libproc_macro/proc_macro.cc +++ b/libgrust/libproc_macro/proc_macro.cc @@ -21,6 +21,7 @@ // <http://www.gnu.org/licenses/>. #include "proc_macro.h" +#include "bridge.h" namespace ProcMacro { @@ -52,17 +53,12 @@ Procmacro::make_bang (const char *name, BangMacro macro) extern "C" bool bridge_is_available () { - return __gccrs_proc_macro_is_available_fn (); -} - -bool -not_available () -{ - return false; + return __gccrs_proc_macro_is_available_fn + == ProcMacro::BridgeState::Available; } } // namespace ProcMacro ProcMacro::from_str_function_t __gccrs_proc_macro_from_str_fn = nullptr; -ProcMacro::is_available_function_t __gccrs_proc_macro_is_available_fn - = ProcMacro::not_available; +ProcMacro::is_available_t __gccrs_proc_macro_is_available_fn + = ProcMacro::BridgeState::Unavailable; diff --git a/libgrust/libproc_macro/proc_macro.h b/libgrust/libproc_macro/proc_macro.h index 077e1cb..60d9fcb 100644 --- a/libgrust/libproc_macro/proc_macro.h +++ b/libgrust/libproc_macro/proc_macro.h @@ -99,9 +99,6 @@ struct ProcmacroArray Procmacro *macros; }; -bool -not_available (); - extern "C" bool bridge_is_available (); diff --git a/libgrust/libproc_macro/registration.h b/libgrust/libproc_macro/registration.h index 7668863..0074e99 100644 --- a/libgrust/libproc_macro/registration.h +++ b/libgrust/libproc_macro/registration.h @@ -25,16 +25,16 @@ #include <string> #include "tokenstream.h" +#include "bridge.h" namespace ProcMacro { using from_str_function_t = ProcMacro::TokenStream (*) (std::string &, bool &); -using is_available_function_t = bool (*) (); +using is_available_t = ProcMacro::BridgeState; } // namespace ProcMacro extern "C" ProcMacro::from_str_function_t __gccrs_proc_macro_from_str_fn; -extern "C" ProcMacro::is_available_function_t - __gccrs_proc_macro_is_available_fn; +extern "C" ProcMacro::is_available_t __gccrs_proc_macro_is_available_fn; #endif /* !REGISTRATION_H */ |