[gogc] 2 new revisions pushed by bytbox on 2010-08-18 00:38 GMT

0 views
Skip to first unread message

go...@googlecode.com

unread,
Aug 17, 2010, 11:03:46 PM8/17/10
to go...@googlegroups.com
2 new revisions:

Revision: a2d348b826
Author: Andreas Unterweger <and...@gmx.at>
Date: Sun Jun 20 12:27:03 2010
Log: codegen.go: Use intermediate register when dereferring string
pointers...
http://code.google.com/p/gogc/source/detail?r=a2d348b826

Revision: 35d43b50df
Author: Andreas Unterweger <and...@gmx.at>
Date: Sun Jun 20 23:14:45 2010
Log: gen-expr.go: Corrected borked deref. logic in comparisons - ./6.out
-h...
http://code.google.com/p/gogc/source/detail?r=35d43b50df

==============================================================================
Revision: a2d348b826
Author: Andreas Unterweger <and...@gmx.at>
Date: Sun Jun 20 12:27:03 2010
Log: codegen.go: Use intermediate register when dereferring string pointers
in order to maintain address to derefer (previously broken)
http://code.google.com/p/gogc/source/detail?r=a2d348b826

Modified:
/src/_gogo_.sog
/src/codegen.go
/testing/checksums
/testing/results/_gogo_.sog

=======================================
--- /src/_gogo_.sog Sun Jun 20 06:31:21 2010
+++ /src/_gogo_.sog Sun Jun 20 12:27:03 2010
@@ -877,172 +877,168 @@
//--- String buffer start ('') at libgogo/item.go:75:32
DATA data+2200(SB)/1, $0
//--- String buffer end at libgogo/item.go:75:32
-//--- String buffer start ('#') at libgogo/libgogo.go:25:26
-DATA data+6312(SB)/1, $35
-DATA data+6313(SB)/1, $0
-//--- String buffer end at libgogo/libgogo.go:25:26
-//--- String buffer start ('/proc/self/cmdline') at
libgogo/libgogo.go:27:39
-DATA data+6336(SB)/1, $47
-DATA data+6337(SB)/1, $112
-DATA data+6338(SB)/1, $114
-DATA data+6339(SB)/1, $111
-DATA data+6340(SB)/1, $99
-DATA data+6341(SB)/1, $47
-DATA data+6342(SB)/1, $115
-DATA data+6343(SB)/1, $101
-DATA data+6344(SB)/1, $108
-DATA data+6345(SB)/1, $102
-DATA data+6346(SB)/1, $47
-DATA data+6347(SB)/1, $99
-DATA data+6348(SB)/1, $109
-DATA data+6349(SB)/1, $100
-DATA data+6350(SB)/1, $108
-DATA data+6351(SB)/1, $105
-DATA data+6352(SB)/1, $110
-DATA data+6353(SB)/1, $101
-DATA data+6354(SB)/1, $0
-//--- String buffer end at libgogo/libgogo.go:27:39
-//--- String buffer start ('Error opening /proc/self/cmdline. Currently
GoGo is only supported on systems with /proc enabled.') at
libgogo/libgogo.go:29:118
-DATA data+6376(SB)/1, $69
-DATA data+6377(SB)/1, $114
-DATA data+6378(SB)/1, $114
-DATA data+6379(SB)/1, $111
-DATA data+6380(SB)/1, $114
-DATA data+6381(SB)/1, $32
-DATA data+6382(SB)/1, $111
-DATA data+6383(SB)/1, $112
-DATA data+6384(SB)/1, $101
-DATA data+6385(SB)/1, $110
-DATA data+6386(SB)/1, $105
-DATA data+6387(SB)/1, $110
-DATA data+6388(SB)/1, $103
-DATA data+6389(SB)/1, $32
-DATA data+6390(SB)/1, $47
-DATA data+6391(SB)/1, $112
-DATA data+6392(SB)/1, $114
-DATA data+6393(SB)/1, $111
-DATA data+6394(SB)/1, $99
-DATA data+6395(SB)/1, $47
-DATA data+6396(SB)/1, $115
-DATA data+6397(SB)/1, $101
-DATA data+6398(SB)/1, $108
-DATA data+6399(SB)/1, $102
-DATA data+6400(SB)/1, $47
-DATA data+6401(SB)/1, $99
-DATA data+6402(SB)/1, $109
-DATA data+6403(SB)/1, $100
-DATA data+6404(SB)/1, $108
-DATA data+6405(SB)/1, $105
-DATA data+6406(SB)/1, $110
-DATA data+6407(SB)/1, $101
-DATA data+6408(SB)/1, $46
-DATA data+6409(SB)/1, $32
-DATA data+6410(SB)/1, $67
-DATA data+6411(SB)/1, $117
-DATA data+6412(SB)/1, $114
-DATA data+6413(SB)/1, $114
-DATA data+6414(SB)/1, $101
-DATA data+6415(SB)/1, $110
-DATA data+6416(SB)/1, $116
-DATA data+6417(SB)/1, $108
-DATA data+6418(SB)/1, $121
-DATA data+6419(SB)/1, $32
-DATA data+6420(SB)/1, $71
-DATA data+6421(SB)/1, $111
-DATA data+6422(SB)/1, $71
-DATA data+6423(SB)/1, $111
-DATA data+6424(SB)/1, $32
-DATA data+6425(SB)/1, $105
-DATA data+6426(SB)/1, $115
-DATA data+6427(SB)/1, $32
-DATA data+6428(SB)/1, $111
-DATA data+6429(SB)/1, $110
-DATA data+6430(SB)/1, $108
-DATA data+6431(SB)/1, $121
-DATA data+6432(SB)/1, $32
-DATA data+6433(SB)/1, $115
-DATA data+6434(SB)/1, $117
-DATA data+6435(SB)/1, $112
+//--- String buffer start ('/proc/self/cmdline') at
libgogo/libgogo.go:28:39
+DATA data+6312(SB)/1, $47
+DATA data+6313(SB)/1, $112
+DATA data+6314(SB)/1, $114
+DATA data+6315(SB)/1, $111
+DATA data+6316(SB)/1, $99
+DATA data+6317(SB)/1, $47
+DATA data+6318(SB)/1, $115
+DATA data+6319(SB)/1, $101
+DATA data+6320(SB)/1, $108
+DATA data+6321(SB)/1, $102
+DATA data+6322(SB)/1, $47
+DATA data+6323(SB)/1, $99
+DATA data+6324(SB)/1, $109
+DATA data+6325(SB)/1, $100
+DATA data+6326(SB)/1, $108
+DATA data+6327(SB)/1, $105
+DATA data+6328(SB)/1, $110
+DATA data+6329(SB)/1, $101
+DATA data+6330(SB)/1, $0
+//--- String buffer end at libgogo/libgogo.go:28:39
+//--- String buffer start ('Error opening /proc/self/cmdline. Currently
GoGo is only supported on systems with /proc enabled.') at
libgogo/libgogo.go:30:118
+DATA data+6352(SB)/1, $69
+DATA data+6353(SB)/1, $114
+DATA data+6354(SB)/1, $114
+DATA data+6355(SB)/1, $111
+DATA data+6356(SB)/1, $114
+DATA data+6357(SB)/1, $32
+DATA data+6358(SB)/1, $111
+DATA data+6359(SB)/1, $112
+DATA data+6360(SB)/1, $101
+DATA data+6361(SB)/1, $110
+DATA data+6362(SB)/1, $105
+DATA data+6363(SB)/1, $110
+DATA data+6364(SB)/1, $103
+DATA data+6365(SB)/1, $32
+DATA data+6366(SB)/1, $47
+DATA data+6367(SB)/1, $112
+DATA data+6368(SB)/1, $114
+DATA data+6369(SB)/1, $111
+DATA data+6370(SB)/1, $99
+DATA data+6371(SB)/1, $47
+DATA data+6372(SB)/1, $115
+DATA data+6373(SB)/1, $101
+DATA data+6374(SB)/1, $108
+DATA data+6375(SB)/1, $102
+DATA data+6376(SB)/1, $47
+DATA data+6377(SB)/1, $99
+DATA data+6378(SB)/1, $109
+DATA data+6379(SB)/1, $100
+DATA data+6380(SB)/1, $108
+DATA data+6381(SB)/1, $105
+DATA data+6382(SB)/1, $110
+DATA data+6383(SB)/1, $101
+DATA data+6384(SB)/1, $46
+DATA data+6385(SB)/1, $32
+DATA data+6386(SB)/1, $67
+DATA data+6387(SB)/1, $117
+DATA data+6388(SB)/1, $114
+DATA data+6389(SB)/1, $114
+DATA data+6390(SB)/1, $101
+DATA data+6391(SB)/1, $110
+DATA data+6392(SB)/1, $116
+DATA data+6393(SB)/1, $108
+DATA data+6394(SB)/1, $121
+DATA data+6395(SB)/1, $32
+DATA data+6396(SB)/1, $71
+DATA data+6397(SB)/1, $111
+DATA data+6398(SB)/1, $71
+DATA data+6399(SB)/1, $111
+DATA data+6400(SB)/1, $32
+DATA data+6401(SB)/1, $105
+DATA data+6402(SB)/1, $115
+DATA data+6403(SB)/1, $32
+DATA data+6404(SB)/1, $111
+DATA data+6405(SB)/1, $110
+DATA data+6406(SB)/1, $108
+DATA data+6407(SB)/1, $121
+DATA data+6408(SB)/1, $32
+DATA data+6409(SB)/1, $115
+DATA data+6410(SB)/1, $117
+DATA data+6411(SB)/1, $112
+DATA data+6412(SB)/1, $112
+DATA data+6413(SB)/1, $111
+DATA data+6414(SB)/1, $114
+DATA data+6415(SB)/1, $116
+DATA data+6416(SB)/1, $101
+DATA data+6417(SB)/1, $100
+DATA data+6418(SB)/1, $32
+DATA data+6419(SB)/1, $111
+DATA data+6420(SB)/1, $110
+DATA data+6421(SB)/1, $32
+DATA data+6422(SB)/1, $115
+DATA data+6423(SB)/1, $121
+DATA data+6424(SB)/1, $115
+DATA data+6425(SB)/1, $116
+DATA data+6426(SB)/1, $101
+DATA data+6427(SB)/1, $109
+DATA data+6428(SB)/1, $115
+DATA data+6429(SB)/1, $32
+DATA data+6430(SB)/1, $119
+DATA data+6431(SB)/1, $105
+DATA data+6432(SB)/1, $116
+DATA data+6433(SB)/1, $104
+DATA data+6434(SB)/1, $32
+DATA data+6435(SB)/1, $47
DATA data+6436(SB)/1, $112
-DATA data+6437(SB)/1, $111
-DATA data+6438(SB)/1, $114
-DATA data+6439(SB)/1, $116
-DATA data+6440(SB)/1, $101
-DATA data+6441(SB)/1, $100
-DATA data+6442(SB)/1, $32
-DATA data+6443(SB)/1, $111
-DATA data+6444(SB)/1, $110
-DATA data+6445(SB)/1, $32
-DATA data+6446(SB)/1, $115
-DATA data+6447(SB)/1, $121
-DATA data+6448(SB)/1, $115
-DATA data+6449(SB)/1, $116
-DATA data+6450(SB)/1, $101
-DATA data+6451(SB)/1, $109
-DATA data+6452(SB)/1, $115
-DATA data+6453(SB)/1, $32
-DATA data+6454(SB)/1, $119
-DATA data+6455(SB)/1, $105
-DATA data+6456(SB)/1, $116
-DATA data+6457(SB)/1, $104
-DATA data+6458(SB)/1, $32
-DATA data+6459(SB)/1, $47
-DATA data+6460(SB)/1, $112
-DATA data+6461(SB)/1, $114
-DATA data+6462(SB)/1, $111
-DATA data+6463(SB)/1, $99
-DATA data+6464(SB)/1, $32
-DATA data+6465(SB)/1, $101
-DATA data+6466(SB)/1, $110
-DATA data+6467(SB)/1, $97
-DATA data+6468(SB)/1, $98
-DATA data+6469(SB)/1, $108
-DATA data+6470(SB)/1, $101
-DATA data+6471(SB)/1, $100
-DATA data+6472(SB)/1, $46
-DATA data+6473(SB)/1, $0
-//--- String buffer end at libgogo/libgogo.go:29:118
-//--- String buffer start ('Error closing file /proc/self/cmdline') at
libgogo/libgogo.go:42:58
-DATA data+6496(SB)/1, $69
-DATA data+6497(SB)/1, $114
-DATA data+6498(SB)/1, $114
-DATA data+6499(SB)/1, $111
-DATA data+6500(SB)/1, $114
-DATA data+6501(SB)/1, $32
+DATA data+6437(SB)/1, $114
+DATA data+6438(SB)/1, $111
+DATA data+6439(SB)/1, $99
+DATA data+6440(SB)/1, $32
+DATA data+6441(SB)/1, $101
+DATA data+6442(SB)/1, $110
+DATA data+6443(SB)/1, $97
+DATA data+6444(SB)/1, $98
+DATA data+6445(SB)/1, $108
+DATA data+6446(SB)/1, $101
+DATA data+6447(SB)/1, $100
+DATA data+6448(SB)/1, $46
+DATA data+6449(SB)/1, $0
+//--- String buffer end at libgogo/libgogo.go:30:118
+//--- String buffer start ('Error closing file /proc/self/cmdline') at
libgogo/libgogo.go:44:58
+DATA data+6472(SB)/1, $69
+DATA data+6473(SB)/1, $114
+DATA data+6474(SB)/1, $114
+DATA data+6475(SB)/1, $111
+DATA data+6476(SB)/1, $114
+DATA data+6477(SB)/1, $32
+DATA data+6478(SB)/1, $99
+DATA data+6479(SB)/1, $108
+DATA data+6480(SB)/1, $111
+DATA data+6481(SB)/1, $115
+DATA data+6482(SB)/1, $105
+DATA data+6483(SB)/1, $110
+DATA data+6484(SB)/1, $103
+DATA data+6485(SB)/1, $32
+DATA data+6486(SB)/1, $102
+DATA data+6487(SB)/1, $105
+DATA data+6488(SB)/1, $108
+DATA data+6489(SB)/1, $101
+DATA data+6490(SB)/1, $32
+DATA data+6491(SB)/1, $47
+DATA data+6492(SB)/1, $112
+DATA data+6493(SB)/1, $114
+DATA data+6494(SB)/1, $111
+DATA data+6495(SB)/1, $99
+DATA data+6496(SB)/1, $47
+DATA data+6497(SB)/1, $115
+DATA data+6498(SB)/1, $101
+DATA data+6499(SB)/1, $108
+DATA data+6500(SB)/1, $102
+DATA data+6501(SB)/1, $47
DATA data+6502(SB)/1, $99
-DATA data+6503(SB)/1, $108
-DATA data+6504(SB)/1, $111
-DATA data+6505(SB)/1, $115
+DATA data+6503(SB)/1, $109
+DATA data+6504(SB)/1, $100
+DATA data+6505(SB)/1, $108
DATA data+6506(SB)/1, $105
DATA data+6507(SB)/1, $110
-DATA data+6508(SB)/1, $103
-DATA data+6509(SB)/1, $32
-DATA data+6510(SB)/1, $102
-DATA data+6511(SB)/1, $105
-DATA data+6512(SB)/1, $108
-DATA data+6513(SB)/1, $101
-DATA data+6514(SB)/1, $32
-DATA data+6515(SB)/1, $47
-DATA data+6516(SB)/1, $112
-DATA data+6517(SB)/1, $114
-DATA data+6518(SB)/1, $111
-DATA data+6519(SB)/1, $99
-DATA data+6520(SB)/1, $47
-DATA data+6521(SB)/1, $115
-DATA data+6522(SB)/1, $101
-DATA data+6523(SB)/1, $108
-DATA data+6524(SB)/1, $102
-DATA data+6525(SB)/1, $47
-DATA data+6526(SB)/1, $99
-DATA data+6527(SB)/1, $109
-DATA data+6528(SB)/1, $100
-DATA data+6529(SB)/1, $108
-DATA data+6530(SB)/1, $105
-DATA data+6531(SB)/1, $110
-DATA data+6532(SB)/1, $101
-DATA data+6533(SB)/1, $0
-//--- String buffer end at libgogo/libgogo.go:42:58
-GLOBL data(SB),$6552
+DATA data+6508(SB)/1, $101
+DATA data+6509(SB)/1, $0
+//--- String buffer end at libgogo/libgogo.go:44:58
+GLOBL data(SB),$6528

