[LLVMdev] Implementing customized intrinsic

John Criswell criswell at cs.uiuc.edu
Wed Jan 21 17:54:03 PST 2009


Haohui Mai wrote:
> Thanks for your reply. Probably I did not explain clearly. Here is an  
> example:
>
> call @check(%foo)
> %1 = load %foo
>
> Now I want to write optimization only focus on the function call  
> @check, and it might have some additional information which does not  
> need to  appear at LLVM IR.
>   
Are these the SAFECode run-time checks, or are these some other
instrumentation?  What are the limitations you're running into with
these function calls?  Are other optimization passes not able to
optimize the call instructions because they make conservative
assumptions about the functions being called in the call instruction? 
Is there information that you'd like to associate with the calls that
currently cannot be done in the IR?  Is there information that should be
passed between LLVM passes that you think shouldn't be represented in
the IR?  Or is there some other limitation that you're encountering?

-- John T.

> So it seems that the annotation intrinsic does not fit the scenario.
>
> Haohui
>
> On Jan 21, 2009, at 8:01 PM, Tanya M. Lattner wrote:
>
>   
>> Does the llvm annotation intrinsic not work for what you are trying  
>> to do?
>>
>> http://llvm.org/docs/LangRef.html#int_var_annotation
>> http://llvm.org/docs/LangRef.html#int_annotation
>>
>> -Tanya
>>
>> On Wed, 21 Jan 2009, Haohui Mai wrote:
>>
>>     
>>> Dear all,
>>>
>>> Currently I'm working on a project that add various checks into the
>>> LLVM bitcode. For example,  I insert function calls before every
>>> load / store instructions to guarantee that these instructions are
>>> safe. I really want to implement them as LLVM intrinsics or ``special
>>> function calls'' so that I am able to leverage the power of things
>>> like InstVisitor. However, it seems it is difficult to do it without
>>> changing LLVM's source codes, cause
>>>
>>> i) all constructors of CallInst are private
>>> ii) There's no interfaces for implementing customized intrinsics
>>> (without changing intrinsics*.td)
>>>
>>> It is very helpful to mark these checks as special calls (like
>>> intrinsics), it would ease the implementation of optimizations since
>>> they only work on these special calls, say, I could save some
>>> information in the subclass of CallInst.
>>>
>>> I also notice that the access identifier of CallInst are changed  
>>> after
>>> LLVM 2.0. I would be appreciated if you guys could explain the
>>> rationale behind the changes.
>>>
>>> Thank you very much.
>>>
>>> Best,
>>>
>>> Haohui
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>       
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>     
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>   




More information about the llvm-dev mailing list