[llvm] [DenseMap] Optimize find/erase (PR #100517)

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 2 17:09:59 PDT 2024


MaskRay wrote:

> Hello @MaskRay! Somehow this commit (and after) is failing one clang test when building the Windows LLVM package. `git bisect` lead me here.
> 
> ```
> C:\src\git\llvm-project>git checkout c9e5af3944e85c5f1272c48522b4e9eda398b462
> Updating files: 100% (3558/3558), done.
> Note: switching to 'c9e5af3944e85c5f1272c48522b4e9eda398b462'.
> ...
> C:\src\git\llvm-project>llvm\utils\release\build_llvm_release.bat --x64 --version 19.0.0 --skip-checkout --local-python
> ...
> -- Testing: 20961 tests, 60 workers --
> Testing:
> FAIL: Clang :: CodeGenObjC/gnustep2-direct-method.m (1 of 20961)
> ******************** TEST 'Clang :: CodeGenObjC/gnustep2-direct-method.m' FAILED ********************
> Exit Code: 2
> 
> Command Output (stdout):
> --
> # RUN: at line 1
> c:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\bin\clang.exe -cc1 -internal-isystem C:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\lib\clang\20\include -nostdsysteminc -triple x86_64-unknown-freebsd -emit-llvm -fobjc-runtime=gnustep-2.2 -o - C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m | c:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\bin\filecheck.exe C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m
> # executed command: 'c:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\bin\clang.exe' -cc1 -internal-isystem 'C:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\lib\clang\20\include' -nostdsysteminc -triple x86_64-unknown-freebsd -emit-llvm -fobjc-runtime=gnustep-2.2 -o - 'C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m'
> # .---command stderr------------
> # | C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m:3:12: warning: class 'X' defined without specifying a base class [-Wobjc-root-class]
> # |     3 | @interface X
> # |       |            ^
> # | C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m:3:13: note: add a super class to fix this problem
> # |     3 | @interface X
> # |       |             ^
> # | huge alignment values are unsupported
> # |   %2 = load i64, ptr %1, align 9223372036854775808
> # | fatal error: error in backend: Broken module found, compilation aborted!
> # | PLEASE submit a bug report to [https://github.com/llvm/llvm-project/issues/](https://github.com/llvm/llvm-project/issues/?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) and include the crash backtrace, preprocessed source, and associated run script.
> # | Stack dump:
> # | 0.  Program arguments: c:\\src\\git\\llvm-project\\llvm_package_19.0.0\\build64_stage0\\bin\\clang.exe -cc1 -internal-isystem C:\\src\\git\\llvm-project\\llvm_package_19.0.0\\build64_stage0\\lib\\clang\\20\\include -nostdsysteminc -triple x86_64-unknown-freebsd -emit-llvm -fobjc-runtime=gnustep-2.2 -o - C:\\src\\git\\llvm-project\\clang\\test\\CodeGenObjC\\gnustep2-direct-method.m
> # | 1.  <eof> parser at end of file
> # | 2.  Optimizer
> # | 3.  Running pass "verify" on module "C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m"
> # `-----------------------------
> # error: command failed with exit status: 70
> # executed command: 'c:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\bin\filecheck.exe' 'C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m'
> # .---command stderr------------
> # | FileCheck error: '<stdin>' is empty.
> # | FileCheck command line:  c:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\bin\filecheck.exe C:\src\git\llvm-project\clang\test\CodeGenObjC\gnustep2-direct-method.m
> # `-----------------------------
> # error: command failed with exit status: 2
> 
> --
> 
> ********************
> Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
> ********************
> Failed Tests (1):
>   Clang :: CodeGenObjC/gnustep2-direct-method.m
> 
> 
> Testing Time: 192.61s
> 
> Total Discovered Tests: 37881
>   Skipped          :     8 (0.02%)
>   Unsupported      :   300 (0.79%)
>   Passed           : 37539 (99.10%)
>   Expectedly Failed:    33 (0.09%)
>   Failed           :     1 (0.00%)
> 
> FAILED: tools/clang/test/CMakeFiles/check-clang C:/src/git/llvm-project/llvm_package_19.0.0/build64_stage0/tools/clang/test/CMakeFiles/check-clang
> C:\Windows\system32\cmd.exe /C "cd /D C:\src\git\llvm-project\llvm_package_19.0.0\build64_stage0\tools\clang\test && C:\Users\aganea_havenstudios\AppData\Local\Programs\Python\Python312\python3.exe C:/src/git/llvm-project/llvm_package_19.0.0/build64_stage0/./bin/llvm-lit.py -sv --param USE_Z3_SOLVER=0 C:/src/git/llvm-project/llvm_package_19.0.0/build64_stage0/tools/clang/test"
> ninja: build stopped: subcommand failed.
> ```
> 
> The problem does not occur on the previous commit `4aa4ee909029cd7cd85d67b41d488a6edb802dce`.

Hi! The failure looks weird. (a) Quite a few Windows bots are happy with this change. (b) If there were an issue, I suspect that quite a few tests would fail as well.

I think figuring this out might require the assistance of a debugger? Do you have luck with that ? :)

https://github.com/llvm/llvm-project/pull/100517


More information about the llvm-commits mailing list