mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 07:04:04 -05:00
Keep go asm in UPPERCASE. See #2620
This commit is contained in:
@@ -31,21 +31,15 @@ import { ClangParser } from './argument-parsers';
|
||||
|
||||
// Each arch has a list of jump instructions in
|
||||
// Go source src/cmd/asm/internal/arch.
|
||||
const jumpPrefixes = [
|
||||
'j',
|
||||
'b',
|
||||
|
||||
// arm
|
||||
'cb',
|
||||
'tb',
|
||||
|
||||
// s390x
|
||||
'cmpb',
|
||||
'cmpub',
|
||||
];
|
||||
// x86 -> j, b
|
||||
// arm -> cb, tb
|
||||
// s390x -> cmpb, cmpub
|
||||
const jumpRe = /^(j|b|cb|tb|cmpb|cmpub).*/i;
|
||||
|
||||
export class GolangCompiler extends BaseCompiler {
|
||||
static get key() { return 'golang'; }
|
||||
static get key() {
|
||||
return 'golang';
|
||||
}
|
||||
|
||||
convertNewGoL(code) {
|
||||
const re = /^\s+(0[Xx]?[\dA-Za-z]+)?\s?(\d+)\s*\(([^:]+):(\d+)\)\s*([A-Z]+)(.*)/;
|
||||
@@ -129,7 +123,6 @@ export class GolangCompiler extends BaseCompiler {
|
||||
prevLine = lineMatch;
|
||||
}
|
||||
|
||||
ins = ins.toLowerCase();
|
||||
args = this.replaceJump(func, funcCollisions[func], ins, args, usedLabels);
|
||||
res.push(`\t${ins}${args}`);
|
||||
return res;
|
||||
@@ -155,7 +148,7 @@ export class GolangCompiler extends BaseCompiler {
|
||||
}
|
||||
|
||||
// Check instruction has a jump prefix
|
||||
if (_.any(jumpPrefixes, prefix => ins.startsWith(prefix))) {
|
||||
if (ins.match(jumpRe)) {
|
||||
let label = `${func}_pc${match[2]}`;
|
||||
if (collisions > 0) {
|
||||
label += `_${collisions}`;
|
||||
|
||||
18
test/golang/bug-901.output.asm
generated
18
test/golang/bug-901.output.asm
generated
@@ -1,14 +1,14 @@
|
||||
.file 1 "test.go"
|
||||
.loc 1 3 0
|
||||
text "".Fun(SB), NOSPLIT, $0-0
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
xorl AX, AX
|
||||
TEXT "".Fun(SB), NOSPLIT, $0-0
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
XORL AX, AX
|
||||
.loc 1 4 0
|
||||
jmp Fun_pc7
|
||||
JMP Fun_pc7
|
||||
Fun_pc4:
|
||||
incq AX
|
||||
INCQ AX
|
||||
Fun_pc7:
|
||||
cmpq AX, $10
|
||||
jlt Fun_pc4
|
||||
ret
|
||||
CMPQ AX, $10
|
||||
JLT Fun_pc4
|
||||
RET
|
||||
320
test/golang/labels.output.asm
generated
320
test/golang/labels.output.asm
generated
@@ -1,201 +1,201 @@
|
||||
Closures_pc0:
|
||||
.file 1 "labels.go"
|
||||
.loc 1 5 0
|
||||
text "".Closures(SB), $24-0
|
||||
movq (TLS), CX
|
||||
cmpq SP, 16(CX)
|
||||
jls Closures_pc75
|
||||
subq $24, SP
|
||||
movq BP, 16(SP)
|
||||
leaq 16(SP), BP
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $3, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
|
||||
TEXT "".Closures(SB), $24-0
|
||||
MOVQ (TLS), CX
|
||||
CMPQ SP, 16(CX)
|
||||
JLS Closures_pc75
|
||||
SUBQ $24, SP
|
||||
MOVQ BP, 16(SP)
|
||||
LEAQ 16(SP), BP
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $3, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
|
||||
.loc 1 6 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
cmpq "".N(SB), $1
|
||||
jne Closures_pc49
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CMPQ "".N(SB), $1
|
||||
JNE Closures_pc49
|
||||
Closures_pc39:
|
||||
pcdata $2, $-2
|
||||
pcdata $0, $-2
|
||||
movq 16(SP), BP
|
||||
addq $24, SP
|
||||
ret
|
||||
PCDATA $2, $-2
|
||||
PCDATA $0, $-2
|
||||
MOVQ 16(SP), BP
|
||||
ADDQ $24, SP
|
||||
RET
|
||||
Closures_pc49:
|
||||
.loc 1 7 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
movl $0, (SP)
|
||||
pcdata $2, $1
|
||||
leaq "".Closures.func1·f(SB), AX
|
||||
pcdata $2, $0
|
||||
movq AX, 8(SP)
|
||||
call runtime.newproc(SB)
|
||||
jmp Closures_pc39
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
MOVL $0, (SP)
|
||||
PCDATA $2, $1
|
||||
LEAQ "".Closures.func1·f(SB), AX
|
||||
PCDATA $2, $0
|
||||
MOVQ AX, 8(SP)
|
||||
CALL runtime.newproc(SB)
|
||||
JMP Closures_pc39
|
||||
Closures_pc75:
|
||||
nop
|
||||
NOP
|
||||
.loc 1 5 0
|
||||
pcdata $0, $-1
|
||||
pcdata $2, $-1
|
||||
call runtime.morestack_noctxt(SB)
|
||||
jmp Closures_pc0
|
||||
PCDATA $0, $-1
|
||||
PCDATA $2, $-1
|
||||
CALL runtime.morestack_noctxt(SB)
|
||||
JMP Closures_pc0
|
||||
Closures_func1_1_pc0:
|
||||
.loc 1 21 0
|
||||
text "".Closures_func1_1(SB), $16-0
|
||||
movq (TLS), CX
|
||||
cmpq SP, 16(CX)
|
||||
jls Closures_func1_1_pc74
|
||||
subq $16, SP
|
||||
movq BP, 8(SP)
|
||||
leaq 8(SP), BP
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
TEXT "".Closures_func1_1(SB), $16-0
|
||||
MOVQ (TLS), CX
|
||||
CMPQ SP, 16(CX)
|
||||
JLS Closures_func1_1_pc74
|
||||
SUBQ $16, SP
|
||||
MOVQ BP, 8(SP)
|
||||
LEAQ 8(SP), BP
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
.loc 1 22 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
cmpq "".N(SB), $1
|
||||
jne Closures_func1_1_pc49
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CMPQ "".N(SB), $1
|
||||
JNE Closures_func1_1_pc49
|
||||
Closures_func1_1_pc39:
|
||||
pcdata $2, $-2
|
||||
pcdata $0, $-2
|
||||
movq 8(SP), BP
|
||||
addq $16, SP
|
||||
ret
|
||||
PCDATA $2, $-2
|
||||
PCDATA $0, $-2
|
||||
MOVQ 8(SP), BP
|
||||
ADDQ $16, SP
|
||||
RET
|
||||
Closures_func1_1_pc49:
|
||||
.loc 1 23 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
call runtime.printlock(SB)
|
||||
movq $1, (SP)
|
||||
call runtime.printint(SB)
|
||||
call runtime.printunlock(SB)
|
||||
jmp Closures_func1_1_pc39
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CALL runtime.printlock(SB)
|
||||
MOVQ $1, (SP)
|
||||
CALL runtime.printint(SB)
|
||||
CALL runtime.printunlock(SB)
|
||||
JMP Closures_func1_1_pc39
|
||||
Closures_func1_1_pc74:
|
||||
nop
|
||||
NOP
|
||||
.loc 1 21 0
|
||||
pcdata $0, $-1
|
||||
pcdata $2, $-1
|
||||
call runtime.morestack_noctxt(SB)
|
||||
jmp Closures_func1_1_pc0
|
||||
PCDATA $0, $-1
|
||||
PCDATA $2, $-1
|
||||
CALL runtime.morestack_noctxt(SB)
|
||||
JMP Closures_func1_1_pc0
|
||||
αβ_pc0:
|
||||
.loc 1 27 0
|
||||
text "".αβ(SB), $16-0
|
||||
movq (TLS), CX
|
||||
cmpq SP, 16(CX)
|
||||
jls αβ_pc74
|
||||
subq $16, SP
|
||||
movq BP, 8(SP)
|
||||
leaq 8(SP), BP
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
TEXT "".αβ(SB), $16-0
|
||||
MOVQ (TLS), CX
|
||||
CMPQ SP, 16(CX)
|
||||
JLS αβ_pc74
|
||||
SUBQ $16, SP
|
||||
MOVQ BP, 8(SP)
|
||||
LEAQ 8(SP), BP
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
.loc 1 28 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
cmpq "".N(SB), $1
|
||||
jne αβ_pc49
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CMPQ "".N(SB), $1
|
||||
JNE αβ_pc49
|
||||
αβ_pc39:
|
||||
pcdata $2, $-2
|
||||
pcdata $0, $-2
|
||||
movq 8(SP), BP
|
||||
addq $16, SP
|
||||
ret
|
||||
PCDATA $2, $-2
|
||||
PCDATA $0, $-2
|
||||
MOVQ 8(SP), BP
|
||||
ADDQ $16, SP
|
||||
RET
|
||||
αβ_pc49:
|
||||
.loc 1 29 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
call runtime.printlock(SB)
|
||||
movq $1, (SP)
|
||||
call runtime.printint(SB)
|
||||
call runtime.printunlock(SB)
|
||||
jmp αβ_pc39
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CALL runtime.printlock(SB)
|
||||
MOVQ $1, (SP)
|
||||
CALL runtime.printint(SB)
|
||||
CALL runtime.printunlock(SB)
|
||||
JMP αβ_pc39
|
||||
αβ_pc74:
|
||||
nop
|
||||
NOP
|
||||
.loc 1 27 0
|
||||
pcdata $0, $-1
|
||||
pcdata $2, $-1
|
||||
call runtime.morestack_noctxt(SB)
|
||||
jmp αβ_pc0
|
||||
PCDATA $0, $-1
|
||||
PCDATA $2, $-1
|
||||
CALL runtime.morestack_noctxt(SB)
|
||||
JMP αβ_pc0
|
||||
Closures_func1_1_pc0_1:
|
||||
.loc 1 8 0
|
||||
text "".Closures.func1.1(SB), $16-0
|
||||
movq (TLS), CX
|
||||
cmpq SP, 16(CX)
|
||||
jls Closures_func1_1_pc74_1
|
||||
subq $16, SP
|
||||
movq BP, 8(SP)
|
||||
leaq 8(SP), BP
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
TEXT "".Closures.func1.1(SB), $16-0
|
||||
MOVQ (TLS), CX
|
||||
CMPQ SP, 16(CX)
|
||||
JLS Closures_func1_1_pc74_1
|
||||
SUBQ $16, SP
|
||||
MOVQ BP, 8(SP)
|
||||
LEAQ 8(SP), BP
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
.loc 1 9 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
cmpq "".N(SB), $4
|
||||
jne Closures_func1_1_pc49_1
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CMPQ "".N(SB), $4
|
||||
JNE Closures_func1_1_pc49_1
|
||||
Closures_func1_1_pc39_1:
|
||||
pcdata $2, $-2
|
||||
pcdata $0, $-2
|
||||
movq 8(SP), BP
|
||||
addq $16, SP
|
||||
ret
|
||||
PCDATA $2, $-2
|
||||
PCDATA $0, $-2
|
||||
MOVQ 8(SP), BP
|
||||
ADDQ $16, SP
|
||||
RET
|
||||
Closures_func1_1_pc49_1:
|
||||
.loc 1 10 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
call runtime.printlock(SB)
|
||||
movq $1, (SP)
|
||||
call runtime.printint(SB)
|
||||
call runtime.printunlock(SB)
|
||||
jmp Closures_func1_1_pc39_1
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CALL runtime.printlock(SB)
|
||||
MOVQ $1, (SP)
|
||||
CALL runtime.printint(SB)
|
||||
CALL runtime.printunlock(SB)
|
||||
JMP Closures_func1_1_pc39_1
|
||||
Closures_func1_1_pc74_1:
|
||||
nop
|
||||
NOP
|
||||
.loc 1 8 0
|
||||
pcdata $0, $-1
|
||||
pcdata $2, $-1
|
||||
call runtime.morestack_noctxt(SB)
|
||||
jmp Closures_func1_1_pc0_1
|
||||
PCDATA $0, $-1
|
||||
PCDATA $2, $-1
|
||||
CALL runtime.morestack_noctxt(SB)
|
||||
JMP Closures_func1_1_pc0_1
|
||||
Closures_func1_pc0:
|
||||
.loc 1 7 0
|
||||
text "".Closures.func1(SB), $16-0
|
||||
movq (TLS), CX
|
||||
cmpq SP, 16(CX)
|
||||
jls Closures_func1_pc83
|
||||
subq $16, SP
|
||||
movq BP, 8(SP)
|
||||
leaq 8(SP), BP
|
||||
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
TEXT "".Closures.func1(SB), $16-0
|
||||
MOVQ (TLS), CX
|
||||
CMPQ SP, 16(CX)
|
||||
JLS Closures_func1_pc83
|
||||
SUBQ $16, SP
|
||||
MOVQ BP, 8(SP)
|
||||
LEAQ 8(SP), BP
|
||||
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
|
||||
.loc 1 14 0
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
movq "".N(SB), AX
|
||||
cmpq AX, $3
|
||||
jeq Closures_func1_pc48
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
MOVQ "".N(SB), AX
|
||||
CMPQ AX, $3
|
||||
JEQ Closures_func1_pc48
|
||||
.loc 1 15 0
|
||||
cmpq AX, $4
|
||||
jne Closures_func1_pc58
|
||||
CMPQ AX, $4
|
||||
JNE Closures_func1_pc58
|
||||
Closures_func1_pc48:
|
||||
pcdata $2, $-2
|
||||
pcdata $0, $-2
|
||||
movq 8(SP), BP
|
||||
addq $16, SP
|
||||
ret
|
||||
PCDATA $2, $-2
|
||||
PCDATA $0, $-2
|
||||
MOVQ 8(SP), BP
|
||||
ADDQ $16, SP
|
||||
RET
|
||||
Closures_func1_pc58:
|
||||
pcdata $2, $0
|
||||
pcdata $0, $0
|
||||
call runtime.printlock(SB)
|
||||
movq $1, (SP)
|
||||
call runtime.printint(SB)
|
||||
call runtime.printunlock(SB)
|
||||
jmp Closures_func1_pc48
|
||||
PCDATA $2, $0
|
||||
PCDATA $0, $0
|
||||
CALL runtime.printlock(SB)
|
||||
MOVQ $1, (SP)
|
||||
CALL runtime.printint(SB)
|
||||
CALL runtime.printunlock(SB)
|
||||
JMP Closures_func1_pc48
|
||||
Closures_func1_pc83:
|
||||
nop
|
||||
NOP
|
||||
.loc 1 7 0
|
||||
pcdata $0, $-1
|
||||
pcdata $2, $-1
|
||||
call runtime.morestack_noctxt(SB)
|
||||
jmp Closures_func1_pc0
|
||||
PCDATA $0, $-1
|
||||
PCDATA $2, $-1
|
||||
CALL runtime.morestack_noctxt(SB)
|
||||
JMP Closures_func1_pc0
|
||||
|
||||
Reference in New Issue
Block a user