- /* iterator <= loop_end*/
- if(cmp_typ == pn_Cmp_Le){
- /* A loop that can't be entered as for(i = 10; i <= 5; i++) */
- if (tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt){
- *is_untroddenloop = 1;
- return;
- }
- /* A endless loop as for(i = 10; i <= 0xFFFFFFFF; i++) */
- if (tarval_cmp(loop_end, get_mode_max(get_tarval_mode(loop_start))) == pn_Cmp_Eq){
- info->l_itervar_phi->flags |= loop_is_endless;
- return;
- }
- if (tarval_cmp(loop_end, tarval_sub(get_mode_max(get_tarval_mode(loop_start)), tarval_one)) == pn_Cmp_Eq)
- if(tarval_cmp(loop_step, tarval_one) == pn_Cmp_Gt)
- info->l_itervar_phi->flags |= loop_end_false;
- info->l_itervar_phi->loop_iter_end = tarval_sub(loop_end, diff);
- }else{
- /* iterator > loop_end*/
- if(cmp_typ == pn_Cmp_Gt){
- /* A endless loop in mathematic mean that iterate until 0xFFFFFFFF as for(i = 10; i > 5; i++) */
- if(tarval_cmp(loop_start, tarval_sub(get_mode_max(get_tarval_mode(loop_step)), loop_step)) == pn_Cmp_Gt){
- if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt ){
- info->l_itervar_phi->flags |= loop_downto_loop;
- loop_step = tarval_sub(loop_start, tarval_add(loop_step, loop_start));
- diff = tarval_sub(loop_start, loop_end);
- diff = tarval_mod(diff, loop_step);
- if(diff == get_tarval_null(get_tarval_mode(loop_start)))
- diff = loop_step;
- info->l_itervar_phi->loop_iter_end = tarval_add(loop_end, diff);
- }else
- /* A loop that can't be entered as for(i = 4; i > 5; i++) */
- *is_untroddenloop = 1;
- }else
- if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt )
- *is_endlessloop = 1;
- else
- /* A loop that can't be entered as for(i = 4; i > 5; i++) */
- *is_untroddenloop = 1;
- /* iterator >= loop_end*/
- }else{
- /* Test if the cmp is after the incrementation and add to loop start one.*/
- if(get_irn_link(info->cmp_const) != NULL)
- loop_start = tarval_add(loop_start, loop_step);
- /* A endless loop in mathematic mean that iterate until 0xFFFFFFFF as for(i = 10; i > 5; i++) */
- if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Eq ||
- tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt)
- *is_endlessloop = 1;
- else
- /* A loop that can't be entered as for(i = 4; i >= 5; i++) */
- *is_untroddenloop = 1;
- }
- }
+ /* iterator <= loop_end*/
+ if(pnc == pn_Cmp_Le){
+ /* A loop that can't be entered as for(i = 10; i <= 5; i++) */
+ if (tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt){
+ *is_nonentered_loop = 1;
+ return;
+ }
+ /* A endless loop as for(i = 10; i <= 0xFFFFFFFF; i++) */
+ if (tarval_cmp(loop_end, get_mode_max(get_tarval_mode(loop_start))) == pn_Cmp_Eq){
+ info->l_itervar_phi->flags |= loop_is_endless;
+ return;
+ }
+ if (tarval_cmp(loop_end, tarval_sub(get_mode_max(get_tarval_mode(loop_start)), tarval_one)) == pn_Cmp_Eq)
+ if(tarval_cmp(loop_step, tarval_one) == pn_Cmp_Gt)
+ info->l_itervar_phi->flags |= loop_end_false;
+ info->l_itervar_phi->loop_iter_end = tarval_sub(loop_end, diff);
+ }else{
+ /* iterator > loop_end*/
+ if(pnc == pn_Cmp_Gt){
+ /* A endless loop in mathematic mean that iterate until 0xFFFFFFFF as for(i = 10; i > 5; i++) */
+ if(tarval_cmp(loop_start, tarval_sub(get_mode_max(get_tarval_mode(loop_step)), loop_step)) == pn_Cmp_Gt){
+ if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt ){
+ info->l_itervar_phi->flags |= loop_downto_loop;
+ loop_step = tarval_sub(loop_start, tarval_add(loop_step, loop_start));
+ diff = tarval_sub(loop_start, loop_end);
+ diff = tarval_mod(diff, loop_step);
+ if(diff == get_tarval_null(get_tarval_mode(loop_start)))
+ diff = loop_step;
+ info->l_itervar_phi->loop_iter_end = tarval_add(loop_end, diff);
+ }else
+ /* A loop that can't be entered as for(i = 4; i > 5; i++) */
+ *is_nonentered_loop = 1;
+ }else
+ if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt )
+ *is_endlessloop = 1;
+ else
+ /* A loop that can't be entered as for(i = 4; i > 5; i++) */
+ *is_nonentered_loop = 1;
+ /* iterator >= loop_end*/
+ }else{
+ /* Test if the cmp is after the incrementation and add to loop start one.*/
+ if(get_irn_link(info->cmp_const) != NULL)
+ loop_start = tarval_add(loop_start, loop_step);
+ /* A endless loop in mathematic mean that iterate until 0xFFFFFFFF as for(i = 10; i > 5; i++) */
+ if(tarval_cmp(loop_start, loop_end) == pn_Cmp_Eq ||
+ tarval_cmp(loop_start, loop_end) == pn_Cmp_Gt)
+ *is_endlessloop = 1;
+ else
+ /* A loop that can't be entered as for(i = 4; i >= 5; i++) */
+ *is_nonentered_loop = 1;
+ }
+ }