https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79017
Bug ID: 79017 Summary: Old PowerMac G5, MacPorts GCC 5.4, C++11 and "std::log2 has not been declared" Product: gcc Version: 5.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: noloader at gmail dot com Target Milestone: --- I'm working on a PowerMac G5. It runs OS X 10.5.8. It has MacPorts installed for updated gear. The program: $ cat test.cxx #include <cmath> int main(int argc, char* argv[]) { double d = std::log2(2.3456789f); return 0; } Results: $ /opt/local/bin/g++-mp-5 -std=c++11 test.cxx -o test.exe test.cxx: In function 'int main(int, char**)': test.cxx:4:16: error: 'log2' is not a member of 'std' double d = std::log2(2.3456789f); ^ test.cxx:4:16: note: suggested alternative: In file included from /usr/include/math.h:26:0, from /opt/local/include/gcc5/c++/cmath:44, from test.cxx:1: /usr/include/architecture/ppc/math.h:431:15: note: 'log2' extern double log2( double ); ^ Compiler: $ /opt/local/bin/g++-mp-5 --version g++-mp-5 (MacPorts gcc5 5.4.0_0) 5.4.0 Copyright (C) 2015 Free Software Foundation, Inc. ... *************** From JW offlist: #include <math.h> int main() { typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(0); nanf(0); nanl(0); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); return 0; } Results in: $ /opt/local/bin/g++-mp-5 -std=c++11 test.cxx -o test.exe test.cxx: In function 'int main()': test.cxx:53:21: error: 'llrint' was not declared in this scope llrint(0.0); ^ test.cxx:54:23: error: 'llrintf' was not declared in this scope llrintf(0.0f); ^ test.cxx:55:23: error: 'llrintl' was not declared in this scope llrintl(0.0l); ^ test.cxx:56:22: error: 'llround' was not declared in this scope llround(0.0); ^ test.cxx:57:24: error: 'llroundf' was not declared in this scope llroundf(0.0f); ^ test.cxx:58:24: error: 'llroundl' was not declared in this scope llroundl(0.0l); ^