Added some code to allocate a mobile before a dereferenced input
This commit is contained in:
parent
20f2fb2c14
commit
d12d630de1
|
@ -1010,7 +1010,20 @@ cgenInputItem c (A.InCounted m cv av)
|
||||||
call genBytesIn m subT (Right av)
|
call genBytesIn m subT (Right av)
|
||||||
tell [");"]
|
tell [");"]
|
||||||
cgenInputItem c (A.InVariable m v)
|
cgenInputItem c (A.InVariable m v)
|
||||||
= do t <- astTypeOf v
|
= do case v of
|
||||||
|
-- If we are reading into a dereferenced mobile, we must make sure
|
||||||
|
-- that something is in that mobile first:
|
||||||
|
A.DerefVariable _ v' -> do
|
||||||
|
tell ["if ("]
|
||||||
|
call genVariable v' A.Original
|
||||||
|
tell ["==NULL){"]
|
||||||
|
call genVariable v' A.Original
|
||||||
|
tell ["="]
|
||||||
|
t <- astTypeOf v'
|
||||||
|
call genAllocMobile m t Nothing
|
||||||
|
tell [";}"]
|
||||||
|
_ -> return ()
|
||||||
|
t <- astTypeOf v
|
||||||
isMobile <- isMobileType t
|
isMobile <- isMobileType t
|
||||||
let rhs = genDest v
|
let rhs = genDest v
|
||||||
case (t, isMobile) of
|
case (t, isMobile) of
|
||||||
|
|
Loading…
Reference in New Issue
Block a user