Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 48 for OpPhi (0.04 sec)

  1. test/phiopt.go

    	} else {
    		x = false
    	}
    	return x // ERROR "converted OpPhi to Copy$"
    }
    
    //go:noinline
    func f1(a bool) bool {
    	x := false
    	if a {
    		x = false
    	} else {
    		x = true
    	}
    	return x // ERROR "converted OpPhi to Not$"
    }
    
    //go:noinline
    func f2(a, b int) bool {
    	x := true
    	if a == b {
    		x = false
    	}
    	return x // ERROR "converted OpPhi to Not$"
    }
    
    //go:noinline
    func f3(a, b int) bool {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Oct 19 23:33:25 UTC 2023
    - 2K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/decompose.go

    func decomposeSlicePhi(v *Value) {
    	types := &v.Block.Func.Config.Types
    	ptrType := v.Type.Elem().PtrTo()
    	lenType := types.Int
    
    	ptr := v.Block.NewValue0(v.Pos, OpPhi, ptrType)
    	len := v.Block.NewValue0(v.Pos, OpPhi, lenType)
    	cap := v.Block.NewValue0(v.Pos, OpPhi, lenType)
    	for _, a := range v.Args {
    		ptr.AddArg(a.Block.NewValue1(v.Pos, OpSlicePtr, ptrType, a))
    		len.AddArg(a.Block.NewValue1(v.Pos, OpSliceLen, lenType, a))
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Aug 23 21:22:15 UTC 2022
    - 13.4K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssa/shortcircuit_test.go

    			Valu("cmp2", OpLess64, c.config.Types.Bool, 0, nil, "arg2", "arg3"),
    			Goto("b3")),
    		Bloc("b3",
    			Valu("phi2", OpPhi, c.config.Types.Bool, 0, nil, "cmp1", "cmp2"),
    			If("phi2", "b4", "b5")),
    		Bloc("b4",
    			Valu("cmp3", OpLess64, c.config.Types.Bool, 0, nil, "arg3", "arg1"),
    			Goto("b5")),
    		Bloc("b5",
    			Valu("phi3", OpPhi, c.config.Types.Bool, 0, nil, "phi2", "cmp3"),
    			If("phi3", "b6", "b7")),
    		Bloc("b6",
    			Exit("mem")),
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 09 23:01:51 UTC 2017
    - 1.3K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/phiopt.go

    			// TODO: handle more than 2 predecessors, e.g. a || b || c.
    			continue
    		}
    
    		for _, v := range b.Values {
    			// find a phi value v = OpPhi (ConstBool [true]) (ConstBool [false]).
    			// TODO: v = OpPhi (ConstBool [true]) (Arg <bool> {value})
    			if v.Op != OpPhi {
    				continue
    			}
    			if v.Args[0].Op != OpConstBool || v.Args[1].Op != OpConstBool {
    				continue
    			}
    			if v.Args[0].AuxInt == v.Args[1].AuxInt {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 11 16:34:30 UTC 2022
    - 8.1K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/trim.go

    		// account for the merge.
    		if ns > 1 {
    			for _, v := range s.Values {
    				if v.Op == OpPhi {
    					mergePhi(v, j, b)
    				}
    
    			}
    			// Remove the phi-ops from `b` if they were merged into the
    			// phi-ops of `s`.
    			k := 0
    			for _, v := range b.Values {
    				if v.Op == OpPhi {
    					if v.Uses == 0 {
    						v.resetArgs()
    						continue
    					}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 18 17:59:44 UTC 2022
    - 4.2K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/tighten.go

    	memState(f, startMem, endMem)
    
    	for _, b := range f.Blocks {
    		for _, v := range b.Values {
    			if v.Op.isLoweredGetClosurePtr() {
    				// Must stay in the entry block.
    				continue
    			}
    			switch v.Op {
    			case OpPhi, OpArg, OpArgIntReg, OpArgFloatReg, OpSelect0, OpSelect1, OpSelectN:
    				// Phis need to stay in their block.
    				// Arg must stay in the entry block.
    				// Tuple selectors must stay with the tuple generator.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 01:01:38 UTC 2023
    - 7.7K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/shortcircuit.go

    		if ctl.Op == OpNot {
    			swap = 1 ^ swap
    		}
    		ctl = ctl.Args[0]
    		nval++ // wrapper around control value
    	}
    	if ctl.Op != OpPhi || ctl.Block != b || ctl.Uses != 1 {
    		return false
    	}
    	nOtherPhi := 0
    	for _, w := range b.Values {
    		if w.Op == OpPhi && w != ctl {
    			nOtherPhi++
    		}
    	}
    	if nOtherPhi > 0 && len(b.Preds) != 2 {
    		// We rely on b having exactly two preds in shortcircuitPhiPlan
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Oct 03 17:47:02 UTC 2022
    - 12.6K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/branchelim_test.go

    					Valu("addr", OpAddr, boolType.PtrTo(), 0, nil, "sb"),
    					Valu("cond", OpLoad, boolType, 0, nil, "addr", "start"),
    					If("cond", "b2", "b3")),
    				Bloc("b2",
    					Goto("b3")),
    				Bloc("b3",
    					Valu("phi", OpPhi, intType, 0, nil, "const1", "const2"),
    					Valu("retstore", OpStore, types.TypeMem, 0, nil, "phi", "sb", "start"),
    					Exit("retstore")))
    
    			CheckFunc(fun.f)
    			branchelim(fun.f)
    			CheckFunc(fun.f)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Apr 24 15:51:15 UTC 2018
    - 5.2K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssa/schedule.go

    		// the calculated store chain is good only for this block.
    		for _, v := range b.Values {
    			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
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 08 15:53:17 UTC 2024
    - 16.4K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/ssa/fuse_branchredirect.go

    				for _, v := range b.Values {
    					if v.Op != OpPhi {
    						continue
    					}
    					b.removePhiArg(v, k)
    				}
    				// Fix up child to have one more predecessor.
    				child.Preds = append(child.Preds, Edge{p, pk.i})
    				ai := b.Succs[out].i
    				for _, v := range child.Values {
    					if v.Op != OpPhi {
    						continue
    					}
    					v.AddArg(v.Args[ai])
    				}
    				if b.Func.pass.debug > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 21:40:11 UTC 2023
    - 3.2K bytes
    - Viewed (0)
Back to top