Given that the Cray compiler aborts on this code with an incorrect error message, I would actually call it a compiler bug. The compiler may possibly want to complain that it doesn't know __builtin_ffsl, but its error message (Declaration is incompatible with "int ffsl(long)") indicates that there is some other problem. Note that hwloc never declares ffsl; it only calls __builtin_ffsl.
However, I have a work-around, and leave it up to you to report this or not.