libMesh / libmesh

libMesh github repository
http://libmesh.github.io
GNU Lesser General Public License v2.1
651 stars 285 forks source link

Investigate warnings with FPoptimizer, complex<float>, and newer GCCs #905

Open jwpeterson opened 8 years ago

jwpeterson commented 8 years ago

I'm not really sure what this means, haven't even googled it yet, but I wanted to be sure and record it for posterity in case it's something we can fix...

fpoptimizer/rangeestimation.cc: In instantiation of ‘FPoptimizer_CodeTree::range<Value_t> FPoptimizer_CodeTree::CalculateResultBoundaries(const FPoptimizer_CodeTree::CodeTree<Value_t>&) [with Value_t = std::complex<float>]’:
fpoptimizer/constantfolding.cc:116:57:   required from ‘void FPoptimizer_CodeTree::ConstantFolding(FPoptimizer_CodeTree::CodeTree<Value_t>&) [with Value_t = std::complex<float>]’
fpoptimizer/hash.cc:54:28:   required from ‘void FPoptimizer_CodeTree::CodeTree<Value_t>::Rehash(bool) [with Value_t = std::complex<float>]’
../../../contrib/fparser/fpoptimizer/instantiate_for_ad.hh:10:5:   required from here
fpoptimizer/rangeestimation.cc:27:20: note: the ABI of passing structure with complex float member has changed in GCC 4.4
dschwen commented 8 years ago

This seems only relevant when linking post gcc 4.4 compiled code with pre gcc 4.4 compiled code. I'd just disable the warning with -Wno-psabi ¯_(ツ)_/¯

jwpeterson commented 8 years ago

OK, but where is the "pre gcc 4.4 compiled code" coming from, and can we get rid of it somehow?

dschwen commented 8 years ago

There is no such code. This is a compile time warning, not a linker warning. I think GCC just emits it every time regardless of whether there is an actual problem.

jwpeterson commented 8 years ago

That's some 💩