static void merge_pair(struct node **dst, struct node *sub1, struct node *sub2) { // merge two sorted sub-lists into one while (sub1 || sub2) { if (!sub2 || (sub1 && sub1->value < sub2->value)) merge_single_node(&dst, &sub1); else merge_single_node(&dst, &sub2); } }
static void merge_pair(struct node **dst , struct node *sub1 , struct node *sub2 ) { struct node **__cil_tmp4 ; struct node **__cil_tmp5 ; struct node **__cil_tmp6 ; struct node *__cil_tmp7 ; struct node **__cil_tmp8 ; struct node **__cil_tmp9 ; struct node *__cil_tmp10 ; unsigned int __cil_tmp11 ; unsigned int __cil_tmp12 ; int __cil_tmp13 ; struct node **__cil_tmp14 ; struct node *__cil_tmp15 ; unsigned int __cil_tmp16 ; unsigned int __cil_tmp17 ; int __cil_tmp18 ; { { #line 43 while (1) { while_0_continue: /* CIL Label */ ; { #line 43 __cil_tmp4 = & sub1; #line 43 if (*__cil_tmp4) { } else { { #line 43 __cil_tmp5 = & sub2; #line 43 if (*__cil_tmp5) { } else { goto while_0_break; } } } } { #line 44 __cil_tmp6 = & sub2; #line 44 __cil_tmp7 = *__cil_tmp6; #line 44 if (! __cil_tmp7) { { #line 45 merge_single_node(& dst, & sub1); } } else { { #line 44 __cil_tmp8 = & sub1; #line 44 if (*__cil_tmp8) { { #line 44 __cil_tmp9 = & sub2; #line 44 __cil_tmp10 = *__cil_tmp9; #line 44 __cil_tmp11 = (unsigned int )__cil_tmp10; #line 44 __cil_tmp12 = __cil_tmp11 + 4; #line 44 __cil_tmp13 = *((int *)__cil_tmp12); #line 44 __cil_tmp14 = & sub1; #line 44 __cil_tmp15 = *__cil_tmp14; #line 44 __cil_tmp16 = (unsigned int )__cil_tmp15; #line 44 __cil_tmp17 = __cil_tmp16 + 4; #line 44 __cil_tmp18 = *((int *)__cil_tmp17); #line 44 if (__cil_tmp18 < __cil_tmp13) { { #line 45 merge_single_node(& dst, & sub1); } } else { { #line 47 merge_single_node(& dst, & sub2); } } } } else { { #line 47 merge_single_node(& dst, & sub2); } } } } } } while_0_break: /* CIL Label */ ; } #line 49 return; } }
void merge_pair(unsigned int dst, unsigned int sub1, unsigned int sub2) { TRACK_VALUE[9] = dst; TRACK_VALUE[10] = sub1; TRACK_VALUE[11] = sub2; if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } if (!(TRACK_VALUE[10] || TRACK_VALUE[11])) { goto __exit_loop_1; } { if ((!TRACK_VALUE[11]) || (TRACK_VALUE[10] && (READ_NORMAL(TRACK_VALUE[10] + 1) < READ_NORMAL(TRACK_VALUE[11] + 1)))) { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[10]); } else { merge_single_node(TRACK_ADDRESS[9], TRACK_ADDRESS[11]); } } assume(!(TRACK_VALUE[10] || TRACK_VALUE[11])); __exit_loop_1: ; }