Index: doc/theses/colby_parsons_MMAth/Makefile
===================================================================
--- doc/theses/colby_parsons_MMAth/Makefile	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ doc/theses/colby_parsons_MMAth/Makefile	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -85,4 +85,5 @@
 	diagrams/cyclic_swap \
 	diagrams/steal \
+	diagrams/uCpp_select_tree \
 }
 
Index: doc/theses/colby_parsons_MMAth/diagrams/uCpp_select_tree.tikz
===================================================================
--- doc/theses/colby_parsons_MMAth/diagrams/uCpp_select_tree.tikz	(revision c68f6e673bd386315fa7950c1f6142c500964852)
+++ doc/theses/colby_parsons_MMAth/diagrams/uCpp_select_tree.tikz	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -0,0 +1,65 @@
+
+
+\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt        
+
+\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
+%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300
+
+%Shape: Circle [id:dp4666126130106545] 
+\draw   (55,34) .. controls (55,20.19) and (66.19,9) .. (80,9) .. controls (93.81,9) and (105,20.19) .. (105,34) .. controls (105,47.81) and (93.81,59) .. (80,59) .. controls (66.19,59) and (55,47.81) .. (55,34) -- cycle ;
+%Shape: Circle [id:dp7972787896144657] 
+\draw   (20,90) .. controls (20,76.19) and (31.19,65) .. (45,65) .. controls (58.81,65) and (70,76.19) .. (70,90) .. controls (70,103.81) and (58.81,115) .. (45,115) .. controls (31.19,115) and (20,103.81) .. (20,90) -- cycle ;
+%Shape: Square [id:dp6327612051092772] 
+\draw   (10,127) -- (33.21,127) -- (33.21,150.21) -- (10,150.21) -- cycle ;
+%Shape: Square [id:dp6610861004460824] 
+\draw   (57,127) -- (80.21,127) -- (80.21,150.21) -- (57,150.21) -- cycle ;
+%Shape: Square [id:dp5769921557469935] 
+\draw   (86,70) -- (109.21,70) -- (109.21,93.21) -- (86,93.21) -- cycle ;
+%Straight Lines [id:da9007943017674418] 
+\draw    (45,115) -- (22.5,126.38) ;
+\draw [shift={(20.71,127.29)}, rotate = 333.17] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+%Straight Lines [id:da45053593270330183] 
+\draw    (45,115) -- (66.94,126.37) ;
+\draw [shift={(68.71,127.29)}, rotate = 207.39] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+%Straight Lines [id:da11421630477760258] 
+\draw    (80,59) -- (60.52,68.42) ;
+\draw [shift={(58.71,69.29)}, rotate = 334.21] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+%Straight Lines [id:da47002883241959004] 
+\draw    (80,59) -- (95.98,68.28) ;
+\draw [shift={(97.71,69.29)}, rotate = 210.14] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+%Right Arrow [id:dp2689887203763517] 
+\draw   (118,44.57) -- (161.63,44.57) -- (161.63,32) -- (190.71,57.14) -- (161.63,82.29) -- (161.63,69.71) -- (118,69.71) -- cycle ;
+%Shape: Circle [id:dp3806134029408177] 
+\draw   (204,35) .. controls (204,21.19) and (215.19,10) .. (229,10) .. controls (242.81,10) and (254,21.19) .. (254,35) .. controls (254,48.81) and (242.81,60) .. (229,60) .. controls (215.19,60) and (204,48.81) .. (204,35) -- cycle ;
+%Shape: Square [id:dp6121267920255553] 
+\draw   (196,71) -- (219.21,71) -- (219.21,94.21) -- (196,94.21) -- cycle ;
+%Shape: Square [id:dp7851746657406438] 
+\draw   (236,71) -- (259.21,71) -- (259.21,94.21) -- (236,94.21) -- cycle ;
+%Straight Lines [id:da5364151374343509] 
+\draw    (229,60) -- (209.52,69.42) ;
+\draw [shift={(207.71,70.29)}, rotate = 334.21] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+%Straight Lines [id:da8137812029340568] 
+\draw    (229,60) -- (246.94,69.36) ;
+\draw [shift={(248.71,70.29)}, rotate = 207.55] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
+
+% Text Node
+\draw (16,131) node [anchor=north west][inner sep=0.75pt]   [align=left] {A};
+% Text Node
+\draw (73,27) node [anchor=north west][inner sep=0.75pt]   [align=left] {or};
+% Text Node
+\draw (32,84) node [anchor=north west][inner sep=0.75pt]   [align=left] {and};
+% Text Node
+\draw (63,131) node [anchor=north west][inner sep=0.75pt]   [align=left] {B};
+% Text Node
+\draw (92,74) node [anchor=north west][inner sep=0.75pt]   [align=left] {C};
+% Text Node
+\draw (122,49.57) node [anchor=north west][inner sep=0.75pt]   [align=left] {{\footnotesize GA is false}};
+% Text Node
+\draw (222,28) node [anchor=north west][inner sep=0.75pt]   [align=left] {or};
+% Text Node
+\draw (202,75) node [anchor=north west][inner sep=0.75pt]   [align=left] {B};
+% Text Node
+\draw (242,75) node [anchor=north west][inner sep=0.75pt]   [align=left] {C};
+
+
+\end{tikzpicture}
Index: doc/theses/colby_parsons_MMAth/glossary.tex
===================================================================
--- doc/theses/colby_parsons_MMAth/glossary.tex	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ doc/theses/colby_parsons_MMAth/glossary.tex	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -41,5 +41,5 @@
 \newabbreviation{dwcas}{DWCAS}{\Newterm{double-wide (width) compare-and-set (swap)}}
 \newabbreviation{dcas}{DCAS}{\Newterm{double compare-and-set (swap)}}
-\newabbreviation{dcasw}{DCASW}{\Newterm{weak double compare-and-set (swap)}}
+\newabbreviation{qpcas}{QPCAS}{\Newterm{queue pointer compare-and-set (swap)}}
 \newabbreviation{ll}{LL}{\Newterm{load linked}}
 \newabbreviation{sc}{SC}{\Newterm{store conditional}}
Index: doc/theses/colby_parsons_MMAth/text/actors.tex
===================================================================
--- doc/theses/colby_parsons_MMAth/text/actors.tex	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ doc/theses/colby_parsons_MMAth/text/actors.tex	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -578,5 +578,5 @@
 
 In more detail, the \CFA work-stealing algorithm begins by iterating over its message queues twice without finding any work before it tries to steal a queue from another worker.
-Stealing a queue is done wait-free (\ie no busy waiting) with a few atomic instructions that only create contention with other stealing workers not the victim.
+Stealing a queue is done atomically with a few atomic instructions that only create contention with other stealing workers not the victim.
 The complexity in the implementation is that victim gulping does not take the mailbox queue;
 rather it atomically transfers the mailbox nodes to another queue leaving the mailbox empty, as discussed in Section~\ref{s:executor}.
@@ -700,5 +700,5 @@
 \subsection{Queue Pointer Swap}\label{s:swap}
 
-To atomically swap the two @worker_queues@ pointers during work stealing, a novel wait-free swap-algorithm is needed.
+To atomically swap the two @worker_queues@ pointers during work stealing, a novel atomic swap-algorithm is needed.
 The \gls{cas} is a read-modify-write instruction available on most modern architectures.
 It atomically compares two memory locations, and if the values are equal, it writes a new value into the first memory location.
@@ -737,10 +737,10 @@
 }
 \end{cfa}
-and can swap two values, where the comparisons are superfluous.
+\gls{dcas} can be used to swap two values; for this use case the comparisons are superfluous.
 \begin{cfa}
 DCAS( x, y, x, y, y, x );
 \end{cfa}
 A restrictive form of \gls{dcas} can be simulated using \gls{ll}/\gls{sc}~\cite{Brown13} or more expensive transactional memory with the same progress property problems as LL/SC.
-(There is waning interest in transactional memory and it seems to be fading away.)
+% (There is waning interest in transactional memory and it seems to be fading away.)
 
 Similarly, very few architectures have a true memory/memory swap instruction (Motorola M68K, SPARC 32-bit).
@@ -749,11 +749,11 @@
 
 Either a true memory/memory swap instruction or a \gls{dcas} would provide the ability to atomically swap two memory locations, but unfortunately neither of these instructions are supported on the architectures used in this work.
-Hence, a novel atomic swap for this use case is simulated, called \gls{dcasw}.
-The \gls{dcasw} is effectively a \gls{dcas} special cased in two ways:
+Hence, a novel atomic swap specific to the actor use case is simulated, called \gls{qpcas}.
+The \gls{qpcas} is effectively a \gls{dcas} special cased in a few ways:
 \begin{enumerate}
 \item
 It works on two separate memory locations, and hence, is logically the same as.
 \begin{cfa}
-bool DCASW( T * dst, T * src ) {
+bool QPCAS( T * dst, T * src ) {
 	return DCAS( dest, src, *dest, *src, *src, *dest );
 }
@@ -762,5 +762,5 @@
 The values swapped are never null pointers, so a null pointer can be used as an intermediate value during the swap.
 \end{enumerate}
-Figure~\ref{f:dcaswImpl} shows the \CFA pseudocode for the \gls{dcasw}.
+Figure~\ref{f:qpcasImpl} shows the \CFA pseudocode for the \gls{qpcas}.
 In detail, a thief performs the following steps to swap two pointers:
 \begin{enumerate}[start=0]
@@ -770,11 +770,8 @@
 verifies the stored copy of the victim queue pointer, @vic_queue@, is valid.
 If @vic_queue@ is null, then the victim queue is part of another swap so the operation fails.
-No state has changed at this point so no fixup is needed.
-Note, @my_queue@ can never be equal to null at this point since thieves only set their own queues pointers to null when stealing.
-At no other point is a queue pointer set to null.
-Since each worker owns a disjoint range of the queue array, it is impossible for @my_queue@ to be null.
-Note, this algorithm is simplified due to each worker owning a disjoint range, allowing only the @vic_queue@ to be checked for null.
-This was not listed as a special case of this algorithm, since this requirement can be avoided by modifying Step 1 of Figure~\ref{f:dcaswImpl} to also check @my_queue@ for null.
-Further discussion of this generalization is omitted since it is not needed for the presented application.
+No state has changed at this point so the thief just returns.
+Note, thieves only set their own queues pointers to null when stealing, and queue pointers are not set to null anywhere else.
+As such, it is impossible for @my_queue@ to be null since each worker owns a disjoint range of the queue array.
+Hence, only @vic_queue@ is checked for null.
 \item
 attempts to atomically set the thief's queue pointer to null.
@@ -782,5 +779,8 @@
 At this point, the thief-turned-victim fails, and since it has not changed any state, it just returns false.
 If the @CAS@ succeeds, the thief's queue pointer is now null.
-Nulling the pointer is safe since only thieves look at other worker's queue ranges, and whenever thieves need to dereference a queue pointer, it is checked for null.
+Only thieves look at other worker's queue ranges, and whenever thieves need to dereference a queue pointer, it is checked for null.
+A thief can only see the null queue pointer when looking for queues to steal or attempting a queue swap.
+If looking for queues, the thief will skip the null pointer, thus only the queue swap case needs to be considered for correctness.
+
 \item
 attempts to atomically set the victim's queue pointer to @my_queue@.
@@ -788,5 +788,5 @@
 If the @CAS@ fails, the thief's queue pointer must be restored to its previous value before returning.
 \item
-set the thief's queue pointer to @vic_queue@ completing the swap.
+sets the thief's queue pointer to @vic_queue@ completing the swap.
 \end{enumerate}
 
@@ -820,12 +820,12 @@
 }
 \end{cfa}
-\caption{DCASW Concurrent}
-\label{f:dcaswImpl}
+\caption{QPCAS Concurrent}
+\label{f:qpcasImpl}
 \end{figure}
 
 \begin{theorem}
-\gls{dcasw} is correct in both the success and failure cases.
+\gls{qpcas} is correct in both the success and failure cases.
 \end{theorem}
-To verify sequential correctness, Figure~\ref{f:seqSwap} shows a simplified \gls{dcasw}.
+To verify sequential correctness, Figure~\ref{f:seqSwap} shows a simplified \gls{qpcas}.
 Step 1 is missing in the sequential example since it only matters in the concurrent context.
 By inspection, the sequential swap copies each pointer being swapped, and then the original values of each pointer are reset using the copy of the other pointer.
@@ -845,14 +845,14 @@
 }
 \end{cfa}
-\caption{DCASW Sequential}
+\caption{QPCAS Sequential}
 \label{f:seqSwap}
 \end{figure}
 
-To verify concurrent correctness, it is necessary to show \gls{dcasw} is wait-free, \ie all thieves fail or succeed in swapping the queues in a finite number of steps.
-This property is straightforward, because there are no locks or looping.
-As well, there is no retry mechanism in the case of a failed swap, since a failed swap either means the work is already stolen or that work is stolen from the thief.
-In both cases, it is apropos for a thief to give up stealing.
-
-The proof of correctness is shown through the existence of an invariant.
+% All thieves fail or succeed in swapping the queues in a finite number of steps.
+% This is straightforward, because there are no locks or looping.
+% As well, there is no retry mechanism in the case of a failed swap, since a failed swap either means the work is already stolen or that work is stolen from the thief.
+% In both cases, it is apropos for a thief to give up stealing.
+
+The concurrent proof of correctness is shown through the existence of an invariant.
 The invariant states when a queue pointer is set to @0p@ by a thief, then the next write to the pointer can only be performed by the same thief.
 To show that this invariant holds, it is shown that it is true at each step of the swap.
@@ -877,9 +877,9 @@
 Once a thief atomically sets their queue pointer to be @0p@ in step 2, the invariant guarantees that that pointer does not change.
 In the success case of step 3, it is known the value of the victim's queue-pointer, which is not overwritten, must be @vic_queue@ due to the use of @CAS@.
-Given that the pointers all have unique memory locations, this first write of the successful swap is correct since it can only occur when the pointer has not changed.
+Given that the pointers all have unique memory locations (a pointer is never swapped with itself), this first write of the successful swap is correct since it can only occur when the pointer has not changed.
 By the invariant, the write back in the successful case is correct since no other worker can write to the @0p@ pointer.
 In the failed case of step 3, the outcome is correct in steps 1 and 2 since no writes have occurred so the program state is unchanged.
 Therefore, the program state is safely restored to the state it had prior to the @0p@ write in step 2, because the invariant makes the write back to the @0p@ pointer safe.
-Note that the assumption of the pointers having unique memory locations prevents the ABA problem in this usage of \gls{dcasw}, but it is not needed for correctness of the general \gls{dcasw} operation.
+Note that the pointers having unique memory locations prevents the ABA problem.
 
 \begin{comment}
@@ -905,5 +905,5 @@
 First it is important to state that a thief does not attempt to steal from themselves.
 As such, the victim here is not also a thief.
-Stepping through the code in \ref{f:dcaswImpl}, for all thieves, steps 0-1 succeed since the victim is not stealing and has no queue pointers set to be @0p@.
+Stepping through the code in \ref{f:qpcasImpl}, for all thieves, steps 0-1 succeed since the victim is not stealing and has no queue pointers set to be @0p@.
 Similarly, for all thieves, step 2 succeed since no one is stealing from any of the thieves.
 In step 3, the first thief to @CAS@ wins the race and successfully swaps the queue pointer.
Index: doc/theses/colby_parsons_MMAth/text/conclusion.tex
===================================================================
--- doc/theses/colby_parsons_MMAth/text/conclusion.tex	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ doc/theses/colby_parsons_MMAth/text/conclusion.tex	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -10,8 +10,16 @@
 The @waituntil@ statement aids in writing concurrent programs in both the message passing and shared memory paradigms of concurrency.
 Furthermore, no other language provides a synchronous multiplexing tool polymorphic over resources like \CFA's @waituntil@.
-From the novel copy-queue data structure in the actor system and the plethora of user-supporting safety features, all these utilities build upon existing tools with value added.
+
+On overview of the contributions in this thesis include the following:
+\begin{enumerate}
+\item The mutex statement, which provides performant and deadlock-free multiple lock acquisition.
+\item Channels with comparable performance to Go, that have safety and productivity features including deadlock detection and an easy-to-use exception-based channel @close@ routine.
+\item An in-memory actor system that achieved the lowest latency message send of systems tested due to the novel copy-queue data structure. The actor system presented has built-in detection of six common actor errors, and it has good performance compared to other systems on all benchmarks.
+\item A @waituntil@ statement which tackles the hard problem of allowing a thread to safely synchronously wait for some set of concurrent resources.
+\end{enumerate}
+
+From the novel copy-queue data structure in the actor system and the plethora of user-supporting safety features, all these utilities build upon existing concurrent tooling with value added.
 Performance results verify that each new feature is comparable or better than similar features in other programming languages.
-
-\PAB{This part seems a little short.}
+All in all, this suite of concurrent tools expands users' ability to easily write safe and performant multi-threaded programs in \CFA.
 
 \section{Future Work}
Index: doc/theses/colby_parsons_MMAth/text/waituntil.tex
===================================================================
--- doc/theses/colby_parsons_MMAth/text/waituntil.tex	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ doc/theses/colby_parsons_MMAth/text/waituntil.tex	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -382,7 +382,8 @@
 More detail on channels and their interaction with @waituntil@ appear in Section~\ref{s:wu_chans}.
 
-The trait is used by having a blocking object return a type that supports the @is_selectable@ trait.
+The trait can be used directly by having a blocking object support the @is_selectable@ trait, or it can be used indirectly through routines that take the object as an argument.
+When used indirectly, the object's routine returns a type that supports the @is_selectable@ trait.
 This feature leverages \CFA's ability to overload on return type to select the correct overloaded routine for the @waituntil@ context.
-A selectable type is needed for types that want to support multiple operations such as channels that allow both reading and writing.
+Indirect support through routines is needed for types that want to support multiple operations such as channels that allow both reading and writing.
 
 \section{\lstinline{waituntil} Implementation}
@@ -520,5 +521,5 @@
 This work incurs a high cost for signalling threads and heavily increase contention on internal channel locks.
 Furthermore, the @waituntil@ statement is polymorphic and can support resources that do not have internal locks, which also makes this approach infeasible.
-As such, the exclusive-or semantics is lost when using both @and@ and @or@ operators since it cannot be supported without significant complexity and significantly affects @waituntil@ performance.
+As such, the exclusive-or semantics are lost when using both @and@ and @or@ operators since it cannot be supported without significant complexity and significantly affects @waituntil@ performance.
 
 It was deemed important that exclusive-or semantics are maintained when only @or@ operators are used, so this situation has been special-cased, and is handled by having all clauses race to set a value \emph{before} operating on the channel.
@@ -591,5 +592,35 @@
 If any other threads attempt to set a WUT's race pointer and see a pending value, they wait until the value changes before proceeding to ensure that, in the case the WUT fails, the signal is not lost.
 This protocol ensures that signals cannot be lost and that the two races can be resolved in a safe manner.
-\PAB{I bet one of the readers is going to ask you to write the pseudo code for this algorithm.}
+The implementation of this protocol is shown in Figure~\ref{f:WU_DeadlockAvoidance}.
+
+\begin{figure}
+\begin{cfa}
+bool pending_set_other( select_node & other, select_node & mine ) {
+    unsigned long int cmp_status = UNSAT;
+
+    // Try to set other status, if we succeed break and return true
+    while( !CAS( other.clause_status, &cmp_status, SAT ) ) {
+        if ( cmp_status == SAT )
+            return false; // If other status is SAT we lost so return false
+
+        // Toggle own status flag to allow other thread to potentially win
+        mine.status = UNSAT;
+
+        // Reset compare flag
+        cmp_status = UNSAT;
+
+        // Attempt to set own status flag back to PENDING to retry
+        if ( !CAS( mine.clause_status, &cmp_status, PENDING ) )
+            return false; // If we fail then we lost so return false
+        
+        // Reset compare flag
+        cmp_status = UNSAT;
+    }
+    return true;
+}
+\end{cfa}
+\caption{Exclusive-or \lstinline{waituntil} channel deadlock avoidance protocol}
+\label{f:WU_DeadlockAvoidance}
+\end{figure}
 
 Channels in \CFA have exception-based shutdown mechanisms that the @waituntil@ statement needs to support.
@@ -600,6 +631,26 @@
 
 It is trivial to check when a synchronous multiplexing utility is done for the or/xor relationship, since any resource becoming available means that the blocked thread can proceed and the @waituntil@ statement is finished.
-In \uC and \CFA, the \gls{synch_multiplex} mechanism have both an and/or relationship, which make the problem of checking for completion of the statement difficult.
-\PAB{Show an example of why this is difficult.}
+In \uC and \CFA, the \gls{synch_multiplex} mechanism have both an and/or relationship, which along with guards, make the problem of checking for completion of the statement difficult.
+Consider the @waituntil@ in Figure~\ref{f:WU_ComplexPredicate}.
+When the @waituntil@ thread wakes up, checking if the statement is complete is non-trivial.
+The predicate that will return if the statement in Figure~\ref{f:WU_ComplexPredicate} is satisfied is the following.
+\begin{cfa}
+A && B || C || !GA && B || !GB && A || !GA && !GB && !GC
+\end{cfa}
+Which simplifies to:
+\begin{cfa}
+( A || !GA ) && ( B || !GB ) || C || !GA && !GB && !GC
+\end{cfa}
+Checking a predicate this large with each iteration is expensive so \uC and \CFA both take steps to simplify checking statement completion.
+
+\begin{figure}
+\begin{cfa}
+when( GA ) waituntil( A ) {}
+and when( GB ) waituntil( B ) {}
+or when( GC ) waituntil( C ) {}
+\end{cfa}
+\caption{\lstinline{waituntil} with a non-trivial predicate}
+\label{f:WU_ComplexPredicate}
+\end{figure}
 
 In the \uC @_Select@ statement, this problem is solved by constructing a tree of the resources, where the internal nodes are operators and the leaves are booleans storing the state of each resource.
