mirror of
https://github.com/golang/go
synced 2024-10-05 22:21:23 -06:00
Revert "[dev.ssa] cmd/compile: don't Compile if Unimplemented"
This reverts commit 766bcc92a5
.
Change-Id: I55413c1aa80d82c856a3ea89b4ffccf80fb58013
Reviewed-on: https://go-review.googlesource.com/12361
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
67fdb0de86
commit
983bc8d1a2
@ -108,18 +108,17 @@ func buildssa(fn *Node) (ssafn *ssa.Func, usessa bool) {
|
|||||||
// Link up variable uses to variable definitions
|
// Link up variable uses to variable definitions
|
||||||
s.linkForwardReferences()
|
s.linkForwardReferences()
|
||||||
|
|
||||||
|
// Main call to ssa package to compile function
|
||||||
|
ssa.Compile(s.f)
|
||||||
|
|
||||||
// Calculate stats about what percentage of functions SSA handles.
|
// Calculate stats about what percentage of functions SSA handles.
|
||||||
if false {
|
if false {
|
||||||
defer func() { fmt.Printf("SSA implemented: %t\n", !e.unimplemented) }()
|
fmt.Printf("SSA implemented: %t\n", !e.unimplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.unimplemented {
|
if e.unimplemented {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main call to ssa package to compile function.
|
|
||||||
ssa.Compile(s.f)
|
|
||||||
|
|
||||||
return s.f, usessa // TODO: return s.f, true once runtime support is in (gc maps, write barriers, etc.)
|
return s.f, usessa // TODO: return s.f, true once runtime support is in (gc maps, write barriers, etc.)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func printFunc(f *Func) {
|
func printFunc(f *Func) {
|
||||||
@ -69,22 +68,16 @@ func fprintFunc(w io.Writer, f *Func) {
|
|||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
if m == n {
|
if m == n {
|
||||||
fmt.Fprintln(os.Stderr, "dependency cycle in block", b)
|
fmt.Fprintln(w, "dependency cycle!")
|
||||||
for _, v := range b.Values {
|
for _, v := range b.Values {
|
||||||
if printed[v.ID] {
|
if printed[v.ID] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, " %v\n", v.LongString())
|
fmt.Fprint(w, " ")
|
||||||
|
fmt.Fprintln(w, v.LongString())
|
||||||
printed[v.ID] = true
|
printed[v.ID] = true
|
||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
// Things are going to go very badly from here;
|
|
||||||
// one of the optimization passes is likely to hang.
|
|
||||||
// Frustratingly, panics here get swallowed by fmt,
|
|
||||||
// and just we end up here again if we call Fatalf.
|
|
||||||
// Use our last resort.
|
|
||||||
os.Exit(1)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user