Both lambda-uneval1.C and lambda-uneval5.C test that a symbol is not declared global by looking for "globl" assembler directive. The testcases generate the "lglobl" directive in AIX XCOFF, which is a false positive. This patch restricts the regex to ignore a prepended "l". The patch also tightens the regex to specifically look for space, tab or period between the "globl" and the symbol. Tested on powerpc-ibm-aix7.2.3.0 and powerpc64le-linux-gnu. * g++.dg/cpp2a/lambda-uneval1.C: Ignore preceding "l" and intervening period. * g++.dg/cpp2a/lambda-uneval5.C: Ignore preceding "l" and explicitly check for intervening space, tab or period.
17 lines
287 B
C
17 lines
287 B
C
// { dg-do compile { target c++20 } }
|
|
|
|
typedef decltype([]{}) C; // the closure type has no name for linkage purposes
|
|
|
|
// { dg-final { scan-assembler-not "\[^l\]globl\[ \t\.\]*_Z1f" } }
|
|
// { dg-final { scan-assembler-not "_Z1f1C" } }
|
|
void f(C) {}
|
|
|
|
int main()
|
|
{
|
|
C c;
|
|
c();
|
|
f(c);
|
|
}
|
|
|
|
|