@@ -608,6 +659,14 @@
 Once the root of the tree has both subtrees marked as @true@ then the statement is complete.
 As an optimization, when the internal nodes are updated, the subtrees marked as @true@ are pruned and not examined again.
-To support statement guards in \uC, the tree prunes a branch if the corresponding guard is false.
-\PAB{Show an example.}
+To support statement guards in \uC, the tree is modified to remove an internal node if a guard is false to maintain the appropriate predicate representation.
+An diagram of the tree for the statement in Figure~\ref{f:WU_ComplexPredicate} is shown in Figure~\ref{f:uC_select_tree}, alongside the modification of the tree that occurs when @GA@ is @false@.
+
+\begin{figure}
+\begin{center}
+\input{diagrams/uCpp_select_tree.tikz}
+\end{center}
+\caption{\uC select tree modification}
+\label{f:uC_select_tree}
+\end{figure}
 
 The \CFA @waituntil@ statement blocks a thread until a set of resources have become available that satisfy the underlying predicate.
@@ -616,9 +675,27 @@
 Leveraging the compiler, a predicate routine is generated per @waituntil@ that when passes the statuses of the resources, returns @true@ when the @waituntil@ is done, and false otherwise.
 To support guards on the \CFA @waituntil@ statement, the status of a resource disabled by a guard is set to a boolean value that ensures that the predicate function behaves as if that resource is no longer part of the predicate.
-\PAB{Show an example.}
+The generated code allows the predicate that is checked with each iteration to be simplified to not check guard values.
+For example, the following would be generated for the @waituntil@ shown in Figure~\ref{f:WU_ComplexPredicate}.
+\begin{cfa}
+// statement completion predicate
+bool check_completion( select_node * nodes ) {
+    return nodes[0].status && nodes[1].status || nodes[2].status;
+}
+
+// skip statement if all guards false
+if ( GA || GB || GC ) {
+    select_node nodes[3];
+    nodes[0].status = !GA && GB; // A's status
+    nodes[1].status = !GB && GA; // B's status
+    nodes[2].status = !GC;       // C's status
+
+    // ... rest of waituntil codegen ...
+
+}
+\end{cfa}
 
 \uC's @_Select@, supports operators both inside and outside of the \lstinline[language=uC++]{_Select} clauses.
 In the following example, the code blocks run once their corresponding predicate inside the round braces is satisfied.
-% C_TODO put this is uC++ code style not cfa-style
+
 \begin{lstlisting}[language=uC++,{moredelim=**[is][\color{red}]{@}{@}}]
 Future_ISM<int> A, B, C, D;
@@ -640,7 +717,4 @@
 however, that opens the potential for livelock.
 Another possibility is to use resource ordering similar to \CFA's @mutex@ statement, but that alone is insufficient, if the resource ordering is not used universally.
