temporaries.cpp revision 2a3fe34b4a2a1b6ceab8838b896435378ae0e692
1// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -w %s 2 3struct Trivial { 4 Trivial(int x) : value(x) {} 5 int value; 6}; 7 8struct NonTrivial : public Trivial { 9 NonTrivial(int x) : Trivial(x) {} 10 ~NonTrivial(); 11}; 12 13 14Trivial getTrivial() { 15 return Trivial(42); // no-warning 16} 17 18const Trivial &getTrivialRef() { 19 return Trivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'struct Trivial' returned to caller}} 20} 21 22 23NonTrivial getNonTrivial() { 24 return NonTrivial(42); // no-warning 25} 26 27const NonTrivial &getNonTrivialRef() { 28 return NonTrivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'struct NonTrivial' returned to caller}} 29} 30 31