28 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -Wno-dangling-gsl -Wreturn-stack-address -verify %s2 3struct [[gsl::Owner(int)]] MyIntOwner {4 MyIntOwner();5 int &operator*();6};7 8struct [[gsl::Pointer(int)]] MyIntPointer {9 MyIntPointer(int *p = nullptr);10 MyIntPointer(const MyIntOwner &);11 int &operator*();12 MyIntOwner toOwner();13};14 15int &f() {16 int i;17 return i; // expected-warning {{reference to stack memory associated with local variable 'i' returned}}18}19 20MyIntPointer g() {21 MyIntOwner o;22 return o; // No warning, it is disabled.23}24 25void h(MyIntPointer p) {26 p = MyIntOwner(); // No warning, it is disabled.27}28