Rollup merge of #129332 - cuviper:cstr-cast, r=compiler-errors

Avoid extra `cast()`s after `CStr::as_ptr()`

These used to be `&str` literals that did need a pointer cast, but that
became a no-op after switching to `c""` literals in #118566.
This commit is contained in:
Matthias Krüger 2024-08-21 18:15:04 +02:00 committed by GitHub
commit e961d6b204
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 26 additions and 27 deletions

View File

@ -149,7 +149,7 @@ fn create_wrapper_function(
} }
llvm::LLVMRustSetVisibility(callee, llvm::Visibility::Hidden); llvm::LLVMRustSetVisibility(callee, llvm::Visibility::Hidden);
let llbb = llvm::LLVMAppendBasicBlockInContext(llcx, llfn, c"entry".as_ptr().cast()); let llbb = llvm::LLVMAppendBasicBlockInContext(llcx, llfn, c"entry".as_ptr());
let llbuilder = llvm::LLVMCreateBuilderInContext(llcx); let llbuilder = llvm::LLVMCreateBuilderInContext(llcx);
llvm::LLVMPositionBuilderAtEnd(llbuilder, llbb); llvm::LLVMPositionBuilderAtEnd(llbuilder, llbb);

View File

@ -616,7 +616,7 @@ pub(crate) fn run_pass_manager(
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
module.module_llvm.llmod(), module.module_llvm.llmod(),
llvm::LLVMModFlagBehavior::Error, llvm::LLVMModFlagBehavior::Error,
c"LTOPostLink".as_ptr().cast(), c"LTOPostLink".as_ptr(),
1, 1,
); );
} }

View File

