Index: llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp =================================================================== --- llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -668,7 +668,9 @@ // Calculate TruePercent and False Percent. double TruePercent = 0.0; double FalsePercent = 0.0; - unsigned Total = R.ExecutionCount + R.FalseExecutionCount; + // FIXME: It may overflow when the data is too large, but I have not + // encountered it in actual use, and not sure whether to use __uint128_t. + uint64_t Total = R.ExecutionCount + R.FalseExecutionCount; if (!getOptions().ShowBranchCounts && Total != 0) { TruePercent = ((double)(R.ExecutionCount) / (double)Total) * 100.0; Index: llvm/tools/llvm-cov/SourceCoverageViewText.cpp =================================================================== --- llvm/tools/llvm-cov/SourceCoverageViewText.cpp +++ llvm/tools/llvm-cov/SourceCoverageViewText.cpp @@ -232,7 +232,9 @@ for (const auto &R : BRV.Regions) { double TruePercent = 0.0; double FalsePercent = 0.0; - unsigned Total = R.ExecutionCount + R.FalseExecutionCount; + // FIXME: It may overflow when the data is too large, but I have not + // encountered it in actual use, and not sure whether to use __uint128_t. + uint64_t Total = R.ExecutionCount + R.FalseExecutionCount; if (!getOptions().ShowBranchCounts && Total != 0) { TruePercent = ((double)(R.ExecutionCount) / (double)Total) * 100.0;