Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 9 of 9 for canSSA (0.43 sec)

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

    	}
    	// Assume it is a register, return its spill slot, which needs to be live
    	nameOff := v.Aux.(*AuxNameOffset)
    	return nameOff.Name, nameOff.Offset
    }
    
    // CanSSA reports whether values of type t can be represented as a Value.
    func CanSSA(t *types.Type) bool {
    	types.CalcSize(t)
    	if t.Size() > int64(4*types.PtrSize) {
    		// 4*Widthptr is an arbitrary constant. We want it
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 03 16:40:22 UTC 2024
    - 16.7K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/_gen/generic.rules

    (StructSelect [3] (StructMake4 _ _ _ x)) => x
    
    (Load <t> _ _) && t.IsStruct() && t.NumFields() == 0 && CanSSA(t) =>
      (StructMake0)
    (Load <t> ptr mem) && t.IsStruct() && t.NumFields() == 1 && CanSSA(t) =>
      (StructMake1
        (Load <t.FieldType(0)> (OffPtr <t.FieldType(0).PtrTo()> [0] ptr) mem))
    (Load <t> ptr mem) && t.IsStruct() && t.NumFields() == 2 && CanSSA(t) =>
      (StructMake2
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 16 22:21:05 UTC 2024
    - 135.3K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssagen/ssa.go

    		if n.Class == ir.PPARAM {
    			if s.canSSA(n) {
    				v := s.newValue0A(ssa.OpArg, n.Type(), n)
    				s.vars[n] = v
    				s.addNamedValue(n, v) // This helps with debugging information, not needed for compilation itself.
    			} else { // address was taken AND/OR too large for SSA
    				paramAssignment := ssa.ParamAssignmentForArgName(s.f, n)
    				if len(paramAssignment.Registers) > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Jun 10 19:44:43 UTC 2024
    - 284.9K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/decompose.go

    	if t.NumElem() == 0 {
    		// TODO(khr): Not sure what to do here.  Probably nothing.
    		// Names for empty arrays aren't important.
    		return slots
    	}
    	if t.NumElem() != 1 {
    		// shouldn't get here due to CanSSA
    		f.Fatalf("array not of size 1")
    	}
    	elemName := f.SplitArray(name)
    	var keep []*Value
    	for _, v := range f.NamedValues[*name] {
    		if v.Op != OpArrayMake1 {
    			keep = append(keep, v)
    			continue
    		}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Aug 23 21:22:15 UTC 2022
    - 13.4K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/expand_calls.go

    			case OpClosureLECall, OpInterLECall, OpStaticLECall, OpTailLECall:
    				calls = append(calls, v)
    
    			case OpArg:
    				args = append(args, v)
    
    			case OpStore:
    				if a := v.Args[1]; a.Op == OpSelectN && !CanSSA(a.Type) {
    					if a.Uses > 1 {
    						panic(fmt.Errorf("Saw double use of wide SelectN %s operand of Store %s",
    							a.LongString(), v.LongString()))
    					}
    					x.wideSelects[a] = v
    				}
    
    			case OpSelectN:
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 28 05:13:40 UTC 2023
    - 31.9K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/walk/complit.go

    // walkCompLit walks a composite literal node:
    // OARRAYLIT, OSLICELIT, OMAPLIT, OSTRUCTLIT (all CompLitExpr), or OPTRLIT (AddrExpr).
    func walkCompLit(n ir.Node, init *ir.Nodes) ir.Node {
    	if isStaticCompositeLiteral(n) && !ssa.CanSSA(n.Type()) {
    		n := n.(*ir.CompLitExpr) // not OPTRLIT
    		// n can be directly represented in the read-only data section.
    		// Make direct reference to the static data. See issue 12841.
    		vstat := readonlystaticname(n.Type())
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Sep 08 19:03:54 UTC 2023
    - 19.5K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/func.go

    	nn.SetNonMergeable(true)
    	return nn
    }
    
    // IsMergeCandidate returns true if variable n could participate in
    // stack slot merging. For now we're restricting the set to things to
    // items larger than what CanSSA would allow (approximateky, we disallow things
    // marked as open defer slots so as to avoid complicating liveness
    // analysis.
    func IsMergeCandidate(n *ir.Name) bool {
    	if base.Debug.MergeLocals == 0 ||
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Jun 10 19:44:43 UTC 2024
    - 25.8K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/rewritegeneric.go

    	// match: (Load <t> _ _)
    	// cond: t.IsStruct() && t.NumFields() == 0 && CanSSA(t)
    	// result: (StructMake0)
    	for {
    		t := v.Type
    		if !(t.IsStruct() && t.NumFields() == 0 && CanSSA(t)) {
    			break
    		}
    		v.reset(OpStructMake0)
    		return true
    	}
    	// match: (Load <t> ptr mem)
    	// cond: t.IsStruct() && t.NumFields() == 1 && CanSSA(t)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 22 18:24:47 UTC 2024
    - 812.2K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/walk/order.go

    	// support that (see trybot failures on go.dev/cl/541715, PS1).
    	if ir.IsAddressable(n) {
    		if name, ok := ir.OuterValue(n).(*ir.Name); ok && name.Op() == ir.ONAME {
    			if name.Class == ir.PAUTO && !name.Addrtaken() && ssa.CanSSA(name.Type()) {
    				goto Copy
    			}
    		}
    
    		return n
    	}
    
    Copy:
    	return o.copyExpr(n)
    }
    
    // mapKeyTemp prepares n to be a key in a map runtime call and returns n.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Mar 08 02:00:33 UTC 2024
    - 42.7K bytes
    - Viewed (0)
Back to top