Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] Deterministic iteration over llvm iterators"
2010 Jan 25
0
[LLVMdev] Deterministic iteration over llvm iterators
I mean SVN head, but it might have been fixed in 2.6 as well, I don't
remember.
On Jan 25, 2010, at 2:47 PM, Augustine Mathews wrote:
> Thanks chris.
>
> Do you mean llvm 2.6 when you say mainline or something else?
>
> Augustine
>
> On Mon, Jan 25, 2010 at 4:27 PM, Chris Lattner <clattner at apple.com>
> wrote:
>
> On Jan 26, 2010, at 7:23 AM,
2010 Jan 25
1
[LLVMdev] Deterministic code generation and llvm::Iterators
Guys,
It seems as though the llvm system doesn't deterministically iterate over
Module::iterator, or global_iterator. To make myself clearer, the iterators
iterate over all the global_variables but on different llvm passes
(different calls to opt -load), the iterators iterate over them in different
orders.
I was thinking that it has something non deterministic to do with byte code
reading or
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
2013 Jan 11
0
[LLVMdev] llvm get Value* iterators
If I1->getOperand(0) is the load, then %c is its pointer argument available
with:
LoadInst *LD = cast<LoadInst>(I1->getOperand(0));
Value *C = LD->getPointerOperand();
On Fri, Jan 11, 2013 at 7:19 AM, Alexandru Ionut Diaconescu <
alexandruionutdiaconescu at gmail.com> wrote:
> Hello everyone !
>
> In my LLVM pass, there is `Intruction* I1`. All the used
2009 Apr 21
4
[LLVMdev] Iterating over all uses of a Function
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) {
if (CallInst* I = dyn_cast<CallInst>(*UI)) {
// do something interesting
}
}
This works on Linux, but on Windows the dyn_cast fails, even
though the only use of F in that
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
2014 Sep 25
2
[LLVMdev] MachineRegisterInfo use_iterator/reg_iterator?
Hi folks,
I would like to find out the machine instructions that use some given registers in the reverse order, and I came across these iterators (use_iterator/reg_iterator). However, there are two things I noticed:
1) These iterators seem to traverse the machine function a bit differently from what I get from the machine function dump. In other words, the use_iterator list is not constructed 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.
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 =
2015 Jun 10
4
[LLVMdev] The use iterator not working...
Thanks Dan and Jon. I made an incorrect assumption that the "use" iterator
was actually giving me the "user" when de-referencing it.
Did it always have this behavior in previous LLVM versions? I've seen lots
of examples of the "use" iterator being dereferenced and resulting
Instruction pointer being treated as the "user"?
Thanks,
Zack
On Tue, Jun 9,
2005 May 11
1
[LLVMdev] Computing live values
On Wed, 11 May 2005, Alkis Evlogimenos wrote:
> On Wed, 2005-05-11 at 13:17 -0500, Chris Lattner wrote:
>> On Wed, 11 May 2005, Vladimir Prus wrote:
>>> 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
2011 Dec 09
1
[LLVMdev] Finding the uses of a global variable
Hi everyone,
I am writing a pass that finds all uses of global variables (my goal is to
find the uses of strings, and strings are defined as global variables). So,
I can iterate over global vars by
for(Module::global_iterator gi = M.global_begin(), gend = M.global_end();
gi != gend; ++gi) ......
But if I use its def-use chain
for(Value::use_iterator i = gi->use_begin(), e = F->use_end; i!=e;
2014 Sep 25
2
[LLVMdev] MachineRegisterInfo use_iterator/reg_iterator?
Thanks Quentin. I'm trying to examine from the operands of the return
instruction, and then to get the last assignment of those. I thought
use_iterator/reg_iterator may suit better than just loop through the
machine basicblock in the reverse order.
Cheng-Chih
On Thu, Sep 25, 2014 at 1:51 PM, Quentin Colombet <qcolombet at apple.com>
wrote:
> Hi Cheng-Chih,
>
> On Sep 25,
2007 Jul 17
0
[LLVMdev] BasicCallGraph patch
On Thu, 12 Jul 2007, Zhongxing Xu wrote:
> 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
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
2008 Dec 05
1
[LLVMdev] replacing a global variable by a constant
Thanks a lot for your help Matthijs! :)
basically this does the job quite nicely I think:
for (llvm::GlobalVariable::use_iterator U = gv->use_begin(); U !=
gv->use_end(); ++U) {
llvm::Instruction *I = llvm::cast<llvm::Instruction>(U);
I->replaceAllUsesWith(constPtr);
I->eraseFromParent();
}
Cheers,
Ralf
Matthijs Kooijman wrote:
> Hi Ralf,
>
>
>> I
2015 Jun 10
2
[LLVMdev] The use iterator not working...
It appears dereferencing the use iterator returned the "user" in older LLVM
versions. See the following commit to Use.h. You can see that the intention
is to return the "user". So this is not the behavior anymore.
https://github.com/llvm-mirror/llvm/commit/d1fe495464e4abc384565813cbf1cb8b130e5a6d
- // Retrieve a pointer to the current User.- UserTy *operator*() const {-
2007 Jul 17
2
[LLVMdev] BasicCallGraph patch
I am doing inter-procedural static analysis, so I need to do DFS of call
graph. llvm-gcc sometimes generates this kind of call instruction, which
cause the call graph to be incomplete.
But thanks for your information, instcombine really solves the problem.
On 7/17/07, Chris Lattner <sabre at nondot.org> wrote:
>
> On Thu, 12 Jul 2007, Zhongxing Xu wrote:
> > The current
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
2009 Apr 14
3
[LLVMdev] InstVisitor Example
On Apr 14, 2009, at 1:49 PM, Luke Dalessandro wrote:
>
> On Apr 14, 2009, at 12:48 PM, Brice Lin wrote:
>
>> I just read the LLVM Programmer's Manual, which mentions (but
>> specifically does not include any details of) the InstVisitor
>> template. Could someone please provide an example of how to use this
>> template to find (as an example) all CallSites for