Match: Only allow single use of MIN_EXPR for SAT_TRUNC form 2 [PR115863]
[official-gcc.git] / gcc / testsuite / g++.dg / abi / lambda-vis.C
blob81cffcbe5a6d7eaeed329ddca2bf2ffb9a052e58
1 // { dg-do compile { target c++17 } }
2 // { dg-options "-fno-inline" }
4 template<typename T> int sfoo (T); // { dg-warning "used but never defined" }
5 template<typename T> int gfoo (T); // OK, but not completable
6 template<typename T> int ifoo (T); // OK
7 template<typename T> struct Wrapper {};
8 template<typename T> Wrapper<T> capture (T &&) {return Wrapper<T> ();}
10 static int svar = sfoo (capture ([]{}));
12 int gvar = gfoo (capture ([]{}));
14 inline int ivar = ifoo (capture ([]{}));
16 // These manglings change between ABIs 17 and 18 (the final
17 // substitution number).
18 // { dg-final { scan-assembler {_?_Z7captureINL4svarMUlvE_EE7WrapperIT_EOS3_:} } }
19 // { dg-final { scan-assembler {_?_Z7captureIN4gvarMUlvE_EE7WrapperIT_EOS3_:} } }
20 // { dg-final { scan-assembler {_?_Z7captureIN4ivarMUlvE_EE7WrapperIT_EOS3_:} } }
22 // Calls to the foos are emitted.
23 // { dg-final { scan-assembler {call[ \t]*_?_Z4sfooI7WrapperINL4svarMUlvE_EEEiT_} { target { i?86-*-* x86_64-*-* } } } }
24 // { dg-final { scan-assembler {call[ \t]*_?_Z4gfooI7WrapperIN4gvarMUlvE_EEEiT_} { target { i?86-*-* x86_64-*-* } } } }
25 // { dg-final { scan-assembler {call[ \t]*_?_Z4ifooI7WrapperIN4ivarMUlvE_EEEiT_} { target { i?86-*-* x86_64-*-* } } } }