-Additionally, using resource ordering could conflict with other semantics of the @waituntil@ statement.
-For example, consider if the locks in the example must be acquired in the order @D@, @B@, @C@, @A@ because of other @waituntil@ statements.
-\PAB{I don't understand: If all the locks are available, it becomes complex to both respect the ordering of the \lstinline{waituntil} when choosing which code block to run and also respect the lock ordering of \lstinline{D}, \lstinline{B}, \lstinline{C}, \lstinline{A} at the same time.}
 One other way this could be implemented is to wait until all resources for a given clause are available before proceeding to acquire them, but this also quickly becomes a poor approach.
 This approach does not work due to \gls{toctou} issues;
@@ -661,5 +735,5 @@
 \begin{cfa}
 bool when_conditions[N];
-for ( node in s )									$\C[3.75in]{// evaluate guards}$
+for ( node in nodes )									$\C[3.75in]{// evaluate guards}$
 	if ( node has guard ) 
 		when_conditions[node] = node_guard;
@@ -667,29 +741,33 @@
 		when_conditions[node] = true;
 
-select_nodes s[N];									$\C{// declare N select nodes}$
+if ( any when_conditions[node] == true ) {
+
+select_nodes nodes[N];									$\C{// declare N select nodes}$
 try {
-	for ( node in s )								$\C{// register nodes}$
-		if ( when_conditions[node] )
-			register_select( resource, node );
-
-	// ... set statuses for nodes with when_conditions[node] == false ...
-
-	while ( statement predicate not satisfied ) {	$\C{// check predicate}$
-		// block
-		for ( resource in waituntil statement ) {	$\C{// run true code blocks}$
-			if ( statement predicate is satisfied ) break;
-			if ( resource is avail )
-				try {
-					if( on_selected( resource ) )	$\C{// conditionally run block}$
-						run code block
-				} finally							$\C{// for exception safety}$
-					unregister_select( resource, node ); $\C{// immediate unregister}$
-		}
-	}
+    // ... set statuses for nodes with when_conditions[node] == false ...
+
+    for ( node in nodes )								$\C{// register nodes}$
+        if ( when_conditions[node] )
+            register_select( resource, node );
+
+    while ( !check_completion( nodes ) ) {	$\C{// check predicate}$
+        // block
+        for ( resource in waituntil statement ) {	$\C{// run true code blocks}$
+            if ( check_completion( nodes ) ) break;
+            if ( resource is avail )
+                try {
+                    if( on_selected( resource ) )	$\C{// conditionally run block}$
+                        run code block
+                } finally							$\C{// for exception safety}$
+                    unregister_select( resource, node ); $\C{// immediate unregister}$
+        }
+    }
 } finally {											$\C{// for exception safety}$
-	for ( registered nodes in s )					$\C{// deregister nodes}$
+	for ( registered nodes in nodes )					$\C{// deregister nodes}$
 		if ( when_conditions[node] && unregister_select( resource, node )
 				&& on_selected( resource ) ) 
 			run code block							$\C{// run code block upon unregister}\CRT$
+}
+
 }
 \end{cfa}
Index: src/AST/Create.cpp
===================================================================
--- src/AST/Create.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/AST/Create.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -42,17 +42,11 @@
 		return nullptr;
 	}
-	return new ast::FunctionDecl( decl->location,
-		decl->name,
-		vectorCopy( decl->type_params ),
-		vectorCopy( decl->assertions ),
-		vectorCopy( decl->params ),
-		vectorCopy( decl->returns ),
-		nullptr,
-		decl->storage,
-		decl->linkage,
-		vectorCopy( decl->attributes ),
-		decl->funcSpec,
-		decl->type->isVarArgs
-	);
+	// The cast and changing the original should be safe as long as the
+	// change is reverted before anything else sees it. It's also faster.
+	FunctionDecl * mutDecl = const_cast<FunctionDecl *>( decl );
+	CompoundStmt const * stmts = mutDecl->stmts.release();
+	FunctionDecl * copy = deepCopy( mutDecl );
+	mutDecl->stmts = stmts;
+	return copy;
 }
 
Index: src/AST/Util.cpp
===================================================================
--- src/AST/Util.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/AST/Util.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -20,6 +20,10 @@
 #include "Pass.hpp"
 #include "TranslationUnit.hpp"
+#include "Common/utility.h"
+#include "GenPoly/ScopedSet.h"
 
 #include <vector>
+
+using GenPoly::ScopedSet;
 
 namespace ast {
@@ -173,8 +177,195 @@
 };
 
+/// Checks that referred to nodes are in scope.
+/// This checks many readonly pointers to see if the declaration they are
+/// referring to is in scope by the structural rules of code.
+// Any escapes marked with a bug should be removed once the bug is fixed.
+struct InScopeCore : public ast::WithShortCircuiting {
+	ScopedSet<DeclWithType const *> typedDecls;
+	ScopedSet<TypeDecl const *> typeDecls;
+	// These 3 are really hard to check, because uses that originally ref. at
+	// a forward declaration can be rewired to point a later full definition.
+	ScopedSet<StructDecl const *> structDecls;
+	ScopedSet<UnionDecl const *> unionDecls;
+	ScopedSet<EnumDecl const *> enumDecls;
+	ScopedSet<TraitDecl const *> traitDecls;
+
+	bool isInGlobal = false;
+
+	void beginScope() {
+		typedDecls.beginScope();
+		typeDecls.beginScope();
+		structDecls.beginScope();
+		unionDecls.beginScope();
+		enumDecls.beginScope();
+		traitDecls.beginScope();
+	}
+
+	void endScope() {
+		typedDecls.endScope();
+		typeDecls.endScope();
+		structDecls.endScope();
+		unionDecls.endScope();
+		enumDecls.endScope();
+		traitDecls.endScope();
+	}
+
+	void previsit( ApplicationExpr const * expr ) {
+		// All isInGlobal manipulation is just to isolate this check.
+		// The invalid compound literals lead to bad ctor/dtors. [#280]
+		VariableExpr const * func = nullptr;
+		CastExpr const * cast = nullptr;
+		VariableExpr const * arg = nullptr;
+		if ( isInGlobal
+				&& 1 == expr->args.size()
+				&& ( func = expr->func.as<VariableExpr>() )
+				&& ( "?{}" == func->var->name || "^?{}" == func->var->name )
+				&& ( cast = expr->args[0].as<CastExpr>() )
+				&& ( arg = cast->arg.as<VariableExpr>() )
+				&& isPrefix( arg->var->name, "_compLit" ) ) {
+			visit_children = false;
+		}
+	}
+
+	void previsit( VariableExpr const * expr ) {
+		if ( !expr->var ) return;
+		// bitwise assignment escape [#281]
+		if ( expr->var->location.isUnset() ) return;
+		assert( typedDecls.contains( expr->var ) );
+	}
+
+	void previsit( FunctionType const * type ) {
+		// This is to avoid checking the assertions, which can point at the
+		// function's declaration and not the enclosing function.
+		for ( auto type_param : type->forall ) {
+			if ( type_param->formal_usage ) {
+				visit_children = false;
+				// We could check non-assertion fields here.
+			}
+		}
+	}
+
+	void previsit( TypeInstType const * type ) {
+		if ( !type->base ) return;
+		assertf( type->base->isManaged(), "Floating Node" );
+
+		// bitwise assignment escape [#281]
+		if ( type->base->location.isUnset() ) return;
+		// Formal types can actually look at out of scope variables.
+		if ( type->formal_usage ) return;
+		assert( typeDecls.contains( type->base ) );
+	}
+
+	void previsit( TraitInstType const * type ) {
+		if ( !type->base ) return;
+		assert( traitDecls.contains( type->base ) );
+	}
+
+	void previsit( ObjectDecl const * decl ) {
+		typedDecls.insert( decl );
+		// There are some ill-formed compound literals. [#280]
+		// The only known problem cases are at the top level.
+		if ( isPrefix( decl->name, "_compLit" ) ) {
+			visit_children = false;
+		}
+	}
+
+	void previsit( FunctionDecl const * decl ) {
+		typedDecls.insert( decl );
+		beginScope();
+		for ( auto & type_param : decl->type_params ) {
+			typeDecls.insert( type_param );
+		}
+		for ( auto & assertion : decl->assertions ) {
+			typedDecls.insert( assertion );
+		}
+		for ( auto & param : decl->params ) {
+			typedDecls.insert( param );
+		}
+		for ( auto & ret : decl->returns ) {
+			typedDecls.insert( ret );
+		}
+		// No special handling of withExprs.
+
+		// Part of the compound literal escape. [#280]
+		if ( "__global_init__" == decl->name
+				|| "__global_destroy__" == decl->name ) {
+			assert( !isInGlobal );
+			isInGlobal = true;
+		}
+	}
+
+	void postvisit( FunctionDecl const * decl ) {
+		endScope();
+		// Part of the compound literal escape. [#280]
+		if ( isInGlobal && ( "__global_init__" == decl->name
+				|| "__global_destroy__" == decl->name ) ) {
+			isInGlobal = false;
+		}
+	}
+
+	void previsit( StructDecl const * decl ) {
+		structDecls.insert( decl );
+		beginScope();
+		for ( auto & type_param : decl->params ) {
+			typeDecls.insert( type_param );
+		}
+	}
+
+	void postvisit( StructDecl const * ) {
+		endScope();
+	}
+
+	void previsit( UnionDecl const * decl ) {
+		unionDecls.insert( decl );
+		beginScope();
+		for ( auto & type_param : decl->params ) {
+			typeDecls.insert( type_param );
+		}
+	}
+
+	void postvisit( UnionDecl const * ) {
+		endScope();
+	}
+
+	void previsit( EnumDecl const * decl ) {
+		enumDecls.insert( decl );
+		if ( ast::EnumDecl::EnumHiding::Visible == decl->hide ) {
+			for ( auto & member : decl->members ) {
+				typedDecls.insert( member.strict_as<ast::DeclWithType>() );
+			}
+		}
+		beginScope();
+		for ( auto & type_param : decl->params ) {
+			typeDecls.insert( type_param );
+		}
+	}
+
+	void postvisit( EnumDecl const * ) {
+		endScope();
+	}
+
+	void previsit( TraitDecl const * decl ) {
+		traitDecls.insert( decl );
+		beginScope();
+		for ( auto & type_param : decl->params ) {
+			typeDecls.insert( type_param );
+		}
+	}
+
+	void postvisit( TraitDecl const * ) {
+		endScope();
+	}
+
+	void previsit( Designation const * ) {
+		visit_children = false;
+	}
+};
+
 } // namespace
 
 void checkInvariants( TranslationUnit & transUnit ) {
-	ast::Pass<InvariantCore>::run( transUnit );
+	Pass<InvariantCore>::run( transUnit );
+	Pass<InScopeCore>::run( transUnit );
 }
 
Index: src/InitTweak/FixInitNew.cpp
===================================================================
--- src/InitTweak/FixInitNew.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/InitTweak/FixInitNew.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -42,204 +42,1310 @@
 
 namespace InitTweak {
+
 namespace {
 
-	// Shallow copy the pointer list for return.
-	std::vector<ast::ptr<ast::TypeDecl>> getGenericParams( const ast::Type * t ) {
-		if ( auto inst = dynamic_cast<const ast::StructInstType *>( t ) ) {
-			return inst->base->params;
-		}
-		if ( auto inst = dynamic_cast<const ast::UnionInstType *>( t ) ) {
-			return inst->base->params;
-		}
-		return {};
-	}
-
-	/// Given type T, generate type of default ctor/dtor, i.e. function type void (*) (T &).
-	ast::FunctionDecl * genDefaultFunc(
-			const CodeLocation loc,
-			const std::string fname,
-			const ast::Type * paramType,
-			bool maybePolymorphic = true) {
-		std::vector<ast::ptr<ast::TypeDecl>> typeParams;
-		if ( maybePolymorphic ) typeParams = getGenericParams( paramType );
-		auto dstParam = new ast::ObjectDecl( loc,
-			"_dst",
-			new ast::ReferenceType( paramType ),
-			nullptr,
-			{},
-			ast::Linkage::Cforall
+// Shallow copy the pointer list for return.
+std::vector<ast::ptr<ast::TypeDecl>> getGenericParams( const ast::Type * t ) {
+	if ( auto inst = dynamic_cast<const ast::StructInstType *>( t ) ) {
+		return inst->base->params;
+	}
+	if ( auto inst = dynamic_cast<const ast::UnionInstType *>( t ) ) {
+		return inst->base->params;
+	}
+	return {};
+}
+
+/// Given type T, generate type of default ctor/dtor, i.e. function type void (*) (T &).
+ast::FunctionDecl * genDefaultFunc(
+		const CodeLocation loc,
+		const std::string fname,
+		const ast::Type * paramType,
+		bool maybePolymorphic = true) {
+	std::vector<ast::ptr<ast::TypeDecl>> typeParams;
+	if ( maybePolymorphic ) typeParams = getGenericParams( paramType );
+	auto dstParam = new ast::ObjectDecl( loc,
+		"_dst",
+		new ast::ReferenceType( paramType ),
+		nullptr,
+		{},
+		ast::Linkage::Cforall
+	);
+	return new ast::FunctionDecl( loc,
+		fname,
+		std::move(typeParams),
+		{dstParam},
+		{},
+		new ast::CompoundStmt(loc),
+		{},
+		ast::Linkage::Cforall
+	);
+}
+
+struct SelfAssignChecker {
+	void previsit( const ast::ApplicationExpr * appExpr );
+};
+
+struct StmtExprResult {
+	const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
+};
+
+/// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
+/// function calls need their parameters to be copy constructed
+struct InsertImplicitCalls : public ast::WithShortCircuiting {
+	const ast::Expr * postvisit( const ast::ApplicationExpr * appExpr );
+
+	// only handles each UniqueExpr once
+	// if order of visit does not change, this should be safe
+	void previsit (const ast::UniqueExpr *);
+
+	std::unordered_set<decltype(ast::UniqueExpr::id)> visitedIds;
+};
+
+/// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
+/// generate/resolve copy construction expressions for each, and generate/resolve destructors for both
+/// arguments and return value temporaries
+struct ResolveCopyCtors final : public ast::WithGuards, public ast::WithStmtsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithVisitorRef<ResolveCopyCtors>, public ast::WithConstTranslationUnit {
+	const ast::Expr * postvisit( const ast::ImplicitCopyCtorExpr * impCpCtorExpr );
+	const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
+	const ast::UniqueExpr * previsit( const ast::UniqueExpr * unqExpr );
+
+	/// handles distant mutations of environment manually.
+	/// WithConstTypeSubstitution cannot remember where the environment is from
+
+	/// MUST be called at start of overload previsit
+	void previsit( const ast::Expr * expr);
+	/// MUST be called at return of overload postvisit
+	const ast::Expr * postvisit(const ast::Expr * expr);
+
+	/// create and resolve ctor/dtor expression: fname(var, [cpArg])
+	const ast::Expr * makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg = nullptr );
+	/// true if type does not need to be copy constructed to ensure correctness
+	bool skipCopyConstruct( const ast::Type * type );
+	ast::ptr< ast::Expr > copyConstructArg( const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal );
+	ast::Expr * destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg );
+private:
+	/// hack to implement WithTypeSubstitution while conforming to mutation safety.
+	ast::TypeSubstitution * env         = nullptr;
+	bool                    envModified = false;
+};
+
+/// collects constructed object decls - used as a base class
+struct ObjDeclCollector : public ast::WithGuards, public ast::WithShortCircuiting {
+	// use ordered data structure to maintain ordering for set_difference and for consistent error messages
+	typedef std::list< const ast::ObjectDecl * > ObjectSet;
+	void previsit( const ast::CompoundStmt *compoundStmt );
+	void previsit( const ast::DeclStmt *stmt );
+
+	// don't go into other functions
+	void previsit( const ast::FunctionDecl * ) { visit_children = false; }
+
+protected:
+	ObjectSet curVars;
+};
+
+// debug
+template<typename ObjectSet>
+struct PrintSet {
+	PrintSet( const ObjectSet & objs ) : objs( objs ) {}
+	const ObjectSet & objs;
+};
+template<typename ObjectSet>
+PrintSet<ObjectSet> printSet( const ObjectSet & objs ) { return PrintSet<ObjectSet>( objs ); }
+template<typename ObjectSet>
+std::ostream & operator<<( std::ostream & out, const PrintSet<ObjectSet> & set) {
+	out << "{ ";
+	for ( auto & obj : set.objs ) {
+		out << obj->name << ", " ;
+	} // for
+	out << " }";
+	return out;
+}
+
+struct LabelFinder final : public ObjDeclCollector {
+	typedef std::map< std::string, ObjectSet > LabelMap;
+	// map of Label -> live variables at that label
+	LabelMap vars;
+
+	typedef ObjDeclCollector Parent;
+	using Parent::previsit;
+	void previsit( const ast::Stmt * stmt );
+
+	void previsit( const ast::CompoundStmt *compoundStmt );
+	void previsit( const ast::DeclStmt *stmt );
+};
+
+/// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
+/// (currently by FixInit)
+struct InsertDtors final : public ObjDeclCollector, public ast::WithStmtsToAdd<> {
+	typedef std::list< ObjectDecl * > OrderedDecls;
+	typedef std::list< OrderedDecls > OrderedDeclsStack;
+
+	InsertDtors( ast::Pass<LabelFinder> & finder ) : finder( finder ), labelVars( finder.core.vars ) {}
+
+	typedef ObjDeclCollector Parent;
+	using Parent::previsit;
+
+	void previsit( const ast::FunctionDecl * funcDecl );
+
+	void previsit( const ast::BranchStmt * stmt );
+private:
+	void handleGoto( const ast::BranchStmt * stmt );
+
+	ast::Pass<LabelFinder> & finder;
+	LabelFinder::LabelMap & labelVars;
+	OrderedDeclsStack reverseDeclOrder;
+};
+
+/// expand each object declaration to use its constructor after it is declared.
+struct FixInit : public ast::WithStmtsToAdd<> {
+	static void fixInitializers( ast::TranslationUnit &translationUnit );
+
+	const ast::DeclWithType * postvisit( const ast::ObjectDecl *objDecl );
+
+	std::list< ast::ptr< ast::Decl > > staticDtorDecls;
+};
+
+/// generate default/copy ctor and dtor calls for user-defined struct ctor/dtors
+/// for any member that is missing a corresponding ctor/dtor call.
+/// error if a member is used before constructed
+struct GenStructMemberCalls final : public ast::WithGuards, public ast::WithShortCircuiting, public ast::WithSymbolTable, public ast::WithVisitorRef<GenStructMemberCalls>, public ast::WithConstTranslationUnit {
+	void previsit( const ast::FunctionDecl * funcDecl );
+	const ast::DeclWithType * postvisit( const ast::FunctionDecl * funcDecl );
+
+	void previsit( const ast::MemberExpr * memberExpr );
+	void previsit( const ast::ApplicationExpr * appExpr );
+
+	/// Note: this post mutate used to be in a separate visitor. If this pass breaks, one place to examine is whether it is
+	/// okay for this part of the recursion to occur alongside the rest.
+	const ast::Expr * postvisit( const ast::UntypedExpr * expr );
+
+	SemanticErrorException errors;
+private:
+	template< typename... Params >
+	void emit( CodeLocation, const Params &... params );
+
+	ast::FunctionDecl * function = nullptr;
+	std::set< const ast::DeclWithType * > unhandled;
+	std::map< const ast::DeclWithType *, CodeLocation > usedUninit;
+	const ast::ObjectDecl * thisParam = nullptr;
+	bool isCtor = false; // true if current function is a constructor
+	const ast::StructDecl * structDecl = nullptr;
+};
+
+/// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
+struct FixCtorExprs final : public ast::WithDeclsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithConstTranslationUnit {
+	const ast::Expr * postvisit( const ast::ConstructorExpr * ctorExpr );
+};
+
+/// add CompoundStmts around top-level expressions so that temporaries are destroyed in the correct places.
+struct SplitExpressions : public ast::WithShortCircuiting {
+	ast::Stmt * postvisit( const ast::ExprStmt * stmt );
+	void previsit( const ast::TupleAssignExpr * expr );
+};
+
+/// find and return the destructor used in `input`. If `input` is not a simple destructor call, generate a thunk
+/// that wraps the destructor, insert it into `stmtsToAdd` and return the new function declaration
+const ast::DeclWithType * getDtorFunc( const ast::ObjectDecl * objDecl, const ast::Stmt * input, std::list< ast::ptr<ast::Stmt> > & stmtsToAdd ) {
+	const CodeLocation loc = input->location;
+	// unwrap implicit statement wrapper
+	// Statement * dtor = input;
+	assert( input );
+	// std::list< const ast::Expr * > matches;
+	auto matches = collectCtorDtorCalls( input );
+
+	if ( dynamic_cast< const ast::ExprStmt * >( input ) ) {
+		// only one destructor call in the expression
+		if ( matches.size() == 1 ) {
+			auto func = getFunction( matches.front() );
+			assertf( func, "getFunction failed to find function in %s", toString( matches.front() ).c_str() );
+
+			// cleanup argument must be a function, not an object (including function pointer)
+			if ( auto dtorFunc = dynamic_cast< const ast::FunctionDecl * > ( func ) ) {
+				if ( dtorFunc->type->forall.empty() ) {
+					// simple case where the destructor is a monomorphic function call - can simply
+					// use that function as the cleanup function.
+					return func;
+				}
+			}
+		}
+	}
+
+	// otherwise the cleanup is more complicated - need to build a single argument cleanup function that
+	// wraps the more complicated code.
+	static UniqueName dtorNamer( "__cleanup_dtor" );
+	std::string name = dtorNamer.newName();
+	ast::FunctionDecl * dtorFunc = genDefaultFunc( loc, name, objDecl->type->stripReferences(), false );
+	stmtsToAdd.push_back( new ast::DeclStmt(loc, dtorFunc ) );
+
+	// the original code contains uses of objDecl - replace them with the newly generated 'this' parameter.
+	const ast::ObjectDecl * thisParam = getParamThis( dtorFunc );
+	const ast::Expr * replacement = new ast::VariableExpr( loc, thisParam );
+
+	auto base = replacement->result->stripReferences();
+	if ( dynamic_cast< const ast::ArrayType * >( base ) || dynamic_cast< const ast::TupleType * > ( base ) ) {
+		// need to cast away reference for array types, since the destructor is generated without the reference type,
+		// and for tuple types since tuple indexing does not work directly on a reference
+		replacement = new ast::CastExpr( replacement, base );
+	}
+	auto dtor = ast::DeclReplacer::replace( input, ast::DeclReplacer::ExprMap{ std::make_pair( objDecl, replacement ) } );
+	auto mutStmts = dtorFunc->stmts.get_and_mutate();
+	mutStmts->push_back(strict_dynamic_cast<const ast::Stmt *>( dtor ));
+	dtorFunc->stmts = mutStmts;
+
+	return dtorFunc;
+}
+
+void FixInit::fixInitializers( ast::TranslationUnit & translationUnit ) {
+	ast::Pass<FixInit> fixer;
+
+	// can't use mutateAll, because need to insert declarations at top-level
+	// can't use DeclMutator, because sometimes need to insert IfStmt, etc.
+	SemanticErrorException errors;
+	for ( auto i = translationUnit.decls.begin(); i != translationUnit.decls.end(); ++i ) {
+		try {
+			// maybeAccept( *i, fixer ); translationUnit should never contain null
+			*i = (*i)->accept(fixer);
+			translationUnit.decls.splice( i, fixer.core.staticDtorDecls );
+		} catch( SemanticErrorException &e ) {
+			errors.append( e );
+		} // try
+	} // for
+	if ( ! errors.isEmpty() ) {
+		throw errors;
+	} // if
+}
+
+const ast::StmtExpr * StmtExprResult::previsit( const ast::StmtExpr * stmtExpr ) {
+	// we might loose the result expression here so add a pointer to trace back
+	assert( stmtExpr->result );
+	const ast::Type * result = stmtExpr->result;
+	if ( ! result->isVoid() ) {
+		auto mutExpr = mutate(stmtExpr);
+		const ast::CompoundStmt * body = mutExpr->stmts;
+		assert( ! body->kids.empty() );
+		mutExpr->resultExpr = body->kids.back().strict_as<ast::ExprStmt>();
+		return mutExpr;
+	}
+	return stmtExpr;
+}
+
+ast::Stmt * SplitExpressions::postvisit( const ast::ExprStmt * stmt ) {
+	// wrap each top-level ExprStmt in a block so that destructors for argument and return temporaries are destroyed
+	// in the correct places
+	ast::CompoundStmt * ret = new ast::CompoundStmt( stmt->location, { stmt } );
+	return ret;
+}
+
+void SplitExpressions::previsit( const ast::TupleAssignExpr * ) {
+	// don't do this within TupleAssignExpr, since it is already broken up into multiple expressions
+	visit_children = false;
+}
+
+// Relatively simple structural comparison for expressions, needed to determine
+// if two expressions are "the same" (used to determine if self assignment occurs)
+struct StructuralChecker {
+	// Strip all casts and then dynamic_cast.
+	template<typename T>
+	static const T * cast( const ast::Expr * expr ) {
+		// this might be too permissive. It's possible that only particular casts are relevant.
+		while ( auto cast = dynamic_cast< const ast::CastExpr * >( expr ) ) {
+			expr = cast->arg;
+		}
+		return dynamic_cast< const T * >( expr );
+	}
+
+	void previsit( const ast::Expr * ) {
+		// anything else does not qualify
+		result = false;
+	}
+
+	// ignore casts
+	void previsit( const ast::CastExpr * ) {}
+
+	void previsit( const ast::MemberExpr * memExpr ) {
+		if ( auto otherMember = cast< ast::MemberExpr >( other ) ) {
+			if ( otherMember->member == memExpr->member ) {
+				other = otherMember->aggregate;
+				return;
+			}
+		}
+		result = false;
+	}
+
+	void previsit( const ast::VariableExpr * varExpr ) {
+		if ( auto otherVar = cast< ast::VariableExpr >( other ) ) {
+			if ( otherVar->var == varExpr->var ) {
+				return;
+			}
+		}
+		result = false;
+	}
+
+	void previsit( const ast::AddressExpr * ) {
+		if ( auto addrExpr = cast< ast::AddressExpr >( other ) ) {
+			other = addrExpr->arg;
+			return;
+		}
+		result = false;
+	}
+
+	const ast::Expr * other;
+	bool result = true;
+	StructuralChecker( const ast::Expr * other ) : other(other) {}
+};
+
+bool structurallySimilar( const ast::Expr * e1, const ast::Expr * e2 ) {
+	return ast::Pass<StructuralChecker>::read( e1, e2 );
+}
+
+void SelfAssignChecker::previsit( const ast::ApplicationExpr * appExpr ) {
+	auto function = getFunction( appExpr );
+	// Doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment.
+	if ( function->name == "?=?" && appExpr->args.size() == 2
+			// Check for structural similarity (same variable use, ignore casts, etc.
+			// (but does not look too deeply, anything looking like a function is off limits).
+			&& structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
+		SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
+	}
+}
+
+const ast::Expr * InsertImplicitCalls::postvisit( const ast::ApplicationExpr * appExpr ) {
+	if ( auto function = appExpr->func.as<ast::VariableExpr>() ) {
+		if ( function->var->linkage.is_builtin ) {
+			// optimization: don't need to copy construct in order to call intrinsic functions
+			return appExpr;
+		} else if ( auto funcDecl = function->var.as<ast::DeclWithType>() ) {
+			auto ftype = dynamic_cast< const ast::FunctionType * >( GenPoly::getFunctionType( funcDecl->get_type() ) );
+			assertf( ftype, "Function call without function type: %s", toString( funcDecl ).c_str() );
+			if ( CodeGen::isConstructor( funcDecl->name ) && ftype->params.size() == 2 ) {
+				auto t1 = getPointerBase( ftype->params.front() );
+				auto t2 = ftype->params.back();
+				assert( t1 );
+
+				if ( ResolvExpr::typesCompatible( t1, t2 ) ) {
+					// optimization: don't need to copy construct in order to call a copy constructor
+					return appExpr;
+				} // if
+			} else if ( CodeGen::isDestructor( funcDecl->name ) ) {
+				// correctness: never copy construct arguments to a destructor
+				return appExpr;
+			} // if
+		} // if
+	} // if
+	CP_CTOR_PRINT( std::cerr << "InsertImplicitCalls: adding a wrapper " << appExpr << std::endl; )
+
+	// wrap each function call so that it is easy to identify nodes that have to be copy constructed
+	ast::ptr<ast::TypeSubstitution> tmp = appExpr->env;
+	auto mutExpr = mutate(appExpr);
+	mutExpr->env = nullptr;
+
+	auto expr = new ast::ImplicitCopyCtorExpr( appExpr->location, mutExpr );
+	// Move the type substitution to the new top-level. The substitution
+	// is needed to obtain the type of temporary variables so that copy
+	// constructor calls can be resolved.
+	expr->env = tmp;
+	return expr;
+}
+
+void ResolveCopyCtors::previsit(const ast::Expr * expr) {
+	if ( nullptr == expr->env ) {
+		return;
+	}
+	GuardValue( env ) = expr->env->clone();
+	GuardValue( envModified ) = false;
+}
+
+const ast::Expr * ResolveCopyCtors::postvisit(const ast::Expr * expr) {
+	// No local environment, skip.
+	if ( nullptr == expr->env ) {
+		return expr;
+	// Environment was modified, mutate and replace.
+	} else if ( envModified ) {
+		auto mutExpr = mutate(expr);
+		mutExpr->env = env;
+		return mutExpr;
+	// Environment was not mutated, delete the shallow copy before guard.
+	} else {
+		delete env;
+		return expr;
+	}
+}
+
+bool ResolveCopyCtors::skipCopyConstruct( const ast::Type * type ) { return ! isConstructable( type ); }
+
+const ast::Expr * ResolveCopyCtors::makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg ) {
+	assert( var );
+	assert( var->isManaged() );
+	assert( !cpArg || cpArg->isManaged() );
+	// arrays are not copy constructed, so this should always be an ExprStmt
+	ast::ptr< ast::Stmt > stmt = genCtorDtor(var->location, fname, var, cpArg );
+	assertf( stmt, "ResolveCopyCtors: genCtorDtor returned nullptr: %s / %s / %s", fname.c_str(), toString( var ).c_str(), toString( cpArg ).c_str() );
+	auto exprStmt = stmt.strict_as<ast::ImplicitCtorDtorStmt>()->callStmt.strict_as<ast::ExprStmt>();
+	ast::ptr<ast::Expr> untyped = exprStmt->expr; // take ownership of expr
+
+	// resolve copy constructor
+	// should only be one alternative for copy ctor and dtor expressions, since all arguments are fixed
+	// (VariableExpr and already resolved expression)
+	CP_CTOR_PRINT( std::cerr << "ResolvingCtorDtor " << untyped << std::endl; )
+	ast::ptr<ast::Expr> resolved = ResolvExpr::findVoidExpression(untyped, { symtab, transUnit().global } );
+	assert( resolved );
+	if ( resolved->env ) {
+		// Extract useful information and discard new environments. Keeping them causes problems in PolyMutator passes.
+		env->add( *resolved->env );
+		envModified = true;
+		auto mut = mutate(resolved.get());
+		assertf(mut == resolved.get(), "newly resolved expression must be unique");
+		mut->env = nullptr;
+	} // if
+	if ( auto assign = resolved.as<ast::TupleAssignExpr>() ) {
+		// fix newly generated StmtExpr
+		previsit( assign->stmtExpr );
+	}
+	return resolved.release();
+}
+
+ast::ptr<ast::Expr> ResolveCopyCtors::copyConstructArg(
+	const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal )
+{
+	static UniqueName tempNamer("_tmp_cp");
+	const CodeLocation loc = impCpCtorExpr->location;
+	// CP_CTOR_PRINT( std::cerr << "Type Substitution: " << *env << std::endl; )
+	assert( arg->result );
+	ast::ptr<ast::Type> result = arg->result;
+	if ( skipCopyConstruct( result ) ) return arg; // skip certain non-copyable types
+
+	// type may involve type variables, so apply type substitution to get temporary variable's actual type,
+	// since result type may not be substituted (e.g., if the type does not appear in the parameter list)
+	// Use applyFree so that types bound in function pointers are not substituted, e.g. in forall(dtype T) void (*)(T).
+
+	// xxx - this originally mutates arg->result in place. is it correct?
+	assert( env );
+	result = env->applyFree( result.get() ).node;
+	auto mutResult = result.get_and_mutate();
+	mutResult->set_const(false);
+
+	auto mutArg = mutate(arg);
+	mutArg->result = mutResult;
+
+	ast::ptr<ast::Expr> guard = mutArg;
+
+	ast::ptr<ast::ObjectDecl> tmp = new ast::ObjectDecl(loc, "__tmp", mutResult, nullptr );
+
+	// create and resolve copy constructor
+	CP_CTOR_PRINT( std::cerr << "makeCtorDtor for an argument" << std::endl; )
+	auto cpCtor = makeCtorDtor( "?{}", tmp, mutArg );
+
+	if ( auto appExpr = dynamic_cast< const ast::ApplicationExpr * >( cpCtor ) ) {
+		// if the chosen constructor is intrinsic, the copy is unnecessary, so
+		// don't create the temporary and don't call the copy constructor
+		auto function = appExpr->func.strict_as<ast::VariableExpr>();
+		if ( function->var->linkage == ast::Linkage::Intrinsic ) {
+			// arguments that need to be boxed need a temporary regardless of whether the copy constructor is intrinsic,
+			// so that the object isn't changed inside of the polymorphic function
+			if ( ! GenPoly::needsBoxing( formal, result, impCpCtorExpr->callExpr, env ) ) {
+				// xxx - should arg->result be mutated? see comment above.
+				return guard;
+			}
+		}
+	}
+
+	// set a unique name for the temporary once it's certain the call is necessary
+	auto mut = tmp.get_and_mutate();
+	assertf (mut == tmp, "newly created ObjectDecl must be unique");
+	mut->name = tempNamer.newName();
+
+	// replace argument to function call with temporary
+	stmtsToAddBefore.push_back( new ast::DeclStmt(loc, tmp ) );
+	arg = cpCtor;
+	return destructRet( tmp, arg );
+
+	// impCpCtorExpr->dtors.push_front( makeCtorDtor( "^?{}", tmp ) );
+}
+
+ast::Expr * ResolveCopyCtors::destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg ) {
+	auto global = transUnit().global;
+	// TODO: refactor code for generating cleanup attribute, since it's common and reused in ~3-4 places
+	// check for existing cleanup attribute before adding another(?)
+	// need to add __Destructor for _tmp_cp variables as well
+
+	assertf( global.dtorStruct, "Destructor generation requires __Destructor definition." );
+	assertf( global.dtorStruct->members.size() == 2, "__Destructor definition does not have expected fields." );
+	assertf( global.dtorDestroy, "Destructor generation requires __destroy_Destructor." );
+
+	const CodeLocation loc = ret->location;
+
+	// generate a __Destructor for ret that calls the destructor
+	auto res = makeCtorDtor( "^?{}", ret );
+	auto dtor = mutate(res);
+
+	// if the chosen destructor is intrinsic, elide the generated dtor handler
+	if ( arg && isIntrinsicCallExpr( dtor ) ) {
+		return new ast::CommaExpr(loc, arg, new ast::VariableExpr(loc, ret ) );
+	}
+
+	if ( ! dtor->env ) dtor->env = maybeClone( env );
+	auto dtorFunc = getDtorFunc( ret, new ast::ExprStmt(loc, dtor ), stmtsToAddBefore );
+
+	auto dtorStructType = new ast::StructInstType( global.dtorStruct );
+
+	// what does this do???
+	dtorStructType->params.push_back( new ast::TypeExpr(loc, new ast::VoidType() ) );
+
+	// cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
+	auto dtorFtype = new ast::FunctionType();
+	dtorFtype->params.push_back( new ast::PointerType(new ast::VoidType( ) ) );
+	auto dtorType = new ast::PointerType( dtorFtype );
+
+	static UniqueName namer( "_ret_dtor" );
+	auto retDtor = new ast::ObjectDecl(loc, namer.newName(), dtorStructType, new ast::ListInit(loc, { new ast::SingleInit(loc, ast::ConstantExpr::null(loc) ), new ast::SingleInit(loc, new ast::CastExpr( new ast::VariableExpr(loc, dtorFunc ), dtorType ) ) } ) );
+	retDtor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, global.dtorDestroy ) } ) );
+	stmtsToAddBefore.push_back( new ast::DeclStmt(loc, retDtor ) );
+
+	if ( arg ) {
+		auto member = new ast::MemberExpr(loc, global.dtorStruct->members.front().strict_as<ast::DeclWithType>(), new ast::VariableExpr(loc, retDtor ) );
+		auto object = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, ret ) ), new ast::PointerType(new ast::VoidType() ) );
+		ast::Expr * assign = createBitwiseAssignment( member, object );
+		return new ast::CommaExpr(loc, new ast::CommaExpr(loc, arg, assign ), new ast::VariableExpr(loc, ret ) );
+	}
+	return nullptr;
+	// impCpCtorExpr->get_dtors().push_front( makeCtorDtor( "^?{}", ret ) );
+}
+
+const ast::Expr * ResolveCopyCtors::postvisit( const ast::ImplicitCopyCtorExpr *impCpCtorExpr ) {
+	CP_CTOR_PRINT( std::cerr << "ResolveCopyCtors: " << impCpCtorExpr << std::endl; )
+
+	ast::ApplicationExpr * appExpr = mutate(impCpCtorExpr->callExpr.get());
+	const ast::ObjectDecl * returnDecl = nullptr;
+	const CodeLocation loc = appExpr->location;
+
+	// take each argument and attempt to copy construct it.
+	auto ftype = GenPoly::getFunctionType( appExpr->func->result );
+	assert( ftype );
+	auto & params = ftype->params;
+	auto iter = params.begin();
+	for ( auto & arg : appExpr->args ) {
+		const ast::Type * formal = nullptr;
+		if ( iter != params.end() ) { // does not copy construct C-style variadic arguments
+			// DeclarationWithType * param = *iter++;
+			formal = *iter++;
+		}
+
+		arg = copyConstructArg( arg, impCpCtorExpr, formal );
+	} // for
+
+	// each return value from the call needs to be connected with an ObjectDecl at the call site, which is
+	// initialized with the return value and is destructed later
+	// xxx - handle named return values?
+	const ast::Type * result = appExpr->result;
+	if ( ! result->isVoid() ) {
+		static UniqueName retNamer("_tmp_cp_ret");
+		auto subResult = env->apply( result ).node;
+		auto ret = new ast::ObjectDecl(loc, retNamer.newName(), subResult, nullptr );
+		auto mutType = mutate(ret->type.get());
+		mutType->set_const( false );
+		ret->type = mutType;
+		returnDecl = ret;
+		stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
+		CP_CTOR_PRINT( std::cerr << "makeCtorDtor for a return" << std::endl; )
+	} // for
+	CP_CTOR_PRINT( std::cerr << "after Resolving: " << impCpCtorExpr << std::endl; )
+	// ------------------------------------------------------
+
+	CP_CTOR_PRINT( std::cerr << "Coming out the back..." << impCpCtorExpr << std::endl; )
+
+	// detach fields from wrapper node so that it can be deleted without deleting too much
+
+	// xxx - actual env might be somewhere else, need to keep invariant
+
+	// deletion of wrapper should be handled by pass template now
+
+	// impCpCtorExpr->callExpr = nullptr;
+	assert (appExpr->env == nullptr);
+	appExpr->env = impCpCtorExpr->env;
+	// std::swap( impCpCtorExpr->env, appExpr->env );
+	// assert( impCpCtorExpr->env == nullptr );
+	// delete impCpCtorExpr;
+
+	if ( returnDecl ) {
+		ast::Expr * assign = createBitwiseAssignment( new ast::VariableExpr(loc, returnDecl ), appExpr );
+		if ( ! dynamic_cast< const ast::ReferenceType * >( result ) ) {
+			// destructing reference returns is bad because it can cause multiple destructor calls to the same object - the returned object is not a temporary
+			assign = destructRet( returnDecl, assign );
+			assert(assign);
+		} else {
+			assign = new ast::CommaExpr(loc, assign, new ast::VariableExpr(loc, returnDecl ) );
+		}
+		// move env from appExpr to retExpr
+		// std::swap( assign->env, appExpr->env );
+		assign->env = appExpr->env;
+		// actual env is handled by common routine that replaces WithTypeSubstitution
+		return postvisit((const ast::Expr *)assign);
+	} else {
+		return postvisit((const ast::Expr *)appExpr);
+	} // if
+}
+
+const ast::StmtExpr * ResolveCopyCtors::previsit( const ast::StmtExpr * _stmtExpr ) {
+	// function call temporaries should be placed at statement-level, rather than nested inside of a new statement expression,
+	// since temporaries can be shared across sub-expressions, e.g.
+	//   [A, A] f();       // decl
+	//   g([A] x, [A] y);  // decl
+	//   g(f());           // call
+	// f is executed once, so the return temporary is shared across the tuple constructors for x and y.
+	// Explicitly mutating children instead of mutating the inner compound statement forces the temporaries to be added
+	// to the outer context, rather than inside of the statement expression.
+
+	// call the common routine that replaces WithTypeSubstitution
+	previsit((const ast::Expr *) _stmtExpr);
+
+	visit_children = false;
+	const CodeLocation loc = _stmtExpr->location;
+
+	assert( env );
+
+	symtab.enterScope();
+	// visit all statements
+	auto stmtExpr = mutate(_stmtExpr);
+	auto mutStmts = mutate(stmtExpr->stmts.get());
+
+	auto & stmts = mutStmts->kids;
+	for ( auto & stmt : stmts ) {
+		stmt = stmt->accept( *visitor );
+	} // for
+	stmtExpr->stmts = mutStmts;
+	symtab.leaveScope();
+
+	assert( stmtExpr->result );
+	// const ast::Type * result = stmtExpr->result;
+	if ( ! stmtExpr->result->isVoid() ) {
+		static UniqueName retNamer("_tmp_stmtexpr_ret");
+
+		// result = result->clone();
+		auto result = env->apply( stmtExpr->result.get() ).node;
+		if ( ! InitTweak::isConstructable( result ) ) {
+			// delete result;
+			return stmtExpr;
+		}
+		auto mutResult = result.get_and_mutate();
+		mutResult->set_const(false);
+
+		// create variable that will hold the result of the stmt expr
+		auto ret = new ast::ObjectDecl(loc, retNamer.newName(), mutResult, nullptr );
+		stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
+
+		assertf(
+			stmtExpr->resultExpr,
+			"Statement-Expression should have a resulting expression at %s:%d",
+			stmtExpr->location.filename.c_str(),
+			stmtExpr->location.first_line
 		);
-		return new ast::FunctionDecl( loc,
-			fname,
-			std::move(typeParams),
-			{dstParam},
-			{},
-			new ast::CompoundStmt(loc),
-			{},
-			ast::Linkage::Cforall
-		);
-	}
-
-	struct SelfAssignChecker {
-		void previsit( const ast::ApplicationExpr * appExpr );
-	};
-
-	struct StmtExprResult {
-		const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
-	};
-
-	/// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
-	/// function calls need their parameters to be copy constructed
-	struct InsertImplicitCalls : public ast::WithShortCircuiting {
-		const ast::Expr * postvisit( const ast::ApplicationExpr * appExpr );
-
-		// only handles each UniqueExpr once
-		// if order of visit does not change, this should be safe
-		void previsit (const ast::UniqueExpr *);
-
-		std::unordered_set<decltype(ast::UniqueExpr::id)> visitedIds;
-	};
-
-	/// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
-	/// generate/resolve copy construction expressions for each, and generate/resolve destructors for both
-	/// arguments and return value temporaries
-	struct ResolveCopyCtors final : public ast::WithGuards, public ast::WithStmtsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithVisitorRef<ResolveCopyCtors>, public ast::WithConstTranslationUnit {
-		const ast::Expr * postvisit( const ast::ImplicitCopyCtorExpr * impCpCtorExpr );
-		const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
-		const ast::UniqueExpr * previsit( const ast::UniqueExpr * unqExpr );
-
-		/// handles distant mutations of environment manually.
-		/// WithConstTypeSubstitution cannot remember where the environment is from
-
-		/// MUST be called at start of overload previsit
-		void previsit( const ast::Expr * expr);
-		/// MUST be called at return of overload postvisit
-		const ast::Expr * postvisit(const ast::Expr * expr);
-
-		/// create and resolve ctor/dtor expression: fname(var, [cpArg])
-		const ast::Expr * makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg = nullptr );
-		/// true if type does not need to be copy constructed to ensure correctness
-		bool skipCopyConstruct( const ast::Type * type );
-		ast::ptr< ast::Expr > copyConstructArg( const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal );
-		ast::Expr * destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg );
-	private:
-		/// hack to implement WithTypeSubstitution while conforming to mutation safety.
-		ast::TypeSubstitution * env         = nullptr;
-		bool                    envModified = false;
-	};
-
-	/// collects constructed object decls - used as a base class
-	struct ObjDeclCollector : public ast::WithGuards, public ast::WithShortCircuiting {
-		// use ordered data structure to maintain ordering for set_difference and for consistent error messages
-		typedef std::list< const ast::ObjectDecl * > ObjectSet;
-		void previsit( const ast::CompoundStmt *compoundStmt );
-		void previsit( const ast::DeclStmt *stmt );
-
-		// don't go into other functions
-		void previsit( const ast::FunctionDecl * ) { visit_children = false; }
-
-	protected:
-		ObjectSet curVars;
-	};
-
-	// debug
-	template<typename ObjectSet>
-	struct PrintSet {
-		PrintSet( const ObjectSet & objs ) : objs( objs ) {}
-		const ObjectSet & objs;
-	};
-	template<typename ObjectSet>
-	PrintSet<ObjectSet> printSet( const ObjectSet & objs ) { return PrintSet<ObjectSet>( objs ); }
-	template<typename ObjectSet>
-	std::ostream & operator<<( std::ostream & out, const PrintSet<ObjectSet> & set) {
-		out << "{ ";
-		for ( auto & obj : set.objs ) {
-			out << obj->name << ", " ;
-		} // for
-		out << " }";
-		return out;
-	}
-
-	struct LabelFinder final : public ObjDeclCollector {
-		typedef std::map< std::string, ObjectSet > LabelMap;
-		// map of Label -> live variables at that label
-		LabelMap vars;
-
-		typedef ObjDeclCollector Parent;
-		using Parent::previsit;
-		void previsit( const ast::Stmt * stmt );
-
-		void previsit( const ast::CompoundStmt *compoundStmt );
-		void previsit( const ast::DeclStmt *stmt );
-	};
-
-	/// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
-	/// (currently by FixInit)
-	struct InsertDtors final : public ObjDeclCollector, public ast::WithStmtsToAdd<> {
-		typedef std::list< ObjectDecl * > OrderedDecls;
-		typedef std::list< OrderedDecls > OrderedDeclsStack;
-
-		InsertDtors( ast::Pass<LabelFinder> & finder ) : finder( finder ), labelVars( finder.core.vars ) {}
-
-		typedef ObjDeclCollector Parent;
-		using Parent::previsit;
-
-		void previsit( const ast::FunctionDecl * funcDecl );
-
-		void previsit( const ast::BranchStmt * stmt );
-	private:
-		void handleGoto( const ast::BranchStmt * stmt );
-
-		ast::Pass<LabelFinder> & finder;
-		LabelFinder::LabelMap & labelVars;
-		OrderedDeclsStack reverseDeclOrder;
-	};
-
-	/// expand each object declaration to use its constructor after it is declared.
-	struct FixInit : public ast::WithStmtsToAdd<> {
-		static void fixInitializers( ast::TranslationUnit &translationUnit );
-
-		const ast::DeclWithType * postvisit( const ast::ObjectDecl *objDecl );
-
-		std::list< ast::ptr< ast::Decl > > staticDtorDecls;
-	};
-
-	/// generate default/copy ctor and dtor calls for user-defined struct ctor/dtors
-	/// for any member that is missing a corresponding ctor/dtor call.
-	/// error if a member is used before constructed
-	struct GenStructMemberCalls final : public ast::WithGuards, public ast::WithShortCircuiting, public ast::WithSymbolTable, public ast::WithVisitorRef<GenStructMemberCalls>, public ast::WithConstTranslationUnit {
-		void previsit( const ast::FunctionDecl * funcDecl );
-		const ast::DeclWithType * postvisit( const ast::FunctionDecl * funcDecl );
-
-		void previsit( const ast::MemberExpr * memberExpr );
-		void previsit( const ast::ApplicationExpr * appExpr );
-
-		/// Note: this post mutate used to be in a separate visitor. If this pass breaks, one place to examine is whether it is
-		/// okay for this part of the recursion to occur alongside the rest.
-		const ast::Expr * postvisit( const ast::UntypedExpr * expr );
-
-		SemanticErrorException errors;
-	private:
-		template< typename... Params >
-		void emit( CodeLocation, const Params &... params );
-
-		ast::FunctionDecl * function = nullptr;
-		std::set< const ast::DeclWithType * > unhandled;
-		std::map< const ast::DeclWithType *, CodeLocation > usedUninit;
-		const ast::ObjectDecl * thisParam = nullptr;
-		bool isCtor = false; // true if current function is a constructor
-		const ast::StructDecl * structDecl = nullptr;
-	};
-
-	/// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
-	struct FixCtorExprs final : public ast::WithDeclsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithConstTranslationUnit {
-		const ast::Expr * postvisit( const ast::ConstructorExpr * ctorExpr );
-	};
-
-	/// add CompoundStmts around top-level expressions so that temporaries are destroyed in the correct places.
-	struct SplitExpressions : public ast::WithShortCircuiting {
-		ast::Stmt * postvisit( const ast::ExprStmt * stmt );
-		void previsit( const ast::TupleAssignExpr * expr );
-	};
+
+		const ast::ExprStmt * last = stmtExpr->resultExpr;
+		// xxx - if this is non-unique, need to copy while making resultExpr ref
+		assertf(last->unique(), "attempt to modify weakly shared statement");
+		auto mutLast = mutate(last);
+		// above assertion means in-place mutation is OK
+		try {
+			mutLast->expr = makeCtorDtor( "?{}", ret, mutLast->expr );
+		} catch(...) {
+			std::cerr << "*CFA internal error: ";
+			std::cerr << "can't resolve implicit constructor";
+			std::cerr << " at " << stmtExpr->location.filename;
+			std::cerr << ":" << stmtExpr->location.first_line << std::endl;
+
+			abort();
+		}
+
+		// add destructors after current statement
+		stmtsToAddAfter.push_back( new ast::ExprStmt(loc, makeCtorDtor( "^?{}", ret ) ) );
+
+		// must have a non-empty body, otherwise it wouldn't have a result
+		assert( ! stmts.empty() );
+
+		// if there is a return decl, add a use as the last statement; will not have return decl on non-constructable returns
+		stmts.push_back( new ast::ExprStmt(loc, new ast::VariableExpr(loc, ret ) ) );
+	} // if
+
+	assert( stmtExpr->returnDecls.empty() );
+	assert( stmtExpr->dtors.empty() );
+
+	return stmtExpr;
+}
+
+// to prevent warnings ('_unq0' may be used uninitialized in this function),
+// insert an appropriate zero initializer for UniqueExpr temporaries.
+ast::Init * makeInit( const ast::Type * t, CodeLocation const & loc ) {
+	if ( auto inst = dynamic_cast< const ast::StructInstType * >( t ) ) {
+		// initizer for empty struct must be empty
+		if ( inst->base->members.empty() ) {
+			return new ast::ListInit( loc, {} );
+		}
+	} else if ( auto inst = dynamic_cast< const ast::UnionInstType * >( t ) ) {
+		// initizer for empty union must be empty
+		if ( inst->base->members.empty() ) {
+			return new ast::ListInit( loc, {} );
+		}
+	}
+
+	return new ast::ListInit( loc, {
+		new ast::SingleInit( loc, ast::ConstantExpr::from_int( loc, 0 ) )
+	} );
+}
+
+const ast::UniqueExpr * ResolveCopyCtors::previsit( const ast::UniqueExpr * unqExpr ) {
+	visit_children = false;
+	// xxx - hack to prevent double-handling of unique exprs, otherwise too many temporary variables and destructors are generated
+	static std::unordered_map< int, const ast::UniqueExpr * > unqMap;
+	auto mutExpr = mutate(unqExpr);
+	if ( ! unqMap.count( unqExpr->id ) ) {
+		// resolve expr and find its
+
+		auto impCpCtorExpr = mutExpr->expr.as<ast::ImplicitCopyCtorExpr>();
+		// PassVisitor<ResolveCopyCtors> fixer;
+
+		mutExpr->expr = mutExpr->expr->accept( *visitor );
+		// it should never be necessary to wrap a void-returning expression in a UniqueExpr - if this assumption changes, this needs to be rethought
+		assert( unqExpr->result );
+		if ( impCpCtorExpr ) {
+			auto comma = unqExpr->expr.strict_as<ast::CommaExpr>();
+			auto var = comma->arg2.strict_as<ast::VariableExpr>();
+			// note the variable used as the result from the call
+			mutExpr->var = var;
+		} else {
+			// expr isn't a call expr, so create a new temporary variable to use to hold the value of the unique expression
+			mutExpr->object = new ast::ObjectDecl( mutExpr->location, toString("_unq", mutExpr->id), mutExpr->result, makeInit( mutExpr->result, mutExpr->location ) );
+			mutExpr->var = new ast::VariableExpr( mutExpr->location, mutExpr->object );
+		}
+
+		unqMap[mutExpr->id] = mutExpr;
+	} else {
+		// take data from other UniqueExpr to ensure consistency
+		// delete unqExpr->get_expr();
+		mutExpr->expr = unqMap[mutExpr->id]->expr;
+		// delete unqExpr->result;
+		mutExpr->result = mutExpr->expr->result;
+	}
+	return mutExpr;
+}
+
+const ast::DeclWithType * FixInit::postvisit( const ast::ObjectDecl *_objDecl ) {
+	const CodeLocation loc = _objDecl->location;
+
+	// since this removes the init field from objDecl, it must occur after children are mutated (i.e. postvisit)
+	if ( ast::ptr<ast::ConstructorInit> ctorInit = _objDecl->init.as<ast::ConstructorInit>() ) {
+		auto objDecl = mutate(_objDecl);
+
+		// could this be non-unique?
+		if (objDecl != _objDecl) {
+			std::cerr << "FixInit: non-unique object decl " << objDecl->location << objDecl->name << std::endl;
+		}
+		// a decision should have been made by the resolver, so ctor and init are not both non-NULL
+		assert( ! ctorInit->ctor || ! ctorInit->init );
+		if ( const ast::Stmt * ctor = ctorInit->ctor ) {
+			if ( objDecl->storage.is_static ) {
+				addDataSectionAttribute(objDecl);
+				// originally wanted to take advantage of gcc nested functions, but
+				// we get memory errors with this approach. To remedy this, the static
+				// variable is hoisted when the destructor needs to be called.
+				//
+				// generate:
+				// static T __objName_static_varN;
+				// void __objName_dtor_atexitN() {
+				//   __dtor__...;
+				// }
+				// int f(...) {
+				//   ...
+				//   static bool __objName_uninitialized = true;
+				//   if (__objName_uninitialized) {
+				//     __ctor(__objName);
+				//     __objName_uninitialized = false;
+				//     atexit(__objName_dtor_atexitN);
+				//   }
+				//   ...
+				// }
+
+				static UniqueName dtorCallerNamer( "_dtor_atexit" );
+
+				// static bool __objName_uninitialized = true
+				auto boolType = new ast::BasicType( ast::BasicType::Kind::Bool );
+				auto boolInitExpr = new ast::SingleInit(loc, ast::ConstantExpr::from_int(loc, 1 ) );
+				auto isUninitializedVar = new ast::ObjectDecl(loc, objDecl->mangleName + "_uninitialized", boolType, boolInitExpr, ast::Storage::Static, ast::Linkage::Cforall);
+				isUninitializedVar->fixUniqueId();
+
+				// __objName_uninitialized = false;
+				auto setTrue = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ) );
+				setTrue->args.push_back( new ast::VariableExpr(loc, isUninitializedVar ) );
+				setTrue->args.push_back( ast::ConstantExpr::from_int(loc, 0 ) );
+
+				// generate body of if
+				auto initStmts = new ast::CompoundStmt(loc);
+				auto & body = initStmts->kids;
+				body.push_back( ctor );
+				body.push_back( new ast::ExprStmt(loc, setTrue ) );
+
+				// put it all together
+				auto ifStmt = new ast::IfStmt(loc, new ast::VariableExpr(loc, isUninitializedVar ), initStmts, 0 );
+				stmtsToAddAfter.push_back( new ast::DeclStmt(loc, isUninitializedVar ) );
+				stmtsToAddAfter.push_back( ifStmt );
+
+				const ast::Stmt * dtor = ctorInit->dtor;
+
+				// these should be automatically managed once reassigned
+				// objDecl->set_init( nullptr );
+				// ctorInit->set_ctor( nullptr );
+				// ctorInit->set_dtor( nullptr );
+				if ( dtor ) {
+					// if the object has a non-trivial destructor, have to
+					// hoist it and the object into the global space and
+					// call the destructor function with atexit.
+
+					// Statement * dtorStmt = dtor->clone();
+
+					// void __objName_dtor_atexitN(...) {...}
+					ast::FunctionDecl * dtorCaller = new ast::FunctionDecl(loc, objDecl->mangleName + dtorCallerNamer.newName(), {}, {}, {}, new ast::CompoundStmt(loc, {dtor}), ast::Storage::Static, ast::Linkage::C );
+					dtorCaller->fixUniqueId();
+					// dtorCaller->stmts->push_back( dtor );
+
+					// atexit(dtor_atexit);
+					auto callAtexit = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "atexit" ) );
+					callAtexit->args.push_back( new ast::VariableExpr(loc, dtorCaller ) );
+
+					body.push_back( new ast::ExprStmt(loc, callAtexit ) );
+
+					// hoist variable and dtor caller decls to list of decls that will be added into global scope
+					staticDtorDecls.push_back( objDecl );
+					staticDtorDecls.push_back( dtorCaller );
+
+					// need to rename object uniquely since it now appears
+					// at global scope and there could be multiple function-scoped
+					// static variables with the same name in different functions.
+					// Note: it isn't sufficient to modify only the mangleName, because
+					// then subsequent Indexer passes can choke on seeing the object's name
+					// if another object has the same name and type. An unfortunate side-effect
+					// of renaming the object is that subsequent NameExprs may fail to resolve,
+					// but there shouldn't be any remaining past this point.
+					static UniqueName staticNamer( "_static_var" );
+					objDecl->name = objDecl->name + staticNamer.newName();
+					objDecl->mangleName = Mangle::mangle( objDecl );
+					objDecl->init = nullptr;
+
+					// xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope
+					// create a new object which is never used
+					static UniqueName dummyNamer( "_dummy" );
+					auto dummy = new ast::ObjectDecl(loc, dummyNamer.newName(), new ast::PointerType(new ast::VoidType()), nullptr, ast::Storage::Static, ast::Linkage::Cforall, 0, { new ast::Attribute("unused") } );
+					// delete ctorInit;
+					return dummy;
+				} else {
+					objDecl->init = nullptr;
+					return objDecl;
+				}
+			} else {
+				auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * > ( ctor );
+				auto ctorStmt = implicit->callStmt.as<ast::ExprStmt>();
+				const ast::ApplicationExpr * ctorCall = nullptr;
+				if ( ctorStmt && (ctorCall = isIntrinsicCallExpr( ctorStmt->expr )) && ctorCall->args.size() == 2 ) {
+					// clean up intrinsic copy constructor calls by making them into SingleInits
+					const ast::Expr * ctorArg = ctorCall->args.back();
+					// ctorCall should be gone afterwards
+					auto mutArg = mutate(ctorArg);
+					mutArg->env = ctorCall->env;
+					// std::swap( ctorArg->env, ctorCall->env );
+					objDecl->init = new ast::SingleInit(loc, mutArg );
+
+					// ctorCall->args.pop_back();
+				} else {
+					stmtsToAddAfter.push_back( ctor );
+					objDecl->init = nullptr;
+					// ctorInit->ctor = nullptr;
+				}
+
+				const ast::Stmt * dtor = ctorInit->dtor;
+				if ( dtor ) {
+					auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * >( dtor );
+					const ast::Stmt * dtorStmt = implicit->callStmt;
+
+					// don't need to call intrinsic dtor, because it does nothing, but
+					// non-intrinsic dtors must be called
+					if ( ! isIntrinsicSingleArgCallStmt( dtorStmt ) ) {
+						// set dtor location to the object's location for error messages
+						auto dtorFunc = getDtorFunc( objDecl, dtorStmt, stmtsToAddBefore );
+						objDecl->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, dtorFunc ) } ) );
+						// ctorInit->dtor = nullptr;
+					} // if
+				}
+			} // if
+		} else if ( const ast::Init * init = ctorInit->init ) {
+			objDecl->init = init;
+			// ctorInit->init = nullptr;
+		} else {
+			// no constructor and no initializer, which is okay
+			objDecl->init = nullptr;
+		} // if
+		// delete ctorInit;
+		return objDecl;
+	} // if
+	return _objDecl;
+}
+
+void ObjDeclCollector::previsit( const ast::CompoundStmt * ) {
+	GuardValue( curVars );
+}
+
+void ObjDeclCollector::previsit( const ast::DeclStmt * stmt ) {
+	// keep track of all variables currently in scope
+	if ( auto objDecl = stmt->decl.as<ast::ObjectDecl>() ) {
+		curVars.push_back( objDecl );
+	} // if
+}
+
+void LabelFinder::previsit( const ast::Stmt * stmt ) {
+	// for each label, remember the variables in scope at that label.
+	for ( auto l : stmt->labels ) {
+		vars[l] = curVars;
+	} // for
+}
+
+void LabelFinder::previsit( const ast::CompoundStmt * stmt ) {
+	previsit( (const ast::Stmt *) stmt );
+	Parent::previsit( stmt );
+}
+
+void LabelFinder::previsit( const ast::DeclStmt * stmt ) {
+	previsit( (const ast::Stmt *)stmt );
+	Parent::previsit( stmt );
+}
+
+void InsertDtors::previsit( const ast::FunctionDecl * funcDecl ) {
+	// each function needs to have its own set of labels
+	GuardValue( labelVars );
+	labelVars.clear();
+	// LabelFinder does not recurse into FunctionDecl, so need to visit
+	// its children manually.
+	if (funcDecl->type) funcDecl->type->accept(finder);
+	// maybeAccept( funcDecl->type, finder );
+	if (funcDecl->stmts) funcDecl->stmts->accept(finder) ;
+
+	// all labels for this function have been collected, insert destructors as appropriate via implicit recursion.
+}
+
+// Handle break/continue/goto in the same manner as C++.  Basic idea: any objects that are in scope at the
+// BranchStmt but not at the labelled (target) statement must be destructed.  If there are any objects in scope
+// at the target location but not at the BranchStmt then those objects would be uninitialized so notify the user
+// of the error.  See C++ Reference 6.6 Jump Statements for details.
+void InsertDtors::handleGoto( const ast::BranchStmt * stmt ) {
+	// can't do anything for computed goto
+	if ( stmt->computedTarget ) return;
+
+	assertf( stmt->target.name != "", "BranchStmt missing a label: %s", toString( stmt ).c_str() );
+	// S_L = lvars = set of objects in scope at label definition
+	// S_G = curVars = set of objects in scope at goto statement
+	ObjectSet & lvars = labelVars[ stmt->target ];
+
+	DTOR_PRINT(
+		std::cerr << "at goto label: " << stmt->target.name << std::endl;
+		std::cerr << "S_G = " << printSet( curVars ) << std::endl;
+		std::cerr << "S_L = " << printSet( lvars ) << std::endl;
+	)
+
+
+	// std::set_difference requires that the inputs be sorted.
+	lvars.sort();
+	curVars.sort();
+
+	ObjectSet diff;
+	// S_L-S_G results in set of objects whose construction is skipped - it's an error if this set is non-empty
+	std::set_difference( lvars.begin(), lvars.end(), curVars.begin(), curVars.end(), std::inserter( diff, diff.begin() ) );
+	DTOR_PRINT(
+		std::cerr << "S_L-S_G = " << printSet( diff ) << std::endl;
+	)
+	if ( ! diff.empty() ) {
+		SemanticError( stmt, std::string("jump to label '") + stmt->target.name + "' crosses initialization of " + (*diff.begin())->name + " " );
+	} // if
+}
+
+void InsertDtors::previsit( const ast::BranchStmt * stmt ) {
+	switch( stmt->kind ) {
+	case ast::BranchStmt::Continue:
+	case ast::BranchStmt::Break:
+		// could optimize the break/continue case, because the S_L-S_G check is unnecessary (this set should
+		// always be empty), but it serves as a small sanity check.
+	case ast::BranchStmt::Goto:
+		handleGoto( stmt );
+		break;
+	default:
+		assert( false );
+	} // switch
+}
+
+bool checkWarnings( const ast::FunctionDecl * funcDecl ) {
+	// only check for warnings if the current function is a user-defined
+	// constructor or destructor
+	if ( ! funcDecl ) return false;
+	if ( ! funcDecl->stmts ) return false;
+	return CodeGen::isCtorDtor( funcDecl->name ) && ! funcDecl->linkage.is_overrideable;
+}
+
+void GenStructMemberCalls::previsit( const ast::FunctionDecl * funcDecl ) {
+	GuardValue( function );
+	GuardValue( unhandled );
+	GuardValue( usedUninit );
+	GuardValue( thisParam );
+	GuardValue( isCtor );
+	GuardValue( structDecl );
+	errors = SemanticErrorException();  // clear previous errors
+
+	// need to start with fresh sets
+	unhandled.clear();
+	usedUninit.clear();
+
+	function = mutate(funcDecl);
+	// could this be non-unique?
+	if (function != funcDecl) {
+		std::cerr << "GenStructMemberCalls: non-unique FunctionDecl " << funcDecl->location << funcDecl->name << std::endl;
+	}
+
+	isCtor = CodeGen::isConstructor( function->name );
+	if ( checkWarnings( function ) ) {
+		// const ast::FunctionType * type = function->type;
+		// assert( ! type->params.empty() );
+		thisParam = function->params.front().strict_as<ast::ObjectDecl>();
+		auto thisType = getPointerBase( thisParam->get_type() );
+		auto structType = dynamic_cast< const ast::StructInstType * >( thisType );
+		if ( structType ) {
+			structDecl = structType->base;
+			for ( auto & member : structDecl->members ) {
+				if ( auto field = member.as<ast::ObjectDecl>() ) {
+					// record all of the struct type's members that need to be constructed or
+					// destructed by the end of the function
+					unhandled.insert( field );
+				}
+			}
+		}
+	}
+}
+
+const ast::DeclWithType * GenStructMemberCalls::postvisit( const ast::FunctionDecl * funcDecl ) {
+	// remove the unhandled objects from usedUninit, because a call is inserted
+	// to handle them - only objects that are later constructed are used uninitialized.
+	std::map< const ast::DeclWithType *, CodeLocation > diff;
+	// need the comparator since usedUninit and unhandled have different types
+	struct comp_t {
+		typedef decltype(usedUninit)::value_type usedUninit_t;
+		typedef decltype(unhandled)::value_type unhandled_t;
+		bool operator()(usedUninit_t x, unhandled_t y) { return x.first < y; }
+		bool operator()(unhandled_t x, usedUninit_t y) { return x < y.first; }
+	} comp;
+	std::set_difference( usedUninit.begin(), usedUninit.end(), unhandled.begin(), unhandled.end(), std::inserter( diff, diff.begin() ), comp );
+	for ( auto p : diff ) {
+		auto member = p.first;
+		auto loc = p.second;
+		// xxx - make error message better by also tracking the location that the object is constructed at?
+		emit( loc, "in ", function->name, ", field ", member->name, " used before being constructed" );
+	}
+
+	const CodeLocation loc = funcDecl->location;
+
+	if ( ! unhandled.empty() ) {
+		auto mutStmts = function->stmts.get_and_mutate();
+		// need to explicitly re-add function parameters to the indexer in order to resolve copy constructors
+		auto guard = makeFuncGuard( [this]() { symtab.enterScope(); }, [this]() { symtab.leaveScope(); } );
+		symtab.addFunction( function );
+		auto global = transUnit().global;
+
+		// need to iterate through members in reverse in order for
+		// ctor/dtor statements to come out in the right order
+		for ( auto & member : reverseIterate( structDecl->members ) ) {
+			auto field = member.as<ast::ObjectDecl>();
+			// skip non-DWT members
+			if ( ! field ) continue;
+			// skip non-constructable members
+			if ( ! tryConstruct( field ) ) continue;
+			// skip handled members
+			if ( ! unhandled.count( field ) ) continue;
+
+			// insert and resolve default/copy constructor call for each field that's unhandled
+			// std::list< const ast::Stmt * > stmt;
+			ast::Expr * arg2 = nullptr;
+			if ( function->name == "?{}" && isCopyFunction( function ) ) {
+				// if copy ctor, need to pass second-param-of-this-function.field
+				// std::list< DeclarationWithType * > & params = function->get_functionType()->get_parameters();
+				assert( function->params.size() == 2 );
+				arg2 = new ast::MemberExpr(funcDecl->location, field, new ast::VariableExpr(funcDecl->location, function->params.back() ) );
+			}
+			InitExpander_new srcParam( arg2 );
+			// cast away reference type and construct field.
+			ast::Expr * thisExpr = new ast::CastExpr(funcDecl->location, new ast::VariableExpr(funcDecl->location, thisParam ), thisParam->get_type()->stripReferences());
+			ast::Expr * memberDest = new ast::MemberExpr(funcDecl->location, field, thisExpr );
+			ast::ptr<ast::Stmt> callStmt = SymTab::genImplicitCall( srcParam, memberDest, loc, function->name, field, static_cast<SymTab::LoopDirection>(isCtor) );
+
+			if ( callStmt ) {
+				// auto & callStmt = stmt.front();
+
+				try {
+					callStmt = callStmt->accept( *visitor );
+					if ( isCtor ) {
+						mutStmts->push_front( callStmt );
+					} else { // TODO: don't generate destructor function/object for intrinsic calls
+						// destructor statements should be added at the end
+						// function->get_statements()->push_back( callStmt );
+
+						// Optimization: do not need to call intrinsic destructors on members
+						if ( isIntrinsicSingleArgCallStmt( callStmt ) ) continue;
+
+						// __Destructor _dtor0 = { (void *)&b.a1, (void (*)(void *)_destroy_A };
+						std::list< ast::ptr<ast::Stmt> > stmtsToAdd;
+
+						static UniqueName memberDtorNamer = { "__memberDtor" };
+						assertf( global.dtorStruct, "builtin __Destructor not found." );
+						assertf( global.dtorDestroy, "builtin __destroy_Destructor not found." );
+
+						ast::Expr * thisExpr = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, thisParam ) ), new ast::PointerType( new ast::VoidType(), ast::CV::Qualifiers() ) );
+						ast::Expr * dtorExpr = new ast::VariableExpr(loc, getDtorFunc( thisParam, callStmt, stmtsToAdd ) );
+
+						// cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
+						auto dtorFtype = new ast::FunctionType();
+						dtorFtype->params.emplace_back( new ast::PointerType( new ast::VoidType() ) );
+						auto dtorType = new ast::PointerType( dtorFtype );
+
+						auto destructor = new ast::ObjectDecl(loc, memberDtorNamer.newName(), new ast::StructInstType( global.dtorStruct ), new ast::ListInit(loc, { new ast::SingleInit(loc, thisExpr ), new ast::SingleInit(loc, new ast::CastExpr( dtorExpr, dtorType ) ) } ) );
+						destructor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr( loc, global.dtorDestroy ) } ) );
+						mutStmts->push_front( new ast::DeclStmt(loc, destructor ) );
+						mutStmts->kids.splice( mutStmts->kids.begin(), stmtsToAdd );
+					}
+				} catch ( SemanticErrorException & error ) {
+					emit( funcDecl->location, "in ", function->name , ", field ", field->name, " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
+				}
+			}
+		}
+		function->stmts = mutStmts;
+	}
+	if (! errors.isEmpty()) {
+		throw errors;
+	}
+	// return funcDecl;
+	return function;
+}
+
+/// true if expr is effectively just the 'this' parameter
+bool isThisExpression( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
+	// TODO: there are more complicated ways to pass 'this' to a constructor, e.g. &*, *&, etc.
+	if ( auto varExpr = dynamic_cast< const ast::VariableExpr * >( expr ) ) {
+		return varExpr->var == thisParam;
+	} else if ( auto castExpr = dynamic_cast< const ast::CastExpr * > ( expr ) ) {
+		return isThisExpression( castExpr->arg, thisParam );
+	}
+	return false;
+}
+
+/// returns a MemberExpr if expr is effectively just member access on the 'this' parameter, else nullptr
+const ast::MemberExpr * isThisMemberExpr( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
+	if ( auto memberExpr = dynamic_cast< const ast::MemberExpr * >( expr ) ) {
+		if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
+			return memberExpr;
+		}
+	} else if ( auto castExpr = dynamic_cast< const ast::CastExpr * >( expr ) ) {
+		return isThisMemberExpr( castExpr->arg, thisParam );
+	}
+	return nullptr;
+}
+
+void GenStructMemberCalls::previsit( const ast::ApplicationExpr * appExpr ) {
+	if ( ! checkWarnings( function ) ) {
+		visit_children = false;
+		return;
+	}
+
+	std::string fname = getFunctionName( appExpr );
+	if ( fname == function->name ) {
+		// call to same kind of function
+		const ast::Expr * firstParam = appExpr->args.front();
+
+		if ( isThisExpression( firstParam, thisParam ) ) {
+			// if calling another constructor on thisParam, assume that function handles
+			// all members - if it doesn't a warning will appear in that function.
+			unhandled.clear();
+		} else if ( auto memberExpr = isThisMemberExpr( firstParam, thisParam ) ) {
+			// if first parameter is a member expression on the this parameter,
+			// then remove the member from unhandled set.
+			if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
+				unhandled.erase( memberExpr->member );
+			}
+		}
+	}
+}
+
+void GenStructMemberCalls::previsit( const ast::MemberExpr * memberExpr ) {
+	if ( ! checkWarnings( function ) || ! isCtor ) {
+		visit_children = false;
+		return;
+	}
+
+	if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
+		if ( unhandled.count( memberExpr->member ) ) {
+			// emit a warning because a member was used before it was constructed
+			usedUninit.insert( { memberExpr->member, memberExpr->location } );
+		}
+	}
+}
+
+template< typename... Params >
+void GenStructMemberCalls::emit( CodeLocation loc, const Params &... params ) {
+	SemanticErrorException err( loc, toString( params... ) );
+	errors.append( err );
+}
+
+const ast::Expr * GenStructMemberCalls::postvisit( const ast::UntypedExpr * untypedExpr ) {
+	// xxx - functions returning ast::ptr seems wrong...
+	auto res = ResolvExpr::findVoidExpression( untypedExpr, { symtab, transUnit().global } );
+	return res.release();
+}
+
+void InsertImplicitCalls::previsit(const ast::UniqueExpr * unqExpr) {
+	if (visitedIds.count(unqExpr->id)) visit_children = false;
+	else visitedIds.insert(unqExpr->id);
+}
+
+const ast::Expr * FixCtorExprs::postvisit( const ast::ConstructorExpr * ctorExpr ) {
+	const CodeLocation loc = ctorExpr->location;
+	static UniqueName tempNamer( "_tmp_ctor_expr" );
+	// xxx - is the size check necessary?
+	assert( ctorExpr->result && ctorExpr->result->size() == 1 );
+
+	// xxx - this can be TupleAssignExpr now. Need to properly handle this case.
+	// take possession of expr and env
+	ast::ptr<ast::ApplicationExpr> callExpr = ctorExpr->callExpr.strict_as<ast::ApplicationExpr>();
+	ast::ptr<ast::TypeSubstitution> env = ctorExpr->env;
+	// ctorExpr->set_callExpr( nullptr );
+	// ctorExpr->set_env( nullptr );
+
+	// xxx - ideally we would reuse the temporary generated from the copy constructor passes from within firstArg if it exists and not generate a temporary if it's unnecessary.
+	auto tmp = new ast::ObjectDecl(loc, tempNamer.newName(), callExpr->args.front()->result );
+	declsToAddBefore.push_back( tmp );
+
+	// build assignment and replace constructor's first argument with new temporary
+	auto mutCallExpr = callExpr.get_and_mutate();
+	const ast::Expr * firstArg = callExpr->args.front();
+	ast::Expr * assign = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ), { new ast::AddressExpr(loc, new ast::VariableExpr(loc, tmp ) ), new ast::AddressExpr( firstArg ) } );
+	firstArg = new ast::VariableExpr(loc, tmp );
+	mutCallExpr->args.front() = firstArg;
+
+	// resolve assignment and dispose of new env
+	auto resolved = ResolvExpr::findVoidExpression( assign, { symtab, transUnit().global } );
+	auto mut = resolved.get_and_mutate();
+	assertf(resolved.get() == mut, "newly resolved expression must be unique");
+	mut->env = nullptr;
+
+	// for constructor expr:
+	//   T x;
+	//   x{};
+	// results in:
+	//   T x;
+	//   T & tmp;
+	//   &tmp = &x, ?{}(tmp), tmp
+	ast::CommaExpr * commaExpr = new ast::CommaExpr(loc, resolved, new ast::CommaExpr(loc, mutCallExpr, new ast::VariableExpr(loc, tmp ) ) );
+	commaExpr->env = env;
+	return commaExpr;
+}
+
 } // namespace
 
