[Openmp-dev] warnings in omp.h from Clang
Stephen Siegel via Openmp-dev
openmp-dev at lists.llvm.org
Thu Jun 25 12:11:17 PDT 2020
Thanks, Andrey. Your answer clued me in to a solution…
basie:tmp siegel$ clang-mp-9.0 -fopenmp -isystem /opt/local/include/libomp -pedantic exp.c
basie:tmp siegel$
System files included from an -isystem path don’t have warnings reported (in gcc or clang).
I guess gcc -fopenmp adds the -isystem for you, but clang doesn’t. Probably would be a good idea to make that change to clang.
-Steve
> On Jun 25, 2020, at 2:32 PM, Churbanov, Andrey <Andrey.Churbanov at intel.com> wrote:
>
> Hi Steve,
>
> You observed expected problem, and I am not sure if it can be solved. Probably clang could suppress the warnings somehow, though I am not a compiler expert.
>
> The omp_sched_monotonic is the part of OpenMP standard, which does not correspond well with the ISO C here.
>
> The omp_*_handle_t were intentionally made enumerators with the intention to store pointers there. That's why UINTPRT_MAX used to emphasize the size of the enumerator.
> The argument was that the advantage of enumeration versus integer for compilation (allows stricter type checking) overweighs the disadvantage of its non-conformance with the ISO C. Especially given that "all" known compilers support an extension that allows enumerator to be as big as any integer type.
>
> Interestingly gcc does not complain on omp_sched_monotonic by default, but starts complaining if you point to its own include file via -I option (tried gcc version 9.3).
>
> Regards,
> Andrey
>
> -----Original Message-----
> From: Openmp-dev <openmp-dev-bounces at lists.llvm.org> On Behalf Of Stephen Siegel via Openmp-dev
> Sent: Thursday, June 25, 2020 6:37 PM
> To: openmp-dev at lists.llvm.org
> Subject: [Openmp-dev] warnings in omp.h from Clang
>
> Hello,
> I’ve installed Clang 9.0 on my Mac using MacPorts. When I compile a C/OpenMP program with the flag -pedantic, I get 4 warnings, all of the same kind, in omp.h, e.g. "ISO C restricts enumerator values to range of 'int' (2147483648 is too large)”. An example is below. Do other people get this, or am I doing something wrong?
> Thanks,
> Steve
>
>
> basie:diffusion1d siegel$ cat exp.c
> #include <omp.h>
> int main() {
> }
>
> basie:diffusion1d siegel$ clang-mp-9.0 -fopenmp -pedantic exp.c In file included from exp.c:1:
> /opt/local/include/libomp/omp.h:53:9: warning: ISO C restricts enumerator values to range of 'int'
> (2147483648 is too large) [-Wpedantic]
> omp_sched_monotonic = 0x80000000
> ^ ~~~~~~~~~~
> /opt/local/include/libomp/omp.h:302:7: warning: ISO C restricts enumerator values to range of 'int'
> (18446744073709551615 is too large) [-Wpedantic]
> KMP_ALLOCATOR_MAX_HANDLE = UINTPTR_MAX
> ^ ~~~~~~~~~~~
> /opt/local/include/libomp/omp.h:315:7: warning: ISO C restricts enumerator values to range of 'int'
> (18446744073709551615 is too large) [-Wpedantic]
> KMP_MEMSPACE_MAX_HANDLE = UINTPTR_MAX
> ^ ~~~~~~~~~~~
> /opt/local/include/libomp/omp.h:343:39: warning: ISO C restricts enumerator values to range of 'int'
> (18446744073709551615 is too large) [-Wpedantic]
> typedef enum omp_event_handle_t { KMP_EVENT_MAX_HANDLE = UINTPTR_MAX } omp_event_handle_t;
> ^ ~~~~~~~~~~~
> 4 warnings generated.
> basie:diffusion1d siegel$ more /opt/local/include/libomp/omp.h
> /*
> * include/omp.h.var
> */
>
>
> //===----------------------------------------------------------------------===//
> //
> // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
> // See https://llvm.org/LICENSE.txt for license information.
> // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===//
>
>
> #ifndef __OMP_H
> # define __OMP_H
>
> # include <stdlib.h>
> # include <stdint.h>
>
> # define KMP_VERSION_MAJOR 5
> # define KMP_VERSION_MINOR 0
> # define KMP_VERSION_BUILD 20140926
> # define KMP_BUILD_DATE "No_Timestamp"
>
> _______________________________________________
> Openmp-dev mailing list
> Openmp-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>
> --------------------------------------------------------------------
> Joint Stock Company Intel A/O
> Registered legal address: Krylatsky Hills Business Park,
> 17 Krylatskaya Str., Bldg 4, Moscow 121614,
> Russian Federation
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
More information about the Openmp-dev
mailing list