mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Add missing module flags for function-return=thunk-extern
This commit is contained in:
parent
2933f68abe
commit
540e41f8b3
@ -19,7 +19,7 @@ use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
|
|||||||
use rustc_middle::{bug, span_bug};
|
use rustc_middle::{bug, span_bug};
|
||||||
use rustc_session::Session;
|
use rustc_session::Session;
|
||||||
use rustc_session::config::{
|
use rustc_session::config::{
|
||||||
BranchProtection, CFGuard, CFProtection, CrateType, DebugInfo, PAuthKey, PacRet,
|
BranchProtection, CFGuard, CFProtection, CrateType, DebugInfo, FunctionReturn, PAuthKey, PacRet,
|
||||||
};
|
};
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
@ -378,6 +378,18 @@ pub(crate) unsafe fn create_module<'ll>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
match sess.opts.unstable_opts.function_return {
|
||||||
|
FunctionReturn::Keep => {}
|
||||||
|
FunctionReturn::ThunkExtern => unsafe {
|
||||||
|
llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Override,
|
||||||
|
c"function_return_thunk_extern".as_ptr(),
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
match (sess.opts.unstable_opts.small_data_threshold, sess.target.small_data_threshold_support())
|
match (sess.opts.unstable_opts.small_data_threshold, sess.target.small_data_threshold_support())
|
||||||
{
|
{
|
||||||
// Set up the small-data optimization limit for architectures that use
|
// Set up the small-data optimization limit for architectures that use
|
||||||
|
@ -26,3 +26,9 @@ pub fn foo() {
|
|||||||
// keep-thunk-extern: attributes #0 = { {{.*}}fn_ret_thunk_extern{{.*}} }
|
// keep-thunk-extern: attributes #0 = { {{.*}}fn_ret_thunk_extern{{.*}} }
|
||||||
// thunk-extern-keep-NOT: fn_ret_thunk_extern
|
// thunk-extern-keep-NOT: fn_ret_thunk_extern
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unset-NOT: !{{[0-9]+}} = !{i32 4, !"function_return_thunk_extern", i32 1}
|
||||||
|
// keep-NOT: !{{[0-9]+}} = !{i32 4, !"function_return_thunk_extern", i32 1}
|
||||||
|
// thunk-extern: !{{[0-9]+}} = !{i32 4, !"function_return_thunk_extern", i32 1}
|
||||||
|
// keep-thunk-extern: !{{[0-9]+}} = !{i32 4, !"function_return_thunk_extern", i32 1}
|
||||||
|
// thunk-extern-keep-NOT: !{{[0-9]+}} = !{i32 4, !"function_return_thunk_extern", i32 1}
|
||||||
|
Loading…
Reference in New Issue
Block a user