https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72076

            Bug ID: 72076
           Summary: cmath: illegal instruction (constexpr)
           Product: gcc
           Version: 6.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: t.hirsch at web dot de
  Target Milestone: ---

Please have a look at line 1468 of /usr/include/c++/6.1.1/cmath:

  template<typename _Tp>
    constexpr
    typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }

The line with a lonely constexpr is causing an "illegal instruction" error when
compiling lib32-llvm-svn on ArchLinux. After joining this line with the one
that follows the problem is fixed. So here's what works:

  template<typename _Tp>
    constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
                                    int>::__type
    ilogb(_Tp __x)
    { return __builtin_ilogb(__x); }

Reply via email to