Displaying 8 results from an estimated 8 matches for "coderepl".
2011 Jan 25
2
[LLVMdev] Update PHINode after extracting code
......
bb4: ; preds = %bb1, %bb,
%entry
%tmp.0 = phi %struct.MYSQL_ROWS* [ null, %entry ], [ %tmp.15, %bb ], [
%tmp.1, %bb1 ]
%tmp.0 is the PHINode whose value is from entry, bb and bb1.
After extracting bb and bb1 into new function, the program becomes
codeRepl: ; preds = %entry
call void @mysql_data_seek_bb(%struct.MYSQL_DATA* %1, i64 %row,
%struct.MYSQL_ROWS** %tmp.15.loc, %struct.MYSQL_ROWS** %tmp.1.loc)
* %tmp.15.reload = load %struct.MYSQL_ROWS** %tmp.15.loc
%tmp.1.reload = load %struct.MYSQL_ROWS** %tmp.1...
2011 Jan 27
0
[LLVMdev] Update PHINode after extracting code
...ose we have BB1 and BB2 both point to BB3.
BB1 has variable x. BB2 also as variable x.
BB3 will have PHINode for x with 2 value from BB1 and BB2.
BB1 BB2
\ /
BB3
Now if BB1 and BB2 is extracted into a function
(using ExtractCodeRegion), they will be replaced by
a basic block called codeRepl (which has a call to the extracted
function).
codeRepl
|
BB3
The problem is that the PHINode in BB3 still has 2 values x,
both from codeRepl. That's wrong because BB3 has only 1 successors,
which is codeRepl. In fact, there is NO way to update PhiNode,
because all the x are from ONE n...
2011 Jan 27
2
[LLVMdev] Update PHINode after extracting code
...; BB1 has variable x. BB2 also as variable x.
> BB3 will have PHINode for x with 2 value from BB1 and BB2.
> BB1 BB2
> \ /
> BB3
>
> Now if BB1 and BB2 is extracted into a function
> (using ExtractCodeRegion), they will be replaced by
> a basic block called codeRepl (which has a call to the extracted
> function).
> codeRepl
> |
> BB3
>
> The problem is that the PHINode in BB3 still has 2 values x,
> both from codeRepl. That's wrong because BB3 has only 1 successors,
> which is codeRepl. In fact, there is NO way to update...
2017 Nov 29
4
CodeExtractor buggy?
...nd readonly uwtable
define i32 @foo(%struct.S* nocapture readonly, i32) local_unnamed_addr #0 {
%.loc1 = alloca %struct.S*
%.loc = alloca %struct.S*
%3 = icmp eq i32 %1, 0
br i1 %3, label %5, label %4
; <label>:4: ; preds = %2
br label %codeRepl
codeRepl: ; preds = %4
call void @foo_(%struct.S* %0, i32 %1, %struct.S** %.loc, %struct.S** %.loc1)
%.reload = load %struct.S*, %struct.S** %.loc
%.reload2 = load %struct.S*, %struct.S** %.loc1
br label %.loopexit
.loopexit: ...
2007 Dec 19
0
[LLVMdev] JIT Stub Problem
...by the JIT Compiler. I'm not sure if it's a bug or if I'm doing something incorrectly.
I've got a long complicated function with the following basic blocks at the end of it (The complete .ll file is attached):
falseBlock: ; preds = %__exp.exit340
ret int 617
codeRepl: ; preds = %__exp.exit340
%tmp2.i.i = add int %x, 1 ; <int> [#uses=1]
store int %tmp2.i.i, int* %tmp2.loc
call void %test3_trueBlock_trueBlock.ret.exitStub_newFuncRoot.ce_trueBlock.ret.exitStub.ret.exitStub.ret.exitStub.ret7( )
%t...
2011 Jan 27
0
[LLVMdev] Update PHINode after extracting code
...as variable x.
>> BB3 will have PHINode for x with 2 value from BB1 and BB2.
>> BB1 BB2
>> \ /
>> BB3
>>
>> Now if BB1 and BB2 is extracted into a function
>> (using ExtractCodeRegion), they will be replaced by
>> a basic block called codeRepl (which has a call to the extracted
>> function).
>> codeRepl
>> |
>> BB3
>>
>> The problem is that the PHINode in BB3 still has 2 values x,
>> both from codeRepl. That's wrong because BB3 has only 1 successors,
>> which is codeRepl. In fa...
2011 Mar 12
0
[LLVMdev] problems when the llvm::ExtractCodeRegion updates the Phi nodes in successors ... is there a method to eliminate phi nodes ?
...n,
but I have a problem when I run this on the SPEC CPU 2006 on the 401.bzip2
benchmark. First I use clang -O3 to generate optimized llvm code and then I
extract some loops from the module built from blocksort.c source file.
The problem is that the PHI nodes contained in the successors of the codeRepl
include two or more incoming edges for different blocks contained in the loop.
Therefore, when the loop is extracted in the new function, these incoming edges
are updated to have an entry from the codeRepl block instead of the the original
blocks. But in case there are incoming edges from more...
2013 Oct 25
3
[LLVMdev] Question About Function Cloning
...%i = alloca i32, align 4
%j = alloca i32, align 4
%num_iter = alloca i32, align 4
%val = alloca i32, align 4
%i1 = alloca i32, align 4
store i32 0, i32* %retval
store i32 2, i32* %num_iter, align 4
store i32 56, i32* %val, align 4
store i32 0, i32* %i1, align 4
br label %codeRepl
codeRepl: ; preds = %entry
call void @main_for.condarnamoy(i32* %i1, i32* %num_iter, i32* %val)
call void @main_for.cond(i32* %i1, i32* %num_iter, i32* %val)
br label %for.end
for.end: ; preds = %codeRepl...