From cf6929aea99d63d532a3e3bc6aaa65374ad2a9d5 Mon Sep 17 00:00:00 2001 From: Jinsong Ji Date: Fri, 18 Oct 2024 19:41:43 +0200 Subject: [PATCH] [NFC][Fuzzer] Fix zero-size array argv warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is one of the many PRs to fix errors with LLVM_ENABLE_WERROR=on. Built by GCC 11. Fix warning llvm-project/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp llvm-project/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp: In function ‘int LLVMFuzzerInitialize(int*, char***)’: llvm-project/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp:141:43: error: ISO C++ forbids zero-size array ‘argv’ [-Werror=pedantic] 141 | ExitOnError ExitOnErr(std::string(*argv[0]) + ": error:"); | --- llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp | 8 +++++--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp index 742f7b94e116f3..e91c7a9c3618d0 100644 --- a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp +++ b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp @@ -124,8 +124,10 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc, handleExecNameEncodedBEOpts(*argv[0]); parseFuzzerCLOpts(*argc, *argv); + std::string execName = *argv[0]; + if (TargetTriple.empty()) { - errs() << *argv[0] << ": -mtriple must be specified\n"; + errs() << execName << ": -mtriple must be specified\n"; exit(1); } @@ -135,10 +137,10 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc, if (auto Level = CodeGenOpt::parseLevel(OptLevel)) { OLvl = *Level; } else { - errs() << argv[0] << ": invalid optimization level.\n"; + errs() << execName << ": invalid optimization level.\n"; return 1; } - ExitOnError ExitOnErr(std::string(*argv[0]) + ": error:"); + ExitOnError ExitOnErr(std::string(execName) + ": error:"); TM = ExitOnErr(codegen::createTargetMachineForTriple( Triple::normalize(TargetTriple), OLvl)); assert(TM && "Could not allocate target machine!"); diff --git a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp index fcccf0e07ef8d2..1d5bd06ed40919 100644 --- a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp +++ b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp @@ -193,12 +193,12 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc, // Create TargetMachine // - + std::string execName = *argv[0]; if (TargetTripleStr.empty()) { - errs() << *argv[0] << ": -mtriple must be specified\n"; + errs() << execName << ": -mtriple must be specified\n"; exit(1); } - ExitOnError ExitOnErr(std::string(*argv[0]) + ": error:"); + ExitOnError ExitOnErr(std::string(execName) + ": error:"); TM = ExitOnErr(codegen::createTargetMachineForTriple( Triple::normalize(TargetTripleStr))); @@ -206,14 +206,14 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc, // if (PassPipeline.empty()) { - errs() << *argv[0] << ": at least one pass should be specified\n"; + errs() << execName << ": at least one pass should be specified\n"; exit(1); } PassBuilder PB(TM.get()); ModulePassManager MPM; if (auto Err = PB.parsePassPipeline(MPM, PassPipeline)) { - errs() << *argv[0] << ": " << toString(std::move(Err)) << "\n"; + errs() << execName << ": " << toString(std::move(Err)) << "\n"; exit(1); }