TEXT main·init(SB),0,$0-0
//--- Assign byte buffer to new string constant start at fib.go:21:38
@@ -1637,34 +1633,27 @@
//--- Global variable assignment RHS load end at libgogo/libgogo.go:16:21
MOVQ $0, data+6304(SB)
//--- Global variable assignment end at libgogo/libgogo.go:16:21
- //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:25:26
+ //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:28:39
LEAQ data+6312(SB), R8
- MOVQ R8, data+6320(SB)
- //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:25:26
- //--- Assign string length to new string constant start at
libgogo/libgogo.go:25:26
- MOVQ $1, data+6328(SB)
- //--- Assign string length to new string constant end at
libgogo/libgogo.go:25:26
- //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:27:39
- LEAQ data+6336(SB), R8
- MOVQ R8, data+6360(SB)
- //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:27:39
- //--- Assign string length to new string constant start at
libgogo/libgogo.go:27:39
- MOVQ $18, data+6368(SB)
- //--- Assign string length to new string constant end at
libgogo/libgogo.go:27:39
- //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:29:118
- LEAQ data+6376(SB), R8
- MOVQ R8, data+6480(SB)
- //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:29:118
- //--- Assign string length to new string constant start at
libgogo/libgogo.go:29:118
- MOVQ $97, data+6488(SB)
- //--- Assign string length to new string constant end at
libgogo/libgogo.go:29:118
- //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:42:58
- LEAQ data+6496(SB), R8
- MOVQ R8, data+6536(SB)
- //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:42:58
- //--- Assign string length to new string constant start at
libgogo/libgogo.go:42:58
- MOVQ $37, data+6544(SB)
- //--- Assign string length to new string constant end at
libgogo/libgogo.go:42:58
+ MOVQ R8, data+6336(SB)
+ //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:28:39
+ //--- Assign string length to new string constant start at
libgogo/libgogo.go:28:39
+ MOVQ $18, data+6344(SB)
+ //--- Assign string length to new string constant end at
libgogo/libgogo.go:28:39
+ //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:30:118
+ LEAQ data+6352(SB), R8
+ MOVQ R8, data+6456(SB)
+ //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:30:118
+ //--- Assign string length to new string constant start at
libgogo/libgogo.go:30:118
+ MOVQ $97, data+6464(SB)
+ //--- Assign string length to new string constant end at
libgogo/libgogo.go:30:118
+ //--- Assign byte buffer to new string constant start at
libgogo/libgogo.go:44:58
+ LEAQ data+6472(SB), R8
+ MOVQ R8, data+6512(SB)
+ //--- Assign byte buffer to new string constant end at
libgogo/libgogo.go:44:58
+ //--- Assign string length to new string constant start at
libgogo/libgogo.go:44:58
+ MOVQ $37, data+6520(SB)
+ //--- Assign string length to new string constant end at
libgogo/libgogo.go:44:58
RET

