Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 6 of 6 for MemoryArg (0.61 sec)

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

    		// operation not covered above then we probably need to keep it.
    		// We also need to keep autos if they reach Phis (issue #26153).
    		if v.Type.IsMemory() || v.Type.IsFlags() || v.Op == OpPhi || v.MemoryArg() != nil {
    			for _, a := range args {
    				if n, ok := addr[a]; ok {
    					if !used.Has(n) {
    						used.Add(n)
    						changed = true
    					}
    				}
    			}
    			return
    		}
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 25 20:07:26 UTC 2024
    - 11K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/schedule.go

    			if v.Op != OpPhi && v.Op != OpInitMem && v.Type.IsMemory() {
    				nextMem[v.MemoryArg().ID] = v
    			}
    		}
    
    		// Add edges to enforce that any load must come before the following store.
    		for _, v := range b.Values {
    			if v.Op == OpPhi || v.Type.IsMemory() {
    				continue
    			}
    			w := v.MemoryArg()
    			if w == nil {
    				continue
    			}
    			if s := nextMem[w.ID]; s != nil && s.Block == b {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 08 15:53:17 UTC 2024
    - 16.4K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssa/value.go

    	}
    	return reg.(*Register).name
    }
    
    // MemoryArg returns the memory argument for the Value.
    // The returned value, if non-nil, will be memory-typed (or a tuple with a memory-typed second part).
    // Otherwise, nil is returned.
    func (v *Value) MemoryArg() *Value {
    	if v.Op == OpPhi {
    		v.Fatalf("MemoryArg on Phi")
    	}
    	na := len(v.Args)
    	if na == 0 {
    		return nil
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 03 16:40:22 UTC 2024
    - 16.7K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/check.go

    		// ops that generate memory values.
    		ss.clear()
    		for _, v := range b.Values {
    			if v.Op == OpPhi || !v.Type.IsMemory() {
    				continue
    			}
    			if m := v.MemoryArg(); m != nil {
    				ss.add(m.ID)
    			}
    		}
    		// There should be at most one remaining unoverwritten memory value.
    		for _, v := range b.Values {
    			if !v.Type.IsMemory() {
    				continue
    			}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Apr 09 16:41:23 UTC 2024
    - 17.6K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/liveness/plive.go

    			//    m2 = store operation ... m1
    			//    m3 = store operation ... m2
    			//    m4 = WBend m3
    
    			// Find first memory op in the block, which should be a Phi.
    			m := v
    			for {
    				m = m.MemoryArg()
    				if m.Block != b {
    					lv.f.Fatalf("can't find Phi before write barrier end mark %v", v)
    				}
    				if m.Op == ssa.OpPhi {
    					break
    				}
    			}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 15:22:22 UTC 2024
    - 45.2K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/rewrite.go

    		return false
    	}
    
    	// We can't merge the load into the target if the load
    	// has more than one use.
    	if load.Uses != 1 {
    		return false
    	}
    
    	mem := load.MemoryArg()
    
    	// We need the load's memory arg to still be alive at target. That
    	// can't be the case if one of target's args depends on a memory
    	// state that is a successor of load's memory arg.
    	//
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:02:52 UTC 2024
    - 64.2K bytes
    - Viewed (0)
Back to top