Hello. gperf-3.0.4 compilation fails with: 86_64-pc-linux-gnu-g++ -march=native -O2 -pipe -I. -I./../lib -c ./output.cc ./output.cc: In member function 'void Output::output_lookup_array() const': ./output.cc:1304:73: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long int' [-Wformat] ./output.cc: In member function 'void Output::output()': ./output.cc:2034:75: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result] ./output.cc:2101:78: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result] {standard input}: Assembler messages: {standard input}:960: Error: no such instruction: `vfmadd312sd .LC23(%rip),%xmm1,%xmm0' make[1]: *** [output.o] Error 1 make[1]: Leaving directory `/var/tmp/portage/dev-util/gperf-3.0.4/work/gperf-3.0.4/src' make: *** [all] Error 2 emerge info and build.log attached. Reproducible: Always
Created attachment 354176 [details] emerge --info emerge --info
Created attachment 354178 [details] build.log build.log
Too old sys-devel/gcc and/or sys-devel/binutils for your CPU, see for example http://forums.gentoo.org/viewtopic-t-961210-start-0.html As in, stop using -march=native which isn't safe for you, or upgrade sys-devel/gcc
Was getting this same vfmadd312sd error when compiling cmake (had enabled the -mfma CFLAG). According to the wikipedia article on the FMA instruction set, you have to use gcc >= 4.7 for FMA support. I installed gcc-4.7.3 and was able to get past this error. This kinda has me confused on why gcc < 4.7 even accepts the -mfma flag if it's not supported.
It's not. 4.6 has -mfma4 but -mfma was added in 4.7. Not sure why it's not giving an error for 4.6. I would close this as CANTFIX and tell people to use a later version. 4.7 will go stable soon.
Please use gcc >= 4.7