<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">This is at the outer limits of my
      understanding of templates, but if I comment out the following <br>
      <br>
        inline
      string                                                                                                                                                                                                                           
      <br>
        to_string(float
      __val)                                                                                                                                                                                                                    
      <br>
       
      {                                                                                                                                                                                                                                         
      <br>
          const int __n
      =                                                                                                                                                                                                                         
      <br>
            __gnu_cxx::__numeric_traits<float>::__max_exponent10 +
      20;                                                                                                                                                                            
      <br>
          return
      __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
      __n,                                                                                                                                                                            
      <br>
              "%f",
      __val);                                                                                                                                                                                                                       
      <br>
       
      }                                                                                                                                                                                                                                         
      <br>
                                                                                                                                                                                                                                                  
      <br>
        inline
      string                                                                                                                                                                                                                             
      <br>
        to_string(double
      __val)                                                                                                                                                                                                                   
      <br>
       
      {                                                                                                                                                                                                                                         
      <br>
          const int __n
      =                                                                                                                                                                                                                         
      <br>
            __gnu_cxx::__numeric_traits<double>::__max_exponent10
      +
      20;                                                                                                                                                                           
      <br>
          return
      __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
      __n,                                                                                                                                                                            
      <br>
              "%f",
      __val);                                                                                                                                                                                                                       
      <br>
       
      }                                                                                                                                                                                                                                         
      <br>
                                                                                                                                                                                                                                                  
      <br>
        inline
      string                                                                                                                                                                                                                             
      <br>
        to_string(long double
      __val)                                                                                                                                                                                                              
      <br>
       
      {                                                                                                                                                                                                                                         
      <br>
          const int __n
      =                                                                                                                                                                                                                         
      <br>
            __gnu_cxx::__numeric_traits<long
      double>::__max_exponent10 +
      20;                                                                                                                                                                      
      <br>
          return
      __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
      __n,                                                                                                                                                                            
      <br>
              "%Lf",
      __val);                                                                                                                                                                                                                      
      <br>
        }                                        <br>
      <br>
      Then the errors go away.<br>
      <br>
      On 26/03/15 21:48, Sean Silva wrote:<br>
    </div>
    <blockquote
