Skip to content

Commit cf784e6

Browse files
author
Henning Kiel
committed
- some fixes from cppcheck
- pass parameter of size_of_dimension_*_array by reference to improve performance git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@18555 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent df1d6e8 commit cf784e6

File tree

13 files changed

+48
-48
lines changed

13 files changed

+48
-48
lines changed

Compiler/Template/CodegenAdevs.tpl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,7 +1361,7 @@ template inlineArray(Context context, String arr, ComponentRef c)
13611361
::= match context case INLINE_CONTEXT(__) then match c
13621362
case CREF_QUAL(ident = "$DER") then <<
13631363

1364-
inline_integrate_array(size_of_dimension_real_array(<%arr%>,1),<%cref(c)%>);
1364+
inline_integrate_array(size_of_dimension_real_array(&<%arr%>,1),<%cref(c)%>);
13651365

13661366
>>
13671367
end inlineArray;
@@ -3097,7 +3097,7 @@ template extArg(SimExtArg extArg, Text &preExp /*BUFP*/, Text &varDecls /*BUFP*/
30973097
let typeStr = expTypeShort(type_)
30983098
let name = if outputIndex then 'out.targ<%outputIndex%>' else contextCref(c,contextFunction)
30993099
let dim = daeExp(exp, contextFunction, &preExp /*BUFC*/, &varDecls /*BUFD*/)
3100-
'size_of_dimension_<%typeStr%>_array(<%name%>, <%dim%>)'
3100+
'size_of_dimension_<%typeStr%>_array(&<%name%>, <%dim%>)'
31013101
end extArg;
31023102

31033103
template extArgF77(SimExtArg extArg, Text &preExp, Text &varDecls)
@@ -3126,7 +3126,7 @@ template extArgF77(SimExtArg extArg, Text &preExp, Text &varDecls)
31263126
let sizeVar = tempDecl("int", &varDecls)
31273127
let dim = daeExp(exp, contextFunction, &preExp, &varDecls)
31283128
let size_call = 'size_of_dimension_<%expTypeShort(type_)%>_array'
3129-
let &preExp += '<%sizeVar%> = <%size_call%>(<%contextCref(c,contextFunction)%>, <%dim%>);<%\n%>'
3129+
let &preExp += '<%sizeVar%> = <%size_call%>(&<%contextCref(c,contextFunction)%>, <%dim%>);<%\n%>'
31303130
'&<%sizeVar%>'
31313131
end extArgF77;
31323132

@@ -3497,7 +3497,7 @@ template algStmtForGeneric_impl(Exp exp, Ident iterator, String type,
34973497
{
34983498
<%type%> <%iterName%>;
34993499
3500-
for(<%tvar%> = 1; <%tvar%> <= size_of_dimension_<%arrayType%>(<%evar%>, 1); ++<%tvar%>) {
3500+
for(<%tvar%> = 1; <%tvar%> <= size_of_dimension_<%arrayType%>(&<%evar%>, 1); ++<%tvar%>) {
35013501
<%if not acceptMetaModelicaGrammar() then '<%stateVar%> = get_memory_state();'%>
35023502
<%stmtStuff%>
35033503
<%body%>
@@ -3899,7 +3899,7 @@ template daeExpCrefRhsIndexSpec(list<Subscript> subs, Context context,
38993899
case SLICE(__) then
39003900
let expPart = daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
39013901
let tmp = tempDecl("modelica_integer", &varDecls /*BUFD*/)
3902-
let &preExp += '<%tmp%> = size_of_dimension_integer_array(<%expPart%>, 1);<%\n%>'
3902+
let &preExp += '<%tmp%> = size_of_dimension_integer_array(&<%expPart%>, 1);<%\n%>'
39033903
<<
39043904
(int) <%tmp%>, integer_array_make_index_array(&<%expPart%>), 'A'
39053905
>>
@@ -4811,7 +4811,7 @@ template daeExpSize(Exp exp, Context context, Text &preExp /*BUFP*/,
48114811
let dimPart = daeExp(dim, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
48124812
let resVar = tempDecl("modelica_integer", &varDecls /*BUFD*/)
48134813
let typeStr = '<%expTypeArray(exp.ty)%>'
4814-
let &preExp += '<%resVar%> = size_of_dimension_<%typeStr%>(<%expPart%>, <%dimPart%>);<%\n%>'
4814+
let &preExp += '<%resVar%> = size_of_dimension_<%typeStr%>(&<%expPart%>, <%dimPart%>);<%\n%>'
48154815
resVar
48164816
else "size(X) not implemented"
48174817
end daeExpSize;
@@ -4850,8 +4850,8 @@ template daeExpReduction(Exp exp, Context context, Text &preExp /*BUFP*/,
48504850
case SOME(v) then daeExp(valueExp(v),context,&preDefault,&tmpVarDecls)
48514851
end match
48524852
let guardCond = match iter.guardExp case SOME(grd) then daeExp(grd, context, &guardExpPre, &tmpVarDecls) else "1"
4853-
let empty = match identType case "modelica_metatype" then 'listEmpty(<%loopVar%>)' else '0 == size_of_dimension_base_array(<%loopVar%>, 1)'
4854-
let length = match identType case "modelica_metatype" then 'listLength(<%loopVar%>)' else 'size_of_dimension_base_array(<%loopVar%>, 1)'
4853+
let empty = match identType case "modelica_metatype" then 'listEmpty(<%loopVar%>)' else '0 == size_of_dimension_base_array(&<%loopVar%>, 1)'
4854+
let length = match identType case "modelica_metatype" then 'listLength(<%loopVar%>)' else 'size_of_dimension_base_array(&<%loopVar%>, 1)'
48554855
let reductionBodyExpr = "_$reductionFoldTmpA"
48564856
let bodyExprType = expTypeArrayIf(typeof(r.expr))
48574857
let reductionBodyExprWork = daeExp(r.expr, context, &bodyExpPre, &tmpVarDecls)
@@ -4906,7 +4906,7 @@ template daeExpReduction(Exp exp, Context context, Text &preExp /*BUFP*/,
49064906
>>
49074907
else
49084908
<<
4909-
while (<%firstIndex%> <= size_of_dimension_<%arrayType%>(<%loopVar%>, 1)) {
4909+
while (<%firstIndex%> <= size_of_dimension_<%arrayType%>(&<%loopVar%>, 1)) {
49104910
<%identType%> <%iteratorName%>;
49114911
<%iteratorName%> = *(<%arrayType%>_element_addr1(&<%loopVar%>, 1, <%firstIndex%>++));
49124912
<%if not acceptMetaModelicaGrammar() then '<%stateVar%> = get_memory_state();'%>

Compiler/Template/CodegenC.tpl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3454,7 +3454,7 @@ template inlineArray(Context context, String arr, ComponentRef c)
34543454
::= match context case INLINE_CONTEXT(__) then match c
34553455
case CREF_QUAL(ident = "$DER") then <<
34563456

3457-
inline_integrate_array(size_of_dimension_real_array(<%arr%>,1),<%cref(c)%>);
3457+
inline_integrate_array(size_of_dimension_real_array(&<%arr%>,1),<%cref(c)%>);
34583458
>>
34593459
end inlineArray;
34603460

@@ -6412,7 +6412,7 @@ template extArg(SimExtArg extArg, Text &preExp /*BUFP*/, Text &varDecls /*BUFP*/
64126412
let typeStr = expTypeShort(type_)
64136413
let name = if outputIndex then 'out.c<%outputIndex%>' else contextCref(c,contextFunction)
64146414
let dim = daeExp(exp, contextFunction, &preExp /*BUFC*/, &varDecls /*BUFD*/)
6415-
'size_of_dimension_<%typeStr%>_array(<%name%>, <%dim%>)'
6415+
'size_of_dimension_<%typeStr%>_array(&<%name%>, <%dim%>)'
64166416
end extArg;
64176417

64186418
template extArgF77(SimExtArg extArg, Text &preExp, Text &varDecls)
@@ -6450,7 +6450,7 @@ template extArgF77(SimExtArg extArg, Text &preExp, Text &varDecls)
64506450
let sizeVar = tempDecl("int", &varDecls)
64516451
let dim = daeExp(exp, contextFunction, &preExp, &varDecls)
64526452
let size_call = 'size_of_dimension_<%expTypeShort(type_)%>_array'
6453-
let &preExp += '<%sizeVar%> = <%size_call%>(<%contextCref(c,contextFunction)%>, <%dim%>);<%\n%>'
6453+
let &preExp += '<%sizeVar%> = <%size_call%>(&<%contextCref(c,contextFunction)%>, <%dim%>);<%\n%>'
64546454
'&<%sizeVar%>'
64556455
end extArgF77;
64566456

@@ -7128,7 +7128,7 @@ template algStmtForGeneric_impl(Exp exp, Ident iterator, String type,
71287128
{
71297129
<%type%> <%iterName%>;
71307130
7131-
for(<%tvar%> = 1; <%tvar%> <= size_of_dimension_<%arrayType%>(<%evar%>, 1); ++<%tvar%>)
7131+
for(<%tvar%> = 1; <%tvar%> <= size_of_dimension_<%arrayType%>(&<%evar%>, 1); ++<%tvar%>)
71327132
{
71337133
<%stmtStuff%>
71347134
<%body%>
@@ -7631,7 +7631,7 @@ template daeExpCrefRhsIndexSpec(list<Subscript> subs, Context context,
76317631
case SLICE(__) then
76327632
let expPart = daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
76337633
let tmp = tempDecl("modelica_integer", &varDecls /*BUFD*/)
7634-
let &preExp += '<%tmp%> = size_of_dimension_integer_array(<%expPart%>, 1);<%\n%>'
7634+
let &preExp += '<%tmp%> = size_of_dimension_integer_array(&<%expPart%>, 1);<%\n%>'
76357635
let str = <<(int) <%tmp%>, integer_array_make_index_array(&<%expPart%>), 'A'>>
76367636
str
76377637
;separator=", ")
@@ -7784,7 +7784,7 @@ template daeExpCrefLhsIndexSpec(list<Subscript> subs, Context context,
77847784
case SLICE(__) then
77857785
let expPart = daeExp(exp, context, &afterExp /*BUFC*/, &varDecls /*BUFD*/)
77867786
let tmp = tempDecl("modelica_integer", &varDecls /*BUFD*/)
7787-
let &afterExp += '<%tmp%> = size_of_dimension_integer_array(<%expPart%>, 1);<%\n%>'
7787+
let &afterExp += '<%tmp%> = size_of_dimension_integer_array(&<%expPart%>, 1);<%\n%>'
77887788
let str = <<(int) <%tmp%>, integer_array_make_index_array(&<%expPart%>), 'A'>>
77897789
str
77907790
;separator=", ")
@@ -8972,7 +8972,7 @@ template daeExpSize(Exp exp, Context context, Text &preExp /*BUFP*/,
89728972
let expPart = daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
89738973
let dimPart = daeExp(dim, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
89748974
let resVar = tempDecl("modelica_integer", &varDecls /*BUFD*/)
8975-
let &preExp += '<%resVar%> = size_of_dimension_base_array(<%expPart%>, <%dimPart%>);<%\n%>'
8975+
let &preExp += '<%resVar%> = size_of_dimension_base_array(&<%expPart%>, <%dimPart%>);<%\n%>'
89768976
resVar
89778977
case SIZE(exp=CREF(__)) then
89788978
let expPart = daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
@@ -9015,8 +9015,8 @@ template daeExpReduction(Exp exp, Context context, Text &preExp /*BUFP*/,
90159015
case SOME(v) then daeExp(valueExp(v),context,&preDefault,&tmpVarDecls)
90169016
end match
90179017
let guardCond = match iter.guardExp case SOME(grd) then daeExp(grd, context, &guardExpPre, &tmpVarDecls) else "1"
9018-
let empty = match identType case "modelica_metatype" then 'listEmpty(<%loopVar%>)' else '0 == size_of_dimension_base_array(<%loopVar%>, 1)'
9019-
let length = match identType case "modelica_metatype" then 'listLength(<%loopVar%>)' else 'size_of_dimension_base_array(<%loopVar%>, 1)'
9018+
let empty = match identType case "modelica_metatype" then 'listEmpty(<%loopVar%>)' else '0 == size_of_dimension_base_array(&<%loopVar%>, 1)'
9019+
let length = match identType case "modelica_metatype" then 'listLength(<%loopVar%>)' else 'size_of_dimension_base_array(&<%loopVar%>, 1)'
90209020
let reductionBodyExpr = contextCref(makeUntypedCrefIdent("$reductionFoldTmpA"), context)
90219021
let bodyExprType = expTypeArrayIf(typeof(r.expr))
90229022
let reductionBodyExprWork = daeExp(r.expr, context, &bodyExpPre, &tmpVarDecls)
@@ -9075,7 +9075,7 @@ template daeExpReduction(Exp exp, Context context, Text &preExp /*BUFP*/,
90759075
>>
90769076
else
90779077
<<
9078-
while(<%firstIndex%> <= size_of_dimension_<%arrayType%>(<%loopVar%>, 1))
9078+
while(<%firstIndex%> <= size_of_dimension_<%arrayType%>(&<%loopVar%>, 1))
90799079
{
90809080
<%identType%> <%iteratorName%>;
90819081
<%iteratorName%> = *(<%arrayType%>_element_addr1(&<%loopVar%>, 1, <%firstIndex%>++));

Compiler/Template/CodegenCpp.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5082,7 +5082,7 @@ template inlineArray(Context context, String arr, ComponentRef c)
50825082
match c
50835083
case CREF_QUAL(ident = "$DER") then
50845084
<<
5085-
inline_integrate_array(size_of_dimension_real_array(<%arr%>,1),<%cref(c)%>);
5085+
inline_integrate_array(size_of_dimension_real_array(&<%arr%>,1),<%cref(c)%>);
50865086
>>
50875087
end inlineArray;
50885088

Compiler/Template/CodegenXML.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2321,7 +2321,7 @@ template daeExpCrefRhsIndexSpecXml(list<Subscript> subs, Context context,
23212321
case SLICE(__) then
23222322
let expPart = daeExpXml(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
23232323
let tmp = tempDeclXml("modelica_integer", &varDecls /*BUFD*/)
2324-
let &preExp += '<%tmp%> = size_of_dimension_integer_array(<%expPart%>, 1);<%\n%>'
2324+
let &preExp += '<%tmp%> = size_of_dimension_integer_array(&<%expPart%>, 1);<%\n%>'
23252325
let str = <<(int) <%tmp%>, integer_array_make_index_array(&<%expPart%>), 'A'>>
23262326
str
23272327
;separator=", ")
@@ -2481,7 +2481,7 @@ template daeExpCrefLhsIndexSpecXml(list<Subscript> subs, Context context,
24812481
case SLICE(__) then
24822482
let expPart = daeExpXml(exp, context, &afterExp /*BUFC*/, &varDecls /*BUFD*/)
24832483
let tmp = tempDeclXml("modelica_integer", &varDecls /*BUFD*/)
2484-
let &afterExp += '<%tmp%> = size_of_dimension_integer_array(<%expPart%>, 1);<%\n%>'
2484+
let &afterExp += '<%tmp%> = size_of_dimension_integer_array(&<%expPart%>, 1);<%\n%>'
24852485
let str = <<(int) <%tmp%>, integer_array_make_index_array(&<%expPart%>), 'A'>>
24862486
str
24872487
;separator=", ")

SimulationRuntime/c/util/base_array.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,11 +338,11 @@ int ndims_base_array(const base_array_t* a)
338338
return a->ndims;
339339
}
340340

341-
int size_of_dimension_base_array(const base_array_t a, int i)
341+
int size_of_dimension_base_array(const base_array_t * a, int i)
342342
{
343-
assert(base_array_ok(&a));
344-
assert((i > 0) && (i <= a.ndims));
345-
return a.dim_size[i-1];
343+
assert(base_array_ok(a));
344+
assert((i > 0) && (i <= a->ndims));
345+
return a->dim_size[i-1];
346346
}
347347

348348
void clone_reverse_base_array_spec(const base_array_t* source, base_array_t* dest)

SimulationRuntime/c/util/base_array.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void clone_base_array_spec(const base_array_t *source, base_array_t *dest);
5757
void clone_reverse_base_array_spec(const base_array_t* source, base_array_t* dest);
5858

5959
int ndims_base_array(const base_array_t* a);
60-
int size_of_dimension_base_array(const base_array_t a, int i);
60+
int size_of_dimension_base_array(const base_array_t *a, int i);
6161

6262
/* Helper functions */
6363
int base_array_ok(const base_array_t *a);

SimulationRuntime/c/util/boolean_array.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ extern void promote_alloc_boolean_array(const boolean_array_t* a, int n,
160160

161161
static inline int ndims_boolean_array(const boolean_array_t* a)
162162
{ return ndims_base_array(a); }
163-
static inline int size_of_dimension_boolean_array(boolean_array_t a, int i)
163+
static inline int size_of_dimension_boolean_array(boolean_array_t *a, int i)
164164
{ return size_of_dimension_base_array(a, i); }
165165
static inline modelica_boolean *data_of_boolean_array(const boolean_array_t*a)
166166
{ return (modelica_boolean *) a->data; }

SimulationRuntime/c/util/integer_array.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ extern void promote_alloc_integer_array(const integer_array_t * a, int n,
224224

225225
static inline int ndims_integer_array(const integer_array_t * a)
226226
{ return ndims_base_array(a); }
227-
static inline int size_of_dimension_integer_array(integer_array_t a, int i)
227+
static inline int size_of_dimension_integer_array(integer_array_t *a, int i)
228228
{ return size_of_dimension_base_array(a, i); }
229229
/* This is defined in integer_array since we return an integer array */
230230
extern void sizes_of_dimensions_base_array(const base_array_t *a, integer_array_t *dest);

SimulationRuntime/c/util/read_write.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -475,13 +475,13 @@ void write_noretcall(type_description *desc)
475475

476476
void write_real_array(type_description *desc, const real_array_t *arr)
477477
{
478-
size_t nr_elements = 0;
479478
if(desc->type != TYPE_DESC_NONE) {
480479
desc = add_tuple_item(desc);
481480
}
482481
desc->type = TYPE_DESC_REAL_ARRAY;
483482
if(desc->retval) {
484483
/* Can't use memory pool for these */
484+
size_t nr_elements;
485485
desc->data.real_array.ndims = arr->ndims;
486486
desc->data.real_array.dim_size = (_index_t*)malloc(sizeof(*(arr->dim_size)) * arr->ndims);
487487
memcpy(desc->data.real_array.dim_size, arr->dim_size, sizeof(*(arr->dim_size)) * arr->ndims);
@@ -496,13 +496,13 @@ void write_real_array(type_description *desc, const real_array_t *arr)
496496

497497
void write_integer_array(type_description *desc, const integer_array_t *arr)
498498
{
499-
size_t nr_elements = 0;
500499
if(desc->type != TYPE_DESC_NONE) {
501500
desc = add_tuple_item(desc);
502501
}
503502
desc->type = TYPE_DESC_INT_ARRAY;
504503
if(desc->retval) {
505504
/* Can't use memory pool for these */
505+
size_t nr_elements;
506506
desc->data.int_array.ndims = arr->ndims;
507507
desc->data.int_array.dim_size = (_index_t*)malloc(sizeof(*(arr->dim_size)) * arr->ndims);
508508
memcpy(desc->data.int_array.dim_size, arr->dim_size, sizeof(*(arr->dim_size)) * arr->ndims);
@@ -518,13 +518,13 @@ void write_integer_array(type_description *desc, const integer_array_t *arr)
518518

519519
void write_boolean_array(type_description *desc, const boolean_array_t *arr)
520520
{
521-
size_t nr_elements = 0;
522521
if(desc->type != TYPE_DESC_NONE) {
523522
desc = add_tuple_item(desc);
524523
}
525524
desc->type = TYPE_DESC_BOOL_ARRAY;
526525
if(desc->retval) {
527526
/* Can't use memory pool for these */
527+
size_t nr_elements;
528528
desc->data.bool_array.ndims = arr->ndims;
529529
desc->data.bool_array.dim_size = (_index_t*)malloc(sizeof(*(arr->dim_size)) * arr->ndims);
530530
memcpy(desc->data.bool_array.dim_size, arr->dim_size, sizeof(*(arr->dim_size)) * arr->ndims);
@@ -539,13 +539,13 @@ void write_boolean_array(type_description *desc, const boolean_array_t *arr)
539539

540540
void write_string_array(type_description *desc, const string_array_t *arr)
541541
{
542-
size_t nr_elements = 0;
543542
if(desc->type != TYPE_DESC_NONE) {
544543
desc = add_tuple_item(desc);
545544
}
546545
desc->type = TYPE_DESC_STRING_ARRAY;
547546
if(desc->retval) {
548547
size_t i;
548+
size_t nr_elements;
549549
modelica_string_t *dst = NULL, *src = NULL;
550550
desc->data.string_array.ndims = arr->ndims;
551551
desc->data.string_array.dim_size = (_index_t*)malloc(sizeof(*(arr->dim_size)) * arr->ndims);
@@ -583,14 +583,13 @@ int read_modelica_string(type_description **descptr, modelica_string_t *str)
583583

584584
void write_modelica_string(type_description *desc, modelica_string *str)
585585
{
586-
size_t len = 0;
587586
if(desc->type != TYPE_DESC_NONE) {
588587
desc = add_tuple_item(desc);
589588
}
590589
desc->type = TYPE_DESC_STRING;
591590
if(desc->retval) {
592591
/* Can't use memory pool */
593-
len = modelica_string_length(*str);
592+
size_t len = modelica_string_length(*str);
594593
desc->data.string = (modelica_string_const)malloc(len + 1);
595594
memcpy((char*)desc->data.string, *str, len + 1);
596595
} else {

SimulationRuntime/c/util/real_array.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ extern void promote_alloc_real_array(const real_array_t * a, int n, real_array_t
206206

207207
static inline int ndims_real_array(const real_array_t * a)
208208
{ return ndims_base_array(a); }
209-
static inline int size_of_dimension_real_array(real_array_t a, int i)
209+
static inline int size_of_dimension_real_array(real_array_t *a, int i)
210210
{ return size_of_dimension_base_array(a, i); }
211211
static inline modelica_real *data_of_real_array(const real_array_t *a)
212212
{ return (modelica_real *) a->data; }

0 commit comments

Comments
 (0)