diff options
author | Juergen Ributzka <juergen@ributzka.de> | 2018-11-29 05:56:03 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@ributzka.de> | 2018-11-29 05:56:03 +0000 |
commit | b7013d690f466d67b7480e1a41e5f16f3e38fc5b (patch) | |
tree | 688ebf4835a661a60672552403e4ec1a4339c00c /llvm/lib/TextAPI/MachO/TextStubCommon.cpp | |
parent | c2540995ed2bd682d4fe163bdd50ec83a3ed27b4 (diff) | |
download | llvm-b7013d690f466d67b7480e1a41e5f16f3e38fc5b.zip llvm-b7013d690f466d67b7480e1a41e5f16f3e38fc5b.tar.gz llvm-b7013d690f466d67b7480e1a41e5f16f3e38fc5b.tar.bz2 |
[TextAPI] Switch back to a custom Platform enum.
Moving to PlatformType from BinaryFormat had some UB fallout when handing
unknown platforms or malformed input files.
This should fix the sanitizer bots.
llvm-svn: 347836
Diffstat (limited to 'llvm/lib/TextAPI/MachO/TextStubCommon.cpp')
-rw-r--r-- | llvm/lib/TextAPI/MachO/TextStubCommon.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/llvm/lib/TextAPI/MachO/TextStubCommon.cpp b/llvm/lib/TextAPI/MachO/TextStubCommon.cpp index 6c42d40..7cbeb71 100644 --- a/llvm/lib/TextAPI/MachO/TextStubCommon.cpp +++ b/llvm/lib/TextAPI/MachO/TextStubCommon.cpp @@ -43,43 +43,44 @@ void ScalarEnumerationTraits<ObjCConstraintType>::enumeration( IO.enumCase(Constraint, "gc", ObjCConstraintType::GC); } -void ScalarTraits<PlatformType>::output(const PlatformType &Value, void *, +void ScalarTraits<PlatformKind>::output(const PlatformKind &Value, void *, raw_ostream &OS) { switch (Value) { - case PLATFORM_MACOS: + default: + llvm_unreachable("unexpected platform"); + break; + case PlatformKind::macOS: OS << "macosx"; break; - case PLATFORM_IOS: + case PlatformKind::iOS: OS << "ios"; break; - case PLATFORM_WATCHOS: + case PlatformKind::watchOS: OS << "watchos"; break; - case PLATFORM_TVOS: + case PlatformKind::tvOS: OS << "tvos"; break; - case PLATFORM_BRIDGEOS: + case PlatformKind::bridgeOS: OS << "bridgeos"; break; } } -StringRef ScalarTraits<PlatformType>::input(StringRef Scalar, void *, - PlatformType &Value) { - int Result = StringSwitch<unsigned>(Scalar) - .Case("macosx", PLATFORM_MACOS) - .Case("ios", PLATFORM_IOS) - .Case("watchos", PLATFORM_WATCHOS) - .Case("tvos", PLATFORM_TVOS) - .Case("bridgeos", PLATFORM_BRIDGEOS) - .Default(0); - - if (!Result) +StringRef ScalarTraits<PlatformKind>::input(StringRef Scalar, void *, + PlatformKind &Value) { + Value = StringSwitch<PlatformKind>(Scalar) + .Case("macosx", PlatformKind::macOS) + .Case("ios", PlatformKind::iOS) + .Case("watchos", PlatformKind::watchOS) + .Case("tvos", PlatformKind::tvOS) + .Case("bridgeos", PlatformKind::bridgeOS) + .Default(PlatformKind::unknown); + + if (Value == PlatformKind::unknown) return "unknown platform"; - - Value = static_cast<PlatformType>(Result); return {}; } -QuotingType ScalarTraits<PlatformType>::mustQuote(StringRef) { +QuotingType ScalarTraits<PlatformKind>::mustQuote(StringRef) { return QuotingType::None; } |