@@ -274,1110 +1380,4 @@
 }
 
-namespace {
-	/// find and return the destructor used in `input`. If `input` is not a simple destructor call, generate a thunk
-	/// that wraps the destructor, insert it into `stmtsToAdd` and return the new function declaration
-	const ast::DeclWithType * getDtorFunc( const ast::ObjectDecl * objDecl, const ast::Stmt * input, std::list< ast::ptr<ast::Stmt> > & stmtsToAdd ) {
-		const CodeLocation loc = input->location;
-		// unwrap implicit statement wrapper
-		// Statement * dtor = input;
-		assert( input );
-		// std::list< const ast::Expr * > matches;
-		auto matches = collectCtorDtorCalls( input );
-
-		if ( dynamic_cast< const ast::ExprStmt * >( input ) ) {
-			// only one destructor call in the expression
-			if ( matches.size() == 1 ) {
-				auto func = getFunction( matches.front() );
-				assertf( func, "getFunction failed to find function in %s", toString( matches.front() ).c_str() );
-
-				// cleanup argument must be a function, not an object (including function pointer)
-				if ( auto dtorFunc = dynamic_cast< const ast::FunctionDecl * > ( func ) ) {
-					if ( dtorFunc->type->forall.empty() ) {
-						// simple case where the destructor is a monomorphic function call - can simply
-						// use that function as the cleanup function.
-						return func;
-					}
-				}
-			}
-		}
-
-		// otherwise the cleanup is more complicated - need to build a single argument cleanup function that
-		// wraps the more complicated code.
-		static UniqueName dtorNamer( "__cleanup_dtor" );
-		std::string name = dtorNamer.newName();
-		ast::FunctionDecl * dtorFunc = genDefaultFunc( loc, name, objDecl->type->stripReferences(), false );
-		stmtsToAdd.push_back( new ast::DeclStmt(loc, dtorFunc ) );
-
-		// the original code contains uses of objDecl - replace them with the newly generated 'this' parameter.
-		const ast::ObjectDecl * thisParam = getParamThis( dtorFunc );
-		const ast::Expr * replacement = new ast::VariableExpr( loc, thisParam );
-
-		auto base = replacement->result->stripReferences();
-		if ( dynamic_cast< const ast::ArrayType * >( base ) || dynamic_cast< const ast::TupleType * > ( base ) ) {
-			// need to cast away reference for array types, since the destructor is generated without the reference type,
-			// and for tuple types since tuple indexing does not work directly on a reference
-			replacement = new ast::CastExpr( replacement, base );
-		}
-		auto dtor = ast::DeclReplacer::replace( input, ast::DeclReplacer::ExprMap{ std::make_pair( objDecl, replacement ) } );
-		auto mutStmts = dtorFunc->stmts.get_and_mutate();
-		mutStmts->push_back(strict_dynamic_cast<const ast::Stmt *>( dtor ));
-		dtorFunc->stmts = mutStmts;
-
-		return dtorFunc;
-	}
-
-	void FixInit::fixInitializers( ast::TranslationUnit & translationUnit ) {
-		ast::Pass<FixInit> fixer;
-
-		// can't use mutateAll, because need to insert declarations at top-level
-		// can't use DeclMutator, because sometimes need to insert IfStmt, etc.
-		SemanticErrorException errors;
-		for ( auto i = translationUnit.decls.begin(); i != translationUnit.decls.end(); ++i ) {
-			try {
-				// maybeAccept( *i, fixer ); translationUnit should never contain null
-				*i = (*i)->accept(fixer);
-				translationUnit.decls.splice( i, fixer.core.staticDtorDecls );
-			} catch( SemanticErrorException &e ) {
-				errors.append( e );
-			} // try
-		} // for
-		if ( ! errors.isEmpty() ) {
-			throw errors;
-		} // if
-	}
-
-	const ast::StmtExpr * StmtExprResult::previsit( const ast::StmtExpr * stmtExpr ) {
-		// we might loose the result expression here so add a pointer to trace back
-		assert( stmtExpr->result );
-		const ast::Type * result = stmtExpr->result;
-		if ( ! result->isVoid() ) {
-			auto mutExpr = mutate(stmtExpr);
-			const ast::CompoundStmt * body = mutExpr->stmts;
-			assert( ! body->kids.empty() );
-			mutExpr->resultExpr = body->kids.back().strict_as<ast::ExprStmt>();
-			return mutExpr;
-		}
-		return stmtExpr;
-	}
-
-	ast::Stmt * SplitExpressions::postvisit( const ast::ExprStmt * stmt ) {
-		// wrap each top-level ExprStmt in a block so that destructors for argument and return temporaries are destroyed
-		// in the correct places
-		ast::CompoundStmt * ret = new ast::CompoundStmt( stmt->location, { stmt } );
-		return ret;
-	}
-
-	void SplitExpressions::previsit( const ast::TupleAssignExpr * ) {
-		// don't do this within TupleAssignExpr, since it is already broken up into multiple expressions
-		visit_children = false;
-	}
-
-	// Relatively simple structural comparison for expressions, needed to determine
-	// if two expressions are "the same" (used to determine if self assignment occurs)
-	struct StructuralChecker {
-		// Strip all casts and then dynamic_cast.
-		template<typename T>
-		static const T * cast( const ast::Expr * expr ) {
-			// this might be too permissive. It's possible that only particular casts are relevant.
-			while ( auto cast = dynamic_cast< const ast::CastExpr * >( expr ) ) {
-				expr = cast->arg;
-			}
-			return dynamic_cast< const T * >( expr );
-		}
-
-		void previsit( const ast::Expr * ) {
-			// anything else does not qualify
-			result = false;
-		}
-
-		// ignore casts
-		void previsit( const ast::CastExpr * ) {}
-
-		void previsit( const ast::MemberExpr * memExpr ) {
-			if ( auto otherMember = cast< ast::MemberExpr >( other ) ) {
-				if ( otherMember->member == memExpr->member ) {
-					other = otherMember->aggregate;
-					return;
-				}
-			}
-			result = false;
-		}
-
-		void previsit( const ast::VariableExpr * varExpr ) {
-			if ( auto otherVar = cast< ast::VariableExpr >( other ) ) {
-				if ( otherVar->var == varExpr->var ) {
-					return;
-				}
-			}
-			result = false;
-		}
-
-		void previsit( const ast::AddressExpr * ) {
-			if ( auto addrExpr = cast< ast::AddressExpr >( other ) ) {
-				other = addrExpr->arg;
-				return;
-			}
-			result = false;
-		}
-
-		const ast::Expr * other;
-		bool result = true;
-		StructuralChecker( const ast::Expr * other ) : other(other) {}
-	};
-
-	bool structurallySimilar( const ast::Expr * e1, const ast::Expr * e2 ) {
-		return ast::Pass<StructuralChecker>::read( e1, e2 );
-	}
-
-	void SelfAssignChecker::previsit( const ast::ApplicationExpr * appExpr ) {
-		auto function = getFunction( appExpr );
-		// Doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment.
-		if ( function->name == "?=?" && appExpr->args.size() == 2
-				// Check for structural similarity (same variable use, ignore casts, etc.
-				// (but does not look too deeply, anything looking like a function is off limits).
-				&& structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
-			SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
-		}
-	}
-
-	const ast::Expr * InsertImplicitCalls::postvisit( const ast::ApplicationExpr * appExpr ) {
-		if ( auto function = appExpr->func.as<ast::VariableExpr>() ) {
-			if ( function->var->linkage.is_builtin ) {
-				// optimization: don't need to copy construct in order to call intrinsic functions
-				return appExpr;
-			} else if ( auto funcDecl = function->var.as<ast::DeclWithType>() ) {
-				auto ftype = dynamic_cast< const ast::FunctionType * >( GenPoly::getFunctionType( funcDecl->get_type() ) );
-				assertf( ftype, "Function call without function type: %s", toString( funcDecl ).c_str() );
-				if ( CodeGen::isConstructor( funcDecl->name ) && ftype->params.size() == 2 ) {
-					auto t1 = getPointerBase( ftype->params.front() );
-					auto t2 = ftype->params.back();
-					assert( t1 );
-
-					if ( ResolvExpr::typesCompatible( t1, t2 ) ) {
-						// optimization: don't need to copy construct in order to call a copy constructor
-						return appExpr;
-					} // if
-				} else if ( CodeGen::isDestructor( funcDecl->name ) ) {
-					// correctness: never copy construct arguments to a destructor
-					return appExpr;
-				} // if
-			} // if
-		} // if
-		CP_CTOR_PRINT( std::cerr << "InsertImplicitCalls: adding a wrapper " << appExpr << std::endl; )
-
-		// wrap each function call so that it is easy to identify nodes that have to be copy constructed
-		ast::ptr<ast::TypeSubstitution> tmp = appExpr->env;
-		auto mutExpr = mutate(appExpr);
-		mutExpr->env = nullptr;
-
-		auto expr = new ast::ImplicitCopyCtorExpr( appExpr->location, mutExpr );
-		// Move the type substitution to the new top-level. The substitution
-		// is needed to obtain the type of temporary variables so that copy
-		// constructor calls can be resolved.
-		expr->env = tmp;
-		return expr;
-	}
-
-	void ResolveCopyCtors::previsit(const ast::Expr * expr) {
-		if ( nullptr == expr->env ) {
-			return;
-		}
-		GuardValue( env ) = expr->env->clone();
-		GuardValue( envModified ) = false;
-	}
-
-	const ast::Expr * ResolveCopyCtors::postvisit(const ast::Expr * expr) {
-		// No local environment, skip.
-		if ( nullptr == expr->env ) {
-			return expr;
-		// Environment was modified, mutate and replace.
-		} else if ( envModified ) {
-			auto mutExpr = mutate(expr);
-			mutExpr->env = env;
-			return mutExpr;
-		// Environment was not mutated, delete the shallow copy before guard.
-		} else {
-			delete env;
-			return expr;
-		}
-	}
-
-	bool ResolveCopyCtors::skipCopyConstruct( const ast::Type * type ) { return ! isConstructable( type ); }
-
-	const ast::Expr * ResolveCopyCtors::makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg ) {
-		assert( var );
-		assert( var->isManaged() );
-		assert( !cpArg || cpArg->isManaged() );
-		// arrays are not copy constructed, so this should always be an ExprStmt
-		ast::ptr< ast::Stmt > stmt = genCtorDtor(var->location, fname, var, cpArg );
-		assertf( stmt, "ResolveCopyCtors: genCtorDtor returned nullptr: %s / %s / %s", fname.c_str(), toString( var ).c_str(), toString( cpArg ).c_str() );
-		auto exprStmt = stmt.strict_as<ast::ImplicitCtorDtorStmt>()->callStmt.strict_as<ast::ExprStmt>();
-		ast::ptr<ast::Expr> untyped = exprStmt->expr; // take ownership of expr
-
-		// resolve copy constructor
-		// should only be one alternative for copy ctor and dtor expressions, since all arguments are fixed
-		// (VariableExpr and already resolved expression)
-		CP_CTOR_PRINT( std::cerr << "ResolvingCtorDtor " << untyped << std::endl; )
-		ast::ptr<ast::Expr> resolved = ResolvExpr::findVoidExpression(untyped, { symtab, transUnit().global } );
-		assert( resolved );
-		if ( resolved->env ) {
-			// Extract useful information and discard new environments. Keeping them causes problems in PolyMutator passes.
-			env->add( *resolved->env );
-			envModified = true;
-			auto mut = mutate(resolved.get());
-			assertf(mut == resolved.get(), "newly resolved expression must be unique");
-			mut->env = nullptr;
-		} // if
-		if ( auto assign = resolved.as<ast::TupleAssignExpr>() ) {
-			// fix newly generated StmtExpr
-			previsit( assign->stmtExpr );
-		}
-		return resolved.release();
-	}
-
-	ast::ptr<ast::Expr> ResolveCopyCtors::copyConstructArg(
-		const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal )
-	{
-		static UniqueName tempNamer("_tmp_cp");
-		const CodeLocation loc = impCpCtorExpr->location;
-		// CP_CTOR_PRINT( std::cerr << "Type Substitution: " << *env << std::endl; )
-		assert( arg->result );
-		ast::ptr<ast::Type> result = arg->result;
-		if ( skipCopyConstruct( result ) ) return arg; // skip certain non-copyable types
-
-		// type may involve type variables, so apply type substitution to get temporary variable's actual type,
-		// since result type may not be substituted (e.g., if the type does not appear in the parameter list)
-		// Use applyFree so that types bound in function pointers are not substituted, e.g. in forall(dtype T) void (*)(T).
-
-		// xxx - this originally mutates arg->result in place. is it correct?
-		assert( env );
-		result = env->applyFree( result.get() ).node;
-		auto mutResult = result.get_and_mutate();
-		mutResult->set_const(false);
-
-		auto mutArg = mutate(arg);
-		mutArg->result = mutResult;
-
-		ast::ptr<ast::Expr> guard = mutArg;
-
-		ast::ptr<ast::ObjectDecl> tmp = new ast::ObjectDecl(loc, "__tmp", mutResult, nullptr );
-
-		// create and resolve copy constructor
-		CP_CTOR_PRINT( std::cerr << "makeCtorDtor for an argument" << std::endl; )
-		auto cpCtor = makeCtorDtor( "?{}", tmp, mutArg );
-
-		if ( auto appExpr = dynamic_cast< const ast::ApplicationExpr * >( cpCtor ) ) {
-			// if the chosen constructor is intrinsic, the copy is unnecessary, so
-			// don't create the temporary and don't call the copy constructor
-			auto function = appExpr->func.strict_as<ast::VariableExpr>();
-			if ( function->var->linkage == ast::Linkage::Intrinsic ) {
-				// arguments that need to be boxed need a temporary regardless of whether the copy constructor is intrinsic,
-				// so that the object isn't changed inside of the polymorphic function
-				if ( ! GenPoly::needsBoxing( formal, result, impCpCtorExpr->callExpr, env ) ) {
-					// xxx - should arg->result be mutated? see comment above.
-					return guard;
-				}
-			}
-		}
-
-		// set a unique name for the temporary once it's certain the call is necessary
-		auto mut = tmp.get_and_mutate();
-		assertf (mut == tmp, "newly created ObjectDecl must be unique");
-		mut->name = tempNamer.newName();
-
-		// replace argument to function call with temporary
-		stmtsToAddBefore.push_back( new ast::DeclStmt(loc, tmp ) );
-		arg = cpCtor;
-		return destructRet( tmp, arg );
-
-		// impCpCtorExpr->dtors.push_front( makeCtorDtor( "^?{}", tmp ) );
-	}
-
-	ast::Expr * ResolveCopyCtors::destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg ) {
-		auto global = transUnit().global;
-		// TODO: refactor code for generating cleanup attribute, since it's common and reused in ~3-4 places
-		// check for existing cleanup attribute before adding another(?)
-		// need to add __Destructor for _tmp_cp variables as well
-
-		assertf( global.dtorStruct, "Destructor generation requires __Destructor definition." );
-		assertf( global.dtorStruct->members.size() == 2, "__Destructor definition does not have expected fields." );
-		assertf( global.dtorDestroy, "Destructor generation requires __destroy_Destructor." );
-
-		const CodeLocation loc = ret->location;
-
-		// generate a __Destructor for ret that calls the destructor
-		auto res = makeCtorDtor( "^?{}", ret );
-		auto dtor = mutate(res);
-
-		// if the chosen destructor is intrinsic, elide the generated dtor handler
-		if ( arg && isIntrinsicCallExpr( dtor ) ) {
-			return new ast::CommaExpr(loc, arg, new ast::VariableExpr(loc, ret ) );
-		}
-
-		if ( ! dtor->env ) dtor->env = maybeClone( env );
-		auto dtorFunc = getDtorFunc( ret, new ast::ExprStmt(loc, dtor ), stmtsToAddBefore );
-
-		auto dtorStructType = new ast::StructInstType( global.dtorStruct );
-
-		// what does this do???
-		dtorStructType->params.push_back( new ast::TypeExpr(loc, new ast::VoidType() ) );
-
-		// cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
-		auto dtorFtype = new ast::FunctionType();
-		dtorFtype->params.push_back( new ast::PointerType(new ast::VoidType( ) ) );
-		auto dtorType = new ast::PointerType( dtorFtype );
-
-		static UniqueName namer( "_ret_dtor" );
-		auto retDtor = new ast::ObjectDecl(loc, namer.newName(), dtorStructType, new ast::ListInit(loc, { new ast::SingleInit(loc, ast::ConstantExpr::null(loc) ), new ast::SingleInit(loc, new ast::CastExpr( new ast::VariableExpr(loc, dtorFunc ), dtorType ) ) } ) );
-		retDtor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, global.dtorDestroy ) } ) );
-		stmtsToAddBefore.push_back( new ast::DeclStmt(loc, retDtor ) );
-
-		if ( arg ) {
-			auto member = new ast::MemberExpr(loc, global.dtorStruct->members.front().strict_as<ast::DeclWithType>(), new ast::VariableExpr(loc, retDtor ) );
-			auto object = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, ret ) ), new ast::PointerType(new ast::VoidType() ) );
-			ast::Expr * assign = createBitwiseAssignment( member, object );
-			return new ast::CommaExpr(loc, new ast::CommaExpr(loc, arg, assign ), new ast::VariableExpr(loc, ret ) );
-		}
-		return nullptr;
-		// impCpCtorExpr->get_dtors().push_front( makeCtorDtor( "^?{}", ret ) );
-	}
-
-	const ast::Expr * ResolveCopyCtors::postvisit( const ast::ImplicitCopyCtorExpr *impCpCtorExpr ) {
-		CP_CTOR_PRINT( std::cerr << "ResolveCopyCtors: " << impCpCtorExpr << std::endl; )
-
-		ast::ApplicationExpr * appExpr = mutate(impCpCtorExpr->callExpr.get());
-		const ast::ObjectDecl * returnDecl = nullptr;
-		const CodeLocation loc = appExpr->location;
-
-		// take each argument and attempt to copy construct it.
-		auto ftype = GenPoly::getFunctionType( appExpr->func->result );
-		assert( ftype );
-		auto & params = ftype->params;
-		auto iter = params.begin();
-		for ( auto & arg : appExpr->args ) {
-			const ast::Type * formal = nullptr;
-			if ( iter != params.end() ) { // does not copy construct C-style variadic arguments
-				// DeclarationWithType * param = *iter++;
-				formal = *iter++;
-			}
-
-			arg = copyConstructArg( arg, impCpCtorExpr, formal );
-		} // for
-
-		// each return value from the call needs to be connected with an ObjectDecl at the call site, which is
-		// initialized with the return value and is destructed later
-		// xxx - handle named return values?
-		const ast::Type * result = appExpr->result;
-		if ( ! result->isVoid() ) {
-			static UniqueName retNamer("_tmp_cp_ret");
-			auto subResult = env->apply( result ).node;
-			auto ret = new ast::ObjectDecl(loc, retNamer.newName(), subResult, nullptr );
-			auto mutType = mutate(ret->type.get());
-			mutType->set_const( false );
-			ret->type = mutType;
-			returnDecl = ret;
-			stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
-			CP_CTOR_PRINT( std::cerr << "makeCtorDtor for a return" << std::endl; )
-		} // for
-		CP_CTOR_PRINT( std::cerr << "after Resolving: " << impCpCtorExpr << std::endl; )
-		// ------------------------------------------------------
-
-		CP_CTOR_PRINT( std::cerr << "Coming out the back..." << impCpCtorExpr << std::endl; )
-
-		// detach fields from wrapper node so that it can be deleted without deleting too much
-
-		// xxx - actual env might be somewhere else, need to keep invariant
-
-		// deletion of wrapper should be handled by pass template now
-
-		// impCpCtorExpr->callExpr = nullptr;
-		assert (appExpr->env == nullptr);
-		appExpr->env = impCpCtorExpr->env;
-		// std::swap( impCpCtorExpr->env, appExpr->env );
-		// assert( impCpCtorExpr->env == nullptr );
-		// delete impCpCtorExpr;
-
-		if ( returnDecl ) {
-			ast::Expr * assign = createBitwiseAssignment( new ast::VariableExpr(loc, returnDecl ), appExpr );
-			if ( ! dynamic_cast< const ast::ReferenceType * >( result ) ) {
-				// destructing reference returns is bad because it can cause multiple destructor calls to the same object - the returned object is not a temporary
-				assign = destructRet( returnDecl, assign );
-				assert(assign);
-			} else {
-				assign = new ast::CommaExpr(loc, assign, new ast::VariableExpr(loc, returnDecl ) );
-			}
-			// move env from appExpr to retExpr
-			// std::swap( assign->env, appExpr->env );
-			assign->env = appExpr->env;
-			// actual env is handled by common routine that replaces WithTypeSubstitution
-			return postvisit((const ast::Expr *)assign);
-		} else {
-			return postvisit((const ast::Expr *)appExpr);
-		} // if
-	}
-
-	const ast::StmtExpr * ResolveCopyCtors::previsit( const ast::StmtExpr * _stmtExpr ) {
-		// function call temporaries should be placed at statement-level, rather than nested inside of a new statement expression,
-		// since temporaries can be shared across sub-expressions, e.g.
-		//   [A, A] f();       // decl
-		//   g([A] x, [A] y);  // decl
-		//   g(f());           // call
-		// f is executed once, so the return temporary is shared across the tuple constructors for x and y.
-		// Explicitly mutating children instead of mutating the inner compound statement forces the temporaries to be added
-		// to the outer context, rather than inside of the statement expression.
-
-		// call the common routine that replaces WithTypeSubstitution
-		previsit((const ast::Expr *) _stmtExpr);
-
-		visit_children = false;
-		const CodeLocation loc = _stmtExpr->location;
-
-		assert( env );
-
-		symtab.enterScope();
-		// visit all statements
-		auto stmtExpr = mutate(_stmtExpr);
-		auto mutStmts = mutate(stmtExpr->stmts.get());
-
-		auto & stmts = mutStmts->kids;
-		for ( auto & stmt : stmts ) {
-			stmt = stmt->accept( *visitor );
-		} // for
-		stmtExpr->stmts = mutStmts;
-		symtab.leaveScope();
-
-		assert( stmtExpr->result );
-		// const ast::Type * result = stmtExpr->result;
-		if ( ! stmtExpr->result->isVoid() ) {
-			static UniqueName retNamer("_tmp_stmtexpr_ret");
-
-			// result = result->clone();
-			auto result = env->apply( stmtExpr->result.get() ).node;
-			if ( ! InitTweak::isConstructable( result ) ) {
-				// delete result;
-				return stmtExpr;
-			}
-			auto mutResult = result.get_and_mutate();
-			mutResult->set_const(false);
-
-			// create variable that will hold the result of the stmt expr
-			auto ret = new ast::ObjectDecl(loc, retNamer.newName(), mutResult, nullptr );
-			stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
-
-			assertf(
-				stmtExpr->resultExpr,
-				"Statement-Expression should have a resulting expression at %s:%d",
-				stmtExpr->location.filename.c_str(),
-				stmtExpr->location.first_line
-			);
-
-			const ast::ExprStmt * last = stmtExpr->resultExpr;
-			// xxx - if this is non-unique, need to copy while making resultExpr ref
-			assertf(last->unique(), "attempt to modify weakly shared statement");
-			auto mutLast = mutate(last);
-			// above assertion means in-place mutation is OK
-			try {
-				mutLast->expr = makeCtorDtor( "?{}", ret, mutLast->expr );
-			} catch(...) {
-				std::cerr << "*CFA internal error: ";
-				std::cerr << "can't resolve implicit constructor";
-				std::cerr << " at " << stmtExpr->location.filename;
-				std::cerr << ":" << stmtExpr->location.first_line << std::endl;
-
-				abort();
-			}
-
-			// add destructors after current statement
-			stmtsToAddAfter.push_back( new ast::ExprStmt(loc, makeCtorDtor( "^?{}", ret ) ) );
-
-			// must have a non-empty body, otherwise it wouldn't have a result
-			assert( ! stmts.empty() );
-
-			// if there is a return decl, add a use as the last statement; will not have return decl on non-constructable returns
-			stmts.push_back( new ast::ExprStmt(loc, new ast::VariableExpr(loc, ret ) ) );
-		} // if
-
-		assert( stmtExpr->returnDecls.empty() );
-		assert( stmtExpr->dtors.empty() );
-
-		return stmtExpr;
-	}
-
-	// to prevent warnings ('_unq0' may be used uninitialized in this function),
-	// insert an appropriate zero initializer for UniqueExpr temporaries.
-	ast::Init * makeInit( const ast::Type * t, CodeLocation const & loc ) {
-		if ( auto inst = dynamic_cast< const ast::StructInstType * >( t ) ) {
-			// initizer for empty struct must be empty
-			if ( inst->base->members.empty() ) {
-				return new ast::ListInit( loc, {} );
-			}
-		} else if ( auto inst = dynamic_cast< const ast::UnionInstType * >( t ) ) {
-			// initizer for empty union must be empty
-			if ( inst->base->members.empty() ) {
-				return new ast::ListInit( loc, {} );
-			}
-		}
-
-		return new ast::ListInit( loc, {
-			new ast::SingleInit( loc, ast::ConstantExpr::from_int( loc, 0 ) )
-		} );
-	}
-
-	const ast::UniqueExpr * ResolveCopyCtors::previsit( const ast::UniqueExpr * unqExpr ) {
-		visit_children = false;
-		// xxx - hack to prevent double-handling of unique exprs, otherwise too many temporary variables and destructors are generated
-		static std::unordered_map< int, const ast::UniqueExpr * > unqMap;
-		auto mutExpr = mutate(unqExpr);
-		if ( ! unqMap.count( unqExpr->id ) ) {
-			// resolve expr and find its
-
-			auto impCpCtorExpr = mutExpr->expr.as<ast::ImplicitCopyCtorExpr>();
-			// PassVisitor<ResolveCopyCtors> fixer;
-
-			mutExpr->expr = mutExpr->expr->accept( *visitor );
-			// it should never be necessary to wrap a void-returning expression in a UniqueExpr - if this assumption changes, this needs to be rethought
-			assert( unqExpr->result );
-			if ( impCpCtorExpr ) {
-				auto comma = unqExpr->expr.strict_as<ast::CommaExpr>();
-				auto var = comma->arg2.strict_as<ast::VariableExpr>();
-				// note the variable used as the result from the call
-				mutExpr->var = var;
-			} else {
-				// expr isn't a call expr, so create a new temporary variable to use to hold the value of the unique expression
-				mutExpr->object = new ast::ObjectDecl( mutExpr->location, toString("_unq", mutExpr->id), mutExpr->result, makeInit( mutExpr->result, mutExpr->location ) );
-				mutExpr->var = new ast::VariableExpr( mutExpr->location, mutExpr->object );
-			}
-
-			unqMap[mutExpr->id] = mutExpr;
-		} else {
-			// take data from other UniqueExpr to ensure consistency
-			// delete unqExpr->get_expr();
-			mutExpr->expr = unqMap[mutExpr->id]->expr;
-			// delete unqExpr->result;
-			mutExpr->result = mutExpr->expr->result;
-		}
-		return mutExpr;
-	}
-
-	const ast::DeclWithType * FixInit::postvisit( const ast::ObjectDecl *_objDecl ) {
-		const CodeLocation loc = _objDecl->location;
-
-		// since this removes the init field from objDecl, it must occur after children are mutated (i.e. postvisit)
-		if ( ast::ptr<ast::ConstructorInit> ctorInit = _objDecl->init.as<ast::ConstructorInit>() ) {
-			auto objDecl = mutate(_objDecl);
-
-			// could this be non-unique?
-			if (objDecl != _objDecl) {
-				std::cerr << "FixInit: non-unique object decl " << objDecl->location << objDecl->name << std::endl;
-			}
-			// a decision should have been made by the resolver, so ctor and init are not both non-NULL
-			assert( ! ctorInit->ctor || ! ctorInit->init );
-			if ( const ast::Stmt * ctor = ctorInit->ctor ) {
-				if ( objDecl->storage.is_static ) {
-					addDataSectionAttribute(objDecl);
-					// originally wanted to take advantage of gcc nested functions, but
-					// we get memory errors with this approach. To remedy this, the static
-					// variable is hoisted when the destructor needs to be called.
-					//
-					// generate:
-					// static T __objName_static_varN;
-					// void __objName_dtor_atexitN() {
-					//   __dtor__...;
-					// }
-					// int f(...) {
-					//   ...
-					//   static bool __objName_uninitialized = true;
-					//   if (__objName_uninitialized) {
-					//     __ctor(__objName);
-					//     __objName_uninitialized = false;
-					//     atexit(__objName_dtor_atexitN);
-					//   }
-					//   ...
-					// }
-
-					static UniqueName dtorCallerNamer( "_dtor_atexit" );
-
-					// static bool __objName_uninitialized = true
-					auto boolType = new ast::BasicType( ast::BasicType::Kind::Bool );
-					auto boolInitExpr = new ast::SingleInit(loc, ast::ConstantExpr::from_int(loc, 1 ) );
-					auto isUninitializedVar = new ast::ObjectDecl(loc, objDecl->mangleName + "_uninitialized", boolType, boolInitExpr, ast::Storage::Static, ast::Linkage::Cforall);
-					isUninitializedVar->fixUniqueId();
-
-					// __objName_uninitialized = false;
-					auto setTrue = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ) );
-					setTrue->args.push_back( new ast::VariableExpr(loc, isUninitializedVar ) );
-					setTrue->args.push_back( ast::ConstantExpr::from_int(loc, 0 ) );
-
-					// generate body of if
-					auto initStmts = new ast::CompoundStmt(loc);
-					auto & body = initStmts->kids;
-					body.push_back( ctor );
-					body.push_back( new ast::ExprStmt(loc, setTrue ) );
-
-					// put it all together
-					auto ifStmt = new ast::IfStmt(loc, new ast::VariableExpr(loc, isUninitializedVar ), initStmts, 0 );
-					stmtsToAddAfter.push_back( new ast::DeclStmt(loc, isUninitializedVar ) );
-					stmtsToAddAfter.push_back( ifStmt );
-
-					const ast::Stmt * dtor = ctorInit->dtor;
-
-					// these should be automatically managed once reassigned
-					// objDecl->set_init( nullptr );
-					// ctorInit->set_ctor( nullptr );
-					// ctorInit->set_dtor( nullptr );
-					if ( dtor ) {
-						// if the object has a non-trivial destructor, have to
-						// hoist it and the object into the global space and
-						// call the destructor function with atexit.
-
-						// Statement * dtorStmt = dtor->clone();
-
-						// void __objName_dtor_atexitN(...) {...}
-						ast::FunctionDecl * dtorCaller = new ast::FunctionDecl(loc, objDecl->mangleName + dtorCallerNamer.newName(), {}, {}, {}, new ast::CompoundStmt(loc, {dtor}), ast::Storage::Static, ast::Linkage::C );
-						dtorCaller->fixUniqueId();
-						// dtorCaller->stmts->push_back( dtor );
-
-						// atexit(dtor_atexit);
-						auto callAtexit = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "atexit" ) );
-						callAtexit->args.push_back( new ast::VariableExpr(loc, dtorCaller ) );
-
-						body.push_back( new ast::ExprStmt(loc, callAtexit ) );
-
-						// hoist variable and dtor caller decls to list of decls that will be added into global scope
-						staticDtorDecls.push_back( objDecl );
-						staticDtorDecls.push_back( dtorCaller );
-
-						// need to rename object uniquely since it now appears
-						// at global scope and there could be multiple function-scoped
-						// static variables with the same name in different functions.
-						// Note: it isn't sufficient to modify only the mangleName, because
-						// then subsequent Indexer passes can choke on seeing the object's name
-						// if another object has the same name and type. An unfortunate side-effect
-						// of renaming the object is that subsequent NameExprs may fail to resolve,
-						// but there shouldn't be any remaining past this point.
-						static UniqueName staticNamer( "_static_var" );
-						objDecl->name = objDecl->name + staticNamer.newName();
-						objDecl->mangleName = Mangle::mangle( objDecl );
-						objDecl->init = nullptr;
-
-						// xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope
-						// create a new object which is never used
-						static UniqueName dummyNamer( "_dummy" );
-						auto dummy = new ast::ObjectDecl(loc, dummyNamer.newName(), new ast::PointerType(new ast::VoidType()), nullptr, ast::Storage::Static, ast::Linkage::Cforall, 0, { new ast::Attribute("unused") } );
-						// delete ctorInit;
-						return dummy;
-					} else {
-						objDecl->init = nullptr;
-						return objDecl;
-					}
-				} else {
-					auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * > ( ctor );
-					auto ctorStmt = implicit->callStmt.as<ast::ExprStmt>();
-					const ast::ApplicationExpr * ctorCall = nullptr;
-					if ( ctorStmt && (ctorCall = isIntrinsicCallExpr( ctorStmt->expr )) && ctorCall->args.size() == 2 ) {
-						// clean up intrinsic copy constructor calls by making them into SingleInits
-						const ast::Expr * ctorArg = ctorCall->args.back();
-						// ctorCall should be gone afterwards
-						auto mutArg = mutate(ctorArg);
-						mutArg->env = ctorCall->env;
-						// std::swap( ctorArg->env, ctorCall->env );
-						objDecl->init = new ast::SingleInit(loc, mutArg );
-
-						// ctorCall->args.pop_back();
-					} else {
-						stmtsToAddAfter.push_back( ctor );
-						objDecl->init = nullptr;
-						// ctorInit->ctor = nullptr;
-					}
-
-					const ast::Stmt * dtor = ctorInit->dtor;
-					if ( dtor ) {
-						auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * >( dtor );
-						const ast::Stmt * dtorStmt = implicit->callStmt;
-
-						// don't need to call intrinsic dtor, because it does nothing, but
-						// non-intrinsic dtors must be called
-						if ( ! isIntrinsicSingleArgCallStmt( dtorStmt ) ) {
-							// set dtor location to the object's location for error messages
-							auto dtorFunc = getDtorFunc( objDecl, dtorStmt, stmtsToAddBefore );
-							objDecl->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, dtorFunc ) } ) );
-							// ctorInit->dtor = nullptr;
-						} // if
-					}
-				} // if
-			} else if ( const ast::Init * init = ctorInit->init ) {
-				objDecl->init = init;
-				// ctorInit->init = nullptr;
-			} else {
-				// no constructor and no initializer, which is okay
-				objDecl->init = nullptr;
-			} // if
-			// delete ctorInit;
-			return objDecl;
-		} // if
-		return _objDecl;
-	}
-
-	void ObjDeclCollector::previsit( const ast::CompoundStmt * ) {
-		GuardValue( curVars );
-	}
-
-	void ObjDeclCollector::previsit( const ast::DeclStmt * stmt ) {
-		// keep track of all variables currently in scope
-		if ( auto objDecl = stmt->decl.as<ast::ObjectDecl>() ) {
-			curVars.push_back( objDecl );
-		} // if
-	}
-
-	void LabelFinder::previsit( const ast::Stmt * stmt ) {
-		// for each label, remember the variables in scope at that label.
-		for ( auto l : stmt->labels ) {
-			vars[l] = curVars;
-		} // for
-	}
-
-	void LabelFinder::previsit( const ast::CompoundStmt * stmt ) {
-		previsit( (const ast::Stmt *) stmt );
-		Parent::previsit( stmt );
-	}
-
-	void LabelFinder::previsit( const ast::DeclStmt * stmt ) {
-		previsit( (const ast::Stmt *)stmt );
-		Parent::previsit( stmt );
-	}
-
-
-	void InsertDtors::previsit( const ast::FunctionDecl * funcDecl ) {
-		// each function needs to have its own set of labels
-		GuardValue( labelVars );
-		labelVars.clear();
-		// LabelFinder does not recurse into FunctionDecl, so need to visit
-		// its children manually.
-		if (funcDecl->type) funcDecl->type->accept(finder);
-		// maybeAccept( funcDecl->type, finder );
-		if (funcDecl->stmts) funcDecl->stmts->accept(finder) ;
-
-		// all labels for this function have been collected, insert destructors as appropriate via implicit recursion.
-	}
-
-	// Handle break/continue/goto in the same manner as C++.  Basic idea: any objects that are in scope at the
-	// BranchStmt but not at the labelled (target) statement must be destructed.  If there are any objects in scope
-	// at the target location but not at the BranchStmt then those objects would be uninitialized so notify the user
-	// of the error.  See C++ Reference 6.6 Jump Statements for details.
-	void InsertDtors::handleGoto( const ast::BranchStmt * stmt ) {
-		// can't do anything for computed goto
-		if ( stmt->computedTarget ) return;
-
-		assertf( stmt->target.name != "", "BranchStmt missing a label: %s", toString( stmt ).c_str() );
-		// S_L = lvars = set of objects in scope at label definition
-		// S_G = curVars = set of objects in scope at goto statement
-		ObjectSet & lvars = labelVars[ stmt->target ];
-
-		DTOR_PRINT(
-			std::cerr << "at goto label: " << stmt->target.name << std::endl;
-			std::cerr << "S_G = " << printSet( curVars ) << std::endl;
-			std::cerr << "S_L = " << printSet( lvars ) << std::endl;
-		)
-
-
-		// std::set_difference requires that the inputs be sorted.
-		lvars.sort();
-		curVars.sort();
-
-		ObjectSet diff;
-		// S_L-S_G results in set of objects whose construction is skipped - it's an error if this set is non-empty
-		std::set_difference( lvars.begin(), lvars.end(), curVars.begin(), curVars.end(), std::inserter( diff, diff.begin() ) );
-		DTOR_PRINT(
-			std::cerr << "S_L-S_G = " << printSet( diff ) << std::endl;
-		)
-		if ( ! diff.empty() ) {
-			SemanticError( stmt, std::string("jump to label '") + stmt->target.name + "' crosses initialization of " + (*diff.begin())->name + " " );
-		} // if
-	}
-
-	void InsertDtors::previsit( const ast::BranchStmt * stmt ) {
-		switch( stmt->kind ) {
-		case ast::BranchStmt::Continue:
-		case ast::BranchStmt::Break:
-			// could optimize the break/continue case, because the S_L-S_G check is unnecessary (this set should
-			// always be empty), but it serves as a small sanity check.
-		case ast::BranchStmt::Goto:
-			handleGoto( stmt );
-			break;
-		default:
-			assert( false );
-		} // switch
-	}
-
-	bool checkWarnings( const ast::FunctionDecl * funcDecl ) {
-		// only check for warnings if the current function is a user-defined
-		// constructor or destructor
-		if ( ! funcDecl ) return false;
-		if ( ! funcDecl->stmts ) return false;
-		return CodeGen::isCtorDtor( funcDecl->name ) && ! funcDecl->linkage.is_overrideable;
-	}
-
-	void GenStructMemberCalls::previsit( const ast::FunctionDecl * funcDecl ) {
-		GuardValue( function );
-		GuardValue( unhandled );
-		GuardValue( usedUninit );
-		GuardValue( thisParam );
-		GuardValue( isCtor );
-		GuardValue( structDecl );
-		errors = SemanticErrorException();  // clear previous errors
-
-		// need to start with fresh sets
-		unhandled.clear();
-		usedUninit.clear();
-
-		function = mutate(funcDecl);
-		// could this be non-unique?
-		if (function != funcDecl) {
-			std::cerr << "GenStructMemberCalls: non-unique FunctionDecl " << funcDecl->location << funcDecl->name << std::endl;
-		}
-
-		isCtor = CodeGen::isConstructor( function->name );
-		if ( checkWarnings( function ) ) {
-			// const ast::FunctionType * type = function->type;
-			// assert( ! type->params.empty() );
-			thisParam = function->params.front().strict_as<ast::ObjectDecl>();
-			auto thisType = getPointerBase( thisParam->get_type() );
-			auto structType = dynamic_cast< const ast::StructInstType * >( thisType );
-			if ( structType ) {
-				structDecl = structType->base;
-				for ( auto & member : structDecl->members ) {
-					if ( auto field = member.as<ast::ObjectDecl>() ) {
-						// record all of the struct type's members that need to be constructed or
-						// destructed by the end of the function
-						unhandled.insert( field );
-					}
-				}
-			}
-		}
-	}
-
-	const ast::DeclWithType * GenStructMemberCalls::postvisit( const ast::FunctionDecl * funcDecl ) {
-		// remove the unhandled objects from usedUninit, because a call is inserted
-		// to handle them - only objects that are later constructed are used uninitialized.
-		std::map< const ast::DeclWithType *, CodeLocation > diff;
-		// need the comparator since usedUninit and unhandled have different types
-		struct comp_t {
-			typedef decltype(usedUninit)::value_type usedUninit_t;
-			typedef decltype(unhandled)::value_type unhandled_t;
-			bool operator()(usedUninit_t x, unhandled_t y) { return x.first < y; }
-			bool operator()(unhandled_t x, usedUninit_t y) { return x < y.first; }
-		} comp;
-		std::set_difference( usedUninit.begin(), usedUninit.end(), unhandled.begin(), unhandled.end(), std::inserter( diff, diff.begin() ), comp );
-		for ( auto p : diff ) {
-			auto member = p.first;
-			auto loc = p.second;
-			// xxx - make error message better by also tracking the location that the object is constructed at?
-			emit( loc, "in ", function->name, ", field ", member->name, " used before being constructed" );
-		}
-
-		const CodeLocation loc = funcDecl->location;
-
-		if ( ! unhandled.empty() ) {
-			auto mutStmts = function->stmts.get_and_mutate();
-			// need to explicitly re-add function parameters to the indexer in order to resolve copy constructors
-			auto guard = makeFuncGuard( [this]() { symtab.enterScope(); }, [this]() { symtab.leaveScope(); } );
-			symtab.addFunction( function );
-			auto global = transUnit().global;
-
-			// need to iterate through members in reverse in order for
-			// ctor/dtor statements to come out in the right order
-			for ( auto & member : reverseIterate( structDecl->members ) ) {
-				auto field = member.as<ast::ObjectDecl>();
-				// skip non-DWT members
-				if ( ! field ) continue;
-				// skip non-constructable members
-				if ( ! tryConstruct( field ) ) continue;
-				// skip handled members
-				if ( ! unhandled.count( field ) ) continue;
-
-				// insert and resolve default/copy constructor call for each field that's unhandled
-				// std::list< const ast::Stmt * > stmt;
-				ast::Expr * arg2 = nullptr;
-				if ( function->name == "?{}" && isCopyFunction( function ) ) {
-					// if copy ctor, need to pass second-param-of-this-function.field
-					// std::list< DeclarationWithType * > & params = function->get_functionType()->get_parameters();
-					assert( function->params.size() == 2 );
-					arg2 = new ast::MemberExpr(funcDecl->location, field, new ast::VariableExpr(funcDecl->location, function->params.back() ) );
-				}
-				InitExpander_new srcParam( arg2 );
-				// cast away reference type and construct field.
-				ast::Expr * thisExpr = new ast::CastExpr(funcDecl->location, new ast::VariableExpr(funcDecl->location, thisParam ), thisParam->get_type()->stripReferences());
-				ast::Expr * memberDest = new ast::MemberExpr(funcDecl->location, field, thisExpr );
-				ast::ptr<ast::Stmt> callStmt = SymTab::genImplicitCall( srcParam, memberDest, loc, function->name, field, static_cast<SymTab::LoopDirection>(isCtor) );
-
-				if ( callStmt ) {
-					// auto & callStmt = stmt.front();
-
-					try {
-						callStmt = callStmt->accept( *visitor );
-						if ( isCtor ) {
-							mutStmts->push_front( callStmt );
-						} else { // TODO: don't generate destructor function/object for intrinsic calls
-							// destructor statements should be added at the end
-							// function->get_statements()->push_back( callStmt );
-
-							// Optimization: do not need to call intrinsic destructors on members
-							if ( isIntrinsicSingleArgCallStmt( callStmt ) ) continue;
-
-							// __Destructor _dtor0 = { (void *)&b.a1, (void (*)(void *)_destroy_A };
-							std::list< ast::ptr<ast::Stmt> > stmtsToAdd;
-
-							static UniqueName memberDtorNamer = { "__memberDtor" };
-							assertf( global.dtorStruct, "builtin __Destructor not found." );
-							assertf( global.dtorDestroy, "builtin __destroy_Destructor not found." );
-
-							ast::Expr * thisExpr = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, thisParam ) ), new ast::PointerType( new ast::VoidType(), ast::CV::Qualifiers() ) );
-							ast::Expr * dtorExpr = new ast::VariableExpr(loc, getDtorFunc( thisParam, callStmt, stmtsToAdd ) );
-
-							// cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
-							auto dtorFtype = new ast::FunctionType();
-							dtorFtype->params.emplace_back( new ast::PointerType( new ast::VoidType() ) );
-							auto dtorType = new ast::PointerType( dtorFtype );
-
-							auto destructor = new ast::ObjectDecl(loc, memberDtorNamer.newName(), new ast::StructInstType( global.dtorStruct ), new ast::ListInit(loc, { new ast::SingleInit(loc, thisExpr ), new ast::SingleInit(loc, new ast::CastExpr( dtorExpr, dtorType ) ) } ) );
-							destructor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr( loc, global.dtorDestroy ) } ) );
-							mutStmts->push_front( new ast::DeclStmt(loc, destructor ) );
-							mutStmts->kids.splice( mutStmts->kids.begin(), stmtsToAdd );
-						}
-					} catch ( SemanticErrorException & error ) {
-						emit( funcDecl->location, "in ", function->name , ", field ", field->name, " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
-					}
-				}
-			}
-			function->stmts = mutStmts;
-		}
-		if (! errors.isEmpty()) {
-			throw errors;
-		}
-		// return funcDecl;
-		return function;
-	}
-
-	/// true if expr is effectively just the 'this' parameter
-	bool isThisExpression( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
-		// TODO: there are more complicated ways to pass 'this' to a constructor, e.g. &*, *&, etc.
-		if ( auto varExpr = dynamic_cast< const ast::VariableExpr * >( expr ) ) {
-			return varExpr->var == thisParam;
-		} else if ( auto castExpr = dynamic_cast< const ast::CastExpr * > ( expr ) ) {
-			return isThisExpression( castExpr->arg, thisParam );
-		}
-		return false;
-	}
-
-	/// returns a MemberExpr if expr is effectively just member access on the 'this' parameter, else nullptr
-	const ast::MemberExpr * isThisMemberExpr( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
-		if ( auto memberExpr = dynamic_cast< const ast::MemberExpr * >( expr ) ) {
-			if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
-				return memberExpr;
-			}
-		} else if ( auto castExpr = dynamic_cast< const ast::CastExpr * >( expr ) ) {
-			return isThisMemberExpr( castExpr->arg, thisParam );
-		}
-		return nullptr;
-	}
-
-	void GenStructMemberCalls::previsit( const ast::ApplicationExpr * appExpr ) {
-		if ( ! checkWarnings( function ) ) {
-			visit_children = false;
-			return;
-		}
-
-		std::string fname = getFunctionName( appExpr );
-		if ( fname == function->name ) {
-			// call to same kind of function
-			const ast::Expr * firstParam = appExpr->args.front();
-
-			if ( isThisExpression( firstParam, thisParam ) ) {
-				// if calling another constructor on thisParam, assume that function handles
-				// all members - if it doesn't a warning will appear in that function.
-				unhandled.clear();
-			} else if ( auto memberExpr = isThisMemberExpr( firstParam, thisParam ) ) {
-				// if first parameter is a member expression on the this parameter,
-				// then remove the member from unhandled set.
-				if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
-					unhandled.erase( memberExpr->member );
-				}
-			}
-		}
-	}
-
-	void GenStructMemberCalls::previsit( const ast::MemberExpr * memberExpr ) {
-		if ( ! checkWarnings( function ) || ! isCtor ) {
-			visit_children = false;
-			return;
-		}
-
-		if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
-			if ( unhandled.count( memberExpr->member ) ) {
-				// emit a warning because a member was used before it was constructed
-				usedUninit.insert( { memberExpr->member, memberExpr->location } );
-			}
-		}
-	}
-
-	template< typename... Params >
-	void GenStructMemberCalls::emit( CodeLocation loc, const Params &... params ) {
-		SemanticErrorException err( loc, toString( params... ) );
-		errors.append( err );
-	}
-
-	const ast::Expr * GenStructMemberCalls::postvisit( const ast::UntypedExpr * untypedExpr ) {
-		// xxx - functions returning ast::ptr seems wrong...
-		auto res = ResolvExpr::findVoidExpression( untypedExpr, { symtab, transUnit().global } );
-		return res.release();
-	}
-
-	void InsertImplicitCalls::previsit(const ast::UniqueExpr * unqExpr) {
-		if (visitedIds.count(unqExpr->id)) visit_children = false;
-		else visitedIds.insert(unqExpr->id);
-	}
-
-	const ast::Expr * FixCtorExprs::postvisit( const ast::ConstructorExpr * ctorExpr ) {
-		const CodeLocation loc = ctorExpr->location;
-		static UniqueName tempNamer( "_tmp_ctor_expr" );
-		// xxx - is the size check necessary?
-		assert( ctorExpr->result && ctorExpr->result->size() == 1 );
-
-		// xxx - this can be TupleAssignExpr now. Need to properly handle this case.
-		// take possession of expr and env
-		ast::ptr<ast::ApplicationExpr> callExpr = ctorExpr->callExpr.strict_as<ast::ApplicationExpr>();
-		ast::ptr<ast::TypeSubstitution> env = ctorExpr->env;
-		// ctorExpr->set_callExpr( nullptr );
-		// ctorExpr->set_env( nullptr );
-
-		// xxx - ideally we would reuse the temporary generated from the copy constructor passes from within firstArg if it exists and not generate a temporary if it's unnecessary.
-		auto tmp = new ast::ObjectDecl(loc, tempNamer.newName(), callExpr->args.front()->result );
-		declsToAddBefore.push_back( tmp );
-
-		// build assignment and replace constructor's first argument with new temporary
-		auto mutCallExpr = callExpr.get_and_mutate();
-		const ast::Expr * firstArg = callExpr->args.front();
-		ast::Expr * assign = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ), { new ast::AddressExpr(loc, new ast::VariableExpr(loc, tmp ) ), new ast::AddressExpr( firstArg ) } );
-		firstArg = new ast::VariableExpr(loc, tmp );
-		mutCallExpr->args.front() = firstArg;
-
-		// resolve assignment and dispose of new env
-		auto resolved = ResolvExpr::findVoidExpression( assign, { symtab, transUnit().global } );
-		auto mut = resolved.get_and_mutate();
-		assertf(resolved.get() == mut, "newly resolved expression must be unique");
-		mut->env = nullptr;
-
-		// for constructor expr:
-		//   T x;
-		//   x{};
-		// results in:
-		//   T x;
-		//   T & tmp;
-		//   &tmp = &x, ?{}(tmp), tmp
-		ast::CommaExpr * commaExpr = new ast::CommaExpr(loc, resolved, new ast::CommaExpr(loc, mutCallExpr, new ast::VariableExpr(loc, tmp ) ) );
-		commaExpr->env = env;
-		return commaExpr;
-	}
-} // namespace
 } // namespace InitTweak
 
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/InitTweak/InitTweak.cc	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -891,6 +891,5 @@
 				dst = new ast::AddressExpr(dst);
 			}
