Index: llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp @@ -200,10 +200,10 @@ } } -static void WorkerThread(const std::string &Cmd, std::atomic *Counter, - int NumJobs, std::atomic *HasErrors) { +static void WorkerThread(const std::string &Cmd, std::atomic *Counter, + unsigned NumJobs, std::atomic *HasErrors) { while (true) { - int C = (*Counter)++; + unsigned C = (*Counter)++; if (C >= NumJobs) break; std::string Log = "fuzz-" + std::to_string(C) + ".log"; std::string ToRun = Cmd + " > " + Log + " 2>&1\n"; @@ -213,7 +213,7 @@ if (ExitCode != 0) *HasErrors = true; std::lock_guard Lock(Mu); - Printf("================== Job %d exited with exit code %d ============\n", + Printf("================== Job %u exited with exit code %d ============\n", C, ExitCode); fuzzer::CopyFileToErr(Log); } @@ -231,14 +231,14 @@ } static int RunInMultipleProcesses(const std::vector &Args, - int NumWorkers, int NumJobs) { - std::atomic Counter(0); + unsigned NumWorkers, unsigned NumJobs) { + std::atomic Counter(0); std::atomic HasErrors(false); std::string Cmd = CloneArgsWithoutX(Args, "jobs", "workers"); std::vector V; std::thread Pulse(PulseThread); Pulse.detach(); - for (int i = 0; i < NumWorkers; i++) + for (unsigned i = 0; i < NumWorkers; i++) V.push_back(std::thread(WorkerThread, Cmd, &Counter, NumJobs, &HasErrors)); for (auto &T : V) T.join(); @@ -379,7 +379,7 @@ if (Flags.jobs > 0 && Flags.workers == 0) { Flags.workers = std::min(NumberOfCpuCores() / 2, Flags.jobs); if (Flags.workers > 1) - Printf("Running %d workers\n", Flags.workers); + Printf("Running %u workers\n", Flags.workers); } if (Flags.workers > 0 && Flags.jobs > 0) Index: llvm/trunk/lib/Fuzzer/FuzzerFlags.def =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerFlags.def +++ llvm/trunk/lib/Fuzzer/FuzzerFlags.def @@ -54,10 +54,10 @@ "Experimental. Use value profile to guide fuzzing.") FUZZER_FLAG_INT(use_cmp, 1, "Use CMP traces to guide mutations") FUZZER_FLAG_INT(shrink, 0, "Experimental. Try to shrink corpus elements.") -FUZZER_FLAG_INT(jobs, 0, "Number of jobs to run. If jobs >= 1 we spawn" +FUZZER_FLAG_UNSIGNED(jobs, 0, "Number of jobs to run. If jobs >= 1 we spawn" " this number of jobs in separate worker processes" " with stdout/stderr redirected to fuzz-JOB.log.") -FUZZER_FLAG_INT(workers, 0, +FUZZER_FLAG_UNSIGNED(workers, 0, "Number of simultaneous worker processes to run the jobs." " If zero, \"min(jobs,NumberOfCpuCores()/2)\" is used.") FUZZER_FLAG_INT(reload, 1, Index: llvm/trunk/lib/Fuzzer/FuzzerUtil.h =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerUtil.h +++ llvm/trunk/lib/Fuzzer/FuzzerUtil.h @@ -38,7 +38,7 @@ std::string DescribePC(const char *SymbolizedFMT, uintptr_t PC); -int NumberOfCpuCores(); +unsigned NumberOfCpuCores(); bool ExecuteCommandAndReadOutput(const std::string &Command, std::string *Out); Index: llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp @@ -195,7 +195,7 @@ Printf(FallbackFMT, PC); } -int NumberOfCpuCores() { +unsigned NumberOfCpuCores() { unsigned N = std::thread::hardware_concurrency(); if (!N) { Printf("WARNING: std::thread::hardware_concurrency not well defined for "