SPARC kc kl ka Power PC qc ql qa MIPS vc vl va Motorola 68000 1c 1l 1a Motorola 68020 2c 2l 2a ARM 7500 5c 5l 5a Intel 960 6c 6l 6a DEC Alpha 7c 7l 7a Intel 386 8c 8l 8a AMD 29000 9c 9l 9a
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 A3A1 N1 (note that this is not addressable) *N1 A4
Node Marked &A4 N2 N2N1 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