GlobalOPT and non-default ctor priorities


When GlobalOPT iterates over the constructors in @llvm_global_ctors, it gives up if it sees a single ctor that does not have priority 65535 [1]

Naively, it seems that it should attempt to evaluate them in priority order and stop evaluating as soon as the first ctor cannot be evaluated (further ctors could depend on the first ctor that could not be evaluated).

Is there anything that could prevent this idea from working? Why does GlobalOPT dislike anything with priority different from 65535?

[1] lib/Transforms/Utils/findGlobalCtors.cpp::findGlobalCtors