Index: lib/AST/ExprConstant.cpp =================================================================== --- lib/AST/ExprConstant.cpp +++ lib/AST/ExprConstant.cpp @@ -433,7 +433,7 @@ /// rules. For example, the RHS of (0 && foo()) is not evaluated. We can /// evaluate the expression regardless of what the RHS is, but C only allows /// certain things in certain situations. - struct LLVM_ALIGNAS(/*alignof(uint64_t)*/ 8) EvalInfo { + struct EvalInfo { ASTContext &Ctx; /// EvalStatus - Contains information about the evaluation. @@ -471,7 +471,7 @@ /// The current array initialization index, if we're performing array /// initialization. - uint64_t ArrayInitIndex = -1; + uint32_t ArrayInitIndex = -1; /// HasActiveDiagnostic - Was the previous diagnostic stored? If so, further /// notes attached to it will also be stored, otherwise they will not be. @@ -810,7 +810,7 @@ class ArrayInitLoopIndex { EvalInfo &Info; - uint64_t OuterIndex; + uint32_t OuterIndex; public: ArrayInitLoopIndex(EvalInfo &Info) @@ -819,7 +819,7 @@ } ~ArrayInitLoopIndex() { Info.ArrayInitIndex = OuterIndex; } - operator uint64_t&() { return Info.ArrayInitIndex; } + operator uint32_t&() { return Info.ArrayInitIndex; } }; }; @@ -6299,7 +6299,7 @@ auto *CAT = cast(E->getType()->castAsArrayTypeUnsafe()); - uint64_t Elements = CAT->getSize().getZExtValue(); + uint32_t Elements = CAT->getSize().getZExtValue(); Result = APValue(APValue::UninitArray(), Elements, Elements); LValue Subobject = This; @@ -6477,7 +6477,7 @@ } bool VisitArrayInitIndexExpr(const ArrayInitIndexExpr *E) { - if (Info.ArrayInitIndex == uint64_t(-1)) { + if (Info.ArrayInitIndex == uint32_t(-1)) { // We were asked to evaluate this subexpression independent of the // enclosing ArrayInitLoopExpr. We can't do that. Info.FFDiag(E);