@ -1031,7 +1031,7 @@ unsafe fn embed_bitcode(
let llglobal = llvm::LLVMAddGlobal( let llglobal = llvm::LLVMAddGlobal(
llmod, llmod,
common::val_ty(llconst), common::val_ty(llconst),
c"rustc.embedded.module".as_ptr().cast(), c"rustc.embedded.module".as_ptr(),
); );
llvm::LLVMSetInitializer(llglobal, llconst); llvm::LLVMSetInitializer(llglobal, llconst);
@ -1044,7 +1044,7 @@ unsafe fn embed_bitcode(
let llglobal = llvm::LLVMAddGlobal( let llglobal = llvm::LLVMAddGlobal(
llmod, llmod,
common::val_ty(llconst), common::val_ty(llconst),
c"rustc.embedded.cmdline".as_ptr().cast(), c"rustc.embedded.cmdline".as_ptr(),
); );
llvm::LLVMSetInitializer(llglobal, llconst); llvm::LLVMSetInitializer(llglobal, llconst);
let section = if is_apple { let section = if is_apple {
@ -1054,7 +1054,7 @@ unsafe fn embed_bitcode(
} else { } else {
c".llvmcmd" c".llvmcmd"
}; };
llvm::LLVMSetSection(llglobal, section.as_ptr().cast()); llvm::LLVMSetSection(llglobal, section.as_ptr());
llvm::LLVMRustSetLinkage(llglobal, llvm::Linkage::PrivateLinkage); llvm::LLVMRustSetLinkage(llglobal, llvm::Linkage::PrivateLinkage);
} else { } else {
// We need custom section flags, so emit module-level inline assembly. // We need custom section flags, so emit module-level inline assembly.
@ -1107,7 +1107,7 @@ fn create_msvc_imps(
.collect::<Vec<_>>(); .collect::<Vec<_>>();
for (imp_name, val) in globals { for (imp_name, val) in globals {
let imp = llvm::LLVMAddGlobal(llmod, ptr_ty, imp_name.as_ptr().cast()); let imp = llvm::LLVMAddGlobal(llmod, ptr_ty, imp_name.as_ptr());
llvm::LLVMSetInitializer(imp, val); llvm::LLVMSetInitializer(imp, val);
llvm::LLVMRustSetLinkage(imp, llvm::Linkage::ExternalLinkage); llvm::LLVMRustSetLinkage(imp, llvm::Linkage::ExternalLinkage);
} }

View File

@ -525,7 +525,7 @@ impl<'ll> CodegenCx<'ll, '_> {
let val = llvm::LLVMMetadataAsValue(self.llcx, meta); let val = llvm::LLVMMetadataAsValue(self.llcx, meta);
llvm::LLVMAddNamedMetadataOperand( llvm::LLVMAddNamedMetadataOperand(
self.llmod, self.llmod,
c"wasm.custom_sections".as_ptr().cast(), c"wasm.custom_sections".as_ptr(),
val, val,
); );
} }

View File

@ -207,7 +207,7 @@ pub unsafe fn create_module<'ll>(
// If skipping the PLT is enabled, we need to add some module metadata // If skipping the PLT is enabled, we need to add some module metadata
// to ensure intrinsic calls don't use it. // to ensure intrinsic calls don't use it.
if !sess.needs_plt() { if !sess.needs_plt() {
let avoid_plt = c"RtLibUseGOT".as_ptr().cast(); let avoid_plt = c"RtLibUseGOT".as_ptr();
unsafe { unsafe {
llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Warning, avoid_plt, 1); llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Warning, avoid_plt, 1);
} }
@ -215,7 +215,7 @@ pub unsafe fn create_module<'ll>(
// Enable canonical jump tables if CFI is enabled. (See https://reviews.llvm.org/D65629.) // Enable canonical jump tables if CFI is enabled. (See https://reviews.llvm.org/D65629.)
if sess.is_sanitizer_cfi_canonical_jump_tables_enabled() && sess.is_sanitizer_cfi_enabled() { if sess.is_sanitizer_cfi_canonical_jump_tables_enabled() && sess.is_sanitizer_cfi_enabled() {
let canonical_jump_tables = c"CFI Canonical Jump Tables".as_ptr().cast(); let canonical_jump_tables = c"CFI Canonical Jump Tables".as_ptr();
unsafe { unsafe {
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
@ -228,7 +228,7 @@ pub unsafe fn create_module<'ll>(
// Enable LTO unit splitting if specified or if CFI is enabled. (See https://reviews.llvm.org/D53891.) // Enable LTO unit splitting if specified or if CFI is enabled. (See https://reviews.llvm.org/D53891.)
if sess.is_split_lto_unit_enabled() || sess.is_sanitizer_cfi_enabled() { if sess.is_split_lto_unit_enabled() || sess.is_sanitizer_cfi_enabled() {
let enable_split_lto_unit = c"EnableSplitLTOUnit".as_ptr().cast(); let enable_split_lto_unit = c"EnableSplitLTOUnit".as_ptr();
unsafe { unsafe {
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
@ -241,7 +241,7 @@ pub unsafe fn create_module<'ll>(
// Add "kcfi" module flag if KCFI is enabled. (See https://reviews.llvm.org/D119296.) // Add "kcfi" module flag if KCFI is enabled. (See https://reviews.llvm.org/D119296.)
if sess.is_sanitizer_kcfi_enabled() { if sess.is_sanitizer_kcfi_enabled() {
let kcfi = c"kcfi".as_ptr().cast(); let kcfi = c"kcfi".as_ptr();
unsafe { unsafe {
llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Override, kcfi, 1); llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Override, kcfi, 1);
} }
@ -280,26 +280,26 @@ pub unsafe fn create_module<'ll>(
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Min, llvm::LLVMModFlagBehavior::Min,
c"branch-target-enforcement".as_ptr().cast(), c"branch-target-enforcement".as_ptr(),
bti.into(), bti.into(),
); );
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Min, llvm::LLVMModFlagBehavior::Min,
c"sign-return-address".as_ptr().cast(), c"sign-return-address".as_ptr(),
pac_ret.is_some().into(), pac_ret.is_some().into(),
); );
let pac_opts = pac_ret.unwrap_or(PacRet { leaf: false, key: PAuthKey::A }); let pac_opts = pac_ret.unwrap_or(PacRet { leaf: false, key: PAuthKey::A });
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Min, llvm::LLVMModFlagBehavior::Min,
c"sign-return-address-all".as_ptr().cast(), c"sign-return-address-all".as_ptr(),
pac_opts.leaf.into(), pac_opts.leaf.into(),
); );
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Min, llvm::LLVMModFlagBehavior::Min,
c"sign-return-address-with-bkey".as_ptr().cast(), c"sign-return-address-with-bkey".as_ptr(),
u32::from(pac_opts.key == PAuthKey::B), u32::from(pac_opts.key == PAuthKey::B),
); );
} }
@ -317,7 +317,7 @@ pub unsafe fn create_module<'ll>(
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Override, llvm::LLVMModFlagBehavior::Override,
c"cf-protection-branch".as_ptr().cast(), c"cf-protection-branch".as_ptr(),
1, 1,
); );
} }
@ -327,7 +327,7 @@ pub unsafe fn create_module<'ll>(
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Override, llvm::LLVMModFlagBehavior::Override,
c"cf-protection-return".as_ptr().cast(), c"cf-protection-return".as_ptr(),
1, 1,
); );
} }
@ -338,7 +338,7 @@ pub unsafe fn create_module<'ll>(
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
llmod, llmod,
llvm::LLVMModFlagBehavior::Error, llvm::LLVMModFlagBehavior::Error,
c"Virtual Function Elim".as_ptr().cast(), c"Virtual Function Elim".as_ptr(),
1, 1,
); );
} }

View File

