private void SpillToAddress(CodeBlock Value, out TaggedValueBlock Address, out CodeBlock Store) { var alloca = new AllocaBlock(this, Value.Type); var storageTag = Prologue.AddInstruction(alloca); Address = new TaggedValueBlock(this, storageTag, alloca.Type); Store = new StoreBlock(this, Address, Value); }
public IUnmanagedEmitVariable DeclareUnmanagedLocal(UniqueTag Tag, IVariableMember VariableMember) { var alloca = new AllocaBlock(this, VariableMember.VariableType); var valueTag = Prologue.AddInstruction(alloca); var taggedValue = new TaggedValueBlock(this, valueTag, alloca.Type); locals.Add(Tag, taggedValue); return(new AtAddressEmitVariable(taggedValue)); }