1. [NFC][ValueTracking] Cleanup a test (details)
  2. [DSE,MemorySSA] Add test for PR47285. (details)
  3. [Sema][AArch64] Support arm_sve_vector_bits attribute (details)
Commit 6ccacb4680e989b9ef2e9ae9e2a39dafca8d3014 by Vitaly Buka
[NFC][ValueTracking] Cleanup a test
The file was modifiedllvm/unittests/Analysis/ValueTrackingTest.cpp (diff)
Commit 73f09ce8f303409a09c7d50d216094ee13d85cab by flo
[DSE,MemorySSA] Add test for PR47285.
The file was addedllvm/test/Transforms/DeadStoreElimination/MSSA/pr47285-not-overwritten-on-all-exit-paths.ll
Commit feed5a7239d8ed0ec9f90775080ce8546bf364df by cullen.rhodes
[Sema][AArch64] Support arm_sve_vector_bits attribute

This patch implements the semantics for the 'arm_sve_vector_bits' type
attribute, defined by the Arm C Language Extensions (ACLE) for SVE [1].
The purpose of this attribute is to define vector-length-specific (VLS)
versions of existing vector-length-agnostic (VLA) types.

The semantics were already implemented by D83551, although the
implementation approach has since changed to represent VLSTs as
VectorType in the AST and fixed-length vectors in the IR everywhere
except in function args/returns. This is described in the prototype
patch D85128 demonstrating the new approach.

The semantic changes added in D83551 are changed since the
AttributedType is replaced by VectorType in the AST. Minimal changes
were necessary in the previous patch as the canonical type for both VLA
and VLS was the same (i.e. sizeless), except in constructs such as
globals and structs where sizeless types are unsupported. This patch
reverts the changes that permitted VLS types that were represented as
sizeless types in such circumstances, and adds support for implicit
casting between VLA <-> VLS types as described in section of the

Since the SVE builtin types for bool and uint8 are both represented as
BuiltinType::UChar in VLSTs, two new vector kinds are implemented to
distinguish predicate and data vectors.


Reviewed By: aaron.ballman

Differential Revision:
The file was modifiedclang/lib/AST/TypePrinter.cpp (diff)
The file was modifiedclang/include/clang/Basic/ (diff)
The file was modifiedclang/include/clang/AST/Type.h (diff)
The file was modifiedclang/lib/Sema/SemaOverload.cpp (diff)
The file was modifiedclang/lib/Sema/SemaExprCXX.cpp (diff)
The file was addedclang/test/SemaCXX/attr-arm-sve-vector-bits.cpp
The file was modifiedclang/include/clang/Basic/ (diff)
The file was modifiedclang/include/clang/Sema/Overload.h (diff)
The file was modifiedclang/lib/AST/TextNodeDumper.cpp (diff)
The file was modifiedclang/lib/AST/JSONNodeDumper.cpp (diff)
The file was modifiedclang/lib/Sema/SemaDecl.cpp (diff)
The file was modifiedclang/test/Sema/attr-arm-sve-vector-bits.c (diff)
The file was modifiedclang/include/clang/Sema/Sema.h (diff)
The file was modifiedclang/lib/AST/Type.cpp (diff)
The file was modifiedclang/lib/AST/ASTContext.cpp (diff)
The file was modifiedclang/include/clang/AST/ASTContext.h (diff)
The file was modifiedclang/lib/Sema/SemaType.cpp (diff)
The file was modifiedclang/lib/Sema/SemaExpr.cpp (diff)