Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] Doubt on phi nodes"
2008 Jul 12
3
[LLVMdev] Little bug in LoopInfo after Rotate?
Hello, I have two for loops (one inside the other), that after indvars,
looprotate, etc. (the important here is the loop rotate), is similar to this
(I've stripped the real operations):
define i32 @f() nounwind {
entry:
br label %bb1
bb1: ; preds = %bb3, %bb1, %entry
%i.0.reg2mem.0.ph = phi i32 [ 0, %entry ], [ %i.0.reg2mem.0.ph, %bb1 ],
[ %indvar.next9, %bb3 ] ;
2012 Jul 25
2
[LLVMdev] Question about an unusual jump instruction
Dear all,
I'm working on an exploratory backend on llvm. In the instruction set I'm using
I have an instruction (called DECJNZ) that decrements a register and, if the
decremented value is not zero, jumps (with a relative jump) to a given offset.
I've described in tablegen this instruction as follow:
def DECJNZ : Instruction {
let Namespace = "MyTarget";
let
2012 Jul 25
0
[LLVMdev] Question about an unusual jump instruction
On Wed, Jul 25, 2012 at 12:48 AM, Michele Scandale
<michele.scandale at gmail.com> wrote:
> Dear all,
>
> I'm working on an exploratory backend on llvm. In the instruction set I'm using
> I have an instruction (called DECJNZ) that decrements a register and, if the
> decremented value is not zero, jumps (with a relative jump) to a given offset.
>
> I've
2017 Feb 06
2
Adding Extended-SSA to LLVM
On Sun, Feb 5, 2017 at 3:41 PM, Nuno Lopes <nunoplopes at sapo.pt> wrote:
> Thanks for the answers! The plan makes sense to me.
>
> Regarding phis, what about diamonds, e.g.:
>
>
> define i32 @f(i32 %x) {
> br .., label %bb0, label %bb1
> bb0:
> %cmp = icmp sge i32 %x, 0 ; x > 0
> br i1 %cmp, label %bb2, label %bb3
> bb1:
> %x2 = add nsw
2011 Nov 21
1
[LLVMdev] Fwd: Order of Basic Blocks
---------- Forwarded message ----------
From: Ryan Taylor <ryta1203 at gmail.com>
Date: Mon, Nov 21, 2011 at 10:30 AM
Subject: Re: [LLVMdev] Order of Basic Blocks
To: Benjamin Kramer <benny.kra at googlemail.com>
This worked, though the RPO_iterator apparently wasn't what I was looking
for anyways, it seems it doesn't rreally go top->down.
I have a simple example code,
2011 Mar 31
0
[LLVMdev] LiveValues removal
LiveVariables is the optimized and tested way to get variable liveness
information (it's used by register allocation). Unfortunately it
requires a MachineFunction to work - so you'll either need to lower to
one of the built-in targets or add your own target to acquire access to
this pass.
Andrew
On 03/31/2011 12:28 PM, Carlo Alberto Ferraris wrote:
> I've read that LiveValues
2011 Mar 31
3
[LLVMdev] LiveValues removal
I've read that LiveValues has been removed from trunk. Did it bitrot or
was simply removed because a replacement is available?
If it's the former, what caused the bitrotting? If it's the latter,
what's the replacement? (I've found LiveVariables but I'm not sure it
can be used in a ModulePass).
b.r.
--
Carlo Alberto Ferraris <cafxx at strayorange.com
<mailto:cafxx
2011 Jun 24
0
[LLVMdev] Missing symbols in pass stack trace
On Jun 24, 2011, at 10:49 AM, Carlo Alberto Ferraris wrote:
>
>> Try building with "make VERBOSE=1", which will show you the command-lines passed to the compiler/linker. Post the output here.
> there you go:
>> cafxx at ubuntu:~/Projects/llvm2/lib/Transforms/cgf$ make VERBOSE=1
>> llvm[0]: Compiling CGFPass.cpp for Debug+Asserts build (PIC)
>> if g++
2011 Aug 02
0
[LLVMdev] Multiple successors, single dynamic successor
Nella citazione martedì 2 agosto 2011 22:01:13, Carlo Alberto Ferraris
ha scritto:
> My question is:
> what is the best way to
> express such relationships in LLVM IR ("best" in the sense of allowing
> other optimizations to run effectively)? Bear in mind that in this
> example N=2, but it may be way bigger than that.
Just to clarify: I already figured out two ways to
2011 Jun 24
0
[LLVMdev] Missing symbols in pass stack trace
On Jun 24, 2011, at 12:36 PM, Carlo Alberto Ferraris wrote:
>
>> That's a weird one. Does addr2line work?
>> $ addr2line -e CGF.so <address>
> cafxx at ubuntu:~/Projects/llvm2/Debug+Asserts/bin$ objdump -t ../lib/CGF.so | grep flatten
> 0000000000005622 l F .text 0000000000000aa6 _ZN12_GLOBAL__N_111CGFFunction7flattenEv
> 00000000000041d6 l
2011 Jun 24
4
[LLVMdev] Missing symbols in pass stack trace
> That's a weird one. Does addr2line work?
> $ addr2line -e CGF.so <address>
cafxx at ubuntu:~/Projects/llvm2/Debug+Asserts/bin$ objdump -t
../lib/CGF.so | grep flatten
0000000000005622 l F .text 0000000000000aa6
_ZN12_GLOBAL__N_111CGFFunction7flattenEv
00000000000041d6 l F .text 000000000000049c
_ZN12_GLOBAL__N_111CGFCallSite7flattenEv
2011 Jun 24
0
[LLVMdev] Missing symbols in pass stack trace
On Jun 24, 2011, at 11:03 AM, Carlo Alberto Ferraris wrote:
>
>> Are you loading the shared library directly from the build directory, or are you installing it first?
> I'm invoking it directly, I guess: ./opt -load=CGF.so -cgf -debug test.S
> should I install it? (I have no idea about how to do it, though...)
>
>> If you run "file CGF.so" on the file
2011 Aug 01
1
[LLVMdev] SwitchInst::addCase with BlockAddress
Nella citazione lunedì 1 agosto 2011 08:13:12, Eli Friedman ha scritto:
> On Sun, Jul 31, 2011 at 7:36 AM, Carlo Alberto Ferraris
> <cafxx at strayorange.com> wrote:
>> I'm trying to figure out how to feed a blockaddress to a switch condition
>> AND destination (basically emulating an indirectbr via a switch; I know it's
>> not a good approach, I'm just
2011 Jun 24
2
[LLVMdev] Missing symbols in pass stack trace
> Are you loading the shared library directly from the build directory,
> or are you installing it first?
I'm invoking it directly, I guess:./opt -load=CGF.so -cgf -debug test.S
should I install it? (I have no idea about how to do it, though...)
> If you run "file CGF.so" on the file you actually load, does it say it
> is stripped or non-stripped?
cafxx at
2011 Jun 24
2
[LLVMdev] Missing symbols in pass stack trace
> Try building with "make VERBOSE=1", which will show you the
> command-lines passed to the compiler/linker. Post the output here.
there you go:
> cafxx at ubuntu:~/Projects/llvm2/lib/Transforms/cgf$ make VERBOSE=1
> llvm[0]: Compiling CGFPass.cpp for Debug+Asserts build (PIC)
> if g++ -I/home/cafxx/Projects/llvm2/include
>
2011 Jul 31
3
[LLVMdev] SwitchInst::addCase with BlockAddress
I'm trying to figure out how to feed a blockaddress to a switch
condition AND destination (basically emulating an indirectbr via a
switch; I know it's not a good approach, I'm just experimenting).
Suppose I have the following:
SwitchInst *s = SwitchInst::Create(...);
BasicBlock *bb = ...;
PtrToIntInst k = new PtrToIntInst(BlockAddress::get(bb), <TYPE>, "", s);
2011 Jul 07
3
[LLVMdev] Missed optimization with indirectbr terminator
Consider this IR fragment produced after -O3:
> %7:
> %8 = phi i8* [ blockaddress(@0, %19), %19 ], [ %12, %11 ]
> %9 = phi i32 [ %20, %19 ], [ 0, %11 ]
> indirectbr i8* %8, [label %4, label %19]
>
> %19:
> %20 = add nsw i32 %9, 1
> %21 = icmp eq i32 %9, 9999
> br i1 %21, label %16, label %7
the br in %19 should be optimized to branch directly to itself rather
than going
2011 Jun 24
0
[LLVMdev] Missing symbols in pass stack trace
On Jun 24, 2011, at 10:14 AM, Carlo Alberto Ferraris wrote:
> I'm working on a pass (both LLVM and the pass have been compiled in debug+asserts mode) but when the pass crashes in the stack trace printed by opt the names of the functions inside my pass don't appear (see frames 14-16). How can I have them displayed?
>> cafxx at ubuntu:~/Projects/llvm2/Debug+Asserts/bin$ clear
2011 Aug 02
2
[LLVMdev] Multiple successors, single dynamic successor
Suppose I have a bb with N predecessors and N successors. What is, in
your opinion, the best way to express that the bb has (dynamically) only
one successor (i.e. if coming from the i-th predecessor we will always
jump to the i-th successor)?
b.r.,
--
Carlo Alberto Ferraris <cafxx at strayorange.com
<mailto:cafxx at strayorange.com>>
website/blog
2011 Jun 14
2
[LLVMdev] "Splitting" live values
Suppose I have in my CFG (among others) two basic blocks A and B, with
an edge from A to B. I need to do the following:
* get the set S of live values across that edge
* map each of them to another value (S->S')
* replace - in B and its successors - all the uses of values in S
with the mapped values (S')
Does LLVM provide an easy way to do this (because I can't