@@ -7551,13 +7551,13 @@ protected function optimizeStatementTail2
75517551 output DAE . Exp orhs;
75527552algorithm
75537553 true := valueEq(lhsVars,outvars);
7554- (orhs,true ) := optimizeStatementTail3(path,rhs,invars,source);
7554+ (orhs,true ) := optimizeStatementTail3(path,rhs,invars,lhsVars, source);
75557555end optimizeStatementTail2;
75567556
75577557protected function optimizeStatementTail3
75587558 input Absyn . Path path;
75597559 input DAE . Exp rhs;
7560- input list< String > vars;
7560+ input list< String > vars, lhsVars ;
75617561 input DAE . ElementSource source;
75627562 output DAE . Exp orhs;
75637563 output Boolean isTailRecursive;
@@ -7585,18 +7585,18 @@ algorithm
75857585 if Flags . isSet(Flags . TAIL ) then
75867586 Error . addSourceMessage(Error . COMPILER_NOTIFICATION ,{str},ElementSource . getElementSourceFileInfo(source));
75877587 end if ;
7588- attr. tailCall = DAE . TAIL (vars);
7588+ attr. tailCall = DAE . TAIL (vars,lhsVars );
75897589 call. attr = attr;
75907590 then (call,true );
75917591 case (_,DAE . IFEXP (e1,e2,e3),_,_)
75927592 equation
7593- (e2,b1) = optimizeStatementTail3(path,e2,vars,source);
7594- (e3,b2) = optimizeStatementTail3(path,e3,vars,source);
7593+ (e2,b1) = optimizeStatementTail3(path,e2,vars,lhsVars, source);
7594+ (e3,b2) = optimizeStatementTail3(path,e3,vars,lhsVars, source);
75957595 true = b1 or b2;
75967596 then (DAE . IFEXP (e1,e2,e3),true );
75977597 case (_,DAE . MATCHEXPRESSION (matchType as DAE . MATCH (_) /* TODO:matchcontinue*/ ,inputs,aliases,localDecls,cases,et),_,_)
75987598 equation
7599- cases = optimizeStatementTailMatchCases(path,cases,false ,{},vars,source);
7599+ cases = optimizeStatementTailMatchCases(path,cases,false ,{},vars,lhsVars, source);
76007600 then (DAE . MATCHEXPRESSION (matchType,inputs,aliases,localDecls,cases,et),true );
76017601 else (rhs,false );
76027602 end matchcontinue;
@@ -7607,7 +7607,7 @@ protected function optimizeStatementTailMatchCases
76077607 input list< DAE . MatchCase > inCases;
76087608 input Boolean changed;
76097609 input list< DAE . MatchCase > inAcc;
7610- input list< String > vars;
7610+ input list< String > vars, lhsVars ;
76117611 input DAE . ElementSource source;
76127612 output list< DAE . MatchCase > ocases;
76137613algorithm
@@ -7627,18 +7627,18 @@ algorithm
76277627 case (_,{},true ,acc,_,_) then listReverse(acc);
76287628 case (_,DAE . CASE (patterns,patternGuard,localDecls,body,SOME (exp),resultInfo,jump,info)::cases,_,acc,_,_)
76297629 equation
7630- (exp,true ) = optimizeStatementTail3(path,exp,vars,source);
7630+ (exp,true ) = optimizeStatementTail3(path,exp,vars,lhsVars, source);
76317631 case_ = DAE . CASE (patterns,patternGuard,localDecls,body,SOME (exp),resultInfo,jump,info);
7632- then optimizeStatementTailMatchCases(path,cases,true ,case_::acc,vars,source);
7632+ then optimizeStatementTailMatchCases(path,cases,true ,case_::acc,vars,lhsVars, source);
76337633 case (_,DAE . CASE (patterns,patternGuard,localDecls,body,SOME (DAE . TUPLE ({})),resultInfo,jump,info)::cases,_,acc,_,_)
76347634 equation
76357635 DAE . STMT_NORETCALL (exp,sourceStmt) = List . last(body);
7636- (exp,true ) = optimizeStatementTail3(path,exp,vars,source);
7636+ (exp,true ) = optimizeStatementTail3(path,exp,vars,lhsVars, source);
76377637 body = List . set(body,listLength(body),DAE . STMT_NORETCALL (exp,sourceStmt));
76387638 case_ = DAE . CASE (patterns,patternGuard,localDecls,body,SOME (DAE . TUPLE ({})),resultInfo,jump,info);
7639- then optimizeStatementTailMatchCases(path,cases,true ,case_::acc,vars,source);
7639+ then optimizeStatementTailMatchCases(path,cases,true ,case_::acc,vars,lhsVars, source);
76407640 case (_,case_::cases,_,acc,_,_)
7641- then optimizeStatementTailMatchCases(path,cases,changed,case_::acc,vars,source);
7641+ then optimizeStatementTailMatchCases(path,cases,changed,case_::acc,vars,lhsVars, source);
76427642 end matchcontinue;
76437643end optimizeStatementTailMatchCases;
76447644
0 commit comments