On Sun, Jun 19, 2016, 17:57 Joerg Sonnenberger <joerg at bec.de> wrote:> On Sun, Jun 19, 2016 at 03:24:22PM +0000, Paweł Bylica via llvm-dev wrote: > > Hi LLVM, > > > > I want to complain a bit about the quality of the code included in the > > public LLVM headers. For projects that depend on LLVM is really hard to > > just include LLVM headers not to trigger tons of warnings. > > > > Moreover, the is this issue that you have to define __STDC_LIMIT_MACROS > and > > __STDC_CONSTANT_MACROS everywhere just to include single DataTypes.h. > > Strangely, it seems to be required only when compiling with clang, not > with > > GCC. > > > > Can we do anything to improve the situation? > > > > I have just one idea, to add unittests that only include public headers > > with higher compiler restrictions than for LLVM code in .cpp files. > > Get a system with C++11 compliant system headers. >What do you mean exactly? How is this related?> Joerg >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/08b2c543/attachment.html>
On Mon, Jun 20, 2016 at 05:05:18PM +0000, Paweł Bylica via llvm-dev wrote:> On Sun, Jun 19, 2016, 17:57 Joerg Sonnenberger <joerg at bec.de> wrote: > > > On Sun, Jun 19, 2016 at 03:24:22PM +0000, Paweł Bylica via llvm-dev wrote: > > > Hi LLVM, > > > > > > I want to complain a bit about the quality of the code included in the > > > public LLVM headers. For projects that depend on LLVM is really hard to > > > just include LLVM headers not to trigger tons of warnings. > > > > > > Moreover, the is this issue that you have to define __STDC_LIMIT_MACROS > > and > > > __STDC_CONSTANT_MACROS everywhere just to include single DataTypes.h. > > > Strangely, it seems to be required only when compiling with clang, not > > with > > > GCC. > > > > > > Can we do anything to improve the situation? > > > > > > I have just one idea, to add unittests that only include public headers > > > with higher compiler restrictions than for LLVM code in .cpp files. > > > > Get a system with C++11 compliant system headers. > > > > What do you mean exactly? How is this related?__STDC_LIMIT_MACROS and co are requirements by C99 superseded by C++11. If your system headers correctly implement C++11, you don't need them. Joerg
Joerg Sonnenberger via llvm-dev <llvm-dev at lists.llvm.org> writes:> On Mon, Jun 20, 2016 at 05:05:18PM +0000, Paweł Bylica via llvm-dev wrote: >> On Sun, Jun 19, 2016, 17:57 Joerg Sonnenberger <joerg at bec.de> wrote: >> >> > On Sun, Jun 19, 2016 at 03:24:22PM +0000, Paweł Bylica via llvm-dev wrote: >> > > Hi LLVM, >> > > >> > > I want to complain a bit about the quality of the code included in the >> > > public LLVM headers. For projects that depend on LLVM is really hard to >> > > just include LLVM headers not to trigger tons of warnings. >> > > >> > > Moreover, the is this issue that you have to define __STDC_LIMIT_MACROS >> > and >> > > __STDC_CONSTANT_MACROS everywhere just to include single DataTypes.h. >> > > Strangely, it seems to be required only when compiling with clang, not >> > with >> > > GCC. >> > > >> > > Can we do anything to improve the situation? >> > > >> > > I have just one idea, to add unittests that only include public headers >> > > with higher compiler restrictions than for LLVM code in .cpp files. >> > >> > Get a system with C++11 compliant system headers. >> > >> >> What do you mean exactly? How is this related? > > __STDC_LIMIT_MACROS and co are requirements by C99 superseded by C++11. > If your system headers correctly implement C++11, you don't need them.Apparently DataTypes.h does the following: #if !defined(__STDC_LIMIT_MACROS) # error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" #endif I'm guessing this is what Paweł is talking about. Maybe this is an obsolete check from before we required a C++11 compliant host compiler?