return n
case ir.OCONV, ir.OCONVIFACE, ir.OCONVIDATA, ir.OCONVNOP, ir.OBYTES2STR, ir.ORUNES2STR, ir.OSTR2BYTES, ir.OSTR2RUNES, ir.ORUNESTR, ir.OSLICE2ARRPTR:
- return ir.NewConvExpr(r.pos(), op, r.typ(), r.expr())
+ n := ir.NewConvExpr(r.pos(), op, r.typ(), r.expr())
+ n.SetImplicit(r.bool())
+ return n
case ir.OCOPY, ir.OCOMPLEX, ir.OREAL, ir.OIMAG, ir.OAPPEND, ir.OCAP, ir.OCLOSE, ir.ODELETE, ir.OLEN, ir.OMAKE, ir.ONEW, ir.OPANIC, ir.ORECOVER, ir.OPRINT, ir.OPRINTN, ir.OUNSAFEADD, ir.OUNSAFESLICE:
pos := r.pos()
import "./a"
func g() {
- h := a.E() // ERROR "inlining call to a.E" "a.I\(a.T\(0\)\) does not escape"
+ h := a.E() // ERROR "inlining call to a.E" "T\(0\) does not escape"
h.M() // ERROR "devirtualizing h.M to a.T"
// BAD: T(0) could be stack allocated.
"inline.go", // unified IR reports function literal diagnostics on different lines than -d=inlfuncswithclosures
"linkname3.go", // unified IR is missing some linkname errors
- "fixedbugs/issue42284.go", // prints "T(0) does not escape", but test expects "a.I(a.T(0)) does not escape"
"fixedbugs/issue7921.go", // prints "… escapes to heap", but test expects "string(…) escapes to heap"
"typeparam/issue47631.go", // unified IR can handle local type declarations
"fixedbugs/issue42058a.go", // unified IR doesn't report channel element too large