Changes in / [c68f6e6:2e94f3e7]


Ignore:
Files:
1 deleted
23 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/colby_parsons_MMAth/Makefile

    rc68f6e6 r2e94f3e7  
    8585        diagrams/cyclic_swap \
    8686        diagrams/steal \
    87         diagrams/uCpp_select_tree \
    8887}
    8988
  • doc/theses/colby_parsons_MMAth/glossary.tex

    rc68f6e6 r2e94f3e7  
    4141\newabbreviation{dwcas}{DWCAS}{\Newterm{double-wide (width) compare-and-set (swap)}}
    4242\newabbreviation{dcas}{DCAS}{\Newterm{double compare-and-set (swap)}}
    43 \newabbreviation{qpcas}{QPCAS}{\Newterm{queue pointer compare-and-set (swap)}}
     43\newabbreviation{dcasw}{DCASW}{\Newterm{weak double compare-and-set (swap)}}
    4444\newabbreviation{ll}{LL}{\Newterm{load linked}}
    4545\newabbreviation{sc}{SC}{\Newterm{store conditional}}
  • doc/theses/colby_parsons_MMAth/text/actors.tex

    rc68f6e6 r2e94f3e7  
    578578
    579579In 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.
    580 Stealing a queue is done atomically with a few atomic instructions that only create contention with other stealing workers not the victim.
     580Stealing 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.
    581581The complexity in the implementation is that victim gulping does not take the mailbox queue;
    582582rather it atomically transfers the mailbox nodes to another queue leaving the mailbox empty, as discussed in Section~\ref{s:executor}.
     
    700700\subsection{Queue Pointer Swap}\label{s:swap}
    701701
    702 To atomically swap the two @worker_queues@ pointers during work stealing, a novel atomic swap-algorithm is needed.
     702To atomically swap the two @worker_queues@ pointers during work stealing, a novel wait-free swap-algorithm is needed.
    703703The \gls{cas} is a read-modify-write instruction available on most modern architectures.
    704704It atomically compares two memory locations, and if the values are equal, it writes a new value into the first memory location.
     
    737737}
    738738\end{cfa}
    739 \gls{dcas} can be used to swap two values; for this use case the comparisons are superfluous.
     739and can swap two values, where the comparisons are superfluous.
    740740\begin{cfa}
    741741DCAS( x, y, x, y, y, x );
    742742\end{cfa}
    743743A 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.
    744 % (There is waning interest in transactional memory and it seems to be fading away.)
     744(There is waning interest in transactional memory and it seems to be fading away.)
    745745
    746746Similarly, very few architectures have a true memory/memory swap instruction (Motorola M68K, SPARC 32-bit).
     
    749749
    750750Either 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.
    751 Hence, a novel atomic swap specific to the actor use case is simulated, called \gls{qpcas}.
    752 The \gls{qpcas} is effectively a \gls{dcas} special cased in a few ways:
     751Hence, a novel atomic swap for this use case is simulated, called \gls{dcasw}.
     752The \gls{dcasw} is effectively a \gls{dcas} special cased in two ways:
    753753\begin{enumerate}
    754754\item
    755755It works on two separate memory locations, and hence, is logically the same as.
    756756\begin{cfa}
    757 bool QPCAS( T * dst, T * src ) {
     757bool DCASW( T * dst, T * src ) {
    758758        return DCAS( dest, src, *dest, *src, *src, *dest );
    759759}
     
    762762The values swapped are never null pointers, so a null pointer can be used as an intermediate value during the swap.
    763763\end{enumerate}
    764 Figure~\ref{f:qpcasImpl} shows the \CFA pseudocode for the \gls{qpcas}.
     764Figure~\ref{f:dcaswImpl} shows the \CFA pseudocode for the \gls{dcasw}.
    765765In detail, a thief performs the following steps to swap two pointers:
    766766\begin{enumerate}[start=0]
     
    770770verifies the stored copy of the victim queue pointer, @vic_queue@, is valid.
    771771If @vic_queue@ is null, then the victim queue is part of another swap so the operation fails.
    772 No state has changed at this point so the thief just returns.
    773 Note, thieves only set their own queues pointers to null when stealing, and queue pointers are not set to null anywhere else.
    774 As such, it is impossible for @my_queue@ to be null since each worker owns a disjoint range of the queue array.
    775 Hence, only @vic_queue@ is checked for null.
     772No state has changed at this point so no fixup is needed.
     773Note, @my_queue@ can never be equal to null at this point since thieves only set their own queues pointers to null when stealing.
     774At no other point is a queue pointer set to null.
     775Since each worker owns a disjoint range of the queue array, it is impossible for @my_queue@ to be null.
     776Note, this algorithm is simplified due to each worker owning a disjoint range, allowing only the @vic_queue@ to be checked for null.
     777This 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.
     778Further discussion of this generalization is omitted since it is not needed for the presented application.
    776779\item
    777780attempts to atomically set the thief's queue pointer to null.
     
    779782At this point, the thief-turned-victim fails, and since it has not changed any state, it just returns false.
    780783If the @CAS@ succeeds, the thief's queue pointer is now null.
    781 Only thieves look at other worker's queue ranges, and whenever thieves need to dereference a queue pointer, it is checked for null.
    782 A thief can only see the null queue pointer when looking for queues to steal or attempting a queue swap.
    783 If looking for queues, the thief will skip the null pointer, thus only the queue swap case needs to be considered for correctness.
    784 
     784Nulling 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.
    785785\item
    786786attempts to atomically set the victim's queue pointer to @my_queue@.
     
    788788If the @CAS@ fails, the thief's queue pointer must be restored to its previous value before returning.
    789789\item
    790 sets the thief's queue pointer to @vic_queue@ completing the swap.
     790set the thief's queue pointer to @vic_queue@ completing the swap.
    791791\end{enumerate}
    792792
     
    820820}
    821821\end{cfa}
    822 \caption{QPCAS Concurrent}
    823 \label{f:qpcasImpl}
     822\caption{DCASW Concurrent}
     823\label{f:dcaswImpl}
    824824\end{figure}
    825825
    826826\begin{theorem}
    827 \gls{qpcas} is correct in both the success and failure cases.
     827\gls{dcasw} is correct in both the success and failure cases.
    828828\end{theorem}
    829 To verify sequential correctness, Figure~\ref{f:seqSwap} shows a simplified \gls{qpcas}.
     829To verify sequential correctness, Figure~\ref{f:seqSwap} shows a simplified \gls{dcasw}.
    830830Step 1 is missing in the sequential example since it only matters in the concurrent context.
    831831By 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.
     
    845845}
    846846\end{cfa}
    847 \caption{QPCAS Sequential}
     847\caption{DCASW Sequential}
    848848\label{f:seqSwap}
    849849\end{figure}
    850850
    851 % All thieves fail or succeed in swapping the queues in a finite number of steps.
    852 % This is straightforward, because there are no locks or looping.
    853 % 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.
    854 % In both cases, it is apropos for a thief to give up stealing.
    855 
    856 The concurrent proof of correctness is shown through the existence of an invariant.
     851To 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.
     852This property is straightforward, because there are no locks or looping.
     853As 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.
     854In both cases, it is apropos for a thief to give up stealing.
     855
     856The proof of correctness is shown through the existence of an invariant.
    857857The 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.
    858858To show that this invariant holds, it is shown that it is true at each step of the swap.
     
    877877Once a thief atomically sets their queue pointer to be @0p@ in step 2, the invariant guarantees that that pointer does not change.
    878878In 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@.
    879 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.
     879Given 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.
    880880By the invariant, the write back in the successful case is correct since no other worker can write to the @0p@ pointer.
    881881In 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.
    882882Therefore, 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.
    883 Note that the pointers having unique memory locations prevents the ABA problem.
     883Note 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.
    884884
    885885\begin{comment}
     
    905905First it is important to state that a thief does not attempt to steal from themselves.
    906906As such, the victim here is not also a thief.
    907 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@.
     907Stepping 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@.
    908908Similarly, for all thieves, step 2 succeed since no one is stealing from any of the thieves.
    909909In step 3, the first thief to @CAS@ wins the race and successfully swaps the queue pointer.
  • doc/theses/colby_parsons_MMAth/text/conclusion.tex

    rc68f6e6 r2e94f3e7  
    1010The @waituntil@ statement aids in writing concurrent programs in both the message passing and shared memory paradigms of concurrency.
    1111Furthermore, no other language provides a synchronous multiplexing tool polymorphic over resources like \CFA's @waituntil@.
     12From 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.
     13Performance results verify that each new feature is comparable or better than similar features in other programming languages.
    1214
    13 On overview of the contributions in this thesis include the following:
    14 \begin{enumerate}
    15 \item The mutex statement, which provides performant and deadlock-free multiple lock acquisition.
    16 \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.
    17 \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.
    18 \item A @waituntil@ statement which tackles the hard problem of allowing a thread to safely synchronously wait for some set of concurrent resources.
    19 \end{enumerate}
    20 
    21 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.
    22 Performance results verify that each new feature is comparable or better than similar features in other programming languages.
    23 All in all, this suite of concurrent tools expands users' ability to easily write safe and performant multi-threaded programs in \CFA.
     15\PAB{This part seems a little short.}
    2416
    2517\section{Future Work}
  • doc/theses/colby_parsons_MMAth/text/waituntil.tex

    rc68f6e6 r2e94f3e7  
    382382More detail on channels and their interaction with @waituntil@ appear in Section~\ref{s:wu_chans}.
    383383
    384 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.
    385 When used indirectly, the object's routine returns a type that supports the @is_selectable@ trait.
     384The trait is used by having a blocking object return a type that supports the @is_selectable@ trait.
    386385This feature leverages \CFA's ability to overload on return type to select the correct overloaded routine for the @waituntil@ context.
    387 Indirect support through routines is needed for types that want to support multiple operations such as channels that allow both reading and writing.
     386A selectable type is needed for types that want to support multiple operations such as channels that allow both reading and writing.
    388387
    389388\section{\lstinline{waituntil} Implementation}
     
    521520This work incurs a high cost for signalling threads and heavily increase contention on internal channel locks.
    522521Furthermore, the @waituntil@ statement is polymorphic and can support resources that do not have internal locks, which also makes this approach infeasible.
    523 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.
     522As 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.
    524523
    525524It 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.
     
    592591If 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.
    593592This protocol ensures that signals cannot be lost and that the two races can be resolved in a safe manner.
    594 The implementation of this protocol is shown in Figure~\ref{f:WU_DeadlockAvoidance}.
    595 
    596 \begin{figure}
    597 \begin{cfa}
    598 bool pending_set_other( select_node & other, select_node & mine ) {
    599     unsigned long int cmp_status = UNSAT;
    600 
    601     // Try to set other status, if we succeed break and return true
    602     while( !CAS( other.clause_status, &cmp_status, SAT ) ) {
    603         if ( cmp_status == SAT )
    604             return false; // If other status is SAT we lost so return false
    605 
    606         // Toggle own status flag to allow other thread to potentially win
    607         mine.status = UNSAT;
    608 
    609         // Reset compare flag
    610         cmp_status = UNSAT;
    611 
    612         // Attempt to set own status flag back to PENDING to retry
    613         if ( !CAS( mine.clause_status, &cmp_status, PENDING ) )
    614             return false; // If we fail then we lost so return false
    615        
    616         // Reset compare flag
    617         cmp_status = UNSAT;
    618     }
    619     return true;
    620 }
    621 \end{cfa}
    622 \caption{Exclusive-or \lstinline{waituntil} channel deadlock avoidance protocol}
    623 \label{f:WU_DeadlockAvoidance}
    624 \end{figure}
     593\PAB{I bet one of the readers is going to ask you to write the pseudo code for this algorithm.}
    625594
    626595Channels in \CFA have exception-based shutdown mechanisms that the @waituntil@ statement needs to support.
     
    631600
    632601It 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.
    633 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.
    634 Consider the @waituntil@ in Figure~\ref{f:WU_ComplexPredicate}.
    635 When the @waituntil@ thread wakes up, checking if the statement is complete is non-trivial.
    636 The predicate that will return if the statement in Figure~\ref{f:WU_ComplexPredicate} is satisfied is the following.
    637 \begin{cfa}
    638 A && B || C || !GA && B || !GB && A || !GA && !GB && !GC
    639 \end{cfa}
    640 Which simplifies to:
    641 \begin{cfa}
    642 ( A || !GA ) && ( B || !GB ) || C || !GA && !GB && !GC
    643 \end{cfa}
    644 Checking a predicate this large with each iteration is expensive so \uC and \CFA both take steps to simplify checking statement completion.
    645 
    646 \begin{figure}
    647 \begin{cfa}
    648 when( GA ) waituntil( A ) {}
    649 and when( GB ) waituntil( B ) {}
    650 or when( GC ) waituntil( C ) {}
    651 \end{cfa}
    652 \caption{\lstinline{waituntil} with a non-trivial predicate}
    653 \label{f:WU_ComplexPredicate}
    654 \end{figure}
     602In \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.
     603\PAB{Show an example of why this is difficult.}
    655604
    656605In 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.
     
    659608Once the root of the tree has both subtrees marked as @true@ then the statement is complete.
    660609As an optimization, when the internal nodes are updated, the subtrees marked as @true@ are pruned and not examined again.
    661 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.
    662 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@.
    663 
    664 \begin{figure}
    665 \begin{center}
    666 \input{diagrams/uCpp_select_tree.tikz}
    667 \end{center}
    668 \caption{\uC select tree modification}
    669 \label{f:uC_select_tree}
    670 \end{figure}
     610To support statement guards in \uC, the tree prunes a branch if the corresponding guard is false.
     611\PAB{Show an example.}
    671612
    672613The \CFA @waituntil@ statement blocks a thread until a set of resources have become available that satisfy the underlying predicate.
     
    675616Leveraging 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.
    676617To 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.
    677 The generated code allows the predicate that is checked with each iteration to be simplified to not check guard values.
    678 For example, the following would be generated for the @waituntil@ shown in Figure~\ref{f:WU_ComplexPredicate}.
    679 \begin{cfa}
    680 // statement completion predicate
    681 bool check_completion( select_node * nodes ) {
    682     return nodes[0].status && nodes[1].status || nodes[2].status;
    683 }
    684 
    685 // skip statement if all guards false
    686 if ( GA || GB || GC ) {
    687     select_node nodes[3];
    688     nodes[0].status = !GA && GB; // A's status
    689     nodes[1].status = !GB && GA; // B's status
    690     nodes[2].status = !GC;       // C's status
    691 
    692     // ... rest of waituntil codegen ...
    693 
    694 }
    695 \end{cfa}
     618\PAB{Show an example.}
    696619
    697620\uC's @_Select@, supports operators both inside and outside of the \lstinline[language=uC++]{_Select} clauses.
    698621In the following example, the code blocks run once their corresponding predicate inside the round braces is satisfied.
    699 
     622% C_TODO put this is uC++ code style not cfa-style
    700623\begin{lstlisting}[language=uC++,{moredelim=**[is][\color{red}]{@}{@}}]
    701624Future_ISM<int> A, B, C, D;
     
    717640however, that opens the potential for livelock.
    718641Another 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.
     642Additionally, using resource ordering could conflict with other semantics of the @waituntil@ statement.
     643For example, consider if the locks in the example must be acquired in the order @D@, @B@, @C@, @A@ because of other @waituntil@ statements.
     644\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.}
    719645One 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.
    720646This approach does not work due to \gls{toctou} issues;
     
    735661\begin{cfa}
    736662bool when_conditions[N];
    737 for ( node in nodes )                                                                   $\C[3.75in]{// evaluate guards}$
     663for ( node in s )                                                                       $\C[3.75in]{// evaluate guards}$
    738664        if ( node has guard )
    739665                when_conditions[node] = node_guard;
     
    741667                when_conditions[node] = true;
    742668
    743 if ( any when_conditions[node] == true ) {
    744 
    745 select_nodes nodes[N];                                                                  $\C{// declare N select nodes}$
     669select_nodes s[N];                                                                      $\C{// declare N select nodes}$
    746670try {
    747     // ... set statuses for nodes with when_conditions[node] == false ...
    748 
    749     for ( node in nodes )                                                               $\C{// register nodes}$
    750         if ( when_conditions[node] )
    751             register_select( resource, node );
    752 
    753     while ( !check_completion( nodes ) ) {      $\C{// check predicate}$
    754         // block
    755         for ( resource in waituntil statement ) {       $\C{// run true code blocks}$
    756             if ( check_completion( nodes ) ) break;
    757             if ( resource is avail )
    758                 try {
    759                     if( on_selected( resource ) )       $\C{// conditionally run block}$
    760                         run code block
    761                 } finally                                                       $\C{// for exception safety}$
    762                     unregister_select( resource, node ); $\C{// immediate unregister}$
    763         }
    764     }
     671        for ( node in s )                                                               $\C{// register nodes}$
     672                if ( when_conditions[node] )
     673                        register_select( resource, node );
     674
     675        // ... set statuses for nodes with when_conditions[node] == false ...
     676
     677        while ( statement predicate not satisfied ) {   $\C{// check predicate}$
     678                // block
     679                for ( resource in waituntil statement ) {       $\C{// run true code blocks}$
     680                        if ( statement predicate is satisfied ) break;
     681                        if ( resource is avail )
     682                                try {
     683                                        if( on_selected( resource ) )   $\C{// conditionally run block}$
     684                                                run code block
     685                                } finally                                                       $\C{// for exception safety}$
     686                                        unregister_select( resource, node ); $\C{// immediate unregister}$
     687                }
     688        }
    765689} finally {                                                                                     $\C{// for exception safety}$
    766         for ( registered nodes in nodes )                                       $\C{// deregister nodes}$
     690        for ( registered nodes in s )                                   $\C{// deregister nodes}$
    767691                if ( when_conditions[node] && unregister_select( resource, node )
    768692                                && on_selected( resource ) )
    769693                        run code block                                                  $\C{// run code block upon unregister}\CRT$
    770 }
    771 
    772694}
    773695\end{cfa}
  • src/AST/Create.cpp

    rc68f6e6 r2e94f3e7  
    4242                return nullptr;
    4343        }
    44         // The cast and changing the original should be safe as long as the
    45         // change is reverted before anything else sees it. It's also faster.
    46         FunctionDecl * mutDecl = const_cast<FunctionDecl *>( decl );
    47         CompoundStmt const * stmts = mutDecl->stmts.release();
    48         FunctionDecl * copy = deepCopy( mutDecl );
    49         mutDecl->stmts = stmts;
    50         return copy;
     44        return new ast::FunctionDecl( decl->location,
     45                decl->name,
     46                vectorCopy( decl->type_params ),
     47                vectorCopy( decl->assertions ),
     48                vectorCopy( decl->params ),
     49                vectorCopy( decl->returns ),
     50                nullptr,
     51                decl->storage,
     52                decl->linkage,
     53                vectorCopy( decl->attributes ),
     54                decl->funcSpec,
     55                decl->type->isVarArgs
     56        );
    5157}
    5258
  • src/AST/Util.cpp

    rc68f6e6 r2e94f3e7  
    2020#include "Pass.hpp"
    2121#include "TranslationUnit.hpp"
    22 #include "Common/utility.h"
    23 #include "GenPoly/ScopedSet.h"
    2422
    2523#include <vector>
    26 
    27 using GenPoly::ScopedSet;
    2824
    2925namespace ast {
     
    177173};
    178174
    179 /// Checks that referred to nodes are in scope.
    180 /// This checks many readonly pointers to see if the declaration they are
    181 /// referring to is in scope by the structural rules of code.
    182 // Any escapes marked with a bug should be removed once the bug is fixed.
    183 struct InScopeCore : public ast::WithShortCircuiting {
    184         ScopedSet<DeclWithType const *> typedDecls;
    185         ScopedSet<TypeDecl const *> typeDecls;
    186         // These 3 are really hard to check, because uses that originally ref. at
    187         // a forward declaration can be rewired to point a later full definition.
    188         ScopedSet<StructDecl const *> structDecls;
    189         ScopedSet<UnionDecl const *> unionDecls;
    190         ScopedSet<EnumDecl const *> enumDecls;
    191         ScopedSet<TraitDecl const *> traitDecls;
    192 
    193         bool isInGlobal = false;
    194 
    195         void beginScope() {
    196                 typedDecls.beginScope();
    197                 typeDecls.beginScope();
    198                 structDecls.beginScope();
    199                 unionDecls.beginScope();
    200                 enumDecls.beginScope();
    201                 traitDecls.beginScope();
    202         }
    203 
    204         void endScope() {
    205                 typedDecls.endScope();
    206                 typeDecls.endScope();
    207                 structDecls.endScope();
    208                 unionDecls.endScope();
    209                 enumDecls.endScope();
    210                 traitDecls.endScope();
    211         }
    212 
    213         void previsit( ApplicationExpr const * expr ) {
    214                 // All isInGlobal manipulation is just to isolate this check.
    215                 // The invalid compound literals lead to bad ctor/dtors. [#280]
    216                 VariableExpr const * func = nullptr;
    217                 CastExpr const * cast = nullptr;
    218                 VariableExpr const * arg = nullptr;
    219                 if ( isInGlobal
    220                                 && 1 == expr->args.size()
    221                                 && ( func = expr->func.as<VariableExpr>() )
    222                                 && ( "?{}" == func->var->name || "^?{}" == func->var->name )
    223                                 && ( cast = expr->args[0].as<CastExpr>() )
    224                                 && ( arg = cast->arg.as<VariableExpr>() )
    225                                 && isPrefix( arg->var->name, "_compLit" ) ) {
    226                         visit_children = false;
    227                 }
    228         }
    229 
    230         void previsit( VariableExpr const * expr ) {
    231                 if ( !expr->var ) return;
    232                 // bitwise assignment escape [#281]
    233                 if ( expr->var->location.isUnset() ) return;
    234                 assert( typedDecls.contains( expr->var ) );
    235         }
    236 
    237         void previsit( FunctionType const * type ) {
    238                 // This is to avoid checking the assertions, which can point at the
    239                 // function's declaration and not the enclosing function.
    240                 for ( auto type_param : type->forall ) {
    241                         if ( type_param->formal_usage ) {
    242                                 visit_children = false;
    243                                 // We could check non-assertion fields here.
    244                         }
    245                 }
    246         }
    247 
    248         void previsit( TypeInstType const * type ) {
    249                 if ( !type->base ) return;
    250                 assertf( type->base->isManaged(), "Floating Node" );
    251 
    252                 // bitwise assignment escape [#281]
    253                 if ( type->base->location.isUnset() ) return;
    254                 // Formal types can actually look at out of scope variables.
    255                 if ( type->formal_usage ) return;
    256                 assert( typeDecls.contains( type->base ) );
    257         }
    258 
    259         void previsit( TraitInstType const * type ) {
    260                 if ( !type->base ) return;
    261                 assert( traitDecls.contains( type->base ) );
    262         }
    263 
    264         void previsit( ObjectDecl const * decl ) {
    265                 typedDecls.insert( decl );
    266                 // There are some ill-formed compound literals. [#280]
    267                 // The only known problem cases are at the top level.
    268                 if ( isPrefix( decl->name, "_compLit" ) ) {
    269                         visit_children = false;
    270                 }
    271         }
    272 
    273         void previsit( FunctionDecl const * decl ) {
    274                 typedDecls.insert( decl );
    275                 beginScope();
    276                 for ( auto & type_param : decl->type_params ) {
    277                         typeDecls.insert( type_param );
    278                 }
    279                 for ( auto & assertion : decl->assertions ) {
    280                         typedDecls.insert( assertion );
    281                 }
    282                 for ( auto & param : decl->params ) {
    283                         typedDecls.insert( param );
    284                 }
    285                 for ( auto & ret : decl->returns ) {
    286                         typedDecls.insert( ret );
    287                 }
    288                 // No special handling of withExprs.
    289 
    290                 // Part of the compound literal escape. [#280]
    291                 if ( "__global_init__" == decl->name
    292                                 || "__global_destroy__" == decl->name ) {
    293                         assert( !isInGlobal );
    294                         isInGlobal = true;
    295                 }
    296         }
    297 
    298         void postvisit( FunctionDecl const * decl ) {
    299                 endScope();
    300                 // Part of the compound literal escape. [#280]
    301                 if ( isInGlobal && ( "__global_init__" == decl->name
    302                                 || "__global_destroy__" == decl->name ) ) {
    303                         isInGlobal = false;
    304                 }
    305         }
    306 
    307         void previsit( StructDecl const * decl ) {
    308                 structDecls.insert( decl );
    309                 beginScope();
    310                 for ( auto & type_param : decl->params ) {
    311                         typeDecls.insert( type_param );
    312                 }
    313         }
    314 
    315         void postvisit( StructDecl const * ) {
    316                 endScope();
    317         }
    318 
    319         void previsit( UnionDecl const * decl ) {
    320                 unionDecls.insert( decl );
    321                 beginScope();
    322                 for ( auto & type_param : decl->params ) {
    323                         typeDecls.insert( type_param );
    324                 }
    325         }
    326 
    327         void postvisit( UnionDecl const * ) {
    328                 endScope();
    329         }
    330 
    331         void previsit( EnumDecl const * decl ) {
    332                 enumDecls.insert( decl );
    333                 if ( ast::EnumDecl::EnumHiding::Visible == decl->hide ) {
    334                         for ( auto & member : decl->members ) {
    335                                 typedDecls.insert( member.strict_as<ast::DeclWithType>() );
    336                         }
    337                 }
    338                 beginScope();
    339                 for ( auto & type_param : decl->params ) {
    340                         typeDecls.insert( type_param );
    341                 }
    342         }
    343 
    344         void postvisit( EnumDecl const * ) {
    345                 endScope();
    346         }
    347 
    348         void previsit( TraitDecl const * decl ) {
    349                 traitDecls.insert( decl );
    350                 beginScope();
    351                 for ( auto & type_param : decl->params ) {
    352                         typeDecls.insert( type_param );
    353                 }
    354         }
    355 
    356         void postvisit( TraitDecl const * ) {
    357                 endScope();
    358         }
    359 
    360         void previsit( Designation const * ) {
    361                 visit_children = false;
    362         }
    363 };
    364 
    365175} // namespace
    366176
    367177void checkInvariants( TranslationUnit & transUnit ) {
    368         Pass<InvariantCore>::run( transUnit );
    369         Pass<InScopeCore>::run( transUnit );
     178        ast::Pass<InvariantCore>::run( transUnit );
    370179}
    371180
  • src/InitTweak/FixInitNew.cpp

    rc68f6e6 r2e94f3e7  
    4242
    4343namespace InitTweak {
    44 
    4544namespace {
    4645
    47 // Shallow copy the pointer list for return.
    48 std::vector<ast::ptr<ast::TypeDecl>> getGenericParams( const ast::Type * t ) {
    49         if ( auto inst = dynamic_cast<const ast::StructInstType *>( t ) ) {
    50                 return inst->base->params;
    51         }
    52         if ( auto inst = dynamic_cast<const ast::UnionInstType *>( t ) ) {
    53                 return inst->base->params;
    54         }
    55         return {};
    56 }
    57 
    58 /// Given type T, generate type of default ctor/dtor, i.e. function type void (*) (T &).
    59 ast::FunctionDecl * genDefaultFunc(
    60                 const CodeLocation loc,
    61                 const std::string fname,
    62                 const ast::Type * paramType,
    63                 bool maybePolymorphic = true) {
    64         std::vector<ast::ptr<ast::TypeDecl>> typeParams;
    65         if ( maybePolymorphic ) typeParams = getGenericParams( paramType );
    66         auto dstParam = new ast::ObjectDecl( loc,
    67                 "_dst",
    68                 new ast::ReferenceType( paramType ),
    69                 nullptr,
    70                 {},
    71                 ast::Linkage::Cforall
    72         );
    73         return new ast::FunctionDecl( loc,
    74                 fname,
    75                 std::move(typeParams),
    76                 {dstParam},
    77                 {},
    78                 new ast::CompoundStmt(loc),
    79                 {},
    80                 ast::Linkage::Cforall
    81         );
    82 }
    83 
    84 struct SelfAssignChecker {
    85         void previsit( const ast::ApplicationExpr * appExpr );
    86 };
    87 
    88 struct StmtExprResult {
    89         const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
    90 };
    91 
    92 /// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
    93 /// function calls need their parameters to be copy constructed
    94 struct InsertImplicitCalls : public ast::WithShortCircuiting {
    95         const ast::Expr * postvisit( const ast::ApplicationExpr * appExpr );
    96 
    97         // only handles each UniqueExpr once
    98         // if order of visit does not change, this should be safe
    99         void previsit (const ast::UniqueExpr *);
    100 
    101         std::unordered_set<decltype(ast::UniqueExpr::id)> visitedIds;
    102 };
    103 
    104 /// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
    105 /// generate/resolve copy construction expressions for each, and generate/resolve destructors for both
    106 /// arguments and return value temporaries
    107 struct ResolveCopyCtors final : public ast::WithGuards, public ast::WithStmtsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithVisitorRef<ResolveCopyCtors>, public ast::WithConstTranslationUnit {
    108         const ast::Expr * postvisit( const ast::ImplicitCopyCtorExpr * impCpCtorExpr );
    109         const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
    110         const ast::UniqueExpr * previsit( const ast::UniqueExpr * unqExpr );
    111 
    112         /// handles distant mutations of environment manually.
    113         /// WithConstTypeSubstitution cannot remember where the environment is from
    114 
    115         /// MUST be called at start of overload previsit
    116         void previsit( const ast::Expr * expr);
    117         /// MUST be called at return of overload postvisit
    118         const ast::Expr * postvisit(const ast::Expr * expr);
    119 
    120         /// create and resolve ctor/dtor expression: fname(var, [cpArg])
    121         const ast::Expr * makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg = nullptr );
    122         /// true if type does not need to be copy constructed to ensure correctness
    123         bool skipCopyConstruct( const ast::Type * type );
    124         ast::ptr< ast::Expr > copyConstructArg( const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal );
    125         ast::Expr * destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg );
    126 private:
    127         /// hack to implement WithTypeSubstitution while conforming to mutation safety.
    128         ast::TypeSubstitution * env         = nullptr;
    129         bool                    envModified = false;
    130 };
    131 
    132 /// collects constructed object decls - used as a base class
    133 struct ObjDeclCollector : public ast::WithGuards, public ast::WithShortCircuiting {
    134         // use ordered data structure to maintain ordering for set_difference and for consistent error messages
    135         typedef std::list< const ast::ObjectDecl * > ObjectSet;
    136         void previsit( const ast::CompoundStmt *compoundStmt );
    137         void previsit( const ast::DeclStmt *stmt );
    138 
    139         // don't go into other functions
    140         void previsit( const ast::FunctionDecl * ) { visit_children = false; }
    141 
    142 protected:
    143         ObjectSet curVars;
    144 };
    145 
    146 // debug
    147 template<typename ObjectSet>
    148 struct PrintSet {
    149         PrintSet( const ObjectSet & objs ) : objs( objs ) {}
    150         const ObjectSet & objs;
    151 };
    152 template<typename ObjectSet>
    153 PrintSet<ObjectSet> printSet( const ObjectSet & objs ) { return PrintSet<ObjectSet>( objs ); }
    154 template<typename ObjectSet>
    155 std::ostream & operator<<( std::ostream & out, const PrintSet<ObjectSet> & set) {
    156         out << "{ ";
    157         for ( auto & obj : set.objs ) {
    158                 out << obj->name << ", " ;
    159         } // for
    160         out << " }";
    161         return out;
    162 }
    163 
    164 struct LabelFinder final : public ObjDeclCollector {
    165         typedef std::map< std::string, ObjectSet > LabelMap;
    166         // map of Label -> live variables at that label
    167         LabelMap vars;
    168 
    169         typedef ObjDeclCollector Parent;
    170         using Parent::previsit;
    171         void previsit( const ast::Stmt * stmt );
    172 
    173         void previsit( const ast::CompoundStmt *compoundStmt );
    174         void previsit( const ast::DeclStmt *stmt );
    175 };
    176 
    177 /// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
    178 /// (currently by FixInit)
    179 struct InsertDtors final : public ObjDeclCollector, public ast::WithStmtsToAdd<> {
    180         typedef std::list< ObjectDecl * > OrderedDecls;
    181         typedef std::list< OrderedDecls > OrderedDeclsStack;
    182 
    183         InsertDtors( ast::Pass<LabelFinder> & finder ) : finder( finder ), labelVars( finder.core.vars ) {}
    184 
    185         typedef ObjDeclCollector Parent;
    186         using Parent::previsit;
    187 
    188         void previsit( const ast::FunctionDecl * funcDecl );
    189 
    190         void previsit( const ast::BranchStmt * stmt );
    191 private:
    192         void handleGoto( const ast::BranchStmt * stmt );
    193 
    194         ast::Pass<LabelFinder> & finder;
    195         LabelFinder::LabelMap & labelVars;
    196         OrderedDeclsStack reverseDeclOrder;
    197 };
    198 
    199 /// expand each object declaration to use its constructor after it is declared.
    200 struct FixInit : public ast::WithStmtsToAdd<> {
    201         static void fixInitializers( ast::TranslationUnit &translationUnit );
    202 
    203         const ast::DeclWithType * postvisit( const ast::ObjectDecl *objDecl );
    204 
    205         std::list< ast::ptr< ast::Decl > > staticDtorDecls;
    206 };
    207 
    208 /// generate default/copy ctor and dtor calls for user-defined struct ctor/dtors
    209 /// for any member that is missing a corresponding ctor/dtor call.
    210 /// error if a member is used before constructed
    211 struct GenStructMemberCalls final : public ast::WithGuards, public ast::WithShortCircuiting, public ast::WithSymbolTable, public ast::WithVisitorRef<GenStructMemberCalls>, public ast::WithConstTranslationUnit {
    212         void previsit( const ast::FunctionDecl * funcDecl );
    213         const ast::DeclWithType * postvisit( const ast::FunctionDecl * funcDecl );
    214 
    215         void previsit( const ast::MemberExpr * memberExpr );
    216         void previsit( const ast::ApplicationExpr * appExpr );
    217 
    218         /// Note: this post mutate used to be in a separate visitor. If this pass breaks, one place to examine is whether it is
    219         /// okay for this part of the recursion to occur alongside the rest.
    220         const ast::Expr * postvisit( const ast::UntypedExpr * expr );
    221 
    222         SemanticErrorException errors;
    223 private:
    224         template< typename... Params >
    225         void emit( CodeLocation, const Params &... params );
    226 
    227         ast::FunctionDecl * function = nullptr;
    228         std::set< const ast::DeclWithType * > unhandled;
    229         std::map< const ast::DeclWithType *, CodeLocation > usedUninit;
    230         const ast::ObjectDecl * thisParam = nullptr;
    231         bool isCtor = false; // true if current function is a constructor
    232         const ast::StructDecl * structDecl = nullptr;
    233 };
    234 
    235 /// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
    236 struct FixCtorExprs final : public ast::WithDeclsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithConstTranslationUnit {
    237         const ast::Expr * postvisit( const ast::ConstructorExpr * ctorExpr );
    238 };
    239 
    240 /// add CompoundStmts around top-level expressions so that temporaries are destroyed in the correct places.
    241 struct SplitExpressions : public ast::WithShortCircuiting {
    242         ast::Stmt * postvisit( const ast::ExprStmt * stmt );
    243         void previsit( const ast::TupleAssignExpr * expr );
    244 };
    245 
    246 /// find and return the destructor used in `input`. If `input` is not a simple destructor call, generate a thunk
    247 /// that wraps the destructor, insert it into `stmtsToAdd` and return the new function declaration
    248 const ast::DeclWithType * getDtorFunc( const ast::ObjectDecl * objDecl, const ast::Stmt * input, std::list< ast::ptr<ast::Stmt> > & stmtsToAdd ) {
    249         const CodeLocation loc = input->location;
    250         // unwrap implicit statement wrapper
    251         // Statement * dtor = input;
    252         assert( input );
    253         // std::list< const ast::Expr * > matches;
    254         auto matches = collectCtorDtorCalls( input );
    255 
    256         if ( dynamic_cast< const ast::ExprStmt * >( input ) ) {
    257                 // only one destructor call in the expression
    258                 if ( matches.size() == 1 ) {
    259                         auto func = getFunction( matches.front() );
    260                         assertf( func, "getFunction failed to find function in %s", toString( matches.front() ).c_str() );
    261 
    262                         // cleanup argument must be a function, not an object (including function pointer)
    263                         if ( auto dtorFunc = dynamic_cast< const ast::FunctionDecl * > ( func ) ) {
    264                                 if ( dtorFunc->type->forall.empty() ) {
    265                                         // simple case where the destructor is a monomorphic function call - can simply
    266                                         // use that function as the cleanup function.
    267                                         return func;
    268                                 }
    269                         }
    270                 }
    271         }
    272 
    273         // otherwise the cleanup is more complicated - need to build a single argument cleanup function that
    274         // wraps the more complicated code.
    275         static UniqueName dtorNamer( "__cleanup_dtor" );
    276         std::string name = dtorNamer.newName();
    277         ast::FunctionDecl * dtorFunc = genDefaultFunc( loc, name, objDecl->type->stripReferences(), false );
    278         stmtsToAdd.push_back( new ast::DeclStmt(loc, dtorFunc ) );
    279 
    280         // the original code contains uses of objDecl - replace them with the newly generated 'this' parameter.
    281         const ast::ObjectDecl * thisParam = getParamThis( dtorFunc );
    282         const ast::Expr * replacement = new ast::VariableExpr( loc, thisParam );
    283 
    284         auto base = replacement->result->stripReferences();
    285         if ( dynamic_cast< const ast::ArrayType * >( base ) || dynamic_cast< const ast::TupleType * > ( base ) ) {
    286                 // need to cast away reference for array types, since the destructor is generated without the reference type,
    287                 // and for tuple types since tuple indexing does not work directly on a reference
    288                 replacement = new ast::CastExpr( replacement, base );
    289         }
    290         auto dtor = ast::DeclReplacer::replace( input, ast::DeclReplacer::ExprMap{ std::make_pair( objDecl, replacement ) } );
    291         auto mutStmts = dtorFunc->stmts.get_and_mutate();
    292         mutStmts->push_back(strict_dynamic_cast<const ast::Stmt *>( dtor ));
    293         dtorFunc->stmts = mutStmts;
    294 
    295         return dtorFunc;
    296 }
    297 
    298 void FixInit::fixInitializers( ast::TranslationUnit & translationUnit ) {
    299         ast::Pass<FixInit> fixer;
    300 
    301         // can't use mutateAll, because need to insert declarations at top-level
    302         // can't use DeclMutator, because sometimes need to insert IfStmt, etc.
    303         SemanticErrorException errors;
    304         for ( auto i = translationUnit.decls.begin(); i != translationUnit.decls.end(); ++i ) {
    305                 try {
    306                         // maybeAccept( *i, fixer ); translationUnit should never contain null
    307                         *i = (*i)->accept(fixer);
    308                         translationUnit.decls.splice( i, fixer.core.staticDtorDecls );
    309                 } catch( SemanticErrorException &e ) {
    310                         errors.append( e );
    311                 } // try
    312         } // for
    313         if ( ! errors.isEmpty() ) {
    314                 throw errors;
    315         } // if
    316 }
    317 
    318 const ast::StmtExpr * StmtExprResult::previsit( const ast::StmtExpr * stmtExpr ) {
    319         // we might loose the result expression here so add a pointer to trace back
    320         assert( stmtExpr->result );
    321         const ast::Type * result = stmtExpr->result;
    322         if ( ! result->isVoid() ) {
    323                 auto mutExpr = mutate(stmtExpr);
    324                 const ast::CompoundStmt * body = mutExpr->stmts;
    325                 assert( ! body->kids.empty() );
    326                 mutExpr->resultExpr = body->kids.back().strict_as<ast::ExprStmt>();
    327                 return mutExpr;
    328         }
    329         return stmtExpr;
    330 }
    331 
    332 ast::Stmt * SplitExpressions::postvisit( const ast::ExprStmt * stmt ) {
    333         // wrap each top-level ExprStmt in a block so that destructors for argument and return temporaries are destroyed
    334         // in the correct places
    335         ast::CompoundStmt * ret = new ast::CompoundStmt( stmt->location, { stmt } );
    336         return ret;
    337 }
    338 
    339 void SplitExpressions::previsit( const ast::TupleAssignExpr * ) {
    340         // don't do this within TupleAssignExpr, since it is already broken up into multiple expressions
    341         visit_children = false;
    342 }
    343 
    344 // Relatively simple structural comparison for expressions, needed to determine
    345 // if two expressions are "the same" (used to determine if self assignment occurs)
    346 struct StructuralChecker {
    347         // Strip all casts and then dynamic_cast.
    348         template<typename T>
    349         static const T * cast( const ast::Expr * expr ) {
    350                 // this might be too permissive. It's possible that only particular casts are relevant.
    351                 while ( auto cast = dynamic_cast< const ast::CastExpr * >( expr ) ) {
    352                         expr = cast->arg;
    353                 }
    354                 return dynamic_cast< const T * >( expr );
    355         }
    356 
    357         void previsit( const ast::Expr * ) {
    358                 // anything else does not qualify
    359                 result = false;
    360         }
    361 
    362         // ignore casts
    363         void previsit( const ast::CastExpr * ) {}
    364 
    365         void previsit( const ast::MemberExpr * memExpr ) {
    366                 if ( auto otherMember = cast< ast::MemberExpr >( other ) ) {
    367                         if ( otherMember->member == memExpr->member ) {
    368                                 other = otherMember->aggregate;
    369                                 return;
    370                         }
    371                 }
    372                 result = false;
    373         }
    374 
    375         void previsit( const ast::VariableExpr * varExpr ) {
    376                 if ( auto otherVar = cast< ast::VariableExpr >( other ) ) {
    377                         if ( otherVar->var == varExpr->var ) {
    378                                 return;
    379                         }
    380                 }
    381                 result = false;
    382         }
    383 
    384         void previsit( const ast::AddressExpr * ) {
    385                 if ( auto addrExpr = cast< ast::AddressExpr >( other ) ) {
    386                         other = addrExpr->arg;
    387                         return;
    388                 }
    389                 result = false;
    390         }
    391 
    392         const ast::Expr * other;
    393         bool result = true;
    394         StructuralChecker( const ast::Expr * other ) : other(other) {}
    395 };
    396 
    397 bool structurallySimilar( const ast::Expr * e1, const ast::Expr * e2 ) {
    398         return ast::Pass<StructuralChecker>::read( e1, e2 );
    399 }
    400 
    401 void SelfAssignChecker::previsit( const ast::ApplicationExpr * appExpr ) {
    402         auto function = getFunction( appExpr );
    403         // Doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment.
    404         if ( function->name == "?=?" && appExpr->args.size() == 2
    405                         // Check for structural similarity (same variable use, ignore casts, etc.
    406                         // (but does not look too deeply, anything looking like a function is off limits).
    407                         && structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
    408                 SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
    409         }
    410 }
    411 
    412 const ast::Expr * InsertImplicitCalls::postvisit( const ast::ApplicationExpr * appExpr ) {
    413         if ( auto function = appExpr->func.as<ast::VariableExpr>() ) {
    414                 if ( function->var->linkage.is_builtin ) {
    415                         // optimization: don't need to copy construct in order to call intrinsic functions
    416                         return appExpr;
    417                 } else if ( auto funcDecl = function->var.as<ast::DeclWithType>() ) {
    418                         auto ftype = dynamic_cast< const ast::FunctionType * >( GenPoly::getFunctionType( funcDecl->get_type() ) );
    419                         assertf( ftype, "Function call without function type: %s", toString( funcDecl ).c_str() );
    420                         if ( CodeGen::isConstructor( funcDecl->name ) && ftype->params.size() == 2 ) {
    421                                 auto t1 = getPointerBase( ftype->params.front() );
    422                                 auto t2 = ftype->params.back();
    423                                 assert( t1 );
    424 
    425                                 if ( ResolvExpr::typesCompatible( t1, t2 ) ) {
    426                                         // optimization: don't need to copy construct in order to call a copy constructor
    427                                         return appExpr;
    428                                 } // if
    429                         } else if ( CodeGen::isDestructor( funcDecl->name ) ) {
    430                                 // correctness: never copy construct arguments to a destructor
    431                                 return appExpr;
    432                         } // if
    433                 } // if
    434         } // if
    435         CP_CTOR_PRINT( std::cerr << "InsertImplicitCalls: adding a wrapper " << appExpr << std::endl; )
    436 
    437         // wrap each function call so that it is easy to identify nodes that have to be copy constructed
    438         ast::ptr<ast::TypeSubstitution> tmp = appExpr->env;
    439         auto mutExpr = mutate(appExpr);
    440         mutExpr->env = nullptr;
    441 
    442         auto expr = new ast::ImplicitCopyCtorExpr( appExpr->location, mutExpr );
    443         // Move the type substitution to the new top-level. The substitution
    444         // is needed to obtain the type of temporary variables so that copy
    445         // constructor calls can be resolved.
    446         expr->env = tmp;
    447         return expr;
    448 }
    449 
    450 void ResolveCopyCtors::previsit(const ast::Expr * expr) {
    451         if ( nullptr == expr->env ) {
    452                 return;
    453         }
    454         GuardValue( env ) = expr->env->clone();
    455         GuardValue( envModified ) = false;
    456 }
    457 
    458 const ast::Expr * ResolveCopyCtors::postvisit(const ast::Expr * expr) {
    459         // No local environment, skip.
    460         if ( nullptr == expr->env ) {
    461                 return expr;
    462         // Environment was modified, mutate and replace.
    463         } else if ( envModified ) {
    464                 auto mutExpr = mutate(expr);
    465                 mutExpr->env = env;
    466                 return mutExpr;
    467         // Environment was not mutated, delete the shallow copy before guard.
    468         } else {
    469                 delete env;
    470                 return expr;
    471         }
    472 }
    473 
    474 bool ResolveCopyCtors::skipCopyConstruct( const ast::Type * type ) { return ! isConstructable( type ); }
    475 
    476 const ast::Expr * ResolveCopyCtors::makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg ) {
    477         assert( var );
    478         assert( var->isManaged() );
    479         assert( !cpArg || cpArg->isManaged() );
    480         // arrays are not copy constructed, so this should always be an ExprStmt
    481         ast::ptr< ast::Stmt > stmt = genCtorDtor(var->location, fname, var, cpArg );
    482         assertf( stmt, "ResolveCopyCtors: genCtorDtor returned nullptr: %s / %s / %s", fname.c_str(), toString( var ).c_str(), toString( cpArg ).c_str() );
    483         auto exprStmt = stmt.strict_as<ast::ImplicitCtorDtorStmt>()->callStmt.strict_as<ast::ExprStmt>();
    484         ast::ptr<ast::Expr> untyped = exprStmt->expr; // take ownership of expr
    485 
    486         // resolve copy constructor
    487         // should only be one alternative for copy ctor and dtor expressions, since all arguments are fixed
    488         // (VariableExpr and already resolved expression)
    489         CP_CTOR_PRINT( std::cerr << "ResolvingCtorDtor " << untyped << std::endl; )
    490         ast::ptr<ast::Expr> resolved = ResolvExpr::findVoidExpression(untyped, { symtab, transUnit().global } );
    491         assert( resolved );
    492         if ( resolved->env ) {
    493                 // Extract useful information and discard new environments. Keeping them causes problems in PolyMutator passes.
    494                 env->add( *resolved->env );
    495                 envModified = true;
    496                 auto mut = mutate(resolved.get());
    497                 assertf(mut == resolved.get(), "newly resolved expression must be unique");
    498                 mut->env = nullptr;
    499         } // if
    500         if ( auto assign = resolved.as<ast::TupleAssignExpr>() ) {
    501                 // fix newly generated StmtExpr
    502                 previsit( assign->stmtExpr );
    503         }
    504         return resolved.release();
    505 }
    506 
    507 ast::ptr<ast::Expr> ResolveCopyCtors::copyConstructArg(
    508         const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal )
    509 {
    510         static UniqueName tempNamer("_tmp_cp");
    511         const CodeLocation loc = impCpCtorExpr->location;
    512         // CP_CTOR_PRINT( std::cerr << "Type Substitution: " << *env << std::endl; )
    513         assert( arg->result );
    514         ast::ptr<ast::Type> result = arg->result;
    515         if ( skipCopyConstruct( result ) ) return arg; // skip certain non-copyable types
    516 
    517         // type may involve type variables, so apply type substitution to get temporary variable's actual type,
    518         // since result type may not be substituted (e.g., if the type does not appear in the parameter list)
    519         // Use applyFree so that types bound in function pointers are not substituted, e.g. in forall(dtype T) void (*)(T).
    520 
    521         // xxx - this originally mutates arg->result in place. is it correct?
    522         assert( env );
    523         result = env->applyFree( result.get() ).node;
    524         auto mutResult = result.get_and_mutate();
    525         mutResult->set_const(false);
    526 
    527         auto mutArg = mutate(arg);
    528         mutArg->result = mutResult;
    529 
    530         ast::ptr<ast::Expr> guard = mutArg;
    531 
    532         ast::ptr<ast::ObjectDecl> tmp = new ast::ObjectDecl(loc, "__tmp", mutResult, nullptr );
    533 
    534         // create and resolve copy constructor
    535         CP_CTOR_PRINT( std::cerr << "makeCtorDtor for an argument" << std::endl; )
    536         auto cpCtor = makeCtorDtor( "?{}", tmp, mutArg );
    537 
    538         if ( auto appExpr = dynamic_cast< const ast::ApplicationExpr * >( cpCtor ) ) {
    539                 // if the chosen constructor is intrinsic, the copy is unnecessary, so
    540                 // don't create the temporary and don't call the copy constructor
    541                 auto function = appExpr->func.strict_as<ast::VariableExpr>();
    542                 if ( function->var->linkage == ast::Linkage::Intrinsic ) {
    543                         // arguments that need to be boxed need a temporary regardless of whether the copy constructor is intrinsic,
    544                         // so that the object isn't changed inside of the polymorphic function
    545                         if ( ! GenPoly::needsBoxing( formal, result, impCpCtorExpr->callExpr, env ) ) {
    546                                 // xxx - should arg->result be mutated? see comment above.
    547                                 return guard;
    548                         }
    549                 }
    550         }
    551 
    552         // set a unique name for the temporary once it's certain the call is necessary
    553         auto mut = tmp.get_and_mutate();
    554         assertf (mut == tmp, "newly created ObjectDecl must be unique");
    555         mut->name = tempNamer.newName();
    556 
    557         // replace argument to function call with temporary
    558         stmtsToAddBefore.push_back( new ast::DeclStmt(loc, tmp ) );
    559         arg = cpCtor;
    560         return destructRet( tmp, arg );
    561 
    562         // impCpCtorExpr->dtors.push_front( makeCtorDtor( "^?{}", tmp ) );
    563 }
    564 
    565 ast::Expr * ResolveCopyCtors::destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg ) {
    566         auto global = transUnit().global;
    567         // TODO: refactor code for generating cleanup attribute, since it's common and reused in ~3-4 places
    568         // check for existing cleanup attribute before adding another(?)
    569         // need to add __Destructor for _tmp_cp variables as well
    570 
    571         assertf( global.dtorStruct, "Destructor generation requires __Destructor definition." );
    572         assertf( global.dtorStruct->members.size() == 2, "__Destructor definition does not have expected fields." );
    573         assertf( global.dtorDestroy, "Destructor generation requires __destroy_Destructor." );
    574 
    575         const CodeLocation loc = ret->location;
    576 
    577         // generate a __Destructor for ret that calls the destructor
    578         auto res = makeCtorDtor( "^?{}", ret );
    579         auto dtor = mutate(res);
    580 
    581         // if the chosen destructor is intrinsic, elide the generated dtor handler
    582         if ( arg && isIntrinsicCallExpr( dtor ) ) {
    583                 return new ast::CommaExpr(loc, arg, new ast::VariableExpr(loc, ret ) );
    584         }
    585 
    586         if ( ! dtor->env ) dtor->env = maybeClone( env );
    587         auto dtorFunc = getDtorFunc( ret, new ast::ExprStmt(loc, dtor ), stmtsToAddBefore );
    588 
    589         auto dtorStructType = new ast::StructInstType( global.dtorStruct );
    590 
    591         // what does this do???
    592         dtorStructType->params.push_back( new ast::TypeExpr(loc, new ast::VoidType() ) );
    593 
    594         // cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
    595         auto dtorFtype = new ast::FunctionType();
    596         dtorFtype->params.push_back( new ast::PointerType(new ast::VoidType( ) ) );
    597         auto dtorType = new ast::PointerType( dtorFtype );
    598 
    599         static UniqueName namer( "_ret_dtor" );
    600         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 ) ) } ) );
    601         retDtor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, global.dtorDestroy ) } ) );
    602         stmtsToAddBefore.push_back( new ast::DeclStmt(loc, retDtor ) );
    603 
    604         if ( arg ) {
    605                 auto member = new ast::MemberExpr(loc, global.dtorStruct->members.front().strict_as<ast::DeclWithType>(), new ast::VariableExpr(loc, retDtor ) );
    606                 auto object = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, ret ) ), new ast::PointerType(new ast::VoidType() ) );
    607                 ast::Expr * assign = createBitwiseAssignment( member, object );
    608                 return new ast::CommaExpr(loc, new ast::CommaExpr(loc, arg, assign ), new ast::VariableExpr(loc, ret ) );
    609         }
    610         return nullptr;
    611         // impCpCtorExpr->get_dtors().push_front( makeCtorDtor( "^?{}", ret ) );
    612 }
    613 
    614 const ast::Expr * ResolveCopyCtors::postvisit( const ast::ImplicitCopyCtorExpr *impCpCtorExpr ) {
    615         CP_CTOR_PRINT( std::cerr << "ResolveCopyCtors: " << impCpCtorExpr << std::endl; )
    616 
    617         ast::ApplicationExpr * appExpr = mutate(impCpCtorExpr->callExpr.get());
    618         const ast::ObjectDecl * returnDecl = nullptr;
    619         const CodeLocation loc = appExpr->location;
    620 
    621         // take each argument and attempt to copy construct it.
    622         auto ftype = GenPoly::getFunctionType( appExpr->func->result );
    623         assert( ftype );
    624         auto & params = ftype->params;
    625         auto iter = params.begin();
    626         for ( auto & arg : appExpr->args ) {
    627                 const ast::Type * formal = nullptr;
    628                 if ( iter != params.end() ) { // does not copy construct C-style variadic arguments
    629                         // DeclarationWithType * param = *iter++;
    630                         formal = *iter++;
    631                 }
    632 
    633                 arg = copyConstructArg( arg, impCpCtorExpr, formal );
    634         } // for
    635 
    636         // each return value from the call needs to be connected with an ObjectDecl at the call site, which is
    637         // initialized with the return value and is destructed later
    638         // xxx - handle named return values?
    639         const ast::Type * result = appExpr->result;
    640         if ( ! result->isVoid() ) {
    641                 static UniqueName retNamer("_tmp_cp_ret");
    642                 auto subResult = env->apply( result ).node;
    643                 auto ret = new ast::ObjectDecl(loc, retNamer.newName(), subResult, nullptr );
    644                 auto mutType = mutate(ret->type.get());
    645                 mutType->set_const( false );
    646                 ret->type = mutType;
    647                 returnDecl = ret;
    648                 stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
    649                 CP_CTOR_PRINT( std::cerr << "makeCtorDtor for a return" << std::endl; )
    650         } // for
    651         CP_CTOR_PRINT( std::cerr << "after Resolving: " << impCpCtorExpr << std::endl; )
    652         // ------------------------------------------------------
    653 
    654         CP_CTOR_PRINT( std::cerr << "Coming out the back..." << impCpCtorExpr << std::endl; )
    655 
    656         // detach fields from wrapper node so that it can be deleted without deleting too much
    657 
    658         // xxx - actual env might be somewhere else, need to keep invariant
    659 
    660         // deletion of wrapper should be handled by pass template now
    661 
    662         // impCpCtorExpr->callExpr = nullptr;
    663         assert (appExpr->env == nullptr);
    664         appExpr->env = impCpCtorExpr->env;
    665         // std::swap( impCpCtorExpr->env, appExpr->env );
    666         // assert( impCpCtorExpr->env == nullptr );
    667         // delete impCpCtorExpr;
    668 
    669         if ( returnDecl ) {
    670                 ast::Expr * assign = createBitwiseAssignment( new ast::VariableExpr(loc, returnDecl ), appExpr );
    671                 if ( ! dynamic_cast< const ast::ReferenceType * >( result ) ) {
    672                         // destructing reference returns is bad because it can cause multiple destructor calls to the same object - the returned object is not a temporary
    673                         assign = destructRet( returnDecl, assign );
    674                         assert(assign);
    675                 } else {
    676                         assign = new ast::CommaExpr(loc, assign, new ast::VariableExpr(loc, returnDecl ) );
    677                 }
    678                 // move env from appExpr to retExpr
    679                 // std::swap( assign->env, appExpr->env );
    680                 assign->env = appExpr->env;
    681                 // actual env is handled by common routine that replaces WithTypeSubstitution
    682                 return postvisit((const ast::Expr *)assign);
    683         } else {
    684                 return postvisit((const ast::Expr *)appExpr);
    685         } // if
    686 }
    687 
    688 const ast::StmtExpr * ResolveCopyCtors::previsit( const ast::StmtExpr * _stmtExpr ) {
    689         // function call temporaries should be placed at statement-level, rather than nested inside of a new statement expression,
    690         // since temporaries can be shared across sub-expressions, e.g.
    691         //   [A, A] f();       // decl
    692         //   g([A] x, [A] y);  // decl
    693         //   g(f());           // call
    694         // f is executed once, so the return temporary is shared across the tuple constructors for x and y.
    695         // Explicitly mutating children instead of mutating the inner compound statement forces the temporaries to be added
    696         // to the outer context, rather than inside of the statement expression.
    697 
    698         // call the common routine that replaces WithTypeSubstitution
    699         previsit((const ast::Expr *) _stmtExpr);
    700 
    701         visit_children = false;
    702         const CodeLocation loc = _stmtExpr->location;
    703 
    704         assert( env );
    705 
    706         symtab.enterScope();
    707         // visit all statements
    708         auto stmtExpr = mutate(_stmtExpr);
    709         auto mutStmts = mutate(stmtExpr->stmts.get());
    710 
    711         auto & stmts = mutStmts->kids;
    712         for ( auto & stmt : stmts ) {
    713                 stmt = stmt->accept( *visitor );
    714         } // for
    715         stmtExpr->stmts = mutStmts;
    716         symtab.leaveScope();
    717 
    718         assert( stmtExpr->result );
    719         // const ast::Type * result = stmtExpr->result;
    720         if ( ! stmtExpr->result->isVoid() ) {
    721                 static UniqueName retNamer("_tmp_stmtexpr_ret");
    722 
    723                 // result = result->clone();
    724                 auto result = env->apply( stmtExpr->result.get() ).node;
    725                 if ( ! InitTweak::isConstructable( result ) ) {
    726                         // delete result;
    727                         return stmtExpr;
    728                 }
    729                 auto mutResult = result.get_and_mutate();
    730                 mutResult->set_const(false);
    731 
    732                 // create variable that will hold the result of the stmt expr
    733                 auto ret = new ast::ObjectDecl(loc, retNamer.newName(), mutResult, nullptr );
    734                 stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
    735 
    736                 assertf(
    737                         stmtExpr->resultExpr,
    738                         "Statement-Expression should have a resulting expression at %s:%d",
    739                         stmtExpr->location.filename.c_str(),
    740                         stmtExpr->location.first_line
     46        // Shallow copy the pointer list for return.
     47        std::vector<ast::ptr<ast::TypeDecl>> getGenericParams( const ast::Type * t ) {
     48                if ( auto inst = dynamic_cast<const ast::StructInstType *>( t ) ) {
     49                        return inst->base->params;
     50                }
     51                if ( auto inst = dynamic_cast<const ast::UnionInstType *>( t ) ) {
     52                        return inst->base->params;
     53                }
     54                return {};
     55        }
     56
     57        /// Given type T, generate type of default ctor/dtor, i.e. function type void (*) (T &).
     58        ast::FunctionDecl * genDefaultFunc(
     59                        const CodeLocation loc,
     60                        const std::string fname,
     61                        const ast::Type * paramType,
     62                        bool maybePolymorphic = true) {
     63                std::vector<ast::ptr<ast::TypeDecl>> typeParams;
     64                if ( maybePolymorphic ) typeParams = getGenericParams( paramType );
     65                auto dstParam = new ast::ObjectDecl( loc,
     66                        "_dst",
     67                        new ast::ReferenceType( paramType ),
     68                        nullptr,
     69                        {},
     70                        ast::Linkage::Cforall
    74171                );
    742 
    743                 const ast::ExprStmt * last = stmtExpr->resultExpr;
    744                 // xxx - if this is non-unique, need to copy while making resultExpr ref
    745                 assertf(last->unique(), "attempt to modify weakly shared statement");
    746                 auto mutLast = mutate(last);
    747                 // above assertion means in-place mutation is OK
    748                 try {
    749                         mutLast->expr = makeCtorDtor( "?{}", ret, mutLast->expr );
    750                 } catch(...) {
    751                         std::cerr << "*CFA internal error: ";
    752                         std::cerr << "can't resolve implicit constructor";
    753                         std::cerr << " at " << stmtExpr->location.filename;
    754                         std::cerr << ":" << stmtExpr->location.first_line << std::endl;
    755 
    756                         abort();
    757                 }
    758 
    759                 // add destructors after current statement
    760                 stmtsToAddAfter.push_back( new ast::ExprStmt(loc, makeCtorDtor( "^?{}", ret ) ) );
    761 
    762                 // must have a non-empty body, otherwise it wouldn't have a result
    763                 assert( ! stmts.empty() );
    764 
    765                 // if there is a return decl, add a use as the last statement; will not have return decl on non-constructable returns
    766                 stmts.push_back( new ast::ExprStmt(loc, new ast::VariableExpr(loc, ret ) ) );
    767         } // if
    768 
    769         assert( stmtExpr->returnDecls.empty() );
    770         assert( stmtExpr->dtors.empty() );
    771 
    772         return stmtExpr;
    773 }
    774 
    775 // to prevent warnings ('_unq0' may be used uninitialized in this function),
    776 // insert an appropriate zero initializer for UniqueExpr temporaries.
    777 ast::Init * makeInit( const ast::Type * t, CodeLocation const & loc ) {
    778         if ( auto inst = dynamic_cast< const ast::StructInstType * >( t ) ) {
    779                 // initizer for empty struct must be empty
    780                 if ( inst->base->members.empty() ) {
    781                         return new ast::ListInit( loc, {} );
    782                 }
    783         } else if ( auto inst = dynamic_cast< const ast::UnionInstType * >( t ) ) {
    784                 // initizer for empty union must be empty
    785                 if ( inst->base->members.empty() ) {
    786                         return new ast::ListInit( loc, {} );
    787                 }
    788         }
    789 
    790         return new ast::ListInit( loc, {
    791                 new ast::SingleInit( loc, ast::ConstantExpr::from_int( loc, 0 ) )
    792         } );
    793 }
    794 
    795 const ast::UniqueExpr * ResolveCopyCtors::previsit( const ast::UniqueExpr * unqExpr ) {
    796         visit_children = false;
    797         // xxx - hack to prevent double-handling of unique exprs, otherwise too many temporary variables and destructors are generated
    798         static std::unordered_map< int, const ast::UniqueExpr * > unqMap;
    799         auto mutExpr = mutate(unqExpr);
    800         if ( ! unqMap.count( unqExpr->id ) ) {
    801                 // resolve expr and find its
    802 
    803                 auto impCpCtorExpr = mutExpr->expr.as<ast::ImplicitCopyCtorExpr>();
    804                 // PassVisitor<ResolveCopyCtors> fixer;
    805 
    806                 mutExpr->expr = mutExpr->expr->accept( *visitor );
    807                 // it should never be necessary to wrap a void-returning expression in a UniqueExpr - if this assumption changes, this needs to be rethought
    808                 assert( unqExpr->result );
    809                 if ( impCpCtorExpr ) {
    810                         auto comma = unqExpr->expr.strict_as<ast::CommaExpr>();
    811                         auto var = comma->arg2.strict_as<ast::VariableExpr>();
    812                         // note the variable used as the result from the call
    813                         mutExpr->var = var;
    814                 } else {
    815                         // expr isn't a call expr, so create a new temporary variable to use to hold the value of the unique expression
    816                         mutExpr->object = new ast::ObjectDecl( mutExpr->location, toString("_unq", mutExpr->id), mutExpr->result, makeInit( mutExpr->result, mutExpr->location ) );
    817                         mutExpr->var = new ast::VariableExpr( mutExpr->location, mutExpr->object );
    818                 }
    819 
    820                 unqMap[mutExpr->id] = mutExpr;
    821         } else {
    822                 // take data from other UniqueExpr to ensure consistency
    823                 // delete unqExpr->get_expr();
    824                 mutExpr->expr = unqMap[mutExpr->id]->expr;
    825                 // delete unqExpr->result;
    826                 mutExpr->result = mutExpr->expr->result;
    827         }
    828         return mutExpr;
    829 }
    830 
    831 const ast::DeclWithType * FixInit::postvisit( const ast::ObjectDecl *_objDecl ) {
    832         const CodeLocation loc = _objDecl->location;
    833 
    834         // since this removes the init field from objDecl, it must occur after children are mutated (i.e. postvisit)
    835         if ( ast::ptr<ast::ConstructorInit> ctorInit = _objDecl->init.as<ast::ConstructorInit>() ) {
    836                 auto objDecl = mutate(_objDecl);
    837 
    838                 // could this be non-unique?
    839                 if (objDecl != _objDecl) {
    840                         std::cerr << "FixInit: non-unique object decl " << objDecl->location << objDecl->name << std::endl;
    841                 }
    842                 // a decision should have been made by the resolver, so ctor and init are not both non-NULL
    843                 assert( ! ctorInit->ctor || ! ctorInit->init );
    844                 if ( const ast::Stmt * ctor = ctorInit->ctor ) {
    845                         if ( objDecl->storage.is_static ) {
    846                                 addDataSectionAttribute(objDecl);
    847                                 // originally wanted to take advantage of gcc nested functions, but
    848                                 // we get memory errors with this approach. To remedy this, the static
    849                                 // variable is hoisted when the destructor needs to be called.
    850                                 //
    851                                 // generate:
    852                                 // static T __objName_static_varN;
    853                                 // void __objName_dtor_atexitN() {
    854                                 //   __dtor__...;
    855                                 // }
    856                                 // int f(...) {
    857                                 //   ...
    858                                 //   static bool __objName_uninitialized = true;
    859                                 //   if (__objName_uninitialized) {
    860                                 //     __ctor(__objName);
    861                                 //     __objName_uninitialized = false;
    862                                 //     atexit(__objName_dtor_atexitN);
    863                                 //   }
    864                                 //   ...
    865                                 // }
    866 
    867                                 static UniqueName dtorCallerNamer( "_dtor_atexit" );
    868 
    869                                 // static bool __objName_uninitialized = true
    870                                 auto boolType = new ast::BasicType( ast::BasicType::Kind::Bool );
    871                                 auto boolInitExpr = new ast::SingleInit(loc, ast::ConstantExpr::from_int(loc, 1 ) );
    872                                 auto isUninitializedVar = new ast::ObjectDecl(loc, objDecl->mangleName + "_uninitialized", boolType, boolInitExpr, ast::Storage::Static, ast::Linkage::Cforall);
    873                                 isUninitializedVar->fixUniqueId();
    874 
    875                                 // __objName_uninitialized = false;
    876                                 auto setTrue = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ) );
    877                                 setTrue->args.push_back( new ast::VariableExpr(loc, isUninitializedVar ) );
    878                                 setTrue->args.push_back( ast::ConstantExpr::from_int(loc, 0 ) );
    879 
    880                                 // generate body of if
    881                                 auto initStmts = new ast::CompoundStmt(loc);
    882                                 auto & body = initStmts->kids;
    883                                 body.push_back( ctor );
    884                                 body.push_back( new ast::ExprStmt(loc, setTrue ) );
    885 
    886                                 // put it all together
    887                                 auto ifStmt = new ast::IfStmt(loc, new ast::VariableExpr(loc, isUninitializedVar ), initStmts, 0 );
    888                                 stmtsToAddAfter.push_back( new ast::DeclStmt(loc, isUninitializedVar ) );
    889                                 stmtsToAddAfter.push_back( ifStmt );
    890 
    891                                 const ast::Stmt * dtor = ctorInit->dtor;
    892 
    893                                 // these should be automatically managed once reassigned
    894                                 // objDecl->set_init( nullptr );
    895                                 // ctorInit->set_ctor( nullptr );
    896                                 // ctorInit->set_dtor( nullptr );
    897                                 if ( dtor ) {
    898                                         // if the object has a non-trivial destructor, have to
    899                                         // hoist it and the object into the global space and
    900                                         // call the destructor function with atexit.
    901 
    902                                         // Statement * dtorStmt = dtor->clone();
    903 
    904                                         // void __objName_dtor_atexitN(...) {...}
    905                                         ast::FunctionDecl * dtorCaller = new ast::FunctionDecl(loc, objDecl->mangleName + dtorCallerNamer.newName(), {}, {}, {}, new ast::CompoundStmt(loc, {dtor}), ast::Storage::Static, ast::Linkage::C );
    906                                         dtorCaller->fixUniqueId();
    907                                         // dtorCaller->stmts->push_back( dtor );
    908 
    909                                         // atexit(dtor_atexit);
    910                                         auto callAtexit = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "atexit" ) );
    911                                         callAtexit->args.push_back( new ast::VariableExpr(loc, dtorCaller ) );
    912 
    913                                         body.push_back( new ast::ExprStmt(loc, callAtexit ) );
    914 
    915                                         // hoist variable and dtor caller decls to list of decls that will be added into global scope
    916                                         staticDtorDecls.push_back( objDecl );
    917                                         staticDtorDecls.push_back( dtorCaller );
    918 
    919                                         // need to rename object uniquely since it now appears
    920                                         // at global scope and there could be multiple function-scoped
    921                                         // static variables with the same name in different functions.
    922                                         // Note: it isn't sufficient to modify only the mangleName, because
    923                                         // then subsequent Indexer passes can choke on seeing the object's name
    924                                         // if another object has the same name and type. An unfortunate side-effect
    925                                         // of renaming the object is that subsequent NameExprs may fail to resolve,
    926                                         // but there shouldn't be any remaining past this point.
    927                                         static UniqueName staticNamer( "_static_var" );
    928                                         objDecl->name = objDecl->name + staticNamer.newName();
    929                                         objDecl->mangleName = Mangle::mangle( objDecl );
    930                                         objDecl->init = nullptr;
    931 
    932                                         // xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope
    933                                         // create a new object which is never used
    934                                         static UniqueName dummyNamer( "_dummy" );
    935                                         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") } );
    936                                         // delete ctorInit;
    937                                         return dummy;
    938                                 } else {
    939                                         objDecl->init = nullptr;
    940                                         return objDecl;
    941                                 }
    942                         } else {
    943                                 auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * > ( ctor );
    944                                 auto ctorStmt = implicit->callStmt.as<ast::ExprStmt>();
    945                                 const ast::ApplicationExpr * ctorCall = nullptr;
    946                                 if ( ctorStmt && (ctorCall = isIntrinsicCallExpr( ctorStmt->expr )) && ctorCall->args.size() == 2 ) {
    947                                         // clean up intrinsic copy constructor calls by making them into SingleInits
    948                                         const ast::Expr * ctorArg = ctorCall->args.back();
    949                                         // ctorCall should be gone afterwards
    950                                         auto mutArg = mutate(ctorArg);
    951                                         mutArg->env = ctorCall->env;
    952                                         // std::swap( ctorArg->env, ctorCall->env );
    953                                         objDecl->init = new ast::SingleInit(loc, mutArg );
    954 
    955                                         // ctorCall->args.pop_back();
    956                                 } else {
    957                                         stmtsToAddAfter.push_back( ctor );
    958                                         objDecl->init = nullptr;
    959                                         // ctorInit->ctor = nullptr;
    960                                 }
    961 
    962                                 const ast::Stmt * dtor = ctorInit->dtor;
    963                                 if ( dtor ) {
    964                                         auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * >( dtor );
    965                                         const ast::Stmt * dtorStmt = implicit->callStmt;
    966 
    967                                         // don't need to call intrinsic dtor, because it does nothing, but
    968                                         // non-intrinsic dtors must be called
    969                                         if ( ! isIntrinsicSingleArgCallStmt( dtorStmt ) ) {
    970                                                 // set dtor location to the object's location for error messages
    971                                                 auto dtorFunc = getDtorFunc( objDecl, dtorStmt, stmtsToAddBefore );
    972                                                 objDecl->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, dtorFunc ) } ) );
    973                                                 // ctorInit->dtor = nullptr;
    974                                         } // if
    975                                 }
    976                         } // if
    977                 } else if ( const ast::Init * init = ctorInit->init ) {
    978                         objDecl->init = init;
    979                         // ctorInit->init = nullptr;
    980                 } else {
    981                         // no constructor and no initializer, which is okay
    982                         objDecl->init = nullptr;
    983                 } // if
    984                 // delete ctorInit;
    985                 return objDecl;
    986         } // if
    987         return _objDecl;
    988 }
    989 
    990 void ObjDeclCollector::previsit( const ast::CompoundStmt * ) {
    991         GuardValue( curVars );
    992 }
    993 
    994 void ObjDeclCollector::previsit( const ast::DeclStmt * stmt ) {
    995         // keep track of all variables currently in scope
    996         if ( auto objDecl = stmt->decl.as<ast::ObjectDecl>() ) {
    997                 curVars.push_back( objDecl );
    998         } // if
    999 }
    1000 
    1001 void LabelFinder::previsit( const ast::Stmt * stmt ) {
    1002         // for each label, remember the variables in scope at that label.
    1003         for ( auto l : stmt->labels ) {
    1004                 vars[l] = curVars;
    1005         } // for
    1006 }
    1007 
    1008 void LabelFinder::previsit( const ast::CompoundStmt * stmt ) {
    1009         previsit( (const ast::Stmt *) stmt );
    1010         Parent::previsit( stmt );
    1011 }
    1012 
    1013 void LabelFinder::previsit( const ast::DeclStmt * stmt ) {
    1014         previsit( (const ast::Stmt *)stmt );
    1015         Parent::previsit( stmt );
    1016 }
    1017 
    1018 void InsertDtors::previsit( const ast::FunctionDecl * funcDecl ) {
    1019         // each function needs to have its own set of labels
    1020         GuardValue( labelVars );
    1021         labelVars.clear();
    1022         // LabelFinder does not recurse into FunctionDecl, so need to visit
    1023         // its children manually.
    1024         if (funcDecl->type) funcDecl->type->accept(finder);
    1025         // maybeAccept( funcDecl->type, finder );
    1026         if (funcDecl->stmts) funcDecl->stmts->accept(finder) ;
    1027 
    1028         // all labels for this function have been collected, insert destructors as appropriate via implicit recursion.
    1029 }
    1030 
    1031 // Handle break/continue/goto in the same manner as C++.  Basic idea: any objects that are in scope at the
    1032 // BranchStmt but not at the labelled (target) statement must be destructed.  If there are any objects in scope
    1033 // at the target location but not at the BranchStmt then those objects would be uninitialized so notify the user
    1034 // of the error.  See C++ Reference 6.6 Jump Statements for details.
    1035 void InsertDtors::handleGoto( const ast::BranchStmt * stmt ) {
    1036         // can't do anything for computed goto
    1037         if ( stmt->computedTarget ) return;
    1038 
    1039         assertf( stmt->target.name != "", "BranchStmt missing a label: %s", toString( stmt ).c_str() );
    1040         // S_L = lvars = set of objects in scope at label definition
    1041         // S_G = curVars = set of objects in scope at goto statement
    1042         ObjectSet & lvars = labelVars[ stmt->target ];
    1043 
    1044         DTOR_PRINT(
    1045                 std::cerr << "at goto label: " << stmt->target.name << std::endl;
    1046                 std::cerr << "S_G = " << printSet( curVars ) << std::endl;
    1047                 std::cerr << "S_L = " << printSet( lvars ) << std::endl;
    1048         )
    1049 
    1050 
    1051         // std::set_difference requires that the inputs be sorted.
    1052         lvars.sort();
    1053         curVars.sort();
    1054 
    1055         ObjectSet diff;
    1056         // S_L-S_G results in set of objects whose construction is skipped - it's an error if this set is non-empty
    1057         std::set_difference( lvars.begin(), lvars.end(), curVars.begin(), curVars.end(), std::inserter( diff, diff.begin() ) );
    1058         DTOR_PRINT(
    1059                 std::cerr << "S_L-S_G = " << printSet( diff ) << std::endl;
    1060         )
    1061         if ( ! diff.empty() ) {
    1062                 SemanticError( stmt, std::string("jump to label '") + stmt->target.name + "' crosses initialization of " + (*diff.begin())->name + " " );
    1063         } // if
    1064 }
    1065 
    1066 void InsertDtors::previsit( const ast::BranchStmt * stmt ) {
    1067         switch( stmt->kind ) {
    1068         case ast::BranchStmt::Continue:
    1069         case ast::BranchStmt::Break:
    1070                 // could optimize the break/continue case, because the S_L-S_G check is unnecessary (this set should
    1071                 // always be empty), but it serves as a small sanity check.
    1072         case ast::BranchStmt::Goto:
    1073                 handleGoto( stmt );
    1074                 break;
    1075         default:
    1076                 assert( false );
    1077         } // switch
    1078 }
    1079 
    1080 bool checkWarnings( const ast::FunctionDecl * funcDecl ) {
    1081         // only check for warnings if the current function is a user-defined
    1082         // constructor or destructor
    1083         if ( ! funcDecl ) return false;
    1084         if ( ! funcDecl->stmts ) return false;
    1085         return CodeGen::isCtorDtor( funcDecl->name ) && ! funcDecl->linkage.is_overrideable;
    1086 }
    1087 
    1088 void GenStructMemberCalls::previsit( const ast::FunctionDecl * funcDecl ) {
    1089         GuardValue( function );
    1090         GuardValue( unhandled );
    1091         GuardValue( usedUninit );
    1092         GuardValue( thisParam );
    1093         GuardValue( isCtor );
    1094         GuardValue( structDecl );
    1095         errors = SemanticErrorException();  // clear previous errors
    1096 
    1097         // need to start with fresh sets
    1098         unhandled.clear();
    1099         usedUninit.clear();
    1100 
    1101         function = mutate(funcDecl);
    1102         // could this be non-unique?
    1103         if (function != funcDecl) {
    1104                 std::cerr << "GenStructMemberCalls: non-unique FunctionDecl " << funcDecl->location << funcDecl->name << std::endl;
    1105         }
    1106 
    1107         isCtor = CodeGen::isConstructor( function->name );
    1108         if ( checkWarnings( function ) ) {
    1109                 // const ast::FunctionType * type = function->type;
    1110                 // assert( ! type->params.empty() );
    1111                 thisParam = function->params.front().strict_as<ast::ObjectDecl>();
    1112                 auto thisType = getPointerBase( thisParam->get_type() );
    1113                 auto structType = dynamic_cast< const ast::StructInstType * >( thisType );
    1114                 if ( structType ) {
    1115                         structDecl = structType->base;
    1116                         for ( auto & member : structDecl->members ) {
    1117                                 if ( auto field = member.as<ast::ObjectDecl>() ) {
    1118                                         // record all of the struct type's members that need to be constructed or
    1119                                         // destructed by the end of the function
    1120                                         unhandled.insert( field );
    1121                                 }
    1122                         }
    1123                 }
    1124         }
    1125 }
    1126 
    1127 const ast::DeclWithType * GenStructMemberCalls::postvisit( const ast::FunctionDecl * funcDecl ) {
    1128         // remove the unhandled objects from usedUninit, because a call is inserted
    1129         // to handle them - only objects that are later constructed are used uninitialized.
    1130         std::map< const ast::DeclWithType *, CodeLocation > diff;
    1131         // need the comparator since usedUninit and unhandled have different types
    1132         struct comp_t {
    1133                 typedef decltype(usedUninit)::value_type usedUninit_t;
    1134                 typedef decltype(unhandled)::value_type unhandled_t;
    1135                 bool operator()(usedUninit_t x, unhandled_t y) { return x.first < y; }
    1136                 bool operator()(unhandled_t x, usedUninit_t y) { return x < y.first; }
    1137         } comp;
    1138         std::set_difference( usedUninit.begin(), usedUninit.end(), unhandled.begin(), unhandled.end(), std::inserter( diff, diff.begin() ), comp );
    1139         for ( auto p : diff ) {
    1140                 auto member = p.first;
    1141                 auto loc = p.second;
    1142                 // xxx - make error message better by also tracking the location that the object is constructed at?
    1143                 emit( loc, "in ", function->name, ", field ", member->name, " used before being constructed" );
    1144         }
    1145 
    1146         const CodeLocation loc = funcDecl->location;
    1147 
    1148         if ( ! unhandled.empty() ) {
    1149                 auto mutStmts = function->stmts.get_and_mutate();
    1150                 // need to explicitly re-add function parameters to the indexer in order to resolve copy constructors
    1151                 auto guard = makeFuncGuard( [this]() { symtab.enterScope(); }, [this]() { symtab.leaveScope(); } );
    1152                 symtab.addFunction( function );
    1153                 auto global = transUnit().global;
    1154 
    1155                 // need to iterate through members in reverse in order for
    1156                 // ctor/dtor statements to come out in the right order
    1157                 for ( auto & member : reverseIterate( structDecl->members ) ) {
    1158                         auto field = member.as<ast::ObjectDecl>();
    1159                         // skip non-DWT members
    1160                         if ( ! field ) continue;
    1161                         // skip non-constructable members
    1162                         if ( ! tryConstruct( field ) ) continue;
    1163                         // skip handled members
    1164                         if ( ! unhandled.count( field ) ) continue;
    1165 
    1166                         // insert and resolve default/copy constructor call for each field that's unhandled
    1167                         // std::list< const ast::Stmt * > stmt;
    1168                         ast::Expr * arg2 = nullptr;
    1169                         if ( function->name == "?{}" && isCopyFunction( function ) ) {
    1170                                 // if copy ctor, need to pass second-param-of-this-function.field
    1171                                 // std::list< DeclarationWithType * > & params = function->get_functionType()->get_parameters();
    1172                                 assert( function->params.size() == 2 );
    1173                                 arg2 = new ast::MemberExpr(funcDecl->location, field, new ast::VariableExpr(funcDecl->location, function->params.back() ) );
    1174                         }
    1175                         InitExpander_new srcParam( arg2 );
    1176                         // cast away reference type and construct field.
    1177                         ast::Expr * thisExpr = new ast::CastExpr(funcDecl->location, new ast::VariableExpr(funcDecl->location, thisParam ), thisParam->get_type()->stripReferences());
    1178                         ast::Expr * memberDest = new ast::MemberExpr(funcDecl->location, field, thisExpr );
    1179                         ast::ptr<ast::Stmt> callStmt = SymTab::genImplicitCall( srcParam, memberDest, loc, function->name, field, static_cast<SymTab::LoopDirection>(isCtor) );
    1180 
    1181                         if ( callStmt ) {
    1182                                 // auto & callStmt = stmt.front();
    1183 
    1184                                 try {
    1185                                         callStmt = callStmt->accept( *visitor );
    1186                                         if ( isCtor ) {
    1187                                                 mutStmts->push_front( callStmt );
    1188                                         } else { // TODO: don't generate destructor function/object for intrinsic calls
    1189                                                 // destructor statements should be added at the end
    1190                                                 // function->get_statements()->push_back( callStmt );
    1191 
    1192                                                 // Optimization: do not need to call intrinsic destructors on members
    1193                                                 if ( isIntrinsicSingleArgCallStmt( callStmt ) ) continue;
    1194 
    1195                                                 // __Destructor _dtor0 = { (void *)&b.a1, (void (*)(void *)_destroy_A };
    1196                                                 std::list< ast::ptr<ast::Stmt> > stmtsToAdd;
    1197 
    1198                                                 static UniqueName memberDtorNamer = { "__memberDtor" };
    1199                                                 assertf( global.dtorStruct, "builtin __Destructor not found." );
    1200                                                 assertf( global.dtorDestroy, "builtin __destroy_Destructor not found." );
    1201 
    1202                                                 ast::Expr * thisExpr = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, thisParam ) ), new ast::PointerType( new ast::VoidType(), ast::CV::Qualifiers() ) );
    1203                                                 ast::Expr * dtorExpr = new ast::VariableExpr(loc, getDtorFunc( thisParam, callStmt, stmtsToAdd ) );
    1204 
    1205                                                 // cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
    1206                                                 auto dtorFtype = new ast::FunctionType();
    1207                                                 dtorFtype->params.emplace_back( new ast::PointerType( new ast::VoidType() ) );
    1208                                                 auto dtorType = new ast::PointerType( dtorFtype );
    1209 
    1210                                                 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 ) ) } ) );
    1211                                                 destructor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr( loc, global.dtorDestroy ) } ) );
    1212                                                 mutStmts->push_front( new ast::DeclStmt(loc, destructor ) );
    1213                                                 mutStmts->kids.splice( mutStmts->kids.begin(), stmtsToAdd );
    1214                                         }
    1215                                 } catch ( SemanticErrorException & error ) {
    1216                                         emit( funcDecl->location, "in ", function->name , ", field ", field->name, " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
    1217                                 }
    1218                         }
    1219                 }
    1220                 function->stmts = mutStmts;
    1221         }
    1222         if (! errors.isEmpty()) {
    1223                 throw errors;
    1224         }
    1225         // return funcDecl;
    1226         return function;
    1227 }
    1228 
    1229 /// true if expr is effectively just the 'this' parameter
    1230 bool isThisExpression( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
    1231         // TODO: there are more complicated ways to pass 'this' to a constructor, e.g. &*, *&, etc.
    1232         if ( auto varExpr = dynamic_cast< const ast::VariableExpr * >( expr ) ) {
    1233                 return varExpr->var == thisParam;
    1234         } else if ( auto castExpr = dynamic_cast< const ast::CastExpr * > ( expr ) ) {
    1235                 return isThisExpression( castExpr->arg, thisParam );
    1236         }
    1237         return false;
    1238 }
    1239 
    1240 /// returns a MemberExpr if expr is effectively just member access on the 'this' parameter, else nullptr
    1241 const ast::MemberExpr * isThisMemberExpr( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
    1242         if ( auto memberExpr = dynamic_cast< const ast::MemberExpr * >( expr ) ) {
    1243                 if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
    1244                         return memberExpr;
    1245                 }
    1246         } else if ( auto castExpr = dynamic_cast< const ast::CastExpr * >( expr ) ) {
    1247                 return isThisMemberExpr( castExpr->arg, thisParam );
    1248         }
    1249         return nullptr;
    1250 }
    1251 
    1252 void GenStructMemberCalls::previsit( const ast::ApplicationExpr * appExpr ) {
    1253         if ( ! checkWarnings( function ) ) {
    1254                 visit_children = false;
    1255                 return;
    1256         }
    1257 
    1258         std::string fname = getFunctionName( appExpr );
    1259         if ( fname == function->name ) {
    1260                 // call to same kind of function
    1261                 const ast::Expr * firstParam = appExpr->args.front();
    1262 
    1263                 if ( isThisExpression( firstParam, thisParam ) ) {
    1264                         // if calling another constructor on thisParam, assume that function handles
    1265                         // all members - if it doesn't a warning will appear in that function.
    1266                         unhandled.clear();
    1267                 } else if ( auto memberExpr = isThisMemberExpr( firstParam, thisParam ) ) {
    1268                         // if first parameter is a member expression on the this parameter,
    1269                         // then remove the member from unhandled set.
    1270                         if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
    1271                                 unhandled.erase( memberExpr->member );
    1272                         }
    1273                 }
    1274         }
    1275 }
    1276 
    1277 void GenStructMemberCalls::previsit( const ast::MemberExpr * memberExpr ) {
    1278         if ( ! checkWarnings( function ) || ! isCtor ) {
    1279                 visit_children = false;
    1280                 return;
    1281         }
    1282 
    1283         if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
    1284                 if ( unhandled.count( memberExpr->member ) ) {
    1285                         // emit a warning because a member was used before it was constructed
    1286                         usedUninit.insert( { memberExpr->member, memberExpr->location } );
    1287                 }
    1288         }
    1289 }
    1290 
    1291 template< typename... Params >
    1292 void GenStructMemberCalls::emit( CodeLocation loc, const Params &... params ) {
    1293         SemanticErrorException err( loc, toString( params... ) );
    1294         errors.append( err );
    1295 }
    1296 
    1297 const ast::Expr * GenStructMemberCalls::postvisit( const ast::UntypedExpr * untypedExpr ) {
    1298         // xxx - functions returning ast::ptr seems wrong...
    1299         auto res = ResolvExpr::findVoidExpression( untypedExpr, { symtab, transUnit().global } );
    1300         return res.release();
    1301 }
    1302 
    1303 void InsertImplicitCalls::previsit(const ast::UniqueExpr * unqExpr) {
    1304         if (visitedIds.count(unqExpr->id)) visit_children = false;
    1305         else visitedIds.insert(unqExpr->id);
    1306 }
    1307 
    1308 const ast::Expr * FixCtorExprs::postvisit( const ast::ConstructorExpr * ctorExpr ) {
    1309         const CodeLocation loc = ctorExpr->location;
    1310         static UniqueName tempNamer( "_tmp_ctor_expr" );
    1311         // xxx - is the size check necessary?
    1312         assert( ctorExpr->result && ctorExpr->result->size() == 1 );
    1313 
    1314         // xxx - this can be TupleAssignExpr now. Need to properly handle this case.
    1315         // take possession of expr and env
    1316         ast::ptr<ast::ApplicationExpr> callExpr = ctorExpr->callExpr.strict_as<ast::ApplicationExpr>();
    1317         ast::ptr<ast::TypeSubstitution> env = ctorExpr->env;
    1318         // ctorExpr->set_callExpr( nullptr );
    1319         // ctorExpr->set_env( nullptr );
    1320 
    1321         // 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.
    1322         auto tmp = new ast::ObjectDecl(loc, tempNamer.newName(), callExpr->args.front()->result );
    1323         declsToAddBefore.push_back( tmp );
    1324 
    1325         // build assignment and replace constructor's first argument with new temporary
    1326         auto mutCallExpr = callExpr.get_and_mutate();
    1327         const ast::Expr * firstArg = callExpr->args.front();
    1328         ast::Expr * assign = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ), { new ast::AddressExpr(loc, new ast::VariableExpr(loc, tmp ) ), new ast::AddressExpr( firstArg ) } );
    1329         firstArg = new ast::VariableExpr(loc, tmp );
    1330         mutCallExpr->args.front() = firstArg;
    1331 
    1332         // resolve assignment and dispose of new env
    1333         auto resolved = ResolvExpr::findVoidExpression( assign, { symtab, transUnit().global } );
    1334         auto mut = resolved.get_and_mutate();
    1335         assertf(resolved.get() == mut, "newly resolved expression must be unique");
    1336         mut->env = nullptr;
    1337 
    1338         // for constructor expr:
    1339         //   T x;
    1340         //   x{};
    1341         // results in:
    1342         //   T x;
    1343         //   T & tmp;
    1344         //   &tmp = &x, ?{}(tmp), tmp
    1345         ast::CommaExpr * commaExpr = new ast::CommaExpr(loc, resolved, new ast::CommaExpr(loc, mutCallExpr, new ast::VariableExpr(loc, tmp ) ) );
    1346         commaExpr->env = env;
    1347         return commaExpr;
    1348 }
    1349 
     72                return new ast::FunctionDecl( loc,
     73                        fname,
     74                        std::move(typeParams),
     75                        {dstParam},
     76                        {},
     77                        new ast::CompoundStmt(loc),
     78                        {},
     79                        ast::Linkage::Cforall
     80                );
     81        }
     82
     83        struct SelfAssignChecker {
     84                void previsit( const ast::ApplicationExpr * appExpr );
     85        };
     86
     87        struct StmtExprResult {
     88                const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
     89        };
     90
     91        /// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
     92        /// function calls need their parameters to be copy constructed
     93        struct InsertImplicitCalls : public ast::WithShortCircuiting {
     94                const ast::Expr * postvisit( const ast::ApplicationExpr * appExpr );
     95
     96                // only handles each UniqueExpr once
     97                // if order of visit does not change, this should be safe
     98                void previsit (const ast::UniqueExpr *);
     99
     100                std::unordered_set<decltype(ast::UniqueExpr::id)> visitedIds;
     101        };
     102
     103        /// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
     104        /// generate/resolve copy construction expressions for each, and generate/resolve destructors for both
     105        /// arguments and return value temporaries
     106        struct ResolveCopyCtors final : public ast::WithGuards, public ast::WithStmtsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithVisitorRef<ResolveCopyCtors>, public ast::WithConstTranslationUnit {
     107                const ast::Expr * postvisit( const ast::ImplicitCopyCtorExpr * impCpCtorExpr );
     108                const ast::StmtExpr * previsit( const ast::StmtExpr * stmtExpr );
     109                const ast::UniqueExpr * previsit( const ast::UniqueExpr * unqExpr );
     110
     111                /// handles distant mutations of environment manually.
     112                /// WithConstTypeSubstitution cannot remember where the environment is from
     113
     114                /// MUST be called at start of overload previsit
     115                void previsit( const ast::Expr * expr);
     116                /// MUST be called at return of overload postvisit
     117                const ast::Expr * postvisit(const ast::Expr * expr);
     118
     119                /// create and resolve ctor/dtor expression: fname(var, [cpArg])
     120                const ast::Expr * makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg = nullptr );
     121                /// true if type does not need to be copy constructed to ensure correctness
     122                bool skipCopyConstruct( const ast::Type * type );
     123                ast::ptr< ast::Expr > copyConstructArg( const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal );
     124                ast::Expr * destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg );
     125        private:
     126                /// hack to implement WithTypeSubstitution while conforming to mutation safety.
     127                ast::TypeSubstitution * env         = nullptr;
     128                bool                    envModified = false;
     129        };
     130
     131        /// collects constructed object decls - used as a base class
     132        struct ObjDeclCollector : public ast::WithGuards, public ast::WithShortCircuiting {
     133                // use ordered data structure to maintain ordering for set_difference and for consistent error messages
     134                typedef std::list< const ast::ObjectDecl * > ObjectSet;
     135                void previsit( const ast::CompoundStmt *compoundStmt );
     136                void previsit( const ast::DeclStmt *stmt );
     137
     138                // don't go into other functions
     139                void previsit( const ast::FunctionDecl * ) { visit_children = false; }
     140
     141        protected:
     142                ObjectSet curVars;
     143        };
     144
     145        // debug
     146        template<typename ObjectSet>
     147        struct PrintSet {
     148                PrintSet( const ObjectSet & objs ) : objs( objs ) {}
     149                const ObjectSet & objs;
     150        };
     151        template<typename ObjectSet>
     152        PrintSet<ObjectSet> printSet( const ObjectSet & objs ) { return PrintSet<ObjectSet>( objs ); }
     153        template<typename ObjectSet>
     154        std::ostream & operator<<( std::ostream & out, const PrintSet<ObjectSet> & set) {
     155                out << "{ ";
     156                for ( auto & obj : set.objs ) {
     157                        out << obj->name << ", " ;
     158                } // for
     159                out << " }";
     160                return out;
     161        }
     162
     163        struct LabelFinder final : public ObjDeclCollector {
     164                typedef std::map< std::string, ObjectSet > LabelMap;
     165                // map of Label -> live variables at that label
     166                LabelMap vars;
     167
     168                typedef ObjDeclCollector Parent;
     169                using Parent::previsit;
     170                void previsit( const ast::Stmt * stmt );
     171
     172                void previsit( const ast::CompoundStmt *compoundStmt );
     173                void previsit( const ast::DeclStmt *stmt );
     174        };
     175
     176        /// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
     177        /// (currently by FixInit)
     178        struct InsertDtors final : public ObjDeclCollector, public ast::WithStmtsToAdd<> {
     179                typedef std::list< ObjectDecl * > OrderedDecls;
     180                typedef std::list< OrderedDecls > OrderedDeclsStack;
     181
     182                InsertDtors( ast::Pass<LabelFinder> & finder ) : finder( finder ), labelVars( finder.core.vars ) {}
     183
     184                typedef ObjDeclCollector Parent;
     185                using Parent::previsit;
     186
     187                void previsit( const ast::FunctionDecl * funcDecl );
     188
     189                void previsit( const ast::BranchStmt * stmt );
     190        private:
     191                void handleGoto( const ast::BranchStmt * stmt );
     192
     193                ast::Pass<LabelFinder> & finder;
     194                LabelFinder::LabelMap & labelVars;
     195                OrderedDeclsStack reverseDeclOrder;
     196        };
     197
     198        /// expand each object declaration to use its constructor after it is declared.
     199        struct FixInit : public ast::WithStmtsToAdd<> {
     200                static void fixInitializers( ast::TranslationUnit &translationUnit );
     201
     202                const ast::DeclWithType * postvisit( const ast::ObjectDecl *objDecl );
     203
     204                std::list< ast::ptr< ast::Decl > > staticDtorDecls;
     205        };
     206
     207        /// generate default/copy ctor and dtor calls for user-defined struct ctor/dtors
     208        /// for any member that is missing a corresponding ctor/dtor call.
     209        /// error if a member is used before constructed
     210        struct GenStructMemberCalls final : public ast::WithGuards, public ast::WithShortCircuiting, public ast::WithSymbolTable, public ast::WithVisitorRef<GenStructMemberCalls>, public ast::WithConstTranslationUnit {
     211                void previsit( const ast::FunctionDecl * funcDecl );
     212                const ast::DeclWithType * postvisit( const ast::FunctionDecl * funcDecl );
     213
     214                void previsit( const ast::MemberExpr * memberExpr );
     215                void previsit( const ast::ApplicationExpr * appExpr );
     216
     217                /// Note: this post mutate used to be in a separate visitor. If this pass breaks, one place to examine is whether it is
     218                /// okay for this part of the recursion to occur alongside the rest.
     219                const ast::Expr * postvisit( const ast::UntypedExpr * expr );
     220
     221                SemanticErrorException errors;
     222        private:
     223                template< typename... Params >
     224                void emit( CodeLocation, const Params &... params );
     225
     226                ast::FunctionDecl * function = nullptr;
     227                std::set< const ast::DeclWithType * > unhandled;
     228                std::map< const ast::DeclWithType *, CodeLocation > usedUninit;
     229                const ast::ObjectDecl * thisParam = nullptr;
     230                bool isCtor = false; // true if current function is a constructor
     231                const ast::StructDecl * structDecl = nullptr;
     232        };
     233
     234        /// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
     235        struct FixCtorExprs final : public ast::WithDeclsToAdd<>, public ast::WithSymbolTable, public ast::WithShortCircuiting, public ast::WithConstTranslationUnit {
     236                const ast::Expr * postvisit( const ast::ConstructorExpr * ctorExpr );
     237        };
     238
     239        /// add CompoundStmts around top-level expressions so that temporaries are destroyed in the correct places.
     240        struct SplitExpressions : public ast::WithShortCircuiting {
     241                ast::Stmt * postvisit( const ast::ExprStmt * stmt );
     242                void previsit( const ast::TupleAssignExpr * expr );
     243        };
    1350244} // namespace
    1351245
     
    1380274}
    1381275
     276namespace {
     277        /// find and return the destructor used in `input`. If `input` is not a simple destructor call, generate a thunk
     278        /// that wraps the destructor, insert it into `stmtsToAdd` and return the new function declaration
     279        const ast::DeclWithType * getDtorFunc( const ast::ObjectDecl * objDecl, const ast::Stmt * input, std::list< ast::ptr<ast::Stmt> > & stmtsToAdd ) {
     280                const CodeLocation loc = input->location;
     281                // unwrap implicit statement wrapper
     282                // Statement * dtor = input;
     283                assert( input );
     284                // std::list< const ast::Expr * > matches;
     285                auto matches = collectCtorDtorCalls( input );
     286
     287                if ( dynamic_cast< const ast::ExprStmt * >( input ) ) {
     288                        // only one destructor call in the expression
     289                        if ( matches.size() == 1 ) {
     290                                auto func = getFunction( matches.front() );
     291                                assertf( func, "getFunction failed to find function in %s", toString( matches.front() ).c_str() );
     292
     293                                // cleanup argument must be a function, not an object (including function pointer)
     294                                if ( auto dtorFunc = dynamic_cast< const ast::FunctionDecl * > ( func ) ) {
     295                                        if ( dtorFunc->type->forall.empty() ) {
     296                                                // simple case where the destructor is a monomorphic function call - can simply
     297                                                // use that function as the cleanup function.
     298                                                return func;
     299                                        }
     300                                }
     301                        }
     302                }
     303
     304                // otherwise the cleanup is more complicated - need to build a single argument cleanup function that
     305                // wraps the more complicated code.
     306                static UniqueName dtorNamer( "__cleanup_dtor" );
     307                std::string name = dtorNamer.newName();
     308                ast::FunctionDecl * dtorFunc = genDefaultFunc( loc, name, objDecl->type->stripReferences(), false );
     309                stmtsToAdd.push_back( new ast::DeclStmt(loc, dtorFunc ) );
     310
     311                // the original code contains uses of objDecl - replace them with the newly generated 'this' parameter.
     312                const ast::ObjectDecl * thisParam = getParamThis( dtorFunc );
     313                const ast::Expr * replacement = new ast::VariableExpr( loc, thisParam );
     314
     315                auto base = replacement->result->stripReferences();
     316                if ( dynamic_cast< const ast::ArrayType * >( base ) || dynamic_cast< const ast::TupleType * > ( base ) ) {
     317                        // need to cast away reference for array types, since the destructor is generated without the reference type,
     318                        // and for tuple types since tuple indexing does not work directly on a reference
     319                        replacement = new ast::CastExpr( replacement, base );
     320                }
     321                auto dtor = ast::DeclReplacer::replace( input, ast::DeclReplacer::ExprMap{ std::make_pair( objDecl, replacement ) } );
     322                auto mutStmts = dtorFunc->stmts.get_and_mutate();
     323                mutStmts->push_back(strict_dynamic_cast<const ast::Stmt *>( dtor ));
     324                dtorFunc->stmts = mutStmts;
     325
     326                return dtorFunc;
     327        }
     328
     329        void FixInit::fixInitializers( ast::TranslationUnit & translationUnit ) {
     330                ast::Pass<FixInit> fixer;
     331
     332                // can't use mutateAll, because need to insert declarations at top-level
     333                // can't use DeclMutator, because sometimes need to insert IfStmt, etc.
     334                SemanticErrorException errors;
     335                for ( auto i = translationUnit.decls.begin(); i != translationUnit.decls.end(); ++i ) {
     336                        try {
     337                                // maybeAccept( *i, fixer ); translationUnit should never contain null
     338                                *i = (*i)->accept(fixer);
     339                                translationUnit.decls.splice( i, fixer.core.staticDtorDecls );
     340                        } catch( SemanticErrorException &e ) {
     341                                errors.append( e );
     342                        } // try
     343                } // for
     344                if ( ! errors.isEmpty() ) {
     345                        throw errors;
     346                } // if
     347        }
     348
     349        const ast::StmtExpr * StmtExprResult::previsit( const ast::StmtExpr * stmtExpr ) {
     350                // we might loose the result expression here so add a pointer to trace back
     351                assert( stmtExpr->result );
     352                const ast::Type * result = stmtExpr->result;
     353                if ( ! result->isVoid() ) {
     354                        auto mutExpr = mutate(stmtExpr);
     355                        const ast::CompoundStmt * body = mutExpr->stmts;
     356                        assert( ! body->kids.empty() );
     357                        mutExpr->resultExpr = body->kids.back().strict_as<ast::ExprStmt>();
     358                        return mutExpr;
     359                }
     360                return stmtExpr;
     361        }
     362
     363        ast::Stmt * SplitExpressions::postvisit( const ast::ExprStmt * stmt ) {
     364                // wrap each top-level ExprStmt in a block so that destructors for argument and return temporaries are destroyed
     365                // in the correct places
     366                ast::CompoundStmt * ret = new ast::CompoundStmt( stmt->location, { stmt } );
     367                return ret;
     368        }
     369
     370        void SplitExpressions::previsit( const ast::TupleAssignExpr * ) {
     371                // don't do this within TupleAssignExpr, since it is already broken up into multiple expressions
     372                visit_children = false;
     373        }
     374
     375        // Relatively simple structural comparison for expressions, needed to determine
     376        // if two expressions are "the same" (used to determine if self assignment occurs)
     377        struct StructuralChecker {
     378                // Strip all casts and then dynamic_cast.
     379                template<typename T>
     380                static const T * cast( const ast::Expr * expr ) {
     381                        // this might be too permissive. It's possible that only particular casts are relevant.
     382                        while ( auto cast = dynamic_cast< const ast::CastExpr * >( expr ) ) {
     383                                expr = cast->arg;
     384                        }
     385                        return dynamic_cast< const T * >( expr );
     386                }
     387
     388                void previsit( const ast::Expr * ) {
     389                        // anything else does not qualify
     390                        result = false;
     391                }
     392
     393                // ignore casts
     394                void previsit( const ast::CastExpr * ) {}
     395
     396                void previsit( const ast::MemberExpr * memExpr ) {
     397                        if ( auto otherMember = cast< ast::MemberExpr >( other ) ) {
     398                                if ( otherMember->member == memExpr->member ) {
     399                                        other = otherMember->aggregate;
     400                                        return;
     401                                }
     402                        }
     403                        result = false;
     404                }
     405
     406                void previsit( const ast::VariableExpr * varExpr ) {
     407                        if ( auto otherVar = cast< ast::VariableExpr >( other ) ) {
     408                                if ( otherVar->var == varExpr->var ) {
     409                                        return;
     410                                }
     411                        }
     412                        result = false;
     413                }
     414
     415                void previsit( const ast::AddressExpr * ) {
     416                        if ( auto addrExpr = cast< ast::AddressExpr >( other ) ) {
     417                                other = addrExpr->arg;
     418                                return;
     419                        }
     420                        result = false;
     421                }
     422
     423                const ast::Expr * other;
     424                bool result = true;
     425                StructuralChecker( const ast::Expr * other ) : other(other) {}
     426        };
     427
     428        bool structurallySimilar( const ast::Expr * e1, const ast::Expr * e2 ) {
     429                return ast::Pass<StructuralChecker>::read( e1, e2 );
     430        }
     431
     432        void SelfAssignChecker::previsit( const ast::ApplicationExpr * appExpr ) {
     433                auto function = getFunction( appExpr );
     434                // Doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment.
     435                if ( function->name == "?=?" && appExpr->args.size() == 2
     436                                // Check for structural similarity (same variable use, ignore casts, etc.
     437                                // (but does not look too deeply, anything looking like a function is off limits).
     438                                && structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
     439                        SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
     440                }
     441        }
     442
     443        const ast::Expr * InsertImplicitCalls::postvisit( const ast::ApplicationExpr * appExpr ) {
     444                if ( auto function = appExpr->func.as<ast::VariableExpr>() ) {
     445                        if ( function->var->linkage.is_builtin ) {
     446                                // optimization: don't need to copy construct in order to call intrinsic functions
     447                                return appExpr;
     448                        } else if ( auto funcDecl = function->var.as<ast::DeclWithType>() ) {
     449                                auto ftype = dynamic_cast< const ast::FunctionType * >( GenPoly::getFunctionType( funcDecl->get_type() ) );
     450                                assertf( ftype, "Function call without function type: %s", toString( funcDecl ).c_str() );
     451                                if ( CodeGen::isConstructor( funcDecl->name ) && ftype->params.size() == 2 ) {
     452                                        auto t1 = getPointerBase( ftype->params.front() );
     453                                        auto t2 = ftype->params.back();
     454                                        assert( t1 );
     455
     456                                        if ( ResolvExpr::typesCompatible( t1, t2 ) ) {
     457                                                // optimization: don't need to copy construct in order to call a copy constructor
     458                                                return appExpr;
     459                                        } // if
     460                                } else if ( CodeGen::isDestructor( funcDecl->name ) ) {
     461                                        // correctness: never copy construct arguments to a destructor
     462                                        return appExpr;
     463                                } // if
     464                        } // if
     465                } // if
     466                CP_CTOR_PRINT( std::cerr << "InsertImplicitCalls: adding a wrapper " << appExpr << std::endl; )
     467
     468                // wrap each function call so that it is easy to identify nodes that have to be copy constructed
     469                ast::ptr<ast::TypeSubstitution> tmp = appExpr->env;
     470                auto mutExpr = mutate(appExpr);
     471                mutExpr->env = nullptr;
     472
     473                auto expr = new ast::ImplicitCopyCtorExpr( appExpr->location, mutExpr );
     474                // Move the type substitution to the new top-level. The substitution
     475                // is needed to obtain the type of temporary variables so that copy
     476                // constructor calls can be resolved.
     477                expr->env = tmp;
     478                return expr;
     479        }
     480
     481        void ResolveCopyCtors::previsit(const ast::Expr * expr) {
     482                if ( nullptr == expr->env ) {
     483                        return;
     484                }
     485                GuardValue( env ) = expr->env->clone();
     486                GuardValue( envModified ) = false;
     487        }
     488
     489        const ast::Expr * ResolveCopyCtors::postvisit(const ast::Expr * expr) {
     490                // No local environment, skip.
     491                if ( nullptr == expr->env ) {
     492                        return expr;
     493                // Environment was modified, mutate and replace.
     494                } else if ( envModified ) {
     495                        auto mutExpr = mutate(expr);
     496                        mutExpr->env = env;
     497                        return mutExpr;
     498                // Environment was not mutated, delete the shallow copy before guard.
     499                } else {
     500                        delete env;
     501                        return expr;
     502                }
     503        }
     504
     505        bool ResolveCopyCtors::skipCopyConstruct( const ast::Type * type ) { return ! isConstructable( type ); }
     506
     507        const ast::Expr * ResolveCopyCtors::makeCtorDtor( const std::string & fname, const ast::ObjectDecl * var, const ast::Expr * cpArg ) {
     508                assert( var );
     509                assert( var->isManaged() );
     510                assert( !cpArg || cpArg->isManaged() );
     511                // arrays are not copy constructed, so this should always be an ExprStmt
     512                ast::ptr< ast::Stmt > stmt = genCtorDtor(var->location, fname, var, cpArg );
     513                assertf( stmt, "ResolveCopyCtors: genCtorDtor returned nullptr: %s / %s / %s", fname.c_str(), toString( var ).c_str(), toString( cpArg ).c_str() );
     514                auto exprStmt = stmt.strict_as<ast::ImplicitCtorDtorStmt>()->callStmt.strict_as<ast::ExprStmt>();
     515                ast::ptr<ast::Expr> untyped = exprStmt->expr; // take ownership of expr
     516
     517                // resolve copy constructor
     518                // should only be one alternative for copy ctor and dtor expressions, since all arguments are fixed
     519                // (VariableExpr and already resolved expression)
     520                CP_CTOR_PRINT( std::cerr << "ResolvingCtorDtor " << untyped << std::endl; )
     521                ast::ptr<ast::Expr> resolved = ResolvExpr::findVoidExpression(untyped, { symtab, transUnit().global } );
     522                assert( resolved );
     523                if ( resolved->env ) {
     524                        // Extract useful information and discard new environments. Keeping them causes problems in PolyMutator passes.
     525                        env->add( *resolved->env );
     526                        envModified = true;
     527                        auto mut = mutate(resolved.get());
     528                        assertf(mut == resolved.get(), "newly resolved expression must be unique");
     529                        mut->env = nullptr;
     530                } // if
     531                if ( auto assign = resolved.as<ast::TupleAssignExpr>() ) {
     532                        // fix newly generated StmtExpr
     533                        previsit( assign->stmtExpr );
     534                }
     535                return resolved.release();
     536        }
     537
     538        ast::ptr<ast::Expr> ResolveCopyCtors::copyConstructArg(
     539                const ast::Expr * arg, const ast::ImplicitCopyCtorExpr * impCpCtorExpr, const ast::Type * formal )
     540        {
     541                static UniqueName tempNamer("_tmp_cp");
     542                const CodeLocation loc = impCpCtorExpr->location;
     543                // CP_CTOR_PRINT( std::cerr << "Type Substitution: " << *env << std::endl; )
     544                assert( arg->result );
     545                ast::ptr<ast::Type> result = arg->result;
     546                if ( skipCopyConstruct( result ) ) return arg; // skip certain non-copyable types
     547
     548                // type may involve type variables, so apply type substitution to get temporary variable's actual type,
     549                // since result type may not be substituted (e.g., if the type does not appear in the parameter list)
     550                // Use applyFree so that types bound in function pointers are not substituted, e.g. in forall(dtype T) void (*)(T).
     551
     552                // xxx - this originally mutates arg->result in place. is it correct?
     553                assert( env );
     554                result = env->applyFree( result.get() ).node;
     555                auto mutResult = result.get_and_mutate();
     556                mutResult->set_const(false);
     557
     558                auto mutArg = mutate(arg);
     559                mutArg->result = mutResult;
     560
     561                ast::ptr<ast::Expr> guard = mutArg;
     562
     563                ast::ptr<ast::ObjectDecl> tmp = new ast::ObjectDecl(loc, "__tmp", mutResult, nullptr );
     564
     565                // create and resolve copy constructor
     566                CP_CTOR_PRINT( std::cerr << "makeCtorDtor for an argument" << std::endl; )
     567                auto cpCtor = makeCtorDtor( "?{}", tmp, mutArg );
     568
     569                if ( auto appExpr = dynamic_cast< const ast::ApplicationExpr * >( cpCtor ) ) {
     570                        // if the chosen constructor is intrinsic, the copy is unnecessary, so
     571                        // don't create the temporary and don't call the copy constructor
     572                        auto function = appExpr->func.strict_as<ast::VariableExpr>();
     573                        if ( function->var->linkage == ast::Linkage::Intrinsic ) {
     574                                // arguments that need to be boxed need a temporary regardless of whether the copy constructor is intrinsic,
     575                                // so that the object isn't changed inside of the polymorphic function
     576                                if ( ! GenPoly::needsBoxing( formal, result, impCpCtorExpr->callExpr, env ) ) {
     577                                        // xxx - should arg->result be mutated? see comment above.
     578                                        return guard;
     579                                }
     580                        }
     581                }
     582
     583                // set a unique name for the temporary once it's certain the call is necessary
     584                auto mut = tmp.get_and_mutate();
     585                assertf (mut == tmp, "newly created ObjectDecl must be unique");
     586                mut->name = tempNamer.newName();
     587
     588                // replace argument to function call with temporary
     589                stmtsToAddBefore.push_back( new ast::DeclStmt(loc, tmp ) );
     590                arg = cpCtor;
     591                return destructRet( tmp, arg );
     592
     593                // impCpCtorExpr->dtors.push_front( makeCtorDtor( "^?{}", tmp ) );
     594        }
     595
     596        ast::Expr * ResolveCopyCtors::destructRet( const ast::ObjectDecl * ret, const ast::Expr * arg ) {
     597                auto global = transUnit().global;
     598                // TODO: refactor code for generating cleanup attribute, since it's common and reused in ~3-4 places
     599                // check for existing cleanup attribute before adding another(?)
     600                // need to add __Destructor for _tmp_cp variables as well
     601
     602                assertf( global.dtorStruct, "Destructor generation requires __Destructor definition." );
     603                assertf( global.dtorStruct->members.size() == 2, "__Destructor definition does not have expected fields." );
     604                assertf( global.dtorDestroy, "Destructor generation requires __destroy_Destructor." );
     605
     606                const CodeLocation loc = ret->location;
     607
     608                // generate a __Destructor for ret that calls the destructor
     609                auto res = makeCtorDtor( "^?{}", ret );
     610                auto dtor = mutate(res);
     611
     612                // if the chosen destructor is intrinsic, elide the generated dtor handler
     613                if ( arg && isIntrinsicCallExpr( dtor ) ) {
     614                        return new ast::CommaExpr(loc, arg, new ast::VariableExpr(loc, ret ) );
     615                }
     616
     617                if ( ! dtor->env ) dtor->env = maybeClone( env );
     618                auto dtorFunc = getDtorFunc( ret, new ast::ExprStmt(loc, dtor ), stmtsToAddBefore );
     619
     620                auto dtorStructType = new ast::StructInstType( global.dtorStruct );
     621
     622                // what does this do???
     623                dtorStructType->params.push_back( new ast::TypeExpr(loc, new ast::VoidType() ) );
     624
     625                // cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
     626                auto dtorFtype = new ast::FunctionType();
     627                dtorFtype->params.push_back( new ast::PointerType(new ast::VoidType( ) ) );
     628                auto dtorType = new ast::PointerType( dtorFtype );
     629
     630                static UniqueName namer( "_ret_dtor" );
     631                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 ) ) } ) );
     632                retDtor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, global.dtorDestroy ) } ) );
     633                stmtsToAddBefore.push_back( new ast::DeclStmt(loc, retDtor ) );
     634
     635                if ( arg ) {
     636                        auto member = new ast::MemberExpr(loc, global.dtorStruct->members.front().strict_as<ast::DeclWithType>(), new ast::VariableExpr(loc, retDtor ) );
     637                        auto object = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, ret ) ), new ast::PointerType(new ast::VoidType() ) );
     638                        ast::Expr * assign = createBitwiseAssignment( member, object );
     639                        return new ast::CommaExpr(loc, new ast::CommaExpr(loc, arg, assign ), new ast::VariableExpr(loc, ret ) );
     640                }
     641                return nullptr;
     642                // impCpCtorExpr->get_dtors().push_front( makeCtorDtor( "^?{}", ret ) );
     643        }
     644
     645        const ast::Expr * ResolveCopyCtors::postvisit( const ast::ImplicitCopyCtorExpr *impCpCtorExpr ) {
     646                CP_CTOR_PRINT( std::cerr << "ResolveCopyCtors: " << impCpCtorExpr << std::endl; )
     647
     648                ast::ApplicationExpr * appExpr = mutate(impCpCtorExpr->callExpr.get());
     649                const ast::ObjectDecl * returnDecl = nullptr;
     650                const CodeLocation loc = appExpr->location;
     651
     652                // take each argument and attempt to copy construct it.
     653                auto ftype = GenPoly::getFunctionType( appExpr->func->result );
     654                assert( ftype );
     655                auto & params = ftype->params;
     656                auto iter = params.begin();
     657                for ( auto & arg : appExpr->args ) {
     658                        const ast::Type * formal = nullptr;
     659                        if ( iter != params.end() ) { // does not copy construct C-style variadic arguments
     660                                // DeclarationWithType * param = *iter++;
     661                                formal = *iter++;
     662                        }
     663
     664                        arg = copyConstructArg( arg, impCpCtorExpr, formal );
     665                } // for
     666
     667                // each return value from the call needs to be connected with an ObjectDecl at the call site, which is
     668                // initialized with the return value and is destructed later
     669                // xxx - handle named return values?
     670                const ast::Type * result = appExpr->result;
     671                if ( ! result->isVoid() ) {
     672                        static UniqueName retNamer("_tmp_cp_ret");
     673                        auto subResult = env->apply( result ).node;
     674                        auto ret = new ast::ObjectDecl(loc, retNamer.newName(), subResult, nullptr );
     675                        auto mutType = mutate(ret->type.get());
     676                        mutType->set_const( false );
     677                        ret->type = mutType;
     678                        returnDecl = ret;
     679                        stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
     680                        CP_CTOR_PRINT( std::cerr << "makeCtorDtor for a return" << std::endl; )
     681                } // for
     682                CP_CTOR_PRINT( std::cerr << "after Resolving: " << impCpCtorExpr << std::endl; )
     683                // ------------------------------------------------------
     684
     685                CP_CTOR_PRINT( std::cerr << "Coming out the back..." << impCpCtorExpr << std::endl; )
     686
     687                // detach fields from wrapper node so that it can be deleted without deleting too much
     688
     689                // xxx - actual env might be somewhere else, need to keep invariant
     690
     691                // deletion of wrapper should be handled by pass template now
     692
     693                // impCpCtorExpr->callExpr = nullptr;
     694                assert (appExpr->env == nullptr);
     695                appExpr->env = impCpCtorExpr->env;
     696                // std::swap( impCpCtorExpr->env, appExpr->env );
     697                // assert( impCpCtorExpr->env == nullptr );
     698                // delete impCpCtorExpr;
     699
     700                if ( returnDecl ) {
     701                        ast::Expr * assign = createBitwiseAssignment( new ast::VariableExpr(loc, returnDecl ), appExpr );
     702                        if ( ! dynamic_cast< const ast::ReferenceType * >( result ) ) {
     703                                // destructing reference returns is bad because it can cause multiple destructor calls to the same object - the returned object is not a temporary
     704                                assign = destructRet( returnDecl, assign );
     705                                assert(assign);
     706                        } else {
     707                                assign = new ast::CommaExpr(loc, assign, new ast::VariableExpr(loc, returnDecl ) );
     708                        }
     709                        // move env from appExpr to retExpr
     710                        // std::swap( assign->env, appExpr->env );
     711                        assign->env = appExpr->env;
     712                        // actual env is handled by common routine that replaces WithTypeSubstitution
     713                        return postvisit((const ast::Expr *)assign);
     714                } else {
     715                        return postvisit((const ast::Expr *)appExpr);
     716                } // if
     717        }
     718
     719        const ast::StmtExpr * ResolveCopyCtors::previsit( const ast::StmtExpr * _stmtExpr ) {
     720                // function call temporaries should be placed at statement-level, rather than nested inside of a new statement expression,
     721                // since temporaries can be shared across sub-expressions, e.g.
     722                //   [A, A] f();       // decl
     723                //   g([A] x, [A] y);  // decl
     724                //   g(f());           // call
     725                // f is executed once, so the return temporary is shared across the tuple constructors for x and y.
     726                // Explicitly mutating children instead of mutating the inner compound statement forces the temporaries to be added
     727                // to the outer context, rather than inside of the statement expression.
     728
     729                // call the common routine that replaces WithTypeSubstitution
     730                previsit((const ast::Expr *) _stmtExpr);
     731
     732                visit_children = false;
     733                const CodeLocation loc = _stmtExpr->location;
     734
     735                assert( env );
     736
     737                symtab.enterScope();
     738                // visit all statements
     739                auto stmtExpr = mutate(_stmtExpr);
     740                auto mutStmts = mutate(stmtExpr->stmts.get());
     741
     742                auto & stmts = mutStmts->kids;
     743                for ( auto & stmt : stmts ) {
     744                        stmt = stmt->accept( *visitor );
     745                } // for
     746                stmtExpr->stmts = mutStmts;
     747                symtab.leaveScope();
     748
     749                assert( stmtExpr->result );
     750                // const ast::Type * result = stmtExpr->result;
     751                if ( ! stmtExpr->result->isVoid() ) {
     752                        static UniqueName retNamer("_tmp_stmtexpr_ret");
     753
     754                        // result = result->clone();
     755                        auto result = env->apply( stmtExpr->result.get() ).node;
     756                        if ( ! InitTweak::isConstructable( result ) ) {
     757                                // delete result;
     758                                return stmtExpr;
     759                        }
     760                        auto mutResult = result.get_and_mutate();
     761                        mutResult->set_const(false);
     762
     763                        // create variable that will hold the result of the stmt expr
     764                        auto ret = new ast::ObjectDecl(loc, retNamer.newName(), mutResult, nullptr );
     765                        stmtsToAddBefore.push_back( new ast::DeclStmt(loc, ret ) );
     766
     767                        assertf(
     768                                stmtExpr->resultExpr,
     769                                "Statement-Expression should have a resulting expression at %s:%d",
     770                                stmtExpr->location.filename.c_str(),
     771                                stmtExpr->location.first_line
     772                        );
     773
     774                        const ast::ExprStmt * last = stmtExpr->resultExpr;
     775                        // xxx - if this is non-unique, need to copy while making resultExpr ref
     776                        assertf(last->unique(), "attempt to modify weakly shared statement");
     777                        auto mutLast = mutate(last);
     778                        // above assertion means in-place mutation is OK
     779                        try {
     780                                mutLast->expr = makeCtorDtor( "?{}", ret, mutLast->expr );
     781                        } catch(...) {
     782                                std::cerr << "*CFA internal error: ";
     783                                std::cerr << "can't resolve implicit constructor";
     784                                std::cerr << " at " << stmtExpr->location.filename;
     785                                std::cerr << ":" << stmtExpr->location.first_line << std::endl;
     786
     787                                abort();
     788                        }
     789
     790                        // add destructors after current statement
     791                        stmtsToAddAfter.push_back( new ast::ExprStmt(loc, makeCtorDtor( "^?{}", ret ) ) );
     792
     793                        // must have a non-empty body, otherwise it wouldn't have a result
     794                        assert( ! stmts.empty() );
     795
     796                        // if there is a return decl, add a use as the last statement; will not have return decl on non-constructable returns
     797                        stmts.push_back( new ast::ExprStmt(loc, new ast::VariableExpr(loc, ret ) ) );
     798                } // if
     799
     800                assert( stmtExpr->returnDecls.empty() );
     801                assert( stmtExpr->dtors.empty() );
     802
     803                return stmtExpr;
     804        }
     805
     806        // to prevent warnings ('_unq0' may be used uninitialized in this function),
     807        // insert an appropriate zero initializer for UniqueExpr temporaries.
     808        ast::Init * makeInit( const ast::Type * t, CodeLocation const & loc ) {
     809                if ( auto inst = dynamic_cast< const ast::StructInstType * >( t ) ) {
     810                        // initizer for empty struct must be empty
     811                        if ( inst->base->members.empty() ) {
     812                                return new ast::ListInit( loc, {} );
     813                        }
     814                } else if ( auto inst = dynamic_cast< const ast::UnionInstType * >( t ) ) {
     815                        // initizer for empty union must be empty
     816                        if ( inst->base->members.empty() ) {
     817                                return new ast::ListInit( loc, {} );
     818                        }
     819                }
     820
     821                return new ast::ListInit( loc, {
     822                        new ast::SingleInit( loc, ast::ConstantExpr::from_int( loc, 0 ) )
     823                } );
     824        }
     825
     826        const ast::UniqueExpr * ResolveCopyCtors::previsit( const ast::UniqueExpr * unqExpr ) {
     827                visit_children = false;
     828                // xxx - hack to prevent double-handling of unique exprs, otherwise too many temporary variables and destructors are generated
     829                static std::unordered_map< int, const ast::UniqueExpr * > unqMap;
     830                auto mutExpr = mutate(unqExpr);
     831                if ( ! unqMap.count( unqExpr->id ) ) {
     832                        // resolve expr and find its
     833
     834                        auto impCpCtorExpr = mutExpr->expr.as<ast::ImplicitCopyCtorExpr>();
     835                        // PassVisitor<ResolveCopyCtors> fixer;
     836
     837                        mutExpr->expr = mutExpr->expr->accept( *visitor );
     838                        // it should never be necessary to wrap a void-returning expression in a UniqueExpr - if this assumption changes, this needs to be rethought
     839                        assert( unqExpr->result );
     840                        if ( impCpCtorExpr ) {
     841                                auto comma = unqExpr->expr.strict_as<ast::CommaExpr>();
     842                                auto var = comma->arg2.strict_as<ast::VariableExpr>();
     843                                // note the variable used as the result from the call
     844                                mutExpr->var = var;
     845                        } else {
     846                                // expr isn't a call expr, so create a new temporary variable to use to hold the value of the unique expression
     847                                mutExpr->object = new ast::ObjectDecl( mutExpr->location, toString("_unq", mutExpr->id), mutExpr->result, makeInit( mutExpr->result, mutExpr->location ) );
     848                                mutExpr->var = new ast::VariableExpr( mutExpr->location, mutExpr->object );
     849                        }
     850
     851                        unqMap[mutExpr->id] = mutExpr;
     852                } else {
     853                        // take data from other UniqueExpr to ensure consistency
     854                        // delete unqExpr->get_expr();
     855                        mutExpr->expr = unqMap[mutExpr->id]->expr;
     856                        // delete unqExpr->result;
     857                        mutExpr->result = mutExpr->expr->result;
     858                }
     859                return mutExpr;
     860        }
     861
     862        const ast::DeclWithType * FixInit::postvisit( const ast::ObjectDecl *_objDecl ) {
     863                const CodeLocation loc = _objDecl->location;
     864
     865                // since this removes the init field from objDecl, it must occur after children are mutated (i.e. postvisit)
     866                if ( ast::ptr<ast::ConstructorInit> ctorInit = _objDecl->init.as<ast::ConstructorInit>() ) {
     867                        auto objDecl = mutate(_objDecl);
     868
     869                        // could this be non-unique?
     870                        if (objDecl != _objDecl) {
     871                                std::cerr << "FixInit: non-unique object decl " << objDecl->location << objDecl->name << std::endl;
     872                        }
     873                        // a decision should have been made by the resolver, so ctor and init are not both non-NULL
     874                        assert( ! ctorInit->ctor || ! ctorInit->init );
     875                        if ( const ast::Stmt * ctor = ctorInit->ctor ) {
     876                                if ( objDecl->storage.is_static ) {
     877                                        addDataSectionAttribute(objDecl);
     878                                        // originally wanted to take advantage of gcc nested functions, but
     879                                        // we get memory errors with this approach. To remedy this, the static
     880                                        // variable is hoisted when the destructor needs to be called.
     881                                        //
     882                                        // generate:
     883                                        // static T __objName_static_varN;
     884                                        // void __objName_dtor_atexitN() {
     885                                        //   __dtor__...;
     886                                        // }
     887                                        // int f(...) {
     888                                        //   ...
     889                                        //   static bool __objName_uninitialized = true;
     890                                        //   if (__objName_uninitialized) {
     891                                        //     __ctor(__objName);
     892                                        //     __objName_uninitialized = false;
     893                                        //     atexit(__objName_dtor_atexitN);
     894                                        //   }
     895                                        //   ...
     896                                        // }
     897
     898                                        static UniqueName dtorCallerNamer( "_dtor_atexit" );
     899
     900                                        // static bool __objName_uninitialized = true
     901                                        auto boolType = new ast::BasicType( ast::BasicType::Kind::Bool );
     902                                        auto boolInitExpr = new ast::SingleInit(loc, ast::ConstantExpr::from_int(loc, 1 ) );
     903                                        auto isUninitializedVar = new ast::ObjectDecl(loc, objDecl->mangleName + "_uninitialized", boolType, boolInitExpr, ast::Storage::Static, ast::Linkage::Cforall);
     904                                        isUninitializedVar->fixUniqueId();
     905
     906                                        // __objName_uninitialized = false;
     907                                        auto setTrue = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ) );
     908                                        setTrue->args.push_back( new ast::VariableExpr(loc, isUninitializedVar ) );
     909                                        setTrue->args.push_back( ast::ConstantExpr::from_int(loc, 0 ) );
     910
     911                                        // generate body of if
     912                                        auto initStmts = new ast::CompoundStmt(loc);
     913                                        auto & body = initStmts->kids;
     914                                        body.push_back( ctor );
     915                                        body.push_back( new ast::ExprStmt(loc, setTrue ) );
     916
     917                                        // put it all together
     918                                        auto ifStmt = new ast::IfStmt(loc, new ast::VariableExpr(loc, isUninitializedVar ), initStmts, 0 );
     919                                        stmtsToAddAfter.push_back( new ast::DeclStmt(loc, isUninitializedVar ) );
     920                                        stmtsToAddAfter.push_back( ifStmt );
     921
     922                                        const ast::Stmt * dtor = ctorInit->dtor;
     923
     924                                        // these should be automatically managed once reassigned
     925                                        // objDecl->set_init( nullptr );
     926                                        // ctorInit->set_ctor( nullptr );
     927                                        // ctorInit->set_dtor( nullptr );
     928                                        if ( dtor ) {
     929                                                // if the object has a non-trivial destructor, have to
     930                                                // hoist it and the object into the global space and
     931                                                // call the destructor function with atexit.
     932
     933                                                // Statement * dtorStmt = dtor->clone();
     934
     935                                                // void __objName_dtor_atexitN(...) {...}
     936                                                ast::FunctionDecl * dtorCaller = new ast::FunctionDecl(loc, objDecl->mangleName + dtorCallerNamer.newName(), {}, {}, {}, new ast::CompoundStmt(loc, {dtor}), ast::Storage::Static, ast::Linkage::C );
     937                                                dtorCaller->fixUniqueId();
     938                                                // dtorCaller->stmts->push_back( dtor );
     939
     940                                                // atexit(dtor_atexit);
     941                                                auto callAtexit = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "atexit" ) );
     942                                                callAtexit->args.push_back( new ast::VariableExpr(loc, dtorCaller ) );
     943
     944                                                body.push_back( new ast::ExprStmt(loc, callAtexit ) );
     945
     946                                                // hoist variable and dtor caller decls to list of decls that will be added into global scope
     947                                                staticDtorDecls.push_back( objDecl );
     948                                                staticDtorDecls.push_back( dtorCaller );
     949
     950                                                // need to rename object uniquely since it now appears
     951                                                // at global scope and there could be multiple function-scoped
     952                                                // static variables with the same name in different functions.
     953                                                // Note: it isn't sufficient to modify only the mangleName, because
     954                                                // then subsequent Indexer passes can choke on seeing the object's name
     955                                                // if another object has the same name and type. An unfortunate side-effect
     956                                                // of renaming the object is that subsequent NameExprs may fail to resolve,
     957                                                // but there shouldn't be any remaining past this point.
     958                                                static UniqueName staticNamer( "_static_var" );
     959                                                objDecl->name = objDecl->name + staticNamer.newName();
     960                                                objDecl->mangleName = Mangle::mangle( objDecl );
     961                                                objDecl->init = nullptr;
     962
     963                                                // xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope
     964                                                // create a new object which is never used
     965                                                static UniqueName dummyNamer( "_dummy" );
     966                                                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") } );
     967                                                // delete ctorInit;
     968                                                return dummy;
     969                                        } else {
     970                                                objDecl->init = nullptr;
     971                                                return objDecl;
     972                                        }
     973                                } else {
     974                                        auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * > ( ctor );
     975                                        auto ctorStmt = implicit->callStmt.as<ast::ExprStmt>();
     976                                        const ast::ApplicationExpr * ctorCall = nullptr;
     977                                        if ( ctorStmt && (ctorCall = isIntrinsicCallExpr( ctorStmt->expr )) && ctorCall->args.size() == 2 ) {
     978                                                // clean up intrinsic copy constructor calls by making them into SingleInits
     979                                                const ast::Expr * ctorArg = ctorCall->args.back();
     980                                                // ctorCall should be gone afterwards
     981                                                auto mutArg = mutate(ctorArg);
     982                                                mutArg->env = ctorCall->env;
     983                                                // std::swap( ctorArg->env, ctorCall->env );
     984                                                objDecl->init = new ast::SingleInit(loc, mutArg );
     985
     986                                                // ctorCall->args.pop_back();
     987                                        } else {
     988                                                stmtsToAddAfter.push_back( ctor );
     989                                                objDecl->init = nullptr;
     990                                                // ctorInit->ctor = nullptr;
     991                                        }
     992
     993                                        const ast::Stmt * dtor = ctorInit->dtor;
     994                                        if ( dtor ) {
     995                                                auto implicit = strict_dynamic_cast< const ast::ImplicitCtorDtorStmt * >( dtor );
     996                                                const ast::Stmt * dtorStmt = implicit->callStmt;
     997
     998                                                // don't need to call intrinsic dtor, because it does nothing, but
     999                                                // non-intrinsic dtors must be called
     1000                                                if ( ! isIntrinsicSingleArgCallStmt( dtorStmt ) ) {
     1001                                                        // set dtor location to the object's location for error messages
     1002                                                        auto dtorFunc = getDtorFunc( objDecl, dtorStmt, stmtsToAddBefore );
     1003                                                        objDecl->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr(loc, dtorFunc ) } ) );
     1004                                                        // ctorInit->dtor = nullptr;
     1005                                                } // if
     1006                                        }
     1007                                } // if
     1008                        } else if ( const ast::Init * init = ctorInit->init ) {
     1009                                objDecl->init = init;
     1010                                // ctorInit->init = nullptr;
     1011                        } else {
     1012                                // no constructor and no initializer, which is okay
     1013                                objDecl->init = nullptr;
     1014                        } // if
     1015                        // delete ctorInit;
     1016                        return objDecl;
     1017                } // if
     1018                return _objDecl;
     1019        }
     1020
     1021        void ObjDeclCollector::previsit( const ast::CompoundStmt * ) {
     1022                GuardValue( curVars );
     1023        }
     1024
     1025        void ObjDeclCollector::previsit( const ast::DeclStmt * stmt ) {
     1026                // keep track of all variables currently in scope
     1027                if ( auto objDecl = stmt->decl.as<ast::ObjectDecl>() ) {
     1028                        curVars.push_back( objDecl );
     1029                } // if
     1030        }
     1031
     1032        void LabelFinder::previsit( const ast::Stmt * stmt ) {
     1033                // for each label, remember the variables in scope at that label.
     1034                for ( auto l : stmt->labels ) {
     1035                        vars[l] = curVars;
     1036                } // for
     1037        }
     1038
     1039        void LabelFinder::previsit( const ast::CompoundStmt * stmt ) {
     1040                previsit( (const ast::Stmt *) stmt );
     1041                Parent::previsit( stmt );
     1042        }
     1043
     1044        void LabelFinder::previsit( const ast::DeclStmt * stmt ) {
     1045                previsit( (const ast::Stmt *)stmt );
     1046                Parent::previsit( stmt );
     1047        }
     1048
     1049
     1050        void InsertDtors::previsit( const ast::FunctionDecl * funcDecl ) {
     1051                // each function needs to have its own set of labels
     1052                GuardValue( labelVars );
     1053                labelVars.clear();
     1054                // LabelFinder does not recurse into FunctionDecl, so need to visit
     1055                // its children manually.
     1056                if (funcDecl->type) funcDecl->type->accept(finder);
     1057                // maybeAccept( funcDecl->type, finder );
     1058                if (funcDecl->stmts) funcDecl->stmts->accept(finder) ;
     1059
     1060                // all labels for this function have been collected, insert destructors as appropriate via implicit recursion.
     1061        }
     1062
     1063        // Handle break/continue/goto in the same manner as C++.  Basic idea: any objects that are in scope at the
     1064        // BranchStmt but not at the labelled (target) statement must be destructed.  If there are any objects in scope
     1065        // at the target location but not at the BranchStmt then those objects would be uninitialized so notify the user
     1066        // of the error.  See C++ Reference 6.6 Jump Statements for details.
     1067        void InsertDtors::handleGoto( const ast::BranchStmt * stmt ) {
     1068                // can't do anything for computed goto
     1069                if ( stmt->computedTarget ) return;
     1070
     1071                assertf( stmt->target.name != "", "BranchStmt missing a label: %s", toString( stmt ).c_str() );
     1072                // S_L = lvars = set of objects in scope at label definition
     1073                // S_G = curVars = set of objects in scope at goto statement
     1074                ObjectSet & lvars = labelVars[ stmt->target ];
     1075
     1076                DTOR_PRINT(
     1077                        std::cerr << "at goto label: " << stmt->target.name << std::endl;
     1078                        std::cerr << "S_G = " << printSet( curVars ) << std::endl;
     1079                        std::cerr << "S_L = " << printSet( lvars ) << std::endl;
     1080                )
     1081
     1082
     1083                // std::set_difference requires that the inputs be sorted.
     1084                lvars.sort();
     1085                curVars.sort();
     1086
     1087                ObjectSet diff;
     1088                // S_L-S_G results in set of objects whose construction is skipped - it's an error if this set is non-empty
     1089                std::set_difference( lvars.begin(), lvars.end(), curVars.begin(), curVars.end(), std::inserter( diff, diff.begin() ) );
     1090                DTOR_PRINT(
     1091                        std::cerr << "S_L-S_G = " << printSet( diff ) << std::endl;
     1092                )
     1093                if ( ! diff.empty() ) {
     1094                        SemanticError( stmt, std::string("jump to label '") + stmt->target.name + "' crosses initialization of " + (*diff.begin())->name + " " );
     1095                } // if
     1096        }
     1097
     1098        void InsertDtors::previsit( const ast::BranchStmt * stmt ) {
     1099                switch( stmt->kind ) {
     1100                case ast::BranchStmt::Continue:
     1101                case ast::BranchStmt::Break:
     1102                        // could optimize the break/continue case, because the S_L-S_G check is unnecessary (this set should
     1103                        // always be empty), but it serves as a small sanity check.
     1104                case ast::BranchStmt::Goto:
     1105                        handleGoto( stmt );
     1106                        break;
     1107                default:
     1108                        assert( false );
     1109                } // switch
     1110        }
     1111
     1112        bool checkWarnings( const ast::FunctionDecl * funcDecl ) {
     1113                // only check for warnings if the current function is a user-defined
     1114                // constructor or destructor
     1115                if ( ! funcDecl ) return false;
     1116                if ( ! funcDecl->stmts ) return false;
     1117                return CodeGen::isCtorDtor( funcDecl->name ) && ! funcDecl->linkage.is_overrideable;
     1118        }
     1119
     1120        void GenStructMemberCalls::previsit( const ast::FunctionDecl * funcDecl ) {
     1121                GuardValue( function );
     1122                GuardValue( unhandled );
     1123                GuardValue( usedUninit );
     1124                GuardValue( thisParam );
     1125                GuardValue( isCtor );
     1126                GuardValue( structDecl );
     1127                errors = SemanticErrorException();  // clear previous errors
     1128
     1129                // need to start with fresh sets
     1130                unhandled.clear();
     1131                usedUninit.clear();
     1132
     1133                function = mutate(funcDecl);
     1134                // could this be non-unique?
     1135                if (function != funcDecl) {
     1136                        std::cerr << "GenStructMemberCalls: non-unique FunctionDecl " << funcDecl->location << funcDecl->name << std::endl;
     1137                }
     1138
     1139                isCtor = CodeGen::isConstructor( function->name );
     1140                if ( checkWarnings( function ) ) {
     1141                        // const ast::FunctionType * type = function->type;
     1142                        // assert( ! type->params.empty() );
     1143                        thisParam = function->params.front().strict_as<ast::ObjectDecl>();
     1144                        auto thisType = getPointerBase( thisParam->get_type() );
     1145                        auto structType = dynamic_cast< const ast::StructInstType * >( thisType );
     1146                        if ( structType ) {
     1147                                structDecl = structType->base;
     1148                                for ( auto & member : structDecl->members ) {
     1149                                        if ( auto field = member.as<ast::ObjectDecl>() ) {
     1150                                                // record all of the struct type's members that need to be constructed or
     1151                                                // destructed by the end of the function
     1152                                                unhandled.insert( field );
     1153                                        }
     1154                                }
     1155                        }
     1156                }
     1157        }
     1158
     1159        const ast::DeclWithType * GenStructMemberCalls::postvisit( const ast::FunctionDecl * funcDecl ) {
     1160                // remove the unhandled objects from usedUninit, because a call is inserted
     1161                // to handle them - only objects that are later constructed are used uninitialized.
     1162                std::map< const ast::DeclWithType *, CodeLocation > diff;
     1163                // need the comparator since usedUninit and unhandled have different types
     1164                struct comp_t {
     1165                        typedef decltype(usedUninit)::value_type usedUninit_t;
     1166                        typedef decltype(unhandled)::value_type unhandled_t;
     1167                        bool operator()(usedUninit_t x, unhandled_t y) { return x.first < y; }
     1168                        bool operator()(unhandled_t x, usedUninit_t y) { return x < y.first; }
     1169                } comp;
     1170                std::set_difference( usedUninit.begin(), usedUninit.end(), unhandled.begin(), unhandled.end(), std::inserter( diff, diff.begin() ), comp );
     1171                for ( auto p : diff ) {
     1172                        auto member = p.first;
     1173                        auto loc = p.second;
     1174                        // xxx - make error message better by also tracking the location that the object is constructed at?
     1175                        emit( loc, "in ", function->name, ", field ", member->name, " used before being constructed" );
     1176                }
     1177
     1178                const CodeLocation loc = funcDecl->location;
     1179
     1180                if ( ! unhandled.empty() ) {
     1181                        auto mutStmts = function->stmts.get_and_mutate();
     1182                        // need to explicitly re-add function parameters to the indexer in order to resolve copy constructors
     1183                        auto guard = makeFuncGuard( [this]() { symtab.enterScope(); }, [this]() { symtab.leaveScope(); } );
     1184                        symtab.addFunction( function );
     1185                        auto global = transUnit().global;
     1186
     1187                        // need to iterate through members in reverse in order for
     1188                        // ctor/dtor statements to come out in the right order
     1189                        for ( auto & member : reverseIterate( structDecl->members ) ) {
     1190                                auto field = member.as<ast::ObjectDecl>();
     1191                                // skip non-DWT members
     1192                                if ( ! field ) continue;
     1193                                // skip non-constructable members
     1194                                if ( ! tryConstruct( field ) ) continue;
     1195                                // skip handled members
     1196                                if ( ! unhandled.count( field ) ) continue;
     1197
     1198                                // insert and resolve default/copy constructor call for each field that's unhandled
     1199                                // std::list< const ast::Stmt * > stmt;
     1200                                ast::Expr * arg2 = nullptr;
     1201                                if ( function->name == "?{}" && isCopyFunction( function ) ) {
     1202                                        // if copy ctor, need to pass second-param-of-this-function.field
     1203                                        // std::list< DeclarationWithType * > & params = function->get_functionType()->get_parameters();
     1204                                        assert( function->params.size() == 2 );
     1205                                        arg2 = new ast::MemberExpr(funcDecl->location, field, new ast::VariableExpr(funcDecl->location, function->params.back() ) );
     1206                                }
     1207                                InitExpander_new srcParam( arg2 );
     1208                                // cast away reference type and construct field.
     1209                                ast::Expr * thisExpr = new ast::CastExpr(funcDecl->location, new ast::VariableExpr(funcDecl->location, thisParam ), thisParam->get_type()->stripReferences());
     1210                                ast::Expr * memberDest = new ast::MemberExpr(funcDecl->location, field, thisExpr );
     1211                                ast::ptr<ast::Stmt> callStmt = SymTab::genImplicitCall( srcParam, memberDest, loc, function->name, field, static_cast<SymTab::LoopDirection>(isCtor) );
     1212
     1213                                if ( callStmt ) {
     1214                                        // auto & callStmt = stmt.front();
     1215
     1216                                        try {
     1217                                                callStmt = callStmt->accept( *visitor );
     1218                                                if ( isCtor ) {
     1219                                                        mutStmts->push_front( callStmt );
     1220                                                } else { // TODO: don't generate destructor function/object for intrinsic calls
     1221                                                        // destructor statements should be added at the end
     1222                                                        // function->get_statements()->push_back( callStmt );
     1223
     1224                                                        // Optimization: do not need to call intrinsic destructors on members
     1225                                                        if ( isIntrinsicSingleArgCallStmt( callStmt ) ) continue;
     1226
     1227                                                        // __Destructor _dtor0 = { (void *)&b.a1, (void (*)(void *)_destroy_A };
     1228                                                        std::list< ast::ptr<ast::Stmt> > stmtsToAdd;
     1229
     1230                                                        static UniqueName memberDtorNamer = { "__memberDtor" };
     1231                                                        assertf( global.dtorStruct, "builtin __Destructor not found." );
     1232                                                        assertf( global.dtorDestroy, "builtin __destroy_Destructor not found." );
     1233
     1234                                                        ast::Expr * thisExpr = new ast::CastExpr( new ast::AddressExpr( new ast::VariableExpr(loc, thisParam ) ), new ast::PointerType( new ast::VoidType(), ast::CV::Qualifiers() ) );
     1235                                                        ast::Expr * dtorExpr = new ast::VariableExpr(loc, getDtorFunc( thisParam, callStmt, stmtsToAdd ) );
     1236
     1237                                                        // cast destructor pointer to void (*)(void *), to silence GCC incompatible pointer warnings
     1238                                                        auto dtorFtype = new ast::FunctionType();
     1239                                                        dtorFtype->params.emplace_back( new ast::PointerType( new ast::VoidType() ) );
     1240                                                        auto dtorType = new ast::PointerType( dtorFtype );
     1241
     1242                                                        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 ) ) } ) );
     1243                                                        destructor->attributes.push_back( new ast::Attribute( "cleanup", { new ast::VariableExpr( loc, global.dtorDestroy ) } ) );
     1244                                                        mutStmts->push_front( new ast::DeclStmt(loc, destructor ) );
     1245                                                        mutStmts->kids.splice( mutStmts->kids.begin(), stmtsToAdd );
     1246                                                }
     1247                                        } catch ( SemanticErrorException & error ) {
     1248                                                emit( funcDecl->location, "in ", function->name , ", field ", field->name, " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
     1249                                        }
     1250                                }
     1251                        }
     1252                        function->stmts = mutStmts;
     1253                }
     1254                if (! errors.isEmpty()) {
     1255                        throw errors;
     1256                }
     1257                // return funcDecl;
     1258                return function;
     1259        }
     1260
     1261        /// true if expr is effectively just the 'this' parameter
     1262        bool isThisExpression( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
     1263                // TODO: there are more complicated ways to pass 'this' to a constructor, e.g. &*, *&, etc.
     1264                if ( auto varExpr = dynamic_cast< const ast::VariableExpr * >( expr ) ) {
     1265                        return varExpr->var == thisParam;
     1266                } else if ( auto castExpr = dynamic_cast< const ast::CastExpr * > ( expr ) ) {
     1267                        return isThisExpression( castExpr->arg, thisParam );
     1268                }
     1269                return false;
     1270        }
     1271
     1272        /// returns a MemberExpr if expr is effectively just member access on the 'this' parameter, else nullptr
     1273        const ast::MemberExpr * isThisMemberExpr( const ast::Expr * expr, const ast::DeclWithType * thisParam ) {
     1274                if ( auto memberExpr = dynamic_cast< const ast::MemberExpr * >( expr ) ) {
     1275                        if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
     1276                                return memberExpr;
     1277                        }
     1278                } else if ( auto castExpr = dynamic_cast< const ast::CastExpr * >( expr ) ) {
     1279                        return isThisMemberExpr( castExpr->arg, thisParam );
     1280                }
     1281                return nullptr;
     1282        }
     1283
     1284        void GenStructMemberCalls::previsit( const ast::ApplicationExpr * appExpr ) {
     1285                if ( ! checkWarnings( function ) ) {
     1286                        visit_children = false;
     1287                        return;
     1288                }
     1289
     1290                std::string fname = getFunctionName( appExpr );
     1291                if ( fname == function->name ) {
     1292                        // call to same kind of function
     1293                        const ast::Expr * firstParam = appExpr->args.front();
     1294
     1295                        if ( isThisExpression( firstParam, thisParam ) ) {
     1296                                // if calling another constructor on thisParam, assume that function handles
     1297                                // all members - if it doesn't a warning will appear in that function.
     1298                                unhandled.clear();
     1299                        } else if ( auto memberExpr = isThisMemberExpr( firstParam, thisParam ) ) {
     1300                                // if first parameter is a member expression on the this parameter,
     1301                                // then remove the member from unhandled set.
     1302                                if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
     1303                                        unhandled.erase( memberExpr->member );
     1304                                }
     1305                        }
     1306                }
     1307        }
     1308
     1309        void GenStructMemberCalls::previsit( const ast::MemberExpr * memberExpr ) {
     1310                if ( ! checkWarnings( function ) || ! isCtor ) {
     1311                        visit_children = false;
     1312                        return;
     1313                }
     1314
     1315                if ( isThisExpression( memberExpr->aggregate, thisParam ) ) {
     1316                        if ( unhandled.count( memberExpr->member ) ) {
     1317                                // emit a warning because a member was used before it was constructed
     1318                                usedUninit.insert( { memberExpr->member, memberExpr->location } );
     1319                        }
     1320                }
     1321        }
     1322
     1323        template< typename... Params >
     1324        void GenStructMemberCalls::emit( CodeLocation loc, const Params &... params ) {
     1325                SemanticErrorException err( loc, toString( params... ) );
     1326                errors.append( err );
     1327        }
     1328
     1329        const ast::Expr * GenStructMemberCalls::postvisit( const ast::UntypedExpr * untypedExpr ) {
     1330                // xxx - functions returning ast::ptr seems wrong...
     1331                auto res = ResolvExpr::findVoidExpression( untypedExpr, { symtab, transUnit().global } );
     1332                return res.release();
     1333        }
     1334
     1335        void InsertImplicitCalls::previsit(const ast::UniqueExpr * unqExpr) {
     1336                if (visitedIds.count(unqExpr->id)) visit_children = false;
     1337                else visitedIds.insert(unqExpr->id);
     1338        }
     1339
     1340        const ast::Expr * FixCtorExprs::postvisit( const ast::ConstructorExpr * ctorExpr ) {
     1341                const CodeLocation loc = ctorExpr->location;
     1342                static UniqueName tempNamer( "_tmp_ctor_expr" );
     1343                // xxx - is the size check necessary?
     1344                assert( ctorExpr->result && ctorExpr->result->size() == 1 );
     1345
     1346                // xxx - this can be TupleAssignExpr now. Need to properly handle this case.
     1347                // take possession of expr and env
     1348                ast::ptr<ast::ApplicationExpr> callExpr = ctorExpr->callExpr.strict_as<ast::ApplicationExpr>();
     1349                ast::ptr<ast::TypeSubstitution> env = ctorExpr->env;
     1350                // ctorExpr->set_callExpr( nullptr );
     1351                // ctorExpr->set_env( nullptr );
     1352
     1353                // 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.
     1354                auto tmp = new ast::ObjectDecl(loc, tempNamer.newName(), callExpr->args.front()->result );
     1355                declsToAddBefore.push_back( tmp );
     1356
     1357                // build assignment and replace constructor's first argument with new temporary
     1358                auto mutCallExpr = callExpr.get_and_mutate();
     1359                const ast::Expr * firstArg = callExpr->args.front();
     1360                ast::Expr * assign = new ast::UntypedExpr(loc, new ast::NameExpr(loc, "?=?" ), { new ast::AddressExpr(loc, new ast::VariableExpr(loc, tmp ) ), new ast::AddressExpr( firstArg ) } );
     1361                firstArg = new ast::VariableExpr(loc, tmp );
     1362                mutCallExpr->args.front() = firstArg;
     1363
     1364                // resolve assignment and dispose of new env
     1365                auto resolved = ResolvExpr::findVoidExpression( assign, { symtab, transUnit().global } );
     1366                auto mut = resolved.get_and_mutate();
     1367                assertf(resolved.get() == mut, "newly resolved expression must be unique");
     1368                mut->env = nullptr;
     1369
     1370                // for constructor expr:
     1371                //   T x;
     1372                //   x{};
     1373                // results in:
     1374                //   T x;
     1375                //   T & tmp;
     1376                //   &tmp = &x, ?{}(tmp), tmp
     1377                ast::CommaExpr * commaExpr = new ast::CommaExpr(loc, resolved, new ast::CommaExpr(loc, mutCallExpr, new ast::VariableExpr(loc, tmp ) ) );
     1378                commaExpr->env = env;
     1379                return commaExpr;
     1380        }
     1381} // namespace
    13821382} // namespace InitTweak
    13831383
  • src/InitTweak/InitTweak.cc

    rc68f6e6 r2e94f3e7  
    891891                                dst = new ast::AddressExpr(dst);
    892892                        }
    893                 } else {
     893                }
     894                else {
    894895                        dst = new ast::CastExpr(dst, new ast::ReferenceType(dst->result, {}));
    895896                }
     
    899900                        }
    900901                }
    901                 auto var = ast::VariableExpr::functionPointer(dst->location, assign);
    902                 auto app = new ast::ApplicationExpr(dst->location, var, {dst, src});
    903                 // Skip the resolver, just set the result to the correct type.
    904                 app->result = ast::deepCopy( src->result );
    905                 return app;
     902                return new ast::ApplicationExpr(dst->location, ast::VariableExpr::functionPointer(dst->location, assign), {dst, src});
    906903        }
    907904
  • src/SymTab/GenImplicitCall.cpp

    rc68f6e6 r2e94f3e7  
    1616#include "GenImplicitCall.hpp"
    1717
    18 #include "AST/Copy.hpp"                  // for deepCopy
    1918#include "AST/Decl.hpp"                  // for ObjectDecl
    2019#include "AST/Expr.hpp"                  // for ConstantExpr, UntypedExpr,...
     
    116115        std::string cmp, update;
    117116
    118         const ast::Expr * dimension = deepCopy( array->dimension );
    119117        if ( forward ) {
    120118                // generate: for ( int i = 0; i < N; ++i )
    121119                begin = ast::ConstantExpr::from_int( loc, 0 );
    122                 end = dimension;
     120                end = array->dimension;
    123121                cmp = "?<?";
    124122                update = "++?";
     
    126124                // generate: for ( int i = N-1; i >= 0; --i )
    127125                begin = ast::UntypedExpr::createCall( loc, "?-?",
    128                         { dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
     126                        { array->dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
    129127                end = ast::ConstantExpr::from_int( loc, 0 );
    130128                cmp = "?>=?";
  • src/Validate/Autogen.cpp

    rc68f6e6 r2e94f3e7  
    532532                )
    533533        );
    534         auto stmt = genImplicitCall(
     534        return genImplicitCall(
    535535                srcParam, dstSelect, location, func->name,
    536536                field, direction
    537537        );
    538         // This could return the above directly, except the generated code is
    539         // built using the structure's members and that means all the scoped
    540         // names (the forall parameters) are incorrect. This corrects them.
    541         if ( stmt && !decl->params.empty() ) {
    542                 ast::DeclReplacer::TypeMap oldToNew;
    543                 for ( auto pair : group_iterate( decl->params, func->type_params ) ) {
    544                         oldToNew.emplace( std::get<0>(pair), std::get<1>(pair) );
    545                 }
    546                 auto node = ast::DeclReplacer::replace( stmt, oldToNew );
    547                 stmt = strict_dynamic_cast<const ast::Stmt *>( node );
    548         }
    549         return stmt;
    550538}
    551539
  • src/Validate/FixQualifiedTypes.cpp

    rc68f6e6 r2e94f3e7  
    8989        }
    9090
    91         ast::Expr const * postvisit( ast::QualifiedNameExpr const * t ) {
     91        ast::Expr const * postvisit( ast::QualifiedNameExpr const * t) {
    9292                assert( location );
    93                 if ( !t->type_decl ) return t;
     93                if ( t->type_decl ) {
     94                auto enumName = t->type_decl->name;
     95                const ast::EnumDecl * enumDecl = symtab.lookupEnum( enumName );
     96                        for ( ast::ptr<ast::Decl> const & member : enumDecl->members ) {
     97                                if ( auto memberAsObj = member.as<ast::ObjectDecl>() ) {
     98                                        if ( memberAsObj->name == t->name ) {
     99                                                return new ast::VariableExpr( t->location, memberAsObj );
     100                                        }
     101                                } else {
     102                                        assertf( false, "unhandled qualified child type");
     103                                }
     104                        }
    94105
    95                 auto enumName = t->type_decl->name;
    96                 const ast::EnumDecl * enumDecl = symtab.lookupEnum( enumName );
    97                 for ( ast::ptr<ast::Decl> const & member : enumDecl->members ) {
    98                         if ( auto memberAsObj = member.as<ast::ObjectDecl>() ) {
    99                                 if ( memberAsObj->name == t->name ) {
    100                                         return new ast::VariableExpr( t->location, memberAsObj );
    101                                 }
    102                         } else {
    103                                 assertf( false, "unhandled qualified child type" );
    104                         }
    105                 }
     106                auto var = new ast::ObjectDecl( t->location, t->name,
     107                        new ast::EnumInstType(enumDecl, ast::CV::Const), nullptr, {}, ast::Linkage::Cforall );
     108                        var->mangleName = Mangle::mangle( var );
     109                        return new ast::VariableExpr( t->location, var );
     110        }
    106111
    107                 auto var = new ast::ObjectDecl( t->location, t->name,
    108                         new ast::EnumInstType( enumDecl, ast::CV::Const ),
    109                         nullptr, {}, ast::Linkage::Cforall );
    110                 var->mangleName = Mangle::mangle( var );
    111                 return new ast::VariableExpr( t->location, var );
     112                return t;
    112113        }
    113114
  • src/Validate/ForallPointerDecay.cpp

    rc68f6e6 r2e94f3e7  
    214214                if ( dynamic_cast< const ast::FunctionType * >( type ) ) return;
    215215                SemanticError( obj->location,
    216                         toCString( "operator ", obj->name.c_str(),
    217                         " is not a function or function pointer." ) );
     216                        toCString( "operator ", obj->name.c_str(), " is not "
     217                        "a function or function pointer." ) );
    218218        }
    219219};
     
    237237        ast::Pass<AssertionFunctionFixer>::run( transUnit );
    238238        ast::Pass<OperatorChecker>::run( transUnit );
    239 }
    240 
    241 void fixUniqueIds( ast::TranslationUnit & transUnit ) {
    242239        ast::Pass<UniqueFixCore>::run( transUnit );
    243240}
  • src/Validate/ForallPointerDecay.hpp

    rc68f6e6 r2e94f3e7  
    2727
    2828/// Cleans up assertion lists and expands traits.
    29 /// Also checks that operator names are used properly on functions.
    30 /// This is a "legacy" pass.
     29/// Also checks that operator names are used properly on functions and
     30/// assigns unique IDs. This is a "legacy" pass.
     31/// Must be after implement concurrent keywords; because uniqueIds must be
     32/// set on declaration before resolution.
    3133/// Must happen before auto-gen routines are added.
    3234void decayForallPointers( ast::TranslationUnit & transUnit );
    33 
    34 /// Sets uniqueIds on any declarations that do not have one set.
    35 /// Must be after implement concurrent keywords; because uniqueIds must be
    36 /// set on declaration before resolution.
    37 void fixUniqueIds( ast::TranslationUnit & transUnit );
    3835
    3936/// Expand all traits in an assertion list.
  • src/main.cc

    rc68f6e6 r2e94f3e7  
    334334                PASS( "Link Reference To Types", Validate::linkReferenceToTypes, transUnit );
    335335
    336                 PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
    337336                PASS( "Fix Qualified Types", Validate::fixQualifiedTypes, transUnit );
    338337                PASS( "Eliminate Typedef", Validate::eliminateTypedef, transUnit );
     
    343342                PASS( "Fix Return Statements", InitTweak::fixReturnStatements, transUnit );
    344343                PASS( "Implement Concurrent Keywords", Concurrency::implementKeywords, transUnit );
    345                 PASS( "Fix Unique Ids", Validate::fixUniqueIds, transUnit );
     344                PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
    346345                PASS( "Hoist Control Declarations", ControlStruct::hoistControlDecls, transUnit );
    347346
     
    370369                PASS( "Translate Throws", ControlStruct::translateThrows, transUnit );
    371370                PASS( "Fix Labels", ControlStruct::fixLabels, transUnit );
    372                 PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
     371        PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
    373372                PASS( "Fix Names", CodeGen::fixNames, transUnit );
    374373                PASS( "Gen Init", InitTweak::genInit, transUnit );
  • tests/array-container/.expect/dimexpr-match-c-ERRS.arm64.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    165165  ... with resolved type:
    166166    unsigned long int
    167 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    168168  Address of:
    169169    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    175175  ... with resolved type:
    176176    unsigned long int
    177 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    178178  Address of:
    179179    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    185185  ... with resolved type:
    186186    unsigned long int
    187 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    188188  Address of:
    189189    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    195195  ... with resolved type:
    196196    unsigned long int
    197 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    198198  Address of:
    199199    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    205205  ... with resolved type:
    206206    unsigned long int
    207 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    208208  Address of:
    209209    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    215215  ... with resolved type:
    216216    unsigned long int
    217 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    218218  Address of:
    219219    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    225225  ... with resolved type:
    226226    unsigned long int
    227 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    228228  Address of:
    229229    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    235235  ... with resolved type:
    236236    unsigned long int
    237 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    245245  ... with resolved type:
    246246    unsigned long int
    247 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    248248  Address of:
    249249    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    255255  ... with resolved type:
    256256    unsigned long int
    257 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    258258  Address of:
    259259    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    260260  ... with resolved type:
    261261    unsigned long int
    262 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     262array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    263263  Address of:
    264264    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    265265  ... with resolved type:
    266266    unsigned long int
    267 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    268268  Address of:
    269269    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    270270  ... with resolved type:
    271271    unsigned long int
    272 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     272array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    273273  Address of:
    274274    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    275275  ... with resolved type:
    276276    unsigned long int
    277 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    278278  Address of:
    279279    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    280280  ... with resolved type:
    281281    unsigned long int
    282 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     282array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    283283  Address of:
    284284    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    290290  ... with resolved type:
    291291    unsigned long int
    292 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     292array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    293293  Address of:
    294294    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    300300  ... with resolved type:
    301301    unsigned long int
    302 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     302array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    303303  Address of:
    304304    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    310310  ... with resolved type:
    311311    unsigned long int
    312 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     312array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    313313  Address of:
    314314    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    320320  ... with resolved type:
    321321    unsigned long int
    322 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     322array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    323323  Address of:
    324324    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    330330  ... with resolved type:
    331331    unsigned long int
    332 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     332array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    333333  Address of:
    334334    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    340340  ... with resolved type:
    341341    unsigned long int
    342 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     342array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    343343  Address of:
    344344    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    350350  ... with resolved type:
    351351    unsigned long int
    352 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     352array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    353353  Address of:
    354354    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    360360  ... with resolved type:
    361361    unsigned long int
    362 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    363363  Address of:
    364364    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    370370  ... with resolved type:
    371371    unsigned long int
    372 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     372array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    373373  Address of:
    374374    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    380380  ... with resolved type:
    381381    unsigned long int
    382 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     382array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    383383  Address of:
    384384    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    390390  ... with resolved type:
    391391    unsigned long int
    392 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    393   Name: ?=?
    394 ...to:
    395   Name: b
    396   Address of:
    397     Name: a
    398 
    399 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    400   Name: ?=?
    401 ...to:
    402   Name: b
    403   Address of:
    404     Name: a
    405 
    406 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    407   Name: ?=?
    408 ...to:
    409   Name: b
    410   Address of:
    411     Name: a
    412 
    413 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    414   Name: ?=?
    415 ...to:
    416   Name: b
    417   Address of:
    418     Name: a
    419 
    420 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    421   Name: ?=?
    422 ...to:
    423   Name: b
    424   Address of:
    425     Name: a
    426 
    427 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    428   Name: ?=?
    429 ...to:
    430   Name: b
    431   Address of:
    432     Name: a
    433 
    434 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    435   Name: ?=?
    436 ...to:
    437   Name: b
    438   Address of:
    439     Name: a
    440 
    441 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    442   Name: ?=?
    443 ...to:
    444   Name: b
    445   Address of:
    446     Name: a
    447 
    448 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    449   Name: ?=?
    450 ...to:
    451   Name: b
    452   Address of:
    453     Name: a
    454 
    455 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    456   Name: ?=?
    457 ...to:
    458   Name: b
    459   Address of:
    460     Name: a
    461 
    462 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    463   Name: ?=?
    464 ...to:
    465   Name: b
    466   Address of:
    467     Name: a
    468 
    469 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    470   Name: ?=?
    471 ...to:
    472   Name: b
    473   Address of:
    474     Name: a
    475 
    476 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    477   Name: ?=?
    478 ...to:
    479   Name: b
    480   Address of:
    481     Name: a
    482 
    483 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    484   Name: ?=?
    485 ...to:
    486   Name: b
    487   Address of:
    488     Name: a
    489 
    490 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    491   Name: ?=?
    492 ...to:
    493   Name: b
    494   Address of:
    495     Name: a
    496 
    497 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    498   Name: ?=?
    499 ...to:
    500   Name: b
    501   Address of:
    502     Name: a
    503 
    504 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    505   Name: ?=?
    506 ...to:
    507   Name: b
    508   Address of:
    509     Name: a
    510 
    511 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    512   Name: ?=?
    513 ...to:
    514   Name: b
    515   Address of:
    516     Name: a
    517 
    518 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    519   Name: ?=?
    520 ...to:
    521   Name: b
    522   Address of:
    523     Name: a
    524 
    525 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    526   Name: ?=?
    527 ...to:
    528   Name: b
    529   Address of:
    530     Name: a
    531 
    532 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    533   Name: ?=?
    534 ...to:
    535   Name: b
    536   Address of:
    537     Name: a
    538 
    539 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    540   Name: ?=?
    541 ...to:
    542   Name: b
    543   Address of:
    544     Name: a
    545 
    546 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    547   Name: ?=?
    548 ...to:
    549   Name: b
    550   Address of:
    551     Name: a
    552 
    553 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    554   Name: ?=?
    555 ...to:
    556   Name: b
    557   Address of:
    558     Name: a
    559 
    560 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    561   Name: ?=?
    562 ...to:
    563   Name: b
    564   Address of:
    565     Name: a
    566 
    567 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    568   Name: ?=?
    569 ...to:
    570   Name: b
    571   Address of:
    572     Name: a
    573 
    574 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    575   Name: ?=?
    576 ...to:
    577   Address of:
    578     Name: b
    579   Address of:
    580     Name: a
    581 
    582 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    583   Name: ?=?
    584 ...to:
    585   Address of:
    586     Name: b
    587   Address of:
    588     Name: a
    589 
    590 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    591   Name: ?=?
    592 ...to:
    593   Address of:
    594     Name: b
    595   Address of:
    596     Name: a
    597 
    598 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    599   Name: ?=?
    600 ...to:
    601   Address of:
    602     Name: b
    603   Address of:
    604     Name: a
    605 
    606 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    607   Name: ?=?
    608 ...to:
    609   Address of:
    610     Name: b
    611   Address of:
    612     Name: a
    613 
    614 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    615   Name: ?=?
    616 ...to:
    617   Address of:
    618     Name: b
    619   Address of:
    620     Name: a
    621 
    622 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    623   Name: ?=?
    624 ...to:
    625   Address of:
    626     Name: b
    627   Address of:
    628     Name: a
    629 
    630 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    631   Name: ?=?
    632 ...to:
    633   Address of:
    634     Name: b
    635   Address of:
    636     Name: a
    637 
    638 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    639   Name: ?=?
    640 ...to:
    641   Address of:
    642     Name: b
    643   Address of:
    644     Name: a
    645 
    646 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    647   Name: ?=?
    648 ...to:
    649   Address of:
    650     Name: b
    651   Address of:
    652     Name: a
    653 
    654 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    655   Name: ?=?
    656 ...to:
    657   Address of:
    658     Name: b
    659   Address of:
    660     Name: a
    661 
    662 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    663   Name: ?=?
    664 ...to:
    665   Address of:
    666     Name: b
    667   Address of:
    668     Name: a
    669 
    670 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    671   Name: ?=?
    672 ...to:
    673   Address of:
    674     Name: b
    675   Address of:
    676     Name: a
    677 
    678 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    679   Name: ?=?
    680 ...to:
    681   Address of:
    682     Name: b
    683   Address of:
    684     Name: a
    685 
    686 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    687   Name: ?=?
    688 ...to:
    689   Address of:
    690     Name: b
    691   Address of:
    692     Name: a
    693 
    694 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    695   Name: ?=?
    696 ...to:
    697   Address of:
    698     Name: b
    699   Address of:
    700     Name: a
    701 
    702 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    703   Name: ?=?
    704 ...to:
    705   Address of:
    706     Name: b
    707   Address of:
    708     Name: a
    709 
    710 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    711   Name: ?=?
    712 ...to:
    713   Address of:
    714     Name: b
    715   Address of:
    716     Name: a
    717 
    718 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    719   Name: ?=?
    720 ...to:
    721   Address of:
    722     Name: b
    723   Address of:
    724     Name: a
    725 
    726 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    727   Name: ?=?
    728 ...to:
    729   Address of:
    730     Name: b
    731   Address of:
    732     Name: a
    733 
    734 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    735   Name: ?=?
    736 ...to:
    737   Address of:
    738     Name: b
    739   Address of:
    740     Name: a
    741 
    742 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    743   Name: ?=?
    744 ...to:
    745   Address of:
    746     Name: b
    747   Address of:
    748     Name: a
    749 
    750 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    751   Name: ?=?
    752 ...to:
    753   Address of:
    754     Name: b
    755   Address of:
    756     Name: a
    757 
    758 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    759   Name: ?=?
    760 ...to:
    761   Address of:
    762     Name: b
    763   Address of:
    764     Name: a
    765 
    766 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    767   Name: ?=?
    768 ...to:
    769   Address of:
    770     Name: b
    771   Address of:
    772     Name: a
    773 
    774 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    775   Name: ?=?
    776 ...to:
    777   Address of:
    778     Name: b
    779   Address of:
    780     Name: a
    781 
     392array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     393  Name: ?=?
     394...to:
     395  Name: b
     396  Address of:
     397    Name: a
     398
     399array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     400  Name: ?=?
     401...to:
     402  Name: b
     403  Address of:
     404    Name: a
     405
     406array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     407  Name: ?=?
     408...to:
     409  Name: b
     410  Address of:
     411    Name: a
     412
     413array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     414  Name: ?=?
     415...to:
     416  Name: b
     417  Address of:
     418    Name: a
     419
     420array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     421  Name: ?=?
     422...to:
     423  Name: b
     424  Address of:
     425    Name: a
     426
     427array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     428  Name: ?=?
     429...to:
     430  Name: b
     431  Address of:
     432    Name: a
     433
     434array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     435  Name: ?=?
     436...to:
     437  Name: b
     438  Address of:
     439    Name: a
     440
     441array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     442  Name: ?=?
     443...to:
     444  Name: b
     445  Address of:
     446    Name: a
     447
     448array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     449  Name: ?=?
     450...to:
     451  Name: b
     452  Address of:
     453    Name: a
     454
     455array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     456  Name: ?=?
     457...to:
     458  Name: b
     459  Address of:
     460    Name: a
     461
     462array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     463  Name: ?=?
     464...to:
     465  Name: b
     466  Address of:
     467    Name: a
     468
     469array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     470  Name: ?=?
     471...to:
     472  Name: b
     473  Address of:
     474    Name: a
     475
     476array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     477  Name: ?=?
     478...to:
     479  Name: b
     480  Address of:
     481    Name: a
     482
     483array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     484  Name: ?=?
     485...to:
     486  Name: b
     487  Address of:
     488    Name: a
     489
     490array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     491  Name: ?=?
     492...to:
     493  Name: b
     494  Address of:
     495    Name: a
     496
     497array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     498  Name: ?=?
     499...to:
     500  Name: b
     501  Address of:
     502    Name: a
     503
     504array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     505  Name: ?=?
     506...to:
     507  Name: b
     508  Address of:
     509    Name: a
     510
     511array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     512  Name: ?=?
     513...to:
     514  Name: b
     515  Address of:
     516    Name: a
     517
     518array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     519  Name: ?=?
     520...to:
     521  Name: b
     522  Address of:
     523    Name: a
     524
     525array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     526  Name: ?=?
     527...to:
     528  Name: b
     529  Address of:
     530    Name: a
     531
     532array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     533  Name: ?=?
     534...to:
     535  Name: b
     536  Address of:
     537    Name: a
     538
     539array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     540  Name: ?=?
     541...to:
     542  Name: b
     543  Address of:
     544    Name: a
     545
     546array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     547  Name: ?=?
     548...to:
     549  Name: b
     550  Address of:
     551    Name: a
     552
     553array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     554  Name: ?=?
     555...to:
     556  Name: b
     557  Address of:
     558    Name: a
     559
     560array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     561  Name: ?=?
     562...to:
     563  Name: b
     564  Address of:
     565    Name: a
     566
     567array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     568  Name: ?=?
     569...to:
     570  Name: b
     571  Address of:
     572    Name: a
     573
     574array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     575  Name: ?=?
     576...to:
     577  Address of:
     578    Name: b
     579  Address of:
     580    Name: a
     581
     582array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     583  Name: ?=?
     584...to:
     585  Address of:
     586    Name: b
     587  Address of:
     588    Name: a
     589
     590array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     591  Name: ?=?
     592...to:
     593  Address of:
     594    Name: b
     595  Address of:
     596    Name: a
     597
     598array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     599  Name: ?=?
     600...to:
     601  Address of:
     602    Name: b
     603  Address of:
     604    Name: a
     605
     606array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     607  Name: ?=?
     608...to:
     609  Address of:
     610    Name: b
     611  Address of:
     612    Name: a
     613
     614array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     615  Name: ?=?
     616...to:
     617  Address of:
     618    Name: b
     619  Address of:
     620    Name: a
     621
     622array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     623  Name: ?=?
     624...to:
     625  Address of:
     626    Name: b
     627  Address of:
     628    Name: a
     629
     630array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     631  Name: ?=?
     632...to:
     633  Address of:
     634    Name: b
     635  Address of:
     636    Name: a
     637
     638array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     639  Name: ?=?
     640...to:
     641  Address of:
     642    Name: b
     643  Address of:
     644    Name: a
     645
     646array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     647  Name: ?=?
     648...to:
     649  Address of:
     650    Name: b
     651  Address of:
     652    Name: a
     653
     654array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     655  Name: ?=?
     656...to:
     657  Address of:
     658    Name: b
     659  Address of:
     660    Name: a
     661
     662array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     663  Name: ?=?
     664...to:
     665  Address of:
     666    Name: b
     667  Address of:
     668    Name: a
     669
     670array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     671  Name: ?=?
     672...to:
     673  Address of:
     674    Name: b
     675  Address of:
     676    Name: a
     677
     678array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     679  Name: ?=?
     680...to:
     681  Address of:
     682    Name: b
     683  Address of:
     684    Name: a
     685
     686array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     687  Name: ?=?
     688...to:
     689  Address of:
     690    Name: b
     691  Address of:
     692    Name: a
     693
     694array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     695  Name: ?=?
     696...to:
     697  Address of:
     698    Name: b
     699  Address of:
     700    Name: a
     701
     702array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     703  Name: ?=?
     704...to:
     705  Address of:
     706    Name: b
     707  Address of:
     708    Name: a
     709
     710array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     711  Name: ?=?
     712...to:
     713  Address of:
     714    Name: b
     715  Address of:
     716    Name: a
     717
     718array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     719  Name: ?=?
     720...to:
     721  Address of:
     722    Name: b
     723  Address of:
     724    Name: a
     725
     726array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     727  Name: ?=?
     728...to:
     729  Address of:
     730    Name: b
     731  Address of:
     732    Name: a
     733
     734array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     735  Name: ?=?
     736...to:
     737  Address of:
     738    Name: b
     739  Address of:
     740    Name: a
     741
     742array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     743  Name: ?=?
     744...to:
     745  Address of:
     746    Name: b
     747  Address of:
     748    Name: a
     749
     750array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     751  Name: ?=?
     752...to:
     753  Address of:
     754    Name: b
     755  Address of:
     756    Name: a
     757
     758array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     759  Name: ?=?
     760...to:
     761  Address of:
     762    Name: b
     763  Address of:
     764    Name: a
     765
     766array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     767  Name: ?=?
     768...to:
     769  Address of:
     770    Name: b
     771  Address of:
     772    Name: a
     773
     774array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     775  Name: ?=?
     776...to:
     777  Address of:
     778    Name: b
     779  Address of:
     780    Name: a
     781
  • tests/array-container/.expect/dimexpr-match-c-ERRS.x64.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    165165  ... with resolved type:
    166166    unsigned long int
    167 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    168168  Address of:
    169169    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    175175  ... with resolved type:
    176176    unsigned long int
    177 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    178178  Address of:
    179179    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    185185  ... with resolved type:
    186186    unsigned long int
    187 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    188188  Address of:
    189189    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    195195  ... with resolved type:
    196196    unsigned long int
    197 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    198198  Address of:
    199199    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    205205  ... with resolved type:
    206206    unsigned long int
    207 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    208208  Address of:
    209209    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    215215  ... with resolved type:
    216216    unsigned long int
    217 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    218218  Address of:
    219219    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    225225  ... with resolved type:
    226226    unsigned long int
    227 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    228228  Address of:
    229229    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    235235  ... with resolved type:
    236236    unsigned long int
    237 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    245245  ... with resolved type:
    246246    unsigned long int
    247 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    248248  Address of:
    249249    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    255255  ... with resolved type:
    256256    unsigned long int
    257 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    258258  Address of:
    259259    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    260260  ... with resolved type:
    261261    unsigned long int
    262 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     262array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    263263  Address of:
    264264    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    265265  ... with resolved type:
    266266    unsigned long int
    267 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    268268  Address of:
    269269    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    270270  ... with resolved type:
    271271    unsigned long int
    272 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     272array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    273273  Address of:
    274274    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    275275  ... with resolved type:
    276276    unsigned long int
    277 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    278278  Address of:
    279279    Name: a  InitAlternative: pointer to array of float with dimension of Sizeof Expression on: instance of type dim7 (not function type)
    280280  ... with resolved type:
    281281    unsigned long int
    282 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     282array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    283283  Address of:
    284284    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    290290  ... with resolved type:
    291291    unsigned long int
    292 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     292array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    293293  Address of:
    294294    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    300300  ... with resolved type:
    301301    unsigned long int
    302 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     302array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    303303  Address of:
    304304    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    310310  ... with resolved type:
    311311    unsigned long int
    312 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     312array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    313313  Address of:
    314314    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    320320  ... with resolved type:
    321321    unsigned long int
    322 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     322array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    323323  Address of:
    324324    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    330330  ... with resolved type:
    331331    unsigned long int
    332 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     332array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    333333  Address of:
    334334    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    340340  ... with resolved type:
    341341    unsigned long int
    342 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     342array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    343343  Address of:
    344344    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    350350  ... with resolved type:
    351351    unsigned long int
    352 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     352array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    353353  Address of:
    354354    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    360360  ... with resolved type:
    361361    unsigned long int
    362 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    363363  Address of:
    364364    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    370370  ... with resolved type:
    371371    unsigned long int
    372 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     372array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    373373  Address of:
    374374    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    380380  ... with resolved type:
    381381    unsigned long int
    382 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     382array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    383383  Address of:
    384384    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    390390  ... with resolved type:
    391391    unsigned long int
    392 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    393   Name: ?=?
    394 ...to:
    395   Name: b
    396   Address of:
    397     Name: a
    398 
    399 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    400   Name: ?=?
    401 ...to:
    402   Name: b
    403   Address of:
    404     Name: a
    405 
    406 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    407   Name: ?=?
    408 ...to:
    409   Name: b
    410   Address of:
    411     Name: a
    412 
    413 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    414   Name: ?=?
    415 ...to:
    416   Name: b
    417   Address of:
    418     Name: a
    419 
    420 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    421   Name: ?=?
    422 ...to:
    423   Name: b
    424   Address of:
    425     Name: a
    426 
    427 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    428   Name: ?=?
    429 ...to:
    430   Name: b
    431   Address of:
    432     Name: a
    433 
    434 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    435   Name: ?=?
    436 ...to:
    437   Name: b
    438   Address of:
    439     Name: a
    440 
    441 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    442   Name: ?=?
    443 ...to:
    444   Name: b
    445   Address of:
    446     Name: a
    447 
    448 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    449   Name: ?=?
    450 ...to:
    451   Name: b
    452   Address of:
    453     Name: a
    454 
    455 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    456   Name: ?=?
    457 ...to:
    458   Name: b
    459   Address of:
    460     Name: a
    461 
    462 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    463   Name: ?=?
    464 ...to:
    465   Name: b
    466   Address of:
    467     Name: a
    468 
    469 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    470   Name: ?=?
    471 ...to:
    472   Name: b
    473   Address of:
    474     Name: a
    475 
    476 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    477   Name: ?=?
    478 ...to:
    479   Name: b
    480   Address of:
    481     Name: a
    482 
    483 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    484   Name: ?=?
    485 ...to:
    486   Name: b
    487   Address of:
    488     Name: a
    489 
    490 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    491   Name: ?=?
    492 ...to:
    493   Name: b
    494   Address of:
    495     Name: a
    496 
    497 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    498   Name: ?=?
    499 ...to:
    500   Name: b
    501   Address of:
    502     Name: a
    503 
    504 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    505   Name: ?=?
    506 ...to:
    507   Name: b
    508   Address of:
    509     Name: a
    510 
    511 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    512   Name: ?=?
    513 ...to:
    514   Name: b
    515   Address of:
    516     Name: a
    517 
    518 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    519   Name: ?=?
    520 ...to:
    521   Name: b
    522   Address of:
    523     Name: a
    524 
    525 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    526   Name: ?=?
    527 ...to:
    528   Name: b
    529   Address of:
    530     Name: a
    531 
    532 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    533   Name: ?=?
    534 ...to:
    535   Name: b
    536   Address of:
    537     Name: a
    538 
    539 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    540   Name: ?=?
    541 ...to:
    542   Name: b
    543   Address of:
    544     Name: a
    545 
    546 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    547   Name: ?=?
    548 ...to:
    549   Name: b
    550   Address of:
    551     Name: a
    552 
    553 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    554   Name: ?=?
    555 ...to:
    556   Name: b
    557   Address of:
    558     Name: a
    559 
    560 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    561   Name: ?=?
    562 ...to:
    563   Name: b
    564   Address of:
    565     Name: a
    566 
    567 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    568   Name: ?=?
    569 ...to:
    570   Name: b
    571   Address of:
    572     Name: a
    573 
    574 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    575   Name: ?=?
    576 ...to:
    577   Address of:
    578     Name: b
    579   Address of:
    580     Name: a
    581 
    582 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    583   Name: ?=?
    584 ...to:
    585   Address of:
    586     Name: b
    587   Address of:
    588     Name: a
    589 
    590 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    591   Name: ?=?
    592 ...to:
    593   Address of:
    594     Name: b
    595   Address of:
    596     Name: a
    597 
    598 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    599   Name: ?=?
    600 ...to:
    601   Address of:
    602     Name: b
    603   Address of:
    604     Name: a
    605 
    606 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    607   Name: ?=?
    608 ...to:
    609   Address of:
    610     Name: b
    611   Address of:
    612     Name: a
    613 
    614 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    615   Name: ?=?
    616 ...to:
    617   Address of:
    618     Name: b
    619   Address of:
    620     Name: a
    621 
    622 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    623   Name: ?=?
    624 ...to:
    625   Address of:
    626     Name: b
    627   Address of:
    628     Name: a
    629 
    630 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    631   Name: ?=?
    632 ...to:
    633   Address of:
    634     Name: b
    635   Address of:
    636     Name: a
    637 
    638 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    639   Name: ?=?
    640 ...to:
    641   Address of:
    642     Name: b
    643   Address of:
    644     Name: a
    645 
    646 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    647   Name: ?=?
    648 ...to:
    649   Address of:
    650     Name: b
    651   Address of:
    652     Name: a
    653 
    654 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    655   Name: ?=?
    656 ...to:
    657   Address of:
    658     Name: b
    659   Address of:
    660     Name: a
    661 
    662 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    663   Name: ?=?
    664 ...to:
    665   Address of:
    666     Name: b
    667   Address of:
    668     Name: a
    669 
    670 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    671   Name: ?=?
    672 ...to:
    673   Address of:
    674     Name: b
    675   Address of:
    676     Name: a
    677 
    678 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    679   Name: ?=?
    680 ...to:
    681   Address of:
    682     Name: b
    683   Address of:
    684     Name: a
    685 
    686 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    687   Name: ?=?
    688 ...to:
    689   Address of:
    690     Name: b
    691   Address of:
    692     Name: a
    693 
    694 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    695   Name: ?=?
    696 ...to:
    697   Address of:
    698     Name: b
    699   Address of:
    700     Name: a
    701 
    702 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    703   Name: ?=?
    704 ...to:
    705   Address of:
    706     Name: b
    707   Address of:
    708     Name: a
    709 
    710 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    711   Name: ?=?
    712 ...to:
    713   Address of:
    714     Name: b
    715   Address of:
    716     Name: a
    717 
    718 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    719   Name: ?=?
    720 ...to:
    721   Address of:
    722     Name: b
    723   Address of:
    724     Name: a
    725 
    726 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    727   Name: ?=?
    728 ...to:
    729   Address of:
    730     Name: b
    731   Address of:
    732     Name: a
    733 
    734 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    735   Name: ?=?
    736 ...to:
    737   Address of:
    738     Name: b
    739   Address of:
    740     Name: a
    741 
    742 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    743   Name: ?=?
    744 ...to:
    745   Address of:
    746     Name: b
    747   Address of:
    748     Name: a
    749 
    750 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    751   Name: ?=?
    752 ...to:
    753   Address of:
    754     Name: b
    755   Address of:
    756     Name: a
    757 
    758 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    759   Name: ?=?
    760 ...to:
    761   Address of:
    762     Name: b
    763   Address of:
    764     Name: a
    765 
    766 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    767   Name: ?=?
    768 ...to:
    769   Address of:
    770     Name: b
    771   Address of:
    772     Name: a
    773 
    774 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    775   Name: ?=?
    776 ...to:
    777   Address of:
    778     Name: b
    779   Address of:
    780     Name: a
    781 
     392array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     393  Name: ?=?
     394...to:
     395  Name: b
     396  Address of:
     397    Name: a
     398
     399array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     400  Name: ?=?
     401...to:
     402  Name: b
     403  Address of:
     404    Name: a
     405
     406array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     407  Name: ?=?
     408...to:
     409  Name: b
     410  Address of:
     411    Name: a
     412
     413array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     414  Name: ?=?
     415...to:
     416  Name: b
     417  Address of:
     418    Name: a
     419
     420array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     421  Name: ?=?
     422...to:
     423  Name: b
     424  Address of:
     425    Name: a
     426
     427array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     428  Name: ?=?
     429...to:
     430  Name: b
     431  Address of:
     432    Name: a
     433
     434array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     435  Name: ?=?
     436...to:
     437  Name: b
     438  Address of:
     439    Name: a
     440
     441array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     442  Name: ?=?
     443...to:
     444  Name: b
     445  Address of:
     446    Name: a
     447
     448array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     449  Name: ?=?
     450...to:
     451  Name: b
     452  Address of:
     453    Name: a
     454
     455array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     456  Name: ?=?
     457...to:
     458  Name: b
     459  Address of:
     460    Name: a
     461
     462array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     463  Name: ?=?
     464...to:
     465  Name: b
     466  Address of:
     467    Name: a
     468
     469array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     470  Name: ?=?
     471...to:
     472  Name: b
     473  Address of:
     474    Name: a
     475
     476array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     477  Name: ?=?
     478...to:
     479  Name: b
     480  Address of:
     481    Name: a
     482
     483array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     484  Name: ?=?
     485...to:
     486  Name: b
     487  Address of:
     488    Name: a
     489
     490array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     491  Name: ?=?
     492...to:
     493  Name: b
     494  Address of:
     495    Name: a
     496
     497array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     498  Name: ?=?
     499...to:
     500  Name: b
     501  Address of:
     502    Name: a
     503
     504array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     505  Name: ?=?
     506...to:
     507  Name: b
     508  Address of:
     509    Name: a
     510
     511array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     512  Name: ?=?
     513...to:
     514  Name: b
     515  Address of:
     516    Name: a
     517
     518array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     519  Name: ?=?
     520...to:
     521  Name: b
     522  Address of:
     523    Name: a
     524
     525array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     526  Name: ?=?
     527...to:
     528  Name: b
     529  Address of:
     530    Name: a
     531
     532array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     533  Name: ?=?
     534...to:
     535  Name: b
     536  Address of:
     537    Name: a
     538
     539array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     540  Name: ?=?
     541...to:
     542  Name: b
     543  Address of:
     544    Name: a
     545
     546array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     547  Name: ?=?
     548...to:
     549  Name: b
     550  Address of:
     551    Name: a
     552
     553array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     554  Name: ?=?
     555...to:
     556  Name: b
     557  Address of:
     558    Name: a
     559
     560array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     561  Name: ?=?
     562...to:
     563  Name: b
     564  Address of:
     565    Name: a
     566
     567array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     568  Name: ?=?
     569...to:
     570  Name: b
     571  Address of:
     572    Name: a
     573
     574array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     575  Name: ?=?
     576...to:
     577  Address of:
     578    Name: b
     579  Address of:
     580    Name: a
     581
     582array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     583  Name: ?=?
     584...to:
     585  Address of:
     586    Name: b
     587  Address of:
     588    Name: a
     589
     590array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     591  Name: ?=?
     592...to:
     593  Address of:
     594    Name: b
     595  Address of:
     596    Name: a
     597
     598array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     599  Name: ?=?
     600...to:
     601  Address of:
     602    Name: b
     603  Address of:
     604    Name: a
     605
     606array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     607  Name: ?=?
     608...to:
     609  Address of:
     610    Name: b
     611  Address of:
     612    Name: a
     613
     614array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     615  Name: ?=?
     616...to:
     617  Address of:
     618    Name: b
     619  Address of:
     620    Name: a
     621
     622array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     623  Name: ?=?
     624...to:
     625  Address of:
     626    Name: b
     627  Address of:
     628    Name: a
     629
     630array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     631  Name: ?=?
     632...to:
     633  Address of:
     634    Name: b
     635  Address of:
     636    Name: a
     637
     638array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     639  Name: ?=?
     640...to:
     641  Address of:
     642    Name: b
     643  Address of:
     644    Name: a
     645
     646array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     647  Name: ?=?
     648...to:
     649  Address of:
     650    Name: b
     651  Address of:
     652    Name: a
     653
     654array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     655  Name: ?=?
     656...to:
     657  Address of:
     658    Name: b
     659  Address of:
     660    Name: a
     661
     662array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     663  Name: ?=?
     664...to:
     665  Address of:
     666    Name: b
     667  Address of:
     668    Name: a
     669
     670array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     671  Name: ?=?
     672...to:
     673  Address of:
     674    Name: b
     675  Address of:
     676    Name: a
     677
     678array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     679  Name: ?=?
     680...to:
     681  Address of:
     682    Name: b
     683  Address of:
     684    Name: a
     685
     686array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     687  Name: ?=?
     688...to:
     689  Address of:
     690    Name: b
     691  Address of:
     692    Name: a
     693
     694array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     695  Name: ?=?
     696...to:
     697  Address of:
     698    Name: b
     699  Address of:
     700    Name: a
     701
     702array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     703  Name: ?=?
     704...to:
     705  Address of:
     706    Name: b
     707  Address of:
     708    Name: a
     709
     710array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     711  Name: ?=?
     712...to:
     713  Address of:
     714    Name: b
     715  Address of:
     716    Name: a
     717
     718array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     719  Name: ?=?
     720...to:
     721  Address of:
     722    Name: b
     723  Address of:
     724    Name: a
     725
     726array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     727  Name: ?=?
     728...to:
     729  Address of:
     730    Name: b
     731  Address of:
     732    Name: a
     733
     734array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     735  Name: ?=?
     736...to:
     737  Address of:
     738    Name: b
     739  Address of:
     740    Name: a
     741
     742array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     743  Name: ?=?
     744...to:
     745  Address of:
     746    Name: b
     747  Address of:
     748    Name: a
     749
     750array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     751  Name: ?=?
     752...to:
     753  Address of:
     754    Name: b
     755  Address of:
     756    Name: a
     757
     758array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     759  Name: ?=?
     760...to:
     761  Address of:
     762    Name: b
     763  Address of:
     764    Name: a
     765
     766array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     767  Name: ?=?
     768...to:
     769  Address of:
     770    Name: b
     771  Address of:
     772    Name: a
     773
     774array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     775  Name: ?=?
     776...to:
     777  Address of:
     778    Name: b
     779  Address of:
     780    Name: a
     781
  • tests/array-container/.expect/dimexpr-match-c-ERRS.x86.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-c.cfa:34:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-c.cfa:30:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    165165  ... with resolved type:
    166166    unsigned int
    167 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    168168  Address of:
    169169    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    175175  ... with resolved type:
    176176    unsigned int
    177 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    178178  Address of:
    179179    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    185185  ... with resolved type:
    186186    unsigned int
    187 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    188188  Address of:
    189189    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    195195  ... with resolved type:
    196196    unsigned int
    197 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    198198  Address of:
    199199    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    205205  ... with resolved type:
    206206    unsigned int
    207 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    208208  Address of:
    209209    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    215215  ... with resolved type:
    216216    unsigned int
    217 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    218218  Address of:
    219219    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    225225  ... with resolved type:
    226226    unsigned int
    227 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    228228  Address of:
    229229    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    235235  ... with resolved type:
    236236    unsigned int
    237 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    245245  ... with resolved type:
    246246    unsigned int
    247 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    248248  Address of:
    249249    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    255255  ... with resolved type:
    256256    unsigned int
    257 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    258258  Address of:
    259259    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    265265  ... with resolved type:
    266266    unsigned int
    267 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    268268  Address of:
    269269    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    275275  ... with resolved type:
    276276    unsigned int
    277 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    278278  Address of:
    279279    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    285285  ... with resolved type:
    286286    unsigned int
    287 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     287array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    288288  Address of:
    289289    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    295295  ... with resolved type:
    296296    unsigned int
    297 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     297array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    298298  Address of:
    299299    Name: a  InitAlternative: pointer to array of float with dimension of Generated Cast of:
     
    305305  ... with resolved type:
    306306    unsigned int
    307 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     307array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    308308  Address of:
    309309    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    315315  ... with resolved type:
    316316    unsigned int
    317 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    318318  Address of:
    319319    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    325325  ... with resolved type:
    326326    unsigned int
    327 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     327array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    328328  Address of:
    329329    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    335335  ... with resolved type:
    336336    unsigned int
    337 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     337array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    338338  Address of:
    339339    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    345345  ... with resolved type:
    346346    unsigned int
    347 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     347array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    348348  Address of:
    349349    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    355355  ... with resolved type:
    356356    unsigned int
    357 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     357array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    358358  Address of:
    359359    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    365365  ... with resolved type:
    366366    unsigned int
    367 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     367array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    368368  Address of:
    369369    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    375375  ... with resolved type:
    376376    unsigned int
    377 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     377array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    378378  Address of:
    379379    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    385385  ... with resolved type:
    386386    unsigned int
    387 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     387array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    388388  Address of:
    389389    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    395395  ... with resolved type:
    396396    unsigned int
    397 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     397array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    398398  Address of:
    399399    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    405405  ... with resolved type:
    406406    unsigned int
    407 array-container/dimexpr-match-c.cfa:42:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     407array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    408408  Address of:
    409409    Name: a  InitAlternative: pointer to variable length array of float with dimension of Generated Cast of:
     
    415415  ... with resolved type:
    416416    unsigned int
    417 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    418   Name: ?=?
    419 ...to:
    420   Name: b
    421   Address of:
    422     Name: a
    423 
    424 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    425   Name: ?=?
    426 ...to:
    427   Name: b
    428   Address of:
    429     Name: a
    430 
    431 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    432   Name: ?=?
    433 ...to:
    434   Name: b
    435   Address of:
    436     Name: a
    437 
    438 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    439   Name: ?=?
    440 ...to:
    441   Name: b
    442   Address of:
    443     Name: a
    444 
    445 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    446   Name: ?=?
    447 ...to:
    448   Name: b
    449   Address of:
    450     Name: a
    451 
    452 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    453   Name: ?=?
    454 ...to:
    455   Name: b
    456   Address of:
    457     Name: a
    458 
    459 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    460   Name: ?=?
    461 ...to:
    462   Name: b
    463   Address of:
    464     Name: a
    465 
    466 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    467   Name: ?=?
    468 ...to:
    469   Name: b
    470   Address of:
    471     Name: a
    472 
    473 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    474   Name: ?=?
    475 ...to:
    476   Name: b
    477   Address of:
    478     Name: a
    479 
    480 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    481   Name: ?=?
    482 ...to:
    483   Name: b
    484   Address of:
    485     Name: a
    486 
    487 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    488   Name: ?=?
    489 ...to:
    490   Name: b
    491   Address of:
    492     Name: a
    493 
    494 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    495   Name: ?=?
    496 ...to:
    497   Name: b
    498   Address of:
    499     Name: a
    500 
    501 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    502   Name: ?=?
    503 ...to:
    504   Name: b
    505   Address of:
    506     Name: a
    507 
    508 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    509   Name: ?=?
    510 ...to:
    511   Name: b
    512   Address of:
    513     Name: a
    514 
    515 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    516   Name: ?=?
    517 ...to:
    518   Name: b
    519   Address of:
    520     Name: a
    521 
    522 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    523   Name: ?=?
    524 ...to:
    525   Name: b
    526   Address of:
    527     Name: a
    528 
    529 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    530   Name: ?=?
    531 ...to:
    532   Name: b
    533   Address of:
    534     Name: a
    535 
    536 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    537   Name: ?=?
    538 ...to:
    539   Name: b
    540   Address of:
    541     Name: a
    542 
    543 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    544   Name: ?=?
    545 ...to:
    546   Name: b
    547   Address of:
    548     Name: a
    549 
    550 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    551   Name: ?=?
    552 ...to:
    553   Name: b
    554   Address of:
    555     Name: a
    556 
    557 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    558   Name: ?=?
    559 ...to:
    560   Name: b
    561   Address of:
    562     Name: a
    563 
    564 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    565   Name: ?=?
    566 ...to:
    567   Name: b
    568   Address of:
    569     Name: a
    570 
    571 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    572   Name: ?=?
    573 ...to:
    574   Name: b
    575   Address of:
    576     Name: a
    577 
    578 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    579   Name: ?=?
    580 ...to:
    581   Name: b
    582   Address of:
    583     Name: a
    584 
    585 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    586   Name: ?=?
    587 ...to:
    588   Name: b
    589   Address of:
    590     Name: a
    591 
    592 array-container/dimexpr-match-c.cfa:51:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    593   Name: ?=?
    594 ...to:
    595   Name: b
    596   Address of:
    597     Name: a
    598 
    599 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    600   Name: ?=?
    601 ...to:
    602   Address of:
    603     Name: b
    604   Address of:
    605     Name: a
    606 
    607 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    608   Name: ?=?
    609 ...to:
    610   Address of:
    611     Name: b
    612   Address of:
    613     Name: a
    614 
    615 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    616   Name: ?=?
    617 ...to:
    618   Address of:
    619     Name: b
    620   Address of:
    621     Name: a
    622 
    623 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    624   Name: ?=?
    625 ...to:
    626   Address of:
    627     Name: b
    628   Address of:
    629     Name: a
    630 
    631 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    632   Name: ?=?
    633 ...to:
    634   Address of:
    635     Name: b
    636   Address of:
    637     Name: a
    638 
    639 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    640   Name: ?=?
    641 ...to:
    642   Address of:
    643     Name: b
    644   Address of:
    645     Name: a
    646 
    647 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    648   Name: ?=?
    649 ...to:
    650   Address of:
    651     Name: b
    652   Address of:
    653     Name: a
    654 
    655 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    656   Name: ?=?
    657 ...to:
    658   Address of:
    659     Name: b
    660   Address of:
    661     Name: a
    662 
    663 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    664   Name: ?=?
    665 ...to:
    666   Address of:
    667     Name: b
    668   Address of:
    669     Name: a
    670 
    671 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    672   Name: ?=?
    673 ...to:
    674   Address of:
    675     Name: b
    676   Address of:
    677     Name: a
    678 
    679 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    680   Name: ?=?
    681 ...to:
    682   Address of:
    683     Name: b
    684   Address of:
    685     Name: a
    686 
    687 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    688   Name: ?=?
    689 ...to:
    690   Address of:
    691     Name: b
    692   Address of:
    693     Name: a
    694 
    695 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    696   Name: ?=?
    697 ...to:
    698   Address of:
    699     Name: b
    700   Address of:
    701     Name: a
    702 
    703 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    704   Name: ?=?
    705 ...to:
    706   Address of:
    707     Name: b
    708   Address of:
    709     Name: a
    710 
    711 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    712   Name: ?=?
    713 ...to:
    714   Address of:
    715     Name: b
    716   Address of:
    717     Name: a
    718 
    719 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    720   Name: ?=?
    721 ...to:
    722   Address of:
    723     Name: b
    724   Address of:
    725     Name: a
    726 
    727 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    728   Name: ?=?
    729 ...to:
    730   Address of:
    731     Name: b
    732   Address of:
    733     Name: a
    734 
    735 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    736   Name: ?=?
    737 ...to:
    738   Address of:
    739     Name: b
    740   Address of:
    741     Name: a
    742 
    743 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    744   Name: ?=?
    745 ...to:
    746   Address of:
    747     Name: b
    748   Address of:
    749     Name: a
    750 
    751 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    752   Name: ?=?
    753 ...to:
    754   Address of:
    755     Name: b
    756   Address of:
    757     Name: a
    758 
    759 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    760   Name: ?=?
    761 ...to:
    762   Address of:
    763     Name: b
    764   Address of:
    765     Name: a
    766 
    767 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    768   Name: ?=?
    769 ...to:
    770   Address of:
    771     Name: b
    772   Address of:
    773     Name: a
    774 
    775 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    776   Name: ?=?
    777 ...to:
    778   Address of:
    779     Name: b
    780   Address of:
    781     Name: a
    782 
    783 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    784   Name: ?=?
    785 ...to:
    786   Address of:
    787     Name: b
    788   Address of:
    789     Name: a
    790 
    791 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    792   Name: ?=?
    793 ...to:
    794   Address of:
    795     Name: b
    796   Address of:
    797     Name: a
    798 
    799 array-container/dimexpr-match-c.cfa:81:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    800   Name: ?=?
    801 ...to:
    802   Address of:
    803     Name: b
    804   Address of:
    805     Name: a
    806 
     417array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     418  Name: ?=?
     419...to:
     420  Name: b
     421  Address of:
     422    Name: a
     423
     424array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     425  Name: ?=?
     426...to:
     427  Name: b
     428  Address of:
     429    Name: a
     430
     431array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     432  Name: ?=?
     433...to:
     434  Name: b
     435  Address of:
     436    Name: a
     437
     438array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     439  Name: ?=?
     440...to:
     441  Name: b
     442  Address of:
     443    Name: a
     444
     445array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     446  Name: ?=?
     447...to:
     448  Name: b
     449  Address of:
     450    Name: a
     451
     452array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     453  Name: ?=?
     454...to:
     455  Name: b
     456  Address of:
     457    Name: a
     458
     459array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     460  Name: ?=?
     461...to:
     462  Name: b
     463  Address of:
     464    Name: a
     465
     466array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     467  Name: ?=?
     468...to:
     469  Name: b
     470  Address of:
     471    Name: a
     472
     473array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     474  Name: ?=?
     475...to:
     476  Name: b
     477  Address of:
     478    Name: a
     479
     480array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     481  Name: ?=?
     482...to:
     483  Name: b
     484  Address of:
     485    Name: a
     486
     487array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     488  Name: ?=?
     489...to:
     490  Name: b
     491  Address of:
     492    Name: a
     493
     494array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     495  Name: ?=?
     496...to:
     497  Name: b
     498  Address of:
     499    Name: a
     500
     501array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     502  Name: ?=?
     503...to:
     504  Name: b
     505  Address of:
     506    Name: a
     507
     508array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     509  Name: ?=?
     510...to:
     511  Name: b
     512  Address of:
     513    Name: a
     514
     515array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     516  Name: ?=?
     517...to:
     518  Name: b
     519  Address of:
     520    Name: a
     521
     522array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     523  Name: ?=?
     524...to:
     525  Name: b
     526  Address of:
     527    Name: a
     528
     529array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     530  Name: ?=?
     531...to:
     532  Name: b
     533  Address of:
     534    Name: a
     535
     536array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     537  Name: ?=?
     538...to:
     539  Name: b
     540  Address of:
     541    Name: a
     542
     543array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     544  Name: ?=?
     545...to:
     546  Name: b
     547  Address of:
     548    Name: a
     549
     550array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     551  Name: ?=?
     552...to:
     553  Name: b
     554  Address of:
     555    Name: a
     556
     557array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     558  Name: ?=?
     559...to:
     560  Name: b
     561  Address of:
     562    Name: a
     563
     564array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     565  Name: ?=?
     566...to:
     567  Name: b
     568  Address of:
     569    Name: a
     570
     571array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     572  Name: ?=?
     573...to:
     574  Name: b
     575  Address of:
     576    Name: a
     577
     578array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     579  Name: ?=?
     580...to:
     581  Name: b
     582  Address of:
     583    Name: a
     584
     585array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     586  Name: ?=?
     587...to:
     588  Name: b
     589  Address of:
     590    Name: a
     591
     592array-container/dimexpr-match-c.cfa:47:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     593  Name: ?=?
     594...to:
     595  Name: b
     596  Address of:
     597    Name: a
     598
     599array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     600  Name: ?=?
     601...to:
     602  Address of:
     603    Name: b
     604  Address of:
     605    Name: a
     606
     607array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     608  Name: ?=?
     609...to:
     610  Address of:
     611    Name: b
     612  Address of:
     613    Name: a
     614
     615array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     616  Name: ?=?
     617...to:
     618  Address of:
     619    Name: b
     620  Address of:
     621    Name: a
     622
     623array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     624  Name: ?=?
     625...to:
     626  Address of:
     627    Name: b
     628  Address of:
     629    Name: a
     630
     631array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     632  Name: ?=?
     633...to:
     634  Address of:
     635    Name: b
     636  Address of:
     637    Name: a
     638
     639array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     640  Name: ?=?
     641...to:
     642  Address of:
     643    Name: b
     644  Address of:
     645    Name: a
     646
     647array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     648  Name: ?=?
     649...to:
     650  Address of:
     651    Name: b
     652  Address of:
     653    Name: a
     654
     655array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     656  Name: ?=?
     657...to:
     658  Address of:
     659    Name: b
     660  Address of:
     661    Name: a
     662
     663array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     664  Name: ?=?
     665...to:
     666  Address of:
     667    Name: b
     668  Address of:
     669    Name: a
     670
     671array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     672  Name: ?=?
     673...to:
     674  Address of:
     675    Name: b
     676  Address of:
     677    Name: a
     678
     679array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     680  Name: ?=?
     681...to:
     682  Address of:
     683    Name: b
     684  Address of:
     685    Name: a
     686
     687array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     688  Name: ?=?
     689...to:
     690  Address of:
     691    Name: b
     692  Address of:
     693    Name: a
     694
     695array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     696  Name: ?=?
     697...to:
     698  Address of:
     699    Name: b
     700  Address of:
     701    Name: a
     702
     703array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     704  Name: ?=?
     705...to:
     706  Address of:
     707    Name: b
     708  Address of:
     709    Name: a
     710
     711array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     712  Name: ?=?
     713...to:
     714  Address of:
     715    Name: b
     716  Address of:
     717    Name: a
     718
     719array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     720  Name: ?=?
     721...to:
     722  Address of:
     723    Name: b
     724  Address of:
     725    Name: a
     726
     727array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     728  Name: ?=?
     729...to:
     730  Address of:
     731    Name: b
     732  Address of:
     733    Name: a
     734
     735array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     736  Name: ?=?
     737...to:
     738  Address of:
     739    Name: b
     740  Address of:
     741    Name: a
     742
     743array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     744  Name: ?=?
     745...to:
     746  Address of:
     747    Name: b
     748  Address of:
     749    Name: a
     750
     751array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     752  Name: ?=?
     753...to:
     754  Address of:
     755    Name: b
     756  Address of:
     757    Name: a
     758
     759array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     760  Name: ?=?
     761...to:
     762  Address of:
     763    Name: b
     764  Address of:
     765    Name: a
     766
     767array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     768  Name: ?=?
     769...to:
     770  Address of:
     771    Name: b
     772  Address of:
     773    Name: a
     774
     775array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     776  Name: ?=?
     777...to:
     778  Address of:
     779    Name: b
     780  Address of:
     781    Name: a
     782
     783array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     784  Name: ?=?
     785...to:
     786  Address of:
     787    Name: b
     788  Address of:
     789    Name: a
     790
     791array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     792  Name: ?=?
     793...to:
     794  Address of:
     795    Name: b
     796  Address of:
     797    Name: a
     798
     799array-container/dimexpr-match-c.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     800  Name: ?=?
     801...to:
     802  Address of:
     803    Name: b
     804  Address of:
     805    Name: a
     806
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.arm64.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    171171    float
    172172
    173 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    174174  Address of:
    175175    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    187187    float
    188188
    189 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    190190  Address of:
    191191    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    203203    float
    204204
    205 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    206206  Address of:
    207207    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    219219    float
    220220
    221 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    222222  Address of:
    223223    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    235235    float
    236236
    237 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    251251    float
    252252
    253 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    254254  Address of:
    255255    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    267267    float
    268268
    269 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    270270  Address of:
    271271    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    283283    float
    284284
    285 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    286286  Address of:
    287287    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    299299    float
    300300
    301 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    302302  Address of:
    303303    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    315315    float
    316316
    317 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    318318  Address of:
    319319    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    324324    float
    325325
    326 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    327327  Address of:
    328328    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    333333    float
    334334
    335 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    336336  Address of:
    337337    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    342342    float
    343343
    344 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    345345  Address of:
    346346    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    351351    float
    352352
    353 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    354354  Address of:
    355355    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    360360    float
    361361
    362 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    363363  Address of:
    364364    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    376376    float
    377377
    378 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    379379  Address of:
    380380    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    392392    float
    393393
    394 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    395395  Address of:
    396396    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    408408    float
    409409
    410 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    411411  Address of:
    412412    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    424424    float
    425425
    426 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    427427  Address of:
    428428    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    440440    float
    441441
    442 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    443443  Address of:
    444444    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    456456    float
    457457
    458 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    459459  Address of:
    460460    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    472472    float
    473473
    474 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    475475  Address of:
    476476    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    488488    float
    489489
    490 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    491491  Address of:
    492492    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    504504    float
    505505
    506 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    507507  Address of:
    508508    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    520520    float
    521521
    522 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    523523  Address of:
    524524    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    536536    float
    537537
    538 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    539   Name: ?=?
    540 ...to:
    541   Name: b
    542   Address of:
    543     Name: a
    544 
    545 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    546   Name: ?=?
    547 ...to:
    548   Name: b
    549   Address of:
    550     Name: a
    551 
    552 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    553   Name: ?=?
    554 ...to:
    555   Name: b
    556   Address of:
    557     Name: a
    558 
    559 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    560   Name: ?=?
    561 ...to:
    562   Name: b
    563   Address of:
    564     Name: a
    565 
    566 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    567   Name: ?=?
    568 ...to:
    569   Name: b
    570   Address of:
    571     Name: a
    572 
    573 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    574   Name: ?=?
    575 ...to:
    576   Name: b
    577   Address of:
    578     Name: a
    579 
    580 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    581   Name: ?=?
    582 ...to:
    583   Name: b
    584   Address of:
    585     Name: a
    586 
    587 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    588   Name: ?=?
    589 ...to:
    590   Name: b
    591   Address of:
    592     Name: a
    593 
    594 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    595   Name: ?=?
    596 ...to:
    597   Name: b
    598   Address of:
    599     Name: a
    600 
    601 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    602   Name: ?=?
    603 ...to:
    604   Name: b
    605   Address of:
    606     Name: a
    607 
    608 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    609   Name: ?=?
    610 ...to:
    611   Name: b
    612   Address of:
    613     Name: a
    614 
    615 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    616   Name: ?=?
    617 ...to:
    618   Name: b
    619   Address of:
    620     Name: a
    621 
    622 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    623   Name: ?=?
    624 ...to:
    625   Name: b
    626   Address of:
    627     Name: a
    628 
    629 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    630   Name: ?=?
    631 ...to:
    632   Name: b
    633   Address of:
    634     Name: a
    635 
    636 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    637   Name: ?=?
    638 ...to:
    639   Name: b
    640   Address of:
    641     Name: a
    642 
    643 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    644   Name: ?=?
    645 ...to:
    646   Name: b
    647   Address of:
    648     Name: a
    649 
    650 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    651   Name: ?=?
    652 ...to:
    653   Name: b
    654   Address of:
    655     Name: a
    656 
    657 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    658   Name: ?=?
    659 ...to:
    660   Name: b
    661   Address of:
    662     Name: a
    663 
    664 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    665   Name: ?=?
    666 ...to:
    667   Name: b
    668   Address of:
    669     Name: a
    670 
    671 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    672   Name: ?=?
    673 ...to:
    674   Name: b
    675   Address of:
    676     Name: a
    677 
    678 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    679   Name: ?=?
    680 ...to:
    681   Name: b
    682   Address of:
    683     Name: a
    684 
    685 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    686   Name: ?=?
    687 ...to:
    688   Name: b
    689   Address of:
    690     Name: a
    691 
    692 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    693   Name: ?=?
    694 ...to:
    695   Name: b
    696   Address of:
    697     Name: a
    698 
    699 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    700   Name: ?=?
    701 ...to:
    702   Name: b
    703   Address of:
    704     Name: a
    705 
    706 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    707   Name: ?=?
    708 ...to:
    709   Name: b
    710   Address of:
    711     Name: a
    712 
    713 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    714   Name: ?=?
    715 ...to:
    716   Name: b
    717   Address of:
    718     Name: a
    719 
    720 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    721   Name: f
    722 ...to:
    723   Name: a
    724 
    725 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    726   Name: f
    727 ...to:
    728   Name: a
    729 
    730 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    731   Name: f
    732 ...to:
    733   Name: a
    734 
    735 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    736   Name: f
    737 ...to:
    738   Name: a
    739 
    740 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    741   Name: f
    742 ...to:
    743   Name: a
    744 
    745 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    746   Name: f
    747 ...to:
    748   Name: a
    749 
    750 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    751   Name: f
    752 ...to:
    753   Name: a
    754 
    755 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    756   Name: f
    757 ...to:
    758   Name: a
    759 
    760 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    761   Name: f
    762 ...to:
    763   Name: a
    764 
    765 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    766   Name: f
    767 ...to:
    768   Name: a
    769 
    770 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    771   Name: f
    772 ...to:
    773   Name: a
    774 
    775 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    776   Name: f
    777 ...to:
    778   Name: a
    779 
    780 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    781   Name: f
    782 ...to:
    783   Name: a
    784 
    785 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    786   Name: f
    787 ...to:
    788   Name: a
    789 
    790 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    791   Name: f
    792 ...to:
    793   Name: a
    794 
    795 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    796   Name: f
    797 ...to:
    798   Name: a
    799 
    800 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    801   Name: f
    802 ...to:
    803   Name: a
    804 
    805 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    806   Name: f
    807 ...to:
    808   Name: a
    809 
    810 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    811   Name: f
    812 ...to:
    813   Name: a
    814 
    815 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    816   Name: f
    817 ...to:
    818   Name: a
    819 
    820 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    821   Name: f
    822 ...to:
    823   Name: a
    824 
    825 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    826   Name: f
    827 ...to:
    828   Name: a
    829 
    830 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    831   Name: f
    832 ...to:
    833   Name: a
    834 
    835 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    836   Name: f
    837 ...to:
    838   Name: a
    839 
    840 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    841   Name: f
    842 ...to:
    843   Name: a
    844 
    845 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    846   Name: f
    847 ...to:
    848   Name: a
    849 
    850 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     539  Name: ?=?
     540...to:
     541  Name: b
     542  Address of:
     543    Name: a
     544
     545array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     546  Name: ?=?
     547...to:
     548  Name: b
     549  Address of:
     550    Name: a
     551
     552array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     553  Name: ?=?
     554...to:
     555  Name: b
     556  Address of:
     557    Name: a
     558
     559array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     560  Name: ?=?
     561...to:
     562  Name: b
     563  Address of:
     564    Name: a
     565
     566array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     567  Name: ?=?
     568...to:
     569  Name: b
     570  Address of:
     571    Name: a
     572
     573array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     574  Name: ?=?
     575...to:
     576  Name: b
     577  Address of:
     578    Name: a
     579
     580array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     581  Name: ?=?
     582...to:
     583  Name: b
     584  Address of:
     585    Name: a
     586
     587array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     588  Name: ?=?
     589...to:
     590  Name: b
     591  Address of:
     592    Name: a
     593
     594array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     595  Name: ?=?
     596...to:
     597  Name: b
     598  Address of:
     599    Name: a
     600
     601array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     602  Name: ?=?
     603...to:
     604  Name: b
     605  Address of:
     606    Name: a
     607
     608array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     609  Name: ?=?
     610...to:
     611  Name: b
     612  Address of:
     613    Name: a
     614
     615array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     616  Name: ?=?
     617...to:
     618  Name: b
     619  Address of:
     620    Name: a
     621
     622array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     623  Name: ?=?
     624...to:
     625  Name: b
     626  Address of:
     627    Name: a
     628
     629array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     630  Name: ?=?
     631...to:
     632  Name: b
     633  Address of:
     634    Name: a
     635
     636array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     637  Name: ?=?
     638...to:
     639  Name: b
     640  Address of:
     641    Name: a
     642
     643array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     644  Name: ?=?
     645...to:
     646  Name: b
     647  Address of:
     648    Name: a
     649
     650array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     651  Name: ?=?
     652...to:
     653  Name: b
     654  Address of:
     655    Name: a
     656
     657array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     658  Name: ?=?
     659...to:
     660  Name: b
     661  Address of:
     662    Name: a
     663
     664array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     665  Name: ?=?
     666...to:
     667  Name: b
     668  Address of:
     669    Name: a
     670
     671array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     672  Name: ?=?
     673...to:
     674  Name: b
     675  Address of:
     676    Name: a
     677
     678array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     679  Name: ?=?
     680...to:
     681  Name: b
     682  Address of:
     683    Name: a
     684
     685array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     686  Name: ?=?
     687...to:
     688  Name: b
     689  Address of:
     690    Name: a
     691
     692array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     693  Name: ?=?
     694...to:
     695  Name: b
     696  Address of:
     697    Name: a
     698
     699array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     700  Name: ?=?
     701...to:
     702  Name: b
     703  Address of:
     704    Name: a
     705
     706array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     707  Name: ?=?
     708...to:
     709  Name: b
     710  Address of:
     711    Name: a
     712
     713array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     714  Name: ?=?
     715...to:
     716  Name: b
     717  Address of:
     718    Name: a
     719
     720array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     721  Name: f
     722...to:
     723  Name: a
     724
     725array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     726  Name: f
     727...to:
     728  Name: a
     729
     730array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     731  Name: f
     732...to:
     733  Name: a
     734
     735array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     736  Name: f
     737...to:
     738  Name: a
     739
     740array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     741  Name: f
     742...to:
     743  Name: a
     744
     745array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     746  Name: f
     747...to:
     748  Name: a
     749
     750array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     751  Name: f
     752...to:
     753  Name: a
     754
     755array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     756  Name: f
     757...to:
     758  Name: a
     759
     760array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     761  Name: f
     762...to:
     763  Name: a
     764
     765array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     766  Name: f
     767...to:
     768  Name: a
     769
     770array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     771  Name: f
     772...to:
     773  Name: a
     774
     775array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     776  Name: f
     777...to:
     778  Name: a
     779
     780array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     781  Name: f
     782...to:
     783  Name: a
     784
     785array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     786  Name: f
     787...to:
     788  Name: a
     789
     790array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     791  Name: f
     792...to:
     793  Name: a
     794
     795array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     796  Name: f
     797...to:
     798  Name: a
     799
     800array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     801  Name: f
     802...to:
     803  Name: a
     804
     805array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     806  Name: f
     807...to:
     808  Name: a
     809
     810array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     811  Name: f
     812...to:
     813  Name: a
     814
     815array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     816  Name: f
     817...to:
     818  Name: a
     819
     820array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     821  Name: f
     822...to:
     823  Name: a
     824
     825array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     826  Name: f
     827...to:
     828  Name: a
     829
     830array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     831  Name: f
     832...to:
     833  Name: a
     834
     835array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     836  Name: f
     837...to:
     838  Name: a
     839
     840array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     841  Name: f
     842...to:
     843  Name: a
     844
     845array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     846  Name: f
     847...to:
     848  Name: a
     849
     850array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    851851  Name: a  InitAlternative: reference to instance of struct arpk with body
    852852  ... with parameters
     
    863863    float
    864864
    865 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    866866  Name: a  InitAlternative: reference to instance of struct arpk with body
    867867  ... with parameters
     
    878878    float
    879879
    880 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    881881  Name: a  InitAlternative: reference to instance of struct arpk with body
    882882  ... with parameters
     
    893893    float
    894894
    895 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    896896  Name: a  InitAlternative: reference to instance of struct arpk with body
    897897  ... with parameters
     
    908908    float
    909909
    910 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    911911  Name: a  InitAlternative: reference to instance of struct arpk with body
    912912  ... with parameters
     
    923923    float
    924924
    925 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    926926  Name: a  InitAlternative: reference to instance of struct arpk with body
    927927  ... with parameters
     
    938938    float
    939939
    940 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    941941  Name: a  InitAlternative: reference to instance of struct arpk with body
    942942  ... with parameters
     
    953953    float
    954954
    955 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    956956  Name: a  InitAlternative: reference to instance of struct arpk with body
    957957  ... with parameters
     
    968968    float
    969969
    970 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    971971  Name: a  InitAlternative: reference to instance of struct arpk with body
    972972  ... with parameters
     
    983983    float
    984984
    985 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    986986  Name: a  InitAlternative: reference to instance of struct arpk with body
    987987  ... with parameters
     
    998998    float
    999999
    1000 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10011001  Name: a  InitAlternative: reference to instance of struct arpk with body
    10021002  ... with parameters
     
    10061006    float
    10071007
    1008 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10091009  Name: a  InitAlternative: reference to instance of struct arpk with body
    10101010  ... with parameters
     
    10141014    float
    10151015
    1016 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10171017  Name: a  InitAlternative: reference to instance of struct arpk with body
    10181018  ... with parameters
     
    10221022    float
    10231023
    1024 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10251025  Name: a  InitAlternative: reference to instance of struct arpk with body
    10261026  ... with parameters
     
    10301030    float
    10311031
    1032 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10331033  Name: a  InitAlternative: reference to instance of struct arpk with body
    10341034  ... with parameters
     
    10381038    float
    10391039
    1040 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10411041  Name: a  InitAlternative: reference to instance of struct arpk with body
    10421042  ... with parameters
     
    10531053    float
    10541054
    1055 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10561056  Name: a  InitAlternative: reference to instance of struct arpk with body
    10571057  ... with parameters
     
    10681068    float
    10691069
    1070 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10711071  Name: a  InitAlternative: reference to instance of struct arpk with body
    10721072  ... with parameters
     
    10831083    float
    10841084
    1085 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10861086  Name: a  InitAlternative: reference to instance of struct arpk with body
    10871087  ... with parameters
     
    10981098    float
    10991099
    1100 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11011101  Name: a  InitAlternative: reference to instance of struct arpk with body
    11021102  ... with parameters
     
    11131113    float
    11141114
    1115 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11161116  Name: a  InitAlternative: reference to instance of struct arpk with body
    11171117  ... with parameters
     
    11281128    float
    11291129
    1130 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11311131  Name: a  InitAlternative: reference to instance of struct arpk with body
    11321132  ... with parameters
     
    11431143    float
    11441144
    1145 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11461146  Name: a  InitAlternative: reference to instance of struct arpk with body
    11471147  ... with parameters
     
    11581158    float
    11591159
    1160 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11611161  Name: a  InitAlternative: reference to instance of struct arpk with body
    11621162  ... with parameters
     
    11731173    float
    11741174
    1175 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11761176  Name: a  InitAlternative: reference to instance of struct arpk with body
    11771177  ... with parameters
     
    11881188    float
    11891189
    1190 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11911191  Name: a  InitAlternative: reference to instance of struct arpk with body
    11921192  ... with parameters
     
    12031203    float
    12041204
    1205 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1206   Name: ?=?
    1207 ...to:
    1208   Address of:
    1209     Name: b
    1210   Address of:
    1211     Name: a
    1212 
    1213 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1214   Name: ?=?
    1215 ...to:
    1216   Address of:
    1217     Name: b
    1218   Address of:
    1219     Name: a
    1220 
    1221 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1222   Name: ?=?
    1223 ...to:
    1224   Address of:
    1225     Name: b
    1226   Address of:
    1227     Name: a
    1228 
    1229 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1230   Name: ?=?
    1231 ...to:
    1232   Address of:
    1233     Name: b
    1234   Address of:
    1235     Name: a
    1236 
    1237 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1238   Name: ?=?
    1239 ...to:
    1240   Address of:
    1241     Name: b
    1242   Address of:
    1243     Name: a
    1244 
    1245 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1246   Name: ?=?
    1247 ...to:
    1248   Address of:
    1249     Name: b
    1250   Address of:
    1251     Name: a
    1252 
    1253 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1254   Name: ?=?
    1255 ...to:
    1256   Address of:
    1257     Name: b
    1258   Address of:
    1259     Name: a
    1260 
    1261 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1262   Name: ?=?
    1263 ...to:
    1264   Address of:
    1265     Name: b
    1266   Address of:
    1267     Name: a
    1268 
    1269 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1270   Name: ?=?
    1271 ...to:
    1272   Address of:
    1273     Name: b
    1274   Address of:
    1275     Name: a
    1276 
    1277 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1278   Name: ?=?
    1279 ...to:
    1280   Address of:
    1281     Name: b
    1282   Address of:
    1283     Name: a
    1284 
    1285 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1286   Name: ?=?
    1287 ...to:
    1288   Address of:
    1289     Name: b
    1290   Address of:
    1291     Name: a
    1292 
    1293 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1294   Name: ?=?
    1295 ...to:
    1296   Address of:
    1297     Name: b
    1298   Address of:
    1299     Name: a
    1300 
    1301 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1302   Name: ?=?
    1303 ...to:
    1304   Address of:
    1305     Name: b
    1306   Address of:
    1307     Name: a
    1308 
    1309 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1310   Name: ?=?
    1311 ...to:
    1312   Address of:
    1313     Name: b
    1314   Address of:
    1315     Name: a
    1316 
    1317 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1318   Name: ?=?
    1319 ...to:
    1320   Address of:
    1321     Name: b
    1322   Address of:
    1323     Name: a
    1324 
    1325 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1326   Name: ?=?
    1327 ...to:
    1328   Address of:
    1329     Name: b
    1330   Address of:
    1331     Name: a
    1332 
    1333 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1334   Name: ?=?
    1335 ...to:
    1336   Address of:
    1337     Name: b
    1338   Address of:
    1339     Name: a
    1340 
    1341 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1342   Name: ?=?
    1343 ...to:
    1344   Address of:
    1345     Name: b
    1346   Address of:
    1347     Name: a
    1348 
    1349 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1350   Name: ?=?
    1351 ...to:
    1352   Address of:
    1353     Name: b
    1354   Address of:
    1355     Name: a
    1356 
    1357 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1358   Name: ?=?
    1359 ...to:
    1360   Address of:
    1361     Name: b
    1362   Address of:
    1363     Name: a
    1364 
    1365 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1366   Name: ?=?
    1367 ...to:
    1368   Address of:
    1369     Name: b
    1370   Address of:
    1371     Name: a
    1372 
    1373 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1374   Name: ?=?
    1375 ...to:
    1376   Address of:
    1377     Name: b
    1378   Address of:
    1379     Name: a
    1380 
    1381 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1382   Name: ?=?
    1383 ...to:
    1384   Address of:
    1385     Name: b
    1386   Address of:
    1387     Name: a
    1388 
    1389 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1390   Name: ?=?
    1391 ...to:
    1392   Address of:
    1393     Name: b
    1394   Address of:
    1395     Name: a
    1396 
    1397 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1398   Name: ?=?
    1399 ...to:
    1400   Address of:
    1401     Name: b
    1402   Address of:
    1403     Name: a
    1404 
    1405 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1406   Name: ?=?
    1407 ...to:
    1408   Address of:
    1409     Name: b
    1410   Address of:
    1411     Name: a
    1412 
    1413 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1414   Name: zip
    1415 ...to:
    1416   Name: a
    1417   Name: b
    1418 
    1419 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1420   Name: zip
    1421 ...to:
    1422   Name: a
    1423   Name: b
    1424 
    1425 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1426   Name: zip
    1427 ...to:
    1428   Name: a
    1429   Name: b
    1430 
    1431 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1432   Name: zip
    1433 ...to:
    1434   Name: a
    1435   Name: b
    1436 
    1437 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1438   Name: zip
    1439 ...to:
    1440   Name: a
    1441   Name: b
    1442 
    1443 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1444   Name: zip
    1445 ...to:
    1446   Name: a
    1447   Name: b
    1448 
    1449 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1450   Name: zip
    1451 ...to:
    1452   Name: a
    1453   Name: b
    1454 
    1455 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1456   Name: zip
    1457 ...to:
    1458   Name: a
    1459   Name: b
    1460 
    1461 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1462   Name: zip
    1463 ...to:
    1464   Name: a
    1465   Name: b
    1466 
    1467 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1468   Name: zip
    1469 ...to:
    1470   Name: a
    1471   Name: b
    1472 
    1473 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1474   Name: zip
    1475 ...to:
    1476   Name: a
    1477   Name: b
    1478 
    1479 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1480   Name: zip
    1481 ...to:
    1482   Name: a
    1483   Name: b
    1484 
    1485 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1486   Name: zip
    1487 ...to:
    1488   Name: a
    1489   Name: b
    1490 
    1491 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1492   Name: zip
    1493 ...to:
    1494   Name: a
    1495   Name: b
    1496 
    1497 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1498   Name: zip
    1499 ...to:
    1500   Name: a
    1501   Name: b
    1502 
    1503 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1504   Name: zip
    1505 ...to:
    1506   Name: a
    1507   Name: b
    1508 
    1509 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1510   Name: zip
    1511 ...to:
    1512   Name: a
    1513   Name: b
    1514 
    1515 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1516   Name: zip
    1517 ...to:
    1518   Name: a
    1519   Name: b
    1520 
    1521 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1522   Name: zip
    1523 ...to:
    1524   Name: a
    1525   Name: b
    1526 
    1527 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1528   Name: zip
    1529 ...to:
    1530   Name: a
    1531   Name: b
    1532 
    1533 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1534   Name: zip
    1535 ...to:
    1536   Name: a
    1537   Name: b
    1538 
    1539 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1540   Name: zip
    1541 ...to:
    1542   Name: a
    1543   Name: b
    1544 
    1545 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1546   Name: zip
    1547 ...to:
    1548   Name: a
    1549   Name: b
    1550 
    1551 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1552   Name: zip
    1553 ...to:
    1554   Name: a
    1555   Name: b
    1556 
    1557 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1558   Name: zip
    1559 ...to:
    1560   Name: a
    1561   Name: b
    1562 
    1563 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1564   Name: zip
    1565 ...to:
    1566   Name: a
    1567   Name: b
    1568 
     1205array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1206  Name: ?=?
     1207...to:
     1208  Address of:
     1209    Name: b
     1210  Address of:
     1211    Name: a
     1212
     1213array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1214  Name: ?=?
     1215...to:
     1216  Address of:
     1217    Name: b
     1218  Address of:
     1219    Name: a
     1220
     1221array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1222  Name: ?=?
     1223...to:
     1224  Address of:
     1225    Name: b
     1226  Address of:
     1227    Name: a
     1228
     1229array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1230  Name: ?=?
     1231...to:
     1232  Address of:
     1233    Name: b
     1234  Address of:
     1235    Name: a
     1236
     1237array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1238  Name: ?=?
     1239...to:
     1240  Address of:
     1241    Name: b
     1242  Address of:
     1243    Name: a
     1244
     1245array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1246  Name: ?=?
     1247...to:
     1248  Address of:
     1249    Name: b
     1250  Address of:
     1251    Name: a
     1252
     1253array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1254  Name: ?=?
     1255...to:
     1256  Address of:
     1257    Name: b
     1258  Address of:
     1259    Name: a
     1260
     1261array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1262  Name: ?=?
     1263...to:
     1264  Address of:
     1265    Name: b
     1266  Address of:
     1267    Name: a
     1268
     1269array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1270  Name: ?=?
     1271...to:
     1272  Address of:
     1273    Name: b
     1274  Address of:
     1275    Name: a
     1276
     1277array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1278  Name: ?=?
     1279...to:
     1280  Address of:
     1281    Name: b
     1282  Address of:
     1283    Name: a
     1284
     1285array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1286  Name: ?=?
     1287...to:
     1288  Address of:
     1289    Name: b
     1290  Address of:
     1291    Name: a
     1292
     1293array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1294  Name: ?=?
     1295...to:
     1296  Address of:
     1297    Name: b
     1298  Address of:
     1299    Name: a
     1300
     1301array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1302  Name: ?=?
     1303...to:
     1304  Address of:
     1305    Name: b
     1306  Address of:
     1307    Name: a
     1308
     1309array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1310  Name: ?=?
     1311...to:
     1312  Address of:
     1313    Name: b
     1314  Address of:
     1315    Name: a
     1316
     1317array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1318  Name: ?=?
     1319...to:
     1320  Address of:
     1321    Name: b
     1322  Address of:
     1323    Name: a
     1324
     1325array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1326  Name: ?=?
     1327...to:
     1328  Address of:
     1329    Name: b
     1330  Address of:
     1331    Name: a
     1332
     1333array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1334  Name: ?=?
     1335...to:
     1336  Address of:
     1337    Name: b
     1338  Address of:
     1339    Name: a
     1340
     1341array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1342  Name: ?=?
     1343...to:
     1344  Address of:
     1345    Name: b
     1346  Address of:
     1347    Name: a
     1348
     1349array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1350  Name: ?=?
     1351...to:
     1352  Address of:
     1353    Name: b
     1354  Address of:
     1355    Name: a
     1356
     1357array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1358  Name: ?=?
     1359...to:
     1360  Address of:
     1361    Name: b
     1362  Address of:
     1363    Name: a
     1364
     1365array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1366  Name: ?=?
     1367...to:
     1368  Address of:
     1369    Name: b
     1370  Address of:
     1371    Name: a
     1372
     1373array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1374  Name: ?=?
     1375...to:
     1376  Address of:
     1377    Name: b
     1378  Address of:
     1379    Name: a
     1380
     1381array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1382  Name: ?=?
     1383...to:
     1384  Address of:
     1385    Name: b
     1386  Address of:
     1387    Name: a
     1388
     1389array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1390  Name: ?=?
     1391...to:
     1392  Address of:
     1393    Name: b
     1394  Address of:
     1395    Name: a
     1396
     1397array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1398  Name: ?=?
     1399...to:
     1400  Address of:
     1401    Name: b
     1402  Address of:
     1403    Name: a
     1404
     1405array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1406  Name: ?=?
     1407...to:
     1408  Address of:
     1409    Name: b
     1410  Address of:
     1411    Name: a
     1412
     1413array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1414  Name: zip
     1415...to:
     1416  Name: a
     1417  Name: b
     1418
     1419array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1420  Name: zip
     1421...to:
     1422  Name: a
     1423  Name: b
     1424
     1425array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1426  Name: zip
     1427...to:
     1428  Name: a
     1429  Name: b
     1430
     1431array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1432  Name: zip
     1433...to:
     1434  Name: a
     1435  Name: b
     1436
     1437array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1438  Name: zip
     1439...to:
     1440  Name: a
     1441  Name: b
     1442
     1443array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1444  Name: zip
     1445...to:
     1446  Name: a
     1447  Name: b
     1448
     1449array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1450  Name: zip
     1451...to:
     1452  Name: a
     1453  Name: b
     1454
     1455array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1456  Name: zip
     1457...to:
     1458  Name: a
     1459  Name: b
     1460
     1461array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1462  Name: zip
     1463...to:
     1464  Name: a
     1465  Name: b
     1466
     1467array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1468  Name: zip
     1469...to:
     1470  Name: a
     1471  Name: b
     1472
     1473array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1474  Name: zip
     1475...to:
     1476  Name: a
     1477  Name: b
     1478
     1479array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1480  Name: zip
     1481...to:
     1482  Name: a
     1483  Name: b
     1484
     1485array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1486  Name: zip
     1487...to:
     1488  Name: a
     1489  Name: b
     1490
     1491array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1492  Name: zip
     1493...to:
     1494  Name: a
     1495  Name: b
     1496
     1497array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1498  Name: zip
     1499...to:
     1500  Name: a
     1501  Name: b
     1502
     1503array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1504  Name: zip
     1505...to:
     1506  Name: a
     1507  Name: b
     1508
     1509array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1510  Name: zip
     1511...to:
     1512  Name: a
     1513  Name: b
     1514
     1515array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1516  Name: zip
     1517...to:
     1518  Name: a
     1519  Name: b
     1520
     1521array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1522  Name: zip
     1523...to:
     1524  Name: a
     1525  Name: b
     1526
     1527array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1528  Name: zip
     1529...to:
     1530  Name: a
     1531  Name: b
     1532
     1533array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1534  Name: zip
     1535...to:
     1536  Name: a
     1537  Name: b
     1538
     1539array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1540  Name: zip
     1541...to:
     1542  Name: a
     1543  Name: b
     1544
     1545array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1546  Name: zip
     1547...to:
     1548  Name: a
     1549  Name: b
     1550
     1551array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1552  Name: zip
     1553...to:
     1554  Name: a
     1555  Name: b
     1556
     1557array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1558  Name: zip
     1559...to:
     1560  Name: a
     1561  Name: b
     1562
     1563array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1564  Name: zip
     1565...to:
     1566  Name: a
     1567  Name: b
     1568
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.x64.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    171171    float
    172172
    173 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    174174  Address of:
    175175    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    187187    float
    188188
    189 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    190190  Address of:
    191191    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    203203    float
    204204
    205 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    206206  Address of:
    207207    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    219219    float
    220220
    221 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    222222  Address of:
    223223    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    235235    float
    236236
    237 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    251251    float
    252252
    253 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    254254  Address of:
    255255    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    267267    float
    268268
    269 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    270270  Address of:
    271271    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    283283    float
    284284
    285 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    286286  Address of:
    287287    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    299299    float
    300300
    301 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    302302  Address of:
    303303    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    315315    float
    316316
    317 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    318318  Address of:
    319319    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    324324    float
    325325
    326 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    327327  Address of:
    328328    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    333333    float
    334334
    335 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    336336  Address of:
    337337    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    342342    float
    343343
    344 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    345345  Address of:
    346346    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    351351    float
    352352
    353 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    354354  Address of:
    355355    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    360360    float
    361361
    362 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    363363  Address of:
    364364    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    376376    float
    377377
    378 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    379379  Address of:
    380380    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    392392    float
    393393
    394 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    395395  Address of:
    396396    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    408408    float
    409409
    410 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    411411  Address of:
    412412    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    424424    float
    425425
    426 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    427427  Address of:
    428428    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    440440    float
    441441
    442 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    443443  Address of:
    444444    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    456456    float
    457457
    458 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    459459  Address of:
    460460    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    472472    float
    473473
    474 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    475475  Address of:
    476476    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    488488    float
    489489
    490 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    491491  Address of:
    492492    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    504504    float
    505505
    506 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    507507  Address of:
    508508    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    520520    float
    521521
    522 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    523523  Address of:
    524524    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    536536    float
    537537
    538 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    539   Name: ?=?
    540 ...to:
    541   Name: b
    542   Address of:
    543     Name: a
    544 
    545 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    546   Name: ?=?
    547 ...to:
    548   Name: b
    549   Address of:
    550     Name: a
    551 
    552 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    553   Name: ?=?
    554 ...to:
    555   Name: b
    556   Address of:
    557     Name: a
    558 
    559 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    560   Name: ?=?
    561 ...to:
    562   Name: b
    563   Address of:
    564     Name: a
    565 
    566 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    567   Name: ?=?
    568 ...to:
    569   Name: b
    570   Address of:
    571     Name: a
    572 
    573 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    574   Name: ?=?
    575 ...to:
    576   Name: b
    577   Address of:
    578     Name: a
    579 
    580 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    581   Name: ?=?
    582 ...to:
    583   Name: b
    584   Address of:
    585     Name: a
    586 
    587 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    588   Name: ?=?
    589 ...to:
    590   Name: b
    591   Address of:
    592     Name: a
    593 
    594 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    595   Name: ?=?
    596 ...to:
    597   Name: b
    598   Address of:
    599     Name: a
    600 
    601 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    602   Name: ?=?
    603 ...to:
    604   Name: b
    605   Address of:
    606     Name: a
    607 
    608 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    609   Name: ?=?
    610 ...to:
    611   Name: b
    612   Address of:
    613     Name: a
    614 
    615 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    616   Name: ?=?
    617 ...to:
    618   Name: b
    619   Address of:
    620     Name: a
    621 
    622 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    623   Name: ?=?
    624 ...to:
    625   Name: b
    626   Address of:
    627     Name: a
    628 
    629 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    630   Name: ?=?
    631 ...to:
    632   Name: b
    633   Address of:
    634     Name: a
    635 
    636 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    637   Name: ?=?
    638 ...to:
    639   Name: b
    640   Address of:
    641     Name: a
    642 
    643 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    644   Name: ?=?
    645 ...to:
    646   Name: b
    647   Address of:
    648     Name: a
    649 
    650 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    651   Name: ?=?
    652 ...to:
    653   Name: b
    654   Address of:
    655     Name: a
    656 
    657 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    658   Name: ?=?
    659 ...to:
    660   Name: b
    661   Address of:
    662     Name: a
    663 
    664 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    665   Name: ?=?
    666 ...to:
    667   Name: b
    668   Address of:
    669     Name: a
    670 
    671 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    672   Name: ?=?
    673 ...to:
    674   Name: b
    675   Address of:
    676     Name: a
    677 
    678 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    679   Name: ?=?
    680 ...to:
    681   Name: b
    682   Address of:
    683     Name: a
    684 
    685 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    686   Name: ?=?
    687 ...to:
    688   Name: b
    689   Address of:
    690     Name: a
    691 
    692 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    693   Name: ?=?
    694 ...to:
    695   Name: b
    696   Address of:
    697     Name: a
    698 
    699 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    700   Name: ?=?
    701 ...to:
    702   Name: b
    703   Address of:
    704     Name: a
    705 
    706 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    707   Name: ?=?
    708 ...to:
    709   Name: b
    710   Address of:
    711     Name: a
    712 
    713 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    714   Name: ?=?
    715 ...to:
    716   Name: b
    717   Address of:
    718     Name: a
    719 
    720 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    721   Name: f
    722 ...to:
    723   Name: a
    724 
    725 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    726   Name: f
    727 ...to:
    728   Name: a
    729 
    730 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    731   Name: f
    732 ...to:
    733   Name: a
    734 
    735 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    736   Name: f
    737 ...to:
    738   Name: a
    739 
    740 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    741   Name: f
    742 ...to:
    743   Name: a
    744 
    745 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    746   Name: f
    747 ...to:
    748   Name: a
    749 
    750 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    751   Name: f
    752 ...to:
    753   Name: a
    754 
    755 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    756   Name: f
    757 ...to:
    758   Name: a
    759 
    760 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    761   Name: f
    762 ...to:
    763   Name: a
    764 
    765 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    766   Name: f
    767 ...to:
    768   Name: a
    769 
    770 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    771   Name: f
    772 ...to:
    773   Name: a
    774 
    775 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    776   Name: f
    777 ...to:
    778   Name: a
    779 
    780 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    781   Name: f
    782 ...to:
    783   Name: a
    784 
    785 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    786   Name: f
    787 ...to:
    788   Name: a
    789 
    790 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    791   Name: f
    792 ...to:
    793   Name: a
    794 
    795 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    796   Name: f
    797 ...to:
    798   Name: a
    799 
    800 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    801   Name: f
    802 ...to:
    803   Name: a
    804 
    805 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    806   Name: f
    807 ...to:
    808   Name: a
    809 
    810 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    811   Name: f
    812 ...to:
    813   Name: a
    814 
    815 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    816   Name: f
    817 ...to:
    818   Name: a
    819 
    820 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    821   Name: f
    822 ...to:
    823   Name: a
    824 
    825 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    826   Name: f
    827 ...to:
    828   Name: a
    829 
    830 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    831   Name: f
    832 ...to:
    833   Name: a
    834 
    835 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    836   Name: f
    837 ...to:
    838   Name: a
    839 
    840 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    841   Name: f
    842 ...to:
    843   Name: a
    844 
    845 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    846   Name: f
    847 ...to:
    848   Name: a
    849 
    850 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     539  Name: ?=?
     540...to:
     541  Name: b
     542  Address of:
     543    Name: a
     544
     545array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     546  Name: ?=?
     547...to:
     548  Name: b
     549  Address of:
     550    Name: a
     551
     552array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     553  Name: ?=?
     554...to:
     555  Name: b
     556  Address of:
     557    Name: a
     558
     559array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     560  Name: ?=?
     561...to:
     562  Name: b
     563  Address of:
     564    Name: a
     565
     566array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     567  Name: ?=?
     568...to:
     569  Name: b
     570  Address of:
     571    Name: a
     572
     573array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     574  Name: ?=?
     575...to:
     576  Name: b
     577  Address of:
     578    Name: a
     579
     580array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     581  Name: ?=?
     582...to:
     583  Name: b
     584  Address of:
     585    Name: a
     586
     587array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     588  Name: ?=?
     589...to:
     590  Name: b
     591  Address of:
     592    Name: a
     593
     594array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     595  Name: ?=?
     596...to:
     597  Name: b
     598  Address of:
     599    Name: a
     600
     601array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     602  Name: ?=?
     603...to:
     604  Name: b
     605  Address of:
     606    Name: a
     607
     608array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     609  Name: ?=?
     610...to:
     611  Name: b
     612  Address of:
     613    Name: a
     614
     615array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     616  Name: ?=?
     617...to:
     618  Name: b
     619  Address of:
     620    Name: a
     621
     622array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     623  Name: ?=?
     624...to:
     625  Name: b
     626  Address of:
     627    Name: a
     628
     629array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     630  Name: ?=?
     631...to:
     632  Name: b
     633  Address of:
     634    Name: a
     635
     636array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     637  Name: ?=?
     638...to:
     639  Name: b
     640  Address of:
     641    Name: a
     642
     643array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     644  Name: ?=?
     645...to:
     646  Name: b
     647  Address of:
     648    Name: a
     649
     650array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     651  Name: ?=?
     652...to:
     653  Name: b
     654  Address of:
     655    Name: a
     656
     657array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     658  Name: ?=?
     659...to:
     660  Name: b
     661  Address of:
     662    Name: a
     663
     664array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     665  Name: ?=?
     666...to:
     667  Name: b
     668  Address of:
     669    Name: a
     670
     671array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     672  Name: ?=?
     673...to:
     674  Name: b
     675  Address of:
     676    Name: a
     677
     678array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     679  Name: ?=?
     680...to:
     681  Name: b
     682  Address of:
     683    Name: a
     684
     685array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     686  Name: ?=?
     687...to:
     688  Name: b
     689  Address of:
     690    Name: a
     691
     692array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     693  Name: ?=?
     694...to:
     695  Name: b
     696  Address of:
     697    Name: a
     698
     699array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     700  Name: ?=?
     701...to:
     702  Name: b
     703  Address of:
     704    Name: a
     705
     706array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     707  Name: ?=?
     708...to:
     709  Name: b
     710  Address of:
     711    Name: a
     712
     713array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     714  Name: ?=?
     715...to:
     716  Name: b
     717  Address of:
     718    Name: a
     719
     720array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     721  Name: f
     722...to:
     723  Name: a
     724
     725array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     726  Name: f
     727...to:
     728  Name: a
     729
     730array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     731  Name: f
     732...to:
     733  Name: a
     734
     735array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     736  Name: f
     737...to:
     738  Name: a
     739
     740array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     741  Name: f
     742...to:
     743  Name: a
     744
     745array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     746  Name: f
     747...to:
     748  Name: a
     749
     750array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     751  Name: f
     752...to:
     753  Name: a
     754
     755array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     756  Name: f
     757...to:
     758  Name: a
     759
     760array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     761  Name: f
     762...to:
     763  Name: a
     764
     765array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     766  Name: f
     767...to:
     768  Name: a
     769
     770array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     771  Name: f
     772...to:
     773  Name: a
     774
     775array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     776  Name: f
     777...to:
     778  Name: a
     779
     780array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     781  Name: f
     782...to:
     783  Name: a
     784
     785array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     786  Name: f
     787...to:
     788  Name: a
     789
     790array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     791  Name: f
     792...to:
     793  Name: a
     794
     795array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     796  Name: f
     797...to:
     798  Name: a
     799
     800array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     801  Name: f
     802...to:
     803  Name: a
     804
     805array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     806  Name: f
     807...to:
     808  Name: a
     809
     810array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     811  Name: f
     812...to:
     813  Name: a
     814
     815array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     816  Name: f
     817...to:
     818  Name: a
     819
     820array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     821  Name: f
     822...to:
     823  Name: a
     824
     825array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     826  Name: f
     827...to:
     828  Name: a
     829
     830array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     831  Name: f
     832...to:
     833  Name: a
     834
     835array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     836  Name: f
     837...to:
     838  Name: a
     839
     840array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     841  Name: f
     842...to:
     843  Name: a
     844
     845array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     846  Name: f
     847...to:
     848  Name: a
     849
     850array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    851851  Name: a  InitAlternative: reference to instance of struct arpk with body
    852852  ... with parameters
     
    863863    float
    864864
    865 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    866866  Name: a  InitAlternative: reference to instance of struct arpk with body
    867867  ... with parameters
     
    878878    float
    879879
    880 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    881881  Name: a  InitAlternative: reference to instance of struct arpk with body
    882882  ... with parameters
     
    893893    float
    894894
    895 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    896896  Name: a  InitAlternative: reference to instance of struct arpk with body
    897897  ... with parameters
     
    908908    float
    909909
    910 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    911911  Name: a  InitAlternative: reference to instance of struct arpk with body
    912912  ... with parameters
     
    923923    float
    924924
    925 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    926926  Name: a  InitAlternative: reference to instance of struct arpk with body
    927927  ... with parameters
     
    938938    float
    939939
    940 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    941941  Name: a  InitAlternative: reference to instance of struct arpk with body
    942942  ... with parameters
     
    953953    float
    954954
    955 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    956956  Name: a  InitAlternative: reference to instance of struct arpk with body
    957957  ... with parameters
     
    968968    float
    969969
    970 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    971971  Name: a  InitAlternative: reference to instance of struct arpk with body
    972972  ... with parameters
     
    983983    float
    984984
    985 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    986986  Name: a  InitAlternative: reference to instance of struct arpk with body
    987987  ... with parameters
     
    998998    float
    999999
    1000 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10011001  Name: a  InitAlternative: reference to instance of struct arpk with body
    10021002  ... with parameters
     
    10061006    float
    10071007
    1008 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10091009  Name: a  InitAlternative: reference to instance of struct arpk with body
    10101010  ... with parameters
     
    10141014    float
    10151015
    1016 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10171017  Name: a  InitAlternative: reference to instance of struct arpk with body
    10181018  ... with parameters
     
    10221022    float
    10231023
    1024 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10251025  Name: a  InitAlternative: reference to instance of struct arpk with body
    10261026  ... with parameters
     
    10301030    float
    10311031
    1032 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10331033  Name: a  InitAlternative: reference to instance of struct arpk with body
    10341034  ... with parameters
     
    10381038    float
    10391039
    1040 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10411041  Name: a  InitAlternative: reference to instance of struct arpk with body
    10421042  ... with parameters
     
    10531053    float
    10541054
    1055 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10561056  Name: a  InitAlternative: reference to instance of struct arpk with body
    10571057  ... with parameters
     
    10681068    float
    10691069
    1070 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10711071  Name: a  InitAlternative: reference to instance of struct arpk with body
    10721072  ... with parameters
     
    10831083    float
    10841084
    1085 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10861086  Name: a  InitAlternative: reference to instance of struct arpk with body
    10871087  ... with parameters
     
    10981098    float
    10991099
    1100 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11011101  Name: a  InitAlternative: reference to instance of struct arpk with body
    11021102  ... with parameters
     
    11131113    float
    11141114
    1115 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11161116  Name: a  InitAlternative: reference to instance of struct arpk with body
    11171117  ... with parameters
     
    11281128    float
    11291129
    1130 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11311131  Name: a  InitAlternative: reference to instance of struct arpk with body
    11321132  ... with parameters
     
    11431143    float
    11441144
    1145 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11461146  Name: a  InitAlternative: reference to instance of struct arpk with body
    11471147  ... with parameters
     
    11581158    float
    11591159
    1160 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11611161  Name: a  InitAlternative: reference to instance of struct arpk with body
    11621162  ... with parameters
     
    11731173    float
    11741174
    1175 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11761176  Name: a  InitAlternative: reference to instance of struct arpk with body
    11771177  ... with parameters
     
    11881188    float
    11891189
    1190 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11911191  Name: a  InitAlternative: reference to instance of struct arpk with body
    11921192  ... with parameters
     
    12031203    float
    12041204
    1205 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1206   Name: ?=?
    1207 ...to:
    1208   Address of:
    1209     Name: b
    1210   Address of:
    1211     Name: a
    1212 
    1213 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1214   Name: ?=?
    1215 ...to:
    1216   Address of:
    1217     Name: b
    1218   Address of:
    1219     Name: a
    1220 
    1221 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1222   Name: ?=?
    1223 ...to:
    1224   Address of:
    1225     Name: b
    1226   Address of:
    1227     Name: a
    1228 
    1229 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1230   Name: ?=?
    1231 ...to:
    1232   Address of:
    1233     Name: b
    1234   Address of:
    1235     Name: a
    1236 
    1237 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1238   Name: ?=?
    1239 ...to:
    1240   Address of:
    1241     Name: b
    1242   Address of:
    1243     Name: a
    1244 
    1245 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1246   Name: ?=?
    1247 ...to:
    1248   Address of:
    1249     Name: b
    1250   Address of:
    1251     Name: a
    1252 
    1253 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1254   Name: ?=?
    1255 ...to:
    1256   Address of:
    1257     Name: b
    1258   Address of:
    1259     Name: a
    1260 
    1261 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1262   Name: ?=?
    1263 ...to:
    1264   Address of:
    1265     Name: b
    1266   Address of:
    1267     Name: a
    1268 
    1269 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1270   Name: ?=?
    1271 ...to:
    1272   Address of:
    1273     Name: b
    1274   Address of:
    1275     Name: a
    1276 
    1277 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1278   Name: ?=?
    1279 ...to:
    1280   Address of:
    1281     Name: b
    1282   Address of:
    1283     Name: a
    1284 
    1285 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1286   Name: ?=?
    1287 ...to:
    1288   Address of:
    1289     Name: b
    1290   Address of:
    1291     Name: a
    1292 
    1293 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1294   Name: ?=?
    1295 ...to:
    1296   Address of:
    1297     Name: b
    1298   Address of:
    1299     Name: a
    1300 
    1301 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1302   Name: ?=?
    1303 ...to:
    1304   Address of:
    1305     Name: b
    1306   Address of:
    1307     Name: a
    1308 
    1309 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1310   Name: ?=?
    1311 ...to:
    1312   Address of:
    1313     Name: b
    1314   Address of:
    1315     Name: a
    1316 
    1317 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1318   Name: ?=?
    1319 ...to:
    1320   Address of:
    1321     Name: b
    1322   Address of:
    1323     Name: a
    1324 
    1325 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1326   Name: ?=?
    1327 ...to:
    1328   Address of:
    1329     Name: b
    1330   Address of:
    1331     Name: a
    1332 
    1333 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1334   Name: ?=?
    1335 ...to:
    1336   Address of:
    1337     Name: b
    1338   Address of:
    1339     Name: a
    1340 
    1341 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1342   Name: ?=?
    1343 ...to:
    1344   Address of:
    1345     Name: b
    1346   Address of:
    1347     Name: a
    1348 
    1349 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1350   Name: ?=?
    1351 ...to:
    1352   Address of:
    1353     Name: b
    1354   Address of:
    1355     Name: a
    1356 
    1357 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1358   Name: ?=?
    1359 ...to:
    1360   Address of:
    1361     Name: b
    1362   Address of:
    1363     Name: a
    1364 
    1365 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1366   Name: ?=?
    1367 ...to:
    1368   Address of:
    1369     Name: b
    1370   Address of:
    1371     Name: a
    1372 
    1373 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1374   Name: ?=?
    1375 ...to:
    1376   Address of:
    1377     Name: b
    1378   Address of:
    1379     Name: a
    1380 
    1381 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1382   Name: ?=?
    1383 ...to:
    1384   Address of:
    1385     Name: b
    1386   Address of:
    1387     Name: a
    1388 
    1389 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1390   Name: ?=?
    1391 ...to:
    1392   Address of:
    1393     Name: b
    1394   Address of:
    1395     Name: a
    1396 
    1397 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1398   Name: ?=?
    1399 ...to:
    1400   Address of:
    1401     Name: b
    1402   Address of:
    1403     Name: a
    1404 
    1405 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1406   Name: ?=?
    1407 ...to:
    1408   Address of:
    1409     Name: b
    1410   Address of:
    1411     Name: a
    1412 
    1413 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1414   Name: zip
    1415 ...to:
    1416   Name: a
    1417   Name: b
    1418 
    1419 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1420   Name: zip
    1421 ...to:
    1422   Name: a
    1423   Name: b
    1424 
    1425 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1426   Name: zip
    1427 ...to:
    1428   Name: a
    1429   Name: b
    1430 
    1431 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1432   Name: zip
    1433 ...to:
    1434   Name: a
    1435   Name: b
    1436 
    1437 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1438   Name: zip
    1439 ...to:
    1440   Name: a
    1441   Name: b
    1442 
    1443 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1444   Name: zip
    1445 ...to:
    1446   Name: a
    1447   Name: b
    1448 
    1449 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1450   Name: zip
    1451 ...to:
    1452   Name: a
    1453   Name: b
    1454 
    1455 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1456   Name: zip
    1457 ...to:
    1458   Name: a
    1459   Name: b
    1460 
    1461 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1462   Name: zip
    1463 ...to:
    1464   Name: a
    1465   Name: b
    1466 
    1467 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1468   Name: zip
    1469 ...to:
    1470   Name: a
    1471   Name: b
    1472 
    1473 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1474   Name: zip
    1475 ...to:
    1476   Name: a
    1477   Name: b
    1478 
    1479 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1480   Name: zip
    1481 ...to:
    1482   Name: a
    1483   Name: b
    1484 
    1485 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1486   Name: zip
    1487 ...to:
    1488   Name: a
    1489   Name: b
    1490 
    1491 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1492   Name: zip
    1493 ...to:
    1494   Name: a
    1495   Name: b
    1496 
    1497 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1498   Name: zip
    1499 ...to:
    1500   Name: a
    1501   Name: b
    1502 
    1503 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1504   Name: zip
    1505 ...to:
    1506   Name: a
    1507   Name: b
    1508 
    1509 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1510   Name: zip
    1511 ...to:
    1512   Name: a
    1513   Name: b
    1514 
    1515 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1516   Name: zip
    1517 ...to:
    1518   Name: a
    1519   Name: b
    1520 
    1521 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1522   Name: zip
    1523 ...to:
    1524   Name: a
    1525   Name: b
    1526 
    1527 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1528   Name: zip
    1529 ...to:
    1530   Name: a
    1531   Name: b
    1532 
    1533 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1534   Name: zip
    1535 ...to:
    1536   Name: a
    1537   Name: b
    1538 
    1539 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1540   Name: zip
    1541 ...to:
    1542   Name: a
    1543   Name: b
    1544 
    1545 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1546   Name: zip
    1547 ...to:
    1548   Name: a
    1549   Name: b
    1550 
    1551 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1552   Name: zip
    1553 ...to:
    1554   Name: a
    1555   Name: b
    1556 
    1557 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1558   Name: zip
    1559 ...to:
    1560   Name: a
    1561   Name: b
    1562 
    1563 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1564   Name: zip
    1565 ...to:
    1566   Name: a
    1567   Name: b
    1568 
     1205array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1206  Name: ?=?
     1207...to:
     1208  Address of:
     1209    Name: b
     1210  Address of:
     1211    Name: a
     1212
     1213array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1214  Name: ?=?
     1215...to:
     1216  Address of:
     1217    Name: b
     1218  Address of:
     1219    Name: a
     1220
     1221array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1222  Name: ?=?
     1223...to:
     1224  Address of:
     1225    Name: b
     1226  Address of:
     1227    Name: a
     1228
     1229array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1230  Name: ?=?
     1231...to:
     1232  Address of:
     1233    Name: b
     1234  Address of:
     1235    Name: a
     1236
     1237array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1238  Name: ?=?
     1239...to:
     1240  Address of:
     1241    Name: b
     1242  Address of:
     1243    Name: a
     1244
     1245array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1246  Name: ?=?
     1247...to:
     1248  Address of:
     1249    Name: b
     1250  Address of:
     1251    Name: a
     1252
     1253array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1254  Name: ?=?
     1255...to:
     1256  Address of:
     1257    Name: b
     1258  Address of:
     1259    Name: a
     1260
     1261array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1262  Name: ?=?
     1263...to:
     1264  Address of:
     1265    Name: b
     1266  Address of:
     1267    Name: a
     1268
     1269array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1270  Name: ?=?
     1271...to:
     1272  Address of:
     1273    Name: b
     1274  Address of:
     1275    Name: a
     1276
     1277array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1278  Name: ?=?
     1279...to:
     1280  Address of:
     1281    Name: b
     1282  Address of:
     1283    Name: a
     1284
     1285array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1286  Name: ?=?
     1287...to:
     1288  Address of:
     1289    Name: b
     1290  Address of:
     1291    Name: a
     1292
     1293array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1294  Name: ?=?
     1295...to:
     1296  Address of:
     1297    Name: b
     1298  Address of:
     1299    Name: a
     1300
     1301array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1302  Name: ?=?
     1303...to:
     1304  Address of:
     1305    Name: b
     1306  Address of:
     1307    Name: a
     1308
     1309array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1310  Name: ?=?
     1311...to:
     1312  Address of:
     1313    Name: b
     1314  Address of:
     1315    Name: a
     1316
     1317array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1318  Name: ?=?
     1319...to:
     1320  Address of:
     1321    Name: b
     1322  Address of:
     1323    Name: a
     1324
     1325array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1326  Name: ?=?
     1327...to:
     1328  Address of:
     1329    Name: b
     1330  Address of:
     1331    Name: a
     1332
     1333array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1334  Name: ?=?
     1335...to:
     1336  Address of:
     1337    Name: b
     1338  Address of:
     1339    Name: a
     1340
     1341array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1342  Name: ?=?
     1343...to:
     1344  Address of:
     1345    Name: b
     1346  Address of:
     1347    Name: a
     1348
     1349array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1350  Name: ?=?
     1351...to:
     1352  Address of:
     1353    Name: b
     1354  Address of:
     1355    Name: a
     1356
     1357array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1358  Name: ?=?
     1359...to:
     1360  Address of:
     1361    Name: b
     1362  Address of:
     1363    Name: a
     1364
     1365array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1366  Name: ?=?
     1367...to:
     1368  Address of:
     1369    Name: b
     1370  Address of:
     1371    Name: a
     1372
     1373array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1374  Name: ?=?
     1375...to:
     1376  Address of:
     1377    Name: b
     1378  Address of:
     1379    Name: a
     1380
     1381array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1382  Name: ?=?
     1383...to:
     1384  Address of:
     1385    Name: b
     1386  Address of:
     1387    Name: a
     1388
     1389array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1390  Name: ?=?
     1391...to:
     1392  Address of:
     1393    Name: b
     1394  Address of:
     1395    Name: a
     1396
     1397array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1398  Name: ?=?
     1399...to:
     1400  Address of:
     1401    Name: b
     1402  Address of:
     1403    Name: a
     1404
     1405array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1406  Name: ?=?
     1407...to:
     1408  Address of:
     1409    Name: b
     1410  Address of:
     1411    Name: a
     1412
     1413array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1414  Name: zip
     1415...to:
     1416  Name: a
     1417  Name: b
     1418
     1419array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1420  Name: zip
     1421...to:
     1422  Name: a
     1423  Name: b
     1424
     1425array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1426  Name: zip
     1427...to:
     1428  Name: a
     1429  Name: b
     1430
     1431array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1432  Name: zip
     1433...to:
     1434  Name: a
     1435  Name: b
     1436
     1437array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1438  Name: zip
     1439...to:
     1440  Name: a
     1441  Name: b
     1442
     1443array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1444  Name: zip
     1445...to:
     1446  Name: a
     1447  Name: b
     1448
     1449array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1450  Name: zip
     1451...to:
     1452  Name: a
     1453  Name: b
     1454
     1455array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1456  Name: zip
     1457...to:
     1458  Name: a
     1459  Name: b
     1460
     1461array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1462  Name: zip
     1463...to:
     1464  Name: a
     1465  Name: b
     1466
     1467array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1468  Name: zip
     1469...to:
     1470  Name: a
     1471  Name: b
     1472
     1473array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1474  Name: zip
     1475...to:
     1476  Name: a
     1477  Name: b
     1478
     1479array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1480  Name: zip
     1481...to:
     1482  Name: a
     1483  Name: b
     1484
     1485array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1486  Name: zip
     1487...to:
     1488  Name: a
     1489  Name: b
     1490
     1491array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1492  Name: zip
     1493...to:
     1494  Name: a
     1495  Name: b
     1496
     1497array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1498  Name: zip
     1499...to:
     1500  Name: a
     1501  Name: b
     1502
     1503array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1504  Name: zip
     1505...to:
     1506  Name: a
     1507  Name: b
     1508
     1509array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1510  Name: zip
     1511...to:
     1512  Name: a
     1513  Name: b
     1514
     1515array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1516  Name: zip
     1517...to:
     1518  Name: a
     1519  Name: b
     1520
     1521array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1522  Name: zip
     1523...to:
     1524  Name: a
     1525  Name: b
     1526
     1527array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1528  Name: zip
     1529...to:
     1530  Name: a
     1531  Name: b
     1532
     1533array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1534  Name: zip
     1535...to:
     1536  Name: a
     1537  Name: b
     1538
     1539array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1540  Name: zip
     1541...to:
     1542  Name: a
     1543  Name: b
     1544
     1545array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1546  Name: zip
     1547...to:
     1548  Name: a
     1549  Name: b
     1550
     1551array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1552  Name: zip
     1553...to:
     1554  Name: a
     1555  Name: b
     1556
     1557array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1558  Name: zip
     1559...to:
     1560  Name: a
     1561  Name: b
     1562
     1563array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1564  Name: zip
     1565...to:
     1566  Name: a
     1567  Name: b
     1568
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.x86.txt

    rc68f6e6 r2e94f3e7  
    1 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    2   Name: f
    3 ...to:
    4   Address of:
    5     Name: a
    6 
    7 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    8   Name: f
    9 ...to:
    10   Address of:
    11     Name: a
    12 
    13 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    14   Name: f
    15 ...to:
    16   Address of:
    17     Name: a
    18 
    19 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    20   Name: f
    21 ...to:
    22   Address of:
    23     Name: a
    24 
    25 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    26   Name: f
    27 ...to:
    28   Address of:
    29     Name: a
    30 
    31 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    32   Name: f
    33 ...to:
    34   Address of:
    35     Name: a
    36 
    37 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    38   Name: f
    39 ...to:
    40   Address of:
    41     Name: a
    42 
    43 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    44   Name: f
    45 ...to:
    46   Address of:
    47     Name: a
    48 
    49 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    50   Name: f
    51 ...to:
    52   Address of:
    53     Name: a
    54 
    55 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    56   Name: f
    57 ...to:
    58   Address of:
    59     Name: a
    60 
    61 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    62   Name: f
    63 ...to:
    64   Address of:
    65     Name: a
    66 
    67 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    68   Name: f
    69 ...to:
    70   Address of:
    71     Name: a
    72 
    73 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    74   Name: f
    75 ...to:
    76   Address of:
    77     Name: a
    78 
    79 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    80   Name: f
    81 ...to:
    82   Address of:
    83     Name: a
    84 
    85 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    86   Name: f
    87 ...to:
    88   Address of:
    89     Name: a
    90 
    91 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    92   Name: f
    93 ...to:
    94   Address of:
    95     Name: a
    96 
    97 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    98   Name: f
    99 ...to:
    100   Address of:
    101     Name: a
    102 
    103 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    104   Name: f
    105 ...to:
    106   Address of:
    107     Name: a
    108 
    109 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    110   Name: f
    111 ...to:
    112   Address of:
    113     Name: a
    114 
    115 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    116   Name: f
    117 ...to:
    118   Address of:
    119     Name: a
    120 
    121 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    122   Name: f
    123 ...to:
    124   Address of:
    125     Name: a
    126 
    127 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    128   Name: f
    129 ...to:
    130   Address of:
    131     Name: a
    132 
    133 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    134   Name: f
    135 ...to:
    136   Address of:
    137     Name: a
    138 
    139 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    140   Name: f
    141 ...to:
    142   Address of:
    143     Name: a
    144 
    145 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    146   Name: f
    147 ...to:
    148   Address of:
    149     Name: a
    150 
    151 array-container/dimexpr-match-cfa.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    152   Name: f
    153 ...to:
    154   Address of:
    155     Name: a
    156 
    157 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     2  Name: f
     3...to:
     4  Address of:
     5    Name: a
     6
     7array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     8  Name: f
     9...to:
     10  Address of:
     11    Name: a
     12
     13array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     14  Name: f
     15...to:
     16  Address of:
     17    Name: a
     18
     19array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     20  Name: f
     21...to:
     22  Address of:
     23    Name: a
     24
     25array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     26  Name: f
     27...to:
     28  Address of:
     29    Name: a
     30
     31array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     32  Name: f
     33...to:
     34  Address of:
     35    Name: a
     36
     37array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     38  Name: f
     39...to:
     40  Address of:
     41    Name: a
     42
     43array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     44  Name: f
     45...to:
     46  Address of:
     47    Name: a
     48
     49array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     50  Name: f
     51...to:
     52  Address of:
     53    Name: a
     54
     55array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     56  Name: f
     57...to:
     58  Address of:
     59    Name: a
     60
     61array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     62  Name: f
     63...to:
     64  Address of:
     65    Name: a
     66
     67array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     68  Name: f
     69...to:
     70  Address of:
     71    Name: a
     72
     73array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     74  Name: f
     75...to:
     76  Address of:
     77    Name: a
     78
     79array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     80  Name: f
     81...to:
     82  Address of:
     83    Name: a
     84
     85array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     86  Name: f
     87...to:
     88  Address of:
     89    Name: a
     90
     91array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     92  Name: f
     93...to:
     94  Address of:
     95    Name: a
     96
     97array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     98  Name: f
     99...to:
     100  Address of:
     101    Name: a
     102
     103array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     104  Name: f
     105...to:
     106  Address of:
     107    Name: a
     108
     109array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     110  Name: f
     111...to:
     112  Address of:
     113    Name: a
     114
     115array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     116  Name: f
     117...to:
     118  Address of:
     119    Name: a
     120
     121array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     122  Name: f
     123...to:
     124  Address of:
     125    Name: a
     126
     127array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     128  Name: f
     129...to:
     130  Address of:
     131    Name: a
     132
     133array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     134  Name: f
     135...to:
     136  Address of:
     137    Name: a
     138
     139array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     140  Name: f
     141...to:
     142  Address of:
     143    Name: a
     144
     145array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     146  Name: f
     147...to:
     148  Address of:
     149    Name: a
     150
     151array-container/dimexpr-match-cfa.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     152  Name: f
     153...to:
     154  Address of:
     155    Name: a
     156
     157array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    158158  Address of:
    159159    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    171171    float
    172172
    173 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    174174  Address of:
    175175    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    187187    float
    188188
    189 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    190190  Address of:
    191191    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    203203    float
    204204
    205 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    206206  Address of:
    207207    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    219219    float
    220220
    221 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    222222  Address of:
    223223    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    235235    float
    236236
    237 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    238238  Address of:
    239239    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    251251    float
    252252
    253 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    254254  Address of:
    255255    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    267267    float
    268268
    269 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    270270  Address of:
    271271    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    283283    float
    284284
    285 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    286286  Address of:
    287287    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    299299    float
    300300
    301 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    302302  Address of:
    303303    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    315315    float
    316316
    317 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    318318  Address of:
    319319    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    324324    float
    325325
    326 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    327327  Address of:
    328328    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    333333    float
    334334
    335 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    336336  Address of:
    337337    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    342342    float
    343343
    344 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    345345  Address of:
    346346    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    351351    float
    352352
    353 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    354354  Address of:
    355355    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    360360    float
    361361
    362 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    363363  Address of:
    364364    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    376376    float
    377377
    378 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    379379  Address of:
    380380    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    392392    float
    393393
    394 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    395395  Address of:
    396396    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    408408    float
    409409
    410 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    411411  Address of:
    412412    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    424424    float
    425425
    426 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    427427  Address of:
    428428    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    440440    float
    441441
    442 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    443443  Address of:
    444444    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    456456    float
    457457
    458 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    459459  Address of:
    460460    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    472472    float
    473473
    474 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    475475  Address of:
    476476    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    488488    float
    489489
    490 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    491491  Address of:
    492492    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    504504    float
    505505
    506 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    507507  Address of:
    508508    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    520520    float
    521521
    522 array-container/dimexpr-match-cfa.cfa:68:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    523523  Address of:
    524524    Name: a  InitAlternative: pointer to instance of struct arpk with body
     
    536536    float
    537537
    538 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    539   Name: ?=?
    540 ...to:
    541   Name: b
    542   Address of:
    543     Name: a
    544 
    545 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    546   Name: ?=?
    547 ...to:
    548   Name: b
    549   Address of:
    550     Name: a
    551 
    552 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    553   Name: ?=?
    554 ...to:
    555   Name: b
    556   Address of:
    557     Name: a
    558 
    559 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    560   Name: ?=?
    561 ...to:
    562   Name: b
    563   Address of:
    564     Name: a
    565 
    566 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    567   Name: ?=?
    568 ...to:
    569   Name: b
    570   Address of:
    571     Name: a
    572 
    573 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    574   Name: ?=?
    575 ...to:
    576   Name: b
    577   Address of:
    578     Name: a
    579 
    580 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    581   Name: ?=?
    582 ...to:
    583   Name: b
    584   Address of:
    585     Name: a
    586 
    587 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    588   Name: ?=?
    589 ...to:
    590   Name: b
    591   Address of:
    592     Name: a
    593 
    594 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    595   Name: ?=?
    596 ...to:
    597   Name: b
    598   Address of:
    599     Name: a
    600 
    601 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    602   Name: ?=?
    603 ...to:
    604   Name: b
    605   Address of:
    606     Name: a
    607 
    608 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    609   Name: ?=?
    610 ...to:
    611   Name: b
    612   Address of:
    613     Name: a
    614 
    615 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    616   Name: ?=?
    617 ...to:
    618   Name: b
    619   Address of:
    620     Name: a
    621 
    622 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    623   Name: ?=?
    624 ...to:
    625   Name: b
    626   Address of:
    627     Name: a
    628 
    629 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    630   Name: ?=?
    631 ...to:
    632   Name: b
    633   Address of:
    634     Name: a
    635 
    636 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    637   Name: ?=?
    638 ...to:
    639   Name: b
    640   Address of:
    641     Name: a
    642 
    643 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    644   Name: ?=?
    645 ...to:
    646   Name: b
    647   Address of:
    648     Name: a
    649 
    650 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    651   Name: ?=?
    652 ...to:
    653   Name: b
    654   Address of:
    655     Name: a
    656 
    657 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    658   Name: ?=?
    659 ...to:
    660   Name: b
    661   Address of:
    662     Name: a
    663 
    664 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    665   Name: ?=?
    666 ...to:
    667   Name: b
    668   Address of:
    669     Name: a
    670 
    671 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    672   Name: ?=?
    673 ...to:
    674   Name: b
    675   Address of:
    676     Name: a
    677 
    678 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    679   Name: ?=?
    680 ...to:
    681   Name: b
    682   Address of:
    683     Name: a
    684 
    685 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    686   Name: ?=?
    687 ...to:
    688   Name: b
    689   Address of:
    690     Name: a
    691 
    692 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    693   Name: ?=?
    694 ...to:
    695   Name: b
    696   Address of:
    697     Name: a
    698 
    699 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    700   Name: ?=?
    701 ...to:
    702   Name: b
    703   Address of:
    704     Name: a
    705 
    706 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    707   Name: ?=?
    708 ...to:
    709   Name: b
    710   Address of:
    711     Name: a
    712 
    713 array-container/dimexpr-match-cfa.cfa:77:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    714   Name: ?=?
    715 ...to:
    716   Name: b
    717   Address of:
    718     Name: a
    719 
    720 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    721   Name: f
    722 ...to:
    723   Name: a
    724 
    725 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    726   Name: f
    727 ...to:
    728   Name: a
    729 
    730 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    731   Name: f
    732 ...to:
    733   Name: a
    734 
    735 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    736   Name: f
    737 ...to:
    738   Name: a
    739 
    740 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    741   Name: f
    742 ...to:
    743   Name: a
    744 
    745 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    746   Name: f
    747 ...to:
    748   Name: a
    749 
    750 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    751   Name: f
    752 ...to:
    753   Name: a
    754 
    755 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    756   Name: f
    757 ...to:
    758   Name: a
    759 
    760 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    761   Name: f
    762 ...to:
    763   Name: a
    764 
    765 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    766   Name: f
    767 ...to:
    768   Name: a
    769 
    770 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    771   Name: f
    772 ...to:
    773   Name: a
    774 
    775 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    776   Name: f
    777 ...to:
    778   Name: a
    779 
    780 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    781   Name: f
    782 ...to:
    783   Name: a
    784 
    785 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    786   Name: f
    787 ...to:
    788   Name: a
    789 
    790 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    791   Name: f
    792 ...to:
    793   Name: a
    794 
    795 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    796   Name: f
    797 ...to:
    798   Name: a
    799 
    800 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    801   Name: f
    802 ...to:
    803   Name: a
    804 
    805 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    806   Name: f
    807 ...to:
    808   Name: a
    809 
    810 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    811   Name: f
    812 ...to:
    813   Name: a
    814 
    815 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    816   Name: f
    817 ...to:
    818   Name: a
    819 
    820 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    821   Name: f
    822 ...to:
    823   Name: a
    824 
    825 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    826   Name: f
    827 ...to:
    828   Name: a
    829 
    830 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    831   Name: f
    832 ...to:
    833   Name: a
    834 
    835 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    836   Name: f
    837 ...to:
    838   Name: a
    839 
    840 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    841   Name: f
    842 ...to:
    843   Name: a
    844 
    845 array-container/dimexpr-match-cfa.cfa:86:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    846   Name: f
    847 ...to:
    848   Name: a
    849 
    850 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     539  Name: ?=?
     540...to:
     541  Name: b
     542  Address of:
     543    Name: a
     544
     545array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     546  Name: ?=?
     547...to:
     548  Name: b
     549  Address of:
     550    Name: a
     551
     552array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     553  Name: ?=?
     554...to:
     555  Name: b
     556  Address of:
     557    Name: a
     558
     559array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     560  Name: ?=?
     561...to:
     562  Name: b
     563  Address of:
     564    Name: a
     565
     566array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     567  Name: ?=?
     568...to:
     569  Name: b
     570  Address of:
     571    Name: a
     572
     573array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     574  Name: ?=?
     575...to:
     576  Name: b
     577  Address of:
     578    Name: a
     579
     580array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     581  Name: ?=?
     582...to:
     583  Name: b
     584  Address of:
     585    Name: a
     586
     587array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     588  Name: ?=?
     589...to:
     590  Name: b
     591  Address of:
     592    Name: a
     593
     594array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     595  Name: ?=?
     596...to:
     597  Name: b
     598  Address of:
     599    Name: a
     600
     601array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     602  Name: ?=?
     603...to:
     604  Name: b
     605  Address of:
     606    Name: a
     607
     608array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     609  Name: ?=?
     610...to:
     611  Name: b
     612  Address of:
     613    Name: a
     614
     615array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     616  Name: ?=?
     617...to:
     618  Name: b
     619  Address of:
     620    Name: a
     621
     622array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     623  Name: ?=?
     624...to:
     625  Name: b
     626  Address of:
     627    Name: a
     628
     629array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     630  Name: ?=?
     631...to:
     632  Name: b
     633  Address of:
     634    Name: a
     635
     636array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     637  Name: ?=?
     638...to:
     639  Name: b
     640  Address of:
     641    Name: a
     642
     643array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     644  Name: ?=?
     645...to:
     646  Name: b
     647  Address of:
     648    Name: a
     649
     650array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     651  Name: ?=?
     652...to:
     653  Name: b
     654  Address of:
     655    Name: a
     656
     657array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     658  Name: ?=?
     659...to:
     660  Name: b
     661  Address of:
     662    Name: a
     663
     664array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     665  Name: ?=?
     666...to:
     667  Name: b
     668  Address of:
     669    Name: a
     670
     671array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     672  Name: ?=?
     673...to:
     674  Name: b
     675  Address of:
     676    Name: a
     677
     678array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     679  Name: ?=?
     680...to:
     681  Name: b
     682  Address of:
     683    Name: a
     684
     685array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     686  Name: ?=?
     687...to:
     688  Name: b
     689  Address of:
     690    Name: a
     691
     692array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     693  Name: ?=?
     694...to:
     695  Name: b
     696  Address of:
     697    Name: a
     698
     699array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     700  Name: ?=?
     701...to:
     702  Name: b
     703  Address of:
     704    Name: a
     705
     706array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     707  Name: ?=?
     708...to:
     709  Name: b
     710  Address of:
     711    Name: a
     712
     713array-container/dimexpr-match-cfa.cfa:76:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     714  Name: ?=?
     715...to:
     716  Name: b
     717  Address of:
     718    Name: a
     719
     720array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     721  Name: f
     722...to:
     723  Name: a
     724
     725array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     726  Name: f
     727...to:
     728  Name: a
     729
     730array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     731  Name: f
     732...to:
     733  Name: a
     734
     735array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     736  Name: f
     737...to:
     738  Name: a
     739
     740array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     741  Name: f
     742...to:
     743  Name: a
     744
     745array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     746  Name: f
     747...to:
     748  Name: a
     749
     750array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     751  Name: f
     752...to:
     753  Name: a
     754
     755array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     756  Name: f
     757...to:
     758  Name: a
     759
     760array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     761  Name: f
     762...to:
     763  Name: a
     764
     765array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     766  Name: f
     767...to:
     768  Name: a
     769
     770array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     771  Name: f
     772...to:
     773  Name: a
     774
     775array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     776  Name: f
     777...to:
     778  Name: a
     779
     780array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     781  Name: f
     782...to:
     783  Name: a
     784
     785array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     786  Name: f
     787...to:
     788  Name: a
     789
     790array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     791  Name: f
     792...to:
     793  Name: a
     794
     795array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     796  Name: f
     797...to:
     798  Name: a
     799
     800array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     801  Name: f
     802...to:
     803  Name: a
     804
     805array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     806  Name: f
     807...to:
     808  Name: a
     809
     810array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     811  Name: f
     812...to:
     813  Name: a
     814
     815array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     816  Name: f
     817...to:
     818  Name: a
     819
     820array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     821  Name: f
     822...to:
     823  Name: a
     824
     825array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     826  Name: f
     827...to:
     828  Name: a
     829
     830array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     831  Name: f
     832...to:
     833  Name: a
     834
     835array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     836  Name: f
     837...to:
     838  Name: a
     839
     840array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     841  Name: f
     842...to:
     843  Name: a
     844
     845array-container/dimexpr-match-cfa.cfa:85:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     846  Name: f
     847...to:
     848  Name: a
     849
     850array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    851851  Name: a  InitAlternative: reference to instance of struct arpk with body
    852852  ... with parameters
     
    863863    float
    864864
    865 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    866866  Name: a  InitAlternative: reference to instance of struct arpk with body
    867867  ... with parameters
     
    878878    float
    879879
    880 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    881881  Name: a  InitAlternative: reference to instance of struct arpk with body
    882882  ... with parameters
     
    893893    float
    894894
    895 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    896896  Name: a  InitAlternative: reference to instance of struct arpk with body
    897897  ... with parameters
     
    908908    float
    909909
    910 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    911911  Name: a  InitAlternative: reference to instance of struct arpk with body
    912912  ... with parameters
     
    923923    float
    924924
    925 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    926926  Name: a  InitAlternative: reference to instance of struct arpk with body
    927927  ... with parameters
     
    938938    float
    939939
    940 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    941941  Name: a  InitAlternative: reference to instance of struct arpk with body
    942942  ... with parameters
     
    953953    float
    954954
    955 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    956956  Name: a  InitAlternative: reference to instance of struct arpk with body
    957957  ... with parameters
     
    968968    float
    969969
    970 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    971971  Name: a  InitAlternative: reference to instance of struct arpk with body
    972972  ... with parameters
     
    983983    float
    984984
    985 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    986986  Name: a  InitAlternative: reference to instance of struct arpk with body
    987987  ... with parameters
     
    998998    float
    999999
    1000 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10011001  Name: a  InitAlternative: reference to instance of struct arpk with body
    10021002  ... with parameters
     
    10061006    float
    10071007
    1008 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10091009  Name: a  InitAlternative: reference to instance of struct arpk with body
    10101010  ... with parameters
     
    10141014    float
    10151015
    1016 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10171017  Name: a  InitAlternative: reference to instance of struct arpk with body
    10181018  ... with parameters
     
    10221022    float
    10231023
    1024 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10251025  Name: a  InitAlternative: reference to instance of struct arpk with body
    10261026  ... with parameters
     
    10301030    float
    10311031
    1032 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10331033  Name: a  InitAlternative: reference to instance of struct arpk with body
    10341034  ... with parameters
     
    10381038    float
    10391039
    1040 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10411041  Name: a  InitAlternative: reference to instance of struct arpk with body
    10421042  ... with parameters
     
    10531053    float
    10541054
    1055 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10561056  Name: a  InitAlternative: reference to instance of struct arpk with body
    10571057  ... with parameters
     
    10681068    float
    10691069
    1070 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10711071  Name: a  InitAlternative: reference to instance of struct arpk with body
    10721072  ... with parameters
     
    10831083    float
    10841084
    1085 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    10861086  Name: a  InitAlternative: reference to instance of struct arpk with body
    10871087  ... with parameters
     
    10981098    float
    10991099
    1100 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11011101  Name: a  InitAlternative: reference to instance of struct arpk with body
    11021102  ... with parameters
     
    11131113    float
    11141114
    1115 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11161116  Name: a  InitAlternative: reference to instance of struct arpk with body
    11171117  ... with parameters
     
    11281128    float
    11291129
    1130 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11311131  Name: a  InitAlternative: reference to instance of struct arpk with body
    11321132  ... with parameters
     
    11431143    float
    11441144
    1145 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11461146  Name: a  InitAlternative: reference to instance of struct arpk with body
    11471147  ... with parameters
     
    11581158    float
    11591159
    1160 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11611161  Name: a  InitAlternative: reference to instance of struct arpk with body
    11621162  ... with parameters
     
    11731173    float
    11741174
    1175 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11761176  Name: a  InitAlternative: reference to instance of struct arpk with body
    11771177  ... with parameters
     
    11881188    float
    11891189
    1190 array-container/dimexpr-match-cfa.cfa:94:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
    11911191  Name: a  InitAlternative: reference to instance of struct arpk with body
    11921192  ... with parameters
     
    12031203    float
    12041204
    1205 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1206   Name: ?=?
    1207 ...to:
    1208   Address of:
    1209     Name: b
    1210   Address of:
    1211     Name: a
    1212 
    1213 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1214   Name: ?=?
    1215 ...to:
    1216   Address of:
    1217     Name: b
    1218   Address of:
    1219     Name: a
    1220 
    1221 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1222   Name: ?=?
    1223 ...to:
    1224   Address of:
    1225     Name: b
    1226   Address of:
    1227     Name: a
    1228 
    1229 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1230   Name: ?=?
    1231 ...to:
    1232   Address of:
    1233     Name: b
    1234   Address of:
    1235     Name: a
    1236 
    1237 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1238   Name: ?=?
    1239 ...to:
    1240   Address of:
    1241     Name: b
    1242   Address of:
    1243     Name: a
    1244 
    1245 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1246   Name: ?=?
    1247 ...to:
    1248   Address of:
    1249     Name: b
    1250   Address of:
    1251     Name: a
    1252 
    1253 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1254   Name: ?=?
    1255 ...to:
    1256   Address of:
    1257     Name: b
    1258   Address of:
    1259     Name: a
    1260 
    1261 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1262   Name: ?=?
    1263 ...to:
    1264   Address of:
    1265     Name: b
    1266   Address of:
    1267     Name: a
    1268 
    1269 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1270   Name: ?=?
    1271 ...to:
    1272   Address of:
    1273     Name: b
    1274   Address of:
    1275     Name: a
    1276 
    1277 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1278   Name: ?=?
    1279 ...to:
    1280   Address of:
    1281     Name: b
    1282   Address of:
    1283     Name: a
    1284 
    1285 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1286   Name: ?=?
    1287 ...to:
    1288   Address of:
    1289     Name: b
    1290   Address of:
    1291     Name: a
    1292 
    1293 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1294   Name: ?=?
    1295 ...to:
    1296   Address of:
    1297     Name: b
    1298   Address of:
    1299     Name: a
    1300 
    1301 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1302   Name: ?=?
    1303 ...to:
    1304   Address of:
    1305     Name: b
    1306   Address of:
    1307     Name: a
    1308 
    1309 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1310   Name: ?=?
    1311 ...to:
    1312   Address of:
    1313     Name: b
    1314   Address of:
    1315     Name: a
    1316 
    1317 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1318   Name: ?=?
    1319 ...to:
    1320   Address of:
    1321     Name: b
    1322   Address of:
    1323     Name: a
    1324 
    1325 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1326   Name: ?=?
    1327 ...to:
    1328   Address of:
    1329     Name: b
    1330   Address of:
    1331     Name: a
    1332 
    1333 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1334   Name: ?=?
    1335 ...to:
    1336   Address of:
    1337     Name: b
    1338   Address of:
    1339     Name: a
    1340 
    1341 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1342   Name: ?=?
    1343 ...to:
    1344   Address of:
    1345     Name: b
    1346   Address of:
    1347     Name: a
    1348 
    1349 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1350   Name: ?=?
    1351 ...to:
    1352   Address of:
    1353     Name: b
    1354   Address of:
    1355     Name: a
    1356 
    1357 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1358   Name: ?=?
    1359 ...to:
    1360   Address of:
    1361     Name: b
    1362   Address of:
    1363     Name: a
    1364 
    1365 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1366   Name: ?=?
    1367 ...to:
    1368   Address of:
    1369     Name: b
    1370   Address of:
    1371     Name: a
    1372 
    1373 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1374   Name: ?=?
    1375 ...to:
    1376   Address of:
    1377     Name: b
    1378   Address of:
    1379     Name: a
    1380 
    1381 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1382   Name: ?=?
    1383 ...to:
    1384   Address of:
    1385     Name: b
    1386   Address of:
    1387     Name: a
    1388 
    1389 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1390   Name: ?=?
    1391 ...to:
    1392   Address of:
    1393     Name: b
    1394   Address of:
    1395     Name: a
    1396 
    1397 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1398   Name: ?=?
    1399 ...to:
    1400   Address of:
    1401     Name: b
    1402   Address of:
    1403     Name: a
    1404 
    1405 array-container/dimexpr-match-cfa.cfa:103:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1406   Name: ?=?
    1407 ...to:
    1408   Address of:
    1409     Name: b
    1410   Address of:
    1411     Name: a
    1412 
    1413 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1414   Name: zip
    1415 ...to:
    1416   Name: a
    1417   Name: b
    1418 
    1419 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1420   Name: zip
    1421 ...to:
    1422   Name: a
    1423   Name: b
    1424 
    1425 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1426   Name: zip
    1427 ...to:
    1428   Name: a
    1429   Name: b
    1430 
    1431 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1432   Name: zip
    1433 ...to:
    1434   Name: a
    1435   Name: b
    1436 
    1437 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1438   Name: zip
    1439 ...to:
    1440   Name: a
    1441   Name: b
    1442 
    1443 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1444   Name: zip
    1445 ...to:
    1446   Name: a
    1447   Name: b
    1448 
    1449 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1450   Name: zip
    1451 ...to:
    1452   Name: a
    1453   Name: b
    1454 
    1455 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1456   Name: zip
    1457 ...to:
    1458   Name: a
    1459   Name: b
    1460 
    1461 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1462   Name: zip
    1463 ...to:
    1464   Name: a
    1465   Name: b
    1466 
    1467 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1468   Name: zip
    1469 ...to:
    1470   Name: a
    1471   Name: b
    1472 
    1473 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1474   Name: zip
    1475 ...to:
    1476   Name: a
    1477   Name: b
    1478 
    1479 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1480   Name: zip
    1481 ...to:
    1482   Name: a
    1483   Name: b
    1484 
    1485 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1486   Name: zip
    1487 ...to:
    1488   Name: a
    1489   Name: b
    1490 
    1491 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1492   Name: zip
    1493 ...to:
    1494   Name: a
    1495   Name: b
    1496 
    1497 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1498   Name: zip
    1499 ...to:
    1500   Name: a
    1501   Name: b
    1502 
    1503 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1504   Name: zip
    1505 ...to:
    1506   Name: a
    1507   Name: b
    1508 
    1509 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1510   Name: zip
    1511 ...to:
    1512   Name: a
    1513   Name: b
    1514 
    1515 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1516   Name: zip
    1517 ...to:
    1518   Name: a
    1519   Name: b
    1520 
    1521 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1522   Name: zip
    1523 ...to:
    1524   Name: a
    1525   Name: b
    1526 
    1527 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1528   Name: zip
    1529 ...to:
    1530   Name: a
    1531   Name: b
    1532 
    1533 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1534   Name: zip
    1535 ...to:
    1536   Name: a
    1537   Name: b
    1538 
    1539 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1540   Name: zip
    1541 ...to:
    1542   Name: a
    1543   Name: b
    1544 
    1545 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1546   Name: zip
    1547 ...to:
    1548   Name: a
    1549   Name: b
    1550 
    1551 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1552   Name: zip
    1553 ...to:
    1554   Name: a
    1555   Name: b
    1556 
    1557 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1558   Name: zip
    1559 ...to:
    1560   Name: a
    1561   Name: b
    1562 
    1563 array-container/dimexpr-match-cfa.cfa:112:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
    1564   Name: zip
    1565 ...to:
    1566   Name: a
    1567   Name: b
    1568 
     1205array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1206  Name: ?=?
     1207...to:
     1208  Address of:
     1209    Name: b
     1210  Address of:
     1211    Name: a
     1212
     1213array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1214  Name: ?=?
     1215...to:
     1216  Address of:
     1217    Name: b
     1218  Address of:
     1219    Name: a
     1220
     1221array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1222  Name: ?=?
     1223...to:
     1224  Address of:
     1225    Name: b
     1226  Address of:
     1227    Name: a
     1228
     1229array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1230  Name: ?=?
     1231...to:
     1232  Address of:
     1233    Name: b
     1234  Address of:
     1235    Name: a
     1236
     1237array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1238  Name: ?=?
     1239...to:
     1240  Address of:
     1241    Name: b
     1242  Address of:
     1243    Name: a
     1244
     1245array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1246  Name: ?=?
     1247...to:
     1248  Address of:
     1249    Name: b
     1250  Address of:
     1251    Name: a
     1252
     1253array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1254  Name: ?=?
     1255...to:
     1256  Address of:
     1257    Name: b
     1258  Address of:
     1259    Name: a
     1260
     1261array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1262  Name: ?=?
     1263...to:
     1264  Address of:
     1265    Name: b
     1266  Address of:
     1267    Name: a
     1268
     1269array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1270  Name: ?=?
     1271...to:
     1272  Address of:
     1273    Name: b
     1274  Address of:
     1275    Name: a
     1276
     1277array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1278  Name: ?=?
     1279...to:
     1280  Address of:
     1281    Name: b
     1282  Address of:
     1283    Name: a
     1284
     1285array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1286  Name: ?=?
     1287...to:
     1288  Address of:
     1289    Name: b
     1290  Address of:
     1291    Name: a
     1292
     1293array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1294  Name: ?=?
     1295...to:
     1296  Address of:
     1297    Name: b
     1298  Address of:
     1299    Name: a
     1300
     1301array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1302  Name: ?=?
     1303...to:
     1304  Address of:
     1305    Name: b
     1306  Address of:
     1307    Name: a
     1308
     1309array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1310  Name: ?=?
     1311...to:
     1312  Address of:
     1313    Name: b
     1314  Address of:
     1315    Name: a
     1316
     1317array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1318  Name: ?=?
     1319...to:
     1320  Address of:
     1321    Name: b
     1322  Address of:
     1323    Name: a
     1324
     1325array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1326  Name: ?=?
     1327...to:
     1328  Address of:
     1329    Name: b
     1330  Address of:
     1331    Name: a
     1332
     1333array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1334  Name: ?=?
     1335...to:
     1336  Address of:
     1337    Name: b
     1338  Address of:
     1339    Name: a
     1340
     1341array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1342  Name: ?=?
     1343...to:
     1344  Address of:
     1345    Name: b
     1346  Address of:
     1347    Name: a
     1348
     1349array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1350  Name: ?=?
     1351...to:
     1352  Address of:
     1353    Name: b
     1354  Address of:
     1355    Name: a
     1356
     1357array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1358  Name: ?=?
     1359...to:
     1360  Address of:
     1361    Name: b
     1362  Address of:
     1363    Name: a
     1364
     1365array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1366  Name: ?=?
     1367...to:
     1368  Address of:
     1369    Name: b
     1370  Address of:
     1371    Name: a
     1372
     1373array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1374  Name: ?=?
     1375...to:
     1376  Address of:
     1377    Name: b
     1378  Address of:
     1379    Name: a
     1380
     1381array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1382  Name: ?=?
     1383...to:
     1384  Address of:
     1385    Name: b
     1386  Address of:
     1387    Name: a
     1388
     1389array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1390  Name: ?=?
     1391...to:
     1392  Address of:
     1393    Name: b
     1394  Address of:
     1395    Name: a
     1396
     1397array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1398  Name: ?=?
     1399...to:
     1400  Address of:
     1401    Name: b
     1402  Address of:
     1403    Name: a
     1404
     1405array-container/dimexpr-match-cfa.cfa:102:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1406  Name: ?=?
     1407...to:
     1408  Address of:
     1409    Name: b
     1410  Address of:
     1411    Name: a
     1412
     1413array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1414  Name: zip
     1415...to:
     1416  Name: a
     1417  Name: b
     1418
     1419array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1420  Name: zip
     1421...to:
     1422  Name: a
     1423  Name: b
     1424
     1425array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1426  Name: zip
     1427...to:
     1428  Name: a
     1429  Name: b
     1430
     1431array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1432  Name: zip
     1433...to:
     1434  Name: a
     1435  Name: b
     1436
     1437array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1438  Name: zip
     1439...to:
     1440  Name: a
     1441  Name: b
     1442
     1443array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1444  Name: zip
     1445...to:
     1446  Name: a
     1447  Name: b
     1448
     1449array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1450  Name: zip
     1451...to:
     1452  Name: a
     1453  Name: b
     1454
     1455array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1456  Name: zip
     1457...to:
     1458  Name: a
     1459  Name: b
     1460
     1461array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1462  Name: zip
     1463...to:
     1464  Name: a
     1465  Name: b
     1466
     1467array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1468  Name: zip
     1469...to:
     1470  Name: a
     1471  Name: b
     1472
     1473array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1474  Name: zip
     1475...to:
     1476  Name: a
     1477  Name: b
     1478
     1479array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1480  Name: zip
     1481...to:
     1482  Name: a
     1483  Name: b
     1484
     1485array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1486  Name: zip
     1487...to:
     1488  Name: a
     1489  Name: b
     1490
     1491array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1492  Name: zip
     1493...to:
     1494  Name: a
     1495  Name: b
     1496
     1497array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1498  Name: zip
     1499...to:
     1500  Name: a
     1501  Name: b
     1502
     1503array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1504  Name: zip
     1505...to:
     1506  Name: a
     1507  Name: b
     1508
     1509array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1510  Name: zip
     1511...to:
     1512  Name: a
     1513  Name: b
     1514
     1515array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1516  Name: zip
     1517...to:
     1518  Name: a
     1519  Name: b
     1520
     1521array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1522  Name: zip
     1523...to:
     1524  Name: a
     1525  Name: b
     1526
     1527array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1528  Name: zip
     1529...to:
     1530  Name: a
     1531  Name: b
     1532
     1533array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1534  Name: zip
     1535...to:
     1536  Name: a
     1537  Name: b
     1538
     1539array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1540  Name: zip
     1541...to:
     1542  Name: a
     1543  Name: b
     1544
     1545array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1546  Name: zip
     1547...to:
     1548  Name: a
     1549  Name: b
     1550
     1551array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1552  Name: zip
     1553...to:
     1554  Name: a
     1555  Name: b
     1556
     1557array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1558  Name: zip
     1559...to:
     1560  Name: a
     1561  Name: b
     1562
     1563array-container/dimexpr-match-cfa.cfa:115:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
     1564  Name: zip
     1565...to:
     1566  Name: a
     1567  Name: b
     1568
  • tests/array-container/dimexpr-match-c.cfa

    rc68f6e6 r2e94f3e7  
    1616#include "dimexpr-match.hfa"     // test framework
    1717
    18 #ifdef TRY_WISH_1 // "unification as-if"
    19 forall( [N] )
    20 void zip( float (*a)[N], float (*b)[N] ) {}
    21 #endif
    22 
    2318DECLN_runTests {
    2419
     
    2621    int mut7 = 7, mut42 = 42;
    2722
     23   
    2824    #define TRY_COMPAT( LV, RV )        \
    2925    {                                   \
     
    8379
    8480  #ifdef TRY_WISH_1 // "unification as-if"
     81    forall( [N] )
     82    void zip( float (*a)[N], float (*b)[N] ) {}
     83
    8584    #define TRY_COMPAT( LV, RV )        \
    8685    {                                   \
     
    9493
    9594  #endif
     95
     96
     97
    9698}
  • tests/array-container/dimexpr-match-cfa.cfa

    rc68f6e6 r2e94f3e7  
    4444#endif
    4545
    46 forall( [N] )
    47 void zip( array(float, N) & a, array(float, N) & b ) {}
    4846
    4947DECLN_runTests {
     
    5250    int mut7 = 7, mut42 = 42;
    5351
     52   
    5453    #define TRY_COMPAT( LV, RV )            \
    5554    {                                       \
     
    104103    #undef TRY_COMPAT
    105104
     105
     106    forall( [N] )
     107    void zip( array(float, N) & a, array(float, N) & b ) {}
     108
    106109    #define TRY_COMPAT( LV, RV )            \
    107110    {                                       \
Note: See TracChangeset for help on using the changeset viewer.