[clang] [CIR] SubscriptExpr for VariableLengthArray (PR #175370)
Amr Hesham via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 13 09:17:44 PST 2026
================
@@ -339,3 +339,57 @@ int f5(unsigned long len) {
// OGCG: %[[STACK_RESTORE_PTR:.*]] = load ptr, ptr %[[SAVED_STACK]]
// OGCG: call void @llvm.stackrestore.p0(ptr %[[STACK_RESTORE_PTR]])
// OGCG: ret i32 %[[ARR_VAL]]
+
+void vla_subscript_expr() {
+ int **a;
+ unsigned long n = 5;
+ (int (**)[n]){&a}[0][1][5] = 0;
----------------
AmrDeveloper wrote:
I think the PR title did not contain the full details, but we need the type of the Subscript expression to be VLA
```c++
if (const VariableArrayType *vla =
getContext().getAsVariableArrayType(e->getType())) {
```
For the expected code, we already support it because the result of the index expr will be int
https://github.com/llvm/llvm-project/blob/0a69bccce9ec985ee875154b0a0689be1facc0df/clang/test/CIR/CodeGen/vla.c#L285-L288
> This is an odd choice for the test. Where did this come from?
I agree it's looks odd :D, I was checking which code from OGCG we support and which part is NYI and i found this interesting cose
https://github.com/llvm/llvm-project/blob/0a69bccce9ec985ee875154b0a0689be1facc0df/clang/test/CodeGen/vla.c#L167-L187
https://github.com/llvm/llvm-project/pull/175370
More information about the cfe-commits
mailing list