<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 - Broken initialization of objects in __constant AS in C++ mode"
href="https://bugs.llvm.org/show_bug.cgi?id=42566">42566</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Broken initialization of objects in __constant AS in C++ mode
</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>anastasia.stulova@arm.com
</td>
</tr>
<tr>
<th>CC</th>
<td>anastasia.stulova@arm.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>When compiling with -cl-std=++ the following test case a number of errors seem
to be produced incorrectly:
struct X {
int x;
X(int x) __constant : x(x) {}
};
kernel void barX() {
__constant X x(0); // error: initializer element is not a compile-time
constant
}
struct Y {
int y;
};
kernel void barY() {
__constant Y y = { 0 }; // Okay
}
struct Z {
Z() __constant = default;
};
kernel void barZ() {
__constant Z z1; // error: variable in constant address space must be
initialized
__constant Z z2 = Z(); // error: no matching constructor for initialization of
'Z'
// note: candidate constructor ignored: cannot be used
to construct an object in address space unqualified
}</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>