cite="mid:CAHnXoamPVHZYbfd4vgpAiMG-oLV4MM4CUgUKzuPY9+LTm2XM0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Yeah, looks like the resource dir issue isn't it (btw you
          can pass the -resource-dir option instead of -I in order to
          precisely match the behavior, but -I is usually enough).<br>
          <br>
        </div>
        <div>The problem appears to be due to
          __gnu_cxx::__numeric_traits_integer being instantiated with a
          floating point type... can you look at that code path to see
          how it is getting there? Maybe it is relying on a particular
          compiler intrinsic that clang is not treating the same as GCC
          (or doesn't support?)?<br>
        </div>
        <div><br>
        </div>
        -- Sean Silva<br>
        <div>
          <div>
            <div class="gmail_extra"><br>
              <div class="gmail_quote">On Thu, Mar 26, 2015 at 11:45 AM,
                Peter Stirling <span dir="ltr"><<a
                    moz-do-not-send="true"
                    href="mailto:peter@pjstirling.plus.com"
                    target="_blank">peter@pjstirling.plus.com</a>></span>
                wrote:<br>
                <blockquote class="gmail_quote" style="margin:0px 0px
                  0px 0.8ex;border-left:1px solid
                  rgb(204,204,204);padding-left:1ex">
                  <div bgcolor="#FFFFFF" text="#000000">
                    <div>Some tests that I've done:<br>
                      <br>
                      First to investigate what is said by -v:<br>
                      <br>
                      [peter@fred llvm]$ which clang++<br>
                      ~/Programming/unix-built/clang/bin/clang++<br>
                      [peter@fred llvm]$ clang++ -v<br>
                      clang version 3.7.0 (trunk 233281)<br>
                      Target: x86_64-unknown-linux-gnu<br>
                      Thread model: posix<br>
                      Found candidate GCC installation:
                      /usr/lib/gcc/x86_64-redhat-linux/4.9.2<br>
                      Selected GCC installation:
                      /usr/lib/gcc/x86_64-redhat-linux/4.9.2<br>
                      Candidate multilib: .;@m64<br>
                      Candidate multilib: 32;@m32<br>
                      Selected multilib: .;@m64<br>
                      <br>
                      [peter@fred llvm]$ which quaff<br>
                      ~/Programming/unix-built/clang/bin/quaff<br>
                      [peter@fred llvm]$ quaff -- -v<br>
                      clang version 3.7.0 (trunk 233281)<br>
                      Target: x86_64-unknown-linux-gnu<br>
                      Thread model: posix<br>
                      Found candidate GCC installation:
                      /../lib/gcc/x86_64-redhat-linux/4.9.2<br>
                      Found candidate GCC installation:
                      /usr/lib/gcc/x86_64-redhat-linux/4.9.2<br>
                      Selected GCC installation:
                      /../lib/gcc/x86_64-redhat-linux/4.9.2<br>
                      Candidate multilib: .;@m64<br>
                      Candidate multilib: 32;@m32<br>
                      Selected multilib: .;@m64<br>
                      <br>
                      /lib is a symlink to /usr/lib, so there is really
                      only one installation, but I'm not sure why they
                      don't use the same list, either both should have
                      one candidate, or both should have two.<br>
                      <br>
                      <br>
                      I then tried (with only failure to show for it) a
                      bunch of combinations of -isystem, and -I for the
                      directory<br>
                      <br>
/home/peter/Programming/unix-built/clang/lib/clang/3.7.0/include/<br>
                      <br>
                      Which should be the right path for the builtin
                      includes, since I use the install prefix <br>
                      <br>
                      /home/peter/Programming/unix-built/clang/<br>
                      <br>
                       (The contents certainly looks right)<br>
                      <br>
                      Any further suggestions?
                      <div>
                        <div class="h5"><br>
                          <br>
                          On 26/03/15 01:53, Sean Silva wrote:<br>
                        </div>
                      </div>
                    </div>
                    <div>
                      <div class="h5">
                        <blockquote type="cite">
                          <div dir="ltr">Although the errors don't look
                            like it, could it be something like: <a
                              moz-do-not-send="true"
href="http://clang.llvm.org/docs/FAQ.html#i-get-errors-about-some-headers-being-missing-stddef-h-stdarg-h"
                              target="_blank">http://clang.llvm.org/docs/FAQ.html#i-get-errors-about-some-headers-being-missing-stddef-h-stdarg-h</a> ?

                            <div><br>
                            </div>
                            <div><br>
                            </div>
                            <div>-- Sean Silva</div>
                          </div>
                          <div class="gmail_extra"><br>
                            <div class="gmail_quote">On Wed, Mar 25,
                              2015 at 6:37 PM, Peter Stirling <span
                                dir="ltr"><<a moz-do-not-send="true"
href="mailto:peter@pjstirling.plus.com" target="_blank">peter@pjstirling.plus.com</a>></span>
                              wrote:<br>
                              <blockquote class="gmail_quote"
                                style="margin:0px 0px 0px
                                0.8ex;border-left:1px solid
                                rgb(204,204,204);padding-left:1ex">
                                <div bgcolor="#FFFFFF" text="#000000">
                                  <div>It doesn't, unfortunately (I had
                                    subsequently figured out where it
                                    was creeping in from).
                                    <div>
                                      <div><br>
                                        <br>
                                        On 26/03/15 01:27, Sean Silva
                                        wrote:<br>
                                      </div>
                                    </div>
                                  </div>
                                  <div>
                                    <div>
                                      <blockquote type="cite">
                                        <div dir="ltr">Does the error go
                                          away with
                                          '-fcolor-diagnostics' instead
                                          of <span
                                            style="font-size:13px">'-fcolor-diagnosticsoo'?</span> If


                                          it does, then maybe <span
                                            style="font-size:13px">'-fcolor-diagnosticsoo'


                                            is generating an error that
                                            is not being handled
                                            correctly in the tool.</span>
                                          <div><span
                                              style="font-size:13px"><br>
                                            </span></div>
                                          <div><span
                                              style="font-size:13px">--
                                              Sean Silva</span></div>
                                        </div>
                                        <div class="gmail_extra"><br>
                                          <div class="gmail_quote">On
                                            Wed, Mar 25, 2015 at 10:32
                                            AM, Peter Stirling <span
                                              dir="ltr"><<a
                                                moz-do-not-send="true"
                                                href="mailto:peter@pjstirling.plus.com"
                                                target="_blank">peter@pjstirling.plus.com</a>></span>
                                            wrote:<br>
                                            <blockquote
                                              class="gmail_quote"
                                              style="margin:0px 0px 0px
                                              0.8ex;border-left:1px
                                              solid
                                              rgb(204,204,204);padding-left:1ex">Hi,<br>
                                              <br>
                                              I'm seeing some odd
                                              behaviour that I hope
                                              someone can suggest a
                                              solution for:<br>
                                              <br>
                                              Recently, when I run my
                                              tool on my test file I get
                                              errors that I don't get if
                                              I run clang++ with
                                              equivalent options -<br>
                                              <br>
                                              <br>
                                              In file included from
/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/dummy.cc:6:<br>
                                              In file included from
                                              /usr/include/taglib/taglib.h:47:<br>
                                              In file included from
/../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/string:40:<br>
                                              In file included from
/../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/bits/char_traits.h:39:<br>
                                              In file included from
