// for issue 20282
// Phenomenon of issue:
// When the expression is CallExpr and the return type is a pointer, cgen generates 2 actual call actions:
// V code: println(call_test())
// C code:
// println(str_intp(1, _MOV((StrIntpData[]){{_SLIT("&"), 0xfe10 ,{.d_s = isnil(call_test()) ? _SLIT("nil") : string_str(*call_test())}}})));
struct Abc {
	s string
}

fn str_gen_with_call_and_return_ref() &Abc {
	println('It should be printed only once')
	return &Abc{}
}

fn main() {
	println(str_gen_with_call_and_return_ref())
}
