Re: [PATCH] RISC-V: Return implied_exts by const reference

Jeffrey Law <[email protected]> Tue, 4 Aug 2026 11:01:55 -0600
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>

On 8/4/2026 12:43 AM, Jin Ma wrote:
>> On 7/22/2026 5:50 AM, Jin Ma wrote:
>>> riscv_ext_info_t::implied_exts() returns its std::vector member by
>>> value, but all three callers (check_implied_ext, handle_combine_ext,
>>> riscv_minimal_hwprobe_feature_bits) only iterate over the result and
>>> never need ownership.  Every invocation therefore copies the entire
>>> implied-extension vector.  During option parsing this runs once per
>>> compiled source file; at -O0 the optimisation passes are skipped so
>>> option-parsing overhead dominates, causing a 6.7% compile-time
>>> regression on CSIBE -O0 benchmarks.
>>>
>>> Return a const reference instead.  The underlying m_implied_exts
>>> member lives in a static global map entry and outlives every caller,
>>> so no dangling-reference risk exists.
>>>
>>> gcc/ChangeLog:
>>>
>>>   * common/config/riscv/riscv-common.cc
>>>   (riscv_ext_info_t::implied_exts): Return const reference
>>>   instead of by-value copy.
>> This is OK assuming it has gone through the usual testing (no testing
>> was mentioned).
> Hi Jeff,
>
> I did omit the testing information from the original email. Sorry.
>
> The patch passed my local CI with no new failures.  Since this change
> affects a common code path exercised by most tests, I do not think an
> additional test case is necessary.
>
> OK for trunk?
Yes, it's OK for the trunk.  Thanks.

jeff