Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 6 of 6 for BlockPlain (0.13 sec)

  1. src/cmd/compile/internal/ssa/fuse.go

    	s0 := b.Succs[0].b
    	i0 := b.Succs[0].i
    	if s0.Kind != BlockPlain || !isEmpty(s0) {
    		s0, ss0 = b, s0
    	} else {
    		ss0 = s0.Succs[0].b
    		i0 = s0.Succs[0].i
    	}
    	s1 := b.Succs[1].b
    	i1 := b.Succs[1].i
    	if s1.Kind != BlockPlain || !isEmpty(s1) {
    		s1, ss1 = b, s1
    	} else {
    		ss1 = s1.Succs[0].b
    		i1 = s1.Succs[0].i
    	}
    	if ss0 != ss1 {
    		if s0.Kind == BlockPlain && isEmpty(s0) && s1.Kind == BlockPlain && isEmpty(s1) {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Oct 31 20:45:54 UTC 2023
    - 9K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/critical.go

    					// the new blocks to be re-examined.
    					d = f.NewBlock(BlockPlain)
    					d.Pos = p.Pos
    					blocks[argID] = d
    					if f.pass.debug > 0 {
    						f.Warnl(p.Pos, "split critical edge")
    					}
    				} else {
    					reusedBlock = true
    				}
    			} else {
    				// no existing block, so allocate a new block
    				// to place on the edge
    				d = f.NewBlock(BlockPlain)
    				d.Pos = p.Pos
    				if f.pass.debug > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 21:40:11 UTC 2023
    - 3.1K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssa/trim.go

    // subject to the following criteria:
    //   - it should not be the first block.
    //   - it should be BlockPlain.
    //   - it should not loop back to itself.
    //   - it either is the single predecessor of the successor block or
    //     contains no actual instructions.
    func trimmableBlock(b *Block) bool {
    	if b.Kind != BlockPlain || b == b.Func.Entry {
    		return false
    	}
    	s := b.Succs[0].b
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 18 17:59:44 UTC 2022
    - 4.2K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/looprotate.go

    	// Check each loop header and decide if we want to move it.
    	for _, loop := range loopnest.loops {
    		b := loop.header
    		var p *Block // b's in-loop predecessor
    		for _, e := range b.Preds {
    			if e.b.Kind != BlockPlain {
    				continue
    			}
    			if loopnest.b2l[e.b.ID] != loop {
    				continue
    			}
    			p = e.b
    		}
    		if p == nil {
    			continue
    		}
    		p.Hotness |= HotInitial
    		if f.IsPgoHot {
    			p.Hotness |= HotPgo
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 15 15:44:14 UTC 2024
    - 3K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/fuse_comparisons.go

    		v.AddArg(pc)
    		v.AddArg(bc)
    
    		// Set the combined control value as the control value for b.
    		b.SetControl(v)
    
    		// Modify p so that it jumps directly to b.
    		p.removeEdge(i)
    		p.Kind = BlockPlain
    		p.Likely = BranchUnknown
    		p.ResetControls()
    
    		return true
    	}
    
    	// TODO: could negate condition(s) to merge controls.
    	return false
    }
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 11 16:34:30 UTC 2022
    - 4K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/deadcode.go

    	}
    
    	// Get rid of dead edges from live code.
    	for _, b := range f.Blocks {
    		if !reachable[b.ID] {
    			continue
    		}
    		if b.Kind != BlockFirst {
    			continue
    		}
    		b.removeEdge(1)
    		b.Kind = BlockPlain
    		b.Likely = BranchUnknown
    	}
    
    	// Splice out any copies introduced during dead block removal.
    	copyelim(f)
    
    	// Find live values.
    	live, order := liveValues(f, reachable)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Dec 08 00:29:01 UTC 2023
    - 9.2K bytes
    - Viewed (0)
Back to top