[clang] [Clang] Fix stack-use-after-return in TryArrayCopy by allocating OpaqueValueExpr on the ASTContext (PR #192080)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Fri May 8 04:37:14 PDT 2026
AaronBallman wrote:
> About performance, here is a more detailed stat by perf.
>
> ```
> Performance counter stats for './llvm-project/llvm/build/bin/clang-old -c ./sqlite-amalgamation-3530000/sqlite3.c -O2' (10 runs):
>
> 0 context-switches:u # 0.0 cs/sec cs_per_second
> 0 cpu-migrations:u # 0.0 migrations/sec migrations_per_second
> 27,528 page-faults:u # 2865.5 faults/sec page_faults_per_second ( +- 0.38% )
> 9,606.77 msec task-clock:u # 1.0 CPUs CPUs_utilized ( +- 1.55% )
> 562,436,942 cpu_core/branch-misses/u # 3.9 % branch_miss_rate ( +- 0.03% ) (99.96%)
> 14,242,893,477 cpu_core/branches/u # 1482.6 M/sec branch_frequency ( +- 0.02% ) (99.96%)
> 48,115,577,715 cpu_core/cpu-cycles/u # 5.0 GHz cycles_frequency ( +- 0.08% ) (99.96%)
> 70,229,686,496 cpu_core/instructions/u # 1.5 instructions insn_per_cycle ( +- 0.01% ) (99.96%)
> 176,824,886 cpu_atom/branch-misses/u # 4.7 % branch_miss_rate ( +- 22.20% ) (0.01%)
> 4,313,383,905 cpu_atom/branches/u # 449.0 M/sec branch_frequency ( +- 10.66% ) (0.02%)
> 18,726,124,144 cpu_atom/cpu-cycles/u # 1.9 GHz cycles_frequency ( +- 10.69% ) (0.03%)
> 24,326,736,954 cpu_atom/instructions/u # 1.4 instructions insn_per_cycle ( +- 13.70% ) (0.04%)
> TopdownL1 (cpu_core) # 19.5 % tma_bad_speculation
> # 47.7 % tma_frontend_bound ( +- 0.08% ) (99.96%)
> # 11.3 % tma_backend_bound
> # 21.5 % tma_retiring ( +- 0.45% ) (99.96%)
> TopdownL1 (cpu_atom) # 17.7 % tma_backend_bound ( +- 13.73% ) (0.02%)
> # 28.0 % tma_frontend_bound ( +- 31.00% ) (0.01%)
> # 32.2 % tma_bad_speculation
> # 22.0 % tma_retiring ( +- 25.02% ) (0.00%)
>
> 9.643525438 +- 0.153565741 seconds time elapsed ( +- 1.59% )
> ```
>
> ```
> Performance counter stats for './llvm-project/llvm/build/bin/clang-new -c ./sqlite-amalgamation-3530000/sqlite3.c -O2' (10 runs):
>
> 0 context-switches:u # 0.0 cs/sec cs_per_second
> 0 cpu-migrations:u # 0.0 migrations/sec migrations_per_second
> 27,638 page-faults:u # 2919.5 faults/sec page_faults_per_second ( +- 0.33% )
> 9,466.54 msec task-clock:u # 1.0 CPUs CPUs_utilized ( +- 0.22% )
> 562,493,857 cpu_core/branch-misses/u # 3.9 % branch_miss_rate ( +- 0.04% ) (99.87%)
> 14,241,878,713 cpu_core/branches/u # 1504.4 M/sec branch_frequency ( +- 0.03% ) (99.87%)
> 48,159,908,379 cpu_core/cpu-cycles/u # 5.1 GHz cycles_frequency ( +- 0.05% ) (99.87%)
> 70,226,877,731 cpu_core/instructions/u # 1.5 instructions insn_per_cycle ( +- 0.03% ) (99.87%)
> 181,991,870 cpu_atom/branch-misses/u # 5.1 % branch_miss_rate ( +- 28.05% ) (0.06%)
> 3,626,230,812 cpu_atom/branches/u # 383.1 M/sec branch_frequency ( +- 21.37% ) (0.07%)
> 16,519,601,555 cpu_atom/cpu-cycles/u # 1.7 GHz cycles_frequency ( +- 18.12% ) (0.08%)
> 20,566,965,998 cpu_atom/instructions/u # 1.3 instructions insn_per_cycle ( +- 20.87% ) (0.08%)
> TopdownL1 (cpu_core) # 19.3 % tma_bad_speculation
> # 47.7 % tma_frontend_bound ( +- 0.04% ) (99.87%)
> # 11.4 % tma_backend_bound
> # 21.5 % tma_retiring ( +- 0.45% ) (99.87%)
> TopdownL1 (cpu_atom) # 21.6 % tma_backend_bound ( +- 18.33% ) (0.07%)
> # 27.5 % tma_frontend_bound ( +- 34.40% ) (0.06%)
> # 22.8 % tma_bad_speculation
> # 28.1 % tma_retiring ( +- 27.53% ) (0.06%)
>
> 9.522733738 +- 0.018644996 seconds time elapsed ( +- 0.20% )
> ```
>
> ```
> Performance counter stats for './llvm-project/llvm/build/bin/clang-old -c stress.cpp -O2' (10 runs):
>
> 0 context-switches:u # 0.0 cs/sec cs_per_second
> 0 cpu-migrations:u # 0.0 migrations/sec migrations_per_second
> 23,246 page-faults:u # 10013.3 faults/sec page_faults_per_second ( +- 0.65% )
> 2,321.50 msec task-clock:u # 1.0 CPUs CPUs_utilized ( +- 2.55% )
> 97,945,687 cpu_core/branch-misses/u # 3.0 % branch_miss_rate ( +- 2.53% ) (99.38%)
> 3,219,170,623 cpu_core/branches/u # 1386.7 M/sec branch_frequency ( +- 0.25% ) (99.38%)
> 10,528,818,041 cpu_core/cpu-cycles/u # 4.5 GHz cycles_frequency ( +- 0.79% ) (99.38%)
> 15,815,922,416 cpu_core/instructions/u # 1.5 instructions insn_per_cycle ( +- 0.31% ) (99.38%)
> 22,314,671 cpu_atom/branch-misses/u # 3.2 % branch_miss_rate ( +- 16.90% ) (0.24%)
> 859,514,215 cpu_atom/branches/u # 370.2 M/sec branch_frequency ( +- 12.64% ) (0.29%)
> 5,003,111,548 cpu_atom/cpu-cycles/u # 2.2 GHz cycles_frequency ( +- 15.29% ) (0.33%)
> 4,120,474,954 cpu_atom/instructions/u # 0.9 instructions insn_per_cycle ( +- 13.04% ) (0.37%)
> TopdownL1 (cpu_core) # 14.0 % tma_bad_speculation
> # 55.6 % tma_frontend_bound ( +- 0.78% ) (99.38%)
> # 7.2 % tma_backend_bound
> # 23.2 % tma_retiring ( +- 0.37% ) (99.38%)
> TopdownL1 (cpu_atom) # 14.9 % tma_backend_bound ( +- 26.08% ) (0.37%)
> # 50.8 % tma_frontend_bound ( +- 26.25% ) (0.33%)
> # 19.7 % tma_bad_speculation
> # 14.6 % tma_retiring ( +- 22.51% ) (0.29%)
>
> 2.333430540 +- 0.057612709 seconds time elapsed ( +- 2.47% )
> ```
>
> ```
> Performance counter stats for './llvm-project/llvm/build/bin/clang-new -c stress.cpp -O2' (10 runs):
>
> 0 context-switches:u # 0.0 cs/sec cs_per_second
> 0 cpu-migrations:u # 0.0 migrations/sec migrations_per_second
> 23,244 page-faults:u # 11015.4 faults/sec page_faults_per_second ( +- 0.47% )
> 2,110.14 msec task-clock:u # 1.0 CPUs CPUs_utilized ( +- 2.07% )
> 94,553,192 cpu_core/branch-misses/u # 2.9 % branch_miss_rate ( +- 2.30% ) (99.65%)
> 3,237,416,012 cpu_core/branches/u # 1534.2 M/sec branch_frequency ( +- 0.18% ) (99.65%)
> 10,496,790,298 cpu_core/cpu-cycles/u # 5.0 GHz cycles_frequency ( +- 0.67% ) (99.65%)
> 15,931,380,010 cpu_core/instructions/u # 1.5 instructions insn_per_cycle ( +- 0.22% ) (99.65%)
> 24,725,930 cpu_atom/branch-misses/u # 2.7 % branch_miss_rate ( +- 12.02% ) (0.11%)
> 846,215,165 cpu_atom/branches/u # 401.0 M/sec branch_frequency ( +- 12.09% ) (0.11%)
> 4,854,560,640 cpu_atom/cpu-cycles/u # 2.3 GHz cycles_frequency ( +- 13.34% ) (0.11%)
> 3,901,951,512 cpu_atom/instructions/u # 0.8 instructions insn_per_cycle ( +- 11.77% ) (0.16%)
> TopdownL1 (cpu_core) # 13.7 % tma_bad_speculation
> # 55.7 % tma_frontend_bound ( +- 0.67% ) (99.65%)
> # 7.4 % tma_backend_bound
> # 23.2 % tma_retiring ( +- 0.51% ) (99.65%)
> TopdownL1 (cpu_atom) # 11.5 % tma_backend_bound ( +- 21.51% ) (0.29%)
> # 53.7 % tma_frontend_bound ( +- 21.85% ) (0.25%)
> # 17.8 % tma_bad_speculation
> # 17.0 % tma_retiring ( +- 16.86% ) (0.20%)
>
> 2.130017112 +- 0.052655206 seconds time elapsed ( +- 2.47% )
> ```
Ah thank you, that was a bit easier for me to understand. :-)
https://github.com/llvm/llvm-project/pull/192080
More information about the cfe-commits
mailing list