<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59227>59227</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang :: Analysis/localization-aggressive.m fails with gcc-13
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          SixWeining
      </td>
    </tr>
</table>

<pre>
    When I use latest gcc-13 to build clang/llvm, `Clang :: Analysis/localization-aggressive.m` test fails with release build while it's OK with debug build.

## gcc source code
```
commit 14d11df96336e9d06a4c8108b61815ad94866519 (origin/trunk, origin/master, origin/HEAD, master)                                                                                           
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Mon Nov 28 00:16:43 2022 +0000

    Daily bump.
```

## llvm source code
```
commit 5279e6a7d677cdf4488883b77aacab911318100c (HEAD)
Author: Michał Górny <mgorny@gentoo.org>
Date:   Sat Nov 19 20:54:54 2022 +0100

    [cmake] Fix Findzstd.cmake to handle OpenBSD shared libraries
    
    Fix Findzstd CMake to handle shared libraries on OpenBSD correctly.
    This userland does not use shared library symlinks without SOVERSION,
    so the result of find_library() does not ever end with
    zstd_SHARED_LIBRARY_SUFFIX.  To work around this, reverse the logic
    to compare the result against zstd_STATIC_LIBRARY_SUFFIX and assume
    shared library otherwise.
    
    While at it, fix the conditions not to fall back to "result is static
    library" path if it actually was recognized as a shared library but
    zstd_shared target already existed.
    
    Fixes #59056
    
    Differential Revision: https://reviews.llvm.org/D138361
```

## How to build gcc
```
#!/bin/bash

set -x 
set -e

./contrib/download_prerequisites
mkdir objdir
cd objdir
$PWD/../configure --prefix=$PWD/../gcc-install-13 --enable-languages=c,c++
make -j32
make install
```

## How to build clang/llvm

```
#!/bin/bash
set -e
set -x

CONFIG_AND_BUILD=false
if [ "$1" == "r" ];then
    CONFIG_AND_BUILD=true
fi

BUILD_TYPE=Release # it's OK if BUILD_TYPE=Debug
BUILD_DIR=_build
INSTALL_DIR="$PWD/llvm_install"

while $CONFIG_AND_BUILD ; do
  rm -rf $BUILD_DIR
  mkdir $BUILD_DIR
  cmake -S llvm -B $BUILD_DIR -G Ninja \
    -DLLVM_CCACHE_BUILD=ON \
    -DCMAKE_C_COMPILER=/path/to/gcc-install-13/bin/gcc \
    -DCMAKE_CXX_COMPILER=/path/to/gcc-install-13/bin/g++ \
    -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
    -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
    -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="LoongArch" \
    -DLLVM_ENABLE_PROJECTS="clang" \
    -DLLVM_ENABLE_ASSERTIONS=ON \
    -DLLVM_ENABLE_OCAMLDOC=OFF \
    -DLLVM_ENABLE_BINDINGS=OFF \
    -DLLVM_BUILD_LLVM_DYLIB=ON \
    -DLLVM_LINK_LLVM_DYLIB=ON
  break
done

cmake --build $BUILD_DIR -j 32
cmake --build $BUILD_DIR --target check-clang
```

