Skip to content

Commit

Permalink
- Added usub_alloc_real for expressions (we do not want to negate the…
Browse files Browse the repository at this point in the history
… source if it is used later...)

- Added some debug info for use with +t


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@13818 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Nov 7, 2012
1 parent cb2f485 commit ccf10b8
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
3 changes: 2 additions & 1 deletion Compiler/Template/CodegenC.tpl
Expand Up @@ -6442,7 +6442,8 @@ case UNARY(__) then
match operator
case UMINUS(__) then '(-<%e%>)'
case UMINUS_ARR(ty=T_ARRAY(ty=T_REAL(__))) then
let &preExp += 'usub_real_array(&<%e%>);<%\n%>'
let var = tempDecl("real_array", &varDecls)
let &preExp += 'usub_alloc_real_array(&<%e%>,&<%var%>);<%\n%>'
'<%e%>'
case UMINUS_ARR(__) then error(sourceInfo(),"unary minus for non-real arrays not implemented")
else error(sourceInfo(),"daeExpUnary:ERR")
Expand Down
13 changes: 13 additions & 0 deletions SimulationRuntime/c/util/real_array.c
Expand Up @@ -891,6 +891,19 @@ void usub_real_array(real_array_t* a)
}
}

void usub_alloc_real_array(real_array_t* a, real_array_t* dest)
{
size_t nr_of_elements, i;
clone_real_array_spec(a,dest);
alloc_real_array_data(dest);

nr_of_elements = base_array_nr_of_elements(dest);
for(i = 0; i < nr_of_elements; ++i)
{
real_set(dest, i, -real_get(a, i));
}
}

void sub_real_array(const real_array_t * a, const real_array_t * b, real_array_t* dest)
{
size_t nr_of_elements;
Expand Down
1 change: 1 addition & 0 deletions SimulationRuntime/c/util/real_array.h
Expand Up @@ -152,6 +152,7 @@ extern void add_real_array(const real_array_t * a, const real_array_t * b, real_

/* Unary subtraction */
extern void usub_real_array(real_array_t* a);
extern void usub_alloc_real_array(real_array_t* a, real_array_t* dest);
extern void sub_real_array(const real_array_t * a, const real_array_t * b, real_array_t* dest);
extern void sub_alloc_real_array(const real_array_t * a, const real_array_t * b, real_array_t* dest);

Expand Down

0 comments on commit ccf10b8

Please sign in to comment.