Skip to content

Commit

Permalink
[clang-tidy] Disambiguate calls to log
Browse files Browse the repository at this point in the history
c8644b1 <https://reviews.llvm.org/rGc8644b18f570be9d26d83cdeeb2369cd3cbddaf1>
broke the Solaris/amd64 <https://lab.llvm.org/staging/#/builders/101/builds/15078>
and Solaris/sparcv9 <https://lab.llvm.org/staging/#/builders/50/builds/15116> buildbots:

  FAILED: tools/clang/tools/extra/clang-tidy/altera/CMakeFiles/obj.clangTidyAlteraModule.dir/UnrollLoopsCheck.cpp.o
  [...]
  /vol/llvm/src/llvm-project/dist/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.cpp:217:25: error: call to 'log' is ambiguous
    217 |       Iterations = 1 + (log(EndValue) - log(InitValue)) / log(ConstantValue);
        |                         ^~~
  /usr/include/iso/math_iso.h:60:15: note: candidate function
     60 | extern double log __P((double));
        |               ^
  /usr/include/iso/math_iso.h:158:15: note: candidate function
    158 |         inline float log(float __X) { return __logf(__X); }
        |                      ^
  /usr/include/iso/math_iso.h:193:21: note: candidate function
    193 |         inline long double log(long double __X) { return __logl(__X); }
        |                            ^

Fixed by disambituating the calls with `double` casts.

Tested on `amd64-pc-solaris2.11` and `x86_64-pc-linux-gnu`.

Differential Revision: https://reviews.llvm.org/D158959
  • Loading branch information
rorth committed Aug 27, 2023
1 parent 24fcc0a commit 03dff0d
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,12 @@ bool UnrollLoopsCheck::hasLargeNumIterations(const Stmt *Statement,
Iterations = ceil(float(InitValue - EndValue) / ConstantValue);
break;
case (BO_MulAssign):
Iterations = 1 + (log(EndValue) - log(InitValue)) / log(ConstantValue);
Iterations = 1 + (log((double)EndValue) - log((double)InitValue)) /
log((double)ConstantValue);
break;
case (BO_DivAssign):
Iterations = 1 + (log(InitValue) - log(EndValue)) / log(ConstantValue);
Iterations = 1 + (log((double)InitValue) - log((double)EndValue)) /
log((double)ConstantValue);
break;
default:
// All other operators are not handled; assume large bounds.
Expand Down

0 comments on commit 03dff0d

Please sign in to comment.