[Intel-gfx] [PATCH i-g-t] tests/gem_softpin: Fix compiler warning on 32bit systems

Belgaumkar, Vinay vinay.belgaumkar at intel.com
Fri Dec 11 15:53:05 PST 2015


On Thu, Dec 10, 2015 at 04:43:29PM +0000, Tvrtko Ursulin wrote:
> 
> Hi,
> 
> On 10/12/15 14:58, Mika Kuoppala wrote:
> >We get build error as we try to cast from ptr to integer
> >of different size on 32 bit platforms. Use unsigned long
> >as the cast, it will work with both 32 and 64 bit
> >systems.
> >
> >Cc: Vinay Belgaumkar <vinay.belgaumkar at intel.com>
> >Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
> >---
> >  tests/gem_softpin.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> >diff --git a/tests/gem_softpin.c b/tests/gem_softpin.c
> >index 7bee16b..0919716 100644
> >--- a/tests/gem_softpin.c
> >+++ b/tests/gem_softpin.c
> >@@ -155,7 +155,7 @@ static uint32_t init_userptr(int fd, i915_gem_userptr *userptr, void *ptr,
> >
> >  	memset((void*)userptr, 0, sizeof(i915_gem_userptr));
> >
> >-	userptr->user_ptr = (uint64_t)ptr; /* Need the cast to overcome compiler warning */
> >+	userptr->user_ptr = (unsigned long)ptr; /* Need the cast to overcome compiler warning */
> >  	userptr->user_size = size;
> >  	userptr->flags = 0; /* use synchronized operation */
> >
> >@@ -270,7 +270,7 @@ static void setup_execbuffer(struct drm_i915_gem_execbuffer2 *execbuf,
> >  			     struct drm_i915_gem_exec_object2 *exec_object,
> >  			     int ring, int buffer_count, int batch_length)
> >  {
> >-	execbuf->buffers_ptr = (uint64_t)exec_object;
> >+	execbuf->buffers_ptr = (unsigned long)exec_object;
> >  	execbuf->buffer_count = buffer_count;
> >  	execbuf->batch_start_offset = 0;
> >  	execbuf->batch_len = batch_length;
> >@@ -417,7 +417,7 @@ static void gem_pin_bo_test(void)
> >  		       EXEC_OBJECT_PINNED, pinning_offset);
> >  	setup_exec_obj(&exec_object2[1], batch_buf_handle, 0, 0);
> >  	exec_object2[1].relocation_count = 1;
> >-	exec_object2[1].relocs_ptr = (uint64_t)reloc;
> >+	exec_object2[1].relocs_ptr = (unsigned long)reloc;
> >
> >  	ring = I915_EXEC_RENDER;
> >
> >
> 
> I had to try it to believe it and indeed gcc complains with
> "warning: cast from pointer to integer of different size
> [-Wpointer-to-int-cast]", which I don't really understand since cast
> is to a wider or equally wide data type.
> 
> Vinay had uintptr_t there originally which does not suffer from this
> warning so this one is my fault. I don't get the gcc logic but
> whatever.
> 
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> 
> Regards,
> 
> Tvrtko
>
> Should have tested the build on 32-bit system as well. Thanks for the
> fix. 
> Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar at intel.com>


More information about the Intel-gfx mailing list