<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 - Valid Template Instantiation triggers assertion failure when Clang/LLVM built with ASSERTs enabled, but does not fail without assertion"
href="https://bugs.llvm.org/show_bug.cgi?id=45740">45740</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Valid Template Instantiation triggers assertion failure when Clang/LLVM built with ASSERTs enabled, but does not fail without assertion
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>10.0
</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>C++17
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>nicholas@untether.ai
</td>
</tr>
<tr>
<th>CC</th>
<td>blitzrakete@gmail.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
</td>
</tr></table>
<p>
<div>
<pre>When Clang and LLVM (version 10.0.0 for both) are compiled from source with
'Release' build and assertions are enabled, the following code:
template <const int& x>
void g() {
x;
}
template <int>
void f() {
static constexpr int x = 0;
g<x>();
}
int main() {
f<0>();
return 0;
}
will error out with:
clang++ -std=c++17 template.cpp
OR
clang++ -std=c++2a template.cpp
producing:
clang-10:
/xxxxx/llvm-project-llvmorg-10.0.0/clang/lib/Sema/SemaTemplateInstantiate.cpp:3527:
llvm::PointerUnion<clang::Decl*, llvm::SmallVector<clang::VarDecl*, 4>*>*
clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl*):
Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"'
failed.
However, if Clang and LLVM are compiled for RELEASE and assertions are turned
off, the code snippet passes through.
This also affects Clang and LLVM (trunk).</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>