case OSTRUCT:
/*
- * rewrite so lhs has no fn call
+ * rewrite so lhs has no side effect.
*/
- if(nn != Z && nn->complex >= FNX) {
+ if(nn != Z && side(nn)) {
nod1 = *n;
nod1.type = typ(TIND, n->type);
regret(&nod2, &nod1);
if((bits & (bitAllocated|bitMarked)) != bitAllocated)
continue;
- *bitbufpos = (BitTarget){obj, ti, bitp, shift};
- bitbufpos++;
+ *bitbufpos++ = (BitTarget){obj, ti, bitp, shift};
}
runtime·lock(&lock);
// iface->tab
if((void*)iface->tab >= arena_start && (void*)iface->tab < arena_used) {
- *ptrbufpos = (PtrTarget){iface->tab, (uintptr)itabtype->gc};
- ptrbufpos++;
+ *ptrbufpos++ = (PtrTarget){iface->tab, (uintptr)itabtype->gc};
if(ptrbufpos == ptrbuf_end)
flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
}
stack_top.b += PtrSize;
obj = *(byte**)i;
if(obj >= arena_start && obj < arena_used) {
- *ptrbufpos = (PtrTarget){obj, 0};
- ptrbufpos++;
+ *ptrbufpos++ = (PtrTarget){obj, 0};
if(ptrbufpos == ptrbuf_end)
flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
}
}
if(obj >= arena_start && obj < arena_used) {
- *ptrbufpos = (PtrTarget){obj, objti};
- ptrbufpos++;
+ *ptrbufpos++ = (PtrTarget){obj, objti};
if(ptrbufpos == ptrbuf_end)
flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
}