[cfe-dev] Wrapping assignments in function call for simulation
Himanshu via cfe-dev
cfe-dev at lists.llvm.org
Thu Jul 28 11:33:01 PDT 2016
Thanks Jon!
So you suggest the change of function to:
void *wrapAssgnmt(void **,void *, void *ptr){
// assgn using first two args
...
// return the actual ptr
return ptr;
}
--
Himanshu
On Thu, Jul 28, 2016 at 11:29 AM, Jonathan Roelofs <jroelofs.lists at gmail.com
> wrote:
>
>
> On 7/28/16 12:09 PM, Himanshu via cfe-dev wrote:
>
>> Hi All,
>>
>> I would like to perform for simulation experiments on a C codebase where
>> based on the type of the variable, an assignment to a pointer of this
>> type is followed by some additional instruction (lets say an external
>> counter increment --- just to create a simple scenario). I have
>> implemented a RecuriveASTVisitor that visits BinaryOps (after checking
>> they are assignments) and rewrites the source by replacement.
>>
>> However, there are issues with multiple assignments within the same
>> source line (such as ptr1 = ptr2 = NULL), as well as some macro
>> expansions. I would like a robust way of doing so without breaking the
>> code.
>>
>> Could someone kindly answer the following:
>> 1. Is there some existing libTool to do so?
>>
>> if not, then:
>> 2. My wrapper function is of the form: (listing a simplified version)
>> void * wrapAssgnmt (void **ptrToLhsPtr, void *rhsPtr){
>> *ptrToLhsPtr = rhsPtr;
>> // do other things for simulation
>> return *ptrToLhsPtr; // so that NULL based checks work.
>> }
>> compilation gives me: "warning: comparison between pointer and
>> integer" for cases of pattern:
>> type *ptr; // original code is if( (ptr = malloc ( ... )) = NULL)
>> ...
>> if((wrapAssgnmt( &ptr , malloc( ... ) ) = NULL)
>>
>> I understand the warning, but I am not sure about the cause/reason.
>> Could someone please suggest the correction?
>>
>
> This happens because your translation is not precise enough. It needs to
> be something like:
>
> if ((wrapAssgnmt(&ptr, malloc( ... ), ptr) = NULL)
>
>
> Jon
>
>
>> Thanks!
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
> --
> Jon Roelofs
> jonathan at codesourcery.com
> CodeSourcery / Mentor Embedded
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160728/7214f8fa/attachment.html>
More information about the cfe-dev
mailing list