Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLVM codegen: Don't emit zero-sized padding for fields #87254

Commits on Aug 4, 2021

  1. LLVM codegen: Don't emit zero-sized padding for fields

    LLVM codegen: Don't emit zero-sized padding for whiles because that has no use and makes it impossible to generate the return types that LLVM expects for certain ARM SIMD intrinsics.
    hkratz committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    738868b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    60a523d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e410658 View commit details
    Browse the repository at this point in the history
  4. Don't cache projection if no padding is used.

    In this case we can just return memory_index(index) which is readily available.
    hkratz committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    e899082 View commit details
    Browse the repository at this point in the history
  5. Improve/add comments

    hkratz committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    50be80b View commit details
    Browse the repository at this point in the history
  6. Add testcase for proper LLVM representation of SIMD types.

    Testcase to make sure that no 0-sized padding is inserted in structs and that structs are represented as expected by Neon intrinsics in LLVM.
    hkratz committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    4a8202c View commit details
    Browse the repository at this point in the history
  7. Fix va_args calling on aarch64 non-macos/ios.

    emit_aapcs_va_arg() emits hardcoded field indexes to access the
    aarch64-specific `VaListImpl` struct. Due to the removed padding
    those indexes have changed.
    hkratz committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    7dbc568 View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2021

  1. Store field remapping information together with the LLVM type in a ne…

    …w TypeLowering struct instead of an extra cache.
    hkratz committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    4a4e9e3 View commit details
    Browse the repository at this point in the history
  2. Replace hard-coded field indexes with lookup on aarch64 non-macos.

    The indexes into the VaListImpl struct used on aarch64 ABI (not macos/ios) are hard-coded which is brittle so we replace them with the usual lookup.
    
    The varargs ffi is tested in ui/abi/variadic-ffi.rs on aarch64 Linux.
    hkratz committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    89a369a View commit details
    Browse the repository at this point in the history

Commits on Aug 9, 2021

  1. Fix nits.

    hkratz committed Aug 9, 2021
    Configuration menu
    Copy the full SHA
    c627c0d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c1d0f0a View commit details
    Browse the repository at this point in the history
  3. Avoid unnecessary allocation.

    hkratz committed Aug 9, 2021
    Configuration menu
    Copy the full SHA
    1d4972e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    02295f4 View commit details
    Browse the repository at this point in the history