@@ -1552,20 +1552,25 @@ func (r *importReader) node() ir.Node {
1552
1552
return ir .NewConvExpr (r .pos (), op , r .typ (), r .expr ())
1553
1553
1554
1554
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 :
1555
+ pos := r .pos ()
1555
1556
if go117ExportTypes {
1556
1557
switch op {
1557
1558
case ir .OCOPY , ir .OCOMPLEX , ir .OUNSAFEADD , ir .OUNSAFESLICE :
1558
- n := ir .NewBinaryExpr (r .pos (), op , r .expr (), r .expr ())
1559
+ init := r .stmtList ()
1560
+ n := ir .NewBinaryExpr (pos , op , r .expr (), r .expr ())
1561
+ n .SetInit (init )
1559
1562
n .SetType (r .typ ())
1560
1563
return n
1561
1564
case ir .OREAL , ir .OIMAG , ir .OCAP , ir .OCLOSE , ir .OLEN , ir .ONEW , ir .OPANIC :
1562
- n := ir .NewUnaryExpr (r . pos () , op , r .expr ())
1565
+ n := ir .NewUnaryExpr (pos , op , r .expr ())
1563
1566
if op != ir .OPANIC {
1564
1567
n .SetType (r .typ ())
1565
1568
}
1566
1569
return n
1567
1570
case ir .OAPPEND , ir .ODELETE , ir .ORECOVER , ir .OPRINT , ir .OPRINTN :
1568
- n := ir .NewCallExpr (r .pos (), op , nil , r .exprList ())
1571
+ init := r .stmtList ()
1572
+ n := ir .NewCallExpr (pos , op , nil , r .exprList ())
1573
+ n .SetInit (init )
1569
1574
if op == ir .OAPPEND {
1570
1575
n .IsDDD = r .bool ()
1571
1576
}
@@ -1577,7 +1582,14 @@ func (r *importReader) node() ir.Node {
1577
1582
// ir.OMAKE
1578
1583
goto error
1579
1584
}
1580
- n := builtinCall (r .pos (), op )
1585
+ n := builtinCall (pos , op )
1586
+ switch n .Op () {
1587
+ case ir .OCOPY , ir .OCOMPLEX , ir .OUNSAFEADD , ir .OUNSAFESLICE :
1588
+ // treated like other builtin calls
1589
+ fallthrough
1590
+ case ir .OAPPEND , ir .ODELETE , ir .ORECOVER , ir .OPRINT , ir .OPRINTN :
1591
+ n .SetInit (r .stmtList ())
1592
+ }
1581
1593
n .Args = r .exprList ()
1582
1594
if op == ir .OAPPEND {
1583
1595
n .IsDDD = r .bool ()
0 commit comments