From 6dbc9c045741c27435b9b23246c2113221b26c2f Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Mon, 27 Apr 2015 11:38:46 +0200 Subject: [PATCH] S390: For zero, let is_power_of_two() return false This fixes a minor issue with the helper function is_power_of_two(), which returned non-zero ("true") if the argument was zero. This led to a wrong decision when passing a zero-sized struct in an inferior function call. gdb/ChangeLog: * s390-linux-tdep.c (is_power_of_two): Add comment. Return false if the argument is zero. --- gdb/ChangeLog | 5 +++++ gdb/s390-linux-tdep.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d180e38b598..f922735bb1e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-04-27 Andreas Arnez + + * s390-linux-tdep.c (is_power_of_two): Add comment. Return + false if the argument is zero. + 2015-04-27 Pierre-Marie de Rodat * ada-lang.c (template_to_static_fixed_type): Return input type diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c index b83a264ee86..44feee7bbea 100644 --- a/gdb/s390-linux-tdep.c +++ b/gdb/s390-linux-tdep.c @@ -2484,11 +2484,12 @@ is_float_like (struct type *type) || is_float_singleton (type)); } +/* Determine whether N is a power of two. */ static int is_power_of_two (unsigned int n) { - return ((n & (n - 1)) == 0); + return n && ((n & (n - 1)) == 0); } /* Return non-zero if TYPE should be passed as a pointer to a copy, -- 2.30.2