From 4aa4d613a10bce87231c0c670e3871dbf527bbc7 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Thu, 3 Jul 2025 16:46:56 +0200 Subject: [PATCH] Removed duplicate debug code --- src/compiler/showSSA.go | 5 +---- src/ssa/BinaryOp.go | 8 ++++++-- src/ssa/Bytes.go | 2 +- src/ssa/Call.go | 36 ++++++++++++++++-------------------- src/ssa/Function.go | 2 +- src/ssa/Int.go | 2 +- src/ssa/Parameter.go | 2 +- src/ssa/Return.go | 27 ++++++++------------------- src/ssa/Struct.go | 25 ++++++++----------------- src/ssa/StructField.go | 8 ++++++-- src/ssa/Syscall.go | 24 ++++++++---------------- src/ssa/Value.go | 2 +- 12 files changed, 58 insertions(+), 85 deletions(-) diff --git a/src/compiler/showSSA.go b/src/compiler/showSSA.go index f425215..b73246e 100644 --- a/src/compiler/showSSA.go +++ b/src/compiler/showSSA.go @@ -13,12 +13,9 @@ func showSSA(root *core.Function) { ansi.Yellow.Println(f.UniqueName + ":") for _, block := range f.Blocks { - // ansi.Dim.Printf("| %-3s | %-30s | %-30s | %-4s |\n", "ID", "Raw", "Type", "Uses") - // ansi.Dim.Printf("| %s | %s | %s | %s |\n", strings.Repeat("-", 3), strings.Repeat("-", 30), strings.Repeat("-", 30), strings.Repeat("-", 4)) - for i, instr := range block.Instructions { ansi.Dim.Printf("%%%-1d = ", i) - fmt.Printf("%-30s ", instr.Debug()) + fmt.Printf("%-30s ", instr.Debug(false)) ansi.Dim.Printf(" %-30s", instr.Type().Name()) fmt.Println() } diff --git a/src/ssa/BinaryOp.go b/src/ssa/BinaryOp.go index d854d5d..039b2e7 100644 --- a/src/ssa/BinaryOp.go +++ b/src/ssa/BinaryOp.go @@ -43,12 +43,16 @@ func (v *BinaryOp) IsConst() bool { return true } -func (v *BinaryOp) Debug() string { +func (v *BinaryOp) Debug(expand bool) string { + if expand { + return fmt.Sprintf("%s %s %s", v.Left, expression.Operators[v.Op].Symbol, v.Right) + } + return fmt.Sprintf("%%%d %s %%%d", v.Left.ID(), expression.Operators[v.Op].Symbol, v.Right.ID()) } func (v *BinaryOp) String() string { - return fmt.Sprintf("%s %s %s", v.Left, expression.Operators[v.Op].Symbol, v.Right) + return v.Debug(true) } func (v *BinaryOp) Type() types.Type { diff --git a/src/ssa/Bytes.go b/src/ssa/Bytes.go index f7e158e..0215c94 100644 --- a/src/ssa/Bytes.go +++ b/src/ssa/Bytes.go @@ -32,7 +32,7 @@ func (v *Bytes) IsConst() bool { return true } -func (v *Bytes) Debug() string { +func (v *Bytes) Debug(expand bool) string { return v.String() } diff --git a/src/ssa/Call.go b/src/ssa/Call.go index 844f34c..a1629f0 100644 --- a/src/ssa/Call.go +++ b/src/ssa/Call.go @@ -28,16 +28,26 @@ func (v *Call) IsConst() bool { return false } -func (v *Call) Debug() string { +func (v *Call) Debug(expand bool) string { tmp := strings.Builder{} - tmp.WriteString("%") - tmp.WriteString(strconv.Itoa(v.Arguments[0].ID())) + + if expand { + tmp.WriteString(v.Arguments[0].String()) + } else { + tmp.WriteString("%") + tmp.WriteString(strconv.Itoa(v.Arguments[0].ID())) + } + tmp.WriteString("(") args := v.Arguments[1:] for i, arg := range args { - tmp.WriteString("%") - tmp.WriteString(strconv.Itoa(arg.ID())) + if expand { + tmp.WriteString(arg.String()) + } else { + tmp.WriteString("%") + tmp.WriteString(strconv.Itoa(arg.ID())) + } if i != len(args)-1 { tmp.WriteString(", ") @@ -49,21 +59,7 @@ func (v *Call) Debug() string { } func (v *Call) String() string { - tmp := strings.Builder{} - tmp.WriteString(v.Arguments[0].String()) - tmp.WriteString("(") - args := v.Arguments[1:] - - for i, arg := range args { - tmp.WriteString(arg.String()) - - if i != len(args)-1 { - tmp.WriteString(", ") - } - } - - tmp.WriteString(")") - return tmp.String() + return v.Debug(true) } func (v *Call) Type() types.Type { diff --git a/src/ssa/Function.go b/src/ssa/Function.go index 874b95e..513f08b 100644 --- a/src/ssa/Function.go +++ b/src/ssa/Function.go @@ -29,7 +29,7 @@ func (v *Function) IsConst() bool { return true } -func (v *Function) Debug() string { +func (v *Function) Debug(expand bool) string { return v.String() } diff --git a/src/ssa/Int.go b/src/ssa/Int.go index b5a0a1a..e07603c 100644 --- a/src/ssa/Int.go +++ b/src/ssa/Int.go @@ -31,7 +31,7 @@ func (v *Int) IsConst() bool { return true } -func (v *Int) Debug() string { +func (v *Int) Debug(expand bool) string { return v.String() } diff --git a/src/ssa/Parameter.go b/src/ssa/Parameter.go index d813d4b..63f408d 100644 --- a/src/ssa/Parameter.go +++ b/src/ssa/Parameter.go @@ -33,7 +33,7 @@ func (v *Parameter) IsConst() bool { return true } -func (v *Parameter) Debug() string { +func (v *Parameter) Debug(expand bool) string { return v.String() } diff --git a/src/ssa/Return.go b/src/ssa/Return.go index 70cce14..7735165 100644 --- a/src/ssa/Return.go +++ b/src/ssa/Return.go @@ -38,7 +38,7 @@ func (v *Return) IsConst() bool { return false } -func (v *Return) Debug() string { +func (v *Return) Debug(expand bool) string { if len(v.Arguments) == 0 { return "return" } @@ -47,8 +47,12 @@ func (v *Return) Debug() string { tmp.WriteString("return ") for i, arg := range v.Arguments { - tmp.WriteString("%") - tmp.WriteString(strconv.Itoa(arg.ID())) + if expand { + tmp.WriteString(arg.String()) + } else { + tmp.WriteString("%") + tmp.WriteString(strconv.Itoa(arg.ID())) + } if i != len(v.Arguments)-1 { tmp.WriteString(", ") @@ -59,22 +63,7 @@ func (v *Return) Debug() string { } func (v *Return) String() string { - if len(v.Arguments) == 0 { - return "return" - } - - tmp := strings.Builder{} - tmp.WriteString("return ") - - for i, arg := range v.Arguments { - tmp.WriteString(arg.String()) - - if i != len(v.Arguments)-1 { - tmp.WriteString(", ") - } - } - - return tmp.String() + return v.Debug(true) } func (v *Return) Type() types.Type { diff --git a/src/ssa/Struct.go b/src/ssa/Struct.go index f333c5e..d749d43 100644 --- a/src/ssa/Struct.go +++ b/src/ssa/Struct.go @@ -29,14 +29,18 @@ func (v *Struct) IsConst() bool { return true } -func (v *Struct) Debug() string { +func (v *Struct) Debug(expand bool) string { tmp := strings.Builder{} tmp.WriteString(v.Typ.Name()) tmp.WriteString("{") for i, arg := range v.Arguments { - tmp.WriteString("%") - tmp.WriteString(strconv.Itoa(arg.ID())) + if expand { + tmp.WriteString(arg.String()) + } else { + tmp.WriteString("%") + tmp.WriteString(strconv.Itoa(arg.ID())) + } if i != len(v.Arguments)-1 { tmp.WriteString(", ") @@ -48,20 +52,7 @@ func (v *Struct) Debug() string { } func (v *Struct) String() string { - tmp := strings.Builder{} - tmp.WriteString(v.Typ.Name()) - tmp.WriteString("{") - - for i, arg := range v.Arguments { - tmp.WriteString(arg.String()) - - if i != len(v.Arguments)-1 { - tmp.WriteString(", ") - } - } - - tmp.WriteString("}") - return tmp.String() + return v.Debug(false) } func (v *Struct) Type() types.Type { diff --git a/src/ssa/StructField.go b/src/ssa/StructField.go index bc93946..279d830 100644 --- a/src/ssa/StructField.go +++ b/src/ssa/StructField.go @@ -32,12 +32,16 @@ func (v *StructField) IsConst() bool { return true } -func (v *StructField) Debug() string { +func (v *StructField) Debug(expand bool) string { + if expand { + return fmt.Sprintf("%s.%s", v.Struct, v.Field) + } + return fmt.Sprintf("%%%d.%s", v.Struct.ID(), v.Field) } func (v *StructField) String() string { - return fmt.Sprintf("%s.%s", v.Struct, v.Field) + return v.Debug(true) } func (v *StructField) Type() types.Type { diff --git a/src/ssa/Syscall.go b/src/ssa/Syscall.go index 0faebe4..cdd87b0 100644 --- a/src/ssa/Syscall.go +++ b/src/ssa/Syscall.go @@ -28,13 +28,17 @@ func (v *Syscall) IsConst() bool { return false } -func (v *Syscall) Debug() string { +func (v *Syscall) Debug(expand bool) string { tmp := strings.Builder{} tmp.WriteString("syscall(") for i, arg := range v.Arguments { - tmp.WriteString("%") - tmp.WriteString(strconv.Itoa(arg.ID())) + if expand { + tmp.WriteString(arg.String()) + } else { + tmp.WriteString("%") + tmp.WriteString(strconv.Itoa(arg.ID())) + } if i != len(v.Arguments)-1 { tmp.WriteString(", ") @@ -46,19 +50,7 @@ func (v *Syscall) Debug() string { } func (v *Syscall) String() string { - tmp := strings.Builder{} - tmp.WriteString("syscall(") - - for i, arg := range v.Arguments { - tmp.WriteString(arg.String()) - - if i != len(v.Arguments)-1 { - tmp.WriteString(", ") - } - } - - tmp.WriteString(")") - return tmp.String() + return v.Debug(true) } func (v *Syscall) Type() types.Type { diff --git a/src/ssa/Value.go b/src/ssa/Value.go index 4cc1425..c839f01 100644 --- a/src/ssa/Value.go +++ b/src/ssa/Value.go @@ -7,7 +7,7 @@ import ( type Value interface { // Essentials - Debug() string + Debug(bool) string ID() int IsConst() bool SetID(int)