TEXT main·main(SB),0,$0-0
@@ -2776,7 +2765,7 @@
MOVQ $1, DX //buffer size (size 1)
SYSCALL //Linux syscall
CMPQ AX, $0xFFFFFFFFFFFFF001 //Check for success
- JLS READ_SUCCESS //Return result if successful
+ JLS GETCHAR_SUCCESS //Return result if successful
GETCHAR_ERROR:
MOVQ $0, 16(SP) //Return 0 (return value after one parameter =>
SP+2*64bit)
GETCHAR_SUCCESS:
@@ -5409,8 +5398,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:268:52
//--- First parameter expression load end at libgogo/symbol.go:268:52
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:268:52
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:268:52
@@ -5451,8 +5441,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:269:53
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:269:53
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:269:53
@@ -5483,8 +5474,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:270:66
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:270:66
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:270:66
@@ -5601,8 +5593,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:290:50
//--- First parameter expression load end at libgogo/symbol.go:290:50
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:290:50
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:290:50
@@ -5643,8 +5636,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:291:51
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:291:51
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:291:51
@@ -5675,8 +5669,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:292:64
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:292:64
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:292:64
@@ -5809,8 +5804,9 @@
MOVQ -16(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:312:63
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:312:63
MOVQ R8, -100024(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:312:63
@@ -5920,8 +5916,9 @@
MOVQ -16(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:330:63
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:330:63
MOVQ R8, -100024(SP)
//--- ##1##libgogo·StringCompare## at libgogo/symbol.go:330:63
@@ -6392,8 +6389,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:403:45
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:403:45
MOVQ R8, -100024(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:403:45
@@ -6426,8 +6424,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:405:39
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -40(SP)
MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:405:39
@@ -6466,8 +6465,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:408:28
//--- First parameter expression load end at libgogo/symbol.go:408:28
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -40(SP)
MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:408:28
@@ -6577,8 +6577,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:416:49
//--- First parameter expression load end at libgogo/symbol.go:416:49
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -40(SP)
MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:416:49
@@ -6665,8 +6666,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:421:57
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:421:57
MOVQ R8, -100024(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:421:57
@@ -6701,8 +6703,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:423:51
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -40(SP)
MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:423:51
@@ -6743,8 +6746,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:426:40
//--- First parameter expression load end at libgogo/symbol.go:426:40
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -40(SP)
MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:426:40
@@ -6995,8 +6999,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:450:45
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:450:45
MOVQ R8, -100032(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:450:45
@@ -7029,8 +7034,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:452:39
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:452:39
@@ -7069,8 +7075,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:455:28
//--- First parameter expression load end at libgogo/symbol.go:455:28
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:455:28
@@ -7225,8 +7232,9 @@
MOVQ -16(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:462:32
//--- First parameter expression load end at libgogo/symbol.go:462:32
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:462:32
@@ -7336,8 +7344,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:470:53
//--- First parameter expression load end at libgogo/symbol.go:470:53
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:470:53
@@ -7424,8 +7433,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:475:61
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:475:61
MOVQ R8, -100032(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:475:61
@@ -7460,8 +7470,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:477:55
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:477:55
@@ -7502,8 +7513,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:480:44
//--- First parameter expression load end at libgogo/symbol.go:480:44
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:480:44
@@ -7756,8 +7768,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:505:35
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:505:35
@@ -7793,8 +7806,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:507:28
//--- First parameter expression load end at libgogo/symbol.go:507:28
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:507:28
@@ -7928,8 +7942,9 @@
MOVQ -16(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:513:32
//--- First parameter expression load end at libgogo/symbol.go:513:32
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:513:32
@@ -8039,8 +8054,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:521:53
//--- First parameter expression load end at libgogo/symbol.go:521:53
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:521:53
@@ -8127,8 +8143,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:526:61
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:526:61
MOVQ R8, -100032(SP)
//--- ##1##libgogo·StringLength## at libgogo/symbol.go:526:61
@@ -8163,8 +8180,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- First parameter expression load end at libgogo/symbol.go:528:55
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:528:55
@@ -8205,8 +8223,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:531:44
//--- First parameter expression load end at libgogo/symbol.go:531:44
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
MOVQ R8, -48(SP)
MOVQ R9, -40(SP)
//--- First parameter expression end at libgogo/symbol.go:531:44
@@ -8544,8 +8563,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- Subsequent parameter expression load end at
libgogo/symbol.go:560:43
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:560:43
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:560:43
@@ -8606,8 +8626,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:562:36
//--- Subsequent parameter expression load end at
libgogo/symbol.go:562:36
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:562:36
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:562:36
@@ -8714,8 +8735,9 @@
MOVQ -16(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:568:40
//--- Subsequent parameter expression load end at
libgogo/symbol.go:568:40
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:568:40
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:568:40
@@ -8823,8 +8845,9 @@
MOVQ (R8), R8
ADDQ $16, R8
//--- Subsequent parameter expression load end at
libgogo/symbol.go:574:59
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:574:59
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:574:59
@@ -8887,8 +8910,9 @@
MOVQ (R8), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:576:52
//--- Subsequent parameter expression load end at
libgogo/symbol.go:576:52
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:576:52
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:576:52
@@ -9130,8 +9154,9 @@
MOVQ -8(SP), R8
ADDQ $16, R8
//--- Subsequent parameter expression load end at
libgogo/symbol.go:600:43
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:600:43
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:600:43
@@ -9192,8 +9217,9 @@
MOVQ -8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/symbol.go:602:36
//--- Subsequent parameter expression load end at
libgogo/symbol.go:602:36
- MOVQ (R8), R8
- MOVQ 8(R8), R9
+ MOVQ R8, BX
+ MOVQ (BX), R8
+ MOVQ 8(BX), R9
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:602:36
MOVQ R8, -100040(SP)
//--- ##1##libgogo·StringAppend## at libgogo/symbol.go:602:36
@@ -10759,341 +10785,319 @@
MOVQ AX, 16(SP) //Move address from AX to return value (return value
after one parameter => SP+2*64bit)
RET
TEXT libgogo·GetArgv(SB),0,$0-0
- //--- Local variable assignment start at libgogo/libgogo.go:25:23
- //--- Local variable assignment RHS load start at
libgogo/libgogo.go:25:23
- //--- Local variable assignment RHS load end at libgogo/libgogo.go:25:27
- MOVQ data+6320(SB), R8
- MOVQ data+6328(SB), R9
- MOVQ R8, -32(SP)
- MOVQ R9, -24(SP)
- //--- Local variable assignment end at libgogo/libgogo.go:25:27
- //--- Assignment start at libgogo/libgogo.go:27:10
- //--- Assignment LHS load start at libgogo/libgogo.go:27:10
- //--- Assignment LHS load end at libgogo/libgogo.go:27:10
- //--- Saving registers before function call start at
libgogo/libgogo.go:27:39
- //--- Saving registers before function call end at
libgogo/libgogo.go:27:39
- //--- First parameter expression start at libgogo/libgogo.go:27:39
- //--- First parameter expression load start at libgogo/libgogo.go:27:39
- //--- First parameter expression load end at libgogo/libgogo.go:27:40
- MOVQ data+6360(SB), R8
- MOVQ data+6368(SB), R9
+ //--- Local variable assignment start at libgogo/libgogo.go:26:25
+ //--- Local variable assignment RHS load start at
libgogo/libgogo.go:26:25
+ //--- Local variable assignment RHS load end at libgogo/libgogo.go:26:27
+ MOVB $1, -32(SP)
+ //--- Local variable assignment end at libgogo/libgogo.go:26:27
+ //--- Assignment start at libgogo/libgogo.go:28:10
+ //--- Assignment LHS load start at libgogo/libgogo.go:28:10
+ //--- Assignment LHS load end at libgogo/libgogo.go:28:10
+ //--- Saving registers before function call start at
libgogo/libgogo.go:28:39
+ //--- Saving registers before function call end at
libgogo/libgogo.go:28:39
+ //--- First parameter expression start at libgogo/libgogo.go:28:39
+ //--- First parameter expression load start at libgogo/libgogo.go:28:39
+ //--- First parameter expression load end at libgogo/libgogo.go:28:40
+ MOVQ data+6336(SB), R8
+ MOVQ data+6344(SB), R9
MOVQ R8, -64(SP)
MOVQ R9, -56(SP)
- //--- First parameter expression end at libgogo/libgogo.go:27:40
- //--- Subsequent parameter expression start at libgogo/libgogo.go:27:40
- //--- Subsequent parameter expression load start at
libgogo/libgogo.go:27:40
- //--- Subsequent parameter expression load end at
libgogo/libgogo.go:27:43
+ //--- First parameter expression end at libgogo/libgogo.go:28:40
+ //--- Subsequent parameter expression start at libgogo/libgogo.go:28:40
+ //--- Subsequent parameter expression load start at
libgogo/libgogo.go:28:40
+ //--- Subsequent parameter expression load end at
libgogo/libgogo.go:28:43
MOVQ $0, -48(SP)
- //--- Subsequent parameter expression end at libgogo/libgogo.go:27:43
- //--- Stack pointer offset before function call for local variables
start at libgogo/libgogo.go:27:43
+ //--- Subsequent parameter expression end at libgogo/libgogo.go:28:43
+ //--- Stack pointer offset before function call for local variables
start at libgogo/libgogo.go:28:43
SUBQ $64, SP
- //--- Stack pointer offset before function call for local variables end
at libgogo/libgogo.go:27:43
+ //--- Stack pointer offset before function call for local variables end
at libgogo/libgogo.go:28:43
CALL libgogo·FileOpen(SB)
- //--- Stack pointer offset after function call for local variables start
at libgogo/libgogo.go:27:43
+ //--- Stack pointer offset after function call for local variables start
at libgogo/libgogo.go:28:43
ADDQ $64, SP
- //--- Stack pointer offset after function call for local variables end
at libgogo/libgogo.go:27:43
- //--- Restoring registers after function call start at
libgogo/libgogo.go:27:43
- //--- Restoring registers after function call end at
libgogo/libgogo.go:27:43
+ //--- Stack pointer offset after function call for local variables end
at libgogo/libgogo.go:28:43
+ //--- Restoring registers after function call start at
libgogo/libgogo.go:28:43
+ //--- Restoring registers after function call end at
libgogo/libgogo.go:28:43
MOVQ -40(SP), R8
MOVQ R8, -8(SP)
- //--- Assignment end at libgogo/libgogo.go:27:44
- //--- If start at libgogo/libgogo.go:28:8
+ //--- Assignment end at libgogo/libgogo.go:28:44
+ //--- If start at libgogo/libgogo.go:29:8
CMPQ -8(SP), $0
- JE IF_libgogo_libgogo_28_1_END
- JMP IF_libgogo_libgogo_28_END
-IF_libgogo_libgogo_28_1_END:
- //--- Saving registers before function call start at
libgogo/libgogo.go:29:118
- //--- Saving registers before function call end at
libgogo/libgogo.go:29:118
- //--- First parameter expression start at libgogo/libgogo.go:29:118
- //--- First parameter expression load start at libgogo/libgogo.go:29:118
- //--- First parameter expression load end at libgogo/libgogo.go:29:119
- MOVQ data+6480(SB), R8
- MOVQ data+6488(SB), R9
- //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:29:119
+ JE IF_libgogo_libgogo_29_1_END
+ JMP IF_libgogo_libgogo_29_END
+IF_libgogo_libgogo_29_1_END:
+ //--- Saving registers before function call start at
libgogo/libgogo.go:30:118
+ //--- Saving registers before function call end at
libgogo/libgogo.go:30:118
+ //--- First parameter expression start at libgogo/libgogo.go:30:118
+ //--- First parameter expression load start at libgogo/libgogo.go:30:118
+ //--- First parameter expression load end at libgogo/libgogo.go:30:119
+ MOVQ data+6456(SB), R8
+ MOVQ data+6464(SB), R9
+ //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:30:119
MOVQ R8, -100032(SP)
- //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:29:119
+ //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:30:119
MOVQ R9, -100024(SP)
- //--- First parameter expression end at libgogo/libgogo.go:29:119
- //--- Subsequent parameter expression start at libgogo/libgogo.go:29:119
- //--- Subsequent parameter expression load start at
libgogo/libgogo.go:29:119
- //--- Subsequent parameter expression load end at
libgogo/libgogo.go:29:122
- //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:29:122
+ //--- First parameter expression end at libgogo/libgogo.go:30:119
+ //--- Subsequent parameter expression start at libgogo/libgogo.go:30:119
+ //--- Subsequent parameter expression load start at
libgogo/libgogo.go:30:119
+ //--- Subsequent parameter expression load end at
libgogo/libgogo.go:30:122
+ //--- ##1##libgogo·ExitError## at libgogo/libgogo.go:30:122
MOVB $1, -100016(SP)
- //--- Subsequent parameter expression end at libgogo/libgogo.go:29:122
- //--- Stack pointer offset before function call for local variables
start at libgogo/libgogo.go:29:122
- //--- ##2##libgogo·ExitError## at libgogo/libgogo.go:29:122
+ //--- Subsequent parameter expression end at libgogo/libgogo.go:30:122
+ //--- Stack pointer offset before function call for local variables
start at libgogo/libgogo.go:30:122
+ //--- ##2##libgogo·ExitError## at libgogo/libgogo.go:30:122
SUBQ $32, SP
- //--- Stack pointer offset before function call for local variables end
at libgogo/libgogo.go:29:122
+ //--- Stack pointer offset before function call for local variables end
at libgogo/libgogo.go:30:122
CALL libgogo·ExitError(SB)
- //--- Stack pointer offset after function call for local variables start
at libgogo/libgogo.go:29:122
- //--- ##2##libgogo·ExitError## at libgogo/libgogo.go:29:122
+ //--- Stack pointer offset after function call for local variables start
at libgogo/libgogo.go:30:122
+ //--- ##2##libgogo·ExitError## at libgogo/libgogo.go:30:122
ADDQ $32, SP
- //--- Stack pointer offset after function call for local variables end
at libgogo/libgogo.go:29:122
- //--- Restoring registers after function call start at
libgogo/libgogo.go:29:122
- //--- Restoring registers after function call end at
libgogo/libgogo.go:29:122
-IF_libgogo_libgogo_28_END:
-IF_libgogo_libgogo_28_ELSE_END:
- //--- If end at libgogo/libgogo.go:32:9
- //--- For start at libgogo/libgogo.go:32:9
- //--- For [initial assignment] start at libgogo/libgogo.go:32:15
- //--- Assignment start at libgogo/libgogo.go:32:15
- //--- Assignment LHS load start at libgogo/libgogo.go:32:15
- //--- Assignment LHS load end at libgogo/libgogo.go:32:17
- //--- Saving registers before function call start at
libgogo/libgogo.go:32:25
- //--- Saving registers before function call end at
libgogo/libgogo.go:32:25
- //--- First parameter expression start at libgogo/libgogo.go:32:25
- //--- First parameter expression load start at libgogo/libgogo.go:32:25
- //--- First parameter expression load end at libgogo/libgogo.go:32:25
+ //--- Stack pointer offset after function call for local variables end
at libgogo/libgogo.go:30:122
+ //--- Restoring registers after function call start at
libgogo/libgogo.go:30:122
+ //--- Restoring registers after function call end at
libgogo/libgogo.go:30:122
+IF_libgogo_libgogo_29_END:
+IF_libgogo_libgogo_29_ELSE_END:
+ //--- If end at libgogo/libgogo.go:33:9
+ //--- For start at libgogo/libgogo.go:33:9
+ //--- For [initial assignment] start at libgogo/libgogo.go:33:20
+ //--- Assignment start at libgogo/libgogo.go:33:20
+ //--- Assignment LHS load start at libgogo/libgogo.go:33:20
+ //--- Assignment LHS load end at libgogo/libgogo.go:33:22
+ //--- Saving registers before function call start at
libgogo/libgogo.go:33:33
+ //--- Saving registers before function call end at
libgogo/libgogo.go:33:33
+ //--- First parameter expression start at libgogo/libgogo.go:33:33
+ //--- First parameter expression load start at libgogo/libgogo.go:33:33
+ //--- First parameter expression load end at libgogo/libgogo.go:33:33
MOVQ -8(SP), R8
- MOVQ R8, -72(SP)
- //--- First parameter expression end at libgogo/libgogo.go:32:25
- //--- Subsequent parameter expression start at libgogo/libgogo.go:32:25
***The diff for this file has been truncated for email.***
=======================================
--- /src/codegen.go Sat Jun 19 02:13:43 2010
+++ /src/codegen.go Sun Jun 20 12:27:03 2010
@@ -134,12 +134,17 @@
if (item.Mode == libgogo.MODE_REG) && (item.A != 0) { //Derefer
register if it contains an address
item.A = 0; //Register will soon contain a value; make sure op
size calculation is based on the actual type size, not on the pointer size
opsize = GetOpSize(item, "MOV");
- retVal = PrintInstruction_Reg_Reg("MOV", opsize, "R", item.R, 1,
0, 0, "", "R", item.R, 0, 0, 0, ""); //MOV (item.R), item.R
- if retVal != 0 {
- addReg = GetFreeRegister(); //Additional register required
- OccupyRegister(addReg);
- item.C = addReg;
- PrintInstruction_Reg_Reg("MOV", retVal, "R", item.R, 1, 8,
0, "", "R", item.C, 0, 0, 0, ""); //MOV 8(item.R), item.C
+ if opsize <= 8 {
+ PrintInstruction_Reg_Reg("MOV", opsize, "R", item.R, 1, 0,
0, "", "R", item.R, 0, 0, 0, ""); //MOV (item.R), item.R
+ } else { //Use intermediate register to maintain address to derefer
+ PrintInstruction_Reg_Reg("MOV", 8, "R", item.R, 0, 0,
0, "", "BX", 0, 0, 0, 0, ""); //MOV item.R, BX
+ retVal = PrintInstruction_Reg_Reg("MOV", opsize, "BX", 0, 1,
0, 0, "", "R", item.R, 0, 0, 0, ""); //MOV (BX), item.R
+ if retVal != 0 {
+ addReg = GetFreeRegister(); //Additional register required
+ OccupyRegister(addReg);
+ item.C = addReg;
+ PrintInstruction_Reg_Reg("MOV", retVal, "BX", 0, 1, 8,
0, "", "R", item.C, 0, 0, 0, ""); //MOV 8(BX), item.C
+ }
}
}
}
@@ -154,12 +159,17 @@
if item.PtrType == 1 {
if item.Mode == libgogo.MODE_REG { //Item is already in a register
=> derefer register
opsize = GetOpSize(item, "MOV");
- retVal = PrintInstruction_Reg_Reg("MOV", opsize, "R", item.R,
1, 0, 0, "", "R", item.R, 0, 0, 0, ""); //MOV (item.R), item.R
- if retVal != 0 {
- addReg = GetFreeRegister(); //Additional register required
- OccupyRegister(addReg);
- item.C = addReg;
- PrintInstruction_Reg_Reg("MOV", retVal, "R", item.R, 1, 8,
0, "", "R", item.C, 0, 0, 0, ""); //MOV 8(item.R), item.C
+ if opsize <= 8 {
+ PrintInstruction_Reg_Reg("MOV", opsize, "R", item.R, 1, 0,
0, "", "R", item.R, 0, 0, 0, ""); //MOV (item.R), item.R
+ } else { //Use intermediate register to maintain address to
derefer
+ PrintInstruction_Reg_Reg("MOV", 8, "R", item.R, 0, 0,
0, "", "BX", 0, 0, 0, 0, ""); //MOV item.R, BX
+ retVal = PrintInstruction_Reg_Reg("MOV", opsize, "BX", 0,
1, 0, 0, "", "R", item.R, 0, 0, 0, ""); //MOV (BX), item.R
+ if retVal != 0 {
+ addReg = GetFreeRegister(); //Additional register
required
+ OccupyRegister(addReg);
+ item.C = addReg;
+ PrintInstruction_Reg_Reg("MOV", retVal, "BX", 0, 1, 8,
0, "", "R", item.C, 0, 0, 0, ""); //MOV 8(BX), item.C
+ }
}
} else { //Item is not a register yet => make it a register by
loading its value
MakeRegistered(item, 0); //Don't load address as loading the
value automatically derefers the item
=======================================
--- /testing/checksums Sun Jun 20 00:28:13 2010
+++ /testing/checksums Sun Jun 20 12:27:03 2010
@@ -17,5 +17,5 @@
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_struct8_fail.go
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_struct9.go
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_symtable_fail.go
-77c1e01b144ed7a16e20aaecc987a293b4e0ea03e4406c7e122bc8e9923668b1
tmp/_gogo_.sog
+2da5316fd1f34c5bdd4b5ea85c169e4b63c241e7f8ea995ffacb68fb428a3eb1
tmp/_gogo_.sog
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/test.go
=======================================
--- /testing/results/_gogo_.sog Sun Jun 20 00:28:13 2010
+++ /testing/results/_gogo_.sog Sun Jun 20 12:27:03 2010
@@ -136,8 +136,9 @@
ADDQ R8, R9
ADDQ $8, R9
//--- Assignment RHS load end at tests/test.go:30:28
- MOVQ (R9), R9
- MOVQ 8(R9), R8
+ MOVQ R9, BX
+ MOVQ (BX), R9
+ MOVQ 8(BX), R8
MOVQ R9, -32(SP)
MOVQ R8, -24(SP)
//--- Assignment end at tests/test.go:30:28

==============================================================================
Revision: 35d43b50df
Author: Andreas Unterweger <and...@gmx.at>
Date: Sun Jun 20 23:14:45 2010
Log: gen-expr.go: Corrected borked deref. logic in comparisons - ./6.out -h
now prints GoGo's help when compiling GoGo
http://code.google.com/p/gogc/source/detail?r=35d43b50df

Modified:
/src/_gogo_.sog
/src/gen-expr.go

=======================================
--- /src/_gogo_.sog Sun Jun 20 12:27:03 2010
+++ /src/_gogo_.sog Sun Jun 20 23:14:45 2010
@@ -2896,6 +2896,7 @@
MOVQ 8(SP), R9
ADDQ $16, R9
MOVQ (R8), R8
+ MOVQ (R9), R9
CMPQ R8, R9
JE IF_libgogo_list_37_1_END
JMP IF_libgogo_list_37_END
@@ -3238,7 +3239,8 @@
ADDQ $16, R8
MOVQ (R8), R8
SUBQ $1, R8
- CMPQ -40(SP), R8
+ MOVQ -40(SP), R9
+ CMPQ -8(SP), R8
JL FOR_libgogo_list_62_1_END
JMP FOR_libgogo_list_62_END
FOR_libgogo_list_62_1_END:
@@ -4253,8 +4255,8 @@
MOVQ R8, -8(SP)
//--- Local variable assignment end at libgogo/symbol.go:63:37
//--- If start at libgogo/symbol.go:64:8
- LEAQ data(SB), R8
- LEAQ 16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ 16(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_64_1_END
JMP IF_libgogo_symbol_64_END
@@ -4336,8 +4338,8 @@
MOVQ R8, -8(SP)
//--- Local variable assignment end at libgogo/symbol.go:81:40
//--- If start at libgogo/symbol.go:82:8
- LEAQ data(SB), R8
- LEAQ 16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ 16(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_82_1_END
JMP IF_libgogo_symbol_82_END
@@ -4503,8 +4505,8 @@
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/symbol.go:108:38
//--- If start at libgogo/symbol.go:109:8
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_109_1_END
JMP IF_libgogo_symbol_109_END
@@ -4653,8 +4655,8 @@
MOVQ $0, -8(SP)
//--- Local variable assignment end at libgogo/symbol.go:138:25
//--- If start at libgogo/symbol.go:141:8
- LEAQ data(SB), R8
- LEAQ 8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ 8(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_141_1_END
JMP IF_libgogo_symbol_141_END
@@ -4711,8 +4713,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:147:46
FOR_libgogo_symbol_147_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:147:55
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_147_1_END
JMP FOR_libgogo_symbol_147_END
@@ -5073,8 +5075,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:215:20
FOR_libgogo_symbol_215_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:215:25
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_215_1_END
JMP FOR_libgogo_symbol_215_END
@@ -5097,8 +5099,8 @@
JMP FOR_libgogo_symbol_215_EXPR_START
FOR_libgogo_symbol_215_BODY:
//--- If start at libgogo/symbol.go:216:12
- LEAQ 8(SP), R8
- LEAQ -16(SP), R9
+ MOVQ 8(SP), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JE IF_libgogo_symbol_216_1_END
JMP IF_libgogo_symbol_216_END
@@ -5143,8 +5145,8 @@
FOR_libgogo_symbol_215_END:
//--- For end at libgogo/symbol.go:221:6
//--- If start at libgogo/symbol.go:222:8
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JE IF_libgogo_symbol_222_1_END
JMP IF_libgogo_symbol_222_END
@@ -5232,8 +5234,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:247:23
FOR_libgogo_symbol_247_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:247:28
- LEAQ data(SB), R8
- LEAQ -32(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -32(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_247_1_END
JMP FOR_libgogo_symbol_247_END
@@ -5296,8 +5298,8 @@
FOR_libgogo_symbol_247_END:
//--- For end at libgogo/symbol.go:250:6
//--- If start at libgogo/symbol.go:251:8
- LEAQ data(SB), R8
- LEAQ -24(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -24(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_251_1_END
JMP IF_libgogo_symbol_251_END
@@ -5365,8 +5367,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:267:26
FOR_libgogo_symbol_267_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:267:37
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_267_1_END
JMP FOR_libgogo_symbol_267_END
@@ -5560,8 +5562,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:289:24
FOR_libgogo_symbol_289_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:289:33
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_289_1_END
JMP FOR_libgogo_symbol_289_END
@@ -5771,8 +5773,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:311:23
FOR_libgogo_symbol_311_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:311:31
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_311_1_END
JMP FOR_libgogo_symbol_311_END
@@ -5883,8 +5885,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:329:23
FOR_libgogo_symbol_329_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:329:31
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_329_1_END
JMP FOR_libgogo_symbol_329_END
@@ -5992,8 +5994,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:345:32
FOR_libgogo_symbol_345_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:345:42
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_345_1_END
JMP FOR_libgogo_symbol_345_END
@@ -6244,8 +6246,8 @@
MOVQ R10, 8(R8)
//--- Assignment end at libgogo/symbol.go:381:39
//--- If start at libgogo/symbol.go:382:8
- LEAQ data(SB), R8
- LEAQ 56(SP), R9
+ MOVQ data(SB), R8
+ MOVQ 56(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_382_1_END
JMP IF_libgogo_symbol_382_END
@@ -6337,8 +6339,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:401:18
FOR_libgogo_symbol_401_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:401:21
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_401_1_END
JMP FOR_libgogo_symbol_401_END
@@ -6947,8 +6949,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:448:18
FOR_libgogo_symbol_448_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:448:21
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_448_1_END
JMP FOR_libgogo_symbol_448_END
@@ -7183,8 +7185,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:460:22
FOR_libgogo_symbol_460_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:460:25
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_460_1_END
JMP FOR_libgogo_symbol_460_END
@@ -7719,8 +7721,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:503:18
FOR_libgogo_symbol_503_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:503:21
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_503_1_END
JMP FOR_libgogo_symbol_503_END
@@ -7893,8 +7895,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:511:30
FOR_libgogo_symbol_511_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:511:33
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_511_1_END
JMP FOR_libgogo_symbol_511_END
@@ -8429,8 +8431,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:555:18
FOR_libgogo_symbol_555_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:555:21
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_555_1_END
JMP FOR_libgogo_symbol_555_END
@@ -8656,8 +8658,8 @@
MOVQ R8, -16(SP)
//--- Assignment end at libgogo/symbol.go:563:22
//--- If start at libgogo/symbol.go:564:12
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE IF_libgogo_symbol_564_1_END
JMP IF_libgogo_symbol_564_END
@@ -8698,8 +8700,8 @@
//--- For start at libgogo/symbol.go:567:13
FOR_libgogo_symbol_567_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:567:17
- LEAQ data(SB), R8
- LEAQ -16(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -16(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_567_1_END
JMP FOR_libgogo_symbol_567_END
@@ -9020,8 +9022,8 @@
//--- For [initial assignment] end at libgogo/symbol.go:595:18
FOR_libgogo_symbol_595_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:595:21
- LEAQ data(SB), R8
- LEAQ -8(SP), R9
+ MOVQ data(SB), R8
+ MOVQ -8(SP), R9
CMPQ R9, R8
JNE FOR_libgogo_symbol_595_1_END
JMP FOR_libgogo_symbol_595_END
@@ -9730,7 +9732,10 @@
ADDQ -8(SP), R9
MOVB (R8), R8
ANDQ $255, R8
- CMPQ R8, R9
+ MOVB (R9), R9
+ ANDQ $255, R9
+ ANDQ $255, R9
+ CMPB R8, R9
JNE IF_libgogo_string_56_1_END
JMP IF_libgogo_string_56_END
IF_libgogo_string_56_1_END:
=======================================
--- /src/gen-expr.go Sun Jun 20 08:36:58 2010
+++ /src/gen-expr.go Sun Jun 20 23:14:45 2010
@@ -158,6 +158,7 @@
// Note: This function can only handle operands with a maximum of 8 bytes
in size
//
func GenerateComparison(item1 *libgogo.Item, item2 *libgogo.Item, op
uint64) {
+ var opsize uint64;
if Compile != 0 {
// Type/Pointer checking

@@ -215,18 +216,17 @@
item2.A = 0;
op = TOKEN_NOTEQUAL; // Force != for comparison against 0
} else {
- if item1.PtrType == 0 {
- MakeRegistered(item1, 0);
- } else {
- MakeRegistered(item1, 1);
- }
+ MakeRegistered(item1, 0);
if item2.Mode == libgogo.MODE_REG {
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,
0, "", "R", item2.R, 0, 0, 0, "");
+ DereferRegisterIfNecessary(item2);
+ opsize = GetOpSize(item2, "CMP");
+ PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
}
if item2.Mode == libgogo.MODE_VAR {
if item2.PtrType == 1 {
- MakeRegistered(item2, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
+ MakeRegistered(item2, 0);
+ opsize = GetOpSize(item2, "CMP");
+ PrintInstruction_Reg_Reg("CMP", opsize, "R",
item1.R, 0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
} else {
PrintInstruction_Reg_Var("CMP", "R", item1.R, "",
0, item2);
}
@@ -236,10 +236,13 @@
if item1.Mode == libgogo.MODE_REG {
DereferRegisterIfNecessary(item1);
if item2.Mode == libgogo.MODE_CONST {
- PrintInstruction_Reg_Imm("CMP", 8, "R", item1.R, 0, 0,
0, "", item2.A);
+ opsize = GetOpSize(item2, "CMP");
+ PrintInstruction_Reg_Imm("CMP", opsize, "R", item1.R, 0,
0, 0, "", item2.A);
}
if item2.Mode == libgogo.MODE_REG {
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,
0, "", "R", item2.R, 0, 0, 0, "");
+ DereferRegisterIfNecessary(item2);
+ opsize = GetOpSize(item2, "CMP");
+ PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R, 0,
0, 0, "", "R", item2.R, 0, 0, 0, "");
}
if item2.Mode == libgogo.MODE_VAR {
PrintInstruction_Reg_Var("CMP", "R", item1.R, "", 0,
item2);
@@ -250,23 +253,16 @@
PrintInstruction_Var_Imm("CMP", item1, item2.A);
}
if item2.Mode == libgogo.MODE_REG {
- DereferRegisterIfNecessary(item1);
- if item1.PtrType == 1 {
- MakeRegistered(item1, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,
0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);
- }
+ DereferRegisterIfNecessary(item2);
+ MakeRegistered(item1, 0);
+ PrintInstruction_Var_Reg("CMP", item1, "R", item2.R, "",
0);
}
if item2.Mode == libgogo.MODE_VAR {
- if item2.PtrType == 0 {
- MakeRegistered(item2, 0);
- } else {
- MakeRegistered(item2, 1);
- }
+ MakeRegistered(item2, 0);
if item1.PtrType == 1 {
- MakeRegistered(item1, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,
0, "", "R", item2.R, 0, 0, 0, "");
+ MakeRegistered(item1, 0);
+ opsize = GetOpSize(item2, "CMP");
+ PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
} else {
PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);
}

go...@googlecode.com

unread,
Aug 17, 2010, 11:07:53 PM8/17/10
to go...@googlegroups.com
2 new revisions:

Revision: 4d1cf2d0d0
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:06:51 2010
Log: gen-expr.go: Some optimizations for comparisons (less use of
registers...
http://code.google.com/p/gogc/source/detail?r=4d1cf2d0d0

Revision: 4ab4a0fa78
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:30:23 2010
Log: libgogo asm: Handle byte parameters and return value properly
http://code.google.com/p/gogc/source/detail?r=4ab4a0fa78

==============================================================================
Revision: 4d1cf2d0d0
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:06:51 2010
Log: gen-expr.go: Some optimizations for comparisons (less use of registers)
http://code.google.com/p/gogc/source/detail?r=4d1cf2d0d0

Modified:
/src/_gogo_.sog
/src/gen-expr.go

=======================================
--- /src/_gogo_.sog Sun Jun 20 23:14:45 2010
+++ /src/_gogo_.sog Mon Jun 21 00:06:51 2010
@@ -4256,8 +4256,7 @@
//--- Local variable assignment end at libgogo/symbol.go:63:37
//--- If start at libgogo/symbol.go:64:8
MOVQ data(SB), R8
- MOVQ 16(SP), R9
- CMPQ R9, R8
+ CMPQ 16(SP), R8
JNE IF_libgogo_symbol_64_1_END
JMP IF_libgogo_symbol_64_END
IF_libgogo_symbol_64_1_END:
@@ -4339,8 +4338,7 @@
//--- Local variable assignment end at libgogo/symbol.go:81:40
//--- If start at libgogo/symbol.go:82:8
MOVQ data(SB), R8
- MOVQ 16(SP), R9
- CMPQ R9, R8
+ CMPQ 16(SP), R8
JNE IF_libgogo_symbol_82_1_END
JMP IF_libgogo_symbol_82_END
IF_libgogo_symbol_82_1_END:
@@ -4506,8 +4504,7 @@
//--- Assignment end at libgogo/symbol.go:108:38
//--- If start at libgogo/symbol.go:109:8
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE IF_libgogo_symbol_109_1_END
JMP IF_libgogo_symbol_109_END
IF_libgogo_symbol_109_1_END:
@@ -4656,8 +4653,7 @@
//--- Local variable assignment end at libgogo/symbol.go:138:25
//--- If start at libgogo/symbol.go:141:8
MOVQ data(SB), R8
- MOVQ 8(SP), R9
- CMPQ R9, R8
+ CMPQ 8(SP), R8
JNE IF_libgogo_symbol_141_1_END
JMP IF_libgogo_symbol_141_END
IF_libgogo_symbol_141_1_END:
@@ -4714,8 +4710,7 @@
FOR_libgogo_symbol_147_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:147:55
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_147_1_END
JMP FOR_libgogo_symbol_147_END
FOR_libgogo_symbol_147_1_END:
@@ -5076,8 +5071,7 @@
FOR_libgogo_symbol_215_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:215:25
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_215_1_END
JMP FOR_libgogo_symbol_215_END
FOR_libgogo_symbol_215_1_END:
@@ -5100,8 +5094,7 @@
FOR_libgogo_symbol_215_BODY:
//--- If start at libgogo/symbol.go:216:12
MOVQ 8(SP), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JE IF_libgogo_symbol_216_1_END
JMP IF_libgogo_symbol_216_END
IF_libgogo_symbol_216_1_END:
@@ -5146,8 +5139,7 @@
//--- For end at libgogo/symbol.go:221:6
//--- If start at libgogo/symbol.go:222:8
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JE IF_libgogo_symbol_222_1_END
JMP IF_libgogo_symbol_222_END
IF_libgogo_symbol_222_1_END:
@@ -5235,8 +5227,7 @@
FOR_libgogo_symbol_247_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:247:28
MOVQ data(SB), R8
- MOVQ -32(SP), R9
- CMPQ R9, R8
+ CMPQ -32(SP), R8
JNE FOR_libgogo_symbol_247_1_END
JMP FOR_libgogo_symbol_247_END
FOR_libgogo_symbol_247_1_END:
@@ -5299,8 +5290,7 @@
//--- For end at libgogo/symbol.go:250:6
//--- If start at libgogo/symbol.go:251:8
MOVQ data(SB), R8
- MOVQ -24(SP), R9
- CMPQ R9, R8
+ CMPQ -24(SP), R8
JNE IF_libgogo_symbol_251_1_END
JMP IF_libgogo_symbol_251_END
IF_libgogo_symbol_251_1_END:
@@ -5368,8 +5358,7 @@
FOR_libgogo_symbol_267_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:267:37
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_267_1_END
JMP FOR_libgogo_symbol_267_END
FOR_libgogo_symbol_267_1_END:
@@ -5563,8 +5552,7 @@
FOR_libgogo_symbol_289_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:289:33
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_289_1_END
JMP FOR_libgogo_symbol_289_END
FOR_libgogo_symbol_289_1_END:
@@ -5774,8 +5762,7 @@
FOR_libgogo_symbol_311_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:311:31
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_311_1_END
JMP FOR_libgogo_symbol_311_END
FOR_libgogo_symbol_311_1_END:
@@ -5886,8 +5873,7 @@
FOR_libgogo_symbol_329_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:329:31
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_329_1_END
JMP FOR_libgogo_symbol_329_END
FOR_libgogo_symbol_329_1_END:
@@ -5995,8 +5981,7 @@
FOR_libgogo_symbol_345_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:345:42
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_345_1_END
JMP FOR_libgogo_symbol_345_END
FOR_libgogo_symbol_345_1_END:
@@ -6247,8 +6232,7 @@
//--- Assignment end at libgogo/symbol.go:381:39
//--- If start at libgogo/symbol.go:382:8
MOVQ data(SB), R8
- MOVQ 56(SP), R9
- CMPQ R9, R8
+ CMPQ 56(SP), R8
JNE IF_libgogo_symbol_382_1_END
JMP IF_libgogo_symbol_382_END
IF_libgogo_symbol_382_1_END:
@@ -6340,8 +6324,7 @@
FOR_libgogo_symbol_401_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:401:21
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_401_1_END
JMP FOR_libgogo_symbol_401_END
FOR_libgogo_symbol_401_1_END:
@@ -6950,8 +6933,7 @@
FOR_libgogo_symbol_448_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:448:21
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_448_1_END
JMP FOR_libgogo_symbol_448_END
FOR_libgogo_symbol_448_1_END:
@@ -7186,8 +7168,7 @@
FOR_libgogo_symbol_460_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:460:25
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_460_1_END
JMP FOR_libgogo_symbol_460_END
FOR_libgogo_symbol_460_1_END:
@@ -7722,8 +7703,7 @@
FOR_libgogo_symbol_503_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:503:21
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_503_1_END
JMP FOR_libgogo_symbol_503_END
FOR_libgogo_symbol_503_1_END:
@@ -7896,8 +7876,7 @@
FOR_libgogo_symbol_511_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:511:33
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_511_1_END
JMP FOR_libgogo_symbol_511_END
FOR_libgogo_symbol_511_1_END:
@@ -8432,8 +8411,7 @@
FOR_libgogo_symbol_555_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:555:21
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_555_1_END
JMP FOR_libgogo_symbol_555_END
FOR_libgogo_symbol_555_1_END:
@@ -8659,8 +8637,7 @@
//--- Assignment end at libgogo/symbol.go:563:22
//--- If start at libgogo/symbol.go:564:12
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE IF_libgogo_symbol_564_1_END
JMP IF_libgogo_symbol_564_END
IF_libgogo_symbol_564_1_END:
@@ -8701,8 +8678,7 @@
FOR_libgogo_symbol_567_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:567:17
MOVQ data(SB), R8
- MOVQ -16(SP), R9
- CMPQ R9, R8
+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_567_1_END
JMP FOR_libgogo_symbol_567_END
FOR_libgogo_symbol_567_1_END:
@@ -9023,8 +8999,7 @@
FOR_libgogo_symbol_595_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:595:21
MOVQ data(SB), R8
- MOVQ -8(SP), R9
- CMPQ R9, R8
+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_595_1_END
JMP FOR_libgogo_symbol_595_END
FOR_libgogo_symbol_595_1_END:
=======================================
--- /src/gen-expr.go Sun Jun 20 23:14:45 2010
+++ /src/gen-expr.go Mon Jun 21 00:06:51 2010
@@ -223,13 +223,7 @@
PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
}
if item2.Mode == libgogo.MODE_VAR {
- if item2.PtrType == 1 {
- MakeRegistered(item2, 0);
- opsize = GetOpSize(item2, "CMP");
- PrintInstruction_Reg_Reg("CMP", opsize, "R",
item1.R, 0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Reg_Var("CMP", "R", item1.R, "",
0, item2);
- }
+ PrintInstruction_Reg_Var("CMP", "R", item1.R, "", 0,
item2);
}
}
}
@@ -259,13 +253,7 @@
}
if item2.Mode == libgogo.MODE_VAR {
MakeRegistered(item2, 0);
- if item1.PtrType == 1 {
- MakeRegistered(item1, 0);
- opsize = GetOpSize(item2, "CMP");
- PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);
- }
+ PrintInstruction_Var_Reg("CMP", item1, "R", item2.R, "",
0);
}
}


==============================================================================
Revision: 4ab4a0fa78
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:30:23 2010
Log: libgogo asm: Handle byte parameters and return value properly
http://code.google.com/p/gogc/source/detail?r=4ab4a0fa78

Modified:
/src/_gogo_.sog
/src/libgogo/convert_amd64.s
/src/libgogo/io_amd64.s
/src/libgogo/string_amd64.s
/src/libgogo/symbol_amd64.s

=======================================
--- /src/_gogo_.sog Mon Jun 21 00:06:51 2010
+++ /src/_gogo_.sog Mon Jun 21 00:30:23 2010
@@ -2538,15 +2538,15 @@
//

TEXT libgogo·ToIntFromByte(SB),$0-16 //ToIntFromByte: 1 parameter, 1
return value
- MOVQ $0, AX //Set AX to 0
- MOVB 8(SP), AL //Move byte parameter to AL (first parameter => SP+64bit)
- MOVQ AX, 16(SP) //Move whole AX register with byte parameter to result
(return value after one parameter => SP+2*64bit)
+ MOVQ $0, 16(SP) //Initialize return value (return value after one
parameter => SP+2*64bit)
+ MOVB 8(SP), AX //Move byte parameter to AX (first parameter => SP+64bit)
+ MOVB AX, 16(SP) //Move whole AX register with byte parameter to result
(return value after one parameter => SP+2*64bit)
RET

TEXT libgogo·ToByteFromInt(SB),$0-16 //ToByteFromInt: 1 parameter, 1
return value
MOVQ $0, 16(SP) //Clear whole return value (return value after one
parameter => SP+2*64bit)
- MOVQ 8(SP), AX //Move whole parameter to AX (first parameter => SP+64bit)
- MOVB AL, 16(SP) //Move AL (last byte of parameter) to result (return
value after one parameter => SP+2*64bit)
+ MOVB 8(SP), AX //Move byte parameter (part) to AX (first parameter =>
SP+64bit)
+ MOVB AX, 16(SP) //Move AL (last byte of parameter) to result (return
value after one parameter => SP+2*64bit)
RET

TEXT libgogo·ToUint64FromBytePtr(SB),$0-16 //ToUint64FromBytePtr: 1
parameter, 1 return value
@@ -2760,7 +2760,7 @@
TEXT libgogo·GetChar(SB),$0-16 //Read: 1 parameter (2), 1 return value
MOVQ $0, AX //sys_read (3 parameters)
MOVQ 8(SP), DI //fd (first parameter => SP+64bit)
- MOVQ $0, 16(SP) //Initialize result with 0
+ MOVQ $0, 16(SP) //Initialize return value (return value after one
parameter => SP+2*64bit)
LEAQ 16(SP), SI //buffer (return value after one parameter => SP+2*64bit)
MOVQ $1, DX //buffer size (size 1)
SYSCALL //Linux syscall
@@ -9473,7 +9473,6 @@
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET

-
TEXT libgogo·ResetString(SB),0,$0-0
//--- Local variable assignment start at libgogo/string.go:33:25
//--- Local variable assignment RHS load start at libgogo/string.go:33:25
@@ -10577,16 +10576,16 @@
//

TEXT libgogo·StringLength(SB),$0-24 //StringLength: 1 parameter (2), 1
return value
- MOVQ $0, 24(SP) //Set return value to 0
- MOVW 16(SP), AX //String length is stored together with the string
(first parameter = SP+64bit -> +64bit = SP+2*64bit)
- MOVW AX, 24(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
+ MOVQ $0, 24(SP) //Set return value to 0 (return value after one
parameter => SP+3*64bit)
+ MOVL 16(SP), AX //String length is stored together with the string
(first parameter = SP+64bit -> +64bit = SP+2*64bit)
+ MOVL AX, 24(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
RET

TEXT libgogo·StringLength2(SB),$0-16 //StringLength2: 1 parameter, 1
return value
- MOVQ $0, 16(SP) //Set return value to 0
+ MOVQ $0, 16(SP) //Set return value to 0 (return value after one
parameter => SP+2*64bit)
MOVQ 8(SP), AX //Load string address to AX (first parameter = SP+64bit)
- MOVW 8(AX), BX //String length is stored together with the string
- MOVW BX, 16(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
+ MOVL 8(AX), BX //String length is stored together with the string at
offset 8
+ MOVL BX, 16(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+2*64bit)
RET

TEXT libgogo·GetStringAddress(SB),$0-16 //GetStringAddress: 1 parameter, 1
return value
=======================================
--- /src/libgogo/convert_amd64.s Sat Jun 19 01:30:33 2010
+++ /src/libgogo/convert_amd64.s Mon Jun 21 00:30:23 2010
@@ -7,15 +7,15 @@
//

TEXT ·ToIntFromByte(SB),$0-16 //ToIntFromByte: 1 parameter, 1 return value
- MOVQ $0, AX //Set AX to 0
- MOVB 8(SP), AL //Move byte parameter to AL (first parameter => SP+64bit)
- MOVQ AX, 16(SP) //Move whole AX register with byte parameter to result
(return value after one parameter => SP+2*64bit)
+ MOVQ $0, 16(SP) //Initialize return value (return value after one
parameter => SP+2*64bit)
+ MOVB 8(SP), AX //Move byte parameter to AX (first parameter => SP+64bit)
+ MOVB AX, 16(SP) //Move whole AX register with byte parameter to result
(return value after one parameter => SP+2*64bit)
RET

TEXT ·ToByteFromInt(SB),$0-16 //ToByteFromInt: 1 parameter, 1 return value
MOVQ $0, 16(SP) //Clear whole return value (return value after one
parameter => SP+2*64bit)
- MOVQ 8(SP), AX //Move whole parameter to AX (first parameter => SP+64bit)
- MOVB AL, 16(SP) //Move AL (last byte of parameter) to result (return
value after one parameter => SP+2*64bit)
+ MOVB 8(SP), AX //Move byte parameter (part) to AX (first parameter =>
SP+64bit)
+ MOVB AX, 16(SP) //Move AL (last byte of parameter) to result (return
value after one parameter => SP+2*64bit)
RET

TEXT ·ToUint64FromBytePtr(SB),$0-16 //ToUint64FromBytePtr: 1 parameter, 1
return value
=======================================
--- /src/libgogo/io_amd64.s Sun Jun 20 11:01:59 2010
+++ /src/libgogo/io_amd64.s Mon Jun 21 00:30:23 2010
@@ -47,7 +47,7 @@
TEXT ·GetChar(SB),$0-16 //Read: 1 parameter (2), 1 return value
MOVQ $0, AX //sys_read (3 parameters)
MOVQ 8(SP), DI //fd (first parameter => SP+64bit)
- MOVQ $0, 16(SP) //Initialize result with 0
+ MOVQ $0, 16(SP) //Initialize return value (return value after one
parameter => SP+2*64bit)
LEAQ 16(SP), SI //buffer (return value after one parameter => SP+2*64bit)
MOVQ $1, DX //buffer size (size 1)
SYSCALL //Linux syscall
=======================================
--- /src/libgogo/string_amd64.s Sat Jun 19 01:30:33 2010
+++ /src/libgogo/string_amd64.s Mon Jun 21 00:30:23 2010
@@ -7,16 +7,16 @@
//

TEXT ·StringLength(SB),$0-24 //StringLength: 1 parameter (2), 1 return
value
- MOVQ $0, 24(SP) //Set return value to 0
- MOVW 16(SP), AX //String length is stored together with the string
(first parameter = SP+64bit -> +64bit = SP+2*64bit)
- MOVW AX, 24(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
+ MOVQ $0, 24(SP) //Set return value to 0 (return value after one
parameter => SP+3*64bit)
+ MOVL 16(SP), AX //String length is stored together with the string
(first parameter = SP+64bit -> +64bit = SP+2*64bit)
+ MOVL AX, 24(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
RET

TEXT ·StringLength2(SB),$0-16 //StringLength2: 1 parameter, 1 return value
- MOVQ $0, 16(SP) //Set return value to 0
+ MOVQ $0, 16(SP) //Set return value to 0 (return value after one
parameter => SP+2*64bit)
MOVQ 8(SP), AX //Load string address to AX (first parameter = SP+64bit)
- MOVW 8(AX), BX //String length is stored together with the string
- MOVW BX, 16(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
+ MOVL 8(AX), BX //String length is stored together with the string at
offset 8
+ MOVL BX, 16(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+2*64bit)
RET

TEXT ·GetStringAddress(SB),$0-16 //GetStringAddress: 1 parameter, 1 return
value
=======================================
--- /src/libgogo/symbol_amd64.s Sat Jun 19 01:30:33 2010
+++ /src/libgogo/symbol_amd64.s Mon Jun 21 00:30:23 2010
@@ -12,4 +12,3 @@
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET

-

go...@googlecode.com

unread,
Aug 17, 2010, 11:11:55 PM8/17/10
to go...@googlegroups.com
2 new revisions:

Revision: 32866813e9
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:56:25 2010
Log: gen-expr.go: Reverted most of the previous changed as they were
plain ...
http://code.google.com/p/gogc/source/detail?r=32866813e9

Revision: 52f858559d
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 01:21:30 2010
Log: gen-expr.go: Re-reverted everything - should now work finally
http://code.google.com/p/gogc/source/detail?r=52f858559d

==============================================================================
Revision: 32866813e9
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 00:56:25 2010
Log: gen-expr.go: Reverted most of the previous changed as they were plain
wrong
http://code.google.com/p/gogc/source/detail?r=32866813e9

Modified:
/src/_gogo_.sog
/src/gen-expr.go

=======================================
--- /src/_gogo_.sog Mon Jun 21 00:30:23 2010
+++ /src/_gogo_.sog Mon Jun 21 00:56:25 2010
@@ -3239,8 +3239,7 @@


ADDQ $16, R8
MOVQ (R8), R8
SUBQ $1, R8

- MOVQ -40(SP), R9
- CMPQ -8(SP), R8
+ CMPQ -40(SP), R8


JL FOR_libgogo_list_62_1_END
JMP FOR_libgogo_list_62_END
FOR_libgogo_list_62_1_END:

@@ -4255,8 +4254,9 @@
MOVQ R8, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:63:37
//--- If start at libgogo/symbol.go:64:8

- MOVQ data(SB), R8
- CMPQ 16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ 16(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_64_1_END
JMP IF_libgogo_symbol_64_END
IF_libgogo_symbol_64_1_END:

@@ -4337,8 +4337,9 @@
MOVQ R8, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:81:40
//--- If start at libgogo/symbol.go:82:8

- MOVQ data(SB), R8
- CMPQ 16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ 16(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_82_1_END
JMP IF_libgogo_symbol_82_END
IF_libgogo_symbol_82_1_END:

@@ -4503,8 +4504,9 @@
MOVQ R8, -8(SP)


//--- Assignment end at libgogo/symbol.go:108:38
//--- If start at libgogo/symbol.go:109:8

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_109_1_END
JMP IF_libgogo_symbol_109_END
IF_libgogo_symbol_109_1_END:

@@ -4652,8 +4654,9 @@
MOVQ $0, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:138:25
//--- If start at libgogo/symbol.go:141:8

- MOVQ data(SB), R8
- CMPQ 8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ 8(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_141_1_END
JMP IF_libgogo_symbol_141_END
IF_libgogo_symbol_141_1_END:

@@ -4709,8 +4712,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:147:46

FOR_libgogo_symbol_147_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:147:55

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_147_1_END
JMP FOR_libgogo_symbol_147_END
FOR_libgogo_symbol_147_1_END:

@@ -5070,8 +5074,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:215:20

FOR_libgogo_symbol_215_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:215:25

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8
JNE FOR_libgogo_symbol_215_1_END
JMP FOR_libgogo_symbol_215_END
FOR_libgogo_symbol_215_1_END:
@@ -5093,8 +5098,9 @@
JMP FOR_libgogo_symbol_215_EXPR_START


FOR_libgogo_symbol_215_BODY:
//--- If start at libgogo/symbol.go:216:12

- MOVQ 8(SP), R8
- CMPQ -16(SP), R8
+ LEAQ 8(SP), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JE IF_libgogo_symbol_216_1_END
JMP IF_libgogo_symbol_216_END
IF_libgogo_symbol_216_1_END:

@@ -5138,8 +5144,9 @@
FOR_libgogo_symbol_215_END:


//--- For end at libgogo/symbol.go:221:6
//--- If start at libgogo/symbol.go:222:8

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JE IF_libgogo_symbol_222_1_END
JMP IF_libgogo_symbol_222_END
IF_libgogo_symbol_222_1_END:

@@ -5226,8 +5233,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:247:23

FOR_libgogo_symbol_247_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:247:28

- MOVQ data(SB), R8
- CMPQ -32(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -32(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_247_1_END
JMP FOR_libgogo_symbol_247_END
FOR_libgogo_symbol_247_1_END:

@@ -5289,8 +5297,9 @@
FOR_libgogo_symbol_247_END:


//--- For end at libgogo/symbol.go:250:6
//--- If start at libgogo/symbol.go:251:8

- MOVQ data(SB), R8
- CMPQ -24(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -24(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_251_1_END
JMP IF_libgogo_symbol_251_END
IF_libgogo_symbol_251_1_END:

@@ -5357,8 +5366,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:267:26

FOR_libgogo_symbol_267_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:267:37

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_267_1_END
JMP FOR_libgogo_symbol_267_END
FOR_libgogo_symbol_267_1_END:

@@ -5551,8 +5561,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:289:24

FOR_libgogo_symbol_289_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:289:33

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_289_1_END
JMP FOR_libgogo_symbol_289_END
FOR_libgogo_symbol_289_1_END:

@@ -5761,8 +5772,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:311:23

FOR_libgogo_symbol_311_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:311:31

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_311_1_END
JMP FOR_libgogo_symbol_311_END
FOR_libgogo_symbol_311_1_END:

@@ -5872,8 +5884,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:329:23

FOR_libgogo_symbol_329_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:329:31

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_329_1_END
JMP FOR_libgogo_symbol_329_END
FOR_libgogo_symbol_329_1_END:

@@ -5980,8 +5993,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:345:32

FOR_libgogo_symbol_345_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:345:42

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_345_1_END
JMP FOR_libgogo_symbol_345_END
FOR_libgogo_symbol_345_1_END:

@@ -6231,8 +6245,9 @@
MOVQ R10, 8(R8)


//--- Assignment end at libgogo/symbol.go:381:39
//--- If start at libgogo/symbol.go:382:8

- MOVQ data(SB), R8
- CMPQ 56(SP), R8
+ LEAQ data(SB), R8
+ LEAQ 56(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_382_1_END
JMP IF_libgogo_symbol_382_END
IF_libgogo_symbol_382_1_END:

@@ -6323,8 +6338,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:401:18

FOR_libgogo_symbol_401_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:401:21

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_401_1_END
JMP FOR_libgogo_symbol_401_END
FOR_libgogo_symbol_401_1_END:

@@ -6932,8 +6948,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:448:18

FOR_libgogo_symbol_448_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:448:21

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_448_1_END
JMP FOR_libgogo_symbol_448_END
FOR_libgogo_symbol_448_1_END:

@@ -7167,8 +7184,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:460:22

FOR_libgogo_symbol_460_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:460:25

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_460_1_END
JMP FOR_libgogo_symbol_460_END
FOR_libgogo_symbol_460_1_END:

@@ -7702,8 +7720,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:503:18

FOR_libgogo_symbol_503_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:503:21

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_503_1_END
JMP FOR_libgogo_symbol_503_END
FOR_libgogo_symbol_503_1_END:

@@ -7875,8 +7894,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:511:30

FOR_libgogo_symbol_511_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:511:33

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_511_1_END
JMP FOR_libgogo_symbol_511_END
FOR_libgogo_symbol_511_1_END:

@@ -8410,8 +8430,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:555:18

FOR_libgogo_symbol_555_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:555:21

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_555_1_END
JMP FOR_libgogo_symbol_555_END
FOR_libgogo_symbol_555_1_END:

@@ -8636,8 +8657,9 @@
MOVQ R8, -16(SP)


//--- Assignment end at libgogo/symbol.go:563:22
//--- If start at libgogo/symbol.go:564:12

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE IF_libgogo_symbol_564_1_END
JMP IF_libgogo_symbol_564_END
IF_libgogo_symbol_564_1_END:

@@ -8677,8 +8699,9 @@


//--- For start at libgogo/symbol.go:567:13

FOR_libgogo_symbol_567_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:567:17

- MOVQ data(SB), R8
- CMPQ -16(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -16(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_567_1_END
JMP FOR_libgogo_symbol_567_END
FOR_libgogo_symbol_567_1_END:

@@ -8998,8 +9021,9 @@


//--- For [initial assignment] end at libgogo/symbol.go:595:18

FOR_libgogo_symbol_595_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:595:21

- MOVQ data(SB), R8
- CMPQ -8(SP), R8
+ LEAQ data(SB), R8
+ LEAQ -8(SP), R9
+ CMPQ R9, R8


JNE FOR_libgogo_symbol_595_1_END
JMP FOR_libgogo_symbol_595_END
FOR_libgogo_symbol_595_1_END:
=======================================

--- /src/gen-expr.go Mon Jun 21 00:06:51 2010
+++ /src/gen-expr.go Mon Jun 21 00:56:25 2010
@@ -216,22 +216,29 @@


item2.A = 0;
op = TOKEN_NOTEQUAL; // Force != for comparison against 0
} else {

- MakeRegistered(item1, 0);
+ if item1.PtrType == 0 {
+ MakeRegistered(item1, 0);
+ } else {
+ MakeRegistered(item1, 1);
+ }
if item2.Mode == libgogo.MODE_REG {
- DereferRegisterIfNecessary(item2);


opsize = GetOpSize(item2, "CMP");

PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
}
if item2.Mode == libgogo.MODE_VAR {

- PrintInstruction_Reg_Var("CMP", "R", item1.R, "", 0,
item2);

+ if item2.PtrType == 1 {
+ MakeRegistered(item2, 1);
+ PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R,

0, 0, 0, "", "R", item2.R, 0, 0, 0, "");

+ } else {


+ PrintInstruction_Reg_Var("CMP", "R", item1.R, "",
0, item2);

+ }


}
}
}
if item1.Mode == libgogo.MODE_REG {
DereferRegisterIfNecessary(item1);
if item2.Mode == libgogo.MODE_CONST {

- opsize = GetOpSize(item2, "CMP");

- PrintInstruction_Reg_Imm("CMP", opsize, "R", item1.R, 0,
0, 0, "", item2.A);
+ PrintInstruction_Reg_Imm("CMP", 8, "R", item1.R, 0, 0,

0, "", item2.A);
}
if item2.Mode == libgogo.MODE_REG {

DereferRegisterIfNecessary(item2);
@@ -248,15 +255,28 @@
}
if item2.Mode == libgogo.MODE_REG {
DereferRegisterIfNecessary(item2);
- MakeRegistered(item1, 0);


- PrintInstruction_Var_Reg("CMP", item1, "R", item2.R, "",
0);

+ if item1.PtrType == 1 {
+ MakeRegistered(item1, 1);
+ PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,

0, "", "R", item2.R, 0, 0, 0, "");

+ } else {


+ PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);

+ }
}
if item2.Mode == libgogo.MODE_VAR {
- MakeRegistered(item2, 0);


- PrintInstruction_Var_Reg("CMP", item1, "R", item2.R, "",
0);

+ if item2.PtrType == 0 {
+ MakeRegistered(item2, 0);
+ } else {
+ MakeRegistered(item2, 1);
+ }
+ if item1.PtrType == 1 {
+ MakeRegistered(item1, 1);
+ PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,

0, "", "R", item2.R, 0, 0, 0, "");

+ } else {


+ PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);

+ }
}
}
-
+
// Prepare item
item1.Itemtype = bool_t;
item1.Mode = libgogo.MODE_COND;

==============================================================================
Revision: 52f858559d
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 01:21:30 2010
Log: gen-expr.go: Re-reverted everything - should now work finally
http://code.google.com/p/gogc/source/detail?r=52f858559d

Modified:
/src/_gogo_.sog
/src/gen-expr.go

=======================================
--- /src/_gogo_.sog Mon Jun 21 00:56:25 2010
+++ /src/_gogo_.sog Mon Jun 21 01:21:30 2010
@@ -4254,9 +4254,8 @@
MOVQ R8, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:63:37
//--- If start at libgogo/symbol.go:64:8

- LEAQ data(SB), R8
- LEAQ 16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ 16(SP), R8
JNE IF_libgogo_symbol_64_1_END
JMP IF_libgogo_symbol_64_END
IF_libgogo_symbol_64_1_END:

@@ -4337,9 +4336,8 @@
MOVQ R8, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:81:40
//--- If start at libgogo/symbol.go:82:8

- LEAQ data(SB), R8
- LEAQ 16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ 16(SP), R8
JNE IF_libgogo_symbol_82_1_END
JMP IF_libgogo_symbol_82_END
IF_libgogo_symbol_82_1_END:

@@ -4504,9 +4502,8 @@
MOVQ R8, -8(SP)


//--- Assignment end at libgogo/symbol.go:108:38
//--- If start at libgogo/symbol.go:109:8

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE IF_libgogo_symbol_109_1_END
JMP IF_libgogo_symbol_109_END
IF_libgogo_symbol_109_1_END:

@@ -4654,9 +4651,8 @@
MOVQ $0, -8(SP)


//--- Local variable assignment end at libgogo/symbol.go:138:25
//--- If start at libgogo/symbol.go:141:8

- LEAQ data(SB), R8
- LEAQ 8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ 8(SP), R8
JNE IF_libgogo_symbol_141_1_END
JMP IF_libgogo_symbol_141_END
IF_libgogo_symbol_141_1_END:

@@ -4712,9 +4708,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:147:46

FOR_libgogo_symbol_147_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:147:55

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_147_1_END
JMP FOR_libgogo_symbol_147_END
FOR_libgogo_symbol_147_1_END:

@@ -5074,9 +5069,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:215:20

FOR_libgogo_symbol_215_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:215:25

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_215_1_END
JMP FOR_libgogo_symbol_215_END
FOR_libgogo_symbol_215_1_END:

@@ -5098,9 +5092,8 @@
JMP FOR_libgogo_symbol_215_EXPR_START


FOR_libgogo_symbol_215_BODY:
//--- If start at libgogo/symbol.go:216:12

- LEAQ 8(SP), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ 8(SP), R8


+ CMPQ -16(SP), R8
JE IF_libgogo_symbol_216_1_END
JMP IF_libgogo_symbol_216_END
IF_libgogo_symbol_216_1_END:

@@ -5144,9 +5137,8 @@
FOR_libgogo_symbol_215_END:


//--- For end at libgogo/symbol.go:221:6
//--- If start at libgogo/symbol.go:222:8

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JE IF_libgogo_symbol_222_1_END
JMP IF_libgogo_symbol_222_END
IF_libgogo_symbol_222_1_END:

@@ -5233,9 +5225,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:247:23

FOR_libgogo_symbol_247_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:247:28

- LEAQ data(SB), R8
- LEAQ -32(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -32(SP), R8
JNE FOR_libgogo_symbol_247_1_END
JMP FOR_libgogo_symbol_247_END
FOR_libgogo_symbol_247_1_END:

@@ -5297,9 +5288,8 @@
FOR_libgogo_symbol_247_END:


//--- For end at libgogo/symbol.go:250:6
//--- If start at libgogo/symbol.go:251:8

- LEAQ data(SB), R8
- LEAQ -24(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -24(SP), R8
JNE IF_libgogo_symbol_251_1_END
JMP IF_libgogo_symbol_251_END
IF_libgogo_symbol_251_1_END:

@@ -5366,9 +5356,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:267:26

FOR_libgogo_symbol_267_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:267:37

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_267_1_END
JMP FOR_libgogo_symbol_267_END
FOR_libgogo_symbol_267_1_END:

@@ -5561,9 +5550,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:289:24

FOR_libgogo_symbol_289_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:289:33

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_289_1_END
JMP FOR_libgogo_symbol_289_END
FOR_libgogo_symbol_289_1_END:

@@ -5772,9 +5760,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:311:23

FOR_libgogo_symbol_311_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:311:31

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_311_1_END
JMP FOR_libgogo_symbol_311_END
FOR_libgogo_symbol_311_1_END:

@@ -5884,9 +5871,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:329:23

FOR_libgogo_symbol_329_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:329:31

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_329_1_END
JMP FOR_libgogo_symbol_329_END
FOR_libgogo_symbol_329_1_END:

@@ -5993,9 +5979,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:345:32

FOR_libgogo_symbol_345_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:345:42

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_345_1_END
JMP FOR_libgogo_symbol_345_END
FOR_libgogo_symbol_345_1_END:

@@ -6245,9 +6230,8 @@
MOVQ R10, 8(R8)


//--- Assignment end at libgogo/symbol.go:381:39
//--- If start at libgogo/symbol.go:382:8

- LEAQ data(SB), R8
- LEAQ 56(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ 56(SP), R8
JNE IF_libgogo_symbol_382_1_END
JMP IF_libgogo_symbol_382_END
IF_libgogo_symbol_382_1_END:

@@ -6338,9 +6322,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:401:18

FOR_libgogo_symbol_401_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:401:21

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_401_1_END
JMP FOR_libgogo_symbol_401_END
FOR_libgogo_symbol_401_1_END:

@@ -6948,9 +6931,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:448:18

FOR_libgogo_symbol_448_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:448:21

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_448_1_END
JMP FOR_libgogo_symbol_448_END
FOR_libgogo_symbol_448_1_END:

@@ -7184,9 +7166,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:460:22

FOR_libgogo_symbol_460_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:460:25

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_460_1_END
JMP FOR_libgogo_symbol_460_END
FOR_libgogo_symbol_460_1_END:

@@ -7720,9 +7701,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:503:18

FOR_libgogo_symbol_503_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:503:21

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_503_1_END
JMP FOR_libgogo_symbol_503_END
FOR_libgogo_symbol_503_1_END:

@@ -7894,9 +7874,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:511:30

FOR_libgogo_symbol_511_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:511:33

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_511_1_END
JMP FOR_libgogo_symbol_511_END
FOR_libgogo_symbol_511_1_END:

@@ -8430,9 +8409,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:555:18

FOR_libgogo_symbol_555_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:555:21

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_555_1_END
JMP FOR_libgogo_symbol_555_END
FOR_libgogo_symbol_555_1_END:

@@ -8657,9 +8635,8 @@
MOVQ R8, -16(SP)


//--- Assignment end at libgogo/symbol.go:563:22
//--- If start at libgogo/symbol.go:564:12

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE IF_libgogo_symbol_564_1_END
JMP IF_libgogo_symbol_564_END
IF_libgogo_symbol_564_1_END:

@@ -8699,9 +8676,8 @@


//--- For start at libgogo/symbol.go:567:13

FOR_libgogo_symbol_567_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:567:17

- LEAQ data(SB), R8
- LEAQ -16(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -16(SP), R8
JNE FOR_libgogo_symbol_567_1_END
JMP FOR_libgogo_symbol_567_END
FOR_libgogo_symbol_567_1_END:

@@ -9021,9 +8997,8 @@


//--- For [initial assignment] end at libgogo/symbol.go:595:18

FOR_libgogo_symbol_595_EXPR_START:
//--- For [expression] start at libgogo/symbol.go:595:21

- LEAQ data(SB), R8
- LEAQ -8(SP), R9
- CMPQ R9, R8
+ MOVQ data(SB), R8


+ CMPQ -8(SP), R8
JNE FOR_libgogo_symbol_595_1_END
JMP FOR_libgogo_symbol_595_END
FOR_libgogo_symbol_595_1_END:
=======================================

--- /src/gen-expr.go Mon Jun 21 00:56:25 2010
+++ /src/gen-expr.go Mon Jun 21 01:21:30 2010
@@ -216,22 +216,13 @@


item2.A = 0;
op = TOKEN_NOTEQUAL; // Force != for comparison against 0
} else {
- if item1.PtrType == 0 {
- MakeRegistered(item1, 0);
- } else {
- MakeRegistered(item1, 1);
- }
+ MakeRegistered(item1, 0);
if item2.Mode == libgogo.MODE_REG {

opsize = GetOpSize(item2, "CMP");

PrintInstruction_Reg_Reg("CMP", opsize, "R", item1.R,
0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
}
if item2.Mode == libgogo.MODE_VAR {
- if item2.PtrType == 1 {

- MakeRegistered(item2, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R,

0, 0, 0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Reg_Var("CMP", "R", item1.R, "",
0, item2);
- }
+ PrintInstruction_Reg_Var("CMP", "R", item1.R, "", 0,
item2);
}
}
}

@@ -255,25 +246,11 @@
}
if item2.Mode == libgogo.MODE_REG {
DereferRegisterIfNecessary(item2);


- if item1.PtrType == 1 {

- MakeRegistered(item1, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,

0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);
- }
+ PrintInstruction_Var_Reg("CMP", item1, "R", item2.R, "",
0);
}

if item2.Mode == libgogo.MODE_VAR {


- if item2.PtrType == 0 {
- MakeRegistered(item2, 0);
- } else {
- MakeRegistered(item2, 1);
- }

- if item1.PtrType == 1 {

- MakeRegistered(item1, 1);
- PrintInstruction_Reg_Reg("CMP", 8, "R", item1.R, 0, 0,

0, "", "R", item2.R, 0, 0, 0, "");
- } else {
- PrintInstruction_Var_Reg("CMP", item1, "R",
item2.R, "", 0);
- }

+ MakeRegistered(item2, 0);

go...@googlecode.com

unread,
Aug 17, 2010, 11:15:58 PM8/17/10
to go...@googlegroups.com
2 new revisions:

Revision: bf697b0edd
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 01:53:07 2010
Log: parser.go: Fixed another return value offset bug
http://code.google.com/p/gogc/source/detail?r=bf697b0edd

Revision: de32ca5591
Author: Michael Lippautz <michael....@gmail.com>
Date: Mon Jun 21 02:00:21 2010
Log: gogo/linker: Make linker independend from any file loop in gogo's
main...
http://code.google.com/p/gogc/source/detail?r=de32ca5591

==============================================================================
Revision: bf697b0edd
Author: Andreas Unterweger <and...@gmx.at>
Date: Mon Jun 21 01:53:07 2010
Log: parser.go: Fixed another return value offset bug
http://code.google.com/p/gogc/source/detail?r=bf697b0edd

Modified:
/src/_gogo_.sog
/src/parser.go

=======================================
--- /src/_gogo_.sog Mon Jun 21 01:21:30 2010
+++ /src/_gogo_.sog Mon Jun 21 01:53:07 2010
@@ -2383,7 +2383,7 @@
MOVQ -56(SP), R8


//--- Restoring registers after function call end at

libgogo/convert.go:78:59
ANDQ $255, R9
- MOVB -72(SP), R9
+ MOVB -64(SP), R9
MOVB R9, (R8)
//--- Assignment end at libgogo/convert.go:78:60
//--- Assignment start at libgogo/convert.go:79:15
@@ -4453,7 +4453,7 @@


//--- Restoring registers after function call start at

libgogo/symbol.go:99:58
MOVQ -8(SP), R8


//--- Restoring registers after function call end at

libgogo/symbol.go:99:58
- MOVQ -24(SP), R9
+ MOVQ -16(SP), R9
MOVQ R9, (R8)
//--- Assignment end at libgogo/symbol.go:99:59
RET
@@ -4626,7 +4626,7 @@


//--- Restoring registers after function call start at

libgogo/symbol.go:129:50
MOVQ -8(SP), R8


//--- Restoring registers after function call end at

libgogo/symbol.go:129:50
- MOVQ -24(SP), R9
+ MOVQ -16(SP), R9
MOVQ R9, (R8)
//--- Assignment end at libgogo/symbol.go:129:51
//--- Assignment start at libgogo/symbol.go:130:15
=======================================
--- /src/parser.go Sun Jun 20 08:36:58 2010
+++ /src/parser.go Mon Jun 21 01:53:07 2010
@@ -1053,7 +1053,7 @@
RestoreUsedRegisters(TotalLocalVariableSize, RegisterStackOffset);
}
PrintDebugString("Leaving ParseFunctionCall()",1000);
- ReturnItem = GetReturnItem(FunctionCalled, TotalLocalVariableSize,
TotalParameterSize, RegisterStackOffset);
+ ReturnItem = GetReturnItem(FunctionCalled, TotalLocalVariableSize,
TotalParameterSize, 0); //No stack offset as TotalLocalVariableSize already
includes it
return ReturnItem;
}


==============================================================================
Revision: de32ca5591
Author: Michael Lippautz <michael....@gmail.com>
Date: Mon Jun 21 02:00:21 2010
Log: gogo/linker: Make linker independend from any file loop in gogo's main
routines
http://code.google.com/p/gogc/source/detail?r=de32ca5591

Modified:
/src/gogo.go
/src/linker.go

=======================================
--- /src/gogo.go Sun Jun 20 08:36:58 2010
+++ /src/gogo.go Mon Jun 21 02:00:21 2010
@@ -74,9 +74,7 @@
}
}
} else { // Compile==2 => Link
- for
curFileIndex=0;curFileIndex<fileInfoLen;curFileIndex=curFileIndex+1 {
- Link();
- }
+ Link();
}

for
curFileIndex=0;curFileIndex<fileInfoLen;curFileIndex=curFileIndex+1 {
=======================================
--- /src/linker.go Sun Jun 20 09:12:37 2010
+++ /src/linker.go Mon Jun 21 02:00:21 2010
@@ -408,34 +408,38 @@
var symtable uint64 = 0;
var ld LineDesc;

- ResetToken();
- GetLine(&ld);
- for ;tok.id != TOKEN_EOS;{
- strCmp = libgogo.StringCompare("//Symbol table:", ld.Line);
- if strCmp == 0 {
- symtable = 1;
- GetLine(&ld); // Proceed to next line
- }
- if symtable != 0 { // Parse symtable entries
- strCmp = libgogo.StringCompare("//End Symbol table", ld.Line);
+ for
curFileIndex=0;curFileIndex<fileInfoLen;curFileIndex=curFileIndex+1 {
+
+ ResetToken();
+ GetLine(&ld);
+ for ;tok.id != TOKEN_EOS;{
+ strCmp = libgogo.StringCompare("//Symbol table:", ld.Line);
if strCmp == 0 {
- symtable = 0;
- } else {
- ParseSymTblLine(&ld);
- }
- } else { // Parse normal lines and fix everything
- if ld.NeedsFix != 0 {
- GetLine(&ld);
- FixOffset(&ld);
- } else {
- strCmp = libgogo.StringCompare(ld.Line, "__UNLINKED_CODE");
- if strCmp != 0 {
- libgogo.PrintString(ld.Line);
- libgogo.PrintString("\n");
- }
- }
-
- }
- GetLine(&ld);
+ symtable = 1;
+ GetLine(&ld); // Proceed to next line
+ }
+ if symtable != 0 { // Parse symtable entries
+ strCmp = libgogo.StringCompare("//End Symbol table",
ld.Line);
+ if strCmp == 0 {
+ symtable = 0;
+ } else {
+ ParseSymTblLine(&ld);
+ }
+ } else { // Parse normal lines and fix everything
+ if ld.NeedsFix != 0 {
+ GetLine(&ld);
+ FixOffset(&ld);
+ } else {
+ strCmp =
libgogo.StringCompare(ld.Line, "__UNLINKED_CODE");
+ if strCmp != 0 {
+ libgogo.PrintString(ld.Line);
+ libgogo.PrintString("\n");
+ }
+ }
+
+ }
+ GetLine(&ld);
+ }
+
}
}

Reply all
Reply to author
Forward
0 new messages