There are a few inaccuracies with how FuncSpec handles global variables.
When specialisation on non-const global variables is disabled (the default)
the pass could nevertheless perform some specializations, e.g. on a constant
GEP expression, or on a SSA variable, for which the Solver has determined
it has the value of a global variable.
When specialisation on non-const global variables is enabled, the pass would
skip non-scalars, e.g. a global array, but this should be completely inconsequential,
a pointer is a pointer.
Nit: does C not always have a value?