rust/compiler
Matthias Krüger ab505298ea
Rollup merge of #105482 - wesleywiser:fix_debuginfo_ub, r=tmiasko
Fix invalid codegen during debuginfo lowering

In order for LLVM to correctly generate debuginfo for msvc, we sometimes need to spill arguments to the stack and perform some direct & indirect offsets into the value. Previously, this code always performed those actions, even when not required as LLVM would clean it up during optimization.

However, when MIR inlining is enabled, this can cause problems as the operations occur prior to the spilled value being initialized. To solve this, we first calculate the necessary offsets using just the type which is side-effect free and does not alter the LLVM IR. Then, if we are in a situation which requires us to generate the LLVM IR (and this situation only occurs for arguments, not local variables) then we perform the same calculation again, this time generating the appropriate LLVM IR as we go.

r? `@tmiasko` but feel free to reassign if you want 🙂

Fixes #105386
2022-12-10 15:01:45 +01:00
..
rustc rustc: Use unix_sigpipe instead of rustc_driver::set_sigpipe_handler 2022-10-02 17:49:36 +02:00
rustc_abi Auto merge of #105175 - michaelwoerister:add-stable-ord-trait, r=nagisa 2022-12-06 09:21:49 +00:00
rustc_apfloat Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_arena rustc_arena: remove a couple of ref patterns 2022-11-22 18:49:29 +00:00
rustc_ast Rollup merge of #105142 - nbdd0121:inline_const, r=petrochenkov 2022-12-04 11:38:51 +01:00
rustc_ast_lowering Rollup merge of #105408 - cuviper:help-rpitirpit, r=compiler-errors 2022-12-08 12:57:31 +01:00
rustc_ast_passes Auto merge of #104861 - nnethercote:attr-cleanups, r=petrochenkov 2022-12-01 07:13:45 +00:00
rustc_ast_pretty Remove outdated syntax from trait alias pretty printing 2022-12-06 13:45:11 +00:00
rustc_attr rustc_attr remove ref patterns 2022-12-06 14:45:58 +00:00
rustc_baked_icu_data Update crate documentation of rustc_baked_icu_data crate 2022-11-18 14:46:36 -08:00
rustc_borrowck Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_builtin_macros Migrate parts of rustc_expand to session diagnostics 2022-12-10 11:02:41 +01:00
rustc_codegen_cranelift Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_codegen_gcc Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_codegen_llvm Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_codegen_ssa Rollup merge of #105482 - wesleywiser:fix_debuginfo_ub, r=tmiasko 2022-12-10 15:01:45 +01:00
rustc_const_eval Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_data_structures Rollup merge of #104898 - oli-obk:group_all_the_things, r=wesleywiser 2022-12-06 16:54:52 +01:00
rustc_driver Use Symbol for the crate name instead of String/str 2022-12-07 20:30:02 +00:00
rustc_error_codes Support Option and similar enums as type of static variable with linkage attribute. 2022-12-05 15:05:43 -08:00
rustc_error_messages Migrate parts of rustc_expand to session diagnostics 2022-12-10 11:02:41 +01:00
rustc_errors Migrate parts of rustc_expand to session diagnostics 2022-12-10 11:02:41 +01:00
rustc_expand Migrate parts of rustc_expand to session diagnostics 2022-12-10 11:02:41 +01:00
rustc_feature Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_fs_util Remove useless borrows and derefs 2022-12-01 17:34:43 +00:00
rustc_graphviz Remove useless borrows and derefs 2022-12-01 17:34:43 +00:00
rustc_hir Rollup merge of #105441 - nnethercote:rm-UnsafetyState, r=lcnr 2022-12-08 12:57:33 +01:00
rustc_hir_analysis Rollup merge of #105410 - TaKO8Ki:fix-105257, r=BoxyUwU 2022-12-10 15:01:44 +01:00
rustc_hir_pretty Remove outdated syntax from trait alias pretty printing 2022-12-06 13:45:11 +00:00
rustc_hir_typeck Rollup merge of #105192 - estebank:point-at-lhs-on-binop, r=fee1-dead 2022-12-10 15:01:43 +01:00
rustc_incremental Use Symbol for the crate name instead of String/str 2022-12-07 20:30:02 +00:00
rustc_index move things from rustc_target::abi to rustc_abi 2022-11-24 16:26:13 +03:30
rustc_infer Rollup merge of #105443 - compiler-errors:move-more, r=oli-obk 2022-12-09 07:25:46 +01:00
rustc_interface Fold Definitions into the untracked data 2022-12-09 14:59:39 +00:00
rustc_lexer update cpufeatures, swap difference to dissimilar 2022-11-29 19:59:37 +03:00
rustc_lint Rollup merge of #105505 - WaffleLapkin:yeet_unused_parens_lint, r=fee1-dead 2022-12-10 09:24:44 +01:00
rustc_lint_defs Make deref_into_dyn_supertrait lint the impl and not the usage 2022-11-23 15:40:27 +00:00
rustc_llvm Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_log Use IsTerminal in rustc_log 2022-10-16 15:10:40 +01:00
rustc_macros Auto merge of #105220 - oli-obk:feeding, r=cjgillot 2022-12-06 03:47:41 +00:00
rustc_metadata Fold Definitions into the untracked data 2022-12-09 14:59:39 +00:00
rustc_middle Rollup merge of #105410 - TaKO8Ki:fix-105257, r=BoxyUwU 2022-12-10 15:01:44 +01:00
rustc_mir_build Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_mir_dataflow Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_mir_transform Remove unneeded field from SwitchTargets 2022-12-09 04:53:10 -08:00
rustc_monomorphize Prefer doc comments over //-comments in compiler 2022-11-27 11:19:04 +00:00
rustc_parse Rollup merge of #105098 - lyming2007:issue-103869-fix, r=eholk 2022-12-06 13:27:41 +01:00
rustc_parse_format Assert size of rustc_parse_format::Piece<'_> 2022-12-08 22:50:39 +00:00
rustc_passes Rollup merge of #105267 - compiler-errors:issue-104613, r=oli-obk 2022-12-07 15:39:06 +01:00
rustc_plugin_impl Migrate all diagnostics 2022-10-23 10:09:44 +02:00
rustc_privacy drive-by: move field_index to typeck results 2022-12-04 17:59:21 +00:00
rustc_query_impl Auto merge of #104940 - cjgillot:query-feed-simple, r=oli-obk 2022-11-30 17:20:14 +00:00
rustc_query_system Fold Definitions into the untracked data 2022-12-09 14:59:39 +00:00
rustc_resolve Fold Definitions into the untracked data 2022-12-09 14:59:39 +00:00
rustc_save_analysis Use Symbol for the crate name instead of String/str 2022-12-07 20:30:02 +00:00
rustc_serialize rename {max=>largest}_max_leb128_len 2022-11-29 17:58:09 +00:00
rustc_session Auto merge of #105525 - matthiaskrgr:rollup-ricyw5s, r=matthiaskrgr 2022-12-10 11:16:18 +00:00
rustc_smir Only keep one version of ImplicitSelfKind. 2022-09-13 19:18:23 +02:00
rustc_span Rollup merge of #105514 - estebank:is_visible, r=oli-obk 2022-12-10 09:24:44 +01:00
rustc_symbol_mangling Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_target Rollup merge of #105109 - rcvalle:rust-kcfi, r=bjorn3 2022-12-10 09:24:43 +01:00
rustc_trait_selection Introduce Span::is_visible 2022-12-09 14:35:55 -08:00
rustc_traits Move some suggestions from error_reporting to error_reporting::suggest 2022-12-08 05:58:30 +00:00
rustc_transmute Auto merge of #103831 - chenyukang:yukang/fix-103751-ice, r=nagisa 2022-11-05 13:48:30 +00:00
rustc_ty_utils Rollup merge of #105082 - Swatinem:async-abi, r=compiler-errors 2022-12-10 09:24:43 +01:00
rustc_type_ir Rollup merge of #105362 - WaffleLapkin:🙅, r=oli-obk 2022-12-06 16:54:56 +01:00