Skip to content

Commit 49fd28d

Browse files
committed
[clang][NFC] Refactor ArrayType::ArraySizeModifier
This patch moves `ArraySizeModifier` before `Type` declaration so that it's complete at `ArrayTypeBitfields` declaration. It's also converted to scoped enum along the way.
1 parent 7d21d73 commit 49fd28d

36 files changed

+189
-228
lines changed

clang/include/clang/AST/ASTContext.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,8 +1430,7 @@ class ASTContext : public RefCountedBase<ASTContext> {
14301430
/// Return a non-unique reference to the type for a variable array of
14311431
/// the specified element type.
14321432
QualType getVariableArrayType(QualType EltTy, Expr *NumElts,
1433-
ArrayType::ArraySizeModifier ASM,
1434-
unsigned IndexTypeQuals,
1433+
ArraySizeModifier ASM, unsigned IndexTypeQuals,
14351434
SourceRange Brackets) const;
14361435

14371436
/// Return a non-unique reference to the type for a dependently-sized
@@ -1440,21 +1439,19 @@ class ASTContext : public RefCountedBase<ASTContext> {
14401439
/// FIXME: We will need these to be uniqued, or at least comparable, at some
14411440
/// point.
14421441
QualType getDependentSizedArrayType(QualType EltTy, Expr *NumElts,
1443-
ArrayType::ArraySizeModifier ASM,
1442+
ArraySizeModifier ASM,
14441443
unsigned IndexTypeQuals,
14451444
SourceRange Brackets) const;
14461445

14471446
/// Return a unique reference to the type for an incomplete array of
14481447
/// the specified element type.
1449-
QualType getIncompleteArrayType(QualType EltTy,
1450-
ArrayType::ArraySizeModifier ASM,
1448+
QualType getIncompleteArrayType(QualType EltTy, ArraySizeModifier ASM,
14511449
unsigned IndexTypeQuals) const;
14521450

14531451
/// Return the unique reference to the type for a constant array of
14541452
/// the specified element type.
14551453
QualType getConstantArrayType(QualType EltTy, const llvm::APInt &ArySize,
1456-
const Expr *SizeExpr,
1457-
ArrayType::ArraySizeModifier ASM,
1454+
const Expr *SizeExpr, ArraySizeModifier ASM,
14581455
unsigned IndexTypeQuals) const;
14591456

14601457
/// Return a type for a constant array for a string literal of the

clang/include/clang/AST/PropertiesBase.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def APInt : PropertyType<"llvm::APInt"> { let PassByReference = 1; }
7474
def APSInt : PropertyType<"llvm::APSInt"> { let PassByReference = 1; }
7575
def APValue : PropertyType { let PassByReference = 1; }
7676
def APValueKind : EnumPropertyType<"APValue::ValueKind">;
77-
def ArraySizeModifier : EnumPropertyType<"ArrayType::ArraySizeModifier">;
77+
def ArraySizeModifier : EnumPropertyType<"ArraySizeModifier">;
7878
def AttrKind : EnumPropertyType<"attr::Kind">;
7979
def AutoTypeKeyword : EnumPropertyType;
8080
def Bool : PropertyType<"bool">;

clang/include/clang/AST/Type.h

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,6 +1569,12 @@ enum class AutoTypeKeyword {
15691569
GNUAutoType
15701570
};
15711571

1572+
/// Capture whether this is a normal array (e.g. int X[4])
1573+
/// an array with a static size (e.g. int X[static 4]), or an array
1574+
/// with a star size (e.g. int X[*]).
1575+
/// 'static' is only allowed on function parameters.
1576+
enum class ArraySizeModifier { Normal, Static, Star };
1577+
15721578
/// The base class of the type hierarchy.
15731579
///
15741580
/// A central concept with types is that each type always has a canonical
@@ -1660,7 +1666,7 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase {
16601666

16611667
/// Storage class qualifiers from declarations like
16621668
/// 'int X[static restrict 4]'. For function parameters only.
1663-
/// Actually an ArrayType::ArraySizeModifier.
1669+
/// Actually an ArraySizeModifier.
16641670
unsigned SizeModifier : 3;
16651671
};
16661672
enum { NumArrayTypeBits = NumTypeBits + 6 };
@@ -3086,15 +3092,6 @@ class MemberPointerType : public Type, public llvm::FoldingSetNode {
30863092

30873093
/// Represents an array type, per C99 6.7.5.2 - Array Declarators.
30883094
class ArrayType : public Type, public llvm::FoldingSetNode {
3089-
public:
3090-
/// Capture whether this is a normal array (e.g. int X[4])
3091-
/// an array with a static size (e.g. int X[static 4]), or an array
3092-
/// with a star size (e.g. int X[*]).
3093-
/// 'static' is only allowed on function parameters.
3094-
enum ArraySizeModifier {
3095-
Normal, Static, Star
3096-
};
3097-
30983095
private:
30993096
/// The element type of the array.
31003097
QualType ElementType;
@@ -3218,7 +3215,7 @@ class IncompleteArrayType : public ArrayType {
32183215
static void Profile(llvm::FoldingSetNodeID &ID, QualType ET,
32193216
ArraySizeModifier SizeMod, unsigned TypeQuals) {
32203217
ID.AddPointer(ET.getAsOpaquePtr());
3221-
ID.AddInteger(SizeMod);
3218+
ID.AddInteger(llvm::to_underlying(SizeMod));
32223219
ID.AddInteger(TypeQuals);
32233220
}
32243221
};

clang/include/clang/Sema/Sema.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,9 +2080,9 @@ class Sema final {
20802080
SourceLocation Loc, DeclarationName Entity);
20812081
QualType BuildReferenceType(QualType T, bool LValueRef,
20822082
SourceLocation Loc, DeclarationName Entity);
2083-
QualType BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM,
2084-
Expr *ArraySize, unsigned Quals,
2085-
SourceRange Brackets, DeclarationName Entity);
2083+
QualType BuildArrayType(QualType T, ArraySizeModifier ASM, Expr *ArraySize,
2084+
unsigned Quals, SourceRange Brackets,
2085+
DeclarationName Entity);
20862086
QualType BuildVectorType(QualType T, Expr *VecSize, SourceLocation AttrLoc);
20872087
QualType BuildExtVectorType(QualType T, Expr *ArraySize,
20882088
SourceLocation AttrLoc);

clang/lib/AST/ASTContext.cpp

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3497,7 +3497,7 @@ QualType ASTContext::getMemberPointerType(QualType T, const Type *Cls) const {
34973497
QualType ASTContext::getConstantArrayType(QualType EltTy,
34983498
const llvm::APInt &ArySizeIn,
34993499
const Expr *SizeExpr,
3500-
ArrayType::ArraySizeModifier ASM,
3500+
ArraySizeModifier ASM,
35013501
unsigned IndexTypeQuals) const {
35023502
assert((EltTy->isDependentType() ||
35033503
EltTy->isIncompleteType() || EltTy->isConstantSizeType()) &&
@@ -3663,24 +3663,20 @@ QualType ASTContext::getVariableArrayDecayedType(QualType type) const {
36633663
// Turn incomplete types into [*] types.
36643664
case Type::IncompleteArray: {
36653665
const auto *iat = cast<IncompleteArrayType>(ty);
3666-
result = getVariableArrayType(
3667-
getVariableArrayDecayedType(iat->getElementType()),
3668-
/*size*/ nullptr,
3669-
ArrayType::Normal,
3670-
iat->getIndexTypeCVRQualifiers(),
3671-
SourceRange());
3666+
result =
3667+
getVariableArrayType(getVariableArrayDecayedType(iat->getElementType()),
3668+
/*size*/ nullptr, ArraySizeModifier::Normal,
3669+
iat->getIndexTypeCVRQualifiers(), SourceRange());
36723670
break;
36733671
}
36743672

36753673
// Turn VLA types into [*] types.
36763674
case Type::VariableArray: {
36773675
const auto *vat = cast<VariableArrayType>(ty);
36783676
result = getVariableArrayType(
3679-
getVariableArrayDecayedType(vat->getElementType()),
3680-
/*size*/ nullptr,
3681-
ArrayType::Star,
3682-
vat->getIndexTypeCVRQualifiers(),
3683-
vat->getBracketsRange());
3677+
getVariableArrayDecayedType(vat->getElementType()),
3678+
/*size*/ nullptr, ArraySizeModifier::Star,
3679+
vat->getIndexTypeCVRQualifiers(), vat->getBracketsRange());
36843680
break;
36853681
}
36863682
}
@@ -3691,9 +3687,8 @@ QualType ASTContext::getVariableArrayDecayedType(QualType type) const {
36913687

36923688
/// getVariableArrayType - Returns a non-unique reference to the type for a
36933689
/// variable array of the specified element type.
3694-
QualType ASTContext::getVariableArrayType(QualType EltTy,
3695-
Expr *NumElts,
3696-
ArrayType::ArraySizeModifier ASM,
3690+
QualType ASTContext::getVariableArrayType(QualType EltTy, Expr *NumElts,
3691+
ArraySizeModifier ASM,
36973692
unsigned IndexTypeQuals,
36983693
SourceRange Brackets) const {
36993694
// Since we don't unique expressions, it isn't possible to unique VLA's
@@ -3722,7 +3717,7 @@ QualType ASTContext::getVariableArrayType(QualType EltTy,
37223717
/// type.
37233718
QualType ASTContext::getDependentSizedArrayType(QualType elementType,
37243719
Expr *numElements,
3725-
ArrayType::ArraySizeModifier ASM,
3720+
ArraySizeModifier ASM,
37263721
unsigned elementTypeQuals,
37273722
SourceRange brackets) const {
37283723
assert((!numElements || numElements->isTypeDependent() ||
@@ -3785,7 +3780,7 @@ QualType ASTContext::getDependentSizedArrayType(QualType elementType,
37853780
}
37863781

37873782
QualType ASTContext::getIncompleteArrayType(QualType elementType,
3788-
ArrayType::ArraySizeModifier ASM,
3783+
ArraySizeModifier ASM,
37893784
unsigned elementTypeQuals) const {
37903785
llvm::FoldingSetNodeID ID;
37913786
IncompleteArrayType::Profile(ID, elementType, ASM, elementTypeQuals);
@@ -8857,9 +8852,8 @@ static TypedefDecl *CreatePowerABIBuiltinVaListDecl(const ASTContext *Context) {
88578852

88588853
// typedef __va_list_tag __builtin_va_list[1];
88598854
llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 1);
8860-
QualType VaListTagArrayType
8861-
= Context->getConstantArrayType(VaListTagTypedefType,
8862-
Size, nullptr, ArrayType::Normal, 0);
8855+
QualType VaListTagArrayType = Context->getConstantArrayType(
8856+
VaListTagTypedefType, Size, nullptr, ArraySizeModifier::Normal, 0);
88638857
return Context->buildImplicitTypedef(VaListTagArrayType, "__builtin_va_list");
88648858
}
88658859

@@ -8913,15 +8907,15 @@ CreateX86_64ABIBuiltinVaListDecl(const ASTContext *Context) {
89138907
// typedef struct __va_list_tag __builtin_va_list[1];
89148908
llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 1);
89158909
QualType VaListTagArrayType = Context->getConstantArrayType(
8916-
VaListTagType, Size, nullptr, ArrayType::Normal, 0);
8910+
VaListTagType, Size, nullptr, ArraySizeModifier::Normal, 0);
89178911
return Context->buildImplicitTypedef(VaListTagArrayType, "__builtin_va_list");
89188912
}
89198913

89208914
static TypedefDecl *CreatePNaClABIBuiltinVaListDecl(const ASTContext *Context) {
89218915
// typedef int __builtin_va_list[4];
89228916
llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 4);
89238917
QualType IntArrayType = Context->getConstantArrayType(
8924-
Context->IntTy, Size, nullptr, ArrayType::Normal, 0);
8918+
Context->IntTy, Size, nullptr, ArraySizeModifier::Normal, 0);
89258919
return Context->buildImplicitTypedef(IntArrayType, "__builtin_va_list");
89268920
}
89278921

@@ -9016,7 +9010,7 @@ CreateSystemZBuiltinVaListDecl(const ASTContext *Context) {
90169010
// typedef __va_list_tag __builtin_va_list[1];
90179011
llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 1);
90189012
QualType VaListTagArrayType = Context->getConstantArrayType(
9019-
VaListTagType, Size, nullptr, ArrayType::Normal, 0);
9013+
VaListTagType, Size, nullptr, ArraySizeModifier::Normal, 0);
90209014

90219015
return Context->buildImplicitTypedef(VaListTagArrayType, "__builtin_va_list");
90229016
}
@@ -9067,7 +9061,7 @@ static TypedefDecl *CreateHexagonBuiltinVaListDecl(const ASTContext *Context) {
90679061
// typedef __va_list_tag __builtin_va_list[1];
90689062
llvm::APInt Size(Context->getTypeSize(Context->getSizeType()), 1);
90699063
QualType VaListTagArrayType = Context->getConstantArrayType(
9070-
VaListTagTypedefType, Size, nullptr, ArrayType::Normal, 0);
9064+
VaListTagTypedefType, Size, nullptr, ArraySizeModifier::Normal, 0);
90719065

90729066
return Context->buildImplicitTypedef(VaListTagArrayType, "__builtin_va_list");
90739067
}
@@ -10762,12 +10756,10 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS, bool OfBlockPointer,
1076210756
return RHS;
1076310757
if (LCAT)
1076410758
return getConstantArrayType(ResultType, LCAT->getSize(),
10765-
LCAT->getSizeExpr(),
10766-
ArrayType::ArraySizeModifier(), 0);
10759+
LCAT->getSizeExpr(), ArraySizeModifier(), 0);
1076710760
if (RCAT)
1076810761
return getConstantArrayType(ResultType, RCAT->getSize(),
10769-
RCAT->getSizeExpr(),
10770-
ArrayType::ArraySizeModifier(), 0);
10762+
RCAT->getSizeExpr(), ArraySizeModifier(), 0);
1077110763
if (LVAT && getCanonicalType(LHSElem) == getCanonicalType(ResultType))
1077210764
return LHS;
1077310765
if (RVAT && getCanonicalType(RHSElem) == getCanonicalType(ResultType))
@@ -10786,8 +10778,7 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS, bool OfBlockPointer,
1078610778
}
1078710779
if (getCanonicalType(LHSElem) == getCanonicalType(ResultType)) return LHS;
1078810780
if (getCanonicalType(RHSElem) == getCanonicalType(ResultType)) return RHS;
10789-
return getIncompleteArrayType(ResultType,
10790-
ArrayType::ArraySizeModifier(), 0);
10781+
return getIncompleteArrayType(ResultType, ArraySizeModifier(), 0);
1079110782
}
1079210783
case Type::FunctionNoProto:
1079310784
return mergeFunctionTypes(LHS, RHS, OfBlockPointer, Unqualified,
@@ -12224,7 +12215,7 @@ QualType ASTContext::getStringLiteralArrayType(QualType EltTy,
1222412215
// Get an array type for the string, according to C99 6.4.5. This includes
1222512216
// the null terminator character.
1222612217
return getConstantArrayType(EltTy, llvm::APInt(32, Length + 1), nullptr,
12227-
ArrayType::Normal, /*IndexTypeQuals*/ 0);
12218+
ArraySizeModifier::Normal, /*IndexTypeQuals*/ 0);
1222812219
}
1222912220

1223012221
StringLiteral *

clang/lib/AST/ExprConstant.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6776,8 +6776,8 @@ static bool HandleOperatorNewCall(EvalInfo &Info, const CallExpr *E,
67766776
return false;
67776777
}
67786778

6779-
QualType AllocType = Info.Ctx.getConstantArrayType(ElemType, Size, nullptr,
6780-
ArrayType::Normal, 0);
6779+
QualType AllocType = Info.Ctx.getConstantArrayType(
6780+
ElemType, Size, nullptr, ArraySizeModifier::Normal, 0);
67816781
APValue *Val = Info.createHeapAlloc(E, AllocType, Result);
67826782
*Val = APValue(APValue::UninitArray(), 0, Size.getZExtValue());
67836783
Result.addArray(Info, E, cast<ConstantArrayType>(AllocType));
@@ -9039,8 +9039,8 @@ class PointerExprEvaluator
90399039
QualType CharTy = Info.Ctx.CharTy.withConst();
90409040
APInt Size(Info.Ctx.getTypeSize(Info.Ctx.getSizeType()),
90419041
ResultStr.size() + 1);
9042-
QualType ArrayTy = Info.Ctx.getConstantArrayType(CharTy, Size, nullptr,
9043-
ArrayType::Normal, 0);
9042+
QualType ArrayTy = Info.Ctx.getConstantArrayType(
9043+
CharTy, Size, nullptr, ArraySizeModifier::Normal, 0);
90449044

90459045
StringLiteral *SL =
90469046
StringLiteral::Create(Info.Ctx, ResultStr, StringLiteral::Ordinary,
@@ -9863,7 +9863,7 @@ bool PointerExprEvaluator::VisitCXXNewExpr(const CXXNewExpr *E) {
98639863
}
98649864

98659865
AllocType = Info.Ctx.getConstantArrayType(AllocType, ArrayBound, nullptr,
9866-
ArrayType::Normal, 0);
9866+
ArraySizeModifier::Normal, 0);
98679867
} else {
98689868
assert(!AllocType->isArrayType() &&
98699869
"array allocation with non-array new");

clang/lib/AST/JSONNodeDumper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,13 +646,13 @@ void JSONNodeDumper::VisitRValueReferenceType(const ReferenceType *RT) {
646646

647647
void JSONNodeDumper::VisitArrayType(const ArrayType *AT) {
648648
switch (AT->getSizeModifier()) {
649-
case ArrayType::Star:
649+
case ArraySizeModifier::Star:
650650
JOS.attribute("sizeModifier", "*");
651651
break;
652-
case ArrayType::Static:
652+
case ArraySizeModifier::Static:
653653
JOS.attribute("sizeModifier", "static");
654654
break;
655-
case ArrayType::Normal:
655+
case ArraySizeModifier::Normal:
656656
break;
657657
}
658658

clang/lib/AST/ODRHash.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -931,7 +931,7 @@ class ODRTypeVisitor : public TypeVisitor<ODRTypeVisitor> {
931931

932932
void VisitArrayType(const ArrayType *T) {
933933
AddQualType(T->getElementType());
934-
ID.AddInteger(T->getSizeModifier());
934+
ID.AddInteger(llvm::to_underlying(T->getSizeModifier()));
935935
VisitQualifiers(T->getIndexTypeQualifiers());
936936
VisitType(T);
937937
}

clang/lib/AST/ScanfFormatString.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ bool ScanfSpecifier::fixType(QualType QT, QualType RawQT,
446446

447447
// If we know the target array length, we can use it as a field width.
448448
if (const ConstantArrayType *CAT = Ctx.getAsConstantArrayType(RawQT)) {
449-
if (CAT->getSizeModifier() == ArrayType::Normal)
449+
if (CAT->getSizeModifier() == ArraySizeModifier::Normal)
450450
FieldWidth = OptionalAmount(OptionalAmount::Constant,
451451
CAT->getSize().getZExtValue() - 1,
452452
"", 0, false);

clang/lib/AST/TextNodeDumper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,12 +1549,12 @@ void TextNodeDumper::VisitRValueReferenceType(const ReferenceType *T) {
15491549

15501550
void TextNodeDumper::VisitArrayType(const ArrayType *T) {
15511551
switch (T->getSizeModifier()) {
1552-
case ArrayType::Normal:
1552+
case ArraySizeModifier::Normal:
15531553
break;
1554-
case ArrayType::Static:
1554+
case ArraySizeModifier::Static:
15551555
OS << " static";
15561556
break;
1557-
case ArrayType::Star:
1557+
case ArraySizeModifier::Star:
15581558
OS << " *";
15591559
break;
15601560
}

clang/lib/AST/Type.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ ArrayType::ArrayType(TypeClass tc, QualType et, QualType can,
156156
: TypeDependence::None)),
157157
ElementType(et) {
158158
ArrayTypeBits.IndexTypeQuals = tq;
159-
ArrayTypeBits.SizeModifier = sm;
159+
ArrayTypeBits.SizeModifier = llvm::to_underlying(sm);
160160
}
161161

162162
unsigned ConstantArrayType::getNumAddressingBits(const ASTContext &Context,
@@ -218,7 +218,7 @@ void ConstantArrayType::Profile(llvm::FoldingSetNodeID &ID,
218218
unsigned TypeQuals) {
219219
ID.AddPointer(ET.getAsOpaquePtr());
220220
ID.AddInteger(ArraySize.getZExtValue());
221-
ID.AddInteger(SizeMod);
221+
ID.AddInteger(llvm::to_underlying(SizeMod));
222222
ID.AddInteger(TypeQuals);
223223
ID.AddBoolean(SizeExpr != nullptr);
224224
if (SizeExpr)
@@ -239,7 +239,7 @@ void DependentSizedArrayType::Profile(llvm::FoldingSetNodeID &ID,
239239
unsigned TypeQuals,
240240
Expr *E) {
241241
ID.AddPointer(ET.getAsOpaquePtr());
242-
ID.AddInteger(SizeMod);
242+
ID.AddInteger(llvm::to_underlying(SizeMod));
243243
ID.AddInteger(TypeQuals);
244244
E->Profile(ID, Context, true);
245245
}

clang/lib/AST/TypePrinter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ void TypePrinter::printConstantArrayAfter(const ConstantArrayType *T,
529529
OS << ' ';
530530
}
531531

532-
if (T->getSizeModifier() == ArrayType::Static)
532+
if (T->getSizeModifier() == ArraySizeModifier::Static)
533533
OS << "static ";
534534

535535
OS << T->getSize().getZExtValue() << ']';
@@ -562,9 +562,9 @@ void TypePrinter::printVariableArrayAfter(const VariableArrayType *T,
562562
OS << ' ';
563563
}
564564

565-
if (T->getSizeModifier() == VariableArrayType::Static)
565+
if (T->getSizeModifier() == ArraySizeModifier::Static)
566566
OS << "static ";
567-
else if (T->getSizeModifier() == VariableArrayType::Star)
567+
else if (T->getSizeModifier() == ArraySizeModifier::Star)
568568
OS << '*';
569569

570570
if (T->getSizeExpr())

clang/lib/CodeGen/CGAtomic.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ namespace {
101101
llvm::APInt Size(
102102
/*numBits=*/32,
103103
C.toCharUnitsFromBits(AtomicSizeInBits).getQuantity());
104-
AtomicTy =
105-
C.getConstantArrayType(C.CharTy, Size, nullptr, ArrayType::Normal,
106-
/*IndexTypeQuals=*/0);
104+
AtomicTy = C.getConstantArrayType(C.CharTy, Size, nullptr,
105+
ArraySizeModifier::Normal,
106+
/*IndexTypeQuals=*/0);
107107
}
108108
AtomicAlign = ValueAlign = lvalue.getAlignment();
109109
} else if (lvalue.isVectorElt()) {

0 commit comments

Comments
 (0)