From: Matt H. <ma...@cs...> - 2006-03-06 21:40:00
|
Hi Nathan, Index offsets should only appear on arrays, not pointers, so ptr should never have an Index offset. Or am I missing something? One place where there is an implicit Index(0, NoOffset) is in the line ptr = x.blocks. Cil represents this as StartOf(x.blocks), which means the same thing as AddrOf(x.blocks[0]). -- Matt > -----Original Message----- > From: cil...@li... > [mailto:cil...@li...] On Behalf Of > Nathan Cooprider > Sent: Monday, March 06, 2006 12:53 PM > To: cil...@li... > Subject: [CIL users] Implicit Index(0,NoOffset) > > I have been using the addOffsetLval function and I believe I > may have found a bug. However, I also might just be doing > something wrong. In code like the following example, there > seems to be an implicit > Index(zero,NoOffset) at the end of an Lval. This breaks things: > > struct block_struct { > int data; > int priority; > }; > struct problem { > struct block_struct blocks[10]; > int something_else; > }; > > int main () { > struct problem x; > struct block_struct * ptr = x.blocks; > //if(ptr[0].priority ==0) > if (ptr->priority == 0) > return 0; > else > return 1; > } > > I put a comment above the ptr variable conditional that shows > where the implicit index is. I believe that having this > implicitly there is somewhat inconsistent, but it might be > unavoidable. > > I changed addOffsetLval to deal with this (code below). > However, if this really is a problem (and not just me > misunderstanding something) then a more general solution is > probably needed. > > Nathan > > (* in cil.ml You also have to lift isArrayType to be above > this fcn *) let addOffsetLval toadd (b, off) : lval = > match toadd with > Field _ when (isArrayType (typeOfLval (b,off))) -> > b, addOffset toadd (addOffset (Index(zero,NoOffset)) off) > | _ -> b, addOffset toadd off > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking > scripting language that extends applications into web and > mobile media. Attend the live webcast and join the prime > developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720& > dat=121642 > _______________________________________________ > CIL-users mailing list > CIL...@li... > https://lists.sourceforge.net/lists/listinfo/cil-users > |