[C++] compiler incompatibility with lambdas
https://gcc.gnu.org/ml/gcc-patches/2019-03/msg00982.html * lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group. * g++.dg/abi/lambda-static-1.C: New. From-SVN: r269915
This commit is contained in:
parent
c0eb90b5db
commit
d03f6e7bf3
4 changed files with 33 additions and 6 deletions
|
@ -1,3 +1,7 @@
|
|||
2019-03-25 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.
|
||||
|
||||
2019-03-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/60702
|
||||
|
|
|
@ -1252,12 +1252,6 @@ maybe_add_lambda_conv_op (tree type)
|
|||
|
||||
start_preparsed_function (statfn, NULL_TREE,
|
||||
SF_PRE_PARSED | SF_INCLASS_INLINE);
|
||||
if (DECL_ONE_ONLY (statfn))
|
||||
{
|
||||
/* Put the thunk in the same comdat group as the call op. */
|
||||
cgraph_node::get_create (statfn)->add_to_same_comdat_group
|
||||
(cgraph_node::get_create (callop));
|
||||
}
|
||||
tree body = begin_function_body ();
|
||||
tree compound_stmt = begin_compound_stmt (0);
|
||||
if (!generic_lambda_p)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2019-03-25 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* g++.dg/abi/lambda-static-1.C: New.
|
||||
|
||||
2019-03-25 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/89802
|
||||
|
|
25
gcc/testsuite/g++.dg/abi/lambda-static-1.C
Normal file
25
gcc/testsuite/g++.dg/abi/lambda-static-1.C
Normal file
|
@ -0,0 +1,25 @@
|
|||
// { dg-do compile { target { c++14 && comdat_group } } }
|
||||
// { dg-additional-options -fno-inline }
|
||||
|
||||
inline auto lamby ()
|
||||
{
|
||||
return [] {};
|
||||
}
|
||||
|
||||
void direct ()
|
||||
{
|
||||
lamby ()();
|
||||
}
|
||||
|
||||
void indirect ()
|
||||
{
|
||||
void (*invoke) () = lamby ();
|
||||
|
||||
invoke ();
|
||||
}
|
||||
|
||||
// The call operator and the static invoker should be comdat, but not
|
||||
// the same group. (that would be a compiler incompatibility)
|
||||
|
||||
// { dg-final { scan-assembler ".section\[\t ]*.text._ZZ5lambyvENKUlvE_clEv,\[^\n\r]*,_ZZ5lambyvENKUlvE_clEv,comdat" } }
|
||||
// { dg-final { scan-assembler ".section\[\t ]*.text._ZZ5lambyvENUlvE_4_FUNEv,\[^\n\r]*,_ZZ5lambyvENUlvE_4_FUNEv,comdat" } }
|
Loading…
Add table
Reference in a new issue