Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tuples/TupleExpansion.cc

    rc0aa336 rb7b8674  
    2929#include "ResolvExpr/typeops.h"
    3030#include "InitTweak/GenInit.h"
     31#include "InitTweak/InitTweak.h"
    3132
    3233namespace Tuples {
     
    337338                public:
    338339                        typedef Visitor Parent;
    339                         virtual void visit( ApplicationExpr * appExpr ) { maybeImpure = true;   }
     340                        virtual void visit( ApplicationExpr * appExpr ) {
     341                                if ( DeclarationWithType * function = InitTweak::getFunction( appExpr ) ) {
     342                                        if ( function->get_linkage() == LinkageSpec::Intrinsic ) {
     343                                                if ( function->get_name() == "*?" || function->get_name() == "?[?]" ) {
     344                                                        // intrinsic dereference, subscript are pure, but need to recursively look for impurity
     345                                                        Parent::visit( appExpr );
     346                                                        return;
     347                                                }
     348                                        }
     349                                }
     350                                maybeImpure = true;
     351                        }
    340352                        virtual void visit( UntypedExpr * untypedExpr ) { maybeImpure = true; }
    341353                        bool maybeImpure = false;
Note: See TracChangeset for help on using the changeset viewer.