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);
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);
+ }
+
}
}