================
@@ -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

Reply via email to