upcxx headers not -Wextra clean on Intel C++ 19

Issue #291 resolved
Dan Bonachea created an issue

UPC++ public headers currently trigger -Wextra warnings from the default Intel compiler on cori.

I discovered this whilst developing exercises for the tutorial and looking for bugs in my own exercise code, so I can honestly say this runtime bug is inhibiting "end-user" work.

{cori-hsw ~/UPC/code} upcxx --version
UPC++ version 20190900L  / gex-2019.9.0
Copyright (c) 2019, The Regents of the University of California,
through Lawrence Berkeley National Laboratory.
https://upcxx.lbl.gov

icpc (ICC) 19.0.3.199 20190206
Copyright (C) 1985-2019 Intel Corporation.  All rights reserved.

{cori-hsw ~/UPC/code} cat hello_upcxx.cpp
#include <upcxx/backend.hpp>
#include <iostream>

int main() {
  upcxx::init();

  std::cout<<"Hello from "<<upcxx::rank_me()<<" of "<<upcxx::rank_n()<<"\n";

  upcxx::finalize();
  return 0;
}
{cori-hsw ~/UPC/code} upcxx -g -Wall hello_upcxx.cpp        
{cori-hsw ~/UPC/code} upcxx -g -Wall -pedantic hello_upcxx.cpp
{cori-hsw ~/UPC/code} upcxx -g -Wall -Wextra hello_upcxx.cpp            
In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(76): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t static_size = -1;
                                                   ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(77): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t static_align = -1;
                                                    ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(78): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t static_align_ub = -1;
                                                       ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(79): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t size = -1, align = -1;
                                            ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(79): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t size = -1, align = -1;
                                                        ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(92): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t static_size = -2;
                                                   ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(93): warning #68: integer conversion resulted in a change of sign
        static constexpr std::size_t static_align = -2;
                                                    ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(241): warning #68: integer conversion resulted in a change of sign
    constexpr invalid_storage_size_t invalid_storage_size(-1,-1);
                                                          ^

In file included from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/bind.hpp(6),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team_fwd.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/team.hpp(4),
                 from /usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/backend.hpp(7),
                 from hello_upcxx.cpp(1):
/usr/common/ftg/upcxx/2019.9.0/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199/upcxx.debug.gasnet_seq.aries/include/upcxx/serialization.hpp(241): warning #68: integer conversion resulted in a change of sign
    constexpr invalid_storage_size_t invalid_storage_size(-1,-1);
                                                             ^

The problem persists in develop.

Comments (2)

  1. Paul Hargrove

    Warnings shown above have been fixed on develop via PR136 (at 474d447).

    There are still warnings if one reaches the right code:

    /usr/common/ftg/upcxx/nightly/hsw/intel/PrgEnv-intel-6.0.5-19.0.3.199-2019.12.11/upcxx.debug.gasnet_seq.aries/include/upcxx/future/core.hpp(638): warning #1875: offsetof applied to non-POD (Plain Old Data) types is nonstandard
            auto *hdr = (future_header_promise<T...>*)((char*)meta - offsetof(future_header_promise<T...>, pro_meta));
                                                                     ^
    

    However, those are the subject of issue #286. So, I motion to mark this issue as resolved.

  2. Log in to comment