Obviously correct code is easier on everyone. As the C FAQ says:
20.15c: How can I swap two values without using a temporary?
A: The standard hoary old assembly language programmer's trick is:
a ^= b;
b ^= a;
a ^= b;
But this sort of code has little place in modern, HLL
programming. Temporary variables are essentially free,
and the idiomatic code using three assignments, namely
int t = a;
a = b;
b = t;
is not only clearer to the human reader, it is more likely to be
recognized by the compiler and turned into the most-efficient
code (e.g. using a swap instruction, if available). The latter
code is obviously also amenable to use with pointers and
floating-point values, unlike the XOR trick. See also questions
3.3b and 10.3.
---
lib/netdev-linux.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index eecaaa5..1aa9093 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -1144,9 +1144,9 @@ netdev_linux_update_is_pseudo(struct netdev_dev_linux
*netdev_dev)
static void
swap_uint64(uint64_t *a, uint64_t *b)
{
- *a ^= *b;
- *b ^= *a;
- *a ^= *b;
+ uint64_t tmp = *a;
+ *a = *b;
+ *b = tmp;
}
/* Retrieves current device stats for 'netdev'. */
--
1.7.1
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev