[AArch64] -aarch64-enable-global-isel-at-O=-1 should disable GISel (#182250)
Recent changes in #174746 to use GISel for optnone functions broke this.
Now at O3 -aarch64-enable-global-isel-at-O=-1 is having the opposite
affect of actually enabling GISel instead of SDAG and at O0 FastISel is
no longer used. I've added a check for if this is disabled.
[Clang][CodeGen] Fix __builtin_counted_by_ref for nested struct FAMs (#182575) (#182590)
GetCountedByFieldExprGEP() used getOuterLexicalRecordContext() to find
the RecordDecl containing the counted_by count field. This walks up
through all lexically enclosing records to find the outermost one, which
is wrong when a struct with a counted_by FAM is defined nested inside
another named struct.
For example, when struct inner (containing the FAM) is defined inside
struct outer, getOuterLexicalRecordContext() resolves to struct outer
instead of struct inner. The StructAccessBase visitor then fails to
match the base expression type (struct inner *) against the expected
record (struct outer), returning nullptr. This nullptr propagates back
as the GEP result, and the subsequent dereference in
*__builtin_counted_by_ref() triggers an assertion failure in
Address::getBasePointer().
Replace getOuterLexicalRecordContext() with a walk that only traverses
anonymous structs and unions, which are transparent in C and must be
[15 lines not shown]
[AArch64] Add bfloat patterns for `partial_reduce_fmla` (#181982)
A BFMLALT/B pair exactly matches the semantics of a partial_reduce_fmla
from (nx)v8bf16 to (nx)v4f32.
[Polly][ScopInfo] Lazy Scop instantiation (#179535)
The old NPM was using ScopInfo pass introduced in
https://reviews.llvm.org/D20962, which in contrast to the LPM was using
ScopInfoRegionPass. ScopInfo was instantiating all Scop objects
immediately. After codegenning, all Scop objects need to be recomputed
anyway, making this approach wastful. The PhaseManager inherited this
behaviour from the NPM, leading to some concerns.
Replace the instantiate-all behavior of ScopInfo with an on-demand
instantiation. SCoPs now must be iterated using ScopDetection instead
using ScopInfo, but only some unsed legacy NPM passes (now removed) were
doing that anyway.
(cherry picked from commit d5607ad55c5e56383d33e6ec0f582a687d75dedb)
[clang-tidy][NFC] Fix misc-override-with-different-visibility warnings (#182763)
Ran with config:
```yaml
- key: misc-override-with-different-visibility.DisallowedVisibilityChange
value: widening
```
I think we should only care about widening changes.
[clang-tidy][NFC] Fix readability-inconsistent-ifelse-braces warnings (#182764)
This align with [LLVM coding
conventions](https://llvm.org/docs/CodingStandards.html#don-t-use-braces-on-simple-single-statement-bodies-of-if-else-loop-statements):
Quote:
```cpp
// Use braces for the `if` block to keep it uniform with the `else` block.
if (isa<FunctionDecl>(D)) {
handleFunctionDecl(D);
} else {
// In this `else` case, it is necessary that we explain the situation with
// this surprisingly long comment, so it would be unclear without the braces
// whether the following statement is in the scope of the `if`.
handleOtherDecl(D);
}
```
graphics/lua-qrencode: [NEW PORT] libqrencode wrapper for lua
qrencode is a wrapper of libqrencode with libpng for lua
WWW: https://github.com/vincascm/qrencode