aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/rust/backend/rust-compile-base.cc8
-rw-r--r--gcc/rust/backend/rust-compile-base.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/gcc/rust/backend/rust-compile-base.cc b/gcc/rust/backend/rust-compile-base.cc
index b969b7a..49f31fc 100644
--- a/gcc/rust/backend/rust-compile-base.cc
+++ b/gcc/rust/backend/rust-compile-base.cc
@@ -38,14 +38,14 @@ bool inline should_mangle_item (const tree fndecl)
void
HIRCompileBase::setup_fndecl (tree fndecl, bool is_main_entry_point,
- HIR::Visibility &visibility,
+ bool is_generic_fn, HIR::Visibility &visibility,
const HIR::FunctionQualifiers &qualifiers,
const AST::AttrVec &attrs)
{
// if its the main fn or pub visibility mark its as DECL_PUBLIC
// please see https://github.com/Rust-GCC/gccrs/pull/137
bool is_pub = visibility.get_vis_type () == HIR::Visibility::VisType::PUBLIC;
- if (is_main_entry_point || is_pub)
+ if (is_main_entry_point || (is_pub && !is_generic_fn))
{
TREE_PUBLIC (fndecl) = 1;
}
@@ -427,7 +427,9 @@ HIRCompileBase::compile_function (
unsigned int flags = 0;
tree fndecl = ctx->get_backend ()->function (compiled_fn_type, ir_symbol_name,
"" /* asm_name */, flags, locus);
- setup_fndecl (fndecl, is_main_fn, visibility, qualifiers, outer_attrs);
+
+ setup_fndecl (fndecl, is_main_fn, fntype->has_subsititions_defined (),
+ visibility, qualifiers, outer_attrs);
setup_abi_options (fndecl, fntype->get_abi ());
// conditionally mangle the function name
diff --git a/gcc/rust/backend/rust-compile-base.h b/gcc/rust/backend/rust-compile-base.h
index c09c562..f12913c 100644
--- a/gcc/rust/backend/rust-compile-base.h
+++ b/gcc/rust/backend/rust-compile-base.h
@@ -76,7 +76,7 @@ protected:
tree expression, Location locus);
static void setup_fndecl (tree fndecl, bool is_main_entry_point,
- HIR::Visibility &visibility,
+ bool is_generic_fn, HIR::Visibility &visibility,
const HIR::FunctionQualifiers &qualifiers,
const AST::AttrVec &attrs);