rust: Add skeleton support and documentation for targetrustm hooks.
gcc/ChangeLog: * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H, RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables. (tm_rust.h, cs-tm_rust.h, default-rust.o, rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules. (s-tm-texi): Also check timestamp on rust-target.def. (generated_files): Add TM_RUST_H and rust-target-hooks-def.h. (build/genhooks.o): Also depend on RUST_TARGET_DEF. * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm): New variables. * configure: Regenerate. * configure.ac (tm_rust_file_list, tm_rust_include_list, rust_target_objs): Add substitutes. * doc/tm.texi: Regenerate. * doc/tm.texi.in (targetrustm): Document. (target_has_targetrustm): Document. * genhooks.cc: Include rust/rust-target.def. * config/default-rust.cc: New file. gcc/rust/ChangeLog: * rust-target-def.h: New file. * rust-target.def: New file. * rust-target.h: New file.
This commit is contained in:
parent
9b5b2c9f95
commit
b1c06fd972
11 changed files with 220 additions and 3 deletions
|
@ -600,6 +600,8 @@ tm_p_file_list=@tm_p_file_list@
|
|||
tm_p_include_list=@tm_p_include_list@
|
||||
tm_d_file_list=@tm_d_file_list@
|
||||
tm_d_include_list=@tm_d_include_list@
|
||||
tm_rust_file_list=@tm_rust_file_list@
|
||||
tm_rust_include_list=@tm_rust_include_list@
|
||||
build_xm_file_list=@build_xm_file_list@
|
||||
build_xm_include_list=@build_xm_include_list@
|
||||
build_xm_defines=@build_xm_defines@
|
||||
|
@ -898,6 +900,7 @@ TCONFIG_H = tconfig.h $(xm_file_list)
|
|||
# Some $(target)-protos.h depends on tree.h
|
||||
TM_P_H = tm_p.h $(tm_p_file_list) $(TREE_H)
|
||||
TM_D_H = tm_d.h $(tm_d_file_list)
|
||||
TM_RUST_H = tm_rust.h $(tm_rust_file_list)
|
||||
GTM_H = tm.h $(tm_file_list) insn-constants.h
|
||||
TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H)
|
||||
|
||||
|
@ -956,10 +959,12 @@ TARGET_DEF = target.def target-hooks-macros.h target-insns.def
|
|||
C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h
|
||||
COMMON_TARGET_DEF = common/common-target.def target-hooks-macros.h
|
||||
D_TARGET_DEF = d/d-target.def target-hooks-macros.h
|
||||
RUST_TARGET_DEF = rust/rust-target.def target-hooks-macros.h
|
||||
TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h
|
||||
C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF)
|
||||
COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF)
|
||||
D_TARGET_H = d/d-target.h $(D_TARGET_DEF)
|
||||
RUST_TARGET_H = rust/rust-target.h $(RUST_TARGET_DEF)
|
||||
MACHMODE_H = machmode.h mode-classes.def
|
||||
HOOKS_H = hooks.h
|
||||
HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H)
|
||||
|
@ -1268,6 +1273,9 @@ D_TARGET_OBJS=@d_target_objs@
|
|||
# Target specific, Fortran specific object file
|
||||
FORTRAN_TARGET_OBJS=@fortran_target_objs@
|
||||
|
||||
# Target specific, Rust specific object file
|
||||
RUST_TARGET_OBJS=@rust_target_objs@
|
||||
|
||||
# Object files for gcc many-languages driver.
|
||||
GCC_OBJS = gcc.o gcc-main.o ggc-none.o
|
||||
|
||||
|
@ -1999,6 +2007,7 @@ tconfig.h: cs-tconfig.h ; @true
|
|||
tm.h: cs-tm.h ; @true
|
||||
tm_p.h: cs-tm_p.h ; @true
|
||||
tm_d.h: cs-tm_d.h ; @true
|
||||
tm_rust.h: cs-tm_rust.h ; @true
|
||||
|
||||
cs-config.h: Makefile
|
||||
TARGET_CPU_DEFAULT="" \
|
||||
|
@ -2030,6 +2039,11 @@ cs-tm_d.h: Makefile
|
|||
HEADERS="$(tm_d_include_list)" DEFINES="" \
|
||||
$(SHELL) $(srcdir)/mkconfig.sh tm_d.h
|
||||
|
||||
cs-tm_rust.h: Makefile
|
||||
TARGET_CPU_DEFAULT="" \
|
||||
HEADERS="$(tm_rust_include_list)" DEFINES="" \
|
||||
$(SHELL) $(srcdir)/mkconfig.sh tm_rust.h
|
||||
|
||||
# Don't automatically run autoconf, since configure.ac might be accidentally
|
||||
# newer than configure. Also, this writes into the source directory which
|
||||
# might be on a read-only file system. If configured for maintainer mode
|
||||
|
@ -2366,6 +2380,12 @@ default-d.o: config/default-d.cc
|
|||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
||||
# Files used by the Rust language front end.
|
||||
|
||||
default-rust.o: config/default-rust.cc
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
||||
# Language-independent files.
|
||||
|
||||
DRIVER_DEFINES = \
|
||||
|
@ -2672,6 +2692,15 @@ s-d-target-hooks-def-h: build/genhooks$(build_exeext)
|
|||
d/d-target-hooks-def.h
|
||||
$(STAMP) s-d-target-hooks-def-h
|
||||
|
||||
rust/rust-target-hooks-def.h: s-rust-target-hooks-def-h; @true
|
||||
|
||||
s-rust-target-hooks-def-h: build/genhooks$(build_exeext)
|
||||
$(RUN_GEN) build/genhooks$(build_exeext) "Rust Target Hook" \
|
||||
> tmp-rust-target-hooks-def.h
|
||||
$(SHELL) $(srcdir)/../move-if-change tmp-rust-target-hooks-def.h \
|
||||
rust/rust-target-hooks-def.h
|
||||
$(STAMP) s-rust-target-hooks-def-h
|
||||
|
||||
# check if someone mistakenly only changed tm.texi.
|
||||
# We use a different pathname here to avoid a circular dependency.
|
||||
s-tm-texi: $(srcdir)/doc/../doc/tm.texi
|
||||
|
@ -2696,6 +2725,7 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in
|
|||
|| test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \
|
||||
|| test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \
|
||||
|| test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \
|
||||
|| test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \
|
||||
); then \
|
||||
echo >&2 ; \
|
||||
echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \
|
||||
|
@ -2872,6 +2902,7 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \
|
|||
$(GIMPLE_MATCH_PD_SEQ_SRC) $(GENERIC_MATCH_PD_SEQ_SRC) \
|
||||
gimple-match-auto.h generic-match-auto.h \
|
||||
c-family/c-target-hooks-def.h d/d-target-hooks-def.h \
|
||||
$(TM_RUST_H) rust/rust-target-hooks-def.h \
|
||||
case-cfn-macros.h \
|
||||
cfn-operators.pd omp-device-properties.h
|
||||
|
||||
|
@ -3006,7 +3037,8 @@ build/genrecog.o : genrecog.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
|
|||
$(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \
|
||||
$(HASH_TABLE_H) inchash.h
|
||||
build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \
|
||||
$(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
|
||||
$(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) $(BCONFIG_H) \
|
||||
$(SYSTEM_H) errors.h
|
||||
build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
|
||||
$(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
|
||||
build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \
|
||||
|
|
|
@ -90,6 +90,9 @@
|
|||
# tm_d_file A list of headers with definitions of target hook
|
||||
# macros for the D compiler.
|
||||
#
|
||||
# tm_rust_file list of headers with definitions of target hook
|
||||
# macros for the Rust compiler.
|
||||
#
|
||||
# out_file The name of the machine description C support
|
||||
# file, if different from "$cpu_type/$cpu_type.c".
|
||||
#
|
||||
|
@ -149,6 +152,9 @@
|
|||
# fortran_target_objs List of extra target-dependent objects that be
|
||||
# linked into the fortran compiler only.
|
||||
#
|
||||
# rust_target_objs List of extra target-dependent objects that be
|
||||
# linked into the Rust compiler only.
|
||||
#
|
||||
# target_gtfiles List of extra source files with type information.
|
||||
#
|
||||
# xm_defines List of macros to define when compiling for the
|
||||
|
@ -201,6 +207,9 @@
|
|||
#
|
||||
# target_has_targetdm Set to yes or no depending on whether the target
|
||||
# has its own definition of targetdm.
|
||||
#
|
||||
# target_has_targetrustm Set to yes or no depending on whether the target
|
||||
# has its own definition of targetrustm.
|
||||
|
||||
out_file=
|
||||
common_out_file=
|
||||
|
@ -218,9 +227,11 @@ c_target_objs=
|
|||
cxx_target_objs=
|
||||
d_target_objs=
|
||||
fortran_target_objs=
|
||||
rust_target_objs=
|
||||
target_has_targetcm=no
|
||||
target_has_targetm_common=yes
|
||||
target_has_targetdm=no
|
||||
target_has_targetrustm=no
|
||||
tm_defines=
|
||||
xm_defines=
|
||||
# Set this to force installation and use of collect2.
|
||||
|
@ -591,6 +602,16 @@ then
|
|||
tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
|
||||
fi
|
||||
|
||||
tm_rust_file=
|
||||
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
|
||||
then
|
||||
tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
|
||||
fi
|
||||
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
|
||||
then
|
||||
rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
|
||||
fi
|
||||
|
||||
extra_modes=
|
||||
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
|
||||
then
|
||||
|
@ -3607,6 +3628,10 @@ if [ "$target_has_targetdm" = "no" ]; then
|
|||
d_target_objs="$d_target_objs default-d.o"
|
||||
fi
|
||||
|
||||
if [ "$target_has_targetrustm" = "no" ]; then
|
||||
rust_target_objs="$rust_target_objs default-rust.o"
|
||||
fi
|
||||
|
||||
# Support for --with-cpu and related options (and a few unrelated options,
|
||||
# too).
|
||||
case ${with_cpu} in
|
||||
|
|
29
gcc/config/default-rust.cc
Normal file
29
gcc/config/default-rust.cc
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* Default Rust language target hooks initializer.
|
||||
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
|
||||
GCC 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.
|
||||
|
||||
GCC 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "tm_rust.h"
|
||||
#include "rust/rust-target.h"
|
||||
#include "rust/rust-target-def.h"
|
||||
|
||||
/* Do not include tm.h or tm_p.h here; definitions needed by the target
|
||||
architecture to initialize targetrustm should instead be added to tm_rust.h.
|
||||
*/
|
||||
|
||||
struct gcc_targetrustm targetrustm = TARGETRUSTM_INITIALIZER;
|
21
gcc/configure
vendored
21
gcc/configure
vendored
|
@ -645,6 +645,7 @@ ISLLIBS
|
|||
GMPINC
|
||||
GMPLIBS
|
||||
target_cpu_default
|
||||
rust_target_objs
|
||||
d_target_objs
|
||||
fortran_target_objs
|
||||
cxx_target_objs
|
||||
|
@ -653,6 +654,8 @@ use_gcc_stdint
|
|||
xm_defines
|
||||
xm_include_list
|
||||
xm_file_list
|
||||
tm_rust_include_list
|
||||
tm_rust_file_list
|
||||
tm_d_include_list
|
||||
tm_d_file_list
|
||||
tm_p_include_list
|
||||
|
@ -13585,6 +13588,17 @@ for f in $tm_d_file; do
|
|||
esac
|
||||
done
|
||||
|
||||
tm_rust_file_list=
|
||||
tm_rust_include_list=
|
||||
for f in $tm_rust_file; do
|
||||
case $f in
|
||||
* )
|
||||
tm_rust_file_list="${tm_rust_file_list} \$(srcdir)/config/$f"
|
||||
tm_rust_include_list="${tm_rust_include_list} config/$f"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
xm_file_list=
|
||||
xm_include_list=
|
||||
for f in $xm_file; do
|
||||
|
@ -19909,7 +19923,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 19912 "configure"
|
||||
#line 19926 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -20015,7 +20029,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 20018 "configure"
|
||||
#line 20032 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -31997,6 +32011,9 @@ fi
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2427,6 +2427,17 @@ for f in $tm_d_file; do
|
|||
esac
|
||||
done
|
||||
|
||||
tm_rust_file_list=
|
||||
tm_rust_include_list=
|
||||
for f in $tm_rust_file; do
|
||||
case $f in
|
||||
* )
|
||||
tm_rust_file_list="${tm_rust_file_list} \$(srcdir)/config/$f"
|
||||
tm_rust_include_list="${tm_rust_include_list} config/$f"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
xm_file_list=
|
||||
xm_include_list=
|
||||
for f in $xm_file; do
|
||||
|
@ -7422,6 +7433,8 @@ AC_SUBST(tm_p_file_list)
|
|||
AC_SUBST(tm_p_include_list)
|
||||
AC_SUBST(tm_d_file_list)
|
||||
AC_SUBST(tm_d_include_list)
|
||||
AC_SUBST(tm_rust_file_list)
|
||||
AC_SUBST(tm_rust_include_list)
|
||||
AC_SUBST(xm_file_list)
|
||||
AC_SUBST(xm_include_list)
|
||||
AC_SUBST(xm_defines)
|
||||
|
@ -7430,6 +7443,7 @@ AC_SUBST(c_target_objs)
|
|||
AC_SUBST(cxx_target_objs)
|
||||
AC_SUBST(fortran_target_objs)
|
||||
AC_SUBST(d_target_objs)
|
||||
AC_SUBST(rust_target_objs)
|
||||
AC_SUBST(target_cpu_default)
|
||||
|
||||
AC_SUBST_FILE(language_hooks)
|
||||
|
|
|
@ -115,6 +115,14 @@ initialize @code{targetdm} themselves, they should set
|
|||
@code{target_has_targetdm=yes} in @file{config.gcc}; otherwise a default
|
||||
definition is used.
|
||||
|
||||
Similarly, there is a @code{targetrustm} variable for hooks that are
|
||||
specific to the Rust language front end, documented as ``Rust Target
|
||||
Hook''. This is declared in @file{rust/rust-target.h}, the initializer
|
||||
@code{TARGETRUSTM_INITIALIZER} in @file{rust/rust-target-def.h}.
|
||||
If targets initialize @code{targetrustm} themselves, they should set
|
||||
@code{target_has_targetrustm=yes} in @file{config.gcc}; otherwise a
|
||||
default definition is used.
|
||||
|
||||
@node Driver
|
||||
@section Controlling the Compilation Driver, @file{gcc}
|
||||
@cindex driver
|
||||
|
|
|
@ -115,6 +115,14 @@ initialize @code{targetdm} themselves, they should set
|
|||
@code{target_has_targetdm=yes} in @file{config.gcc}; otherwise a default
|
||||
definition is used.
|
||||
|
||||
Similarly, there is a @code{targetrustm} variable for hooks that are
|
||||
specific to the Rust language front end, documented as ``Rust Target
|
||||
Hook''. This is declared in @file{rust/rust-target.h}, the initializer
|
||||
@code{TARGETRUSTM_INITIALIZER} in @file{rust/rust-target-def.h}.
|
||||
If targets initialize @code{targetrustm} themselves, they should set
|
||||
@code{target_has_targetrustm=yes} in @file{config.gcc}; otherwise a
|
||||
default definition is used.
|
||||
|
||||
@node Driver
|
||||
@section Controlling the Compilation Driver, @file{gcc}
|
||||
@cindex driver
|
||||
|
|
|
@ -35,6 +35,7 @@ static struct hook_desc hook_array[] = {
|
|||
#include "c-family/c-target.def"
|
||||
#include "common/common-target.def"
|
||||
#include "d/d-target.def"
|
||||
#include "rust/rust-target.def"
|
||||
#undef DEFHOOK
|
||||
};
|
||||
|
||||
|
|
20
gcc/rust/rust-target-def.h
Normal file
20
gcc/rust/rust-target-def.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/* Default initializers for Rust target hooks.
|
||||
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 program 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "rust/rust-target-hooks-def.h"
|
||||
#include "tree.h"
|
||||
#include "hooks.h"
|
32
gcc/rust/rust-target.def
Normal file
32
gcc/rust/rust-target.def
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* Target hook definitions for the Rust front end.
|
||||
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 program 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* See target-hooks-macros.h for details of macros that should be
|
||||
provided by the including file, and how to use them here. */
|
||||
|
||||
#include "target-hooks-macros.h"
|
||||
|
||||
#undef HOOK_TYPE
|
||||
#define HOOK_TYPE "Rust Target Hook"
|
||||
|
||||
HOOK_VECTOR (TARGETRUSTM_INITIALIZER, gcc_targetrustm)
|
||||
|
||||
#undef HOOK_PREFIX
|
||||
#define HOOK_PREFIX "TARGET_"
|
||||
|
||||
/* Close the 'struct gcc_targetrustm' definition. */
|
||||
HOOK_VECTOR_END (C90_EMPTY_HACK)
|
31
gcc/rust/rust-target.h
Normal file
31
gcc/rust/rust-target.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* Data structure definitions for target-specific Rust behavior.
|
||||
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 program 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_RUST_TARGET_H
|
||||
#define GCC_RUST_TARGET_H
|
||||
|
||||
#define DEFHOOKPOD(NAME, DOC, TYPE, INIT) TYPE NAME;
|
||||
#define DEFHOOK(NAME, DOC, TYPE, PARAMS, INIT) TYPE (*NAME) PARAMS;
|
||||
#define DEFHOOK_UNDOC DEFHOOK
|
||||
#define HOOKSTRUCT(FRAGMENT) FRAGMENT
|
||||
|
||||
#include "rust-target.def"
|
||||
|
||||
/* Each target can provide their own. */
|
||||
extern struct gcc_targetrustm targetrustm;
|
||||
|
||||
#endif /* GCC_RUST_TARGET_H */
|
Loading…
Add table
Reference in a new issue