https://gcc.gnu.org/bugzilla/show_bug.cgi?id=156

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Christoph Meullner
<[email protected]>:

https://gcc.gnu.org/g:20ee88e64f705c42a52f74e46322c20a617b85c5

commit r17-644-g20ee88e64f705c42a52f74e46322c20a617b85c5
Author: Christoph Müllner <[email protected]>
Date:   Mon May 18 23:44:06 2026 +0200

    RISC-V: Add Zilsd alignment control options

    riscv-toolchain-conventions PR #156 defines separate alignment
    policies for RV32 Zilsd/Zclsd doubleword memory accesses.  Add
    -mzilsd-word-align and -mzilsd-strict-align to let users select
    the word-aligned and naturally aligned variants explicitly.

    Keep the existing -mstrict-align family in the same last-option-wins
    option group so code can opt in or out without depending on option
    order surprises.  When a 2 * XLEN access is not allowed by the
    selected policy, expand through scalar bit-field helpers instead of
    selecting Zilsd loads or stores.

    gcc/ChangeLog:

            * common/config/riscv/riscv-common.cc (riscv_handle_option):
            Handle Zilsd alignment options and clear the Zilsd-specific
            explicit marker for -mstrict-align.
            * config/riscv/riscv-opts.h (riscv_zilsd_align_type): New enum.
            * config/riscv/riscv-protos.h
            (riscv_expand_zilsd_misaligned_move): Declare as void.
            (riscv_zilsd_valid_mem_p): Declare.
            * config/riscv/riscv.cc (riscv_zilsd_required_align): New
            functions.
            (riscv_zilsd_valid_mem_p): New function.
            (riscv_rtx_costs): Honor Zilsd alignment policy.
            (riscv_split_64bit_move_p): Split invalid Zilsd GPR accesses.
            (riscv_expand_zilsd_misaligned_move): New function.
            (riscv_can_inline_p): Check effective Zilsd alignment policy.
            (riscv_override_options_internal): Reject explicit Zilsd
            alignment options for RV64.
            * config/riscv/riscv.md (movmisaligndi): New expander.
            (movmisaligndf): New expander.
            * config/riscv/riscv.opt: Add -mzilsd-word-align and
            -mzilsd-strict-align.
            * config/riscv/riscv.opt.urls: Regenerate.
            * doc/invoke.texi: Document the new options.

    gcc/testsuite/ChangeLog:

            * gcc.target/riscv/zilsd-align-default-1.c: New test.
            * gcc.target/riscv/zilsd-align-df-1.c: New test.
            * gcc.target/riscv/zilsd-align-rv64-1.c: New test.
            * gcc.target/riscv/zilsd-align-rv64-2.c: New test.
            * gcc.target/riscv/zilsd-align-rv64-3.c: New test.
            * gcc.target/riscv/zilsd-align-rv64-4.c: New test.
            * gcc.target/riscv/zilsd-align-word-1.c: New test.
            * gcc.target/riscv/zilsd-align-word-2.c: New test.
            * gcc.target/riscv/zilsd-align-word-3.c: New test.
            * gcc.target/riscv/zilsd-align-word-4.c: New test.
            * gcc.target/riscv/zilsd-align-word-5.c: New test.

    Signed-off-by: Christoph Müllner <[email protected]>

Reply via email to