Index: tests/.expect/array-ERR1.txt
===================================================================
--- tests/.expect/array-ERR1.txt	(revision b2fa3c21fd80cbfee17d58ed9945fc3138b226d8)
+++ tests/.expect/array-ERR1.txt	(revision 7ae39f0af27a996c64f27f49095f91e7f11be266)
@@ -1,3 +1,3 @@
-array.cfa:105:25: warning: Preprocessor started
+array.cfa:119:25: warning: Preprocessor started
 array.cfa:40:22: error: '[*]' not allowed in other than function prototype scope
 array.cfa:46:24: error: '[*]' not allowed in other than function prototype scope
Index: tests/.expect/array-ERR2.txt
===================================================================
--- tests/.expect/array-ERR2.txt	(revision b2fa3c21fd80cbfee17d58ed9945fc3138b226d8)
+++ tests/.expect/array-ERR2.txt	(revision 7ae39f0af27a996c64f27f49095f91e7f11be266)
@@ -1,2 +1,2 @@
-array.cfa:105:25: warning: Preprocessor started
-array.cfa:95:32: error: syntax error, unexpected STATIC before token "static"
+array.cfa:119:25: warning: Preprocessor started
+array.cfa:109:32: error: syntax error, unexpected STATIC before token "static"
Index: tests/.expect/array-ERR3.txt
===================================================================
--- tests/.expect/array-ERR3.txt	(revision b2fa3c21fd80cbfee17d58ed9945fc3138b226d8)
+++ tests/.expect/array-ERR3.txt	(revision 7ae39f0af27a996c64f27f49095f91e7f11be266)
@@ -1,2 +1,2 @@
-array.cfa:105:25: warning: Preprocessor started
-array.cfa:96:32: error: syntax error, unexpected ']' before token "]"
+array.cfa:119:25: warning: Preprocessor started
+array.cfa:110:32: error: syntax error, unexpected ']' before token "]"
Index: tests/.expect/array.txt
===================================================================
--- tests/.expect/array.txt	(revision b2fa3c21fd80cbfee17d58ed9945fc3138b226d8)
+++ tests/.expect/array.txt	(revision 7ae39f0af27a996c64f27f49095f91e7f11be266)
@@ -1,1 +1,1 @@
-array.cfa:105:25: warning: Preprocessor started
+array.cfa:119:25: warning: Preprocessor started
Index: tests/array.cfa
===================================================================
--- tests/array.cfa	(revision b2fa3c21fd80cbfee17d58ed9945fc3138b226d8)
+++ tests/array.cfa	(revision 7ae39f0af27a996c64f27f49095f91e7f11be266)
@@ -81,21 +81,35 @@
     }
     [ * [int]( [3] int T,
-            [const 3] int p1,
-            [static 3] int p2,
-            [static const 3] int p3
-            )
+               [const 3] int p1,
+               [static 3] int p2,
+               [static const 3] int p3
+             )
     ] janes_twin(...) {
     }
     #endif
 
+    // GCC 11+ gives a false warning (-Wvla-parameter) on the valid (C11 ARM p134-135) combination:
+    // declare with type int[*], define with type int[n].
+    // https://gcc.gnu.org/bugzilla//show_bug.cgi?id=100420 suggests the internal representation of
+    // of a[*] is the same as a[0].
+    // https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wno-vla-parameter explains
+    // the purpose of -Wvla-parameter is to report conflicts between int[] and int[n], which would
+    // understandably also include those between int[42] and int[n].
+    // https://stackoverflow.com/questions/17371645/why-use-an-asterisk-instead-of-an-integer-for-a-vla-array-parameter-of-a-f
+    // explains the declare-*, define-n pattern.
 
-//  int fm1( int, int, int[][*] );                      // TODO: investigate gcc-11 warning 
-//  int fm1( int r, int c, int m[][c] ) {}
+    // To work around the false warning, and keep to this test's purpose of exercising CFA's
+    // handling of exotic C array syntax, what would ideally be demonstrated as a declaration of
+    // fm1, followed by its definition, is instead split into fm1x and fm1y.  And similarly for
+    // fm5.
+
+    int fm1x( int, int, int[][*] );
+    int fm1y( int r, int c, int m[][c] ) {}
     int fm2( int r, int c, int (*m)[c] ) {}             // same as fm1
 E2( int fm3( int r, int c, int m[][static c] ) {}  )    // that's not static
 E3( int fm4( int r, int c, int m[][] );            )    // m's immediate element type is incomplete
-    int fm5( int, int, int[*][*] );                     // same as fm1 decl
+    int fm5x( int, int, int[*][*] );                    // same as fm1 decl
                                                         #ifndef __cforall
-    int fm5( int r, int c, int m[r][c] ) {}             // BUG 276: CFA chokes but should accept
+    int fm5y( int r, int c, int m[r][c] ) {}            // BUG 276: CFA chokes but should accept
                                                         // C: same as fm1 defn
                                                         #endif