@ -34,8 +34,7 @@ pub fn get_or_insert_gdb_debug_scripts_section_global<'ll>(cx: &CodegenCx<'ll, '
let c_section_var_name = c"__rustc_debug_gdb_scripts_section__"; let c_section_var_name = c"__rustc_debug_gdb_scripts_section__";
let section_var_name = c_section_var_name.to_str().unwrap(); let section_var_name = c_section_var_name.to_str().unwrap();
let section_var = let section_var = unsafe { llvm::LLVMGetNamedGlobal(cx.llmod, c_section_var_name.as_ptr()) };
unsafe { llvm::LLVMGetNamedGlobal(cx.llmod, c_section_var_name.as_ptr().cast()) };
section_var.unwrap_or_else(|| { section_var.unwrap_or_else(|| {
let mut section_contents = Vec::new(); let mut section_contents = Vec::new();
@ -70,7 +69,7 @@ pub fn get_or_insert_gdb_debug_scripts_section_global<'ll>(cx: &CodegenCx<'ll, '
let section_var = cx let section_var = cx
.define_global(section_var_name, llvm_type) .define_global(section_var_name, llvm_type)
.unwrap_or_else(|| bug!("symbol `{}` is already defined", section_var_name)); .unwrap_or_else(|| bug!("symbol `{}` is already defined", section_var_name));
llvm::LLVMSetSection(section_var, c".debug_gdb_scripts".as_ptr().cast()); llvm::LLVMSetSection(section_var, c".debug_gdb_scripts".as_ptr());
llvm::LLVMSetInitializer(section_var, cx.const_bytes(section_contents)); llvm::LLVMSetInitializer(section_var, cx.const_bytes(section_contents));
llvm::LLVMSetGlobalConstant(section_var, llvm::True); llvm::LLVMSetGlobalConstant(section_var, llvm::True);
llvm::LLVMSetUnnamedAddress(section_var, llvm::UnnamedAddr::Global); llvm::LLVMSetUnnamedAddress(section_var, llvm::UnnamedAddr::Global);

View File

@ -952,7 +952,7 @@ pub fn build_compile_unit_di_node<'ll, 'tcx>(
producer.as_ptr().cast(), producer.as_ptr().cast(),
producer.len(), producer.len(),
tcx.sess.opts.optimize != config::OptLevel::No, tcx.sess.opts.optimize != config::OptLevel::No,
c"".as_ptr().cast(), c"".as_ptr(),
0, 0,
// NB: this doesn't actually have any perceptible effect, it seems. LLVM will instead // NB: this doesn't actually have any perceptible effect, it seems. LLVM will instead
// put the path supplied to `MCSplitDwarfFile` into the debug info of the final // put the path supplied to `MCSplitDwarfFile` into the debug info of the final

View File

@ -109,7 +109,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
self.llmod, self.llmod,
llvm::LLVMModFlagBehavior::Warning, llvm::LLVMModFlagBehavior::Warning,
c"Dwarf Version".as_ptr().cast(), c"Dwarf Version".as_ptr(),
dwarf_version, dwarf_version,
); );
} else { } else {
@ -117,7 +117,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
self.llmod, self.llmod,
llvm::LLVMModFlagBehavior::Warning, llvm::LLVMModFlagBehavior::Warning,
c"CodeView".as_ptr().cast(), c"CodeView".as_ptr(),
1, 1,
) )
} }
@ -126,7 +126,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
llvm::LLVMRustAddModuleFlagU32( llvm::LLVMRustAddModuleFlagU32(
self.llmod, self.llmod,
llvm::LLVMModFlagBehavior::Warning, llvm::LLVMModFlagBehavior::Warning,
c"Debug Info Version".as_ptr().cast(), c"Debug Info Version".as_ptr(),
llvm::LLVMRustDebugMetadataVersion(), llvm::LLVMRustDebugMetadataVersion(),
); );
} }

View File

@ -116,7 +116,7 @@ pub unsafe fn init(argc: isize, argv: *const *const u8, sigpipe: u8) {
if pfd.revents & libc::POLLNVAL == 0 { if pfd.revents & libc::POLLNVAL == 0 {
continue; continue;
} }
if open64(c"/dev/null".as_ptr().cast(), libc::O_RDWR, 0) == -1 { if open64(c"/dev/null".as_ptr(), libc::O_RDWR, 0) == -1 {
// If the stream is closed but we failed to reopen it, abort the // If the stream is closed but we failed to reopen it, abort the
// process. Otherwise we wouldn't preserve the safety of // process. Otherwise we wouldn't preserve the safety of
// operations on the corresponding Rust object Stdin, Stdout, or // operations on the corresponding Rust object Stdin, Stdout, or
@ -147,7 +147,7 @@ pub unsafe fn init(argc: isize, argv: *const *const u8, sigpipe: u8) {
use crate::sys::os::errno; use crate::sys::os::errno;
for fd in 0..3 { for fd in 0..3 {
if libc::fcntl(fd, libc::F_GETFD) == -1 && errno() == libc::EBADF { if libc::fcntl(fd, libc::F_GETFD) == -1 && errno() == libc::EBADF {
if open64(c"/dev/null".as_ptr().cast(), libc::O_RDWR, 0) == -1 { if open64(c"/dev/null".as_ptr(), libc::O_RDWR, 0) == -1 {
// If the stream is closed but we failed to reopen it, abort the // If the stream is closed but we failed to reopen it, abort the
// process. Otherwise we wouldn't preserve the safety of // process. Otherwise we wouldn't preserve the safety of
// operations on the corresponding Rust object Stdin, Stdout, or // operations on the corresponding Rust object Stdin, Stdout, or