-		}
-		else {
+		} else {
 			dst = new ast::CastExpr(dst, new ast::ReferenceType(dst->result, {}));
 		}
@@ -900,5 +899,9 @@
 			}
 		}
-		return new ast::ApplicationExpr(dst->location, ast::VariableExpr::functionPointer(dst->location, assign), {dst, src});
+		auto var = ast::VariableExpr::functionPointer(dst->location, assign);
+		auto app = new ast::ApplicationExpr(dst->location, var, {dst, src});
+		// Skip the resolver, just set the result to the correct type.
+		app->result = ast::deepCopy( src->result );
+		return app;
 	}
 
Index: src/SymTab/GenImplicitCall.cpp
===================================================================
--- src/SymTab/GenImplicitCall.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/SymTab/GenImplicitCall.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -16,4 +16,5 @@
 #include "GenImplicitCall.hpp"
 
+#include "AST/Copy.hpp"                  // for deepCopy
 #include "AST/Decl.hpp"                  // for ObjectDecl
 #include "AST/Expr.hpp"                  // for ConstantExpr, UntypedExpr,...
@@ -115,8 +116,9 @@
 	std::string cmp, update;
 
+	const ast::Expr * dimension = deepCopy( array->dimension );
 	if ( forward ) {
 		// generate: for ( int i = 0; i < N; ++i )
 		begin = ast::ConstantExpr::from_int( loc, 0 );
-		end = array->dimension;
+		end = dimension;
 		cmp = "?<?";
 		update = "++?";
@@ -124,5 +126,5 @@
 		// generate: for ( int i = N-1; i >= 0; --i )
 		begin = ast::UntypedExpr::createCall( loc, "?-?",
-			{ array->dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
+			{ dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
 		end = ast::ConstantExpr::from_int( loc, 0 );
 		cmp = "?>=?";
Index: src/Validate/Autogen.cpp
===================================================================
--- src/Validate/Autogen.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/Validate/Autogen.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -532,8 +532,20 @@
 		)
 	);
-	return genImplicitCall(
+	auto stmt = genImplicitCall(
 		srcParam, dstSelect, location, func->name,
 		field, direction
 	);
+	// This could return the above directly, except the generated code is
+	// built using the structure's members and that means all the scoped
+	// names (the forall parameters) are incorrect. This corrects them.
+	if ( stmt && !decl->params.empty() ) {
+		ast::DeclReplacer::TypeMap oldToNew;
+		for ( auto pair : group_iterate( decl->params, func->type_params ) ) {
+			oldToNew.emplace( std::get<0>(pair), std::get<1>(pair) );
+		}
+		auto node = ast::DeclReplacer::replace( stmt, oldToNew );
+		stmt = strict_dynamic_cast<const ast::Stmt *>( node );
+	}
+	return stmt;
 }
 
Index: src/Validate/FixQualifiedTypes.cpp
===================================================================
--- src/Validate/FixQualifiedTypes.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/Validate/FixQualifiedTypes.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -89,26 +89,25 @@
 	}
 
-	ast::Expr const * postvisit( ast::QualifiedNameExpr const * t) {
+	ast::Expr const * postvisit( ast::QualifiedNameExpr const * t ) {
 		assert( location );
-		if ( t->type_decl ) {
-        	auto enumName = t->type_decl->name;
-        	const ast::EnumDecl * enumDecl = symtab.lookupEnum( enumName );
-			for ( ast::ptr<ast::Decl> const & member : enumDecl->members ) {
-				if ( auto memberAsObj = member.as<ast::ObjectDecl>() ) {
-					if ( memberAsObj->name == t->name ) {
-						return new ast::VariableExpr( t->location, memberAsObj );
-					}
-				} else {
-					assertf( false, "unhandled qualified child type");
+		if ( !t->type_decl ) return t;
+
+		auto enumName = t->type_decl->name;
+		const ast::EnumDecl * enumDecl = symtab.lookupEnum( enumName );
+		for ( ast::ptr<ast::Decl> const & member : enumDecl->members ) {
+			if ( auto memberAsObj = member.as<ast::ObjectDecl>() ) {
+				if ( memberAsObj->name == t->name ) {
+					return new ast::VariableExpr( t->location, memberAsObj );
 				}
+			} else {
+				assertf( false, "unhandled qualified child type" );
 			}
+		}
 
-        	auto var = new ast::ObjectDecl( t->location, t->name,
-			new ast::EnumInstType(enumDecl, ast::CV::Const), nullptr, {}, ast::Linkage::Cforall );
-			var->mangleName = Mangle::mangle( var );
-			return new ast::VariableExpr( t->location, var );
-        }
-
-		return t;
+		auto var = new ast::ObjectDecl( t->location, t->name,
+			new ast::EnumInstType( enumDecl, ast::CV::Const ),
+			nullptr, {}, ast::Linkage::Cforall );
+		var->mangleName = Mangle::mangle( var );
+		return new ast::VariableExpr( t->location, var );
 	}
 
Index: src/Validate/ForallPointerDecay.cpp
===================================================================
--- src/Validate/ForallPointerDecay.cpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/Validate/ForallPointerDecay.cpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -214,6 +214,6 @@
 		if ( dynamic_cast< const ast::FunctionType * >( type ) ) return;
 		SemanticError( obj->location,
-			toCString( "operator ", obj->name.c_str(), " is not "
-			"a function or function pointer." ) );
+			toCString( "operator ", obj->name.c_str(),
+			" is not a function or function pointer." ) );
 	}
 };
@@ -237,4 +237,7 @@
 	ast::Pass<AssertionFunctionFixer>::run( transUnit );
 	ast::Pass<OperatorChecker>::run( transUnit );
+}
+
+void fixUniqueIds( ast::TranslationUnit & transUnit ) {
 	ast::Pass<UniqueFixCore>::run( transUnit );
 }
