Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] Iterating over all uses of a Function"
2009 Apr 21
0
[LLVMdev] Iterating over all uses of a Function
Hi Mikhail,
Can you please attach a simple .bc file that is subject to this problem?
Anthony
On Apr 21, 2009, at 7:33 AM, Mikhail Glushenkov wrote:
> Hi,
>
> I try to iterate over all uses of a Function with the following
> code (simplified):
>
> for (Value::use_iterator UI = F->use_begin(), UE = F->use_end();
> UI != UE; ++UI) {
>
>
2009 Apr 21
0
[LLVMdev] Iterating over all uses of a Function
On Apr 21, 2009, at 4:33 AM, Mikhail Glushenkov wrote:
> Hi,
>
> I try to iterate over all uses of a Function with the following
> code (simplified):
This should work. Perhaps you have a memory stomper problem?
-Chris
>
>
> for (Value::use_iterator UI = F->use_begin(), UE = F->use_end();
> UI != UE; ++UI) {
>
> if (CallInst* I =
2009 Jul 17
2
[LLVMdev] Bug in LiveIntervals? Please Examine
In LiveIntervals::processImplicitDefs() we have this:
for (MachineRegisterInfo::use_iterator UI = mri_->use_begin(Reg),
UE = mri_->use_end(); UI != UE; ) {
MachineOperand &RMO = UI.getOperand();
MachineInstr *RMI = &*UI;
++UI;
MachineBasicBlock *RMBB = RMI->getParent();
if (RMBB == MBB)
continue;
const
2009 May 30
4
[LLVMdev] Value liveout (uses)
Hi,
How can i know, if a value have uses outside of the current basic block
(liveout), without iterating through all the basic block ?
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090530/71681bc2/attachment.html>
2009 May 30
4
[LLVMdev] Value liveout (uses)
Thank you.
Is it possible to determine the liveout of the operands (see example bellow)
?
%5 = add i32 %4, %3
For '%5': i can simply use " i->isUsedOutsideOfBlock() "
For '%3' and '%4' : this is the question ...
>From your answer, is it possible to determine *which* value is liveout ( in
binary instruction)?
On Sat, May 30, 2009 at 2:57 AM,
2009 May 30
0
[LLVMdev] Value liveout (uses)
On May 29, 2009, at 11:37 PM, Rotem Varon wrote:
> How can i know, if a value have uses outside of the current basic
> block (liveout), without iterating through all the basic block ?
If the value is created within the basic block in question, and the
block doesn't loop to itself, then you can just iterate through the
uses and note if the use is an instruction in a different
2010 Mar 01
2
[LLVMdev] Possible SelectionDAG Bug
On Friday 26 February 2010 19:09:01 Dan Gohman wrote:
> I've now looked at your latest patch. In summary, it does expose a
> subtle problem. I haven't seen anything that here would lead to
> observable misbehavior yet though.
Well, I'm definitely observing misbehavior. I know it has something to do
with local changes here but I haven't isolated it yet.
>
2009 May 30
0
[LLVMdev] Value liveout (uses)
I believe Dan has added a pass to compute livein / liveout values.
Evan
Sent from my iPhone
On May 30, 2009, at 5:03 AM, Rotem Varon <varonrotem at gmail.com> wrote:
> Thank you.
>
> Is it possible to determine the liveout of the operands (see example
> bellow) ?
>
> %5 = add i32 %4, %3
>
> For '%5': i can simply use "
2009 Jul 17
0
[LLVMdev] Bug in LiveIntervals? Please Examine
On Jul 17, 2009, at 7:57 AM, David Greene wrote:
> In LiveIntervals::processImplicitDefs() we have this:
>
> for (MachineRegisterInfo::use_iterator UI = mri_->use_begin(Reg),
> UE = mri_->use_end(); UI != UE; ) {
> MachineOperand &RMO = UI.getOperand();
> MachineInstr *RMI = &*UI;
> ++UI;
> MachineBasicBlock *RMBB
2009 May 31
1
[LLVMdev] Value liveout (uses)
The pass you're referring to is in include/llvm/Analysis/LiveValues.h
and lib/Analysis/LiveValues.cpp. It computes conservative
approximations for specific liveness queries, rather than full
livein/liveout information. It's intended to be used as a heuristic.
Dan
On May 30, 2009, at 3:51 PM, Evan Cheng wrote:
> I believe Dan has added a pass to compute livein / liveout values.
>
2005 May 11
3
[LLVMdev] Computing live values
Say I want to find all LLVM Value*-es that a live on exit from a basic block.
What's the best way?
- The 'LiveRange', 'LiveVariables' and 'LiveIntervals' classes seem to be tied
to register allocation.
- The ./lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.h file seem to provide
what I need, but it's no a public header.
- Volodya
2013 Nov 05
0
[LLVMdev] Identifying the instructions that uses a pointer used as a function argument
I think I understood the problem you're trying to solve. I didn't, however,
understand the problems you are having (maybe you're not running mem2reg?).
I do have a little piece of code that I think does (more or less) what you
want.
Take a look at it, try understanding it, and see if it helps you out.
You might have to change it a bit since you're replacing uses after an
2013 Nov 05
2
[LLVMdev] Identifying the instructions that uses a pointer used as a function argument
Hello all;
So here is my goal:
*** If there is a Call instruction to myFunction(int * val), I need to
identify all the instructions that uses val in the IR and replace the
uses with a newly created pointer. I will also be changing the
argument of myFunction to the new pointer.
int * val = malloc/calloc;
...
myFunction(val);
....
*val = 45;
becomes==
int * val = malloc/calloc;
int * val1 =
2014 Mar 10
2
[LLVMdev] GlobalValues appear in their own use lists?
In the following IR module:
–
define i8 @foo() #0 {
entry:
%call0 = call i8 @bar()
ret i8 %call0
}
declare i8 @bar() #1
–
@bar() gets marked as its own user in top-of-tree LLVM. I patched the Verifier to check it (but didn’t commit the patch):
–
Index: lib/IR/Verifier.cpp
===================================================================
--- lib/IR/Verifier.cpp (revision 203468)
+++
2013 Jan 11
3
[LLVMdev] llvm get Value* iterators
Hello everyone !
In my LLVM pass, there is `Intruction* I1`. All the used "I1"s are ICMP
instructions. *I1->getOperand(0) returns a `Value*` type. From
errs()<<"\n"<<*I1->getOperand(0)<<"\n";
//printed : %3 = load i32* %c, align 4
Printed as expected. But I want to use %c. Do you know how I can get %c ? I
need to use the value %c in
2007 Jul 12
2
[LLVMdev] BasicCallGraph patch
The current BasicCallGraph will miss call sites like this:
%tmp86 = call i8* (...)* bitcast (i8* ()* @find_ispell to i8* (...)*)( )
; <i8*> [#uses=1]
Here the direct user of @find_ispell is a ConstantExpr.
I added several lines of code to address this case.
Below is the output of command: svn diff lib/Analysis/IPA/CallGraph.cpp
Attached is LLVM asm files with such function calls.
2013 Nov 05
1
[LLVMdev] Identifying the instructions that uses a pointer used as a function argument
Thanks for the reply.
For the source code:
int main()
{
int a = 0;
int *p;
p = &a;
call_arnamoy(p);
int *p1;
p1 = p;
return 1;
}
The bit code:
%retval = alloca i32, align 4
%a = alloca i32, align 4
%p = alloca i32*, align 8
%p1 = alloca i32*, align 8
store i32 0, i32* %retval
store i32 0, i32* %a, align 4
store i32* %a, i32** %p, align 8
%0 = load i32** %p, align 8
%call = call i32
2010 Jan 25
3
[LLVMdev] Deterministic iteration over llvm iterators
Forgot cc, the entire group.
How can deterministically iterate over the uses of a variable. i.e. the uses
should be any particular order that doesn't change from execution to
execution of the opt tool.
To make myself more clearer, here is a snippet of code that has Values
reordered each time I analyze a particular piece of code(which doesn't
change) with the LLVM opt tool and my LLVM
2014 Mar 11
3
[LLVMdev] GlobalValues appear in their own use lists?
Chris,
this is a patch against top-of-tree. Maybe I wrote something wrong in the patch?
$ svn info
…
Last Changed Author: chapuni
Last Changed Rev: 203523
Last Changed Date: 2014-03-10 17:34:38 -0700 (Mon, 10 Mar 2014)
$ svn diff
Index: lib/IR/Verifier.cpp
===================================================================
--- lib/IR/Verifier.cpp (revision 203523)
+++ lib/IR/Verifier.cpp
2015 Jun 10
3
[LLVMdev] The use iterator not working...
Hi,
I'm having a problem with the use iterator. Each "use" that I see, when
using the use_iterator, is the same as the "def". Meaning, in the code
below the pDef is always equal to pUse pointer for every instruction in all
basic blocks (except terminators).
for (auto i = inst_begin(f), ie = inst_end(f); i != ie; ++i)
Instruction* pDef =