extern "C" bool LLVMRustHasFeature(LLVMTargetMachineRef TM,
const char *Feature) {
-#if LLVM_RUSTLLVM
+#if LLVM_VERSION_GE(6, 0)
TargetMachine *Target = unwrap(TM);
const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
- const FeatureBitset &Bits = MCInfo->getFeatureBits();
- const ArrayRef<SubtargetFeatureKV> FeatTable = MCInfo->getFeatureTable();
-
- for (auto &FeatureEntry : FeatTable)
- if (!strcmp(FeatureEntry.Key, Feature))
- return (Bits & FeatureEntry.Value) == FeatureEntry.Value;
-#endif
+ return MCInfo->checkFeatures(std::string("+") + Feature);
+#else
return false;
+#endif
}
enum class LLVMRustCodeModel {