<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Regression in a29aa47106205ec95c12e0ebac4260c5de878a6a [OpenCL] Move addr space deduction to Sema."
   href="https://bugs.llvm.org/show_bug.cgi?id=44176">44176</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Regression in a29aa47106205ec95c12e0ebac4260c5de878a6a [OpenCL] Move addr space deduction to Sema.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>OpenCL
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>drohr@jwdt.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>anastasia.stulova@arm.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=22879" name="attach_22879" title="Test case failing to compile">attachment 22879</a> <a href="attachment.cgi?id=22879&action=edit" title="Test case failing to compile">[details]</a></span>
Test case failing to compile

The attached example, that was compiling correctly before
a29aa47106205ec95c12e0ebac4260c5de878a6a, fails to compile with
a29aa47106205ec95c12e0ebac4260c5de878a6a with the command line

clang++ -cl-std=clc++ -x cl -emit-llvm --target=spir64-unknown-unknown
-cl-denorms-are-zero -cl-mad-enable -cl-no-signed-zeros -ferror-limit=1000
-Xclang -finclude-default-header -Dcl_clang_storage_class_specifiers
-Wno-invalid-constexpr -c test.cl -o test.bc

with the following errors

../Merger/GPUTPCGMPolynomialField.h:226:27: error: cannot initialize a
parameter of type 'float *' with an lvalue of type 'float [20]'
  GetPolynomsTrd(x, y, z, f);
                          ^
../Merger/GPUTPCGMPolynomialField.h:198:86: note: passing argument to parameter
'f' here
inline void GPUTPCGMPolynomialField::GetPolynomsTrd(float x, float y, float z,
float f[NTRDM])
                                                                               
     ^
../Merger/GPUTPCGMPolynomialField.h:241:27: error: cannot initialize a
parameter of type 'float *' with an lvalue of type 'float [20]'
  GetPolynomsTrd(x, y, z, f);
                          ^
../Merger/GPUTPCGMPolynomialField.h:198:86: note: passing argument to parameter
'f' here
inline void GPUTPCGMPolynomialField::GetPolynomsTrd(float x, float y, float z,
float f[NTRDM])
                                                                               
     ^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:50:
../Merger/GPUTPCGMPropagator.cxx:59:64: error: cannot initialize a parameter of
type 'float *' with an lvalue of type 'float [3]'
      mField->GetFieldIts(X * cs - Y * sn, X * sn + Y * cs, Z, bb);
                                                               ^~
../Merger/GPUTPCGMPolynomialField.h:269:83: note: passing argument to parameter
'B' here
inline void GPUTPCGMPolynomialField::GetFieldIts(float x, float y, float z,
float B[3]) const
                                                                               
  ^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:50:
../Merger/GPUTPCGMPropagator.cxx:62:64: error: cannot initialize a parameter of
type 'float *' with an lvalue of type 'float [3]'
      mField->GetFieldTrd(X * cs - Y * sn, X * sn + Y * cs, Z, bb);
                                                               ^~
../Merger/GPUTPCGMPolynomialField.h:223:83: note: passing argument to parameter
'B' here
inline void GPUTPCGMPolynomialField::GetFieldTrd(float x, float y, float z,
float B[3]) const
                                                                               
  ^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:50:
../Merger/GPUTPCGMPropagator.cxx:66:61: error: cannot initialize a parameter of
type 'float *' with an lvalue of type 'float [3]'
      mField->GetField(X * cs - Y * sn, X * sn + Y * cs, Z, bb);
                                                            ^~
../Merger/GPUTPCGMPolynomialField.h:167:80: note: passing argument to parameter
'B' here
inline void GPUTPCGMPolynomialField::GetField(float x, float y, float z, float
B[3]) const
                                                                              
^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:50:
../Merger/GPUTPCGMPropagator.cxx:87:31: error: cannot initialize a parameter of
type 'float *' with an lvalue of type 'float [3]'
    GetBxByBz(Alpha, X, Y, Z, B);
                              ^
../Merger/GPUTPCGMPropagator.cxx:31:89: note: passing argument to parameter 'B'
here
       void GPUTPCGMPropagator::GetBxByBz(float Alpha, float X, float Y, float
Z, float B[3]) const
                                                                               
        ^
../Merger/GPUTPCGMPropagator.cxx:159:47: error: cannot initialize a parameter
of type 'float *' with an lvalue of type 'float [3]'
  GetBxByBz(newAlpha, t0.X(), t0.Y(), t0.Z(), B);
                                              ^
../Merger/GPUTPCGMPropagator.cxx:31:89: note: passing argument to parameter 'B'
here
       void GPUTPCGMPropagator::GetBxByBz(float Alpha, float X, float Y, float
Z, float B[3]) const
                                                                               
        ^
../Merger/GPUTPCGMPropagator.cxx:287:48: error: cannot initialize a parameter
of type 'float *' with an lvalue of type 'float [3]'
  GetBxByBz(mAlpha, mT0.X(), mT0.Y(), mT0.Z(), B);
                                               ^
../Merger/GPUTPCGMPropagator.cxx:31:89: note: passing argument to parameter 'B'
here
       void GPUTPCGMPropagator::GetBxByBz(float Alpha, float X, float Y, float
Z, float B[3]) const
                                                                               
        ^
../Merger/GPUTPCGMPropagator.cxx:900:48: error: cannot initialize a parameter
of type 'float *' with an lvalue of type 'float [3]'
  GetBxByBz(mAlpha, mT0.X(), mT0.Y(), mT0.Z(), B);
                                               ^
../Merger/GPUTPCGMPropagator.cxx:31:89: note: passing argument to parameter 'B'
here
       void GPUTPCGMPropagator::GetBxByBz(float Alpha, float X, float Y, float
Z, float B[3]) const
                                                                               
        ^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:74:
../TRDTracking/GPUTRDTracker.cxx:658:49: error: cannot initialize a parameter
of type 'const o2::gpu::My_Float *' (aka 'const float *') with an lvalue of
type 'o2::gpu::My_Float [2]'
            float chi2 = prop->getPredictedChi2(trkltPosTmpYZ, trkltCovTmp);
                                                ^~~~~~~~~~~~~
../TRDTracking/GPUTRDInterfaces.h:264:48: note: passing argument to parameter
'p' here
         float getPredictedChi2(const My_Float p[2], const My_Float cov[3])
const { return PredictChi2(p[0], p[1], cov[0], cov[2]); }
                                               ^
In file included from ../Base/opencl-common/GPUReconstructionOCL.cl:63:
In file included from ../Base/GPUReconstructionIncludesDevice.h:74:
../TRDTracking/GPUTRDTracker.cxx:798:25: error: cannot initialize a parameter
of type 'const o2::gpu::My_Float *' (aka 'const float *') with an lvalue of
type 'o2::gpu::My_Float [2]'
      if (!prop->update(trkltPosUp, trkltCovUp)) {
                        ^~~~~~~~~~
../TRDTracking/GPUTRDInterfaces.h:257:37: note: passing argument to parameter
'p' here
         bool update(const My_Float p[2], const My_Float cov[3])</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>