[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