Consider:
struct T { const int *begin() const; const int *end() const; T &r() [[clang::lifetimebound]]; T t(); };
Consider:
struct T { const int *begin() const; const int *end() const; T &r() [[clang::lifetimebound]]; T t(); };
Revisiting @ChuanqiXu 's code suggestion...
Reordered enumerators.
Added release note.
Updating the status of CWG 1394 is the only change.
Removed member function test cases and addressed comments,
which includes:
Handling of eagerly parsed deleted or defaulted function must happen AFTER D.complete(Res);.
I think an extra parameter is inevitable without complicating things too much.
Added an entry in release notes. Waiting for CI...
By 'release notes' do you mean a more detailed commit message?
This passes check-clang-semacxx on my machine.
Diagnose "same name as its class" before setting the declarator invalid as otherwise it would not be diagnosed. This also aligns with gcc's behavior.
Don't break template declarations.
re-clang-format
The previous diff was indeed very specific and doesn't handle
template <typename T> struct A { A(void*) {} T A<T>{}; // expected-error{{member 'A' cannot have template arguments}} };
Thank you all for spending time reviewing this!
Hi all, I found this patch causing PR52702 in that the parent of this commit and LLDB 12 worked fine.
When disassembling a hello world C program on Linux, LLDB used to show
callq 0x401030 ; symbol stub for: puts
instead of
callq 0x401030 ; symbol stub for: ___lldb_unnamed_symbol36.
Examining the symbol table by running lldb -b -o 'image dump symtab' a.out used to show:
[ 18] 20 X Undefined 0x0000000000000000 0x0000000000000000 0x00000012 puts@GLIBC_2.2.5 ........ [ 33] 35 X Code 0x0000000000401000 0x000000000000001b 0x00000212 _init [ 34] 36 S Trampoline 0x0000000000401030 0x0000000000000010 0x00000000 puts [ 35] 37 SX Code 0x0000000000401020 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol1$$a.out
and now (ToT and LLDB 13) it's:
[ 18] 20 X Undefined 0x0000000000000000 0x0000000000000000 0x00000012 puts@GLIBC_2.2.5 ........ [ 33] 35 X Code 0x0000000000401000 0x000000000000001b 0x00000212 _init [ 34] 36 S Trampoline 0x0000000000401030 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol36 [ 35] 37 SX Code 0x0000000000401020 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol37
image dump symtab libc.so.6 gives similar result.
Before ec1a4917 :
[ 2366] 2367 S Trampoline 0x0000000000025010 0x00007ffff7df2010 0x0000000000000010 0x00000000 realloc [ 2367] 2368 S Trampoline 0x0000000000025020 0x00007ffff7df2020 0x0000000000000010 0x00000000 __tls_get_addr [ 2368] 2369 S Trampoline 0x0000000000025030 0x00007ffff7df2030 0x0000000000000010 0x00000000 memalign [ 2369] 2370 S Trampoline 0x0000000000025040 0x00007ffff7df2040 0x0000000000000010 0x00000000 _dl_exception_create [ 2370] 2371 S Trampoline 0x0000000000025050 0x00007ffff7df2050 0x0000000000000010 0x00000000 __tunable_get_val [ 2371] 2372 S Trampoline 0x0000000000025060 0x00007ffff7df2060 0x0000000000000010 0x00000000 _dl_find_dso_for_object [ 2372] 2373 S Trampoline 0x0000000000025070 0x00007ffff7df2070 0x0000000000000010 0x00000000 calloc [ 2373] 2373 SX Code 0x0000000000025000 0x00007ffff7df2000 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol1$$libc.so.6 [ 2374] 2373 SX Code 0x0000000000025300 0x00007ffff7df2300 0x0000000000000040 0x00000000 ___lldb_unnamed_symbol2$$libc.so.6 [ 2375] 2373 SX Code 0x0000000000025340 0x00007ffff7df2340 0x00000000000002f0 0x00000000 ___lldb_unnamed_symbol3$$libc.so.6 [ 2376] 2373 SX Code 0x0000000000025630 0x00007ffff7df2630 0x000000000000000c 0x00000000 ___lldb_unnamed_symbol4$$libc.so.6
After:
[ 2366] 2367 S Trampoline 0x0000000000025010 0x00007ffff7df2010 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2367 [ 2367] 2368 S Trampoline 0x0000000000025020 0x00007ffff7df2020 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2368 [ 2368] 2369 S Trampoline 0x0000000000025030 0x00007ffff7df2030 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2369 [ 2369] 2370 S Trampoline 0x0000000000025040 0x00007ffff7df2040 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2370 [ 2370] 2371 S Trampoline 0x0000000000025050 0x00007ffff7df2050 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2371 [ 2371] 2372 S Trampoline 0x0000000000025060 0x00007ffff7df2060 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2372 [ 2372] 2373 S Trampoline 0x0000000000025070 0x00007ffff7df2070 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2373 [ 2373] 2374 SX Code 0x0000000000025000 0x00007ffff7df2000 0x0000000000000010 0x00000000 ___lldb_unnamed_symbol2374 [ 2374] 2375 SX Code 0x0000000000025300 0x00007ffff7df2300 0x0000000000000040 0x00000000 ___lldb_unnamed_symbol2375 [ 2375] 2376 SX Code 0x0000000000025340 0x00007ffff7df2340 0x00000000000002f0 0x00000000 ___lldb_unnamed_symbol2376 [ 2376] 2377 SX Code 0x0000000000025630 0x00007ffff7df2630 0x000000000000000c 0x00000000 ___lldb_unnamed_symbol2377
Is this intended for the performance boost? It seems to me that "S Trampoline" symbols should be handled differently.
Can you commit this for me? My name and email: PoYao Chang <rZhBoYao@gmail.com>.
And thank you for your time!
Address inline comment.
All points addressed. I also updated the summary accordingly. Tested on macOS 12.1 and Ubuntu 20.04.2 LTS.
In D77532#1963551, @aaron.ballman wrote:LGTM! Do you need someone to commit on your behalf?
revert the change to trailing newlines