Index: src/Validate/ForallPointerDecay.hpp
===================================================================
--- src/Validate/ForallPointerDecay.hpp	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/Validate/ForallPointerDecay.hpp	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -27,10 +27,13 @@
 
 /// Cleans up assertion lists and expands traits.
-/// Also checks that operator names are used properly on functions and
-/// assigns unique IDs. This is a "legacy" pass.
+/// Also checks that operator names are used properly on functions.
+/// This is a "legacy" pass.
+/// Must happen before auto-gen routines are added.
+void decayForallPointers( ast::TranslationUnit & transUnit );
+
+/// Sets uniqueIds on any declarations that do not have one set.
 /// Must be after implement concurrent keywords; because uniqueIds must be
 /// set on declaration before resolution.
-/// Must happen before auto-gen routines are added.
-void decayForallPointers( ast::TranslationUnit & transUnit );
+void fixUniqueIds( ast::TranslationUnit & transUnit );
 
 /// Expand all traits in an assertion list.
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ src/main.cc	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -334,4 +334,5 @@
 		PASS( "Link Reference To Types", Validate::linkReferenceToTypes, transUnit );
 
+		PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
 		PASS( "Fix Qualified Types", Validate::fixQualifiedTypes, transUnit );
 		PASS( "Eliminate Typedef", Validate::eliminateTypedef, transUnit );
