If you set an "incompatible" Feature on a Target, it's not clear that the resulting behavior is well-defined. For instance, say I try to compile using a Target of "arm-64-android-avx" -- what behavior should we expect? Among them:
(1) Should Target::from_string()/merge_string() detect impossible combinations and return false, or just quietly assemble the resulting Target?
(2) Should attempting to compile/JIT/etc with such a Target fail outright, or just quietly ignore inappropriate features?
AFAICT, both of these take the "else" case above; if that's explicitly desired, we should document and test that behavior.
If you set an "incompatible" Feature on a Target, it's not clear that the resulting behavior is well-defined. For instance, say I try to compile using a Target of "arm-64-android-avx" -- what behavior should we expect? Among them:
(1) Should Target::from_string()/merge_string() detect impossible combinations and return false, or just quietly assemble the resulting Target?
(2) Should attempting to compile/JIT/etc with such a Target fail outright, or just quietly ignore inappropriate features?
AFAICT, both of these take the "else" case above; if that's explicitly desired, we should document and test that behavior.