[Bug 224669] [exp-run] Against projects/clang600-import branch

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Jan 7 13:22:01 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=224669

--- Comment #22 from Dimitry Andric <dim at FreeBSD.org> ---
(In reply to Jan Beich from comment #21)
> (In reply to Tobias C. Berner from comment #20)
> - warnings/errors in headers of dependencies are often cannot be easily
> fixed thus have to be hidden by either -isystem or #pragma GCC system_header;
>   lang/gcc* aren't affected due to implicit -isystem/usr/local/include but
> clang from either base or devel/llvm* needs USES=localbase;
>   -isystem/usr/local/include isn't enabled by default due to FreeBSD
> historically treating ports/packages as second class citizens, see
> https://wiki.freebsd.org/WarnerLosh/UsrLocal

It's not so much second class citizens, but to prevent accidental inclusions of
headers which have the same name as base headers.  If /usr/local/include would
ever be put into the default include path, it should be put *after* the system
include directories, not before.

But the bikeshedding about this subject has been going on forever, it is very
hard to please everybody now, so keeping the status quo is the safest solution.
:)


>   $ cat a.cc
>   #include <X11/Xlibint.h>
>   int main() { return 0; }
>   $ c++ a.cc -isystem/usr/local/include
>   $ c++ a.cc -I/usr/local/include
>   In file included from a.cc:1:
>   /usr/local/include/X11/Xlibint.h:675:7: warning: 'register' storage class
> specifier is deprecated and
> 	incompatible with C++17 [-Wdeprecated-register]
> 	       register _Xconst long *data,
> 	       ^~~~~~~~~
>   [...]
> 
> - Clang 6+ defaults to C++14, so -Wdeprecated-register isn't an error yet but
>   Qt5 passes -std=c++1z

Yeah, I have not found out why Qt seems to insist on very high -std=c++
versions.  It probably attempts to auto-detect the highest level supported by
the compiler, and always enables that.


> - GCC 7 + -std=gnu++17 doesn't treat -Wregister as an error by default

It should, because register is finally going away with C++17.  The easiest
workaround is adding a -Dregister flag, obviously.


> - libX11 is a C library, and register storage hasn't been deprecated by a C
> standard

Indeed, but register is totally useless post-1990, so it should be deleted
wherever you see it. :)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the freebsd-ports-bugs mailing list