Hello Jakub et al.,
        I have a question regarding the parallel for implementation. I am 
implementing _Cilk_for based on the routines in omp-low.c and I would like to 
create a child function but would like to move the items that gimplify_omp_for 
inserts in for_pre_body in the top-level function. I need to do this because in 
_Cilk_for, we insert the body of the function into a child function and then we 
call a builtin CilkPlus function called __cilkrts_cilk_for_64 and pass in the 
child function's name, data pointer,  loop-count and grain.

        The loop count computation gets to be an issue in C++ when we use 
iterator.

For example, if we have something like this:
Vector <int> array;
For (vector<int>::iterator iter =  array.begin(); iter != array.end (); iter++)

gimplify_omp_for function gimplifys the condition expression (array.end ()) and 
then inserts the following in pre_body....

 iter = std::vector<int>::begin (&array);
D.28387 = std::vector<int>::end (&array);
try
  {
    retval.0 = __gnu_cxx::operator-<int*, std::vector<int> > (&D.28387, &iter);
  }
finally
  {
    D.28387 = {CLOBBER};
  }

..and moves it to the child function at a later stage (I believe in 
lower_omp_for). I want to make it *NOT* do that and keep it in the current 
function, since I want to use the retval.0. Can someone please suggest me how 
to do that?

Any help is greatly appreciated!

Sincerely,

Balaji V. Iyer.

Reply via email to