[Decompiler] Replace type hint system and improve variable types. (#320)

* get gkernel and gkernel-h at least somewhat working in the offline tests

* strip comments from json

* switch hints to casts. online tests passing, offline passing up to gkernel

* variable retyping is added

* fix up casts in lets

* update
This commit is contained in:
water111
2021-03-13 16:10:39 -05:00
committed by GitHub
parent fe336b7b5f
commit 814480f9e5
61 changed files with 1652 additions and 497 deletions
@@ -690,21 +690,21 @@ TEST_F(FormRegressionTest, ExprArrayMethod2) {
{"L336", "~A"},
{"L335", " ~A"},
{"L334", ")"}},
parse_hint_json("["
"\t\t[23, [\"gp\", \"(array int32)\"]],\n"
"\t\t[43, [\"gp\", \"(array uint32)\"]],\n"
"\t\t[63, [\"gp\", \"(array int64)\"]],\n"
"\t\t[83, [\"gp\", \"(array uint64)\"]],\n"
"\t\t[102, [\"gp\", \"(array int8)\"]],\n"
"\t\t[121, [\"gp\", \"(array uint8)\"]],\n"
"\t\t[141, [\"gp\", \"(array int16)\"]],\n"
"\t\t[161, [\"gp\", \"(array uint16)\"]],\n"
"\t\t[186, [\"gp\", \"(array uint128)\"]],\n"
"\t\t[204, [\"gp\", \"(array int32)\"]],\n"
"\t\t[223, [\"gp\", \"(array float)\"]],\n"
"\t\t[232, [\"gp\", \"(array float)\"]],\n"
"\t\t[249, [\"gp\", \"(array basic)\"]],\n"
"\t\t[258, [\"gp\", \"(array basic)\"]]]"));
parse_cast_json("["
"\t\t[23, \"gp\", \"(array int32)\"],\n"
"\t\t[43, \"gp\", \"(array uint32)\"],\n"
"\t\t[63, \"gp\", \"(array int64)\"],\n"
"\t\t[83, \"gp\", \"(array uint64)\"],\n"
"\t\t[102, \"gp\", \"(array int8)\"],\n"
"\t\t[121, \"gp\", \"(array uint8)\"],\n"
"\t\t[141, \"gp\", \"(array int16)\"],\n"
"\t\t[161, \"gp\", \"(array uint16)\"],\n"
"\t\t[186, \"gp\", \"(array uint128)\"],\n"
"\t\t[204, \"gp\", \"(array int32)\"],\n"
"\t\t[223, \"gp\", \"(array float)\"],\n"
"\t\t[232, \"gp\", \"(array float)\"],\n"
"\t\t[249, \"gp\", \"(array basic)\"],\n"
"\t\t[258, \"gp\", \"(array basic)\"]]"));
}
TEST_F(FormRegressionTest, ExprArrayMethod3) {
@@ -1238,7 +1238,7 @@ TEST_F(FormRegressionTest, ExprArrayMethod3) {
" (else\n"
" (dotimes\n"
" (s5-9 (-> arg0 length))\n"
" (format #t \"~T [~D] ~D~%\" s5-9 (-> arg0 s5-9))\n"
" (format #t \"~T [~D] ~D~%\" s5-9 (-> (the-as (array int32) arg0) s5-9))\n"
" )\n"
" )\n"
" )\n"
@@ -1272,18 +1272,18 @@ TEST_F(FormRegressionTest, ExprArrayMethod3) {
{"L327", "~T [~D] #x~X~%"},
{"L326", "~T [~D] ~f~%"},
{"L325", "~T [~D] ~A~%"}},
parse_hint_json("[\t\t[44, [\"gp\", \"(array int32)\"]],\n"
"\t\t[62, [\"gp\", \"(array uint32)\"]],\n"
"\t\t[80, [\"gp\", \"(array int64)\"]],\n"
"\t\t[98, [\"gp\", \"(array uint64)\"]],\n"
"\t\t[115, [\"gp\", \"(array int8)\"]],\n"
"\t\t[132, [\"gp\", \"(array int8)\"]],\n"
"\t\t[150, [\"gp\", \"(array int16)\"]],\n"
"\t\t[168, [\"gp\", \"(array uint16)\"]],\n"
"\t\t[191, [\"gp\", \"(array uint128)\"]],\n"
"\t\t[204, [\"gp\", \"(array int32)\"]],\n"
"\t\t[226, [\"gp\", \"(array float)\"]],\n"
"\t\t[243, [\"gp\", \"(array basic)\"]]]"));
parse_cast_json("[\t\t[44, \"gp\", \"(array int32)\"],\n"
"\t\t[62, \"gp\", \"(array uint32)\"],\n"
"\t\t[80, \"gp\", \"(array int64)\"],\n"
"\t\t[98, \"gp\", \"(array uint64)\"],\n"
"\t\t[115, \"gp\", \"(array int8)\"],\n"
"\t\t[132, \"gp\", \"(array int8)\"],\n"
"\t\t[150, \"gp\", \"(array int16)\"],\n"
"\t\t[168, \"gp\", \"(array uint16)\"],\n"
"\t\t[191, \"gp\", \"(array uint128)\"],\n"
"\t\t[207, \"gp\", \"(array int32)\"],\n"
"\t\t[226, \"gp\", \"(array float)\"],\n"
"\t\t[243, \"gp\", \"(array basic)\"]]"));
}
TEST_F(FormRegressionTest, ExprValid) {
@@ -2387,7 +2387,7 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" (>= (the-as uint 70) (-> a0-3 0))\n"
" )\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -55) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-14 v0-0)))\n"
" (let ((a1-14 (the-as uint v0-0))))\n"
" )\n"
" (else\n"
" (cond\n"
@@ -2396,11 +2396,11 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" (>= (the-as uint 102) (-> a0-3 0))\n"
" )\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -87) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-20 v0-0)))\n"
" (let ((a1-20 (the-as uint v0-0))))\n"
" )\n"
" (else\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -48) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-23 v0-0)))\n"
" (let ((a1-23 (the-as uint v0-0))))\n"
" )\n"
" )\n"
" )\n"