Images 💾

Last commit ⭐

commit c03cca7b2f25bcf5c39f405cc4f3400d85ac06cd
Author:     Dan Klishch <danilklishch@gmail.com>
AuthorDate: Sat Jun 29 20:27:44 2024 -0400
Commit:     Andrew Kaster <akaster@serenityos.org>
CommitDate: Sat Jun 29 20:15:05 2024 -0600

    AK+LibTest: Choose definition of CO_TRY and CO_TRY_OR_FAIL more robustly
    
    There are three compiler bugs that influence this decision:
    
     - Clang writing to (validly) destroyed coroutine frame with -O0 and
       -fsanitize=null,address under some conditions
       (https://godbolt.org/z/17Efq5Ma5) (AK_COROUTINE_DESTRUCTION_BROKEN);
    
     - GCC being unable to handle statement expressions in coroutines
       (AK_COROUTINE_STATEMENT_EXPRS_BROKEN);
    
     - GCC being unable to deduce template type parameter for TryAwaiter
       with nested CO_TRYs (AK_COROUTINE_TYPE_DEDUCTION_BROKEN).
    
    Instead of growing an ifdef soup in AK/Coroutine.h and
    LibTest/AsyncTestCase.h, define three macros in AK/Platform.h that
    correspond to these bugs and use them accordingly in the said files.