@@ -342,5 +343,5 @@
 		PASS( "Fix Return Statements", InitTweak::fixReturnStatements, transUnit );
 		PASS( "Implement Concurrent Keywords", Concurrency::implementKeywords, transUnit );
-		PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
+		PASS( "Fix Unique Ids", Validate::fixUniqueIds, transUnit );
 		PASS( "Hoist Control Declarations", ControlStruct::hoistControlDecls, transUnit );
 
@@ -369,5 +370,5 @@
 		PASS( "Translate Throws", ControlStruct::translateThrows, transUnit );
 		PASS( "Fix Labels", ControlStruct::fixLabels, transUnit );
-        PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
+		PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
 		PASS( "Fix Names", CodeGen::fixNames, transUnit );
 		PASS( "Gen Init", InitTweak::genInit, transUnit );
Index: tests/array-container/.expect/dimexpr-match-c-ERRS.arm64.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-c-ERRS.arm64.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-c-ERRS.arm64.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -165,5 +165,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -175,5 +175,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -185,5 +185,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -195,5 +195,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -205,5 +205,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -215,5 +215,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -225,5 +225,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -235,5 +235,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -245,5 +245,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -255,30 +255,30 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -290,5 +290,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -300,5 +300,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -310,5 +310,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -320,5 +320,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -330,5 +330,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -340,5 +340,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -350,5 +350,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -360,5 +360,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -370,5 +370,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -380,5 +380,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -390,392 +390,392 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
Index: tests/array-container/.expect/dimexpr-match-c-ERRS.x64.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-c-ERRS.x64.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-c-ERRS.x64.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -165,5 +165,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -175,5 +175,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -185,5 +185,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -195,5 +195,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -205,5 +205,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -215,5 +215,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -225,5 +225,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -235,5 +235,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -245,5 +245,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -255,30 +255,30 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -290,5 +290,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -300,5 +300,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -310,5 +310,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -320,5 +320,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -330,5 +330,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -340,5 +340,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -350,5 +350,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -360,5 +360,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -370,5 +370,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -380,5 +380,5 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -390,392 +390,392 @@
   ... with resolved type:
     unsigned long int
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
Index: tests/array-container/.expect/dimexpr-match-c-ERRS.x86.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-c-ERRS.x86.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-c-ERRS.x86.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -165,5 +165,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -175,5 +175,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -185,5 +185,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -195,5 +195,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -205,5 +205,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -215,5 +215,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -225,5 +225,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -235,5 +235,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -245,5 +245,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -255,5 +255,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -265,5 +265,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -275,5 +275,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -285,5 +285,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -295,5 +295,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
@@ -305,5 +305,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -315,5 +315,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -325,5 +325,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -335,5 +335,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -345,5 +345,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -355,5 +355,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -365,5 +365,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -375,5 +375,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -385,5 +385,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -395,5 +395,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -405,5 +405,5 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
@@ -415,392 +415,392 @@
   ... with resolved type:
     unsigned int
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
Index: tests/array-container/.expect/dimexpr-match-cfa-ERRS.arm64.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-cfa-ERRS.arm64.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-cfa-ERRS.arm64.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -171,5 +171,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -187,5 +187,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -203,5 +203,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -219,5 +219,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -235,5 +235,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -251,5 +251,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -267,5 +267,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -283,5 +283,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -299,5 +299,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -315,5 +315,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -324,5 +324,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -333,5 +333,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -342,5 +342,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -351,5 +351,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -360,5 +360,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -376,5 +376,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -392,5 +392,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -408,5 +408,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -424,5 +424,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -440,5 +440,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -456,5 +456,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -472,5 +472,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -488,5 +488,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -504,5 +504,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -520,5 +520,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -536,317 +536,317 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -863,5 +863,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -878,5 +878,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -893,5 +893,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -908,5 +908,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -923,5 +923,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -938,5 +938,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -953,5 +953,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -968,5 +968,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -983,5 +983,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -998,5 +998,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1006,5 +1006,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1014,5 +1014,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1022,5 +1022,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1030,5 +1030,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1038,5 +1038,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1053,5 +1053,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1068,5 +1068,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1083,5 +1083,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1098,5 +1098,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1113,5 +1113,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1128,5 +1128,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1143,5 +1143,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1158,5 +1158,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1173,5 +1173,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1188,5 +1188,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1203,366 +1203,366 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
Index: tests/array-container/.expect/dimexpr-match-cfa-ERRS.x64.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-cfa-ERRS.x64.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-cfa-ERRS.x64.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -171,5 +171,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -187,5 +187,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -203,5 +203,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -219,5 +219,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -235,5 +235,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -251,5 +251,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -267,5 +267,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -283,5 +283,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -299,5 +299,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -315,5 +315,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -324,5 +324,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -333,5 +333,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -342,5 +342,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -351,5 +351,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -360,5 +360,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -376,5 +376,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -392,5 +392,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -408,5 +408,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -424,5 +424,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -440,5 +440,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -456,5 +456,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -472,5 +472,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -488,5 +488,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -504,5 +504,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -520,5 +520,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -536,317 +536,317 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -863,5 +863,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -878,5 +878,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -893,5 +893,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -908,5 +908,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -923,5 +923,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -938,5 +938,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -953,5 +953,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -968,5 +968,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -983,5 +983,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -998,5 +998,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1006,5 +1006,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1014,5 +1014,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1022,5 +1022,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1030,5 +1030,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1038,5 +1038,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1053,5 +1053,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1068,5 +1068,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1083,5 +1083,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1098,5 +1098,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1113,5 +1113,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1128,5 +1128,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1143,5 +1143,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1158,5 +1158,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1173,5 +1173,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1188,5 +1188,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1203,366 +1203,366 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
Index: tests/array-container/.expect/dimexpr-match-cfa-ERRS.x86.txt
===================================================================
--- tests/array-container/.expect/dimexpr-match-cfa-ERRS.x86.txt	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/.expect/dimexpr-match-cfa-ERRS.x86.txt	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -1,159 +1,159 @@
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -171,5 +171,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -187,5 +187,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -203,5 +203,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -219,5 +219,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -235,5 +235,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -251,5 +251,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -267,5 +267,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -283,5 +283,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -299,5 +299,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -315,5 +315,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -324,5 +324,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -333,5 +333,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -342,5 +342,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -351,5 +351,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -360,5 +360,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -376,5 +376,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -392,5 +392,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -408,5 +408,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -424,5 +424,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -440,5 +440,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -456,5 +456,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -472,5 +472,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -488,5 +488,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -504,5 +504,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -520,5 +520,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Address of:
     Name: a  InitAlternative: pointer to instance of struct arpk with body
