Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] constructing 'for' statement from LLVM bitcode"
2007 Sep 19
1
[LLVMdev] constructing 'for' statement from LLVM bitcode
Dear Wojciech Matyjewicz:
Thank you for your advice.
I could follow what you had suggested upto
opt -analyze -loops bsloop-opt.bc
Therefore, I could get the prints you had showed me as follows:
--------------------------------------------------------
Printing analysis 'Natural Loop Construction' for function 'bsloop':
Loop Containing: %bb16, %bb13, %bb8, %bb1
Loop
2007 Aug 25
2
[LLVMdev] constructing 'for' statement from LLVM bitcode
Hello, guys.
I am trying to construct higher-level 'for' from the low-level LLVM bitcode(ver 1.9).
It's partly successful thanks to David A. Greene's advice suggested to use Control Dependence Graph(CDG).
I could find which BB contributes to form which loop with CDG.
For example, for this simple function:
-----------------------------------------------------------
void bsloop(int
2007 Sep 05
2
[LLVMdev] reg2mem pass
Hello, guys.
I just tested -reg2mem pass to see how it changes my bitcode.
E.g., for the following simple C code:
-------------------------------------------------------------
int foo() {
int i,j;
int sum = 0;
for (i=0; i<10; i++)
{
sum += i;
for (j=0; j<3; j++)
sum += 2;
}
return sum;
}
-------------------------------------------------------------
I could get the
2008 Feb 04
0
[LLVMdev] Question to Chris
Thank you for this comment, Mike.
So... your suggestion is to make a valid transform for each loop like:
>for (;C;) {
> S
>}
>
>is to transform:
>
>top:
>if (!C) goto end;
> S
>goto top;
>end:
For now, my code is incomplete so not ready to present for audit yet but I hope it asap.
In fact, I couldn't understand what you said:
>The cost of the .pdf
2008 Jan 12
1
[LLVMdev] Labels
I'm attempting to modify a parser generator to emit LLVM code instead of C.
So far the experience has been trivial, but I am now running into an error
regarding labels that I can't seem to solve.
Situation 1: A label is used immediately after a void function call (l6 in
this case):
<snip>
%tmp26 = load i32* @yybegin, align 4
%tmp27 = load i32* @yyend, align 4
call void
2009 Sep 06
0
[LLVMdev] Non-local DSE optimization
Jakub Staszak wrote:
> Hi,
>
> It looks like PDT.getRootNode() returns NULL for:
>
> define fastcc void @c974001__lengthy_calculation.
> 1736(%struct.FRAME.c974001* nocapture %CHAIN.185) noreturn {
> entry:
> br label %bb
>
> bb:
> br label %bb
> }
>
>
> Isn't it a bug in PostDominatorTree?
>
> Please note that this crashes:
>
2009 Sep 08
2
[LLVMdev] Non-local DSE optimization
Hello,
Bug is already fixed by Chris (see: http://llvm.org/bugs/show_bug.cgi?id=4915)
.
I added getRootNode() == NULL condition to my patch. It's not a great
solution, but it is enough for now I think. New patch attached.
-Jakub
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dse_ssu-2.patch
Type: application/octet-stream
Size: 17762 bytes
Desc: not
2009 Sep 03
2
[LLVMdev] Non-local DSE optimization
Hi,
It looks like PDT.getRootNode() returns NULL for:
define fastcc void @c974001__lengthy_calculation.
1736(%struct.FRAME.c974001* nocapture %CHAIN.185) noreturn {
entry:
br label %bb
bb:
br label %bb
}
Isn't it a bug in PostDominatorTree?
Please note that this crashes:
opt -postdomtree -debug dom_crash.bc
I think this should be reported as a bug,
-Jakub
On Sep 3, 2009, at
2012 Nov 26
2
[LLVMdev] LSR pass
Hi,
I would like some help regarding the LSR pass. It seems that it likes to duplicate address calculations as in the case above, which is highly undesirable on my target.
I wonder if there is any way to tell LSR to not duplicate the code in cases like this? Or could I perhaps run CSE after LSR again?
What is the logic behind this transformation? It seems that a LSR pass should not insert a
2013 Nov 15
0
[LLVMdev] dominator, post-dominator and memory leak
Try breaking the critical edges (-break-crit-edges).
This way, a new block will be created between BB13 and BB11 (call this
BB11.break) and BB15 and BB12 (call this BB12.break).
The predecessors of the dominance frontier will, thus, be BB11.break,
BB12.break, and BB14.
When we enter through a block with a call to malloc(), we will end up in
one of the blocks in the dominance frontier (kind of).
2017 Jan 13
4
Wrong code bug after GVN/PRE?
Hi,
I've stumbled upon a case where I think gvn does a bad (wrong)
optimization. It's a bit messy to debug though so I'm not sure if I
should just write a PR about it a let someone who knows the code look at
it instead.
Anyway, for the bug to trigger I need to run the following passes in the
same opt invocation:
-sroa -instcombine -simplifycfg -instcombine -gvn
The problem
2012 Dec 01
1
[LLVMdev] LSR pass
----- Original Message -----
> From: "Jonas Paulsson" <jonas.paulsson at ericsson.com>
> To: llvmdev at cs.uiuc.edu
> Sent: Monday, November 26, 2012 1:40:24 PM
> Subject: [LLVMdev] LSR pass
>
>
>
>
>
> Hi,
>
>
>
> I would like some help regarding the LSR pass. It seems that it likes
> to duplicate address calculations as in the
2013 Nov 15
2
[LLVMdev] dominator, post-dominator and memory leak
Hi Henrique,
I have tried using -mergereturn and inserting a free into the predecessors
of dominance frontier of malloc block and it caused double free. It is
possible for multiple free's to be inserted on the path from malloc to an
exit. For example, in the following CFG:
BB10 (malloc)
/ \
BB11 BB12
... / \ / \
2012 Dec 04
0
[LLVMdev] LSR pass
Hi,
The target supports indexing by register or immediate. Multiplications are not supported by any load / store instructions. Would it be possible to make LSR aware of this?
Thanks,
Jonas Paulsson
-----Original Message-----
From: Hal Finkel [mailto:hfinkel at anl.gov]
Sent: Saturday, December 01, 2012 5:59 AM
To: Jonas Paulsson
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] LSR pass
2010 Sep 29
0
[LLVMdev] spilling & xmm register usage
On Sep 29, 2010, at 8:35 AMPDT, Ralf Karrenberg wrote:
> Hello everybody,
>
> I have stumbled upon a test case (the attached module is a slightly
> reduced version) that shows extremely reduced performance on linux
> compared to windows when executed using LLVM's JIT.
>
> We narrowed the problem down to the actual code being generated, the
> source IR on both systems
2008 Dec 07
1
[LLVMdev] How to extract loop body into a new function?
False Alarm!!
Still don't know how to do it!
I am trying to write a transformation pass to extract a loop body into a function.
For example:
The Loop in question is:
for (i2 = 0; i2 < LOOP_SIZE; i2++) {
A[B[i2]] = 2 * B[i2];
}
The IR for which is:
bb13: ; preds = %bb13, %bb
%i2.0.reg2mem.0 = phi i32 [ 0, %bb ], [ %indvar.next62, %bb13 ] ; <i32>
2008 Feb 05
1
[LLVMdev] signed integer types still in LLVM 2.1
Hello.
I updated my LLVM with version 2.1 from 1.9.
But I am curious why I still have signed integer type.
I still get LLVM IR as follows:
......
......
bb8.outer: ; preds = %bb10, %entry
%i.0.0.ph = phi uint [ 0, %entry ], [ %indvar.next26, %bb10 ] ; <uint> [#uses=2]
%sum.0.pn.ph = phi uint [ 0, %entry ], [ %sum.1, %bb10 ] ; <uint> [#uses=1]
br label %bb8
bb3: ; preds = %bb8
2010 Nov 07
0
[LLVMdev] Hoisting elements of array argument into registers
David Peixotto <dmp <at> rice.edu> writes:
> I am seeing the wf loop get optimized just fine with llvm 2.8 (and almost
as good with head).
I rechecked this and am I actually seeing the same results as you. I think I
must have made a stupid mistake in my tests before - sorry for the noise.
However, I found that we have a phase ordering problem which is preventing us
getting as much
2014 May 23
2
[LLVMdev] RFC: Indexing of structs vs arrays in getelementpointer
----- Original Message -----
> From: "Chandler Carruth" <chandlerc at google.com>
> To: "Louis Gerbarg" <lgg at apple.com>
> Cc: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
> Sent: Thursday, May 22, 2014 7:09:49 PM
> Subject: Re: [LLVMdev] RFC: Indexing of structs vs arrays in getelementpointer
>
>
>
>
>
2014 May 22
2
[LLVMdev] RFC: Indexing of structs vs arrays in getelementpointer
On May 22, 2014, at 3:51 PM, Chandler Carruth <chandlerc at google.com> wrote:
>
> On Thu, May 22, 2014 at 4:42 PM, Louis Gerbarg <lgg at apple.com> wrote:
> The problem that the above transform is technically illegal because “When indexing into a (optionally packed) structure, only i32 integer constants are allowed (when using a vector of indices they must all be the same