rust/compiler
bors 5dcb678ad8 Auto merge of #122917 - saethlin:atomicptr-to-int, r=nikic
Add the missing inttoptr when we ptrtoint in ptr atomics

Ralf noticed this here: https://github.com/rust-lang/rust/pull/122220#discussion_r1535172094

Our previous codegen forgot to add the cast back to integer type. The code compiles anyway, because of course all locals are in-memory to start with, so previous codegen would do the integer atomic, store the integer to a local, then load a pointer from that local. Which is definitely _not_ what we wanted: That's an integer-to-pointer transmute, so all pointers returned by these `AtomicPtr` methods didn't have provenance. Yikes.

Here's the IR for `AtomicPtr::fetch_byte_add` on 1.76: https://godbolt.org/z/8qTEjeraY
```llvm
define noundef ptr `@atomicptr_fetch_byte_add(ptr` noundef nonnull align 8 %a, i64 noundef %v) unnamed_addr #0 !dbg !7 {
start:
  %0 = alloca ptr, align 8, !dbg !12
  %val = inttoptr i64 %v to ptr, !dbg !12
  call void `@llvm.lifetime.start.p0(i64` 8, ptr %0), !dbg !28
  %1 = ptrtoint ptr %val to i64, !dbg !28
  %2 = atomicrmw add ptr %a, i64 %1 monotonic, align 8, !dbg !28
  store i64 %2, ptr %0, align 8, !dbg !28
  %self = load ptr, ptr %0, align 8, !dbg !28
  call void `@llvm.lifetime.end.p0(i64` 8, ptr %0), !dbg !28
  ret ptr %self, !dbg !33
}
```

r? `@RalfJung`
cc `@nikic`
2024-04-15 08:07:47 +00:00
..
rustc
rustc_abi Use the Align type when parsing alignment attributes 2024-04-01 03:05:55 +01:00
rustc_arena rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
rustc_ast Deduplicate is_comparison impl between BinOpKind and AssocOp 2024-04-11 07:36:34 +00:00
rustc_ast_ir introduce Mutability::ptr_str 2024-04-10 18:51:09 +02:00
rustc_ast_lowering Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_ast_passes Rollup merge of #123841 - Kohei316:remove_qualifier_sugg, r=wesleywiser 2024-04-12 17:41:35 +02:00
rustc_ast_pretty Add pattern types to ast 2024-04-08 11:54:22 +00:00
rustc_attr Use the Align type when parsing alignment attributes 2024-04-01 03:05:55 +01:00
rustc_baked_icu_data
rustc_borrowck Auto merge of #122603 - estebank:clone-o-rama, r=lcnr 2024-04-13 09:07:26 +00:00
rustc_builtin_macros Rollup merge of #123204 - notriddle:notriddle/include-str-span, r=pnkfelix 2024-04-12 17:41:32 +02:00
rustc_codegen_cranelift Merge commit '89f54caacf90e99fc8ba0d60a28bdadea3cfdf1e' into sync_cg_clif-2024-04-11 2024-04-11 10:42:48 +00:00
rustc_codegen_gcc Put PlaceValue into OperandValue::Ref, rather than 3 tuple fields 2024-04-11 00:10:10 -07:00
rustc_codegen_llvm Auto merge of #122917 - saethlin:atomicptr-to-int, r=nikic 2024-04-15 08:07:47 +00:00
rustc_codegen_ssa Auto merge of #123854 - petrochenkov:searchdirs2, r=lqd 2024-04-13 13:12:56 +00:00
rustc_const_eval Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_data_structures Auto merge of #123175 - Nilstrieb:debug-strict-overflow, r=wesleywiser 2024-04-13 17:18:42 +00:00
rustc_driver
rustc_driver_impl Disable Ctrl-C handling on WASM 2024-04-11 12:35:47 +00:00
rustc_error_codes Update compiler/rustc_error_codes/src/error_codes/E0384.md 2024-04-12 22:43:38 +09:00
rustc_error_messages Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_errors Rollup merge of #123204 - notriddle:notriddle/include-str-span, r=pnkfelix 2024-04-12 17:41:32 +02:00
rustc_expand Check x86_64 size assertions on aarch64, too 2024-04-03 16:53:03 +11:00
rustc_feature remove some things that do not need to be 2024-04-11 21:09:52 +02:00
rustc_fluent_macro Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_fs_util Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_graphviz Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_hir Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_hir_analysis Rollup merge of #123898 - fmease:gci-cmp-impl-item-lt-params, r=compiler-errors 2024-04-14 09:01:59 +02:00
rustc_hir_pretty Remove bin_op_to_assoc_op and invoke AssocOp::from_ast_binop directly 2024-04-11 07:36:34 +00:00
rustc_hir_typeck Replace a DefiningOpaqueTypes::No with Yes by asserting that one side of the comparison is a type variable. 2024-04-13 07:26:47 +00:00
rustc_incremental Auto merge of #122070 - Zoxc:dep-edges-from-previous, r=cjgillot 2024-04-05 11:11:17 +00:00
rustc_index Check x86_64 size assertions on aarch64, too 2024-04-03 16:53:03 +11:00
rustc_index_macros rustc_index: Add a ZERO constant to index types 2024-04-03 19:06:22 +03:00
rustc_infer Rollup merge of #123703 - estebank:diag-changes-2, r=Nadrieril 2024-04-11 01:56:26 +02:00
rustc_interface linker: Remove laziness and caching from native search directory walks 2024-04-12 17:28:00 +03:00
rustc_lexer Silence redundant error on char literal that was meant to be a string in 2021 edition 2024-03-17 23:35:19 +00:00
rustc_lint Rollup merge of #123314 - surechen:fix_120642, r=Nadrieril 2024-04-11 01:56:24 +02:00
rustc_lint_defs Split back out unused_lifetimes -> redundant_lifetimes 2024-04-09 12:17:34 -04:00
rustc_llvm Rollup merge of #123612 - kxxt:riscv-target-abi, r=jieyouxu,nikic,DianQK 2024-04-10 04:27:40 +02:00
rustc_log bump tracing-tree to 0.3 2024-03-30 17:39:43 +03:00
rustc_macros Rename diagnostic derive things. 2024-03-11 10:06:34 +11:00
rustc_metadata linker: Remove laziness and caching from native search directory walks 2024-04-12 17:28:00 +03:00
rustc_middle Rollup merge of #123890 - klensy:cl, r=fee1-dead 2024-04-13 16:42:06 +02:00
rustc_mir_build Suppress erroneous suggestion 2024-04-12 17:45:15 +01:00
rustc_mir_dataflow Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_mir_transform Use a helper to zip together parent and child captures for coroutine-closures 2024-04-10 13:39:52 -04:00
rustc_monomorphize Only collect mono items from reachable blocks 2024-04-07 14:36:42 -04:00
rustc_next_trait_solver Auto merge of #122077 - oli-obk:eager_opaque_checks4, r=lcnr 2024-04-08 23:01:50 +00:00
rustc_parse Rollup merge of #123223 - estebank:issue-123079, r=pnkfelix 2024-04-12 17:41:33 +02:00
rustc_parse_format Check x86_64 size assertions on aarch64, too 2024-04-03 16:53:03 +11:00
rustc_passes Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_pattern_analysis Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_privacy Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00
rustc_query_impl move QueryKeyStringCache from rustc_middle to rustc_query_impl, where it actually used 2024-04-11 14:33:48 +03:00
rustc_query_system remove some things that do not need to be 2024-04-11 21:09:52 +02:00
rustc_resolve Rollup merge of #123204 - notriddle:notriddle/include-str-span, r=pnkfelix 2024-04-12 17:41:32 +02:00
rustc_sanitizers sanitizers: Create the rustc_sanitizers crate 2024-04-08 12:05:41 -07:00
rustc_serialize Add add/sub methods that only panic with debug assertions to rustc 2024-04-13 17:03:12 +02:00
rustc_session Auto merge of #123854 - petrochenkov:searchdirs2, r=lqd 2024-04-13 13:12:56 +00:00
rustc_smir Rollup merge of #123659 - celinval:smir-fix-intrinsic, r=oli-obk 2024-04-10 16:15:23 +02:00
rustc_span Auto merge of #123175 - Nilstrieb:debug-strict-overflow, r=wesleywiser 2024-04-13 17:18:42 +00:00
rustc_symbol_mangling Rollup merge of #123649 - maurer:kcfi-v0, r=compiler-errors 2024-04-09 06:02:24 +02:00
rustc_target Auto merge of #123656 - lqd:linker-features, r=petrochenkov 2024-04-13 11:10:01 +00:00
rustc_trait_selection Rollup merge of #123618 - compiler-errors:overflow-ambig, r=spastorino 2024-04-14 23:24:33 +02:00
rustc_traits Merge check_mod_impl_wf and check_mod_type_wf 2024-03-07 06:27:09 +00:00
rustc_transmute Rollup merge of #123367 - jswrenn:layoutify, r=compiler-errors 2024-04-08 22:06:21 +02:00
rustc_ty_utils Handle const generic pattern types 2024-04-09 16:42:45 -03:00
rustc_type_ir fix coroutine witness doctest 2024-04-13 06:17:07 +00:00
stable_mir Rollup merge of #123659 - celinval:smir-fix-intrinsic, r=oli-obk 2024-04-10 16:15:23 +02:00