 
 
 template<const int SHIFT, const int BLOCKDIM2, const int NI>
-__device__ __forceinline__ void approximate_gravity(
+__device__ 
+#if 0
+__noinline__
+#else
+__forceinline__ 
+#endif
+void approximate_gravity(
     float4 pos_i[NI],
     real4 group_pos,
     float eps2,

        if (flag && nodesM[offset + 5] == 0) nodesM[offset + 5] = child + 5;
        if (flag && nodesM[offset + 6] == 0) nodesM[offset + 6] = child + 6;
        if (flag && nodesM[offset + 7] == 0) nodesM[offset + 7] = child + 7;

        n_offset += n_total;    //Increase the offset in the array by the number of newly added nodes


        bool leaf       = node_pos.w <= 0;  //Small AND equal incase of a 1 particle cell       //Check if it is a leaf
        //         split = true;

        bool flag    = (split && !leaf) && use_node;                        //Flag = use_node + split + not_a_leaf;Use only non_leaf nodes that are to be split
        uint mask    = BTEST(flag);                                       // mask = #FFFFFFFF if use_node+split+not_a_leaf==true, otherwise zero
        int child    =    node_data & 0x0FFFFFFF;                         //Index to the first child of the node
        int nchild   = (((node_data & 0xF0000000) >> 28)) & mask;         //The number of children this node has