## Test
```
$ ./_build/bin/llvm-lit clang/test/Analysis/localization-aggressive.m -v
llvm-lit: /path/to/llvm-project/llvm/utils/lit/lit/llvm/config.py:457: note: using clang: /path/to/llvm-project/_build/bin/clang
-- Testing: 1 tests, 1 workers --
FAIL: Clang :: Analysis/localization-aggressive.m (1 of 1)
******************** TEST 'Clang :: Analysis/localization-aggressive.m' FAILED ********************
Script:
--
: 'RUN: at line 1';   /path/to/llvm-project/_build/bin/clang -cc1 -internal-isystem /path/to/llvm-project/_build/lib/clang/16/include -nostdsysteminc -fblocks -x objective-c-header -emit-pch -o /path/to/llvm-project/_build/tools/clang/test/Analysis/Output/localization-aggressive.m.tmp.pch /path/to/llvm-project/clang/test/Analysis/Inputs/localization-pch.h
: 'RUN: at line 3';   /path/to/llvm-project/_build/bin/clang -cc1 -internal-isystem /path/to/llvm-project/_build/lib/clang/16/include -nostdsysteminc -analyze -analyzer-constraints=range -setup-static-analyzer -fblocks    -analyzer-config optin.osx.cocoa.localizability.NonLocalizedStringChecker:AggressiveReport=true    -analyzer-checker=optin.osx.cocoa.localizability.NonLocalizedStringChecker    -analyzer-checker=optin.osx.cocoa.localizability.EmptyLocalizationContextChecker    -include-pch /path/to/llvm-project/_build/tools/clang/test/Analysis/Output/localization-aggressive.m.tmp.pch -verify  /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m
--
Exit Code: 1

Command Output (stderr):
--
error: 'warning' diagnostics expected but not seen: 
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 245: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 246: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 247: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 251: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 252: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 253: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 257: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 258: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 259: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 263: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 264: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 265: Localized string macro should include a non-empty comment for translators
  File /path/to/llvm-project/clang/test/Analysis/localization-aggressive.m Line 269: Localized string macro should include a non-empty comment for translators
13 errors generated.

--

********************
********************
Failed Tests (1):
  Clang :: Analysis/localization-aggressive.m


Testing Time: 0.21s
  Failed: 1
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVGV2Tmsj21zAvXVACivLgg4JO3DiaUrNJnqwGWuwM0G43zIz59fccQEVjJsns5lZpMQ50H873ZxuIaN__tGUZmZBCMZLQnKmcxGGomzbJBQkKnkQkTGgWa9Y4SZ5SzfKI5rQ8XCKaPYCLDDKa7BVXCCJCmvBvNOci02kcS6YUf2JGCu-QEvmG8kSRZ55viWQJo0C2ovK85QkjPNesriLz9xVIxIIirgAMreVrrUH9bdlwIadEiUKGjIQiYvWe06qv8jEUacpzYrYj04w2rmPbDnOjlkPbYc9s9QLH7JkdGrntnuN0TJdoVk9IHvMMxMllkT2iyMeVlKqcybOld6OBjwuHLZf8uU8l0qDIt0Ki6u89jwyilGdc5ZLmQoJNPNAKxTWt3YJbI84KQ8hYs0fV2z5YGd8l5EFkZCaeiNUjrRYsmQ58tW1itSwL9DBswaepdeTAB_vtwSLpzriq7jP7oMf8qoE6VtdlDu1GTrcbRpt2uwcfO-h2KQ1p4JqmDYZqtUI0UKVy91IbDzzcUs3raD2L3GuerQ1tme1RJWks4A4VwrJciB_oY0nzUh_gBRbqo9Muv076ML_Xh9YZhil9ZFrHJ2P-An9Z9E3lkVGuYhBtaRaBZ893LBsufaK2VLKIJDyQVHKmGqiOd01ExHs4R3SJgIAVD8hDISUL82RvnJCttlxheEuI2YhEAt7IRF4G_BmqPVH7NOHZYxWeosjJcv73aLGczGfg3yeESpB8yyB8VZHkRGzIBlhd10jAOhgCRzLsiUnCgDDiPOFAydbLd4PFyF9PJ8PFYPFlvfw4Hk8-G8CxIM9CPhIqRQFv5lvMLR4QBFzANRJPRMzDEzrQDrjRDqRpskZjyjPIORWx1WA18S6IEVQJVapIWUO-c60IwCifuWLGNVN9KtMWOA5mLg9U8VJyEIos4pgFKy0AfxuaJCSg4SM-aJZV8wi2UTnky4YwR01aZEchCfINICc0zAtAsSfPVIGAoYgz_o0h94ReshwU-YWqa4CcypgBrkQyGu0Je4G8waKrgoEPggkhijtuq-Ncg_D5ZsMkBBSnCVmwJ65AXoykbZ7vFBYHawwXmI2zZ2VgMigDzxr7pt2zHfPnCeSdeD7VIUhm199AWBPQBmU-DqjaNlEpEFh_IY0H1tw24BWwVi55AHeReM4SQaP1ToJo_xQgU36I0fQx4pKI4Cv8q1NXdPaoWe0PnyAxjY0a6YbHBbikrgM28AzN9s9BsNKih4JdseLqOstokDAdq2tBYyBs-yG4FfwN8arYwHSgf7WtxmON5DcVelbYm7C_qN-mMistN7F489l4cr8ezPz18ONk6oMsEAOqhgenhtSJgQAqMdHXUTu2X4ZG-diBxyHEUnbyuCsooUTXGDe8Sb3cX6--fBgB0KLuNFADpw4DWDiD8rHZaL7tTxawvC6VVa1PZpBGptN6p2K-sifqcH0wg2U1Wak6G4C8ZB9EHkKmPMgnU6LLDQKeyNdbletd26nKjL6saq0-PAMi-j2Z8ewrBW02ErjuT6d_P6w9b-C9Gx01OZ9dQnkPg_ejtbf25g8fJtNRJfIYcxL2RuI7Bz66CPZl13F9_vwGbJX3X8d4sMiHxQjy-dEoTUOVznTl1TPjH9WGz1fVNfr8YbSYPIxmgHi9GizuR6vlejU_6g_oTIXI4oEMt1doVjhmg-F0BMzO_xp5q2X1Vh2Gr74xWC5HixVU4uVVSzVB597gYerPPQQcj1-DHE5m_mR2v3wFstJJeet_gdr5Y-rTyez9JeABKIBy81g9RCI7S7-1_-pVRjp33q_kkOReg9LrohZuWfioV8r8aR5cwSzyg2TXJpia66g_-CBGl55AGT7kTBxm4N-vzD5Ef6pwH5Bgjbxw_XJrJ8VX6N6Oo9a4yGFYwkeen76rraq6GLs9tuydLqKERqNsZAvFYTirGP0ppQs5G-rT9VJLvMJiluNb2YeZZXcGrRjovgIdDyZTBPrtsRCbeRNbSPPYzmvW2y-yGi1XgLP7-_Op1SUoxQgL0L_goRRhGUq-QysfFFlLVhqju_g4wztoGaHZZih5F-sAeYOhiB6GJoGcCYMnCKlztYd-Lv1VTEnZ8hw8GqY_C4aOMCkiCLVMQNtYoYM1om8C0B2MBtBJQcsDiEBteqhvoY-EBl8HqFzfhVuii1-lDnNY6dw_jqh5ke-K_DWzGTnMoUj2dZo_JjHJgMJ3ngEYje1rRrNvw2gUBf3GjjdSh7SBJwVAHHtLCUhgF3q3YqdXY8gR9GRyzPFNBJB3iNhBYjCEejFCEQpqHNQXcMhSe2Mmsmm1wqIltNZZ7GF2ZjimD472W7CdkHndxF2QOYD7b6X0RnyjdJfvpw1n8GA2YC95E2utb_3njvdnnF2HOZhv9j9zvjeUqvOENXqBgufhuQ0WgLPeXqQpjs4V05jFwfGYxNOv79IeLFfHMxAzz1RmWFAg20acxuivPFQwh-6AZZhPYXAt52XFWDlJHhqIcdVB_8fSkinGstXuIKmjF8E8jm5EUhpKAZO1KKDlOIQYBfYyyHbgJHjikML0SzZCEoipTCV4Aqf-Pzw7N8hz9_Z47pg3yLN1gzzbN8jzLfpz7wZ5dm-PZ-cG_dlp3yDPN1i7nT_hz6ZNykZLkZhlTNLTsf7FEPqvh-z_CsOYgpKj8oxBlecAzeaR_P5Zwpl85Xd9fEFWPC1b2JZhmScTl-Sbne35QdAd65uO4zqm5badu6hvR67t0ruc5wnr__5BR-N37-r39btCJv3zX0pi2C0CmEtS7XjOc-F1XKmCIaWOa1ndu20_CNvd0O50um7PdQIztKjTgkfTNl03cE33LqEBS1Rf6ww1y8rYMylR4Clpx7_jffxt0zStXqtjwccII3tjR3YY9hzGQtfS2i2WAuvHX2_uZL9kKShiBZsJB-udNimIG2eMleQAPy1_m-0v-csnxrHzvyup90vu_wcnsSWY">