[llvm] 7a4f1d5 - [ConstraintElimination] Decompose GEP %ptr, ZEXT(SHL()).

Rainer Orth via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 2 11:20:29 PST 2020


Florian Hahn via llvm-commits <llvm-commits at lists.llvm.org> writes:

> Author: Florian Hahn
> Date: 2020-12-01T14:23:21Z
> New Revision: 7a4f1d59b82e5defbce4498347291e6ef9f1281c
>
> URL: https://github.com/llvm/llvm-project/commit/7a4f1d59b82e5defbce4498347291e6ef9f1281c
> DIFF: https://github.com/llvm/llvm-project/commit/7a4f1d59b82e5defbce4498347291e6ef9f1281c.diff
>
> LOG: [ConstraintElimination] Decompose GEP %ptr, ZEXT(SHL()).
>
> Add support to decompose a GEP with a ZEXT(SHL()) operand.

This patch and its predecessor broke the Solaris build:

	http://lab.llvm.org:8014/#/builders/22

/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp: In function ‘llvm::SmallVector<std::pair<long int, llvm::Value*>, 4> decompose(llvm::Value*)’:
/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:66:41: error: call of overloaded ‘pow(int, int64_t)’ is ambiguous
   66 |               {pow(2, CI->getSExtValue()), Op0}};
      |                                         ^
In file included from /usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.2.0/include-fixed/math.h:24,
                 from /usr/gcc/10/include/c++/10.2.0/bits/std_abs.h:40,
                 from /usr/gcc/10/include/c++/10.2.0/cstdlib:77,
                 from /usr/gcc/10/include/c++/10.2.0/bits/stl_algo.h:59,
                 from /usr/gcc/10/include/c++/10.2.0/algorithm:62,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/Support/MathExtras.h:17,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/ADT/APInt.h:19,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/ADT/DenseMapInfo.h:16,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/ADT/DenseMap.h:16,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/IR/PassManager.h:40,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/Transforms/Scalar/ConstraintElimination.h:12,
                 from /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:14:
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.2.0/include-fixed/iso/math_iso.h:212:21: note: candidate: ‘long double std::pow(long double, long double)’
  212 |  inline long double pow(long double __X, long double __Y) { return
      |                     ^~~
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.2.0/include-fixed/iso/math_iso.h:172:15: note: candidate: ‘float std::pow(float, float)’
  172 |  inline float pow(float __X, float __Y) { return __powf(__X, __Y); }
      |               ^~~
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.2.0/include-fixed/iso/math_iso.h:73:15: note: candidate: ‘double std::pow(double, double)’
   73 | extern double pow __P((double, double));
      |               ^~~
/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:66:48: error: could not convert ‘{{0, nullptr}, {1, GEP->llvm::GetElementPtrInst::getPointerOperand()}, {<expression error>, Op0}}’ from ‘<brace-enclosed initializer list>’ to ‘llvm::SmallVector<std::pair<long int, llvm::Value*>, 4>’
   66 |               {pow(2, CI->getSExtValue()), Op0}};
      |                                                ^
      |                                                |
      |                                                <brace-enclosed initializer list>

and similarly for the other use of pow.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


More information about the llvm-commits mailing list