Displaying 20 results from an estimated 700 matches similar to: "[LLVMdev] Work with CallSites"
2013 Jan 24
2
[LLVMdev] FunctionPass question
Hi,
I am working on a pass to convert lib calls to intrinsic calls as discussed here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-January/058507.html
In my first attempt I created a FunctionPass that uses CallInst::setCalledFunction to replace the callee with the appropriate intrinsic (using Intrinsic::getDeclaration).
After the pass runs I get an assertion from CallGraphSCCPass:
2018 Mar 24
0
Change function call name in a CallInst only in certain functions
You are probably calling setName() on the called Function, which in-turned renamed the called Function instead of replacing the called function.
Depending on your use-case, if you are certain that you only need to modify CallInsts, then you could simply call CallInst::setCalledFunction , otherwise it’s probably wiser to use CallSite as a wrapper for both CallInst and InvokeInst. Do note, however,
2012 Nov 09
2
[LLVMdev] Inlining bitcast functions...
I've got a call instruction:
call void bitcast (void (%4 addrspace(1)*, <2 x i32>, <4 x float>)* @_Z12write_imagefPU3AS110_image2d_tDv2_iDv4_f to void (%9 addrspace(1)*, <2 x i32>, <4 x float>)*)(%9 addrspace(1)* %dstimg, <2 x i32> %28, <4 x float> %26) nounwind
%4 and %9 are both (stripped) opaque structs.
InlineFunction() does not inline this because
2013 Oct 30
1
[LLVMdev] Setting called value for an indirect function call
Hello;
I am trying to clone some call instructions in the IR and then set the
call destination of those call instructions to my own library
functions that happens to have the same arguments and return types of
the original callee.
It works perfectly for direct calls using setCalledFunction(). But
when the function call is indirect, is there a way to set the callee?
Something like
2018 Sep 02
2
Replacing a function from one module into another one
Hello and thanks for the answer,
I'm still facing issues, I'll do my best to explain my situation, as I
explained, I have two modules, each one with its own main and functions, I
would like to replace in the *oldModule* a function call that is calling
*foo2* (defined in *oldModule*) to instead call *foo3*, which is defined in
the *refModule. *So in summary, I have:
1. The original
2018 Aug 16
2
Convert Function Pointer Call to Function Call at the IR Level
Hi,
I want to convert a function pointer call in the IR of MPlayer to a
function call. For example, I have the following line:
...
%10 = tail call i32 %7(%struct.demuxer* nonnull %0, i32 %1, i8* %2) #7,
!dbg !863222
...
I want to set the target which is stored in %7 to a real function called
"demux_lavf_control()" with the following definition:
...
define internal i32
2018 Sep 02
2
Replacing a function from one module into another one
Hi Ahmad,
What does that tool does besides what LLVM linker already does? I don't
think my problem is in linking both modules, I think LLVM linker does the
job for me, the issue is when changing the called function to call another
function (in the example previously provided, to change it from foo2 to
foo3, and adjusting the function parameter's references).
Regards,
Daniel Moya
El
2012 Nov 09
0
[LLVMdev] Inlining bitcast functions...
On Fri, Nov 9, 2012 at 3:25 PM, Relph, Richard <Richard.Relph at amd.com> wrote:
> I've got a call instruction:
> call void bitcast (void (%4 addrspace(1)*, <2 x i32>, <4 x float>)* @_Z12write_imagefPU3AS110_image2d_tDv2_iDv4_f to void (%9 addrspace(1)*, <2 x i32>, <4 x float>)*)(%9 addrspace(1)* %dstimg, <2 x i32> %28, <4 x float> %26)
2018 Sep 03
2
Replacing a function from one module into another one
Thank you Ahmad,
I figured out that, although the type of both p(oInst) and p(nInst) were
the same, I had to:
for (unsigned int i = 0; i < callOInst->getNumArgOperands(); i++) {
callOInst->getArgOperand(i)->mutateType(callNInst->getArgOperand(i)->getType());
}
that solves the issue at the calling instruction in the main function, but
now I see that *linkModules* does not work
2018 Mar 23
3
Change function call name in a CallInst only in certain functions
Hello,
In my module I have functions:
a
b
c
f3 calls "a"
f2 calls "a"
f1 calls "b"
I would like to modify a CallInst in the f2. Now it calls "a", but I want
changed it to "c".
When loop over the instructions of the f2, I can get a CallInst to be
modified, then I use "setName" to changed it to "c".
Problem is, since
2013 Jan 24
0
[LLVMdev] FunctionPass question
Hi Paul,
> I am working on a pass to convert lib calls to intrinsic calls as discussed here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-January/058507.html
this whole area is a little confusing. If you can recognize a libcall as
being equivalent to an intrinsic, you could indeed turn it into an intrinsic,
but on the other hand you could just directly do on it the IR transforms you
want
2018 Sep 04
2
Replacing a function from one module into another one
Hi Philip,
Thank you very much for your answer, the vector declaration example worked.
I'm pretty sure the ValueToValueMapTy is the last thing I need because I
even saw there is another function that could help me llvm*:*:RemapFunction
<http://llvm.org/doxygen/namespacellvm.html#addf0183e92893bdbcde00fc9091dda93>;
but my problem is that I don't know how to populate the
2018 Sep 06
2
Replacing a function from one module into another one
Hi Philip,
Thanks for the reference, I was able to follow it and copy the code that I
saw necessary, but I still have some issues (references are still not
updated). I created the function:
void populateVMap(llvm::ValueToValueMapTy &VMap, llvm::Function *fOld,
llvm::Function *fNew) {
llvm::Function::arg_iterator DestI = fOld->arg_begin();
for (llvm::Function::const_arg_iterator J =
2010 Jul 27
0
[LLVMdev] inline callsites whose function definitions are in different file?
On Tue, Jul 27, 2010 at 7:46 AM, Chuck Zhao <czhao at eecg.toronto.edu> wrote:
> LLVM (2.7 release version) provides 2 implementations for inlining
> function callsites:
>
> - InlineSimple.cpp (-inline): inline simple callsites
> according to its cost analysis
> - InlineAlways.cpp (-always-inline): inline all callsites that are
> marked with
2010 Jul 27
2
[LLVMdev] inline callsites whose function definitions are in different file?
LLVM (2.7 release version) provides 2 implementations for inlining
function callsites:
- InlineSimple.cpp (-inline): inline simple callsites
according to its cost analysis
- InlineAlways.cpp (-always-inline): inline all callsites that are
marked with "always_inline" attribute.
They are both subclasses of Inline.cpp that assumes the function's
definition (body) is
2010 Jul 27
2
[LLVMdev] inline callsites whose function definitions are in different file?
On 7/27/2010 12:40 PM, Devang Patel wrote:
> On Tue, Jul 27, 2010 at 7:46 AM, Chuck Zhao<czhao at eecg.toronto.edu> wrote:
>> LLVM (2.7 release version) provides 2 implementations for inlining
>> function callsites:
>>
>> - InlineSimple.cpp (-inline): inline simple callsites
>> according to its cost analysis
>> - InlineAlways.cpp
2018 Sep 06
2
Replacing a function from one module into another one
Hi Philip,
The error happens when the program finishes and it automatically calls the
destructors, so it is not an error specifically inside my program. Here's
the full code:
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/ExecutionEngine/MCJIT.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/TargetSelect.h"
#include
2010 Jul 27
0
[LLVMdev] inline callsites whose function definitions are in different file?
On Tue, Jul 27, 2010 at 9:46 AM, Chuck Zhao <czhao at eecg.toronto.edu> wrote:
> I don't, and the compiler doesn't neither, that is the problem, unless I do
> hacking at compile time.
> E.g.:
> - put all such function's definitions into file1.c
> - force to compile file1.c 1st.
> - when compiling file2.c:
> . read file1.bc
> . attach to file2's
2015 Jul 28
1
[LLVMdev] AliasSetTracker and UnknownInst's (callsites mostly) problem
Hi all,
There is a problem about how AliasSetTracker merging AliasSet's when meet
UnknownInst.
When adding new pointer it looks for existing AliasSet's aliased with new
pointer. And merging them together. It is ok for pointers: if %A mayalias
%B and %B mayalias %C then %A mayalias %C.
But the same logic when adding callsite is wrong (
findAliasSetForUnknownInst).
Callsite may be known
2018 Aug 27
3
Replacing a function from one module into another one
Hello LLVM Developers,
I'm trying to replace a function defined in one module into another module
(different files). The first issue I ran into was that llvm::Function does
not have a method "moveBefore" or "moveAfter" as the llvm::BasicBlock or
llvm::Instruction do, so I figured I would just move the BasicBlocks of the
replacing function into the function that was being