| 1587 | // |
| 1588 | |
| 1589 | static gpre_nod* merge_fields(gpre_nod* fields_1, |
| 1590 | gpre_nod* fields_2, |
| 1591 | int n, |
| 1592 | bool replace) |
| 1593 | { |
| 1594 | assert_IS_NOD(fields_1); |
| 1595 | assert_IS_NOD(fields_2); |
| 1596 | |
| 1597 | int count = fields_1->nod_count + fields_2->nod_count; |
| 1598 | if (replace) |
| 1599 | count--; |
| 1600 | gpre_nod* fields = MSC_node(nod_list, (SSHORT) count); |
| 1601 | |
| 1602 | count = n; |
| 1603 | if (!replace) |
| 1604 | count++; |
| 1605 | |
| 1606 | for (int i = 0; i < count; i++) |
| 1607 | fields->nod_arg[i] = fields_1->nod_arg[i]; |
| 1608 | |
| 1609 | for (int i = 0; i < fields_2->nod_count; i++) |
| 1610 | fields->nod_arg[i + count] = fields_2->nod_arg[i]; |
| 1611 | |
| 1612 | int offset = 0; |
| 1613 | if (replace) |
| 1614 | { |
| 1615 | count++; |
| 1616 | offset = 1; |
| 1617 | } |
| 1618 | |
| 1619 | for (int i = count; i < fields_1->nod_count; i++) |
| 1620 | fields->nod_arg[i + fields_2->nod_count - offset] = fields_1->nod_arg[i]; |
| 1621 | |
| 1622 | return fields; |
| 1623 | } |
| 1624 | |
| 1625 | |
| 1626 | //____________________________________________________________ |
no test coverage detected