11364750dSJames Henderson // This ensures that DW_OP_deref is inserted when necessary, such as when NRVO 21364750dSJames Henderson // of a string object occurs in C++. 31364750dSJames Henderson // 41364750dSJames Henderson // REQUIRES: system-windows 51364750dSJames Henderson // 6*45a40c16SStephen Tozer // RUN: %clang_cl /Z7 /Zi %s -o %t 7*45a40c16SStephen Tozer // RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s 81364750dSJames Henderson 91364750dSJames Henderson struct string { stringstring101364750dSJames Henderson string() {} stringstring111364750dSJames Henderson string(int i) : i(i) {} ~stringstring121364750dSJames Henderson ~string() {} 131364750dSJames Henderson int i = 0; 141364750dSJames Henderson }; get_string()151364750dSJames Hendersonstring get_string() { 161364750dSJames Henderson string unused; 171364750dSJames Henderson string result = 3; 181364750dSJames Henderson return result; // DexLabel('readresult1') 191364750dSJames Henderson } some_function(int)201364750dSJames Hendersonvoid some_function(int) {} 211364750dSJames Henderson struct string2 { 221364750dSJames Henderson string2() = default; string2string2231364750dSJames Henderson string2(string2 &&other) { i = other.i; } 241364750dSJames Henderson int i; 251364750dSJames Henderson }; get_string2()261364750dSJames Hendersonstring2 get_string2() { 271364750dSJames Henderson string2 result; 281364750dSJames Henderson result.i = 5; 291364750dSJames Henderson some_function(result.i); 301364750dSJames Henderson // Test that the debugger can get the value of result after another 311364750dSJames Henderson // function is called. 321364750dSJames Henderson return result; // DexLabel('readresult2') 331364750dSJames Henderson } main()341364750dSJames Hendersonint main() { 351364750dSJames Henderson get_string(); 361364750dSJames Henderson get_string2(); 371364750dSJames Henderson } 381364750dSJames Henderson 391364750dSJames Henderson // DexExpectWatchValue('result.i', 3, on_line=ref('readresult1')) 401364750dSJames Henderson // DexExpectWatchValue('result.i', 5, on_line=ref('readresult2')) 41