Hmm pretty sure I've read somewhere (old version of GCC's manual?) that such warnings are enabled by default and cannot be controlled by the compiler (for C++ of course). I'm not an C++ expect so it could be that the standard does not require declarations/prototypes for non static functions ?
Seems like we're building clover without even a single -W flag - perhaps we could add some (not with this patch of course) ? -Emil On 21/04/15 13:13, Marek Olšák wrote: > Only C warns about that. I didn't see any warning with C++. > > Marek > > On Tue, Apr 21, 2015 at 3:44 PM, Emil Velikov <emil.l.veli...@gmail.com> > wrote: >> On 14/04/15 22:19, Marek Olšák wrote: >>> From: Marek Olšák <marek.ol...@amd.com> >>> >>> --- >>> src/gallium/include/state_tracker/opencl_interop.h | 42 ++++++++++++++ >>> src/gallium/state_trackers/clover/Makefile.sources | 1 + >>> src/gallium/state_trackers/clover/core/event.hpp | 4 ++ >>> src/gallium/state_trackers/clover/core/interop.cpp | 66 >>> ++++++++++++++++++++++ >>> src/gallium/targets/opencl/opencl.sym | 1 + >>> 5 files changed, 114 insertions(+) >>> create mode 100644 src/gallium/include/state_tracker/opencl_interop.h >>> create mode 100644 src/gallium/state_trackers/clover/core/interop.cpp >>> >>> diff --git a/src/gallium/include/state_tracker/opencl_interop.h >>> b/src/gallium/include/state_tracker/opencl_interop.h >>> new file mode 100644 >>> index 0000000..31a3bd3 >>> --- /dev/null >>> +++ b/src/gallium/include/state_tracker/opencl_interop.h >>> @@ -0,0 +1,42 @@ >>> +/************************************************************************** >>> + * >>> + * Copyright 2015 Advanced Micro Devices, Inc. >>> + * All Rights Reserved. >>> + * >>> + * Permission is hereby granted, free of charge, to any person obtaining a >>> + * copy of this software and associated documentation files (the >>> + * "Software"), to deal in the Software without restriction, including >>> + * without limitation the rights to use, copy, modify, merge, publish, >>> + * distribute, sub license, and/or sell copies of the Software, and to >>> + * permit persons to whom the Software is furnished to do so, subject to >>> + * the following conditions: >>> + * >>> + * The above copyright notice and this permission notice (including the >>> + * next paragraph) shall be included in all copies or substantial portions >>> + * of the Software. >>> + * >>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS >>> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >>> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. >>> + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR >>> + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, >>> + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE >>> + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. >>> + * >>> + >>> **************************************************************************/ >>> + >>> +#ifndef OPENCL_INTEROP_H >>> +#define OPENCL_INTEROP_H >>> + >>> +/* dlsym these without the "_t" suffix. You should get the correct symbols >>> + * if the OpenCL driver is loaded. >>> + * >>> + * All functions return non-zero on success. >>> + */ >>> + >>> +typedef int (*opencl_dri_event_add_ref_t)(intptr_t cl_event); >>> +typedef int (*opencl_dri_event_release_t)(intptr_t cl_event); >>> +typedef int (*opencl_dri_event_wait_t)(intptr_t cl_event, uint64_t >>> timeout); >>> +typedef struct pipe_fence_handle *(*opencl_dri_event_get_fence_t)(intptr_t >>> cl_event); >>> + >>> +#endif /* OPENCL_INTEROP_H */ >>> diff --git a/src/gallium/state_trackers/clover/Makefile.sources >>> b/src/gallium/state_trackers/clover/Makefile.sources >>> index 5b3344c..4c2d0f3 100644 >>> --- a/src/gallium/state_trackers/clover/Makefile.sources >>> +++ b/src/gallium/state_trackers/clover/Makefile.sources >>> @@ -22,6 +22,7 @@ CPP_SOURCES := \ >>> core/event.hpp \ >>> core/format.cpp \ >>> core/format.hpp \ >>> + core/interop.cpp \ >>> core/kernel.cpp \ >>> core/kernel.hpp \ >>> core/memory.cpp \ >>> diff --git a/src/gallium/state_trackers/clover/core/event.hpp >>> b/src/gallium/state_trackers/clover/core/event.hpp >>> index 0e1359a..28f510f 100644 >>> --- a/src/gallium/state_trackers/clover/core/event.hpp >>> +++ b/src/gallium/state_trackers/clover/core/event.hpp >>> @@ -116,6 +116,10 @@ namespace clover { >>> >>> friend class command_queue; >>> >>> + struct pipe_fence_handle *get_fence() const { >>> + return _fence; >>> + } >>> + >>> private: >>> virtual void fence(pipe_fence_handle *fence); >>> action profile(command_queue &q, const action &action) const; >>> diff --git a/src/gallium/state_trackers/clover/core/interop.cpp >>> b/src/gallium/state_trackers/clover/core/interop.cpp >>> new file mode 100644 >>> index 0000000..bb80cf5 >>> --- /dev/null >>> +++ b/src/gallium/state_trackers/clover/core/interop.cpp >>> @@ -0,0 +1,66 @@ >>> +// >>> +// Copyright 2015 Advanced Micro Devices, Inc. >>> +// All Rights Reserved. >>> +// >>> +// Permission is hereby granted, free of charge, to any person obtaining a >>> +// copy of this software and associated documentation files (the >>> "Software"), >>> +// to deal in the Software without restriction, including without >>> limitation >>> +// the rights to use, copy, modify, merge, publish, distribute, sublicense, >>> +// and/or sell copies of the Software, and to permit persons to whom the >>> +// Software is furnished to do so, subject to the following conditions: >>> +// >>> +// The above copyright notice and this permission notice shall be included >>> in >>> +// all copies or substantial portions of the Software. >>> +// >>> +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS >>> OR >>> +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, >>> +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL >>> +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR >>> +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >>> +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >>> +// OTHER DEALINGS IN THE SOFTWARE. >>> +// >>> + >>> +#include "core/event.hpp" >>> + >>> +using namespace clover; >>> + >>> +extern "C" { >>> + >>> +PUBLIC int >>> +opencl_dri_event_add_ref(intptr_t event) >>> +{ >>> + return clRetainEvent((cl_event)event) == CL_SUCCESS; >>> +} >>> + >>> +PUBLIC int >>> +opencl_dri_event_release(intptr_t event) >>> +{ >>> + return clReleaseEvent((cl_event)event) == CL_SUCCESS; >>> +} >>> + >>> +PUBLIC int+ >>> +opencl_dri_event_wait(intptr_t cl_event, uint64_t timeout) >>> +{ >>> + event *e = (event*)cl_event; >>> + >>> + if (!timeout) { >>> + return e->status() == CL_COMPLETE; >>> + } >>> + >>> + e->wait(); >>> + return true; >>> +} >>> + >>> +PUBLIC struct pipe_fence_handle * >>> +opencl_dri_event_get_fence(intptr_t cl_event) >>> +{ >>> + hard_event *e = dynamic_cast<hard_event*>((event*)cl_event); >>> + >>> + if (e) >>> + return e->get_fence(); >>> + >>> + return NULL; >>> +} >>> + >> It seems that the above public functions are lacking the respective >> declarations. Iirc C++ explicitly warns about that, although even if >> disabled (by us or the user) it might be worth adding the couple of lines ? >> >> -Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev