rust/compiler
bors 47b41b7788 Auto merge of #87254 - rusticstuff:rustc_codegen_llvm_dont_emit_zero_sized_padding, r=eddyb
LLVM codegen: Don't emit zero-sized padding for fields

Currently padding is emitted before fields of a struct and at the end of the struct regardless of the ABI. Even if no padding is required zero-sized padding fields are emitted. This is not useful and - more importantly - it make it impossible to generate the exact vector types that LLVM expects for certain ARM SIMD intrinsics. This change should unblock the implementation of many ARM intrinsics using the `unadjusted` ABI, see https://github.com/rust-lang/stdarch/issues/1143#issuecomment-827404092.

This is a proof of concept only because the field lookup now takes O(number of fields) time compared to O(1) before since it recalculates the mapping at every lookup. I would like to find out how big the performance impact actually is before implementing caching or restricting this behavior to the `unadjusted` ABI.

cc `@SparrowLii` `@bjorn3`

([Discussion on internals](https://internals.rust-lang.org/t/feature-request-add-a-way-in-rustc-for-generating-struct-type-llvm-ir-without-paddings/15007))
2021-08-11 01:36:23 +00:00
..
rustc rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_apfloat rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_arena rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_ast Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_ast_lowering Rollup merge of #87687 - camsteffen:inline-macros, r=oli-obk 2021-08-02 09:36:54 -05:00
rustc_ast_passes rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_ast_pretty Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_attr rustc: Fill out remaining parts of C-unwind ABI 2021-08-03 07:06:19 -07:00
rustc_builtin_macros rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_codegen_cranelift Merge commit '05677b6bd6c938ed760835d9b1f6514992654ae3' into sync_cg_clif-2021-08-06 2021-08-06 16:26:56 +02:00
rustc_codegen_llvm Auto merge of #87254 - rusticstuff:rustc_codegen_llvm_dont_emit_zero_sized_padding, r=eddyb 2021-08-11 01:36:23 +00:00
rustc_codegen_ssa Prepare call/invoke for opaque pointers 2021-08-05 10:58:55 -07:00
rustc_data_structures Remove duplicate trait bounds in rustc_data_structures::graph 2021-08-09 08:52:04 -05:00
rustc_driver Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_error_codes Rollup merge of #87700 - kornelski:e530text, r=oli-obk 2021-08-11 04:18:36 +09:00
rustc_errors Remove warnings/errors from compiler when using typeck_body in rustdoc span map builder 2021-08-05 23:08:29 +02:00
rustc_expand Remove special case for statement NodeId assignment 2021-08-06 09:30:47 -05:00
rustc_feature rustc: Fill out remaining parts of C-unwind ABI 2021-08-03 07:06:19 -07:00
rustc_fs_util rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_graphviz rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_hir Auto merge of #87462 - ibraheemdev:tidy-file-length-ignore-comment, r=Mark-Simulacrum 2021-08-06 02:07:01 +00:00
rustc_hir_pretty Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_incremental rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_index rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_infer Do not suggest impl traits as type arguments 2021-08-03 20:05:50 +09:00
rustc_interface Add back -Zno-profiler-runtime 2021-08-04 10:47:59 +01:00
rustc_lexer Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_lint Auto merge of #87462 - ibraheemdev:tidy-file-length-ignore-comment, r=Mark-Simulacrum 2021-08-06 02:07:01 +00:00
rustc_lint_defs Auto merge of #87772 - npmccallum:naked_abi, r=Amanieu 2021-08-07 23:24:15 +00:00
rustc_llvm Auto merge of #87798 - durin42:llvm-14, r=nikic 2021-08-08 04:33:22 +00:00
rustc_macros Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_metadata Auto merge of #87619 - 12101111:fix-native_link_modifiers_bundle, r=petrochenkov 2021-08-09 03:59:30 +00:00
rustc_middle Auto merge of #87408 - kornelski:try_reserve_error, r=yaahc 2021-08-07 01:26:15 +00:00
rustc_mir Auto merge of #87408 - kornelski:try_reserve_error, r=yaahc 2021-08-07 01:26:15 +00:00
rustc_mir_build Auto merge of #87737 - LeSeulArtichaut:unsafeck-less-freeze, r=oli-obk 2021-08-05 14:45:09 +00:00
rustc_parse Auto merge of #87235 - poliorcetics:issue-87217-fn-quali-order, r=nagisa 2021-08-08 22:28:01 +00:00
rustc_parse_format rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_passes Auto merge of #87772 - npmccallum:naked_abi, r=Amanieu 2021-08-07 23:24:15 +00:00
rustc_plugin_impl rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_privacy Auto merge of #87568 - petrochenkov:localevel, r=cjgillot 2021-08-04 02:04:04 +00:00
rustc_query_impl Auto merge of #87515 - crlf0710:trait_upcasting_part2, r=bjorn3 2021-08-03 16:58:56 +00:00
rustc_query_system Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_resolve Add hint for unresolved associated trait items if the trait has a single item 2021-08-06 11:31:52 +02:00
rustc_save_analysis Auto merge of #87568 - petrochenkov:localevel, r=cjgillot 2021-08-04 02:04:04 +00:00
rustc_serialize rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_session Auto merge of #87619 - 12101111:fix-native_link_modifiers_bundle, r=petrochenkov 2021-08-09 03:59:30 +00:00
rustc_span Auto merge of #87262 - dtolnay:negative, r=Aaron1011 2021-08-03 04:50:28 +00:00
rustc_symbol_mangling Rollup merge of #87582 - tmiasko:symbol-printer, r=michaelwoerister 2021-08-11 04:18:33 +09:00
rustc_target Auto merge of #85357 - Andy-Python-Programmer:aarch64_uefi_target, r=petrochenkov 2021-08-09 13:16:51 +00:00
rustc_trait_selection Do not ICE on HIR based WF check when involving lifetimes 2021-08-09 07:01:35 +00:00
rustc_traits Auto merge of #87535 - lf-:authors, r=Mark-Simulacrum 2021-08-02 05:49:17 +00:00
rustc_ty_utils rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_type_ir rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_typeck Rollup merge of #87895 - TheWastl:issue-87872, r=estebank 2021-08-11 04:18:47 +09:00