SPARC kc kl ka Power PC qc ql MIPS vc vl va Motorola 68000 1c 1l Motorola 68020 2c 2l ARM 7500 5c 5l Intel 960 6c 6l DEC Alpha 7c 7l Intel 386 8c 8l AMD 29000 9c 9l
typedef struct lock { int locked; } Lock; typedef struct node { int type; union { double dval; float fval; long lval; }; Lock; } Node; Lock* lock; Node* node;
lock = node;
extern void lock(Lock*); func(...) { ... lock(node); ... }
r = (Rectangle){point1, (Point){x,y+2}};
enum errors { Etoobig, Ealarm, Egreg }; char* errstrings[] = { [Ealarm] "Alarm call", [Egreg] "Panic: out of mbufs", [Etoobig] "Arg list too long", };
#pragma varargck argpos error 2
#pragma varargck type "s" char*
x = f(...)
f(&x, ...).
Node Marked name A1 const A2 &A1 A3 A3+A1 N1 (note that this is not addressable) *N1 A4
Node Marked &A4 N2 N2+N1 N1
MOVE a->b (remove) (sequence with no mention of a) USE b USE a (sequence with no mention of a) SET b SET b
SET a SET b (sequence with no use of b) USE a USE b (sequence with no use of b) MOVE a->b MOVE b->a
lines module 509 machine-independent headers 1070 machine-independent YACC source 6090 machine-independent C source 545 machine-dependent headers 6532 machine-dependent C source 298 loader headers 5215 loader C source
4.49s Plan 9 vc -N compile time (opposite of -O) 1.72s Plan 9 vc -N load time 148.69s Plan 9 vc -N run time 15.07s Plan 9 vc compile time (-O implicit) 1.66s Plan 9 vc load time 89.96s Plan 9 vc run time 14.83s vendor cc compile time 0.38s vendor cc load time 104.75s vendor cc run time 43.59s vendor cc -O compile time 0.38s vendor cc -O load time 76.19s vendor cc -O run time 8.19s vendor cc -O3 compile time 35.97s vendor cc -O3 load time 71.16s vendor cc -O3 run time