[llvm] [Coverage] Fix CoverageMapping.cpp compilation on Solaris (PR #75479)
Rainer Orth via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 14 06:52:54 PST 2023
https://github.com/rorth created https://github.com/llvm/llvm-project/pull/75479
8ecbb0404d740d1ab173554e47cef39cd5e3ef8c broke the Solaris build:
```
FAILED: lib/ProfileData/Coverage/CMakeFiles/LLVMCoverage.dir/CoverageMapping.cpp.o
[...]
/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:284:21: error: call to 'pow' is ambiguous
284 | TestVectors(pow(2, NumConditions)) {}
| ^~~
/usr/include/iso/math_iso.h:64:15: note: candidate function
64 | extern double pow __P((double, double));
| ^
/usr/include/iso/math_iso.h:141:16: note: candidate function
141 | inline double pow(double __X, int __Y) { return
| ^
/usr/include/iso/math_iso.h:161:15: note: candidate function
161 | inline float pow(float __X, float __Y) { return __powf(__X, __Y); }
| ^
/usr/include/iso/math_iso.h:163:16: note: candidate function
163 | inline double pow(float __X, int __Y) { return
| ^
/usr/include/iso/math_iso.h:197:21: note: candidate function
197 | inline long double pow(long double __X, long double __Y) { return
| ^
/usr/include/iso/math_iso.h:199:21: note: candidate function
199 | inline long double pow(long double __X, int __Y) { return
| ^
```
Fixed by disambiguating the `pow` call.
Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.
>From b235b41bdffb8804616551135e9610b19c9e7ec3 Mon Sep 17 00:00:00 2001
From: Rainer Orth <ro at gcc.gnu.org>
Date: Thu, 14 Dec 2023 15:32:18 +0100
Subject: [PATCH] [Coverage] Fix CoverageMapping.cpp compilation on Solaris
8ecbb0404d740d1ab173554e47cef39cd5e3ef8c broke the Solaris build:
```
FAILED: lib/ProfileData/Coverage/CMakeFiles/LLVMCoverage.dir/CoverageMapping.cpp.o
[...]
/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp:284:21: error: call to 'pow' is ambiguous
284 | TestVectors(pow(2, NumConditions)) {}
| ^~~
/usr/include/iso/math_iso.h:64:15: note: candidate function
64 | extern double pow __P((double, double));
| ^
/usr/include/iso/math_iso.h:141:16: note: candidate function
141 | inline double pow(double __X, int __Y) { return
| ^
/usr/include/iso/math_iso.h:161:15: note: candidate function
161 | inline float pow(float __X, float __Y) { return __powf(__X, __Y); }
| ^
/usr/include/iso/math_iso.h:163:16: note: candidate function
163 | inline double pow(float __X, int __Y) { return
| ^
/usr/include/iso/math_iso.h:197:21: note: candidate function
197 | inline long double pow(long double __X, long double __Y) { return
| ^
/usr/include/iso/math_iso.h:199:21: note: candidate function
199 | inline long double pow(long double __X, int __Y) { return
| ^
```
Fixed by disambiguating the `pow` call.
Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.
---
llvm/lib/ProfileData/Coverage/CoverageMapping.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
index 80875702b02ab9..99192bfe0b5e00 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
@@ -281,7 +281,7 @@ class MCDCRecordProcessor {
: ExecutedTestVectorBitmap(Bitmap), Region(Region), Branches(Branches),
NumConditions(Region.MCDCParams.NumConditions),
Folded(NumConditions, false), IndependencePairs(NumConditions),
- TestVectors(pow(2, NumConditions)) {}
+ TestVectors(pow(2.0, (double)NumConditions)) {}
private:
void recordTestVector(MCDCRecord::TestVector &TV,
More information about the llvm-commits
mailing list