Skip to content
This repository has been archived by the owner on May 18, 2019. It is now read-only.

Commit

Permalink
Revert "workaround for array=f()"
Browse files Browse the repository at this point in the history
This reverts commit 339c749.
  • Loading branch information
lochel authored and OpenModelica-Hudson committed Oct 26, 2016
1 parent 5515de8 commit b2f7540
Showing 1 changed file with 14 additions and 48 deletions.
62 changes: 14 additions & 48 deletions Compiler/BackEnd/BackendDAEOptimize.mo
Original file line number Diff line number Diff line change
Expand Up @@ -4314,20 +4314,19 @@ end simplifyComplexFunctionTrafers;
protected function simplifyComplexFunctionWork
input BackendDAE.Equation eqn;
input Boolean withTmpVars = false;
output list<BackendDAE.Equation> eqs = {};
output list<BackendDAE.Equation> eqs;
output list<BackendDAE.Var> vars = {};
output Boolean updated = false;

algorithm

try
if (BackendEquation.isComplexEquation(eqn) or BackendEquation.isArrayEquation(eqn))
then
(eqs, vars, updated) := simplifyComplexFunctionWorkCE_AE(eqn, withTmpVars);
end if;
if (BackendEquation.isComplexEquation(eqn) or BackendEquation.isArrayEquation(eqn))
then
(eqs, vars, updated) := simplifyComplexFunctionWorkCE_AE(eqn, withTmpVars);
else
updated := false;
end try;
eqs := {};
vars := {};
updated := false;
end if;

end simplifyComplexFunctionWork;

Expand All @@ -4354,15 +4353,7 @@ algorithm
end if;

//print(BackendDump.equationString(eqn) + "--In--\n");
try
(eqs, vars, updated) := simplifyComplexFunctionWorkCE_AE_WORK(left, right, withTmpVars, source, attr);
else
(eqs, vars, updated) := simplifyComplexFunctionFail(left, right, source, attr);
if Flags.isSet(Flags.FAILTRACE)
then
print(BackendDump.equationString(eqn) + "--failed to simplify--\n");
end if;
end try;
(eqs, vars, updated) := simplifyComplexFunctionWorkCE_AE_WORK(left, right, withTmpVars, source, attr);

end simplifyComplexFunctionWorkCE_AE;

Expand Down Expand Up @@ -4444,24 +4435,13 @@ algorithm
elseif expandRight and Expression.isCall(left) and Expression.hasWild(right_lst)
then
//print(ExpressionDump.printExpStr(left));
try
(right_lst, left_lst) := simplifyComplexFunctionWorkWild(right_lst, left);
(eqs, vars, updated) := simplifyComplexFunctionWorkTT(left_lst, right_lst, withTmpVars, source, attr);
else
(eqs, vars, updated) := simplifyComplexFunctionFail(left, right, source, attr);
fail();
end try;
elseif expandLeft and Expression.isCall(right) and Expression.hasWild(left_lst)
then
//print(ExpressionDump.printExpStr(left));
try
(left_lst, right_lst) := simplifyComplexFunctionWorkWild(left_lst, right);
(eqs, vars, updated) := simplifyComplexFunctionWorkTT(left_lst, right_lst, withTmpVars, source, attr);
else
(eqs, vars, updated) := simplifyComplexFunctionFail(left, right, source, attr);
fail();
end try;
(eqs, vars, updated) := simplifyComplexFunctionWorkTT(left_lst, right_lst, withTmpVars, source, attr);
elseif Expression.isWild(left) or Expression.isWild(right)
then // _ = ... or ... = _
eqs := {};
Expand All @@ -4487,24 +4467,14 @@ algorithm
(eqs, vars, updated) := simplifyComplexFunctionWorkTC(right, left, source, attr);

else
(eqs, vars, updated) := simplifyComplexFunctionFail(left, right, source, attr);
eqn := BackendEquation.generateEquation(left, right, source, attr);
eqs := {eqn};
vars := {};
updated := false;
end if;
end simplifyComplexFunctionWorkCE_AE_WORK;

protected function simplifyComplexFunctionFail
input DAE.Exp left;
input DAE.Exp right;
input DAE.ElementSource source "origin of equation";
input BackendDAE.EquationAttributes attr;
output list<BackendDAE.Equation> eqs;
output list<BackendDAE.Var> vars;
output Boolean updated;
algorithm
eqs := {BackendEquation.generateEquation(left, right, source, attr)};
vars := {};
updated := false;
//print(BackendDump.equationString(BackendEquation.generateEquation(left, right, source, attr)) + "--new--\n");
end simplifyComplexFunctionFail;


protected function simplifyComplexFunctionWorkWild
input list<DAE.Exp> _left_lst;
Expand All @@ -4520,10 +4490,6 @@ algorithm
if not Expression.isWild(left)
then
ty := Expression.typeof(left);
if Types.isArray(ty) and stringEq(Config.simCodeTarget(), "Cpp")
then
fail(); // create array = function_call --> create wrong code for cpp // set 0
end if;
left_lst := left :: left_lst;
right_lst := DAE.TSUB(right, idx, ty) :: right_lst;
idx := idx + 1;
Expand Down

0 comments on commit b2f7540

Please sign in to comment.