latest RPM

Matthew Fluet Matthew Fluet <fluet@CS.Cornell.EDU>
Tue, 5 Dec 2000 16:59:45 -0500 (EST)


> I looked at that, but unfortunately right now Machine.Operand.t is the same as
> MachineOutput.operand.t (look at machine.fun).  We could do it by duplicating
> the code and paying some copying cost at translation.  I wish we had refinement
> types.

O.k.  I could raise an error in x86-translate if I ever try to translate
an MachineOutput.Operand.Void.

Does this extend to not having any pseudo-registers of type void?  

I noticed that the c-codegen removed the primop case of:

	     | MLton_eq => if Type.isVoid(Operand.ty(hd args))
			      then (printDst(); print C.truee; print ";\n")
			   else doit()

My corresponding code checked the sizes of the operands (which was the
closest thing I had to types, but it meant adding a size VOID which didn't
correspond to a real size).

In any event, even if there aren't supposed to be any pseudo-regs of type
void in the statements, on a self-compile, I get a pseudo-reg of type void
being listed in a live in list.