[llvm-bugs] [Bug 44689] New: [concepts] ICE when *this appears in trailing requires-clause

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jan 27 17:13:43 PST 2020


https://bugs.llvm.org/show_bug.cgi?id=44689

            Bug ID: 44689
           Summary: [concepts] ICE when *this appears in trailing
                    requires-clause
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++2a
          Assignee: unassignedclangbugs at nondot.org
          Reporter: Casey at Carter.net
                CC: blitzrakete at gmail.com, erik.pilkington at gmail.com,
                    llvm-bugs at lists.llvm.org, richard-llvm at metafoo.co.uk

This well-formed TU:

  struct fn {
    void operator()(int&, int&) const {}

    template <class T, decltype(sizeof(int)) N>
    void operator()(T (&x)[N], T (&y)[N]) const
  #ifndef WORKAROUND
    requires requires { (*this)(x[0], y[0]); }
  #else
    requires requires(const fn& self) { self(x[0], y[0]); }
  #endif
    {}
  } swap;

  int main() {
    int x[4]{}, y[4]{};
    swap(x, y);
  }

when compiled with "clang -std=c++2a" (on release/10.x) diagnoses (My stack
trace is useless without symbol info - https://godbolt.org/z/5fWuNC is better):

Assertion failed: !isNull() && "Cannot retrieve a NULL type pointer", file
D:\llvm\clang\include\clang/AST/Type.h, line 670
Stack dump:
0.      Program arguments: d:\clang10\bin\clang -std=c++2a repro.cpp
1.      repro.cpp:16:12: current parser token ')'
2.      repro.cpp:14:12: parsing function body 'main'
3.      repro.cpp:14:12: in compound statement ('{}')
 #0 0x00007ff64632136b (d:\clang10\bin\clang.exe+0x10e136b)
 #1 0x00007ffce59acb6d (C:\WINDOWS\System32\ucrtbase.dll+0x6cb6d)
 #2 0x00007ffce59adb71 (C:\WINDOWS\System32\ucrtbase.dll+0x6db71)
 #3 0x00007ffce59af5ae (C:\WINDOWS\System32\ucrtbase.dll+0x6f5ae)
 #4 0x00007ffce59af4a5 (C:\WINDOWS\System32\ucrtbase.dll+0x6f4a5)
 #5 0x00007ffce59af831 (C:\WINDOWS\System32\ucrtbase.dll+0x6f831)
 #6 0x00007ff64657df90 (d:\clang10\bin\clang.exe+0x133df90)
 #7 0x00007ff646584863 (d:\clang10\bin\clang.exe+0x1344863)
 #8 0x00007ff646536613 (d:\clang10\bin\clang.exe+0x12f6613)
 #9 0x00007ff64813a3a4 (d:\clang10\bin\clang.exe+0x2efa3a4)
#10 0x00007ff64810e0c6 (d:\clang10\bin\clang.exe+0x2ece0c6)
#11 0x00007ff648143299 (d:\clang10\bin\clang.exe+0x2f03299)
#12 0x00007ff648153072 (d:\clang10\bin\clang.exe+0x2f13072)
#13 0x00007ff64851fa17 (d:\clang10\bin\clang.exe+0x32dfa17)
#14 0x00007ff648542ecf (d:\clang10\bin\clang.exe+0x3302ecf)
#15 0x00007ff6485212f3 (d:\clang10\bin\clang.exe+0x32e12f3)
#16 0x00007ff648538d27 (d:\clang10\bin\clang.exe+0x32f8d27)
#17 0x00007ff648520e9d (d:\clang10\bin\clang.exe+0x32e0e9d)
#18 0x00007ff648516e4e (d:\clang10\bin\clang.exe+0x32d6e4e)
#19 0x00007ff64851fb89 (d:\clang10\bin\clang.exe+0x32dfb89)
#20 0x00007ff6485046c3 (d:\clang10\bin\clang.exe+0x32c46c3)
#21 0x00007ff64853a466 (d:\clang10\bin\clang.exe+0x32fa466)
#22 0x00007ff64853a02f (d:\clang10\bin\clang.exe+0x32fa02f)
#23 0x00007ff64853a35d (d:\clang10\bin\clang.exe+0x32fa35d)
#24 0x00007ff648520fc5 (d:\clang10\bin\clang.exe+0x32e0fc5)
#25 0x00007ff6484fe117 (d:\clang10\bin\clang.exe+0x32be117)
#26 0x00007ff648637c2c (d:\clang10\bin\clang.exe+0x33f7c2c)
#27 0x00007ff648633790 (d:\clang10\bin\clang.exe+0x33f3790)
#28 0x00007ff648544ede (d:\clang10\bin\clang.exe+0x3304ede)
#29 0x00007ff64864a903 (d:\clang10\bin\clang.exe+0x340a903)
#30 0x00007ff6486486a3 (d:\clang10\bin\clang.exe+0x34086a3)
#31 0x00007ff645d10d39 (d:\clang10\bin\clang.exe+0xad0d39)
#32 0x00007ff647e167cf (d:\clang10\bin\clang.exe+0x2bd67cf)
#33 0x00007ff647e018d0 (d:\clang10\bin\clang.exe+0x2bc18d0)
#34 0x00007ff648628029 (d:\clang10\bin\clang.exe+0x33e8029)
#35 0x00007ff64864fdf4 (d:\clang10\bin\clang.exe+0x340fdf4)
#36 0x00007ff648650f1e (d:\clang10\bin\clang.exe+0x3410f1e)
#37 0x00007ff6485efded (d:\clang10\bin\clang.exe+0x33afded)
#38 0x00007ff6485ef272 (d:\clang10\bin\clang.exe+0x33af272)
#39 0x00007ff6485ff455 (d:\clang10\bin\clang.exe+0x33bf455)
#40 0x00007ff6482efcf2 (d:\clang10\bin\clang.exe+0x30afcf2)
#41 0x00007ff6482ef51e (d:\clang10\bin\clang.exe+0x30af51e)
#42 0x00007ff647d94221 (d:\clang10\bin\clang.exe+0x2b54221)
#43 0x00007ff647d92873 (d:\clang10\bin\clang.exe+0x2b52873)
#44 0x00007ff647d92c16 (d:\clang10\bin\clang.exe+0x2b52c16)
#45 0x00007ff647d8c576 (d:\clang10\bin\clang.exe+0x2b4c576)
#46 0x00007ff647d8b9a7 (d:\clang10\bin\clang.exe+0x2b4b9a7)
#47 0x00007ff647db26e6 (d:\clang10\bin\clang.exe+0x2b726e6)
#48 0x00007ff647db17f4 (d:\clang10\bin\clang.exe+0x2b717f4)
#49 0x00007ff647db113d (d:\clang10\bin\clang.exe+0x2b7113d)
#50 0x00007ff647db4544 (d:\clang10\bin\clang.exe+0x2b74544)
#51 0x00007ff647dba10e (d:\clang10\bin\clang.exe+0x2b7a10e)
#52 0x00007ff647d28b29 (d:\clang10\bin\clang.exe+0x2ae8b29)
#53 0x00007ff647d48218 (d:\clang10\bin\clang.exe+0x2b08218)
#54 0x00007ff647d2796a (d:\clang10\bin\clang.exe+0x2ae796a)
#55 0x00007ff647d27275 (d:\clang10\bin\clang.exe+0x2ae7275)
#56 0x00007ff647d26ce3 (d:\clang10\bin\clang.exe+0x2ae6ce3)
#57 0x00007ff647d21e52 (d:\clang10\bin\clang.exe+0x2ae1e52)
#58 0x00007ff647d1f530 (d:\clang10\bin\clang.exe+0x2adf530)
#59 0x00007ff646be9ca6 (d:\clang10\bin\clang.exe+0x19a9ca6)
#60 0x00007ff6491a967f (d:\clang10\bin\clang.exe+0x3f6967f)
#61 0x00007ff646be96c5 (d:\clang10\bin\clang.exe+0x19a96c5)
#62 0x00007ff646ba2bdf (d:\clang10\bin\clang.exe+0x1962bdf)
#63 0x00007ff646c9c411 (d:\clang10\bin\clang.exe+0x1a5c411)
#64 0x00007ff6452a8e2c (d:\clang10\bin\clang.exe+0x68e2c)
#65 0x00007ff64529de86 (d:\clang10\bin\clang.exe+0x5de86)
#66 0x00007ff646aedae1 (d:\clang10\bin\clang.exe+0x18adae1)
#67 0x00007ff646aed673 (d:\clang10\bin\clang.exe+0x18ad673)
#68 0x00007ff645d10d39 (d:\clang10\bin\clang.exe+0xad0d39)
#69 0x00007ff6463021fc (d:\clang10\bin\clang.exe+0x10c21fc)
#70 0x00007ff64630200c (d:\clang10\bin\clang.exe+0x10c200c)
#71 0x00007ff646aebf1b (d:\clang10\bin\clang.exe+0x18abf1b)
#72 0x00007ff646a77be1 (d:\clang10\bin\clang.exe+0x1837be1)
#73 0x00007ff646a77dc8 (d:\clang10\bin\clang.exe+0x1837dc8)
#74 0x00007ff646a5926d (d:\clang10\bin\clang.exe+0x181926d)
#75 0x00007ff64529f071 (d:\clang10\bin\clang.exe+0x5f071)
#76 0x00007ff648edb354 (d:\clang10\bin\clang.exe+0x3c9b354)
#77 0x00007ffce7b67bd4 (C:\WINDOWS\System32\KERNEL32.DLL+0x17bd4)
#78 0x00007ffce7ceced1 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x6ced1)
clang: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 10.0.0 (https://github.com/llvm/llvm-project.git
72882ca30d87bd7ea85d8099e8b9d2244749b71e)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: d:\clang10\bin
clang: note: diagnostic msg: PLEASE submit a bug report to
https://bugs.llvm.org/ and include the crash backtrace, preprocessed source,
and associated run script.
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg:
C:\Users\cacarter\AppData\Local\Temp\repro-bb68cb.cpp
clang: note: diagnostic msg:
C:\Users\cacarter\AppData\Local\Temp\repro-bb68cb.sh
clang: note: diagnostic msg:

********************

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200128/616a00bd/attachment-0001.html>


More information about the llvm-bugs mailing list