Apply the semantic patch swap.cocci to convert hand-rolled swaps to use the macro SWAP. The resulting code is shorter and easier to read, the object code is effectively unchanged. The patch for object.c had to be hand-edited in order to preserve the comment before the change; Coccinelle tried to eat it for some reason. Signed-off-by: Rene Scharfe <l.s.r@xxxxxx> --- builtin/diff-tree.c | 4 +--- builtin/diff.c | 9 +++------ diff-no-index.c | 3 +-- diff.c | 8 +++----- graph.c | 5 +---- line-range.c | 3 +-- merge-recursive.c | 5 +---- object.c | 4 +--- pack-revindex.c | 5 +---- prio-queue.c | 4 +--- strbuf.h | 4 +--- 11 files changed, 15 insertions(+), 39 deletions(-) diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c index 806dd7a885..8ce00480cd 100644 --- a/builtin/diff-tree.c +++ b/builtin/diff-tree.c @@ -147,9 +147,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix) tree1 = opt->pending.objects[0].item; tree2 = opt->pending.objects[1].item; if (tree2->flags & UNINTERESTING) { - struct object *tmp = tree2; - tree2 = tree1; - tree1 = tmp; + SWAP(tree2, tree1); } diff_tree_sha1(tree1->oid.hash, tree2->oid.hash, diff --git a/builtin/diff.c b/builtin/diff.c index 7f91f6d226..3d64b85337 100644 --- a/builtin/diff.c +++ b/builtin/diff.c @@ -45,12 +45,9 @@ static void stuff_change(struct diff_options *opt, return; if (DIFF_OPT_TST(opt, REVERSE_DIFF)) { - unsigned tmp; - const unsigned char *tmp_u; - const char *tmp_c; - tmp = old_mode; old_mode = new_mode; new_mode = tmp; - tmp_u = old_sha1; old_sha1 = new_sha1; new_sha1 = tmp_u; - tmp_c = old_name; old_name = new_name; new_name = tmp_c; + SWAP(old_mode, new_mode); + SWAP(old_sha1, new_sha1); + SWAP(old_name, new_name); } if (opt->prefix && diff --git a/diff-no-index.c b/diff-no-index.c index f420786039..1ae09894d7 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -186,9 +186,8 @@ static int queue_diff(struct diff_options *o, if (DIFF_OPT_TST(o, REVERSE_DIFF)) { unsigned tmp; - const char *tmp_c; tmp = mode1; mode1 = mode2; mode2 = tmp; - tmp_c = name1; name1 = name2; name2 = tmp_c; + SWAP(name1, name2); } d1 = noindex_filespec(name1, mode1); diff --git a/diff.c b/diff.c index f08cd8e033..9de1ba264f 100644 --- a/diff.c +++ b/diff.c @@ -5118,13 +5118,11 @@ void diff_change(struct diff_options *options, if (DIFF_OPT_TST(options, REVERSE_DIFF)) { unsigned tmp; - const unsigned char *tmp_c; - tmp = old_mode; old_mode = new_mode; new_mode = tmp; - tmp_c = old_sha1; old_sha1 = new_sha1; new_sha1 = tmp_c; + SWAP(old_mode, new_mode); + SWAP(old_sha1, new_sha1); tmp = old_sha1_valid; old_sha1_valid = new_sha1_valid; new_sha1_valid = tmp; - tmp = old_dirty_submodule; old_dirty_submodule = new_dirty_submodule; - new_dirty_submodule = tmp; + SWAP(old_dirty_submodule, new_dirty_submodule); } if (options->prefix && diff --git a/graph.c b/graph.c index d4e8519c90..4c722303d2 100644 --- a/graph.c +++ b/graph.c @@ -997,7 +997,6 @@ static void graph_output_post_merge_line(struct git_graph *graph, struct strbuf static void graph_output_collapsing_line(struct git_graph *graph, struct strbuf *sb) { int i; - int *tmp_mapping; short used_horizontal = 0; int horizontal_edge = -1; int horizontal_edge_target = -1; @@ -1132,9 +1131,7 @@ static void graph_output_collapsing_line(struct git_graph *graph, struct strbuf /* * Swap mapping and new_mapping */ - tmp_mapping = graph->mapping; - graph->mapping = graph->new_mapping; - graph->new_mapping = tmp_mapping; + SWAP(graph->mapping, graph->new_mapping); /* * If graph->mapping indicates that all of the branch lines diff --git a/line-range.c b/line-range.c index de4e32f942..323399d16c 100644 --- a/line-range.c +++ b/line-range.c @@ -269,8 +269,7 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb, return -1; if (*begin && *end && *end < *begin) { - long tmp; - tmp = *end; *end = *begin; *begin = tmp; + SWAP(*end, *begin); } return 0; diff --git a/merge-recursive.c b/merge-recursive.c index d327209443..b7ff1ada3c 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -1390,14 +1390,11 @@ static int process_renames(struct merge_options *o, branch1 = o->branch1; branch2 = o->branch2; } else { - struct rename *tmp; renames1 = b_renames; renames2Dst = &a_by_dst; branch1 = o->branch2; branch2 = o->branch1; - tmp = ren2; - ren2 = ren1; - ren1 = tmp; + SWAP(ren2, ren1); } if (ren1->processed) diff --git a/object.c b/object.c index 67d9a9e221..e680d881a4 100644 --- a/object.c +++ b/object.c @@ -104,9 +104,7 @@ struct object *lookup_object(const unsigned char *sha1) * that we do not need to walk the hash table the next * time we look for it. */ - struct object *tmp = obj_hash[i]; - obj_hash[i] = obj_hash[first]; - obj_hash[first] = tmp; + SWAP(obj_hash[i], obj_hash[first]); } return obj; } diff --git a/pack-revindex.c b/pack-revindex.c index 6bc7c94033..1b7ebd8d7e 100644 --- a/pack-revindex.c +++ b/pack-revindex.c @@ -59,7 +59,6 @@ static void sort_revindex(struct revindex_entry *entries, unsigned n, off_t max) * be a no-op, as everybody lands in the same zero-th bucket. */ for (bits = 0; max >> bits; bits += DIGIT_SIZE) { - struct revindex_entry *swap; unsigned i; memset(pos, 0, BUCKETS * sizeof(*pos)); @@ -97,9 +96,7 @@ static void sort_revindex(struct revindex_entry *entries, unsigned n, off_t max) * Now "to" contains the most sorted list, so we swap "from" and * "to" for the next iteration. */ - swap = from; - from = to; - to = swap; + SWAP(from, to); } /* diff --git a/prio-queue.c b/prio-queue.c index e4365b00d6..17252d231b 100644 --- a/prio-queue.c +++ b/prio-queue.c @@ -12,9 +12,7 @@ static inline int compare(struct prio_queue *queue, int i, int j) static inline void swap(struct prio_queue *queue, int i, int j) { - struct prio_queue_entry tmp = queue->array[i]; - queue->array[i] = queue->array[j]; - queue->array[j] = tmp; + SWAP(queue->array[i], queue->array[j]); } void prio_queue_reverse(struct prio_queue *queue) diff --git a/strbuf.h b/strbuf.h index 2262b12683..cf1b5409e7 100644 --- a/strbuf.h +++ b/strbuf.h @@ -109,9 +109,7 @@ extern void strbuf_attach(struct strbuf *, void *, size_t, size_t); */ static inline void strbuf_swap(struct strbuf *a, struct strbuf *b) { - struct strbuf tmp = *a; - *a = *b; - *b = tmp; + SWAP(*a, *b); } -- 2.11.0