@@ -536,317 +536,317 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: f
-...to:
-  Name: a
-
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: f
+...to:
+  Name: a
+
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -863,5 +863,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -878,5 +878,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -893,5 +893,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -908,5 +908,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -923,5 +923,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -938,5 +938,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -953,5 +953,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -968,5 +968,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -983,5 +983,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -998,5 +998,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1006,5 +1006,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1014,5 +1014,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1022,5 +1022,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1030,5 +1030,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1038,5 +1038,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1053,5 +1053,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1068,5 +1068,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1083,5 +1083,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1098,5 +1098,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1113,5 +1113,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1128,5 +1128,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1143,5 +1143,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1158,5 +1158,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1173,5 +1173,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1188,5 +1188,5 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
+array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
   Name: a  InitAlternative: reference to instance of struct arpk with body
   ... with parameters
@@ -1203,366 +1203,366 @@
     float
 
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: ?=?
-...to:
-  Address of:
-    Name: b
-  Address of:
-    Name: a
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
-array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
-  Name: zip
-...to:
-  Name: a
-  Name: b
-
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: ?=?
+...to:
+  Address of:
+    Name: b
+  Address of:
+    Name: a
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
+array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: zip
+...to:
+  Name: a
+  Name: b
+
Index: tests/array-container/dimexpr-match-c.cfa
===================================================================
--- tests/array-container/dimexpr-match-c.cfa	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/dimexpr-match-c.cfa	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -16,4 +16,9 @@
 #include "dimexpr-match.hfa"     // test framework
 
+#ifdef TRY_WISH_1 // "unification as-if"
+forall( [N] )
+void zip( float (*a)[N], float (*b)[N] ) {}
+#endif
+
 DECLN_runTests {
 
@@ -21,5 +26,4 @@
     int mut7 = 7, mut42 = 42;
 
-    
     #define TRY_COMPAT( LV, RV )        \
     {                                   \
@@ -79,7 +83,4 @@
 
   #ifdef TRY_WISH_1 // "unification as-if"
-    forall( [N] )
-    void zip( float (*a)[N], float (*b)[N] ) {}
-
     #define TRY_COMPAT( LV, RV )        \
     {                                   \
@@ -93,6 +94,3 @@
 
   #endif
-
-
-
 }
Index: tests/array-container/dimexpr-match-cfa.cfa
===================================================================
--- tests/array-container/dimexpr-match-cfa.cfa	(revision 2e94f3e75e25dd60ad53b8509b83a5cad21e5631)
+++ tests/array-container/dimexpr-match-cfa.cfa	(revision c68f6e673bd386315fa7950c1f6142c500964852)
@@ -44,4 +44,6 @@
 #endif
 
+forall( [N] )
+void zip( array(float, N) & a, array(float, N) & b ) {}
 
 DECLN_runTests {
@@ -50,5 +52,4 @@
     int mut7 = 7, mut42 = 42;
 
-    
     #define TRY_COMPAT( LV, RV )            \
     {                                       \
@@ -103,8 +104,4 @@
     #undef TRY_COMPAT
 
-
-    forall( [N] )
-    void zip( array(float, N) & a, array(float, N) & b ) {}
-
     #define TRY_COMPAT( LV, RV )            \
     {                                       \
