<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/146335>146335</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crash for fopenmp statement(parallel for) inside lambda function while generating llvm-ir
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
suganyat14
</td>
</tr>
</table>
<pre>
clang crashes with following stack for debug build as follows:
clang++ -fopenmp lambda_iter.cpp
lambda_iter.cpp:15:3: warning: missing 'typename' prior to dependent type name 'l::h' is a C++20 extension [-Wc++20-extensions]
15 | l::h aa;
| ^
| typename
lambda_iter.cpp:52:20: warning: field 'q' is uninitialized when used here [-Wuninitialized]
52 | H(n ag, m r) : D(q, 0, ag, r, v), t{o(af, 0, 0)} {}
| ^
lambda_iter.cpp:52:33: warning: field 'v' is uninitialized when used here [-Wuninitialized]
52 | H(n ag, m r) : D(q, 0, ag, r, v), t{o(af, 0, 0)} {}
| ^
lambda_iter.cpp:52:41: warning: field 'af' is uninitialized when used here [-Wuninitialized]
52 | H(n ag, m r) : D(q, 0, ag, r, v), t{o(af, 0, 0)} {}
| ^
DeclRefExpr for Decl not entered in LocalDeclMap?
UNREACHABLE executed at /home/suganya/upstream_llvm/llvm-project/clang/lib/CodeGen/CGExpr.cpp:3260!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /home/suganya/upstream_llvm/build/bin/clang-21 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name lambda_iter.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/suganya -fcoverage-compilation-dir=/home/suganya -resource-dir /home/suganya/upstream_llvm/build/lib/clang/21 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /home/suganya/upstream_llvm/build/lib/clang/21/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fopenmp -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/lambda_iter-1675e7.o -x c++ lambda_iter.cpp
1. <eof> parser at end of file
2. Per-file LLVM IR generation
3. lambda_iter.cpp:58:13: Generating code for declaration 'F<double>::ak(H &)::(anonymous class)::operator()'
#0 0x00005dfda87f5210 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
Example: (Reduced example of SIRIUS library application using creduce)
enum a {};
class b {
public:
b(int);
};
struct c {
typedef b h;
};
using e = b;
using f = b;
template <typename> class g {};
template <typename l> class i {
public:
using j = long;
l::h aa;
i(g<l>) : aa{0} {}
bool operator!=(i);
void operator++();
auto operator*() {
int k;
return k;
}
j operator-(i);
void operator+=(j);
};
class o : public g<c> {
public:
using p = int;
o(p, e, f);
};
auto begin(g<c> ac) {
i ad(ac);
return ad;
}
template <typename l> auto end(l ac) {
i ad(ac);
return ad;
}
using m = b;
using n = b;
class D {
protected:
D(int, int, n, m, a);
};
class H : D {
int af;
o t;
public:
a v;
int q;
H(n ag, m r) : D(q, 0, ag, r, v), t{o(af, 0, 0)} {}
auto s() { return t; }
};
template <typename> class F { void ak(H &) const; };
template <typename am> void F<am>::ak(H &an) const {
auto ao = an.s();
auto ap = [ao](H) {
#pragma omp for
for (auto d : ao)
;
};
H ar(0, 0);
ap(ar);
}
template class F<double>;
With release llvm binaries, it compiles successfully.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWFtv27jy_zTMy4CGRFmx85AHx46bAu0fRfrf7WNAUSOZDUWqJJXL-fQHQ8l2rt1ugT3A5sE2yeFcfpxrZAi6tYjnrLxg5eZEDnHn_HkYWmkfZcznJ5WrH8-VkbYF5WXYYYB7HXfQOGPcvbYthCjVLTTOQ43V0EI1aFODDBNJYMWKZavEgokLJi6AN65H2_VgZFfV8kZH9DPV9yxbvdwpVnnJilXBihXcS2-1belnp0Mg2Uws4mOPVnbIxAJ6r52H6KDGHm2NNgIdA50TrSFditWOaHUACetRI5EBPkS0QTsLrLzg39T-gB8OAis3LFsBQF4CW6xhzw2kZMXFeASQjgBYefli56DoW1aWghUrkb0ws9FoalL8x6TxYLXVUUuj_4M13O_QwhCwhh16HBV_RnHQuBSTEldMLC3Ilok1dOCZOAMStGFi-YP2MvoYjz193DFxRt-RLS4cE0vZHKgyOlpsgC0u2GLzzNjR-HesLF4-5sHKu3-XlX_191MU5vl7KJDwfxMMo5kbVOYam8uH3qdcQGuwLgLaiB5r0BY-OSUNHXyWPSu2LFv98X_Xl6v11eri0yXgA6ohYg0yAhPbnaOY3k6piInt0IfoUXY3xtx1TGzpi_fefUcVmdhOCWZrdMXEdu1q_ICWfn0gnSboC3GaMZGzbPXl0-Xq6yWEoep0BAmUuTz2zkfKH7sY-5S4xJaJbavjbqhmyu3FvpauQxgwMLEFaclWZYYaIe5wzJpQSXUbvVRIYPYee-8UBnrN4AY_btNNGYJTWhIMfrAQlNd9nLFs9TVl2Xro-jGfZrPxBb5413rZgfTt0KGNpPUvwZfSNH1ru0ePixy4Ujnw6HVvEB6Wpzencz7YW-vuLTfaDg-8tQNw7HTkrvoOnFSqtQfJgdc6yMogbzwicGVQei5D5BU2ziMnENDWwDupLW-0QZ4y84sQAd55NE7JqJ3lnavRQK8V8F4rbvAODYhxoQPvNQLvGi875L3T5Gys2EhjgDedjDuO3lsHvGl6rpylN4is2DgLvLGOezfYWtuWEy3wTjkboh9UdJ5Lo2XAALwZ7L22NY9kXGDFRgCP0rcYueoHQomfzoHHwWLaaNGiJ4VTQWzR01EK801bV8CbtM-V63ptRitrTWq_ejfgjXJ36GWLv0bucfQnovhbbjCGzT6IyBESllYarsNjiNgRuyH4A22rFBPbyUUOrsHENs-Z2M5mrz-msCA5Y3lNxP-spDdu_e-EP5VEWEt1ey99_bbQ336qo8ifWkPJ9xdJf9PwN2hfS6N-ylv1Wur7b_bz239fRIrA3qOiPMs7qTwlCPTeeW401YP87Nik8qa1g-J36KkLZMVmPhOzHHgTbnXPXe252qG65drytmsoYh8eOD4o7ClUKX08WyhnnOe1lq11IWpFe7KufdAt8M3NzYf1-uZq9eflzebb6norbtbbjzerr59ZscmBO7Ildj090jFp8vx0UeJi5oA_wORzb_TW-VQyWLFG17DiEnrpA3oquJSWXQOUk1m2Evvigj6lafj06c_P8PF6zGwpBbFsVUxUb3Q4S2rcU5_3YbpB84OrcZoTlJEjG2p4tqxY126oDLLicuyp5S0Tyytg4pT6jrRF_Yh19rFzQwBlZAiHI9eTCOeZWKYOZkH9CRNFBtlDlmVZWTe1XC6aUuQZpGBK18JjGH988drGVGD_fyzRyyORl_c3bozDpM0atI2pk8qoDF8-yK4nxUng8hrrQWENOO4Sol8_Xn_84ysYXXnpH0H2vdFjZYMhjTDKp0ukeLZCO3Qg911WGiqSqVClvWzVD5XRamwBAComlqM6I-3h0ljDQE23xuGjxgYq2L0gHbVAYMUGqqdbzdOtiF1vZCSy9WGQKS7Hh4D2mcZv0dKwtKfWb9oyCv2ehBpHxXLU_I0pSzOxbFmxJp77plZKtrjInreolXMGjs6Rp5K51Ae4AO6crp9QjMl6-YRADtE9IViNpwdYgbwBbidqj3Hw9rCEfaf8_cCB_5X8pOH31w86IueSqSNuQAgoQvV9NPuEJnnIJI-6-p6cODWczWs5yd4KW2oKlwcJUj01WoOsKRrVE0Mm02V95PczR0hi0BIb85z7LzMfLexe-619ujXittlj5F1EFbHew7TZB9AU1muwaVhK7fh7r3A1TlFHPGwE2RwghgntV28i4e7gwTbCj_3inx3TEtTh6Ld7NEnLyUN_GrnHuN2m68lln-VnSE3znt37KUB2xCvdp5Sfli_TvbQHhnt8kwHSpVeVdhbeCFA5OjorL6SjMVgsr44uxUTRe9l2ElzXU_2ZIpcqEaFHDOoxh7gxC-_L5DGK9y8FkorMEeq9Ej0x8s8c5gkIE3zPy9zkIt903IFHgzJgqk1QaSu9pmFyDTrC2PZjgDAoGhmbwZjH2Ul9XtRnxZk8wfN8UeZiWSyKxcnuHJvyDHOsTud5uSgbVZR5vijq02ZxuijOyvJEn4tMlNlpkeX5XOSL2dl8XuVnWbWoyqJusGbzDDupzYy0mTnfnqTh9jyfnxZFeWJkhSakfxgKMTWhgpWbE3-eZuJqaAObZ0aHGI4soo4Gn_4fMcG_b7FClBFpeqX0JL00Bk16KXEG2gZd72dEaAarUvG831Ff0h67iyRc-5PBm_PfH98nI-_OxX8DAAD___tOYE4">