/../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/bits/stl_algobase.h:63:<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:58:35:


                                              error: invalid operands to
                                              binary expression ('float'
                                              and 'unsigned long')<br>
                                                    static const _Value
                                              __min =
                                              __glibcxx_min(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:48:35:


                                              note: expanded from macro
                                              '__glibcxx_min'<br>
                                                (__glibcxx_signed(_Tp) ?
                                              (_Tp)1 <<
                                              __glibcxx_digits(_Tp) :
                                              (_Tp)0)<br>
                                                                       
                                               ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:55:12:


                                              note: in instantiation of
                                              template class
                                              '__gnu_cxx::__numeric_traits_integer<float>'
                                              requested here<br>
                                                  struct
                                              __numeric_traits_integer<br>
                                                         ^<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:59:35:


                                              error: invalid operands to
                                              binary expression ('float'
                                              and 'unsigned long')<br>
                                                    static const _Value
                                              __max =
                                              __glibcxx_max(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:52:15:


                                              note: expanded from macro
                                              '__glibcxx_max'<br>
                                                 (((((_Tp)1 <<
                                              (__glibcxx_digits(_Tp) -
                                              1)) - 1) << 1) + 1)
                                              : ~(_Tp)0)<br>
                                                     ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:58:35:


                                              error: invalid operands to
                                              binary expression
                                              ('double' and 'unsigned
                                              long')<br>
                                                    static const _Value
                                              __min =
                                              __glibcxx_min(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:48:35:


                                              note: expanded from macro
                                              '__glibcxx_min'<br>
                                                (__glibcxx_signed(_Tp) ?
                                              (_Tp)1 <<
                                              __glibcxx_digits(_Tp) :
                                              (_Tp)0)<br>
                                                                       
                                               ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:55:12:


                                              note: in instantiation of
                                              template class
                                              '__gnu_cxx::__numeric_traits_integer<double>'
                                              requested here<br>
                                                  struct
                                              __numeric_traits_integer<br>
                                                         ^<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:59:35:


                                              error: invalid operands to
                                              binary expression
                                              ('double' and 'unsigned
                                              long')<br>
                                                    static const _Value
                                              __max =
                                              __glibcxx_max(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:52:15:


                                              note: expanded from macro
                                              '__glibcxx_max'<br>
                                                 (((((_Tp)1 <<
                                              (__glibcxx_digits(_Tp) -
                                              1)) - 1) << 1) + 1)
                                              : ~(_Tp)0)<br>
                                                     ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:58:35:


                                              error: invalid operands to
                                              binary expression ('long
                                              double' and 'unsigned
                                              long')<br>
                                                    static const _Value
                                              __min =
                                              __glibcxx_min(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:48:35:


                                              note: expanded from macro
                                              '__glibcxx_min'<br>
                                                (__glibcxx_signed(_Tp) ?
                                              (_Tp)1 <<
                                              __glibcxx_digits(_Tp) :
                                              (_Tp)0)<br>
                                                                       
                                               ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:55:12:


                                              note: in instantiation of
                                              template class
                                              '__gnu_cxx::__numeric_traits_integer<long
                                              double>' requested here<br>
                                                  struct
                                              __numeric_traits_integer<br>
                                                         ^<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:59:35:


                                              error: invalid operands to
                                              binary expression ('long
                                              double' and 'unsigned
                                              long')<br>
                                                    static const _Value
                                              __max =
                                              __glibcxx_max(_Value);<br>
                                                                       
                                                     
                                              ^~~~~~~~~~~~~~~~~~~~~<br>
                                              /../lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/ext/numeric_traits.h:52:15:


                                              note: expanded from macro
                                              '__glibcxx_max'<br>
                                                 (((((_Tp)1 <<
                                              (__glibcxx_digits(_Tp) -
                                              1)) - 1) << 1) + 1)
                                              : ~(_Tp)0)<br>
                                                     ~~~~~~ ^ 
                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
                                              <br>
                                              I extracted the command
                                              line produced by the
                                              FixedCompilationDatabase
                                              and printed it with quotes
                                              for extra paranoia:<br>
                                              <br>
                                              'clang-tool' '-Wall'
                                              '-std=c++11'
                                              '-fcolor-diagnosticsoo'
'/home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/dummy.cc'<br>
                                              <br>
                                              First thing to observe is
                                              that -fcolor-diagnosticsoo
                                              seems a bit weird. Second
                                              is that running clang++
                                              -Wall -std=c++11
                                              /home/peter/Programming/llvm/llvm/tools/clang/tools/extra/quaff/dummy.cc
                                              doesn't error.<br>
                                              <br>
                                              This is on a fedora box,
                                              if that makes a
                                              difference.<br>
_______________________________________________<br>
                                              cfe-dev mailing list<br>
                                              <a moz-do-not-send="true"
href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
                                              <a moz-do-not-send="true"
href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
                                            </blockquote>
                                          </div>
                                          <br>
                                        </div>
                                      </blockquote>
                                      <br>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </div>
                            <br>
                          </div>
                        </blockquote>
                        <br>
                      </div>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>