The program header creation logic depends on a strict separation of alloc and non-alloc output sections.
Declaring a non-alloc output section in linker scripts has the effect that no PT_LOAD header will be created for alloc sections coming afterwards. We should warn the user if this is detected.
This fixes https://bugs.llvm.org/show_bug.cgi?id=37607
The name of variable should be uppercase. I think it should be CompareXXX for consistency with other predicates.