[X86] Use NSW/NUW flags on ISD::TRUNCATE nodes to improve X86 PACKSS/PACKUS lowering...
[llvm-project.git] / lldb / test / Shell / Settings / Inputs / names.cpp
blob79ff93be6b76ed376f9ee88aab24fad04719db88
1 namespace detail {
2 template <typename T> struct Quux {};
3 } // namespace detail
5 using FuncPtr = detail::Quux<double> (*(*)(int))(float);
7 struct Foo {
8 template <typename T> void foo(T arg) const noexcept(true) {}
10 template <int T> void operator<<(int) {}
12 template <typename T> FuncPtr returns_func_ptr(detail::Quux<int> &&) const noexcept(false) { return nullptr; }
15 namespace ns {
16 template <typename T> int foo(char const *str) noexcept(false) { return 0; }
17 template <typename T> int foo(T t) { return 1; }
19 template <typename T> FuncPtr returns_func_ptr(detail::Quux<int> &&) { return nullptr; }
20 } // namespace ns
22 int bar() { return 1; }
24 namespace {
25 int anon_bar() { return 1; }
26 auto anon_lambda = [] {};
27 } // namespace
29 __attribute__((always_inline)) int inlined_foo(const char *str) {
30 if (bool b = bar())
31 return 1;
32 return 2;
35 int main() {
36 ns::foo<decltype(bar)>(bar);
37 ns::foo<decltype(bar)>("bar");
38 ns::foo(anon_lambda);
39 ns::foo(anon_bar);
40 ns::foo<decltype(&Foo::foo<int(int)>)>("method");
41 ns::returns_func_ptr<int>(detail::Quux<int>{});
42 Foo f;
43 f.foo(anon_bar);
44 f.operator<< <(2 > 1)>(0);
45 f.returns_func_ptr<int>(detail::Quux<int>{});
46 inlined_foo("bar");
47 return 0;