Changeset ed50d7d in OpenModelica


Ignore:
Timestamp:
2022-05-17T20:22:23+02:00 (2 years ago)
Author:
kabdelhak <karim.abdelhak@…>
Children:
e668b3ca
Parents:
3de80511
git-author:
perost <perost86@…> (05/06/22 18:24:55)
git-committer:
kabdelhak <karim.abdelhak@…> (05/17/22 20:22:23)
Message:

Evaluate min/max of empty arrays (#8904)

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • OMCompiler/Compiler/NFFrontEnd/NFCeval.mo

    r45d54fe0 red50d7d  
    24162416
    24172417        if Expression.isEmpty(result) then
    2418           result := Expression.CALL(Call.makeTypedCall(fn,
    2419             {Expression.makeEmptyArray(ty)}, Variability.CONSTANT, Purity.PURE, Type.arrayElementType(ty)));
     2418          result := Expression.makeMinValue(Type.arrayElementType(ty));
    24202419        end if;
    24212420      then
     
    24642463
    24652464        if Expression.isEmpty(result) then
    2466           result := Expression.CALL(Call.makeTypedCall(fn,
    2467             {Expression.makeEmptyArray(ty)}, Variability.CONSTANT, Purity.PURE, Type.arrayElementType(ty)));
     2465          result := Expression.makeMaxValue(Type.arrayElementType(ty));
    24682466        end if;
    24692467      then
  • testsuite/flattening/modelica/scodeinst/FuncBuiltinMax.mo

    r83ebb9b red50d7d  
    1414  Real r3 = max(r1, r2);
    1515  Real r4 = max(1, r2);
     16  Real r5 = max(zeros(0));
    1617
    1718  Integer i1 = max(5, 6);
    1819  Integer i2 = max({4, 2, 1});
    1920  Integer i3 = max(i2, i1);
     21  Integer i4 = max(zeros(0));
    2022
    2123  Boolean b1 = max(true, false);
    2224  Boolean b2 = max({false, true});
    2325  Boolean b3 = max(b1, b2);
     26  Boolean b4 = max(fill(true, 0));
    2427
    2528  E e1 = max(E.one, E.three);
    2629  E e2 = max({E.one, E.two, E.three});
    2730  E e3 = max(e1, e2);
     31  E e4 = max(fill(E.one, 0));
    2832end FuncBuiltinMax;
    2933
     
    3438//   Real r3 = max(r1, r2);
    3539//   Real r4 = max(1.0, r2);
     40//   Real r5 = -4.611686018427388e+18;
    3641//   Integer i1 = 6;
    3742//   Integer i2 = 4;
    3843//   Integer i3 = max(i2, i1);
     44//   Integer i4 = -4611686018427387903;
    3945//   Boolean b1 = true;
    4046//   Boolean b2 = true;
    4147//   Boolean b3 = max(b1, b2);
     48//   Boolean b4 = false;
    4249//   enumeration(one, two, three) e1 = E.three;
    4350//   enumeration(one, two, three) e2 = E.three;
    4451//   enumeration(one, two, three) e3 = max(e1, e2);
     52//   enumeration(one, two, three) e4 = E.one;
    4553// end FuncBuiltinMax;
    4654// endResult
  • testsuite/flattening/modelica/scodeinst/FuncBuiltinMin.mo

    r83ebb9b red50d7d  
    1414  Real r3 = min(r1, r2);
    1515  Real r4 = min(r1, 100);
     16  Real r5 = min(zeros(0));
    1617
    1718  Integer i1 = min(5, 6);
    1819  Integer i2 = min({4, 2, 1});
    1920  Integer i3 = min(i2, i1);
     21  Integer i4 = min(zeros(0));
    2022
    2123  Boolean b1 = min(true, false);
    2224  Boolean b2 = min({false, true});
    2325  Boolean b3 = min(b1, b2);
     26  Boolean b4 = min(fill(true, 0));
    2427
    2528  E e1 = min(E.one, E.three);
    2629  E e2 = min({E.one, E.two, E.three});
    2730  E e3 = min(e1, e2);
     31  E e4 = min(fill(E.one, 0));
    2832end FuncBuiltinMin;
    2933
     
    3438//   Real r3 = min(r1, r2);
    3539//   Real r4 = min(r1, 100.0);
     40//   Real r5 = 4.611686018427388e+18;
    3641//   Integer i1 = 5;
    3742//   Integer i2 = 1;
    3843//   Integer i3 = min(i2, i1);
     44//   Integer i4 = 4611686018427387903;
    3945//   Boolean b1 = false;
    4046//   Boolean b2 = false;
    4147//   Boolean b3 = min(b1, b2);
     48//   Boolean b4 = true;
    4249//   enumeration(one, two, three) e1 = E.one;
    4350//   enumeration(one, two, three) e2 = E.one;
    4451//   enumeration(one, two, three) e3 = min(e1, e2);
     52//   enumeration(one, two, three) e4 = E.three;
    4553// end FuncBuiltinMin;
    4654// endResult
Note: See TracChangeset for help on using the changeset viewer.