Skip to content

Commit 3686f59

Browse files
jhuber6AlexisPerry
authored andcommitted
[LinkerWrapper][NFC] Simplify StringErrors (llvm#96650)
Summary: The StringError class has a specialized method that creates the inconvertible error code for you. It's much easier to read this way.
1 parent 4961d99 commit 3686f59

File tree

1 file changed

+21
-32
lines changed

1 file changed

+21
-32
lines changed

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,8 @@ Error executeCommands(StringRef ExecutablePath, ArrayRef<StringRef> Args) {
224224

225225
if (!DryRun)
226226
if (sys::ExecuteAndWait(ExecutablePath, Args))
227-
return createStringError(inconvertibleErrorCode(),
228-
"'" + sys::path::filename(ExecutablePath) + "'" +
229-
" failed");
227+
return createStringError(
228+
"'%s' failed", sys::path::filename(ExecutablePath).str().c_str());
230229
return Error::success();
231230
}
232231

@@ -259,7 +258,6 @@ Error relocateOffloadSection(const ArgList &Args, StringRef Output) {
259258
Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple()));
260259
if (Triple.isOSWindows())
261260
return createStringError(
262-
inconvertibleErrorCode(),
263261
"Relocatable linking is not supported on COFF targets");
264262

265263
Expected<std::string> ObjcopyPath =
@@ -272,8 +270,7 @@ Error relocateOffloadSection(const ArgList &Args, StringRef Output) {
272270
auto BufferOrErr = DryRun ? MemoryBuffer::getMemBuffer("")
273271
: MemoryBuffer::getFileOrSTDIN(Output);
274272
if (!BufferOrErr)
275-
return createStringError(inconvertibleErrorCode(), "Failed to open %s",
276-
Output.str().c_str());
273+
return createStringError("Failed to open %s", Output.str().c_str());
277274
std::string Suffix = "_" + getHash((*BufferOrErr)->getBuffer());
278275

279276
SmallVector<StringRef> ObjcopyArgs = {
@@ -492,8 +489,7 @@ Expected<StringRef> clang(ArrayRef<StringRef> InputFiles, const ArgList &Args) {
492489

493490
file_magic Magic;
494491
if (auto EC = identify_magic(Arg->getValue(), Magic))
495-
return createStringError(inconvertibleErrorCode(),
496-
"Failed to open %s", Arg->getValue());
492+
return createStringError("Failed to open %s", Arg->getValue());
497493
if (Magic != file_magic::archive &&
498494
Magic != file_magic::elf_shared_object)
499495
continue;
@@ -568,9 +564,8 @@ Expected<StringRef> linkDevice(ArrayRef<StringRef> InputFiles,
568564
case Triple::systemz:
569565
return generic::clang(InputFiles, Args);
570566
default:
571-
return createStringError(inconvertibleErrorCode(),
572-
Triple.getArchName() +
573-
" linking is not supported");
567+
return createStringError(Triple.getArchName() +
568+
" linking is not supported");
574569
}
575570
}
576571

@@ -881,15 +876,13 @@ Error linkBitcodeFiles(SmallVectorImpl<OffloadFile> &InputFiles,
881876
return Err;
882877

883878
if (LTOError)
884-
return createStringError(inconvertibleErrorCode(),
885-
"Errors encountered inside the LTO pipeline.");
879+
return createStringError("Errors encountered inside the LTO pipeline.");
886880

887881
// If we are embedding bitcode we only need the intermediate output.
888882
bool SingleOutput = Files.size() == 1;
889883
if (Args.hasArg(OPT_embed_bitcode)) {
890884
if (BitcodeOutput.size() != 1 || !SingleOutput)
891-
return createStringError(inconvertibleErrorCode(),
892-
"Cannot embed bitcode with multiple files.");
885+
return createStringError("Cannot embed bitcode with multiple files.");
893886
OutputFiles.push_back(Args.MakeArgString(BitcodeOutput.front()));
894887
return Error::success();
895888
}
@@ -936,7 +929,7 @@ Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
936929
std::string Msg;
937930
const Target *T = TargetRegistry::lookupTarget(M.getTargetTriple(), Msg);
938931
if (!T)
939-
return createStringError(inconvertibleErrorCode(), Msg);
932+
return createStringError(Msg);
940933

941934
auto Options =
942935
codegen::InitTargetOptionsFromCodeGenFlags(Triple(M.getTargetTriple()));
@@ -966,8 +959,7 @@ Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
966959
CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
967960
if (TM->addPassesToEmitFile(CodeGenPasses, *OS, nullptr,
968961
CodeGenFileType::ObjectFile))
969-
return createStringError(inconvertibleErrorCode(),
970-
"Failed to execute host backend");
962+
return createStringError("Failed to execute host backend");
971963
CodeGenPasses.run(M);
972964

973965
return *TempFileOrErr;
@@ -1012,9 +1004,8 @@ wrapDeviceImages(ArrayRef<std::unique_ptr<MemoryBuffer>> Buffers,
10121004
return std::move(Err);
10131005
break;
10141006
default:
1015-
return createStringError(inconvertibleErrorCode(),
1016-
getOffloadKindName(Kind) +
1017-
" wrapping is not supported");
1007+
return createStringError(getOffloadKindName(Kind) +
1008+
" wrapping is not supported");
10181009
}
10191010

10201011
if (Args.hasArg(OPT_print_wrapped_module))
@@ -1109,9 +1100,8 @@ bundleLinkedOutput(ArrayRef<OffloadingImage> Images, const ArgList &Args,
11091100
case OFK_HIP:
11101101
return bundleHIP(Images, Args);
11111102
default:
1112-
return createStringError(inconvertibleErrorCode(),
1113-
getOffloadKindName(Kind) +
1114-
" bundling is not supported");
1103+
return createStringError(getOffloadKindName(Kind) +
1104+
" bundling is not supported");
11151105
}
11161106
}
11171107

@@ -1209,7 +1199,7 @@ Expected<SmallVector<StringRef>> linkAndWrapDeviceFiles(
12091199
StringSaver Saver(Alloc);
12101200
auto BaseArgs =
12111201
Tbl.parseArgs(Argc, Argv, OPT_INVALID, Saver, [](StringRef Err) {
1212-
reportError(createStringError(inconvertibleErrorCode(), Err));
1202+
reportError(createStringError(Err));
12131203
});
12141204
auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
12151205

@@ -1510,9 +1500,8 @@ getDeviceInput(const ArgList &Args) {
15101500
: std::string(Arg->getValue());
15111501

15121502
if (!Filename && Arg->getOption().matches(OPT_library))
1513-
reportError(createStringError(inconvertibleErrorCode(),
1514-
"unable to find library -l%s",
1515-
Arg->getValue()));
1503+
reportError(
1504+
createStringError("unable to find library -l%s", Arg->getValue()));
15161505

15171506
if (!Filename || !sys::fs::exists(*Filename) ||
15181507
sys::fs::is_directory(*Filename))
@@ -1646,7 +1635,7 @@ int main(int Argc, char **Argv) {
16461635
BumpPtrAllocator Alloc;
16471636
StringSaver Saver(Alloc);
16481637
auto Args = Tbl.parseArgs(Argc, Argv, OPT_INVALID, Saver, [&](StringRef Err) {
1649-
reportError(createStringError(inconvertibleErrorCode(), Err));
1638+
reportError(createStringError(Err));
16501639
});
16511640

16521641
if (Args.hasArg(OPT_help) || Args.hasArg(OPT_help_hidden)) {
@@ -1691,9 +1680,9 @@ int main(int Argc, char **Argv) {
16911680
if (auto *Arg = Args.getLastArg(OPT_wrapper_jobs)) {
16921681
unsigned Threads = 0;
16931682
if (!llvm::to_integer(Arg->getValue(), Threads) || Threads == 0)
1694-
reportError(createStringError(
1695-
inconvertibleErrorCode(), "%s: expected a positive integer, got '%s'",
1696-
Arg->getSpelling().data(), Arg->getValue()));
1683+
reportError(createStringError("%s: expected a positive integer, got '%s'",
1684+
Arg->getSpelling().data(),
1685+
Arg->getValue()));
16971686
parallel::strategy = hardware_concurrency(Threads);
16981687
}
16991688

0 commit comments

Comments
 (0)