https://github.com/AdityaSinha149 updated https://github.com/llvm/llvm-project/pull/238231
>From d2295042f6438951aedb98ea53148fcf8751a4fd Mon Sep 17 00:00:00 2001 From: AdityaSinha149 <[email protected]> Date: Tue, 3 Nov 2026 12:28:30 +0530 Subject: [PATCH] [NFC][clang][Driver] Changed if-else to a StringSwitch in CreateFileHandler --- clang/lib/Driver/OffloadBundler.cpp | 47 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/clang/lib/Driver/OffloadBundler.cpp b/clang/lib/Driver/OffloadBundler.cpp index 2d0c326ab6f406..2ea2df75d719c8 100644 --- a/clang/lib/Driver/OffloadBundler.cpp +++ b/clang/lib/Driver/OffloadBundler.cpp @@ -913,33 +913,30 @@ static Expected<std::unique_ptr<FileHandler>> CreateFileHandler(MemoryBuffer &FirstInput, const OffloadBundlerConfig &BundlerConfig) { std::string FilesType = BundlerConfig.FilesType; - - if (FilesType == "i") - return std::make_unique<TextFileHandler>(/*Comment=*/"//"); - if (FilesType == "ii") - return std::make_unique<TextFileHandler>(/*Comment=*/"//"); - if (FilesType == "cui") - return std::make_unique<TextFileHandler>(/*Comment=*/"//"); - if (FilesType == "hipi") - return std::make_unique<TextFileHandler>(/*Comment=*/"//"); - // TODO: `.d` should be eventually removed once `-M` and its variants are - // handled properly in offload compilation. - if (FilesType == "d") - return std::make_unique<TextFileHandler>(/*Comment=*/"#"); - if (FilesType == "ll") - return std::make_unique<TextFileHandler>(/*Comment=*/";"); - if (FilesType == "bc") + enum class Kind { SlashText, HashText, SemiText, Binary, Object, Unknown }; + Kind K = StringSwitch<Kind>(FilesType) + .Cases({"i", "ii", "cui", "hipi"}, Kind::SlashText) + // TODO: `.d` should be eventually removed once `-M` and its + // variants are handled properly in offload compilation. + .Cases({"d", "s"}, Kind::HashText) + .Case("ll", Kind::SemiText) + .Cases({"bc", "gch", "ast"}, Kind::Binary) + .Cases({"o", "a"}, Kind::Object) + .Default(Kind::Unknown); + switch (K) { + case Kind::SlashText: + return std::make_unique<TextFileHandler>("//"); + case Kind::HashText: + return std::make_unique<TextFileHandler>("#"); + case Kind::SemiText: + return std::make_unique<TextFileHandler>(";"); + case Kind::Binary: return std::make_unique<BinaryFileHandler>(BundlerConfig); - if (FilesType == "s") - return std::make_unique<TextFileHandler>(/*Comment=*/"#"); - if (FilesType == "o") - return CreateObjectFileHandler(FirstInput, BundlerConfig); - if (FilesType == "a") + case Kind::Object: return CreateObjectFileHandler(FirstInput, BundlerConfig); - if (FilesType == "gch") - return std::make_unique<BinaryFileHandler>(BundlerConfig); - if (FilesType == "ast") - return std::make_unique<BinaryFileHandler>(BundlerConfig); + case Kind::Unknown: + break; + } return createStringError(errc::invalid_argument, "'" + FilesType + "': invalid file type specified"); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
