search for: coderepl

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...