================ @@ -4348,8 +4348,18 @@ LValue CodeGenFunction::EmitMatrixSubscriptExpr(const MatrixSubscriptExpr *E) { !E->isIncomplete() && "incomplete matrix subscript expressions should be rejected during Sema"); LValue Base = EmitLValue(E->getBase()); - llvm::Value *RowIdx = EmitScalarExpr(E->getRowIdx()); - llvm::Value *ColIdx = EmitScalarExpr(E->getColumnIdx()); + + // Extend or truncate the index type to 32 or 64-bits. + auto EmitIndex = [this](const Expr *E) { ---------------- rjmccall wrote:
Can you just pull this out as a helper function on CGF and then call it in both places? It looks like `EmitArraySubscriptExpr` does something similar, but it wouldn't be easy to share the logic because it also potentially emits a sanitizer check. On the other hand, is that something we should also be doing here? I assume this is UB if it's out-of-bounds. We always have static bounds on matrix types, right? https://github.com/llvm/llvm-project/pull/103044 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits