Commit 4f5389c3 authored by ChrisALiles's avatar ChrisALiles Committed by Josh Bleecher Snyder

cmd/compile: move the SSA local type definitions to a single location

Fixes #20304

Change-Id: I52ee02d1602ed7fffc96b27fd60990203c771aaf
Reviewed-on: https://go-review.googlesource.com/94256
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
parent 0f2ef0ad
......@@ -24,31 +24,7 @@ var ssaConfig *ssa.Config
var ssaCaches []ssa.Cache
func initssaconfig() {
types_ := ssa.Types{
Bool: types.Types[TBOOL],
Int8: types.Types[TINT8],
Int16: types.Types[TINT16],
Int32: types.Types[TINT32],
Int64: types.Types[TINT64],
UInt8: types.Types[TUINT8],
UInt16: types.Types[TUINT16],
UInt32: types.Types[TUINT32],
UInt64: types.Types[TUINT64],
Float32: types.Types[TFLOAT32],
Float64: types.Types[TFLOAT64],
Int: types.Types[TINT],
UInt: types.Types[TUINT],
Uintptr: types.Types[TUINTPTR],
String: types.Types[TSTRING],
BytePtr: types.NewPtr(types.Types[TUINT8]),
Int32Ptr: types.NewPtr(types.Types[TINT32]),
UInt32Ptr: types.NewPtr(types.Types[TUINT32]),
IntPtr: types.NewPtr(types.Types[TINT]),
UintptrPtr: types.NewPtr(types.Types[TUINTPTR]),
Float32Ptr: types.NewPtr(types.Types[TFLOAT32]),
Float64Ptr: types.NewPtr(types.Types[TFLOAT64]),
BytePtrPtr: types.NewPtr(types.NewPtr(types.Types[TUINT8])),
}
types_ := ssa.NewTypes()
if thearch.SoftFloat {
softfloatInit()
......@@ -69,7 +45,7 @@ func initssaconfig() {
_ = types.NewPtr(types.Types[TINT64]) // *int64
_ = types.NewPtr(types.Errortype) // *error
types.NewPtrCacheEnabled = false
ssaConfig = ssa.NewConfig(thearch.LinkArch.Name, types_, Ctxt, Debug['N'] == 0)
ssaConfig = ssa.NewConfig(thearch.LinkArch.Name, *types_, Ctxt, Debug['N'] == 0)
if thearch.LinkArch.Name == "386" {
ssaConfig.Set387(thearch.Use387)
}
......
......@@ -73,6 +73,39 @@ type Types struct {
BytePtrPtr *types.Type
}
// Instantiate the SSA type pointers.
func NewTypes() *Types {
t := new(Types)
t.SetTypPtrs()
return t
}
// Populate the SSA type pointers.
func (t *Types) SetTypPtrs() {
t.Bool = types.Types[types.TBOOL]
t.Int8 = types.Types[types.TINT8]
t.Int16 = types.Types[types.TINT16]
t.Int32 = types.Types[types.TINT32]
t.Int64 = types.Types[types.TINT64]
t.UInt8 = types.Types[types.TUINT8]
t.UInt16 = types.Types[types.TUINT16]
t.UInt32 = types.Types[types.TUINT32]
t.UInt64 = types.Types[types.TUINT64]
t.Float32 = types.Types[types.TFLOAT32]
t.Float64 = types.Types[types.TFLOAT64]
t.Int = types.Types[types.TINT]
t.Uintptr = types.Types[types.TUINTPTR]
t.String = types.Types[types.TSTRING]
t.BytePtr = types.NewPtr(types.Types[types.TUINT8])
t.Int32Ptr = types.NewPtr(types.Types[types.TINT32])
t.UInt32Ptr = types.NewPtr(types.Types[types.TUINT32])
t.IntPtr = types.NewPtr(types.Types[types.TINT])
t.UintptrPtr = types.NewPtr(types.Types[types.TUINTPTR])
t.Float32Ptr = types.NewPtr(types.Types[types.TFLOAT32])
t.Float64Ptr = types.NewPtr(types.Types[types.TFLOAT64])
t.BytePtrPtr = types.NewPtr(types.NewPtr(types.Types[types.TUINT8]))
}
type Logger interface {
// Logf logs a message from the compiler.
Logf(string, ...interface{})
......
......@@ -184,31 +184,7 @@ func init() {
t.Align = uint8(typ.width)
types.Types[typ.et] = t
}
dummyTypes = Types{
Bool: types.Types[types.TBOOL],
Int8: types.Types[types.TINT8],
Int16: types.Types[types.TINT16],
Int32: types.Types[types.TINT32],
Int64: types.Types[types.TINT64],
UInt8: types.Types[types.TUINT8],
UInt16: types.Types[types.TUINT16],
UInt32: types.Types[types.TUINT32],
UInt64: types.Types[types.TUINT64],
Float32: types.Types[types.TFLOAT32],
Float64: types.Types[types.TFLOAT64],
Int: types.Types[types.TINT],
Uintptr: types.Types[types.TUINTPTR],
String: types.Types[types.TSTRING],
BytePtr: types.NewPtr(types.Types[types.TUINT8]),
Int32Ptr: types.NewPtr(types.Types[types.TINT32]),
UInt32Ptr: types.NewPtr(types.Types[types.TUINT32]),
IntPtr: types.NewPtr(types.Types[types.TINT]),
UintptrPtr: types.NewPtr(types.Types[types.TUINTPTR]),
Float32Ptr: types.NewPtr(types.Types[types.TFLOAT32]),
Float64Ptr: types.NewPtr(types.Types[types.TFLOAT64]),
BytePtrPtr: types.NewPtr(types.NewPtr(types.Types[types.TUINT8])),
}
dummyTypes.SetTypPtrs()
}
func (d DummyFrontend) DerefItab(sym *obj.LSym, off int64) *obj.LSym { return nil }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment