Changes in / [2e94f3e7:c68f6e6]


Ignore:
Files:
1 added
23 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/colby_parsons_MMAth/Makefile

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

    r2e94f3e7 rc68f6e6  
    4141\newabbreviation{dwcas}{DWCAS}{\Newterm{double-wide (width) compare-and-set (swap)}}
    4242\newabbreviation{dcas}{DCAS}{\Newterm{double compare-and-set (swap)}}
    43 \newabbreviation{dcasw}{DCASW}{\Newterm{weak double compare-and-set (swap)}}
     43\newabbreviation{qpcas}{QPCAS}{\Newterm{queue pointer 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

    r2e94f3e7 rc68f6e6  
    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 wait-free (\ie no busy waiting) with a few atomic instructions that only create contention with other stealing workers not the victim.
     580Stealing a queue is done atomically 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 wait-free swap-algorithm is needed.
     702To atomically swap the two @worker_queues@ pointers during work stealing, a novel atomic 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 and can swap two values, where the comparisons are superfluous.
     739\gls{dcas} can be used to swap two values; for this use case 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 for this use case is simulated, called \gls{dcasw}.
    752 The \gls{dcasw} is effectively a \gls{dcas} special cased in two ways:
     751Hence, a novel atomic swap specific to the actor use case is simulated, called \gls{qpcas}.
     752The \gls{qpcas} is effectively a \gls{dcas} special cased in a few 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 DCASW( T * dst, T * src ) {
     757bool QPCAS( 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:dcaswImpl} shows the \CFA pseudocode for the \gls{dcasw}.
     764Figure~\ref{f:qpcasImpl} shows the \CFA pseudocode for the \gls{qpcas}.
    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 no fixup is needed.
    773 Note, @my_queue@ can never be equal to null at this point since thieves only set their own queues pointers to null when stealing.
    774 At no other point is a queue pointer set to null.
    775 Since each worker owns a disjoint range of the queue array, it is impossible for @my_queue@ to be null.
    776 Note, this algorithm is simplified due to each worker owning a disjoint range, allowing only the @vic_queue@ to be checked for null.
    777 This was not listed as a special case of this algorithm, since this requirement can be avoided by modifying Step 1 of Figure~\ref{f:dcaswImpl} to also check @my_queue@ for null.
    778 Further discussion of this generalization is omitted since it is not needed for the presented application.
     772No state has changed at this point so the thief just returns.
     773Note, thieves only set their own queues pointers to null when stealing, and queue pointers are not set to null anywhere else.
     774As such, it is impossible for @my_queue@ to be null since each worker owns a disjoint range of the queue array.
     775Hence, only @vic_queue@ is checked for null.
    779776\item
    780777attempts to atomically set the thief's queue pointer to null.
     
    782779At this point, the thief-turned-victim fails, and since it has not changed any state, it just returns false.
    783780If the @CAS@ succeeds, the thief's queue pointer is now null.
    784 Nulling the pointer is safe since only thieves look at other worker's queue ranges, and whenever thieves need to dereference a queue pointer, it is checked for null.
     781Only thieves look at other worker's queue ranges, and whenever thieves need to dereference a queue pointer, it is checked for null.
     782A thief can only see the null queue pointer when looking for queues to steal or attempting a queue swap.
     783If looking for queues, the thief will skip the null pointer, thus only the queue swap case needs to be considered for correctness.
     784
    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 set the thief's queue pointer to @vic_queue@ completing the swap.
     790sets the thief's queue pointer to @vic_queue@ completing the swap.
    791791\end{enumerate}
    792792
     
    820820}
    821821\end{cfa}
    822 \caption{DCASW Concurrent}
    823 \label{f:dcaswImpl}
     822\caption{QPCAS Concurrent}
     823\label{f:qpcasImpl}
    824824\end{figure}
    825825
    826826\begin{theorem}
    827 \gls{dcasw} is correct in both the success and failure cases.
     827\gls{qpcas} 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{dcasw}.
     829To verify sequential correctness, Figure~\ref{f:seqSwap} shows a simplified \gls{qpcas}.
    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{DCASW Sequential}
     847\caption{QPCAS Sequential}
    848848\label{f:seqSwap}
    849849\end{figure}
    850850
    851 To verify concurrent correctness, it is necessary to show \gls{dcasw} is wait-free, \ie all thieves fail or succeed in swapping the queues in a finite number of steps.
    852 This property 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 proof of correctness is shown through the existence of an invariant.
     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
     856The concurrent 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, 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 (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.
    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 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.
     883Note that the pointers having unique memory locations prevents the ABA problem.
    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:dcaswImpl}, 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:qpcasImpl}, 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

    r2e94f3e7 rc68f6e6  
    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@.
    12 From the novel copy-queue data structure in the actor system and the plethora of user-supporting safety features, all these utilities build upon existing tools with value added.
     12
     13On 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
     21From 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.
    1322Performance results verify that each new feature is comparable or better than similar features in other programming languages.
    14 
    15 \PAB{This part seems a little short.}
     23All in all, this suite of concurrent tools expands users' ability to easily write safe and performant multi-threaded programs in \CFA.
    1624
    1725\section{Future Work}
  • doc/theses/colby_parsons_MMAth/text/waituntil.tex

    r2e94f3e7 rc68f6e6  
    382382More detail on channels and their interaction with @waituntil@ appear in Section~\ref{s:wu_chans}.
    383383
    384 The trait is used by having a blocking object return a type that supports the @is_selectable@ trait.
     384The 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.
     385When used indirectly, the object's routine returns a type that supports the @is_selectable@ trait.
    385386This feature leverages \CFA's ability to overload on return type to select the correct overloaded routine for the @waituntil@ context.
    386 A selectable type is needed for types that want to support multiple operations such as channels that allow both reading and writing.
     387Indirect support through routines is needed for types that want to support multiple operations such as channels that allow both reading and writing.
    387388
    388389\section{\lstinline{waituntil} Implementation}
     
    520521This work incurs a high cost for signalling threads and heavily increase contention on internal channel locks.
    521522Furthermore, the @waituntil@ statement is polymorphic and can support resources that do not have internal locks, which also makes this approach infeasible.
    522 As such, the exclusive-or semantics is lost when using both @and@ and @or@ operators since it cannot be supported without significant complexity and significantly affects @waituntil@ performance.
     523As 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.
    523524
    524525It 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.
     
    591592If 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.
    592593This protocol ensures that signals cannot be lost and that the two races can be resolved in a safe manner.
    593 \PAB{I bet one of the readers is going to ask you to write the pseudo code for this algorithm.}
     594The implementation of this protocol is shown in Figure~\ref{f:WU_DeadlockAvoidance}.
     595
     596\begin{figure}
     597\begin{cfa}
     598bool 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}
    594625
    595626Channels in \CFA have exception-based shutdown mechanisms that the @waituntil@ statement needs to support.
     
    600631
    601632It 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.
    602 In \uC and \CFA, the \gls{synch_multiplex} mechanism have both an and/or relationship, which make the problem of checking for completion of the statement difficult.
    603 \PAB{Show an example of why this is difficult.}
     633In \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.
     634Consider the @waituntil@ in Figure~\ref{f:WU_ComplexPredicate}.
     635When the @waituntil@ thread wakes up, checking if the statement is complete is non-trivial.
     636The predicate that will return if the statement in Figure~\ref{f:WU_ComplexPredicate} is satisfied is the following.
     637\begin{cfa}
     638A && B || C || !GA && B || !GB && A || !GA && !GB && !GC
     639\end{cfa}
     640Which simplifies to:
     641\begin{cfa}
     642( A || !GA ) && ( B || !GB ) || C || !GA && !GB && !GC
     643\end{cfa}
     644Checking 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}
     648when( GA ) waituntil( A ) {}
     649and when( GB ) waituntil( B ) {}
     650or when( GC ) waituntil( C ) {}
     651\end{cfa}
     652\caption{\lstinline{waituntil} with a non-trivial predicate}
     653\label{f:WU_ComplexPredicate}
     654\end{figure}
    604655
    605656In 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.
     
    608659Once the root of the tree has both subtrees marked as @true@ then the statement is complete.
    609660As an optimization, when the internal nodes are updated, the subtrees marked as @true@ are pruned and not examined again.
    610 To support statement guards in \uC, the tree prunes a branch if the corresponding guard is false.
    611 \PAB{Show an example.}
     661To 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.
     662An 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}
    612671
    613672The \CFA @waituntil@ statement blocks a thread until a set of resources have become available that satisfy the underlying predicate.
     
    616675Leveraging 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.
    617676To 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.
    618 \PAB{Show an example.}
     677The generated code allows the predicate that is checked with each iteration to be simplified to not check guard values.
     678For example, the following would be generated for the @waituntil@ shown in Figure~\ref{f:WU_ComplexPredicate}.
     679\begin{cfa}
     680// statement completion predicate
     681bool 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
     686if ( 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}
    619696
    620697\uC's @_Select@, supports operators both inside and outside of the \lstinline[language=uC++]{_Select} clauses.
    621698In the following example, the code blocks run once their corresponding predicate inside the round braces is satisfied.
    622 % C_TODO put this is uC++ code style not cfa-style
     699
    623700\begin{lstlisting}[language=uC++,{moredelim=**[is][\color{red}]{@}{@}}]
    624701Future_ISM<int> A, B, C, D;
     
    640717however, that opens the potential for livelock.
    641718Another 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.
    642 Additionally, using resource ordering could conflict with other semantics of the @waituntil@ statement.
    643 For 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.}
    645719One 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.
    646720This approach does not work due to \gls{toctou} issues;
     
    661735\begin{cfa}
    662736bool when_conditions[N];
    663 for ( node in s )                                                                       $\C[3.75in]{// evaluate guards}$
     737for ( node in nodes )                                                                   $\C[3.75in]{// evaluate guards}$
    664738        if ( node has guard )
    665739                when_conditions[node] = node_guard;
     
    667741                when_conditions[node] = true;
    668742
    669 select_nodes s[N];                                                                      $\C{// declare N select nodes}$
     743if ( any when_conditions[node] == true ) {
     744
     745select_nodes nodes[N];                                                                  $\C{// declare N select nodes}$
    670746try {
    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         }
     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    }
    689765} finally {                                                                                     $\C{// for exception safety}$
    690         for ( registered nodes in s )                                   $\C{// deregister nodes}$
     766        for ( registered nodes in nodes )                                       $\C{// deregister nodes}$
    691767                if ( when_conditions[node] && unregister_select( resource, node )
    692768                                && on_selected( resource ) )
    693769                        run code block                                                  $\C{// run code block upon unregister}\CRT$
     770}
     771
    694772}
    695773\end{cfa}
  • src/AST/Create.cpp

    r2e94f3e7 rc68f6e6  
    4242                return nullptr;
    4343        }
    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         );
     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;
    5751}
    5852
  • src/AST/Util.cpp

    r2e94f3e7 rc68f6e6  
    2020#include "Pass.hpp"
    2121#include "TranslationUnit.hpp"
     22#include "Common/utility.h"
     23#include "GenPoly/ScopedSet.h"
    2224
    2325#include <vector>
     26
     27using GenPoly::ScopedSet;
    2428
    2529namespace ast {
     
    173177};
    174178
     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.
     183struct 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
    175365} // namespace
    176366
    177367void checkInvariants( TranslationUnit & transUnit ) {
    178         ast::Pass<InvariantCore>::run( transUnit );
     368        Pass<InvariantCore>::run( transUnit );
     369        Pass<InScopeCore>::run( transUnit );
    179370}
    180371
  • src/InitTweak/FixInitNew.cpp

    r2e94f3e7 rc68f6e6  
    4242
    4343namespace InitTweak {
     44
    4445namespace {
    4546
    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
     47// Shallow copy the pointer list for return.
     48std::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 &).
     59ast::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
     84struct SelfAssignChecker {
     85        void previsit( const ast::ApplicationExpr * appExpr );
     86};
     87
     88struct 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
     94struct 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
     107struct 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 );
     126private:
     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
     133struct 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
     142protected:
     143        ObjectSet curVars;
     144};
     145
     146// debug
     147template<typename ObjectSet>
     148struct PrintSet {
     149        PrintSet( const ObjectSet & objs ) : objs( objs ) {}
     150        const ObjectSet & objs;
     151};
     152template<typename ObjectSet>
     153PrintSet<ObjectSet> printSet( const ObjectSet & objs ) { return PrintSet<ObjectSet>( objs ); }
     154template<typename ObjectSet>
     155std::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
     164struct 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)
     179struct 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 );
     191private:
     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.
     200struct 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
     211struct 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;
     223private:
     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
     236struct 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.
     241struct 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
     248const 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
     298void 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
     318const 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
     332ast::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
     339void 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)
     346struct 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
     397bool structurallySimilar( const ast::Expr * e1, const ast::Expr * e2 ) {
     398        return ast::Pass<StructuralChecker>::read( e1, e2 );
     399}
     400
     401void 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
     412const 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
     450void 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
     458const 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
     474bool ResolveCopyCtors::skipCopyConstruct( const ast::Type * type ) { return ! isConstructable( type ); }
     475
     476const 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
     507ast::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
     565ast::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
     614const 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
     688const 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
    71741                );
    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         };
     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.
     777ast::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
     795const 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
     831const 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
     990void ObjDeclCollector::previsit( const ast::CompoundStmt * ) {
     991        GuardValue( curVars );
     992}
     993
     994void 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
     1001void 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
     1008void LabelFinder::previsit( const ast::CompoundStmt * stmt ) {
     1009        previsit( (const ast::Stmt *) stmt );
     1010        Parent::previsit( stmt );
     1011}
     1012
     1013void LabelFinder::previsit( const ast::DeclStmt * stmt ) {
     1014        previsit( (const ast::Stmt *)stmt );
     1015        Parent::previsit( stmt );
     1016}
     1017
     1018void 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.
     1035void 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
     1066void 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
     1080bool 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
     1088void 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
     1127const 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
     1230bool 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
     1241const 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
     1252void 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
     1277void 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
     1291template< typename... Params >
     1292void GenStructMemberCalls::emit( CodeLocation loc, const Params &... params ) {
     1293        SemanticErrorException err( loc, toString( params... ) );
     1294        errors.append( err );
     1295}
     1296
     1297const 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
     1303void InsertImplicitCalls::previsit(const ast::UniqueExpr * unqExpr) {
     1304        if (visitedIds.count(unqExpr->id)) visit_children = false;
     1305        else visitedIds.insert(unqExpr->id);
     1306}
     1307
     1308const 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
    2441350} // namespace
    2451351
     
    2741380}
    2751381
    276 namespace {
    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

    r2e94f3e7 rc68f6e6  
    891891                                dst = new ast::AddressExpr(dst);
    892892                        }
    893                 }
    894                 else {
     893                } else {
    895894                        dst = new ast::CastExpr(dst, new ast::ReferenceType(dst->result, {}));
    896895                }
     
    900899                        }
    901900                }
    902                 return new ast::ApplicationExpr(dst->location, ast::VariableExpr::functionPointer(dst->location, assign), {dst, src});
     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;
    903906        }
    904907
  • src/SymTab/GenImplicitCall.cpp

    r2e94f3e7 rc68f6e6  
    1616#include "GenImplicitCall.hpp"
    1717
     18#include "AST/Copy.hpp"                  // for deepCopy
    1819#include "AST/Decl.hpp"                  // for ObjectDecl
    1920#include "AST/Expr.hpp"                  // for ConstantExpr, UntypedExpr,...
     
    115116        std::string cmp, update;
    116117
     118        const ast::Expr * dimension = deepCopy( array->dimension );
    117119        if ( forward ) {
    118120                // generate: for ( int i = 0; i < N; ++i )
    119121                begin = ast::ConstantExpr::from_int( loc, 0 );
    120                 end = array->dimension;
     122                end = dimension;
    121123                cmp = "?<?";
    122124                update = "++?";
     
    124126                // generate: for ( int i = N-1; i >= 0; --i )
    125127                begin = ast::UntypedExpr::createCall( loc, "?-?",
    126                         { array->dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
     128                        { dimension, ast::ConstantExpr::from_int( loc, 1 ) } );
    127129                end = ast::ConstantExpr::from_int( loc, 0 );
    128130                cmp = "?>=?";
  • src/Validate/Autogen.cpp

    r2e94f3e7 rc68f6e6  
    532532                )
    533533        );
    534         return genImplicitCall(
     534        auto stmt = 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;
    538550}
    539551
  • src/Validate/FixQualifiedTypes.cpp

    r2e94f3e7 rc68f6e6  
    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 ) {
    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");
     93                if ( !t->type_decl ) return t;
     94
     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 );
    103101                                }
     102                        } else {
     103                                assertf( false, "unhandled qualified child type" );
    104104                        }
     105                }
    105106
    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         }
    111 
    112                 return t;
     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 );
    113112        }
    114113
  • src/Validate/ForallPointerDecay.cpp

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

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

    r2e94f3e7 rc68f6e6  
    334334                PASS( "Link Reference To Types", Validate::linkReferenceToTypes, transUnit );
    335335
     336                PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
    336337                PASS( "Fix Qualified Types", Validate::fixQualifiedTypes, transUnit );
    337338                PASS( "Eliminate Typedef", Validate::eliminateTypedef, transUnit );
     
    342343                PASS( "Fix Return Statements", InitTweak::fixReturnStatements, transUnit );
    343344                PASS( "Implement Concurrent Keywords", Concurrency::implementKeywords, transUnit );
    344                 PASS( "Forall Pointer Decay", Validate::decayForallPointers, transUnit );
     345                PASS( "Fix Unique Ids", Validate::fixUniqueIds, transUnit );
    345346                PASS( "Hoist Control Declarations", ControlStruct::hoistControlDecls, transUnit );
    346347
     
    369370                PASS( "Translate Throws", ControlStruct::translateThrows, transUnit );
    370371                PASS( "Fix Labels", ControlStruct::fixLabels, transUnit );
    371         PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
     372                PASS( "Implement Waituntil", Concurrency::generateWaitUntil, transUnit  );
    372373                PASS( "Fix Names", CodeGen::fixNames, transUnit );
    373374                PASS( "Gen Init", InitTweak::genInit, transUnit );
  • tests/array-container/.expect/dimexpr-match-c-ERRS.arm64.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     262array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     272array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     282array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     292array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     302array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     312array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     322array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     332array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     342array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     352array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     372array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     382array-container/dimexpr-match-c.cfa:42: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: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 
    399 array-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 
    406 array-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 
    413 array-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 
    420 array-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 
    427 array-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 
    434 array-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 
    441 array-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 
    448 array-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 
    455 array-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 
    462 array-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 
    469 array-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 
    476 array-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 
    483 array-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 
    490 array-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 
    497 array-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 
    504 array-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 
    511 array-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 
    518 array-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 
    525 array-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 
    532 array-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 
    539 array-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 
    546 array-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 
    553 array-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 
    560 array-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 
    567 array-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 
    574 array-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 
    582 array-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 
    590 array-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 
    598 array-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 
    606 array-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 
    614 array-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 
    622 array-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 
    630 array-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 
    638 array-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 
    646 array-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 
    654 array-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 
    662 array-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 
    670 array-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 
    678 array-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 
    686 array-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 
    694 array-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 
    702 array-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 
    710 array-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 
    718 array-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 
    726 array-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 
    734 array-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 
    742 array-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 
    750 array-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 
    758 array-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 
    766 array-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 
    774 array-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 
     392array-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
     399array-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
     406array-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
     413array-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
     420array-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
     427array-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
     434array-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
     441array-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
     448array-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
     455array-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
     462array-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
     469array-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
     476array-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
     483array-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
     490array-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
     497array-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
     504array-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
     511array-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
     518array-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
     525array-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
     532array-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
     539array-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
     546array-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
     553array-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
     560array-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
     567array-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
     574array-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
     582array-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
     590array-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
     598array-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
     606array-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
     614array-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
     622array-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
     630array-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
     638array-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
     646array-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
     654array-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
     662array-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
     670array-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
     678array-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
     686array-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
     694array-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
     702array-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
     710array-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
     718array-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
     726array-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
     734array-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
     742array-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
     750array-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
     758array-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
     766array-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
     774array-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
  • tests/array-container/.expect/dimexpr-match-c-ERRS.x64.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     262array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     272array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     282array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     292array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     302array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     312array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     322array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     332array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     342array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     352array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     372array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     382array-container/dimexpr-match-c.cfa:42: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: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 
    399 array-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 
    406 array-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 
    413 array-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 
    420 array-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 
    427 array-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 
    434 array-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 
    441 array-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 
    448 array-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 
    455 array-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 
    462 array-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 
    469 array-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 
    476 array-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 
    483 array-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 
    490 array-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 
    497 array-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 
    504 array-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 
    511 array-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 
    518 array-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 
    525 array-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 
    532 array-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 
    539 array-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 
    546 array-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 
    553 array-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 
    560 array-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 
    567 array-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 
    574 array-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 
    582 array-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 
    590 array-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 
    598 array-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 
    606 array-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 
    614 array-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 
    622 array-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 
    630 array-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 
    638 array-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 
    646 array-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 
    654 array-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 
    662 array-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 
    670 array-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 
    678 array-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 
    686 array-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 
    694 array-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 
    702 array-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 
    710 array-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 
    718 array-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 
    726 array-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 
    734 array-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 
    742 array-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 
    750 array-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 
    758 array-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 
    766 array-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 
    774 array-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 
     392array-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
     399array-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
     406array-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
     413array-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
     420array-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
     427array-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
     434array-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
     441array-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
     448array-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
     455array-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
     462array-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
     469array-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
     476array-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
     483array-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
     490array-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
     497array-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
     504array-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
     511array-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
     518array-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
     525array-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
     532array-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
     539array-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
     546array-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
     553array-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
     560array-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
     567array-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
     574array-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
     582array-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
     590array-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
     598array-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
     606array-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
     614array-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
     622array-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
     630array-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
     638array-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
     646array-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
     654array-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
     662array-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
     670array-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
     678array-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
     686array-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
     694array-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
     702array-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
     710array-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
     718array-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
     726array-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
     734array-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
     742array-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
     750array-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
     758array-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
     766array-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
     774array-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
  • tests/array-container/.expect/dimexpr-match-c-ERRS.x86.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-c.cfa:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     167array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     177array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     187array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     197array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     207array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     217array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     227array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     247array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     257array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     267array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     277array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     287array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     297array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     307array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     327array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     337array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     347array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     357array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     367array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     377array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     387array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     397array-container/dimexpr-match-c.cfa:42: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:38:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     407array-container/dimexpr-match-c.cfa:42: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: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 
    424 array-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 
    431 array-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 
    438 array-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 
    445 array-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 
    452 array-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 
    459 array-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 
    466 array-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 
    473 array-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 
    480 array-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 
    487 array-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 
    494 array-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 
    501 array-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 
    508 array-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 
    515 array-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 
    522 array-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 
    529 array-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 
    536 array-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 
    543 array-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 
    550 array-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 
    557 array-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 
    564 array-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 
    571 array-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 
    578 array-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 
    585 array-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 
    592 array-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 
    599 array-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 
    607 array-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 
    615 array-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 
    623 array-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 
    631 array-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 
    639 array-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 
    647 array-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 
    655 array-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 
    663 array-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 
    671 array-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 
    679 array-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 
    687 array-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 
    695 array-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 
    703 array-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 
    711 array-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 
    719 array-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 
    727 array-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 
    735 array-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 
    743 array-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 
    751 array-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 
    759 array-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 
    767 array-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 
    775 array-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 
    783 array-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 
    791 array-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 
    799 array-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 
     417array-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
     424array-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
     431array-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
     438array-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
     445array-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
     452array-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
     459array-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
     466array-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
     473array-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
     480array-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
     487array-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
     494array-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
     501array-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
     508array-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
     515array-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
     522array-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
     529array-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
     536array-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
     543array-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
     550array-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
     557array-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
     564array-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
     571array-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
     578array-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
     585array-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
     592array-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
     599array-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
     607array-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
     615array-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
     623array-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
     631array-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
     639array-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
     647array-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
     655array-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
     663array-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
     671array-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
     679array-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
     687array-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
     695array-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
     703array-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
     711array-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
     719array-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
     727array-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
     735array-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
     743array-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
     751array-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
     759array-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
     767array-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
     775array-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
     783array-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
     791array-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
     799array-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
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.arm64.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:68: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: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 
    545 array-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 
    552 array-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 
    559 array-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 
    566 array-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 
    573 array-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 
    580 array-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 
    587 array-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 
    594 array-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 
    601 array-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 
    608 array-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 
    615 array-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 
    622 array-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 
    629 array-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 
    636 array-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 
    643 array-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 
    650 array-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 
    657 array-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 
    664 array-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 
    671 array-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 
    678 array-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 
    685 array-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 
    692 array-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 
    699 array-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 
    706 array-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 
    713 array-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 
    720 array-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 
    725 array-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 
    730 array-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 
    735 array-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 
    740 array-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 
    745 array-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 
    750 array-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 
    755 array-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 
    760 array-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 
    765 array-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 
    770 array-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 
    775 array-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 
    780 array-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 
    785 array-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 
    790 array-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 
    795 array-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 
    800 array-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 
    805 array-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 
    810 array-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 
    815 array-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 
    820 array-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 
    825 array-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 
    830 array-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 
    835 array-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 
    840 array-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 
    845 array-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 
    850 array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-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
     545array-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
     552array-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
     559array-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
     566array-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
     573array-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
     580array-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
     587array-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
     594array-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
     601array-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
     608array-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
     615array-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
     622array-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
     629array-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
     636array-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
     643array-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
     650array-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
     657array-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
     664array-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
     671array-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
     678array-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
     685array-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
     692array-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
     699array-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
     706array-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
     713array-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
     720array-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
     725array-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
     730array-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
     735array-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
     740array-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
     745array-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
     750array-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
     755array-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
     760array-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
     765array-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
     770array-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
     775array-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
     780array-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
     785array-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
     790array-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
     795array-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
     800array-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
     805array-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
     810array-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
     815array-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
     820array-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
     825array-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
     830array-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
     835array-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
     840array-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
     845array-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
     850array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:94: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: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 
    1213 array-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 
    1221 array-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 
    1229 array-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 
    1237 array-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 
    1245 array-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 
    1253 array-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 
    1261 array-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 
    1269 array-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 
    1277 array-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 
    1285 array-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 
    1293 array-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 
    1301 array-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 
    1309 array-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 
    1317 array-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 
    1325 array-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 
    1333 array-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 
    1341 array-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 
    1349 array-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 
    1357 array-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 
    1365 array-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 
    1373 array-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 
    1381 array-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 
    1389 array-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 
    1397 array-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 
    1405 array-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 
    1413 array-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 
    1419 array-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 
    1425 array-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 
    1431 array-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 
    1437 array-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 
    1443 array-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 
    1449 array-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 
    1455 array-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 
    1461 array-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 
    1467 array-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 
    1473 array-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 
    1479 array-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 
    1485 array-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 
    1491 array-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 
    1497 array-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 
    1503 array-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 
    1509 array-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 
    1515 array-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 
    1521 array-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 
    1527 array-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 
    1533 array-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 
    1539 array-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 
    1545 array-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 
    1551 array-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 
    1557 array-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 
    1563 array-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 
     1205array-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
     1213array-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
     1221array-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
     1229array-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
     1237array-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
     1245array-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
     1253array-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
     1261array-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
     1269array-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
     1277array-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
     1285array-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
     1293array-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
     1301array-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
     1309array-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
     1317array-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
     1325array-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
     1333array-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
     1341array-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
     1349array-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
     1357array-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
     1365array-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
     1373array-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
     1381array-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
     1389array-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
     1397array-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
     1405array-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
     1413array-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
     1419array-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
     1425array-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
     1431array-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
     1437array-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
     1443array-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
     1449array-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
     1455array-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
     1461array-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
     1467array-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
     1473array-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
     1479array-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
     1485array-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
     1491array-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
     1497array-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
     1503array-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
     1509array-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
     1515array-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
     1521array-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
     1527array-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
     1533array-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
     1539array-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
     1545array-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
     1551array-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
     1557array-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
     1563array-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
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.x64.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:68: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: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 
    545 array-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 
    552 array-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 
    559 array-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 
    566 array-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 
    573 array-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 
    580 array-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 
    587 array-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 
    594 array-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 
    601 array-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 
    608 array-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 
    615 array-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 
    622 array-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 
    629 array-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 
    636 array-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 
    643 array-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 
    650 array-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 
    657 array-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 
    664 array-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 
    671 array-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 
    678 array-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 
    685 array-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 
    692 array-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 
    699 array-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 
    706 array-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 
    713 array-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 
    720 array-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 
    725 array-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 
    730 array-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 
    735 array-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 
    740 array-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 
    745 array-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 
    750 array-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 
    755 array-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 
    760 array-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 
    765 array-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 
    770 array-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 
    775 array-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 
    780 array-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 
    785 array-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 
    790 array-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 
    795 array-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 
    800 array-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 
    805 array-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 
    810 array-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 
    815 array-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 
    820 array-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 
    825 array-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 
    830 array-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 
    835 array-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 
    840 array-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 
    845 array-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 
    850 array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-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
     545array-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
     552array-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
     559array-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
     566array-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
     573array-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
     580array-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
     587array-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
     594array-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
     601array-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
     608array-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
     615array-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
     622array-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
     629array-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
     636array-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
     643array-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
     650array-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
     657array-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
     664array-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
     671array-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
     678array-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
     685array-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
     692array-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
     699array-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
     706array-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
     713array-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
     720array-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
     725array-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
     730array-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
     735array-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
     740array-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
     745array-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
     750array-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
     755array-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
     760array-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
     765array-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
     770array-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
     775array-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
     780array-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
     785array-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
     790array-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
     795array-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
     800array-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
     805array-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
     810array-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
     815array-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
     820array-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
     825array-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
     830array-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
     835array-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
     840array-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
     845array-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
     850array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:94: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: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 
    1213 array-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 
    1221 array-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 
    1229 array-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 
    1237 array-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 
    1245 array-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 
    1253 array-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 
    1261 array-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 
    1269 array-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 
    1277 array-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 
    1285 array-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 
    1293 array-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 
    1301 array-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 
    1309 array-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 
    1317 array-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 
    1325 array-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 
    1333 array-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 
    1341 array-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 
    1349 array-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 
    1357 array-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 
    1365 array-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 
    1373 array-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 
    1381 array-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 
    1389 array-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 
    1397 array-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 
    1405 array-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 
    1413 array-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 
    1419 array-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 
    1425 array-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 
    1431 array-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 
    1437 array-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 
    1443 array-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 
    1449 array-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 
    1455 array-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 
    1461 array-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 
    1467 array-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 
    1473 array-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 
    1479 array-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 
    1485 array-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 
    1491 array-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 
    1497 array-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 
    1503 array-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 
    1509 array-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 
    1515 array-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 
    1521 array-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 
    1527 array-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 
    1533 array-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 
    1539 array-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 
    1545 array-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 
    1551 array-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 
    1557 array-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 
    1563 array-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 
     1205array-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
     1213array-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
     1221array-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
     1229array-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
     1237array-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
     1245array-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
     1253array-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
     1261array-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
     1269array-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
     1277array-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
     1285array-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
     1293array-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
     1301array-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
     1309array-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
     1317array-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
     1325array-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
     1333array-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
     1341array-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
     1349array-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
     1357array-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
     1365array-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
     1373array-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
     1381array-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
     1389array-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
     1397array-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
     1405array-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
     1413array-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
     1419array-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
     1425array-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
     1431array-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
     1437array-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
     1443array-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
     1449array-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
     1455array-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
     1461array-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
     1467array-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
     1473array-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
     1479array-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
     1485array-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
     1491array-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
     1497array-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
     1503array-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
     1509array-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
     1515array-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
     1521array-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
     1527array-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
     1533array-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
     1539array-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
     1545array-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
     1551array-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
     1557array-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
     1563array-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
  • tests/array-container/.expect/dimexpr-match-cfa-ERRS.x86.txt

    r2e94f3e7 rc68f6e6  
    1 array-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 
    7 array-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 
    13 array-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 
    19 array-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 
    25 array-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 
    31 array-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 
    37 array-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 
    43 array-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 
    49 array-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 
    55 array-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 
    61 array-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 
    67 array-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 
    73 array-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 
    79 array-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 
    85 array-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 
    91 array-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 
    97 array-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 
    103 array-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 
    109 array-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 
    115 array-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 
    121 array-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 
    127 array-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 
    133 array-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 
    139 array-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 
    145 array-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 
    151 array-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 
    157 array-container/dimexpr-match-cfa.cfa:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1array-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
     7array-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
     13array-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
     19array-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
     25array-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
     31array-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
     37array-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
     43array-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
     49array-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
     55array-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
     61array-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
     67array-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
     73array-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
     79array-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
     85array-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
     91array-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
     97array-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
     103array-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
     109array-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
     115array-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
     121array-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
     127array-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
     133array-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
     139array-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
     145array-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
     151array-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
     157array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     173array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     189array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     205array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     221array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     237array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     253array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     269array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     285array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     301array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     317array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     326array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     335array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     344array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     353array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     362array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     378array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     394array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     410array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     426array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     442array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     458array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     474array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     490array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     506array-container/dimexpr-match-cfa.cfa:68: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:67:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     522array-container/dimexpr-match-cfa.cfa:68: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: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 
    545 array-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 
    552 array-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 
    559 array-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 
    566 array-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 
    573 array-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 
    580 array-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 
    587 array-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 
    594 array-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 
    601 array-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 
    608 array-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 
    615 array-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 
    622 array-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 
    629 array-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 
    636 array-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 
    643 array-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 
    650 array-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 
    657 array-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 
    664 array-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 
    671 array-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 
    678 array-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 
    685 array-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 
    692 array-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 
    699 array-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 
    706 array-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 
    713 array-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 
    720 array-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 
    725 array-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 
    730 array-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 
    735 array-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 
    740 array-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 
    745 array-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 
    750 array-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 
    755 array-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 
    760 array-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 
    765 array-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 
    770 array-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 
    775 array-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 
    780 array-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 
    785 array-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 
    790 array-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 
    795 array-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 
    800 array-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 
    805 array-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 
    810 array-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 
    815 array-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 
    820 array-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 
    825 array-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 
    830 array-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 
    835 array-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 
    840 array-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 
    845 array-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 
    850 array-container/dimexpr-match-cfa.cfa:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     538array-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
     545array-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
     552array-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
     559array-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
     566array-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
     573array-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
     580array-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
     587array-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
     594array-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
     601array-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
     608array-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
     615array-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
     622array-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
     629array-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
     636array-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
     643array-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
     650array-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
     657array-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
     664array-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
     671array-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
     678array-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
     685array-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
     692array-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
     699array-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
     706array-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
     713array-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
     720array-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
     725array-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
     730array-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
     735array-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
     740array-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
     745array-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
     750array-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
     755array-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
     760array-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
     765array-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
     770array-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
     775array-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
     780array-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
     785array-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
     790array-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
     795array-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
     800array-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
     805array-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
     810array-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
     815array-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
     820array-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
     825array-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
     830array-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
     835array-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
     840array-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
     845array-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
     850array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     865array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     880array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     895array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     910array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     925array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     940array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     955array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     970array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     985array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1000array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1008array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1016array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1024array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1032array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1040array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1055array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1070array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1085array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1100array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1115array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1130array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1145array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1160array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1175array-container/dimexpr-match-cfa.cfa:94: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:93:1 error: Invalid application of existing declaration(s) in expression Untyped Init Expression
     1190array-container/dimexpr-match-cfa.cfa:94: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: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 
    1213 array-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 
    1221 array-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 
    1229 array-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 
    1237 array-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 
    1245 array-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 
    1253 array-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 
    1261 array-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 
    1269 array-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 
    1277 array-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 
    1285 array-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 
    1293 array-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 
    1301 array-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 
    1309 array-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 
    1317 array-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 
    1325 array-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 
    1333 array-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 
    1341 array-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 
    1349 array-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 
    1357 array-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 
    1365 array-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 
    1373 array-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 
    1381 array-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 
    1389 array-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 
    1397 array-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 
    1405 array-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 
    1413 array-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 
    1419 array-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 
    1425 array-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 
    1431 array-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 
    1437 array-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 
    1443 array-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 
    1449 array-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 
    1455 array-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 
    1461 array-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 
    1467 array-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 
    1473 array-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 
    1479 array-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 
    1485 array-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 
    1491 array-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 
    1497 array-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 
    1503 array-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 
    1509 array-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 
    1515 array-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 
    1521 array-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 
    1527 array-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 
    1533 array-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 
    1539 array-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 
    1545 array-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 
    1551 array-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 
    1557 array-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 
    1563 array-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 
     1205array-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
     1213array-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
     1221array-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
     1229array-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
     1237array-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
     1245array-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
     1253array-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
     1261array-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
     1269array-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
     1277array-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
     1285array-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
     1293array-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
     1301array-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
     1309array-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
     1317array-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
     1325array-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
     1333array-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
     1341array-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
     1349array-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
     1357array-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
     1365array-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
     1373array-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
     1381array-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
     1389array-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
     1397array-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
     1405array-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
     1413array-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
     1419array-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
     1425array-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
     1431array-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
     1437array-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
     1443array-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
     1449array-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
     1455array-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
     1461array-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
     1467array-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
     1473array-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
     1479array-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
     1485array-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
     1491array-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
     1497array-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
     1503array-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
     1509array-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
     1515array-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
     1521array-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
     1527array-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
     1533array-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
     1539array-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
     1545array-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
     1551array-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
     1557array-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
     1563array-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
  • tests/array-container/dimexpr-match-c.cfa

    r2e94f3e7 rc68f6e6  
    1616#include "dimexpr-match.hfa"     // test framework
    1717
     18#ifdef TRY_WISH_1 // "unification as-if"
     19forall( [N] )
     20void zip( float (*a)[N], float (*b)[N] ) {}
     21#endif
     22
    1823DECLN_runTests {
    1924
     
    2126    int mut7 = 7, mut42 = 42;
    2227
    23    
    2428    #define TRY_COMPAT( LV, RV )        \
    2529    {                                   \
     
    7983
    8084  #ifdef TRY_WISH_1 // "unification as-if"
    81     forall( [N] )
    82     void zip( float (*a)[N], float (*b)[N] ) {}
    83 
    8485    #define TRY_COMPAT( LV, RV )        \
    8586    {                                   \
     
    9394
    9495  #endif
    95 
    96 
    97 
    9896}
  • tests/array-container/dimexpr-match-cfa.cfa

    r2e94f3e7 rc68f6e6  
    4444#endif
    4545
     46forall( [N] )
     47void zip( array(float, N) & a, array(float, N) & b ) {}
    4648
    4749DECLN_runTests {
     
    5052    int mut7 = 7, mut42 = 42;
    5153
    52    
    5354    #define TRY_COMPAT( LV, RV )            \
    5455    {                                       \
     
    103104    #undef TRY_COMPAT
    104105
    105 
    106     forall( [N] )
    107     void zip( array(float, N) & a, array(float, N) & b ) {}
    108 
    109106    #define TRY_COMPAT( LV, RV )            \
    110107    {                                       \
Note: See TracChangeset for help on using the changeset viewer.