{
        struct unw_table_entry *start = (void *) mod->arch.unwind->sh_addr;
        struct unw_table_entry *end = start + mod->arch.unwind->sh_size / sizeof (*start);
-       struct unw_table_entry tmp, *e1, *e2, *core, *init;
+       struct unw_table_entry *e1, *e2, *core, *init;
        unsigned long num_init = 0, num_core = 0;
 
        /* First, count how many init and core unwind-table entries there are.  */
        for (e1 = start; e1 < end; ++e1) {
                for (e2 = e1 + 1; e2 < end; ++e2) {
                        if (e2->start_offset < e1->start_offset) {
-                               tmp = *e1;
-                               *e1 = *e2;
-                               *e2 = tmp;
+                               swap(*e1, *e2);
                        }
                }
        }