7 Commits

Author SHA1 Message Date
Aiden Grossman
4ec1fea922 Reapply "[Clang] Mark this pointer in destructors dead_on_return (#166276)"
This reverts commit 047db150c66e245e9df7db178b893ce6b29820f5.

The original version of the commit caused assertion failures in DSE.
Those were fixed in ec059d81aafedb253a02d6f490ad9b9747611038, so trying
to reland this again.
2026-02-08 05:00:29 +00:00
Aiden Grossman
047db150c6 Revert "[Clang] Mark this pointer in destructors dead_on_return (#166276)"
This reverts commit 278fd0553ef5834e005a048a6b480631f3fc1b38.

This was causing some buildbot failures in DSE:
1. https://lab.llvm.org/buildbot/#/builders/25/builds/15425
2. https://lab.llvm.org/buildbot/#/builders/24/builds/17304
2026-02-06 23:11:01 +00:00
Aiden Grossman
278fd0553e
[Clang] Mark this pointer in destructors dead_on_return (#166276)
This helps to clean up any dead stores that come up at the end of the
destructor. The motivating example was a refactoring in libc++'s
basic_string implementation in 8dae17be2991cd7f0d7fd9aa5aecd064520a14f6
that added a zeroing store into the destructor, causing a large
performance regression on an internal workload. We also saw a ~0.2%
performance increase on an internal server workload when enabling this.

I also tested this against all of the non-flaky tests in our large C++
codebase and found a minimal number of issues that all happened to be in
user code.
2026-02-06 14:29:29 -08:00
Yingwei Zheng
79f0dccc91
[Clang][CodeGen] Add metadata for load from reference (#98746)
This patch adds `!nonnull/!align` for load from reference to improve
codegen.
2025-05-26 14:08:50 +08:00
Hari Limaye
94473f4db6
[IRBuilder] Generate nuw GEPs for struct member accesses (#99538)
Generate nuw GEPs for struct member accesses, as inbounds + non-negative
implies nuw.

Regression tests are updated using update scripts where possible, and by
find + replace where not.
2024-08-09 13:25:04 +01:00
Nikita Popov
12d24e0c56
[CodeGen] Simplify codegen for array initialization (#93956)
This makes codegen for array initialization simpler in two ways:
1. Drop the zero-index GEP at the start, which is no longer needed with
opaque pointers.
2. Emit GEPs directly to the correct element, instead of having a long
chain of +1 GEPs. This is more canonical, and also avoids regressions in
unoptimized builds from #93823.
2024-06-10 09:19:55 +02:00
Baodi
4ea268d831
[Clang][OpenMP] Fix private variables registration in simd (#74105)
Fix #69214 
In `emitOMPSimdRegion`, the `EmitOMPPrivateLoopCounters` should be after
`EmitOMPPrivateClause`.
If not, the private variables will be registered too early, which is not
allowed by `EmitOMPPrivateClause`.
2023-12-05 09:16:45 -05:00