================
@@ -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) {
----------------
fhahn wrote:

> Can you just pull this out as a helper function on CGF and then call it in 
> both places?

Done, thanks

> 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?

yes we have static bounds, so it would probably make sense to extend to logic 
to also support sanitizer checks for matrix subscript expressions. But probably 
better done separately?

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