cor3ntin added inline comments.
================ Comment at: clang/test/CodeGenCXX/cxx2b-deducing-this.cpp:4 + +struct TrivialStruct { + void explicit_object_function(this TrivialStruct) {} ---------------- cor3ntin wrote: > aaron.ballman wrote: > > I'd like to see more codegen tests in general -- for example, a test that > > demonstrates we properly handle code like: > > ``` > > struct B { > > virtual void f(); > > }; > > > > struct T {}; > > struct D3 : B { > > void f(this T&); // Okay, not an override > > }; > > > > void func() { > > T t; > > t.f(); // Verify this calls D3::f() and not B::f() > > } > > ``` > > but also tests that show that we do the correct thing for calling > > conventions (do explicit object parameter functions act as `__fastcall` > > functions?), explicit object parameters in lambdas, call through a pointer > > to member function, and so on. > > > > Another test that could be interesting is how chained calls look (roughly): > > ``` > > struct S { > > void foo(this const S&); > > }; > > > > struct T { > > S bar(this const &T); > > }; > > > > void func() { > > T t; > > t.bar().foo(); > > } > > ``` > That first example is ill-formed (it is an override, not allowed) > > I will need help for codegen tests. > For `__thiscall`, are we even doing the same thing? > https://compiler-explorer.com/z/KTea6W36T NVM, just different optimization levels Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140828/new/ https://reviews.llvm.org/D140828 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits