search for: succ_size

Displaying 6 results from an estimated 6 matches for "succ_size".

Did you mean: acc_size
2014 Nov 06
2
[LLVMdev] Should the MachineVerifier accept a MBB with a single (landing pad) successor?
...terminating BB#7 gets removed early, for various reasons (happenstance, really). The edge to the landing pad is still there, but the verifier can't check anything because there's no branch to analyze. On AArch64, the branch remains, and the verifier hits this condition: if (MBB->succ_size() != 1+LandingPadSuccs.size()) So: - the problem exists elsewhere, but is hidden by branch folder optimizations - if the normal successor to an invoke BB is unreachable, it seems reasonable to only have 1 successor, the landing pad. Hence my simple change, making the verifier accept it: --- c/li...
2010 Oct 07
2
[LLVMdev] [LLVMDev] Has anyone written this?
...); for( unsigned i = 0, e = mf.size(); i != e; ++i ) { if( seen[i] ) continue; seen[i] = true; MachineBasicBlock * start, *block; start = block = mf.getBlockNumbered(i); std::vector< MachineBasicBlock* > blocks; while( block->succ_size() == 1 && (*block->succ_begin())->pred_size() == 1 ) { block = *block->succ_begin(); seen[block->getNumber()] = true; blocks.push_back( block ); } // TODO: // For each basic block bb in blocks in order of insersion: /...
2010 Oct 06
2
[LLVMdev] [LLVMDev] Has anyone written this?
Has anyone written a pass at the MachineFunction level which combines machine basic blocks which is guaranteed to be the single predecessor to another block? Or is there a reason not to combine them? - Thanks Jeff Kunkel
2010 Oct 06
0
[LLVMdev] [LLVMDev] Has anyone written this?
On Oct 6, 2010, at 4:31 PM, Jeff Kunkel wrote: > Has anyone written a pass at the MachineFunction level which combines > machine basic blocks which is guaranteed to be the single predecessor > to another block? Or is there a reason not to combine them? I'm not sure exactly what transformation you're referring to, but BranchFolder::OptimizeBranches does a lot of things like that.
2010 Oct 07
0
[LLVMdev] [LLVMDev] Has anyone written this?
...>          continue; >>>>        seen[i] = true; >>>>        MachineBasicBlock * start, *block; >>>>        start = block = mf.getBlockNumbered(i); >>>>        std::vector< MachineBasicBlock* > blocks; >>>>        while( block->succ_size() == 1 && >>>> (*block->succ_begin())->pred_size() == 1 ) { >>>>          block = *block->succ_begin(); >>>>          seen[block->getNumber()] = true; >>>>          blocks.push_back( block ); >>>>        } >>>&...
2007 Aug 19
1
[LLVMdev] MBB Critical edges
...succ != mbb->succ_end(); succ++) { MachineBasicBlock * mbb_succ = *succ; // necessary and sufficient condition that characterizes a critical // edge: predecessor with many successors, successor with many // predecessors. if( (mbb->succ_size() > 1) && (mbb_succ->pred_size() > 1) ) { src_blocks.push_back(mbb); dst_blocks.push_back(mbb_succ); } } } for(unsigned u = 0; u < src_blocks.size() > 0; u++) { MachineBasicBlock * src = src_blocks[u];...