- Sort Score
- Result 10 results
- Languages All
Results 1 - 10 of 115 for Preds (0.04 sec)
-
src/cmd/compile/internal/ssa/trim.go
// order, in which the predecessors edges are merged here. p, i := b.Preds[0].b, b.Preds[0].i s, j := b.Succs[0].b, b.Succs[0].i ns := len(s.Preds) p.Succs[i] = Edge{s, j} s.Preds[j] = Edge{p, i} for _, e := range b.Preds[1:] { p, i := e.b, e.i p.Succs[i] = Edge{s, len(s.Preds)} s.Preds = append(s.Preds, Edge{p, i}) } // Attempt to preserve a statement boundary if bIsStmt {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 18 17:59:44 UTC 2022 - 4.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/fuse_branchredirect.go
continue } b.removePred(k) p.Succs[pk.i] = Edge{child, len(child.Preds)} // Fix up Phi value in b to have one less argument. 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 {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue May 16 21:40:11 UTC 2023 - 3.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/critical.go
// block, then we need to remove the // corresponding elements from the block // predecessors and phi args if reusedBlock { // Add p->d edge p.Succs[pi] = Edge{d, len(d.Preds)} d.Preds = append(d.Preds, Edge{p, pi}) // Remove p as a predecessor from b. b.removePred(i) // Update corresponding phi args b.removePhiArg(phi, i) // splitting occasionally leads to a phi having
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue May 16 21:40:11 UTC 2023 - 3.1K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/fuse.go
if bx == c { break } copyTo += len(bx.Values) } c.Values = t // replace b->c edge with preds(b) -> c c.predstorage[0] = Edge{} if len(b.Preds) > len(b.predstorage) { c.Preds = b.Preds } else { c.Preds = append(c.predstorage[:0], b.Preds...) } for i, e := range c.Preds { p := e.b p.Succs[e.i] = Edge{c, i} } f := b.Func if f.Entry == b { f.Entry = c }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Oct 31 20:45:54 UTC 2023 - 9K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/shortcircuit.go
// in which the outbound paths from b merge, // with no other preds joining them. // In these cases, we can reconstruct what the value // of any phi in b must be in the successor blocks. if len(t.Preds) == 1 && len(t.Succs) == 1 && len(u.Preds) == 1 && len(u.Succs) == 1 && t.Succs[0].b == u.Succs[0].b && len(t.Succs[0].b.Preds) == 2 { // p q // \ / // b // / \ // t u // \ /
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 03 17:47:02 UTC 2022 - 12.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/phiopt.go
for _, b := range f.Blocks { if len(b.Preds) != 2 || len(b.Values) == 0 { // TODO: handle more than 2 predecessors, e.g. a || b || c. continue } pb0, b0 := b, b.Preds[0].b for len(b0.Succs) == 1 && len(b0.Preds) == 1 { pb0, b0 = b0, b0.Preds[0].b } if b0.Kind != BlockIf { continue } pb1, b1 := b, b.Preds[1].b for len(b1.Succs) == 1 && len(b1.Preds) == 1 { pb1, b1 = b1, b1.Preds[0].b }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Apr 11 16:34:30 UTC 2022 - 8.1K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/block.go
// phi values by calling b.removePhiArg(v, i). func (b *Block) removePred(i int) { n := len(b.Preds) - 1 if i != n { e := b.Preds[n] b.Preds[i] = e // Update the other end of the edge we moved. e.b.Succs[e.i].i = i } b.Preds[n] = Edge{} b.Preds = b.Preds[:n] b.Func.invalidateCFG() } // removeSucc removes the ith output edge from b. // It is the responsibility of the caller to remove
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Wed May 15 15:44:14 UTC 2024 - 12.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/check.go
if b.Func != f { f.Fatalf("%s.Func=%s, want %s", b, b.Func.Name, f.Name) } for i, e := range b.Preds { if se := e.b.Succs[e.i]; se.b != b || se.i != i { f.Fatalf("block pred/succ not crosslinked correctly %d:%s %d:%s", i, b, se.i, se.b) } } for i, e := range b.Succs { if pe := e.b.Preds[e.i]; pe.b != b || pe.i != i { f.Fatalf("block succ/pred not crosslinked correctly %d:%s %d:%s", i, b, pe.i, pe.b) }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Apr 09 16:41:23 UTC 2024 - 17.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/flagalloc.go
b.Values = b.Values[:0] // The current live flag value (the pre-flagalloc copy). var flag *Value if len(b.Preds) > 0 { flag = end[b.Preds[0].b.ID] // Note: the following condition depends on the lack of critical edges. for _, e := range b.Preds[1:] { p := e.b if end[p.ID] != flag { f.Fatalf("live flag in %s's predecessors not consistent", b) } } }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 31 21:41:20 UTC 2022 - 6.7K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/branchelim.go
f.invalidateCFG() return true } // is this a BlockPlain with one predecessor? func isLeafPlain(b *Block) bool { return b.Kind == BlockPlain && len(b.Preds) == 1 } func clobberBlock(b *Block) { b.Values = nil b.Preds = nil b.Succs = nil b.Aux = nil b.ResetControls() b.Likely = BranchUnknown b.Kind = BlockInvalid }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Wed Nov 30 17:46:51 UTC 2022 - 12.7K bytes - Viewed (0)