Patchwork xbzrle: fix compilation on ppc32

login
register
mail settings
Submitter Alexander Graf
Date Aug. 14, 2012, 10:55 a.m.
Message ID <1344941747-30158-1-git-send-email-agraf@suse.de>
Download mbox | patch
Permalink /patch/177217/
State New
Headers show

Comments

Alexander Graf - Aug. 14, 2012, 10:55 a.m.
When compiling the xbzrle code on my ppc32 user space, I hit the following
gcc compiler warning (treated as an error):

  cc1: warnings being treated as errors
  savevm.c: In function ‘xbzrle_encode_buffer’:
  savevm.c:2476: error: overflow in implicit constant conversion

Fix this by making the cast explicit, rather than implicit.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 savevm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Eric Blake - Aug. 14, 2012, 12:37 p.m.
On 08/14/2012 04:55 AM, Alexander Graf wrote:
> When compiling the xbzrle code on my ppc32 user space, I hit the following
> gcc compiler warning (treated as an error):
> 
>   cc1: warnings being treated as errors
>   savevm.c: In function ‘xbzrle_encode_buffer’:
>   savevm.c:2476: error: overflow in implicit constant conversion
> 
> Fix this by making the cast explicit, rather than implicit.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
>  savevm.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/savevm.c b/savevm.c
> index 0ea10c9..9ab4d83 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -2473,7 +2473,7 @@ int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t *new_buf, int slen,
>          /* word at a time for speed, use of 32-bit long okay */
>          if (!res) {
>              /* truncation to 32-bit long okay */
> -            long mask = 0x0101010101010101ULL;
> +            long mask = (long)0x0101010101010101ULL;

What a picky compiler - too bad it can't just read the comment above
that said we are okay with truncation :)

Patch

diff --git a/savevm.c b/savevm.c
index 0ea10c9..9ab4d83 100644
--- a/savevm.c
+++ b/savevm.c
@@ -2473,7 +2473,7 @@  int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t *new_buf, int slen,
         /* word at a time for speed, use of 32-bit long okay */
         if (!res) {
             /* truncation to 32-bit long okay */
-            long mask = 0x0101010101010101ULL;
+            long mask = (long)0x0101010101010101ULL;
             while (i < slen) {
                 xor = *(long *)(old_buf + i) ^ *(long *)(new_buf + i);
                 if ((xor - mask) & ~xor & (mask << 7)) {