[Bug libstdc++/116110] Transitions obtained from chrono::time_zone::get_info should not treat times as UTC

"cvs-commit at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116110

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

https://gcc.gnu.org/g:ce285dde2110f453fdbbd89fbb2f85a4d039705d

commit r17-2787-gce285dde2110f453fdbbd89fbb2f85a4d039705d
Author: Tomasz KamiÅski <[email protected]>
Date:   Tue Jul 28 16:43:49 2026 +0200

    libstdc++: Resolve UNTIL save adjustment at tzdb loading time [PR116110]

    This patch moves the save calculation (ZoneInfo::calc_save) to database
    loading code (reload_tzdb) instead of applying it on demand when zone
    is queried (time_zone::_M_get_sys_info). This eliminates the performance
    impact on non-first calls (that return the cached result), caused by
    iterator adjustment checks.

    Local performance test indicate a 10% cost (30ns to 33ns on average) for
    cached queries with on-demand implementation (after r17-2466-g020e02fcf28),
    combined with huge swings on time on first calls. This patch leads 200ms
    increase (1.95s to 2.15s) on time of reload_tzdb, that happens only during
    initial load (and later explicit reload).

    As we need two bits of state (expanded or until_pending), I have decided
    to keep the four value m_state enum.

            PR libstdc++/116110

    libstdc++-v3/ChangeLog:

            * src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Remove
            ZoneInfo::calc_save invocation and related iterator adjustment.
            (chrono::reload_tzdb): Calculate save (invoke calc_save) for
            all infos on all zones.

    Reviewed-by: Jonathan Wakely <[email protected]>
    Signed-off-by: Tomasz KamiÅski <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.