diff --git a/.gitignore b/.gitignore index 8c4be57..0823dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,7 @@ CTestTestfile.cmake DartConfiguration.tcl *.cmake *.ll +*.ninja_deps +*.ninja_log +*.ninja +*.svg diff --git a/lib/src/archive/gsc-libc.gv b/lib/src/archive/gsc-libc.gv new file mode 100644 index 0000000..da0d9b5 --- /dev/null +++ b/lib/src/archive/gsc-libc.gv @@ -0,0 +1,937 @@ +graph { + node0x62bbfe1f79a0 [label="@\nmodule"] + node0x62bbfe1f7fd0 [label="@std\nos.gsc"] + node0x62bbfe1f7c90 [label="@std::os\ntypes"] + node0x62bbfe1fd8e0 [label="@std::types\ntypedef"] + node0x62bbfe1fd7e0 [label="@std::types\ntype"] + node0x62bbfe1fd450 [label="@std::types\nsigned"] + node0x62bbfe1fd500 [label="@std::types\nlist"] + node0x62bbfe1fd5b0 [label="@std::types\nhalf"] + node0x62bbfe1fd680 [label="@std::types\nhalf"] + node0x62bbfe1fd730 [label="@std::types\nint"] + node0x62bbfe1fd9b0 [label="@std::types\ni8"] + node0x62bbfe1fde60 [label="@std::types\ntypedef"] + node0x62bbfe1fdd60 [label="@std::types\ntype"] + node0x62bbfe1fda80 [label="@std::types\nsigned"] + node0x62bbfe1fdb30 [label="@std::types\nlist"] + node0x62bbfe1fdbe0 [label="@std::types\nhalf"] + node0x62bbfe1fdcb0 [label="@std::types\nint"] + node0x62bbfe1fdf30 [label="@std::types\ni16"] + node0x62bbfe1fe230 [label="@std::types\ntypedef"] + node0x62bbfe1fe140 [label="@std::types\ntype"] + node0x62bbfe1fdfe0 [label="@std::types\nsigned"] + node0x62bbfe1fe090 [label="@std::types\nint"] + node0x62bbfe1fe300 [label="@std::types\ni32"] + node0x62bbfe1f5df0 [label="@std::types\ntypedef"] + node0x62bbfe1fe6a0 [label="@std::types\ntype"] + node0x62bbfe1fe3e0 [label="@std::types\nsigned"] + node0x62bbfe1fe490 [label="@std::types\nlist"] + node0x62bbfe1fe540 [label="@std::types\nlong"] + node0x62bbfe1fe5f0 [label="@std::types\nint"] + node0x62bbfe1f5ec0 [label="@std::types\ni64"] + node0x62bbfe1f6400 [label="@std::types\ntypedef"] + node0x62bbfe1f6300 [label="@std::types\ntype"] + node0x62bbfe1f5f70 [label="@std::types\nsigned"] + node0x62bbfe1f6020 [label="@std::types\nlist"] + node0x62bbfe1f60d0 [label="@std::types\nlong"] + node0x62bbfe1f61a0 [label="@std::types\nlong"] + node0x62bbfe1f6250 [label="@std::types\nint"] + node0x62bbfe1f64d0 [label="@std::types\ni128"] + node0x62bbfe200750 [label="@std::types\ntypedef"] + node0x62bbfe1f6930 [label="@std::types\ntype"] + node0x62bbfe1f65d0 [label="@std::types\nunsigned"] + node0x62bbfe1f6650 [label="@std::types\nlist"] + node0x62bbfe1f6700 [label="@std::types\nhalf"] + node0x62bbfe1f67d0 [label="@std::types\nhalf"] + node0x62bbfe1f6880 [label="@std::types\nint"] + node0x62bbfe200820 [label="@std::types\nu8"] + node0x62bbfe200cb0 [label="@std::types\ntypedef"] + node0x62bbfe200bb0 [label="@std::types\ntype"] + node0x62bbfe2008d0 [label="@std::types\nunsigned"] + node0x62bbfe200980 [label="@std::types\nlist"] + node0x62bbfe200a30 [label="@std::types\nhalf"] + node0x62bbfe200b00 [label="@std::types\nint"] + node0x62bbfe200d80 [label="@std::types\nu16"] + node0x62bbfe201080 [label="@std::types\ntypedef"] + node0x62bbfe200f90 [label="@std::types\ntype"] + node0x62bbfe200e30 [label="@std::types\nunsigned"] + node0x62bbfe200ee0 [label="@std::types\nint"] + node0x62bbfe201150 [label="@std::types\nu32"] + node0x62bbfe2015e0 [label="@std::types\ntypedef"] + node0x62bbfe2014e0 [label="@std::types\ntype"] + node0x62bbfe201200 [label="@std::types\nunsigned"] + node0x62bbfe2012b0 [label="@std::types\nlist"] + node0x62bbfe201360 [label="@std::types\nlong"] + node0x62bbfe201430 [label="@std::types\nint"] + node0x62bbfe2016b0 [label="@std::types\nu64"] + node0x62bbfe201c80 [label="@std::types\ntypedef"] + node0x62bbfe201b80 [label="@std::types\ntype"] + node0x62bbfe2017f0 [label="@std::types\nunsigned"] + node0x62bbfe2018a0 [label="@std::types\nlist"] + node0x62bbfe201950 [label="@std::types\nlong"] + node0x62bbfe201a20 [label="@std::types\nlong"] + node0x62bbfe201ad0 [label="@std::types\nint"] + node0x62bbfe201d50 [label="@std::types\nu128"] + node0x62bbfe202120 [label="@std::types\ntypedef"] + node0x62bbfe202030 [label="@std::types\ntype"] + node0x62bbfe201e00 [label="@std::types\nlist"] + node0x62bbfe201eb0 [label="@std::types\nhalf"] + node0x62bbfe201f80 [label="@std::types\nfloat"] + node0x62bbfe2021f0 [label="@std::types\nf16"] + node0x62bbfe202440 [label="@std::types\ntypedef"] + node0x62bbfe202350 [label="@std::types\ntype"] + node0x62bbfe2022a0 [label="@std::types\nfloat"] + node0x62bbfe202510 [label="@std::types\nf32"] + node0x62bbfe2028e0 [label="@std::types\ntypedef"] + node0x62bbfe2027f0 [label="@std::types\ntype"] + node0x62bbfe2025c0 [label="@std::types\nlist"] + node0x62bbfe202670 [label="@std::types\ndouble"] + node0x62bbfe202740 [label="@std::types\nfloat"] + node0x62bbfe2029b0 [label="@std::types\nf64"] + node0x62bbfe1fb0a0 [label="@std::os\nprocdef"] + node0x62bbfe1fb150 [label="@std::os\n_exit"] + node0x62bbfe1fafd0 [label="@std::os\nlist"] + node0x62bbfe1fae30 [label="@std::os\nparam list"] + node0x62bbfe1faee0 [label="@std::os\nparameter"] + node0x62bbfe1faa70 [label="@std::os\nlist"] + node0x62bbfe1fa9f0 [label="@std::os\nin"] + node0x62bbfe1facb0 [label="@std::os\nparameter-declaration"] + node0x62bbfe1fabc0 [label="@std::os\ntype"] + node0x62bbfe1fab10 [label="@std::os\ni32"] + node0x62bbfe1fad80 [label="@std::os\ncode"] + node0x62bbfe1fbef0 [label="@std::os\nprocdef"] + node0x62bbfe1fbfa0 [label="@std::os\nexit"] + node0x62bbfe1fb940 [label="@std::os\nlist"] + node0x62bbfe1fb7a0 [label="@std::os\nparam list"] + node0x62bbfe1fb850 [label="@std::os\nparameter"] + node0x62bbfe1fb3b0 [label="@std::os\nlist"] + node0x62bbfe1fb300 [label="@std::os\nin"] + node0x62bbfe1fb620 [label="@std::os\nparameter-declaration"] + node0x62bbfe1fb530 [label="@std::os\ntype"] + node0x62bbfe1fb480 [label="@std::os\ni32"] + node0x62bbfe1fb6f0 [label="@std::os\ncode"] + node0x62bbfe1fbe20 [label="@std::os\nstmt list"] + node0x62bbfe1fbd50 [label="@std::os\nfuncall"] + node0x62bbfe1fba30 [label="@std::os\n_exit"] + node0x62bbfe1fbc80 [label="@std::os\narg list"] + node0x62bbfe1fbbb0 [label="@std::os\nexpr list"] + node0x62bbfe1fbb00 [label="@std::os\ncode"] + node0x62bbfe1f8230 [label="@std\nmem"] + node0x62bbfe204750 [label="@std::mem\ntypes"] + node0x62bbfe205a90 [label="@std::mem\nfundef"] + node0x62bbfe205b40 [label="@std::mem\nmalloc"] + node0x62bbfe204a60 [label="@std::mem\nref"] + node0x62bbfe204990 [label="@std::mem\ntype"] + node0x62bbfe2048e0 [label="@std::mem\nu8"] + node0x62bbfe2059c0 [label="@std::mem\nlist"] + node0x62bbfe205820 [label="@std::mem\nparam list"] + node0x62bbfe2058d0 [label="@std::mem\nparameter"] + node0x62bbfe205430 [label="@std::mem\nlist"] + node0x62bbfe205380 [label="@std::mem\nin"] + node0x62bbfe2056a0 [label="@std::mem\nparameter-declaration"] + node0x62bbfe2055b0 [label="@std::mem\ntype"] + node0x62bbfe205500 [label="@std::mem\nu32"] + node0x62bbfe205770 [label="@std::mem\nsize"] + node0x62bbfe206d90 [label="@std::mem\nfundef"] + node0x62bbfe206e40 [label="@std::mem\nrealloc"] + node0x62bbfe205f10 [label="@std::mem\nref"] + node0x62bbfe205e40 [label="@std::mem\ntype"] + node0x62bbfe205d90 [label="@std::mem\nu8"] + node0x62bbfe206cc0 [label="@std::mem\nlist"] + node0x62bbfe206a50 [label="@std::mem\nparam list"] + node0x62bbfe206b00 [label="@std::mem\nparameter"] + node0x62bbfe206660 [label="@std::mem\nlist"] + node0x62bbfe2065b0 [label="@std::mem\nin"] + node0x62bbfe2068d0 [label="@std::mem\nparameter-declaration"] + node0x62bbfe2067e0 [label="@std::mem\ntype"] + node0x62bbfe206730 [label="@std::mem\nu32"] + node0x62bbfe2069a0 [label="@std::mem\nsize"] + node0x62bbfe206bf0 [label="@std::mem\nparameter"] + node0x62bbfe2060b0 [label="@std::mem\nlist"] + node0x62bbfe206000 [label="@std::mem\nin"] + node0x62bbfe206410 [label="@std::mem\nparameter-declaration"] + node0x62bbfe206320 [label="@std::mem\nref"] + node0x62bbfe206250 [label="@std::mem\ntype"] + node0x62bbfe2061a0 [label="@std::mem\nu8"] + node0x62bbfe2064e0 [label="@std::mem\nbuf"] + node0x62bbfe207810 [label="@std::mem\nprocdef"] + node0x62bbfe2078c0 [label="@std::mem\nfree"] + node0x62bbfe207740 [label="@std::mem\nlist"] + node0x62bbfe2075a0 [label="@std::mem\nparam list"] + node0x62bbfe207650 [label="@std::mem\nparameter"] + node0x62bbfe2070c0 [label="@std::mem\nlist"] + node0x62bbfe207010 [label="@std::mem\nin"] + node0x62bbfe207420 [label="@std::mem\nparameter-declaration"] + node0x62bbfe207330 [label="@std::mem\nref"] + node0x62bbfe207260 [label="@std::mem\ntype"] + node0x62bbfe2071b0 [label="@std::mem\nu8"] + node0x62bbfe2074f0 [label="@std::mem\nbuf"] + node0x62bbfe2003d0 [label="@std::mem\nprocdef"] + node0x62bbfe200480 [label="@std::mem\nfill"] + node0x62bbfe1feb90 [label="@std::mem\nlist"] + node0x62bbfe1fe820 [label="@std::mem\nparam list"] + node0x62bbfe1fe8d0 [label="@std::mem\nparameter"] + node0x62bbfe2084d0 [label="@std::mem\nlist"] + node0x62bbfe208420 [label="@std::mem\nin"] + node0x62bbfe208740 [label="@std::mem\nparameter-declaration"] + node0x62bbfe208650 [label="@std::mem\ntype"] + node0x62bbfe2085a0 [label="@std::mem\nu32"] + node0x62bbfe1fe770 [label="@std::mem\nlen"] + node0x62bbfe1fe9c0 [label="@std::mem\nparameter"] + node0x62bbfe208010 [label="@std::mem\nlist"] + node0x62bbfe207f60 [label="@std::mem\nin"] + node0x62bbfe208280 [label="@std::mem\nparameter-declaration"] + node0x62bbfe208190 [label="@std::mem\ntype"] + node0x62bbfe2080e0 [label="@std::mem\nu8"] + node0x62bbfe208350 [label="@std::mem\nelem"] + node0x62bbfe1fea90 [label="@std::mem\nparameter"] + node0x62bbfe207a60 [label="@std::mem\nlist"] + node0x62bbfe2079b0 [label="@std::mem\nin"] + node0x62bbfe207dc0 [label="@std::mem\nparameter-declaration"] + node0x62bbfe207cd0 [label="@std::mem\nref"] + node0x62bbfe207c00 [label="@std::mem\ntype"] + node0x62bbfe207b50 [label="@std::mem\nu8"] + node0x62bbfe207e90 [label="@std::mem\nbuf"] + node0x62bbfe1ff460 [label="@std::mem\nstmt list"] + node0x62bbfe1ff390 [label="@std::mem\ndef"] + node0x62bbfe1fef80 [label="@std::mem\ndecl"] + node0x62bbfe1fed10 [label="@std::mem\ntype"] + node0x62bbfe1fec60 [label="@std::mem\nu32"] + node0x62bbfe1fee00 [label="@std::mem\nident list"] + node0x62bbfe1feeb0 [label="@std::mem\nidx"] + node0x62bbfe1ff2c0 [label="@std::mem\ntypecast"] + node0x62bbfe1ff070 [label="@std::mem\n0"] + node0x62bbfe1ff1f0 [label="@std::mem\ntype"] + node0x62bbfe1ff140 [label="@std::mem\nu32"] + node0x62bbfe200300 [label="@std::mem\nwhile"] + node0x62bbfe1ff6d0 [label="@std::mem\n<"] + node0x62bbfe1ff550 [label="@std::mem\nidx"] + node0x62bbfe1ff620 [label="@std::mem\nlen"] + node0x62bbfe1ffbd0 [label="@std::mem\nstmt list"] + node0x62bbfe1ffb00 [label="@std::mem\nassign"] + node0x62bbfe1ff940 [label="@std::mem\nderef"] + node0x62bbfe1ff7c0 [label="@std::mem\nbuf"] + node0x62bbfe1ff890 [label="@std::mem\nidx"] + node0x62bbfe1ffa50 [label="@std::mem\nelem"] + node0x62bbfe200230 [label="@std::mem\nassign"] + node0x62bbfe1ffca0 [label="@std::mem\nidx"] + node0x62bbfe200160 [label="@std::mem\n+"] + node0x62bbfe1ffd70 [label="@std::mem\nidx"] + node0x62bbfe200090 [label="@std::mem\ntypecast"] + node0x62bbfe1ffe40 [label="@std::mem\n1"] + node0x62bbfe1fffc0 [label="@std::mem\ntype"] + node0x62bbfe1fff10 [label="@std::mem\nu32"] + node0x62bbfe20e980 [label="@std::mem\nfundecl"] + node0x62bbfe20ea30 [label="@std::mem\nalloc"] + node0x62bbfe20c990 [label="@std::mem\nref"] + node0x62bbfe20c8c0 [label="@std::mem\ntype"] + node0x62bbfe20c840 [label="@std::mem\nu8"] + node0x62bbfe20d0e0 [label="@std::mem\nlist"] + node0x62bbfe20cf40 [label="@std::mem\nparam list"] + node0x62bbfe20cff0 [label="@std::mem\nparameter"] + node0x62bbfe20cb50 [label="@std::mem\nlist"] + node0x62bbfe20caa0 [label="@std::mem\nin"] + node0x62bbfe20cdc0 [label="@std::mem\nparameter-declaration"] + node0x62bbfe20ccd0 [label="@std::mem\ntype"] + node0x62bbfe20cc20 [label="@std::mem\nu32"] + node0x62bbfe20ce90 [label="@std::mem\nlen"] + node0x62bbfe20db90 [label="@std::mem\nstmt list"] + node0x62bbfe20dac0 [label="@std::mem\ndef"] + node0x62bbfe20d5c0 [label="@std::mem\ndecl"] + node0x62bbfe20d350 [label="@std::mem\nref"] + node0x62bbfe20d280 [label="@std::mem\ntype"] + node0x62bbfe20d1d0 [label="@std::mem\nu8"] + node0x62bbfe20d440 [label="@std::mem\nident list"] + node0x62bbfe20d4f0 [label="@std::mem\nbuf"] + node0x62bbfe20d9f0 [label="@std::mem\nfuncall"] + node0x62bbfe20d6b0 [label="@std::mem\nmalloc"] + node0x62bbfe20d900 [label="@std::mem\narg list"] + node0x62bbfe20d830 [label="@std::mem\nexpr list"] + node0x62bbfe20d780 [label="@std::mem\nlen"] + node0x62bbfe20e6e0 [label="@std::mem\nfuncall"] + node0x62bbfe20ded0 [label="@std::mem\nmodref"] + node0x62bbfe20df80 [label="@std::mem\nstd"] + node0x62bbfe20dd50 [label="@std::mem\nmodref"] + node0x62bbfe20de00 [label="@std::mem\nmem"] + node0x62bbfe20dca0 [label="@std::mem\nfill"] + node0x62bbfe20e610 [label="@std::mem\narg list"] + node0x62bbfe20e530 [label="@std::mem\nexpr list"] + node0x62bbfe20e480 [label="@std::mem\nlen"] + node0x62bbfe20e390 [label="@std::mem\ntypecast"] + node0x62bbfe20e140 [label="@std::mem\n0"] + node0x62bbfe20e2c0 [label="@std::mem\ntype"] + node0x62bbfe20e210 [label="@std::mem\nu8"] + node0x62bbfe20e070 [label="@std::mem\nbuf"] + node0x62bbfe20e880 [label="@std::mem\nret"] + node0x62bbfe20e7d0 [label="@std::mem\nbuf"] + node0x62bbfe211ac0 [label="@std::mem\nfundecl"] + node0x62bbfe211b70 [label="@std::mem\nrealloc"] + node0x62bbfe20ec90 [label="@std::mem\nref"] + node0x62bbfe20ebc0 [label="@std::mem\ntype"] + node0x62bbfe20eb10 [label="@std::mem\nu8"] + node0x62bbfe20faf0 [label="@std::mem\nlist"] + node0x62bbfe20f880 [label="@std::mem\nparam list"] + node0x62bbfe20f930 [label="@std::mem\nparameter"] + node0x62bbfe20f490 [label="@std::mem\nlist"] + node0x62bbfe20f3e0 [label="@std::mem\nin"] + node0x62bbfe20f700 [label="@std::mem\nparameter-declaration"] + node0x62bbfe20f610 [label="@std::mem\ntype"] + node0x62bbfe20f560 [label="@std::mem\nu32"] + node0x62bbfe20f7d0 [label="@std::mem\nlen"] + node0x62bbfe20fa20 [label="@std::mem\nparameter"] + node0x62bbfe20eee0 [label="@std::mem\nlist"] + node0x62bbfe20ed80 [label="@std::mem\nin"] + node0x62bbfe20ee30 [label="@std::mem\nout"] + node0x62bbfe20f240 [label="@std::mem\nparameter-declaration"] + node0x62bbfe20f150 [label="@std::mem\nref"] + node0x62bbfe20f080 [label="@std::mem\ntype"] + node0x62bbfe20efd0 [label="@std::mem\nu8"] + node0x62bbfe20f310 [label="@std::mem\nbuf"] + node0x62bbfe210260 [label="@std::mem\nstmt list"] + node0x62bbfe210190 [label="@std::mem\nassign"] + node0x62bbfe20fbe0 [label="@std::mem\nbuf"] + node0x62bbfe2100c0 [label="@std::mem\nfuncall"] + node0x62bbfe20fcb0 [label="@std::mem\nrealloc"] + node0x62bbfe20ffd0 [label="@std::mem\narg list"] + node0x62bbfe20ff00 [label="@std::mem\nexpr list"] + node0x62bbfe20fe50 [label="@std::mem\nlen"] + node0x62bbfe20fd80 [label="@std::mem\nbuf"] + node0x62bbfe211820 [label="@std::mem\nfuncall"] + node0x62bbfe2105a0 [label="@std::mem\nmodref"] + node0x62bbfe210650 [label="@std::mem\nstd"] + node0x62bbfe210420 [label="@std::mem\nmodref"] + node0x62bbfe2104d0 [label="@std::mem\nmem"] + node0x62bbfe210370 [label="@std::mem\nfill"] + node0x62bbfe211750 [label="@std::mem\narg list"] + node0x62bbfe205030 [label="@std::mem\nexpr list"] + node0x62bbfe204f80 [label="@std::mem\nlen"] + node0x62bbfe204e90 [label="@std::mem\ntypecast"] + node0x62bbfe204c40 [label="@std::mem\n0"] + node0x62bbfe204dc0 [label="@std::mem\ntype"] + node0x62bbfe204d10 [label="@std::mem\nu8"] + node0x62bbfe204b70 [label="@std::mem\nbuf"] + node0x62bbfe2119c0 [label="@std::mem\nret"] + node0x62bbfe211910 [label="@std::mem\nbuf"] + node0x62bbfe212f90 [label="@std::mem\nprocdef"] + node0x62bbfe213040 [label="@std::mem\nfree"] + node0x62bbfe212430 [label="@std::mem\nlist"] + node0x62bbfe212290 [label="@std::mem\nparam list"] + node0x62bbfe212340 [label="@std::mem\nparameter"] + node0x62bbfe211db0 [label="@std::mem\nlist"] + node0x62bbfe211c50 [label="@std::mem\nin"] + node0x62bbfe211d00 [label="@std::mem\nout"] + node0x62bbfe212110 [label="@std::mem\nparameter-declaration"] + node0x62bbfe212020 [label="@std::mem\nref"] + node0x62bbfe211f50 [label="@std::mem\ntype"] + node0x62bbfe211ea0 [label="@std::mem\nu8"] + node0x62bbfe2121e0 [label="@std::mem\nbuf"] + node0x62bbfe212930 [label="@std::mem\nstmt list"] + node0x62bbfe212860 [label="@std::mem\nfuncall"] + node0x62bbfe212520 [label="@std::mem\nfree"] + node0x62bbfe212770 [label="@std::mem\narg list"] + node0x62bbfe2126a0 [label="@std::mem\nexpr list"] + node0x62bbfe2125f0 [label="@std::mem\nbuf"] + node0x62bbfe212ec0 [label="@std::mem\nassign"] + node0x62bbfe212a00 [label="@std::mem\nbuf"] + node0x62bbfe212df0 [label="@std::mem\ntransmute"] + node0x62bbfe212ad0 [label="@std::mem\n0"] + node0x62bbfe212d20 [label="@std::mem\nref"] + node0x62bbfe212c50 [label="@std::mem\ntype"] + node0x62bbfe212ba0 [label="@std::mem\nu8"] + node0x62bbfe1f3ef0 [label="@std\nbootstrap.gsc"] + node0x62bbfe2147c0 [label="@std::bootstrap\nos"] + node0x62bbfe2149c0 [label="@std::bootstrap\nprocdef"] + node0x62bbfe214a70 [label="@std::bootstrap\nmain"] + node0x62bbfe214910 [label="@std::bootstrap\nlist"] + node0x62bbfe215a10 [label="@std::bootstrap\nprocdef"] + node0x62bbfe215ac0 [label="@std::bootstrap\n_start"] + node0x62bbfe214c80 [label="@std::bootstrap\nlist"] + node0x62bbfe214fa0 [label="@std::bootstrap\nstmt list"] + node0x62bbfe214ed0 [label="@std::bootstrap\nfuncall"] + node0x62bbfe214d50 [label="@std::bootstrap\nmain"] + node0x62bbfe214e00 [label="@std::bootstrap\narg list"] + node0x62bbfe215940 [label="@std::bootstrap\nfuncall"] + node0x62bbfe2152e0 [label="@std::bootstrap\nmodref"] + node0x62bbfe215390 [label="@std::bootstrap\nstd"] + node0x62bbfe215160 [label="@std::bootstrap\nmodref"] + node0x62bbfe215210 [label="@std::bootstrap\nos"] + node0x62bbfe2150b0 [label="@std::bootstrap\nexit"] + node0x62bbfe215870 [label="@std::bootstrap\narg list"] + node0x62bbfe2157a0 [label="@std::bootstrap\nexpr list"] + node0x62bbfe2156d0 [label="@std::bootstrap\ntypecast"] + node0x62bbfe215480 [label="@std::bootstrap\n0"] + node0x62bbfe215600 [label="@std::bootstrap\ntype"] + node0x62bbfe215550 [label="@std::bootstrap\ni32"] + node0x62bbfe1f3fa0 [label="@std\nio"] + node0x62bbfe217090 [label="@std::io\ntypes"] + node0x62bbfe217640 [label="@std::io\nbox"] + node0x62bbfe2176f0 [label="@std::io\nHandle"] + node0x62bbfe217570 [label="@std::io\nlist"] + node0x62bbfe2174a0 [label="@std::io\ndecl"] + node0x62bbfe217230 [label="@std::io\ntype"] + node0x62bbfe217180 [label="@std::io\ni32"] + node0x62bbfe217320 [label="@std::io\nident list"] + node0x62bbfe2173d0 [label="@std::io\nfd"] + node0x62bbfe218760 [label="@std::io\nfundecl"] + node0x62bbfe218810 [label="@std::io\ngetStdoutHandle"] + node0x62bbfe217890 [label="@std::io\ntype"] + node0x62bbfe2177e0 [label="@std::io\nHandle"] + node0x62bbfe217980 [label="@std::io\nlist"] + node0x62bbfe217e60 [label="@std::io\nstmt list"] + node0x62bbfe217d90 [label="@std::io\ndecl"] + node0x62bbfe217b00 [label="@std::io\ntype"] + node0x62bbfe217a50 [label="@std::io\nHandle"] + node0x62bbfe217c10 [label="@std::io\nident list"] + node0x62bbfe217cc0 [label="@std::io\nstdout"] + node0x62bbfe2184c0 [label="@std::io\nassign"] + node0x62bbfe217f50 [label="@std::io\nident list"] + node0x62bbfe218000 [label="@std::io\nstdout"] + node0x62bbfe2180b0 [label="@std::io\nfd"] + node0x62bbfe2183f0 [label="@std::io\ntypecast"] + node0x62bbfe2181a0 [label="@std::io\n1"] + node0x62bbfe218320 [label="@std::io\ntype"] + node0x62bbfe218270 [label="@std::io\ni32"] + node0x62bbfe218660 [label="@std::io\nret"] + node0x62bbfe2185b0 [label="@std::io\nstdout"] + node0x62bbfe219ed0 [label="@std::io\nfundef"] + node0x62bbfe219f80 [label="@std::io\nwrite"] + node0x62bbfe218ae0 [label="@std::io\ntype"] + node0x62bbfe218a60 [label="@std::io\nu64"] + node0x62bbfe219e20 [label="@std::io\nlist"] + node0x62bbfe219ab0 [label="@std::io\nparam list"] + node0x62bbfe219b60 [label="@std::io\nparameter"] + node0x62bbfe2196c0 [label="@std::io\nlist"] + node0x62bbfe219610 [label="@std::io\nin"] + node0x62bbfe219930 [label="@std::io\nparameter-declaration"] + node0x62bbfe219840 [label="@std::io\ntype"] + node0x62bbfe219790 [label="@std::io\nu64"] + node0x62bbfe219a00 [label="@std::io\ncount"] + node0x62bbfe219c50 [label="@std::io\nparameter"] + node0x62bbfe219110 [label="@std::io\nlist"] + node0x62bbfe219060 [label="@std::io\nin"] + node0x62bbfe219470 [label="@std::io\nparameter-declaration"] + node0x62bbfe219380 [label="@std::io\nref"] + node0x62bbfe2192b0 [label="@std::io\ntype"] + node0x62bbfe219200 [label="@std::io\nu8"] + node0x62bbfe219540 [label="@std::io\nbuf"] + node0x62bbfe219d20 [label="@std::io\nparameter"] + node0x62bbfe218c70 [label="@std::io\nlist"] + node0x62bbfe218bc0 [label="@std::io\nin"] + node0x62bbfe218ee0 [label="@std::io\nparameter-declaration"] + node0x62bbfe218df0 [label="@std::io\ntype"] + node0x62bbfe218d40 [label="@std::io\ni32"] + node0x62bbfe218fb0 [label="@std::io\nfd"] + node0x62bbfe209ab0 [label="@std::io\nprocdef"] + node0x62bbfe209b60 [label="@std::io\nprint"] + node0x62bbfe21ad40 [label="@std::io\nlist"] + node0x62bbfe21aad0 [label="@std::io\nparam list"] + node0x62bbfe21ab80 [label="@std::io\nparameter"] + node0x62bbfe21a6e0 [label="@std::io\nlist"] + node0x62bbfe21a630 [label="@std::io\nin"] + node0x62bbfe21a950 [label="@std::io\nparameter-declaration"] + node0x62bbfe21a860 [label="@std::io\ntype"] + node0x62bbfe21a7b0 [label="@std::io\nu32"] + node0x62bbfe21aa20 [label="@std::io\nn"] + node0x62bbfe21ac70 [label="@std::io\nparameter"] + node0x62bbfe21a130 [label="@std::io\nlist"] + node0x62bbfe21a080 [label="@std::io\nin"] + node0x62bbfe21a490 [label="@std::io\nparameter-declaration"] + node0x62bbfe21a3a0 [label="@std::io\nref"] + node0x62bbfe21a2d0 [label="@std::io\ntype"] + node0x62bbfe21a220 [label="@std::io\nu8"] + node0x62bbfe21a560 [label="@std::io\nbuf"] + node0x62bbfe208f60 [label="@std::io\nstmt list"] + node0x62bbfe208e90 [label="@std::io\ndef"] + node0x62bbfe208810 [label="@std::io\ndecl"] + node0x62bbfe21aee0 [label="@std::io\ntype"] + node0x62bbfe21ae30 [label="@std::io\nHandle"] + node0x62bbfe21afd0 [label="@std::io\nident list"] + node0x62bbfe21b080 [label="@std::io\nstdout"] + node0x62bbfe208dc0 [label="@std::io\nfuncall"] + node0x62bbfe208b70 [label="@std::io\nmodref"] + node0x62bbfe208c20 [label="@std::io\nstd"] + node0x62bbfe2089f0 [label="@std::io\nmodref"] + node0x62bbfe208aa0 [label="@std::io\nio"] + node0x62bbfe208940 [label="@std::io\ngetStdoutHandle"] + node0x62bbfe208cf0 [label="@std::io\narg list"] + node0x62bbfe2099e0 [label="@std::io\nfuncall"] + node0x62bbfe209030 [label="@std::io\nwrite"] + node0x62bbfe209910 [label="@std::io\narg list"] + node0x62bbfe209830 [label="@std::io\nexpr list"] + node0x62bbfe209760 [label="@std::io\ntypecast"] + node0x62bbfe209510 [label="@std::io\nn"] + node0x62bbfe209690 [label="@std::io\ntype"] + node0x62bbfe2095e0 [label="@std::io\nu64"] + node0x62bbfe209440 [label="@std::io\nbuf"] + node0x62bbfe209350 [label="@std::io\ntypecast"] + node0x62bbfe209100 [label="@std::io\n1"] + node0x62bbfe209280 [label="@std::io\ntype"] + node0x62bbfe2091d0 [label="@std::io\ni32"] + node0x62bbfe1f79a0 -- node0x62bbfe1f7fd0 + node0x62bbfe1f79a0 -- node0x62bbfe1f7c90 + node0x62bbfe1f79a0 -- node0x62bbfe1fd8e0 + node0x62bbfe1fd8e0 -- node0x62bbfe1fd7e0 + node0x62bbfe1fd7e0 -- node0x62bbfe1fd450 + node0x62bbfe1fd7e0 -- node0x62bbfe1fd500 + node0x62bbfe1fd500 -- node0x62bbfe1fd5b0 + node0x62bbfe1fd500 -- node0x62bbfe1fd680 + node0x62bbfe1fd7e0 -- node0x62bbfe1fd730 + node0x62bbfe1fd8e0 -- node0x62bbfe1fd9b0 + node0x62bbfe1f79a0 -- node0x62bbfe1fde60 + node0x62bbfe1fde60 -- node0x62bbfe1fdd60 + node0x62bbfe1fdd60 -- node0x62bbfe1fda80 + node0x62bbfe1fdd60 -- node0x62bbfe1fdb30 + node0x62bbfe1fdb30 -- node0x62bbfe1fdbe0 + node0x62bbfe1fdd60 -- node0x62bbfe1fdcb0 + node0x62bbfe1fde60 -- node0x62bbfe1fdf30 + node0x62bbfe1f79a0 -- node0x62bbfe1fe230 + node0x62bbfe1fe230 -- node0x62bbfe1fe140 + node0x62bbfe1fe140 -- node0x62bbfe1fdfe0 + node0x62bbfe1fe140 -- node0x62bbfe1fe090 + node0x62bbfe1fe230 -- node0x62bbfe1fe300 + node0x62bbfe1f79a0 -- node0x62bbfe1f5df0 + node0x62bbfe1f5df0 -- node0x62bbfe1fe6a0 + node0x62bbfe1fe6a0 -- node0x62bbfe1fe3e0 + node0x62bbfe1fe6a0 -- node0x62bbfe1fe490 + node0x62bbfe1fe490 -- node0x62bbfe1fe540 + node0x62bbfe1fe6a0 -- node0x62bbfe1fe5f0 + node0x62bbfe1f5df0 -- node0x62bbfe1f5ec0 + node0x62bbfe1f79a0 -- node0x62bbfe1f6400 + node0x62bbfe1f6400 -- node0x62bbfe1f6300 + node0x62bbfe1f6300 -- node0x62bbfe1f5f70 + node0x62bbfe1f6300 -- node0x62bbfe1f6020 + node0x62bbfe1f6020 -- node0x62bbfe1f60d0 + node0x62bbfe1f6020 -- node0x62bbfe1f61a0 + node0x62bbfe1f6300 -- node0x62bbfe1f6250 + node0x62bbfe1f6400 -- node0x62bbfe1f64d0 + node0x62bbfe1f79a0 -- node0x62bbfe200750 + node0x62bbfe200750 -- node0x62bbfe1f6930 + node0x62bbfe1f6930 -- node0x62bbfe1f65d0 + node0x62bbfe1f6930 -- node0x62bbfe1f6650 + node0x62bbfe1f6650 -- node0x62bbfe1f6700 + node0x62bbfe1f6650 -- node0x62bbfe1f67d0 + node0x62bbfe1f6930 -- node0x62bbfe1f6880 + node0x62bbfe200750 -- node0x62bbfe200820 + node0x62bbfe1f79a0 -- node0x62bbfe200cb0 + node0x62bbfe200cb0 -- node0x62bbfe200bb0 + node0x62bbfe200bb0 -- node0x62bbfe2008d0 + node0x62bbfe200bb0 -- node0x62bbfe200980 + node0x62bbfe200980 -- node0x62bbfe200a30 + node0x62bbfe200bb0 -- node0x62bbfe200b00 + node0x62bbfe200cb0 -- node0x62bbfe200d80 + node0x62bbfe1f79a0 -- node0x62bbfe201080 + node0x62bbfe201080 -- node0x62bbfe200f90 + node0x62bbfe200f90 -- node0x62bbfe200e30 + node0x62bbfe200f90 -- node0x62bbfe200ee0 + node0x62bbfe201080 -- node0x62bbfe201150 + node0x62bbfe1f79a0 -- node0x62bbfe2015e0 + node0x62bbfe2015e0 -- node0x62bbfe2014e0 + node0x62bbfe2014e0 -- node0x62bbfe201200 + node0x62bbfe2014e0 -- node0x62bbfe2012b0 + node0x62bbfe2012b0 -- node0x62bbfe201360 + node0x62bbfe2014e0 -- node0x62bbfe201430 + node0x62bbfe2015e0 -- node0x62bbfe2016b0 + node0x62bbfe1f79a0 -- node0x62bbfe201c80 + node0x62bbfe201c80 -- node0x62bbfe201b80 + node0x62bbfe201b80 -- node0x62bbfe2017f0 + node0x62bbfe201b80 -- node0x62bbfe2018a0 + node0x62bbfe2018a0 -- node0x62bbfe201950 + node0x62bbfe2018a0 -- node0x62bbfe201a20 + node0x62bbfe201b80 -- node0x62bbfe201ad0 + node0x62bbfe201c80 -- node0x62bbfe201d50 + node0x62bbfe1f79a0 -- node0x62bbfe202120 + node0x62bbfe202120 -- node0x62bbfe202030 + node0x62bbfe202030 -- node0x62bbfe201e00 + node0x62bbfe201e00 -- node0x62bbfe201eb0 + node0x62bbfe202030 -- node0x62bbfe201f80 + node0x62bbfe202120 -- node0x62bbfe2021f0 + node0x62bbfe1f79a0 -- node0x62bbfe202440 + node0x62bbfe202440 -- node0x62bbfe202350 + node0x62bbfe202350 -- node0x62bbfe2022a0 + node0x62bbfe202440 -- node0x62bbfe202510 + node0x62bbfe1f79a0 -- node0x62bbfe2028e0 + node0x62bbfe2028e0 -- node0x62bbfe2027f0 + node0x62bbfe2027f0 -- node0x62bbfe2025c0 + node0x62bbfe2025c0 -- node0x62bbfe202670 + node0x62bbfe2027f0 -- node0x62bbfe202740 + node0x62bbfe2028e0 -- node0x62bbfe2029b0 + node0x62bbfe1f79a0 -- node0x62bbfe1fb0a0 + node0x62bbfe1fb0a0 -- node0x62bbfe1fb150 + node0x62bbfe1fb0a0 -- node0x62bbfe1fafd0 + node0x62bbfe1fafd0 -- node0x62bbfe1fae30 + node0x62bbfe1fae30 -- node0x62bbfe1faee0 + node0x62bbfe1faee0 -- node0x62bbfe1faa70 + node0x62bbfe1faa70 -- node0x62bbfe1fa9f0 + node0x62bbfe1faee0 -- node0x62bbfe1facb0 + node0x62bbfe1facb0 -- node0x62bbfe1fabc0 + node0x62bbfe1fabc0 -- node0x62bbfe1fab10 + node0x62bbfe1facb0 -- node0x62bbfe1fad80 + node0x62bbfe1f79a0 -- node0x62bbfe1fbef0 + node0x62bbfe1fbef0 -- node0x62bbfe1fbfa0 + node0x62bbfe1fbef0 -- node0x62bbfe1fb940 + node0x62bbfe1fb940 -- node0x62bbfe1fb7a0 + node0x62bbfe1fb7a0 -- node0x62bbfe1fb850 + node0x62bbfe1fb850 -- node0x62bbfe1fb3b0 + node0x62bbfe1fb3b0 -- node0x62bbfe1fb300 + node0x62bbfe1fb850 -- node0x62bbfe1fb620 + node0x62bbfe1fb620 -- node0x62bbfe1fb530 + node0x62bbfe1fb530 -- node0x62bbfe1fb480 + node0x62bbfe1fb620 -- node0x62bbfe1fb6f0 + node0x62bbfe1fbef0 -- node0x62bbfe1fbe20 + node0x62bbfe1fbe20 -- node0x62bbfe1fbd50 + node0x62bbfe1fbd50 -- node0x62bbfe1fba30 + node0x62bbfe1fbd50 -- node0x62bbfe1fbc80 + node0x62bbfe1fbc80 -- node0x62bbfe1fbbb0 + node0x62bbfe1fbbb0 -- node0x62bbfe1fbb00 + node0x62bbfe1f79a0 -- node0x62bbfe1f8230 + node0x62bbfe1f79a0 -- node0x62bbfe204750 + node0x62bbfe1f79a0 -- node0x62bbfe205a90 + node0x62bbfe205a90 -- node0x62bbfe205b40 + node0x62bbfe205a90 -- node0x62bbfe204a60 + node0x62bbfe204a60 -- node0x62bbfe204990 + node0x62bbfe204990 -- node0x62bbfe2048e0 + node0x62bbfe205a90 -- node0x62bbfe2059c0 + node0x62bbfe2059c0 -- node0x62bbfe205820 + node0x62bbfe205820 -- node0x62bbfe2058d0 + node0x62bbfe2058d0 -- node0x62bbfe205430 + node0x62bbfe205430 -- node0x62bbfe205380 + node0x62bbfe2058d0 -- node0x62bbfe2056a0 + node0x62bbfe2056a0 -- node0x62bbfe2055b0 + node0x62bbfe2055b0 -- node0x62bbfe205500 + node0x62bbfe2056a0 -- node0x62bbfe205770 + node0x62bbfe1f79a0 -- node0x62bbfe206d90 + node0x62bbfe206d90 -- node0x62bbfe206e40 + node0x62bbfe206d90 -- node0x62bbfe205f10 + node0x62bbfe205f10 -- node0x62bbfe205e40 + node0x62bbfe205e40 -- node0x62bbfe205d90 + node0x62bbfe206d90 -- node0x62bbfe206cc0 + node0x62bbfe206cc0 -- node0x62bbfe206a50 + node0x62bbfe206a50 -- node0x62bbfe206b00 + node0x62bbfe206b00 -- node0x62bbfe206660 + node0x62bbfe206660 -- node0x62bbfe2065b0 + node0x62bbfe206b00 -- node0x62bbfe2068d0 + node0x62bbfe2068d0 -- node0x62bbfe2067e0 + node0x62bbfe2067e0 -- node0x62bbfe206730 + node0x62bbfe2068d0 -- node0x62bbfe2069a0 + node0x62bbfe206a50 -- node0x62bbfe206bf0 + node0x62bbfe206bf0 -- node0x62bbfe2060b0 + node0x62bbfe2060b0 -- node0x62bbfe206000 + node0x62bbfe206bf0 -- node0x62bbfe206410 + node0x62bbfe206410 -- node0x62bbfe206320 + node0x62bbfe206320 -- node0x62bbfe206250 + node0x62bbfe206250 -- node0x62bbfe2061a0 + node0x62bbfe206410 -- node0x62bbfe2064e0 + node0x62bbfe1f79a0 -- node0x62bbfe207810 + node0x62bbfe207810 -- node0x62bbfe2078c0 + node0x62bbfe207810 -- node0x62bbfe207740 + node0x62bbfe207740 -- node0x62bbfe2075a0 + node0x62bbfe2075a0 -- node0x62bbfe207650 + node0x62bbfe207650 -- node0x62bbfe2070c0 + node0x62bbfe2070c0 -- node0x62bbfe207010 + node0x62bbfe207650 -- node0x62bbfe207420 + node0x62bbfe207420 -- node0x62bbfe207330 + node0x62bbfe207330 -- node0x62bbfe207260 + node0x62bbfe207260 -- node0x62bbfe2071b0 + node0x62bbfe207420 -- node0x62bbfe2074f0 + node0x62bbfe1f79a0 -- node0x62bbfe2003d0 + node0x62bbfe2003d0 -- node0x62bbfe200480 + node0x62bbfe2003d0 -- node0x62bbfe1feb90 + node0x62bbfe1feb90 -- node0x62bbfe1fe820 + node0x62bbfe1fe820 -- node0x62bbfe1fe8d0 + node0x62bbfe1fe8d0 -- node0x62bbfe2084d0 + node0x62bbfe2084d0 -- node0x62bbfe208420 + node0x62bbfe1fe8d0 -- node0x62bbfe208740 + node0x62bbfe208740 -- node0x62bbfe208650 + node0x62bbfe208650 -- node0x62bbfe2085a0 + node0x62bbfe208740 -- node0x62bbfe1fe770 + node0x62bbfe1fe820 -- node0x62bbfe1fe9c0 + node0x62bbfe1fe9c0 -- node0x62bbfe208010 + node0x62bbfe208010 -- node0x62bbfe207f60 + node0x62bbfe1fe9c0 -- node0x62bbfe208280 + node0x62bbfe208280 -- node0x62bbfe208190 + node0x62bbfe208190 -- node0x62bbfe2080e0 + node0x62bbfe208280 -- node0x62bbfe208350 + node0x62bbfe1fe820 -- node0x62bbfe1fea90 + node0x62bbfe1fea90 -- node0x62bbfe207a60 + node0x62bbfe207a60 -- node0x62bbfe2079b0 + node0x62bbfe1fea90 -- node0x62bbfe207dc0 + node0x62bbfe207dc0 -- node0x62bbfe207cd0 + node0x62bbfe207cd0 -- node0x62bbfe207c00 + node0x62bbfe207c00 -- node0x62bbfe207b50 + node0x62bbfe207dc0 -- node0x62bbfe207e90 + node0x62bbfe2003d0 -- node0x62bbfe1ff460 + node0x62bbfe1ff460 -- node0x62bbfe1ff390 + node0x62bbfe1ff390 -- node0x62bbfe1fef80 + node0x62bbfe1fef80 -- node0x62bbfe1fed10 + node0x62bbfe1fed10 -- node0x62bbfe1fec60 + node0x62bbfe1fef80 -- node0x62bbfe1fee00 + node0x62bbfe1fee00 -- node0x62bbfe1feeb0 + node0x62bbfe1ff390 -- node0x62bbfe1ff2c0 + node0x62bbfe1ff2c0 -- node0x62bbfe1ff070 + node0x62bbfe1ff2c0 -- node0x62bbfe1ff1f0 + node0x62bbfe1ff1f0 -- node0x62bbfe1ff140 + node0x62bbfe1ff460 -- node0x62bbfe200300 + node0x62bbfe200300 -- node0x62bbfe1ff6d0 + node0x62bbfe1ff6d0 -- node0x62bbfe1ff550 + node0x62bbfe1ff6d0 -- node0x62bbfe1ff620 + node0x62bbfe200300 -- node0x62bbfe1ffbd0 + node0x62bbfe1ffbd0 -- node0x62bbfe1ffb00 + node0x62bbfe1ffb00 -- node0x62bbfe1ff940 + node0x62bbfe1ff940 -- node0x62bbfe1ff7c0 + node0x62bbfe1ff940 -- node0x62bbfe1ff890 + node0x62bbfe1ffb00 -- node0x62bbfe1ffa50 + node0x62bbfe1ffbd0 -- node0x62bbfe200230 + node0x62bbfe200230 -- node0x62bbfe1ffca0 + node0x62bbfe200230 -- node0x62bbfe200160 + node0x62bbfe200160 -- node0x62bbfe1ffd70 + node0x62bbfe200160 -- node0x62bbfe200090 + node0x62bbfe200090 -- node0x62bbfe1ffe40 + node0x62bbfe200090 -- node0x62bbfe1fffc0 + node0x62bbfe1fffc0 -- node0x62bbfe1fff10 + node0x62bbfe1f79a0 -- node0x62bbfe20e980 + node0x62bbfe20e980 -- node0x62bbfe20ea30 + node0x62bbfe20e980 -- node0x62bbfe20c990 + node0x62bbfe20c990 -- node0x62bbfe20c8c0 + node0x62bbfe20c8c0 -- node0x62bbfe20c840 + node0x62bbfe20e980 -- node0x62bbfe20d0e0 + node0x62bbfe20d0e0 -- node0x62bbfe20cf40 + node0x62bbfe20cf40 -- node0x62bbfe20cff0 + node0x62bbfe20cff0 -- node0x62bbfe20cb50 + node0x62bbfe20cb50 -- node0x62bbfe20caa0 + node0x62bbfe20cff0 -- node0x62bbfe20cdc0 + node0x62bbfe20cdc0 -- node0x62bbfe20ccd0 + node0x62bbfe20ccd0 -- node0x62bbfe20cc20 + node0x62bbfe20cdc0 -- node0x62bbfe20ce90 + node0x62bbfe20e980 -- node0x62bbfe20db90 + node0x62bbfe20db90 -- node0x62bbfe20dac0 + node0x62bbfe20dac0 -- node0x62bbfe20d5c0 + node0x62bbfe20d5c0 -- node0x62bbfe20d350 + node0x62bbfe20d350 -- node0x62bbfe20d280 + node0x62bbfe20d280 -- node0x62bbfe20d1d0 + node0x62bbfe20d5c0 -- node0x62bbfe20d440 + node0x62bbfe20d440 -- node0x62bbfe20d4f0 + node0x62bbfe20dac0 -- node0x62bbfe20d9f0 + node0x62bbfe20d9f0 -- node0x62bbfe20d6b0 + node0x62bbfe20d9f0 -- node0x62bbfe20d900 + node0x62bbfe20d900 -- node0x62bbfe20d830 + node0x62bbfe20d830 -- node0x62bbfe20d780 + node0x62bbfe20db90 -- node0x62bbfe20e6e0 + node0x62bbfe20e6e0 -- node0x62bbfe20ded0 + node0x62bbfe20ded0 -- node0x62bbfe20df80 + node0x62bbfe20ded0 -- node0x62bbfe20dd50 + node0x62bbfe20dd50 -- node0x62bbfe20de00 + node0x62bbfe20dd50 -- node0x62bbfe20dca0 + node0x62bbfe20e6e0 -- node0x62bbfe20e610 + node0x62bbfe20e610 -- node0x62bbfe20e530 + node0x62bbfe20e530 -- node0x62bbfe20e480 + node0x62bbfe20e530 -- node0x62bbfe20e390 + node0x62bbfe20e390 -- node0x62bbfe20e140 + node0x62bbfe20e390 -- node0x62bbfe20e2c0 + node0x62bbfe20e2c0 -- node0x62bbfe20e210 + node0x62bbfe20e530 -- node0x62bbfe20e070 + node0x62bbfe20db90 -- node0x62bbfe20e880 + node0x62bbfe20e880 -- node0x62bbfe20e7d0 + node0x62bbfe1f79a0 -- node0x62bbfe211ac0 + node0x62bbfe211ac0 -- node0x62bbfe211b70 + node0x62bbfe211ac0 -- node0x62bbfe20ec90 + node0x62bbfe20ec90 -- node0x62bbfe20ebc0 + node0x62bbfe20ebc0 -- node0x62bbfe20eb10 + node0x62bbfe211ac0 -- node0x62bbfe20faf0 + node0x62bbfe20faf0 -- node0x62bbfe20f880 + node0x62bbfe20f880 -- node0x62bbfe20f930 + node0x62bbfe20f930 -- node0x62bbfe20f490 + node0x62bbfe20f490 -- node0x62bbfe20f3e0 + node0x62bbfe20f930 -- node0x62bbfe20f700 + node0x62bbfe20f700 -- node0x62bbfe20f610 + node0x62bbfe20f610 -- node0x62bbfe20f560 + node0x62bbfe20f700 -- node0x62bbfe20f7d0 + node0x62bbfe20f880 -- node0x62bbfe20fa20 + node0x62bbfe20fa20 -- node0x62bbfe20eee0 + node0x62bbfe20eee0 -- node0x62bbfe20ed80 + node0x62bbfe20eee0 -- node0x62bbfe20ee30 + node0x62bbfe20fa20 -- node0x62bbfe20f240 + node0x62bbfe20f240 -- node0x62bbfe20f150 + node0x62bbfe20f150 -- node0x62bbfe20f080 + node0x62bbfe20f080 -- node0x62bbfe20efd0 + node0x62bbfe20f240 -- node0x62bbfe20f310 + node0x62bbfe211ac0 -- node0x62bbfe210260 + node0x62bbfe210260 -- node0x62bbfe210190 + node0x62bbfe210190 -- node0x62bbfe20fbe0 + node0x62bbfe210190 -- node0x62bbfe2100c0 + node0x62bbfe2100c0 -- node0x62bbfe20fcb0 + node0x62bbfe2100c0 -- node0x62bbfe20ffd0 + node0x62bbfe20ffd0 -- node0x62bbfe20ff00 + node0x62bbfe20ff00 -- node0x62bbfe20fe50 + node0x62bbfe20ff00 -- node0x62bbfe20fd80 + node0x62bbfe210260 -- node0x62bbfe211820 + node0x62bbfe211820 -- node0x62bbfe2105a0 + node0x62bbfe2105a0 -- node0x62bbfe210650 + node0x62bbfe2105a0 -- node0x62bbfe210420 + node0x62bbfe210420 -- node0x62bbfe2104d0 + node0x62bbfe210420 -- node0x62bbfe210370 + node0x62bbfe211820 -- node0x62bbfe211750 + node0x62bbfe211750 -- node0x62bbfe205030 + node0x62bbfe205030 -- node0x62bbfe204f80 + node0x62bbfe205030 -- node0x62bbfe204e90 + node0x62bbfe204e90 -- node0x62bbfe204c40 + node0x62bbfe204e90 -- node0x62bbfe204dc0 + node0x62bbfe204dc0 -- node0x62bbfe204d10 + node0x62bbfe205030 -- node0x62bbfe204b70 + node0x62bbfe210260 -- node0x62bbfe2119c0 + node0x62bbfe2119c0 -- node0x62bbfe211910 + node0x62bbfe1f79a0 -- node0x62bbfe212f90 + node0x62bbfe212f90 -- node0x62bbfe213040 + node0x62bbfe212f90 -- node0x62bbfe212430 + node0x62bbfe212430 -- node0x62bbfe212290 + node0x62bbfe212290 -- node0x62bbfe212340 + node0x62bbfe212340 -- node0x62bbfe211db0 + node0x62bbfe211db0 -- node0x62bbfe211c50 + node0x62bbfe211db0 -- node0x62bbfe211d00 + node0x62bbfe212340 -- node0x62bbfe212110 + node0x62bbfe212110 -- node0x62bbfe212020 + node0x62bbfe212020 -- node0x62bbfe211f50 + node0x62bbfe211f50 -- node0x62bbfe211ea0 + node0x62bbfe212110 -- node0x62bbfe2121e0 + node0x62bbfe212f90 -- node0x62bbfe212930 + node0x62bbfe212930 -- node0x62bbfe212860 + node0x62bbfe212860 -- node0x62bbfe212520 + node0x62bbfe212860 -- node0x62bbfe212770 + node0x62bbfe212770 -- node0x62bbfe2126a0 + node0x62bbfe2126a0 -- node0x62bbfe2125f0 + node0x62bbfe212930 -- node0x62bbfe212ec0 + node0x62bbfe212ec0 -- node0x62bbfe212a00 + node0x62bbfe212ec0 -- node0x62bbfe212df0 + node0x62bbfe212df0 -- node0x62bbfe212ad0 + node0x62bbfe212df0 -- node0x62bbfe212d20 + node0x62bbfe212d20 -- node0x62bbfe212c50 + node0x62bbfe212c50 -- node0x62bbfe212ba0 + node0x62bbfe1f79a0 -- node0x62bbfe1f3ef0 + node0x62bbfe1f79a0 -- node0x62bbfe2147c0 + node0x62bbfe1f79a0 -- node0x62bbfe2149c0 + node0x62bbfe2149c0 -- node0x62bbfe214a70 + node0x62bbfe2149c0 -- node0x62bbfe214910 + node0x62bbfe1f79a0 -- node0x62bbfe215a10 + node0x62bbfe215a10 -- node0x62bbfe215ac0 + node0x62bbfe215a10 -- node0x62bbfe214c80 + node0x62bbfe215a10 -- node0x62bbfe214fa0 + node0x62bbfe214fa0 -- node0x62bbfe214ed0 + node0x62bbfe214ed0 -- node0x62bbfe214d50 + node0x62bbfe214ed0 -- node0x62bbfe214e00 + node0x62bbfe214fa0 -- node0x62bbfe215940 + node0x62bbfe215940 -- node0x62bbfe2152e0 + node0x62bbfe2152e0 -- node0x62bbfe215390 + node0x62bbfe2152e0 -- node0x62bbfe215160 + node0x62bbfe215160 -- node0x62bbfe215210 + node0x62bbfe215160 -- node0x62bbfe2150b0 + node0x62bbfe215940 -- node0x62bbfe215870 + node0x62bbfe215870 -- node0x62bbfe2157a0 + node0x62bbfe2157a0 -- node0x62bbfe2156d0 + node0x62bbfe2156d0 -- node0x62bbfe215480 + node0x62bbfe2156d0 -- node0x62bbfe215600 + node0x62bbfe215600 -- node0x62bbfe215550 + node0x62bbfe1f79a0 -- node0x62bbfe1f3fa0 + node0x62bbfe1f79a0 -- node0x62bbfe217090 + node0x62bbfe1f79a0 -- node0x62bbfe217640 + node0x62bbfe217640 -- node0x62bbfe2176f0 + node0x62bbfe217640 -- node0x62bbfe217570 + node0x62bbfe217570 -- node0x62bbfe2174a0 + node0x62bbfe2174a0 -- node0x62bbfe217230 + node0x62bbfe217230 -- node0x62bbfe217180 + node0x62bbfe2174a0 -- node0x62bbfe217320 + node0x62bbfe217320 -- node0x62bbfe2173d0 + node0x62bbfe1f79a0 -- node0x62bbfe218760 + node0x62bbfe218760 -- node0x62bbfe218810 + node0x62bbfe218760 -- node0x62bbfe217890 + node0x62bbfe217890 -- node0x62bbfe2177e0 + node0x62bbfe218760 -- node0x62bbfe217980 + node0x62bbfe218760 -- node0x62bbfe217e60 + node0x62bbfe217e60 -- node0x62bbfe217d90 + node0x62bbfe217d90 -- node0x62bbfe217b00 + node0x62bbfe217b00 -- node0x62bbfe217a50 + node0x62bbfe217d90 -- node0x62bbfe217c10 + node0x62bbfe217c10 -- node0x62bbfe217cc0 + node0x62bbfe217e60 -- node0x62bbfe2184c0 + node0x62bbfe2184c0 -- node0x62bbfe217f50 + node0x62bbfe217f50 -- node0x62bbfe218000 + node0x62bbfe217f50 -- node0x62bbfe2180b0 + node0x62bbfe2184c0 -- node0x62bbfe2183f0 + node0x62bbfe2183f0 -- node0x62bbfe2181a0 + node0x62bbfe2183f0 -- node0x62bbfe218320 + node0x62bbfe218320 -- node0x62bbfe218270 + node0x62bbfe217e60 -- node0x62bbfe218660 + node0x62bbfe218660 -- node0x62bbfe2185b0 + node0x62bbfe1f79a0 -- node0x62bbfe219ed0 + node0x62bbfe219ed0 -- node0x62bbfe219f80 + node0x62bbfe219ed0 -- node0x62bbfe218ae0 + node0x62bbfe218ae0 -- node0x62bbfe218a60 + node0x62bbfe219ed0 -- node0x62bbfe219e20 + node0x62bbfe219e20 -- node0x62bbfe219ab0 + node0x62bbfe219ab0 -- node0x62bbfe219b60 + node0x62bbfe219b60 -- node0x62bbfe2196c0 + node0x62bbfe2196c0 -- node0x62bbfe219610 + node0x62bbfe219b60 -- node0x62bbfe219930 + node0x62bbfe219930 -- node0x62bbfe219840 + node0x62bbfe219840 -- node0x62bbfe219790 + node0x62bbfe219930 -- node0x62bbfe219a00 + node0x62bbfe219ab0 -- node0x62bbfe219c50 + node0x62bbfe219c50 -- node0x62bbfe219110 + node0x62bbfe219110 -- node0x62bbfe219060 + node0x62bbfe219c50 -- node0x62bbfe219470 + node0x62bbfe219470 -- node0x62bbfe219380 + node0x62bbfe219380 -- node0x62bbfe2192b0 + node0x62bbfe2192b0 -- node0x62bbfe219200 + node0x62bbfe219470 -- node0x62bbfe219540 + node0x62bbfe219ab0 -- node0x62bbfe219d20 + node0x62bbfe219d20 -- node0x62bbfe218c70 + node0x62bbfe218c70 -- node0x62bbfe218bc0 + node0x62bbfe219d20 -- node0x62bbfe218ee0 + node0x62bbfe218ee0 -- node0x62bbfe218df0 + node0x62bbfe218df0 -- node0x62bbfe218d40 + node0x62bbfe218ee0 -- node0x62bbfe218fb0 + node0x62bbfe1f79a0 -- node0x62bbfe209ab0 + node0x62bbfe209ab0 -- node0x62bbfe209b60 + node0x62bbfe209ab0 -- node0x62bbfe21ad40 + node0x62bbfe21ad40 -- node0x62bbfe21aad0 + node0x62bbfe21aad0 -- node0x62bbfe21ab80 + node0x62bbfe21ab80 -- node0x62bbfe21a6e0 + node0x62bbfe21a6e0 -- node0x62bbfe21a630 + node0x62bbfe21ab80 -- node0x62bbfe21a950 + node0x62bbfe21a950 -- node0x62bbfe21a860 + node0x62bbfe21a860 -- node0x62bbfe21a7b0 + node0x62bbfe21a950 -- node0x62bbfe21aa20 + node0x62bbfe21aad0 -- node0x62bbfe21ac70 + node0x62bbfe21ac70 -- node0x62bbfe21a130 + node0x62bbfe21a130 -- node0x62bbfe21a080 + node0x62bbfe21ac70 -- node0x62bbfe21a490 + node0x62bbfe21a490 -- node0x62bbfe21a3a0 + node0x62bbfe21a3a0 -- node0x62bbfe21a2d0 + node0x62bbfe21a2d0 -- node0x62bbfe21a220 + node0x62bbfe21a490 -- node0x62bbfe21a560 + node0x62bbfe209ab0 -- node0x62bbfe208f60 + node0x62bbfe208f60 -- node0x62bbfe208e90 + node0x62bbfe208e90 -- node0x62bbfe208810 + node0x62bbfe208810 -- node0x62bbfe21aee0 + node0x62bbfe21aee0 -- node0x62bbfe21ae30 + node0x62bbfe208810 -- node0x62bbfe21afd0 + node0x62bbfe21afd0 -- node0x62bbfe21b080 + node0x62bbfe208e90 -- node0x62bbfe208dc0 + node0x62bbfe208dc0 -- node0x62bbfe208b70 + node0x62bbfe208b70 -- node0x62bbfe208c20 + node0x62bbfe208b70 -- node0x62bbfe2089f0 + node0x62bbfe2089f0 -- node0x62bbfe208aa0 + node0x62bbfe2089f0 -- node0x62bbfe208940 + node0x62bbfe208dc0 -- node0x62bbfe208cf0 + node0x62bbfe208f60 -- node0x62bbfe2099e0 + node0x62bbfe2099e0 -- node0x62bbfe209030 + node0x62bbfe2099e0 -- node0x62bbfe209910 + node0x62bbfe209910 -- node0x62bbfe209830 + node0x62bbfe209830 -- node0x62bbfe209760 + node0x62bbfe209760 -- node0x62bbfe209510 + node0x62bbfe209760 -- node0x62bbfe209690 + node0x62bbfe209690 -- node0x62bbfe2095e0 + node0x62bbfe209830 -- node0x62bbfe209440 + node0x62bbfe209830 -- node0x62bbfe209350 + node0x62bbfe209350 -- node0x62bbfe209100 + node0x62bbfe209350 -- node0x62bbfe209280 + node0x62bbfe209280 -- node0x62bbfe2091d0 +} diff --git a/lib/src/archive/gsc-libc.o b/lib/src/archive/gsc-libc.o new file mode 100644 index 0000000..b7f1eee Binary files /dev/null and b/lib/src/archive/gsc-libc.o differ diff --git a/lib/src/archive/gsc-libc.s b/lib/src/archive/gsc-libc.s new file mode 100644 index 0000000..b787ceb --- /dev/null +++ b/lib/src/archive/gsc-libc.s @@ -0,0 +1,203 @@ + .text + .file "std.gsc" + .globl "std::mem::fill" + .p2align 4, 0x90 + .type "std::mem::fill",@function +"std::mem::fill": + .cfi_startproc + movl $0, -4(%rsp) + cmpl %edx, -4(%rsp) + jge .LBB0_3 + .p2align 4, 0x90 +.LBB0_2: + movslq -4(%rsp), %rax + movb %sil, (%rdi,%rax) + incl -4(%rsp) + cmpl %edx, -4(%rsp) + jl .LBB0_2 +.LBB0_3: + retq +.Lfunc_end0: + .size "std::mem::fill", .Lfunc_end0-"std::mem::fill" + .cfi_endproc + + .globl _start + .p2align 4, 0x90 + .type _start,@function +_start: + .cfi_startproc + pushq %rax + .cfi_def_cfa_offset 16 + callq main@PLT + xorl %edi, %edi + callq "std::os::exit"@PLT + addq $8, %rsp + .cfi_def_cfa_offset 8 + retq +.Lfunc_end1: + .size _start, .Lfunc_end1-_start + .cfi_endproc + + .globl "std::io::print" + .p2align 4, 0x90 + .type "std::io::print",@function +"std::io::print": + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset %rbp, -16 + movq %rsp, %rbp + .cfi_def_cfa_register %rbp + pushq %r14 + pushq %rbx + .cfi_offset %rbx, -32 + .cfi_offset %r14, -24 + movl %esi, %r14d + movq %rdi, %rbx + callq "std::io::getStdoutHandle"@PLT + movq %rsp, %rcx + leaq -16(%rcx), %rsp + movl %eax, -16(%rcx) + movl %r14d, %edx + movl $1, %edi + movq %rbx, %rsi + callq write@PLT + leaq -16(%rbp), %rsp + popq %rbx + popq %r14 + popq %rbp + .cfi_def_cfa %rsp, 8 + .cfi_restore %rbx + .cfi_restore %r14 + .cfi_restore %rbp + retq +.Lfunc_end2: + .size "std::io::print", .Lfunc_end2-"std::io::print" + .cfi_endproc + + .globl "std::mem::realloc" + .p2align 4, 0x90 + .type "std::mem::realloc",@function +"std::mem::realloc": + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + pushq %rbx + .cfi_def_cfa_offset 24 + pushq %rax + .cfi_def_cfa_offset 32 + .cfi_offset %rbx, -24 + .cfi_offset %rbp, -16 + movl %esi, %ebp + movq %rdi, %rbx + movq (%rdi), %rdi + callq realloc@PLT + movq %rax, (%rbx) + movq %rax, %rdi + xorl %esi, %esi + movl %ebp, %edx + callq "std::mem::fill"@PLT + movq (%rbx), %rax + addq $8, %rsp + .cfi_def_cfa_offset 24 + popq %rbx + .cfi_def_cfa_offset 16 + popq %rbp + .cfi_def_cfa_offset 8 + retq +.Lfunc_end3: + .size "std::mem::realloc", .Lfunc_end3-"std::mem::realloc" + .cfi_endproc + + .globl "std::io::getStdoutHandle" + .p2align 4, 0x90 + .type "std::io::getStdoutHandle",@function +"std::io::getStdoutHandle": + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset %rbp, -16 + movq %rsp, %rbp + .cfi_def_cfa_register %rbp + movq %rsp, %rax + leaq -16(%rax), %rsp + movl $0, -16(%rax) + xorl %eax, %eax + movq %rbp, %rsp + popq %rbp + .cfi_def_cfa %rsp, 8 + retq +.Lfunc_end4: + .size "std::io::getStdoutHandle", .Lfunc_end4-"std::io::getStdoutHandle" + .cfi_endproc + + .globl "std::os::exit" + .p2align 4, 0x90 + .type "std::os::exit",@function +"std::os::exit": + .cfi_startproc + pushq %rax + .cfi_def_cfa_offset 16 + callq _exit@PLT + addq $8, %rsp + .cfi_def_cfa_offset 8 + retq +.Lfunc_end5: + .size "std::os::exit", .Lfunc_end5-"std::os::exit" + .cfi_endproc + + .globl "std::mem::alloc" + .p2align 4, 0x90 + .type "std::mem::alloc",@function +"std::mem::alloc": + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset %rbp, -16 + movq %rsp, %rbp + .cfi_def_cfa_register %rbp + pushq %r14 + pushq %rbx + .cfi_offset %rbx, -32 + .cfi_offset %r14, -24 + movl %edi, %ebx + callq malloc@PLT + movq %rsp, %r14 + leaq -16(%r14), %rsp + movq %rax, -16(%r14) + movq %rax, %rdi + xorl %esi, %esi + movl %ebx, %edx + callq "std::mem::fill"@PLT + movq -16(%r14), %rax + leaq -16(%rbp), %rsp + popq %rbx + popq %r14 + popq %rbp + .cfi_def_cfa %rsp, 8 + retq +.Lfunc_end6: + .size "std::mem::alloc", .Lfunc_end6-"std::mem::alloc" + .cfi_endproc + + .globl "std::mem::free" + .p2align 4, 0x90 + .type "std::mem::free",@function +"std::mem::free": + .cfi_startproc + pushq %rbx + .cfi_def_cfa_offset 16 + .cfi_offset %rbx, -16 + movq %rdi, %rbx + movq (%rdi), %rdi + callq free@PLT + movq $0, (%rbx) + popq %rbx + .cfi_def_cfa_offset 8 + .cfi_restore %rbx + retq +.Lfunc_end7: + .size "std::mem::free", .Lfunc_end7-"std::mem::free" + .cfi_endproc + + .section ".note.GNU-stack","",@progbits diff --git a/lib/src/libc/io.gsc b/lib/src/libc/io.gsc new file mode 100644 index 0000000..81929d1 --- /dev/null +++ b/lib/src/libc/io.gsc @@ -0,0 +1,25 @@ + +include "types" + +type box: Handle { + // UNIX file descriptor + i32: fd +} + +fun Handle: getStdoutHandle() { + Handle: stdout + + stdout.fd = 1 as i32 + + ret stdout +} + +#[nomangle] +fun u64:write(in i32: fd, in ref u8: buf, in u64: count) + +fun print(in ref u8: buf, in u32: n) { + + Handle: stdout = std::io::getStdoutHandle() + + write(1 as i32, buf, n as u64) +} diff --git a/lib/src/libc/mem.gsc b/lib/src/libc/mem.gsc new file mode 100644 index 0000000..b98b00b --- /dev/null +++ b/lib/src/libc/mem.gsc @@ -0,0 +1,44 @@ + +include "types" + +// ---------------------------------------------------------------- +// external libc functions +// ................................................................ + +#[nomangle,preserve] +fun ref u8:malloc(in u32: size) + +#[nomangle,preserve] +fun ref u8:realloc(in ref u8: buf, in u32: size) + +#[nomangle,preserve] +fun free(in ref u8: buf) + +// ---------------------------------------------------------------- +// official specification implementation +// ................................................................ + +fun fill(in ref u8: buf, in u8: elem, in u32: len) { + u32: idx = 0 as u32 + while idx < len { + buf[idx] = elem + idx = idx + 1 as u32 + } +} + +fun ref u8:alloc(in u32: len) { + ref u8: buf = malloc(len) + std::mem::fill(buf, 0 as u8, len) + ret buf +} + +fun ref u8:realloc(in out ref u8: buf, in u32: len) { + buf = realloc(buf, len) + std::mem::fill(buf, 0 as u8, len) + ret buf +} + +fun free(in out ref u8: buf) { + free(buf) + buf = 0 to ref u8 +} diff --git a/lib/src/libc/std.gsc b/lib/src/libc/std.gsc index 341f7e1..e2ea20e 100644 --- a/lib/src/libc/std.gsc +++ b/lib/src/libc/std.gsc @@ -1,3 +1,5 @@ include "os.gsc" +include "mem" include "bootstrap.gsc" +include "io" diff --git a/src/ast/ast.c b/src/ast/ast.c index 85d9241..2d8e620 100644 --- a/src/ast/ast.c +++ b/src/ast/ast.c @@ -394,6 +394,7 @@ void AST_import_module(AST_NODE_PTR dst, size_t k, AST_NODE_PTR src) { } case AST_Typedef: case AST_Def: + case AST_Box: break; default: node = NULL; diff --git a/src/llvm/llvm-ir/expr.c b/src/llvm/llvm-ir/expr.c index 5a1b4a0..facd387 100644 --- a/src/llvm/llvm-ir/expr.c +++ b/src/llvm/llvm-ir/expr.c @@ -373,6 +373,8 @@ BackendError impl_variable_load(LLVMBackendCompileUnit* unit, Type* type; + // TODO: get member of boxes + if (variable->kind == VariableKindDefinition) { type = variable->impl.definiton.declaration.type; } else { @@ -442,12 +444,8 @@ BackendError impl_parameter_load(LLVMBackendCompileUnit* unit, get_type_impl(unit, scope->func_scope->global_scope, type, &llvm_type); - if (LLVMGetTypeKind(LLVMTypeOf(llvm_variable)) == LLVMPointerTypeKind) { - *llvm_result = - LLVMBuildLoad2(builder, llvm_type, llvm_variable, ""); - } else { - *llvm_result = llvm_variable; - } + *llvm_result = + LLVMBuildLoad2(builder, llvm_type, llvm_variable, ""); } return SUCCESS; diff --git a/src/llvm/llvm-ir/stmt.c b/src/llvm/llvm-ir/stmt.c index ff236e2..88cadf6 100644 --- a/src/llvm/llvm-ir/stmt.c +++ b/src/llvm/llvm-ir/stmt.c @@ -75,7 +75,8 @@ BackendError impl_storage_expr(LLVMBackendCompileUnit* unit, } } - if (true) { + // not sure why this was enabled? + if (false) { LLVMTypeRef deref_type = NULL; err = get_type_impl(unit, scope->func_scope->global_scope, expr->impl.dereference.array->target_type, @@ -100,7 +101,23 @@ BackendError impl_storage_expr(LLVMBackendCompileUnit* unit, break; case StorageExprKindBoxAccess: - // TODO: resolve LLVMValueRef from BoxAccess + LLVMValueRef variable = get_variable(scope, expr->impl.boxAccess.variable->name); + + for (guint i = 0; i < expr->impl.boxAccess.member->len; i++) { + BoxMember* member = g_array_index(expr->impl.boxAccess.member, BoxMember*, i); + + LLVMTypeRef member_type = NULL; + err = get_type_impl(unit, scope->func_scope->global_scope, + expr->target_type, &member_type); + if (err.kind != Success) { + return err; + } + + variable = LLVMBuildStructGEP2(builder, member_type, variable, member->index, ""); + } + + *storage_target = variable; + break; } diff --git a/src/llvm/llvm-ir/types.c b/src/llvm/llvm-ir/types.c index 4d50fff..df601ba 100644 --- a/src/llvm/llvm-ir/types.c +++ b/src/llvm/llvm-ir/types.c @@ -270,13 +270,13 @@ BackendError impl_box_type(LLVMBackendCompileUnit* unit, LLVMGlobalScope* scope, break; } - g_array_append_val(members, llvm_type); + g_array_append_val(members, llvm_local_type); } DEBUG("implemented %ld members", members->len); if (err.kind == Success) { *llvm_type = - LLVMStructType((LLVMTypeRef*) members->data, members->len, 0); + LLVMStructTypeInContext(unit->context, (LLVMTypeRef*) members->data, members->len, false); } g_array_free(members, FALSE); diff --git a/src/set/set.c b/src/set/set.c index 399363b..2fbfe6a 100644 --- a/src/set/set.c +++ b/src/set/set.c @@ -1889,6 +1889,49 @@ int createStorageExpr(StorageExpr* expr, AST_NODE_PTR node) { return SEMANTIC_ERROR; }; break; + case AST_IdentList: { + expr->kind = StorageExprKindBoxAccess; + + const char* boxname = AST_get_node(node, 0)->value; + int status = getVariableFromScope(boxname, &expr->impl.boxAccess.variable); + Variable* boxvar = expr->impl.boxAccess.variable; + + if (status == SEMANTIC_ERROR) { + print_diagnostic(&AST_get_node(node, 0)->location, Error, + "Variable of name `%s` does not exist"); + return SEMANTIC_ERROR; + } + + expr->impl.boxAccess.nodePtr = node; + expr->impl.boxAccess.member = mem_new_g_array(MemoryNamespaceSet, sizeof(BoxMember)); + + BoxType* boxtype = NULL; + if (boxvar->kind == VariableKindDeclaration) { + + boxtype = boxvar->impl.declaration.type->impl.box; + } else if (boxvar->kind == VariableKindDefinition) { + boxtype = boxvar->impl.definiton.declaration.type->impl.box; + } else { + return SEMANTIC_ERROR; + } + + for (guint i = 1; i < AST_get_child_count(node); i++) { + AST_NODE_PTR member = AST_get_node(node, i); + + if (g_hash_table_contains(boxtype->member, member->value)) { + BoxMember* boxmember = g_hash_table_lookup(boxtype->member, member->value); + + g_array_append_val(expr->impl.boxAccess.member, boxmember); + boxtype = boxmember->box; + expr->target_type = boxmember->type; + } else { + print_diagnostic(&member->location, Error, "no member `%s` exists", member->value); + return SEMANTIC_ERROR; + } + } + } + break; + default: print_message(Error, "Unimplemented"); return SEMANTIC_ERROR; @@ -2349,7 +2392,7 @@ int createParam(GArray* Paramlist, AST_NODE_PTR currentNode) { PANIC("IO_Qualifier is not in or out"); } } else { - PANIC("IO_Qualifier has not the right amount of children"); + decl.qualifier = In; } if (set_get_type_impl(AST_get_node(paramdecl, 0), &(decl.type))) { @@ -2675,7 +2718,7 @@ int createFunction(Function* function, AST_NODE_PTR currentNode) { return SEMANTIC_OK; } -int createDeclMember(BoxType* ParentBox, AST_NODE_PTR currentNode) { +int createDeclMember(BoxType* ParentBox, unsigned int index, AST_NODE_PTR currentNode) { Type* declType = mem_alloc(MemoryNamespaceSet, sizeof(Type)); int status = set_get_type_impl(AST_get_node(currentNode, 0), &declType); @@ -2691,6 +2734,7 @@ int createDeclMember(BoxType* ParentBox, AST_NODE_PTR currentNode) { decl->box = ParentBox; decl->initalizer = NULL; decl->type = declType; + decl->index = index; if (g_hash_table_contains(ParentBox->member, (gpointer) decl->name)) { return SEMANTIC_ERROR; } @@ -2768,15 +2812,19 @@ int createBox(GHashTable* boxes, AST_NODE_PTR currentNode) { Type* boxType = mem_alloc(MemoryNamespaceSet, sizeof(Type)); boxType->nodePtr = currentNode; + boxType->kind = TypeKindBox; boxType->impl.box = box; + boxType->impl.box->member = mem_new_g_hash_table(MemoryNamespaceSet, g_str_hash, g_str_equal); - for (size_t i = 0; boxMemberList->children->len; i++) { + unsigned int index = 0; + for (size_t i = 0; i < boxMemberList->children->len; i++) { switch (AST_get_node(boxMemberList, i)->kind) { case AST_Decl: case AST_Def: - if (createDeclMember(box, AST_get_node(boxMemberList, i))) { + if (createDeclMember(box, index, AST_get_node(boxMemberList, i))) { return SEMANTIC_ERROR; } + index ++; break; case AST_FunDef: { @@ -2793,7 +2841,14 @@ int createBox(GHashTable* boxes, AST_NODE_PTR currentNode) { if (g_hash_table_contains(boxes, (gpointer) boxName)) { return SEMANTIC_ERROR; } - g_hash_table_insert(boxes, (gpointer) boxName, box); + + Typedefine* boxdef = mem_alloc(MemoryNamespaceSet, sizeof(Typedefine)); + boxdef->name = boxName; + boxdef->type = boxType; + boxdef->nodePtr = currentNode; + + g_hash_table_insert(boxes, (gpointer) boxName, boxdef); + g_hash_table_insert(declaredBoxes, (gpointer) boxName, boxType); return SEMANTIC_OK; } diff --git a/src/set/types.h b/src/set/types.h index c836f37..b8a37a4 100644 --- a/src/set/types.h +++ b/src/set/types.h @@ -80,6 +80,7 @@ typedef struct Block_t Block; typedef struct Expression_t Expression; typedef struct BoxMember_t { + unsigned int index; const char* name; Type* type; BoxType* box; diff --git a/tests/box/archive/prime.gv b/tests/box/archive/prime.gv new file mode 100644 index 0000000..ace20ce --- /dev/null +++ b/tests/box/archive/prime.gv @@ -0,0 +1,554 @@ +graph { + node0x5f3e066a7ed0 [label="@\nmodule"] + node0x5f3e066a8440 [label="@\nstd"] + node0x5f3e066d4090 [label="@std::types\ntypedef"] + node0x5f3e066d4980 [label="@std::types\ntype"] + node0x5f3e066c5a80 [label="@std::types\nsigned"] + node0x5f3e066c5dc0 [label="@std::types\nlist"] + node0x5f3e066c5e90 [label="@std::types\nhalf"] + node0x5f3e066c59b0 [label="@std::types\nhalf"] + node0x5f3e066d7ad0 [label="@std::types\nint"] + node0x5f3e066d2480 [label="@std::types\ni8"] + node0x5f3e066c1c40 [label="@std::types\ntypedef"] + node0x5f3e066c1b70 [label="@std::types\ntype"] + node0x5f3e066d1c80 [label="@std::types\nsigned"] + node0x5f3e066d17c0 [label="@std::types\nlist"] + node0x5f3e066cfad0 [label="@std::types\nhalf"] + node0x5f3e066cf520 [label="@std::types\nint"] + node0x5f3e066ccd80 [label="@std::types\ni16"] + node0x5f3e066cb160 [label="@std::types\ntypedef"] + node0x5f3e066cb070 [label="@std::types\ntype"] + node0x5f3e066cccb0 [label="@std::types\nsigned"] + node0x5f3e066ccbe0 [label="@std::types\nint"] + node0x5f3e066bce40 [label="@std::types\ni32"] + node0x5f3e066b8a50 [label="@std::types\ntypedef"] + node0x5f3e066c1750 [label="@std::types\ntype"] + node0x5f3e066bcd70 [label="@std::types\nsigned"] + node0x5f3e066bc7c0 [label="@std::types\nlist"] + node0x5f3e066bc550 [label="@std::types\nlong"] + node0x5f3e066bc070 [label="@std::types\nint"] + node0x5f3e0671af50 [label="@std::types\ni64"] + node0x5f3e066ec970 [label="@std::types\ntypedef"] + node0x5f3e0672e6c0 [label="@std::types\ntype"] + node0x5f3e06714000 [label="@std::types\nsigned"] + node0x5f3e06740d60 [label="@std::types\nlist"] + node0x5f3e0678a880 [label="@std::types\nlong"] + node0x5f3e066ec720 [label="@std::types\nlong"] + node0x5f3e06730b20 [label="@std::types\nint"] + node0x5f3e066ec840 [label="@std::types\ni128"] + node0x5f3e066ef830 [label="@std::types\ntypedef"] + node0x5f3e06716540 [label="@std::types\ntype"] + node0x5f3e066ec160 [label="@std::types\nunsigned"] + node0x5f3e066c64e0 [label="@std::types\nlist"] + node0x5f3e0679c090 [label="@std::types\nhalf"] + node0x5f3e06740ad0 [label="@std::types\nhalf"] + node0x5f3e066ecaa0 [label="@std::types\nint"] + node0x5f3e066eab00 [label="@std::types\nu8"] + node0x5f3e066a74c0 [label="@std::types\ntypedef"] + node0x5f3e067f48e0 [label="@std::types\ntype"] + node0x5f3e066eab80 [label="@std::types\nunsigned"] + node0x5f3e066a84c0 [label="@std::types\nlist"] + node0x5f3e066af640 [label="@std::types\nhalf"] + node0x5f3e067ab580 [label="@std::types\nint"] + node0x5f3e066a7540 [label="@std::types\nu16"] + node0x5f3e067304d0 [label="@std::types\ntypedef"] + node0x5f3e067b8cd0 [label="@std::types\ntype"] + node0x5f3e066ebe50 [label="@std::types\nunsigned"] + node0x5f3e066e3130 [label="@std::types\nint"] + node0x5f3e0671eb60 [label="@std::types\nu32"] + node0x5f3e0672ce50 [label="@std::types\ntypedef"] + node0x5f3e0671a3c0 [label="@std::types\ntype"] + node0x5f3e0671ec10 [label="@std::types\nunsigned"] + node0x5f3e067b7d70 [label="@std::types\nlist"] + node0x5f3e067b7e20 [label="@std::types\nlong"] + node0x5f3e0671a340 [label="@std::types\nint"] + node0x5f3e0672cef0 [label="@std::types\nu64"] + node0x5f3e067e3d00 [label="@std::types\ntypedef"] + node0x5f3e067e3c20 [label="@std::types\ntype"] + node0x5f3e066f0560 [label="@std::types\nunsigned"] + node0x5f3e0678d470 [label="@std::types\nlist"] + node0x5f3e0678d520 [label="@std::types\nlong"] + node0x5f3e066d53b0 [label="@std::types\nlong"] + node0x5f3e066d5430 [label="@std::types\nint"] + node0x5f3e06718160 [label="@std::types\nu128"] + node0x5f3e066d7950 [label="@std::types\ntypedef"] + node0x5f3e066d7e30 [label="@std::types\ntype"] + node0x5f3e067181e0 [label="@std::types\nlist"] + node0x5f3e0672e0d0 [label="@std::types\nhalf"] + node0x5f3e0672e170 [label="@std::types\nfloat"] + node0x5f3e066d7a20 [label="@std::types\nf16"] + node0x5f3e066d1d50 [label="@std::types\ntypedef"] + node0x5f3e066d7830 [label="@std::types\ntype"] + node0x5f3e066d77b0 [label="@std::types\nfloat"] + node0x5f3e066d1e20 [label="@std::types\nf32"] + node0x5f3e066eac60 [label="@std::types\ntypedef"] + node0x5f3e067215e0 [label="@std::types\ntype"] + node0x5f3e0671d320 [label="@std::types\nlist"] + node0x5f3e0671d3d0 [label="@std::types\ndouble"] + node0x5f3e06721530 [label="@std::types\nfloat"] + node0x5f3e066ead30 [label="@std::types\nf64"] + node0x5f3e067b7bb0 [label="@std::os\nprocdef"] + node0x5f3e0674c230 [label="@std::os\nexit"] + node0x5f3e0669dc20 [label="@std::os\nlist"] + node0x5f3e0669d9e0 [label="@std::os\nparam list"] + node0x5f3e0669db00 [label="@std::os\nparameter"] + node0x5f3e067241f0 [label="@std::os\nlist"] + node0x5f3e066b0ef0 [label="@std::os\nin"] + node0x5f3e066b4a90 [label="@std::os\nparameter-declaration"] + node0x5f3e0669c4b0 [label="@std::os\ntype"] + node0x5f3e0678ce80 [label="@std::os\ni32"] + node0x5f3e0669c6f0 [label="@std::os\ncode"] + node0x5f3e0672cce0 [label="@std::mem\nprocdef"] + node0x5f3e066ec4d0 [label="@std::mem\nfill"] + node0x5f3e066a8750 [label="@std::mem\nlist"] + node0x5f3e0674b630 [label="@std::mem\nparam list"] + node0x5f3e066d0270 [label="@std::mem\nparameter"] + node0x5f3e0672cbc0 [label="@std::mem\nlist"] + node0x5f3e0672cb10 [label="@std::mem\nin"] + node0x5f3e0674b4b0 [label="@std::mem\nparameter-declaration"] + node0x5f3e0672e930 [label="@std::mem\ntype"] + node0x5f3e0672e880 [label="@std::mem\nu32"] + node0x5f3e0674b580 [label="@std::mem\nlen"] + node0x5f3e066d0360 [label="@std::mem\nparameter"] + node0x5f3e06730280 [label="@std::mem\nlist"] + node0x5f3e067301d0 [label="@std::mem\nin"] + node0x5f3e0669faa0 [label="@std::mem\nparameter-declaration"] + node0x5f3e066ff970 [label="@std::mem\ntype"] + node0x5f3e066ff8f0 [label="@std::mem\nu8"] + node0x5f3e0669fb70 [label="@std::mem\nelem"] + node0x5f3e066a8650 [label="@std::mem\nparameter"] + node0x5f3e066d1ed0 [label="@std::mem\nlist"] + node0x5f3e0674ad90 [label="@std::mem\nin"] + node0x5f3e067e4d90 [label="@std::mem\nparameter-declaration"] + node0x5f3e066ce820 [label="@std::mem\nref"] + node0x5f3e066ce750 [label="@std::mem\ntype"] + node0x5f3e066d1fc0 [label="@std::mem\nu8"] + node0x5f3e067e4e30 [label="@std::mem\nbuf"] + node0x5f3e0678fe80 [label="@std::mem\nfundef"] + node0x5f3e066ca7b0 [label="@std::mem\nalloc"] + node0x5f3e067b5790 [label="@std::mem\nref"] + node0x5f3e067b56f0 [label="@std::mem\ntype"] + node0x5f3e066ec5b0 [label="@std::mem\nu8"] + node0x5f3e066d6c90 [label="@std::mem\nlist"] + node0x5f3e066c5cb0 [label="@std::mem\nparam list"] + node0x5f3e066d6ba0 [label="@std::mem\nparameter"] + node0x5f3e0674c530 [label="@std::mem\nlist"] + node0x5f3e067b58a0 [label="@std::mem\nin"] + node0x5f3e066c5b50 [label="@std::mem\nparameter-declaration"] + node0x5f3e0674c690 [label="@std::mem\ntype"] + node0x5f3e0674c5e0 [label="@std::mem\nu32"] + node0x5f3e066c5c00 [label="@std::mem\nlen"] + node0x5f3e066c9dc0 [label="@std::mem\nfundef"] + node0x5f3e0671e170 [label="@std::mem\nrealloc"] + node0x5f3e066ca490 [label="@std::mem\nref"] + node0x5f3e066ca940 [label="@std::mem\ntype"] + node0x5f3e066ca890 [label="@std::mem\nu8"] + node0x5f3e066c3290 [label="@std::mem\nlist"] + node0x5f3e066c4280 [label="@std::mem\nparam list"] + node0x5f3e066c4330 [label="@std::mem\nparameter"] + node0x5f3e066c4cd0 [label="@std::mem\nlist"] + node0x5f3e066c4c20 [label="@std::mem\nin"] + node0x5f3e066c58e0 [label="@std::mem\nparameter-declaration"] + node0x5f3e066c57f0 [label="@std::mem\ntype"] + node0x5f3e066c5740 [label="@std::mem\nu32"] + node0x5f3e066c41d0 [label="@std::mem\nlen"] + node0x5f3e066c31c0 [label="@std::mem\nparameter"] + node0x5f3e066ca280 [label="@std::mem\nlist"] + node0x5f3e066ca580 [label="@std::mem\nin"] + node0x5f3e066ca1d0 [label="@std::mem\nout"] + node0x5f3e066bbfc0 [label="@std::mem\nparameter-declaration"] + node0x5f3e066bbed0 [label="@std::mem\nref"] + node0x5f3e066bbe00 [label="@std::mem\ntype"] + node0x5f3e066ca370 [label="@std::mem\nu8"] + node0x5f3e066c4b50 [label="@std::mem\nbuf"] + node0x5f3e066c9ea0 [label="@std::mem\nprocdef"] + node0x5f3e066d7060 [label="@std::mem\nfree"] + node0x5f3e06789400 [label="@std::mem\nlist"] + node0x5f3e066ee6c0 [label="@std::mem\nparam list"] + node0x5f3e066ee770 [label="@std::mem\nparameter"] + node0x5f3e067db410 [label="@std::mem\nlist"] + node0x5f3e067db2b0 [label="@std::mem\nin"] + node0x5f3e067db360 [label="@std::mem\nout"] + node0x5f3e066f0af0 [label="@std::mem\nparameter-declaration"] + node0x5f3e066f0a00 [label="@std::mem\nref"] + node0x5f3e066f0950 [label="@std::mem\ntype"] + node0x5f3e067db4e0 [label="@std::mem\nu8"] + node0x5f3e066ee610 [label="@std::mem\nbuf"] + node0x5f3e066c9f70 [label="@std::bootstrap\nprocdef"] + node0x5f3e066c5420 [label="@std::bootstrap\n_start"] + node0x5f3e066d6040 [label="@std::bootstrap\nlist"] + node0x5f3e066b83f0 [label="@std::io\nbox"] + node0x5f3e066b84a0 [label="@std::io\nHandle"] + node0x5f3e066b8320 [label="@std::io\nlist"] + node0x5f3e066c25f0 [label="@std::io\ndecl"] + node0x5f3e066c2380 [label="@std::io\ntype"] + node0x5f3e066c5690 [label="@std::io\ni32"] + node0x5f3e066c2470 [label="@std::io\nident list"] + node0x5f3e066c2520 [label="@std::io\nfd"] + node0x5f3e066ca040 [label="@std::io\nfundef"] + node0x5f3e0665f660 [label="@std::io\ngetStdoutHandle"] + node0x5f3e066bf1d0 [label="@std::io\ntype"] + node0x5f3e066bf120 [label="@std::io\nHandle"] + node0x5f3e066bf2c0 [label="@std::io\nlist"] + node0x5f3e066ca120 [label="@std::io\nprocdef"] + node0x5f3e066f1c00 [label="@std::io\nprint"] + node0x5f3e066d2180 [label="@std::io\nlist"] + node0x5f3e067e09b0 [label="@std::io\nparam list"] + node0x5f3e067e0a60 [label="@std::io\nparameter"] + node0x5f3e067b2070 [label="@std::io\nlist"] + node0x5f3e067b1fc0 [label="@std::io\nin"] + node0x5f3e067e0830 [label="@std::io\nparameter-declaration"] + node0x5f3e067b21f0 [label="@std::io\ntype"] + node0x5f3e067b2140 [label="@std::io\nu32"] + node0x5f3e067e0900 [label="@std::io\nn"] + node0x5f3e066d20b0 [label="@std::io\nparameter"] + node0x5f3e067e10b0 [label="@std::io\nlist"] + node0x5f3e067e1000 [label="@std::io\nin"] + node0x5f3e067e01b0 [label="@std::io\nparameter-declaration"] + node0x5f3e067e00c0 [label="@std::io\nref"] + node0x5f3e067dfff0 [label="@std::io\ntype"] + node0x5f3e067dff40 [label="@std::io\nu8"] + node0x5f3e067b1f20 [label="@std::io\nbuf"] + node0x5f3e066b0bb0 [label="@\nprocdef"] + node0x5f3e066b0c30 [label="@\nmain"] + node0x5f3e066a9070 [label="@\nlist"] + node0x5f3e066b0140 [label="@\nstmt list"] + node0x5f3e066b0070 [label="@\ndef"] + node0x5f3e066af320 [label="@\ndecl"] + node0x5f3e066aef00 [label="@\nref"] + node0x5f3e066a92d0 [label="@\ntype"] + node0x5f3e066a8220 [label="@\nu8"] + node0x5f3e066af010 [label="@\nident list"] + node0x5f3e066af090 [label="@\nbuf"] + node0x5f3e066affa0 [label="@\nfuncall"] + node0x5f3e066af520 [label="@\nmodref"] + node0x5f3e066af5a0 [label="@\nstd"] + node0x5f3e066af420 [label="@\nmodref"] + node0x5f3e066af4a0 [label="@\nmem"] + node0x5f3e066af3a0 [label="@\nalloc"] + node0x5f3e066afed0 [label="@\narg list"] + node0x5f3e066afe00 [label="@\nexpr list"] + node0x5f3e066afd30 [label="@\ntypecast"] + node0x5f3e066aef80 [label="@\n64"] + node0x5f3e066afc60 [label="@\ntype"] + node0x5f3e066af7a0 [label="@\nu32"] + node0x5f3e066b07e0 [label="@\ndef"] + node0x5f3e066b0620 [label="@\ndecl"] + node0x5f3e066b03b0 [label="@\nref"] + node0x5f3e066b02e0 [label="@\ntype"] + node0x5f3e066b0230 [label="@\nu8"] + node0x5f3e066b04a0 [label="@\nident list"] + node0x5f3e066b0550 [label="@\nadr"] + node0x5f3e066b0730 [label="@\nbuf"] + node0x5f3e066b1c90 [label="@\nfuncall"] + node0x5f3e066b1330 [label="@\nmodref"] + node0x5f3e066b13e0 [label="@\nstd"] + node0x5f3e066b11b0 [label="@\nmodref"] + node0x5f3e066b1260 [label="@\nmem"] + node0x5f3e066b08f0 [label="@\nrealloc"] + node0x5f3e066b1ba0 [label="@\narg list"] + node0x5f3e066b1ad0 [label="@\nexpr list"] + node0x5f3e066b1a00 [label="@\ntypecast"] + node0x5f3e066b17b0 [label="@\n32"] + node0x5f3e066b1930 [label="@\ntype"] + node0x5f3e066b1880 [label="@\nu32"] + node0x5f3e066b16e0 [label="@\nbuf"] + node0x5f3e066b2730 [label="@\nfuncall"] + node0x5f3e066b1fe0 [label="@\nmodref"] + node0x5f3e066b2090 [label="@\nstd"] + node0x5f3e066b1e60 [label="@\nmodref"] + node0x5f3e066b1f10 [label="@\nio"] + node0x5f3e066b1db0 [label="@\nprint"] + node0x5f3e066b2640 [label="@\narg list"] + node0x5f3e066b2570 [label="@\nexpr list"] + node0x5f3e066b24a0 [label="@\ntypecast"] + node0x5f3e066b2250 [label="@\n13"] + node0x5f3e066b23d0 [label="@\ntype"] + node0x5f3e066b2320 [label="@\nu32"] + node0x5f3e066b21a0 [label="@\nHello, World +"] + node0x5f3e066b0a90 [label="@\nfuncall"] + node0x5f3e066b2a70 [label="@\nmodref"] + node0x5f3e066b2b20 [label="@\nstd"] + node0x5f3e066b28f0 [label="@\nmodref"] + node0x5f3e066b29a0 [label="@\nmem"] + node0x5f3e066b2840 [label="@\nfree"] + node0x5f3e066b09c0 [label="@\narg list"] + node0x5f3e066b2cc0 [label="@\nexpr list"] + node0x5f3e066b2c10 [label="@\nbuf"] + node0x5f3e066a7ed0 -- node0x5f3e066a8440 + node0x5f3e066a7ed0 -- node0x5f3e066d4090 + node0x5f3e066d4090 -- node0x5f3e066d4980 + node0x5f3e066d4980 -- node0x5f3e066c5a80 + node0x5f3e066d4980 -- node0x5f3e066c5dc0 + node0x5f3e066c5dc0 -- node0x5f3e066c5e90 + node0x5f3e066c5dc0 -- node0x5f3e066c59b0 + node0x5f3e066d4980 -- node0x5f3e066d7ad0 + node0x5f3e066d4090 -- node0x5f3e066d2480 + node0x5f3e066a7ed0 -- node0x5f3e066c1c40 + node0x5f3e066c1c40 -- node0x5f3e066c1b70 + node0x5f3e066c1b70 -- node0x5f3e066d1c80 + node0x5f3e066c1b70 -- node0x5f3e066d17c0 + node0x5f3e066d17c0 -- node0x5f3e066cfad0 + node0x5f3e066c1b70 -- node0x5f3e066cf520 + node0x5f3e066c1c40 -- node0x5f3e066ccd80 + node0x5f3e066a7ed0 -- node0x5f3e066cb160 + node0x5f3e066cb160 -- node0x5f3e066cb070 + node0x5f3e066cb070 -- node0x5f3e066cccb0 + node0x5f3e066cb070 -- node0x5f3e066ccbe0 + node0x5f3e066cb160 -- node0x5f3e066bce40 + node0x5f3e066a7ed0 -- node0x5f3e066b8a50 + node0x5f3e066b8a50 -- node0x5f3e066c1750 + node0x5f3e066c1750 -- node0x5f3e066bcd70 + node0x5f3e066c1750 -- node0x5f3e066bc7c0 + node0x5f3e066bc7c0 -- node0x5f3e066bc550 + node0x5f3e066c1750 -- node0x5f3e066bc070 + node0x5f3e066b8a50 -- node0x5f3e0671af50 + node0x5f3e066a7ed0 -- node0x5f3e066ec970 + node0x5f3e066ec970 -- node0x5f3e0672e6c0 + node0x5f3e0672e6c0 -- node0x5f3e06714000 + node0x5f3e0672e6c0 -- node0x5f3e06740d60 + node0x5f3e06740d60 -- node0x5f3e0678a880 + node0x5f3e06740d60 -- node0x5f3e066ec720 + node0x5f3e0672e6c0 -- node0x5f3e06730b20 + node0x5f3e066ec970 -- node0x5f3e066ec840 + node0x5f3e066a7ed0 -- node0x5f3e066ef830 + node0x5f3e066ef830 -- node0x5f3e06716540 + node0x5f3e06716540 -- node0x5f3e066ec160 + node0x5f3e06716540 -- node0x5f3e066c64e0 + node0x5f3e066c64e0 -- node0x5f3e0679c090 + node0x5f3e066c64e0 -- node0x5f3e06740ad0 + node0x5f3e06716540 -- node0x5f3e066ecaa0 + node0x5f3e066ef830 -- node0x5f3e066eab00 + node0x5f3e066a7ed0 -- node0x5f3e066a74c0 + node0x5f3e066a74c0 -- node0x5f3e067f48e0 + node0x5f3e067f48e0 -- node0x5f3e066eab80 + node0x5f3e067f48e0 -- node0x5f3e066a84c0 + node0x5f3e066a84c0 -- node0x5f3e066af640 + node0x5f3e067f48e0 -- node0x5f3e067ab580 + node0x5f3e066a74c0 -- node0x5f3e066a7540 + node0x5f3e066a7ed0 -- node0x5f3e067304d0 + node0x5f3e067304d0 -- node0x5f3e067b8cd0 + node0x5f3e067b8cd0 -- node0x5f3e066ebe50 + node0x5f3e067b8cd0 -- node0x5f3e066e3130 + node0x5f3e067304d0 -- node0x5f3e0671eb60 + node0x5f3e066a7ed0 -- node0x5f3e0672ce50 + node0x5f3e0672ce50 -- node0x5f3e0671a3c0 + node0x5f3e0671a3c0 -- node0x5f3e0671ec10 + node0x5f3e0671a3c0 -- node0x5f3e067b7d70 + node0x5f3e067b7d70 -- node0x5f3e067b7e20 + node0x5f3e0671a3c0 -- node0x5f3e0671a340 + node0x5f3e0672ce50 -- node0x5f3e0672cef0 + node0x5f3e066a7ed0 -- node0x5f3e067e3d00 + node0x5f3e067e3d00 -- node0x5f3e067e3c20 + node0x5f3e067e3c20 -- node0x5f3e066f0560 + node0x5f3e067e3c20 -- node0x5f3e0678d470 + node0x5f3e0678d470 -- node0x5f3e0678d520 + node0x5f3e0678d470 -- node0x5f3e066d53b0 + node0x5f3e067e3c20 -- node0x5f3e066d5430 + node0x5f3e067e3d00 -- node0x5f3e06718160 + node0x5f3e066a7ed0 -- node0x5f3e066d7950 + node0x5f3e066d7950 -- node0x5f3e066d7e30 + node0x5f3e066d7e30 -- node0x5f3e067181e0 + node0x5f3e067181e0 -- node0x5f3e0672e0d0 + node0x5f3e066d7e30 -- node0x5f3e0672e170 + node0x5f3e066d7950 -- node0x5f3e066d7a20 + node0x5f3e066a7ed0 -- node0x5f3e066d1d50 + node0x5f3e066d1d50 -- node0x5f3e066d7830 + node0x5f3e066d7830 -- node0x5f3e066d77b0 + node0x5f3e066d1d50 -- node0x5f3e066d1e20 + node0x5f3e066a7ed0 -- node0x5f3e066eac60 + node0x5f3e066eac60 -- node0x5f3e067215e0 + node0x5f3e067215e0 -- node0x5f3e0671d320 + node0x5f3e0671d320 -- node0x5f3e0671d3d0 + node0x5f3e067215e0 -- node0x5f3e06721530 + node0x5f3e066eac60 -- node0x5f3e066ead30 + node0x5f3e066a7ed0 -- node0x5f3e067b7bb0 + node0x5f3e067b7bb0 -- node0x5f3e0674c230 + node0x5f3e067b7bb0 -- node0x5f3e0669dc20 + node0x5f3e0669dc20 -- node0x5f3e0669d9e0 + node0x5f3e0669d9e0 -- node0x5f3e0669db00 + node0x5f3e0669db00 -- node0x5f3e067241f0 + node0x5f3e067241f0 -- node0x5f3e066b0ef0 + node0x5f3e0669db00 -- node0x5f3e066b4a90 + node0x5f3e066b4a90 -- node0x5f3e0669c4b0 + node0x5f3e0669c4b0 -- node0x5f3e0678ce80 + node0x5f3e066b4a90 -- node0x5f3e0669c6f0 + node0x5f3e066a7ed0 -- node0x5f3e0672cce0 + node0x5f3e0672cce0 -- node0x5f3e066ec4d0 + node0x5f3e0672cce0 -- node0x5f3e066a8750 + node0x5f3e066a8750 -- node0x5f3e0674b630 + node0x5f3e0674b630 -- node0x5f3e066d0270 + node0x5f3e066d0270 -- node0x5f3e0672cbc0 + node0x5f3e0672cbc0 -- node0x5f3e0672cb10 + node0x5f3e066d0270 -- node0x5f3e0674b4b0 + node0x5f3e0674b4b0 -- node0x5f3e0672e930 + node0x5f3e0672e930 -- node0x5f3e0672e880 + node0x5f3e0674b4b0 -- node0x5f3e0674b580 + node0x5f3e0674b630 -- node0x5f3e066d0360 + node0x5f3e066d0360 -- node0x5f3e06730280 + node0x5f3e06730280 -- node0x5f3e067301d0 + node0x5f3e066d0360 -- node0x5f3e0669faa0 + node0x5f3e0669faa0 -- node0x5f3e066ff970 + node0x5f3e066ff970 -- node0x5f3e066ff8f0 + node0x5f3e0669faa0 -- node0x5f3e0669fb70 + node0x5f3e0674b630 -- node0x5f3e066a8650 + node0x5f3e066a8650 -- node0x5f3e066d1ed0 + node0x5f3e066d1ed0 -- node0x5f3e0674ad90 + node0x5f3e066a8650 -- node0x5f3e067e4d90 + node0x5f3e067e4d90 -- node0x5f3e066ce820 + node0x5f3e066ce820 -- node0x5f3e066ce750 + node0x5f3e066ce750 -- node0x5f3e066d1fc0 + node0x5f3e067e4d90 -- node0x5f3e067e4e30 + node0x5f3e066a7ed0 -- node0x5f3e0678fe80 + node0x5f3e0678fe80 -- node0x5f3e066ca7b0 + node0x5f3e0678fe80 -- node0x5f3e067b5790 + node0x5f3e067b5790 -- node0x5f3e067b56f0 + node0x5f3e067b56f0 -- node0x5f3e066ec5b0 + node0x5f3e0678fe80 -- node0x5f3e066d6c90 + node0x5f3e066d6c90 -- node0x5f3e066c5cb0 + node0x5f3e066c5cb0 -- node0x5f3e066d6ba0 + node0x5f3e066d6ba0 -- node0x5f3e0674c530 + node0x5f3e0674c530 -- node0x5f3e067b58a0 + node0x5f3e066d6ba0 -- node0x5f3e066c5b50 + node0x5f3e066c5b50 -- node0x5f3e0674c690 + node0x5f3e0674c690 -- node0x5f3e0674c5e0 + node0x5f3e066c5b50 -- node0x5f3e066c5c00 + node0x5f3e066a7ed0 -- node0x5f3e066c9dc0 + node0x5f3e066c9dc0 -- node0x5f3e0671e170 + node0x5f3e066c9dc0 -- node0x5f3e066ca490 + node0x5f3e066ca490 -- node0x5f3e066ca940 + node0x5f3e066ca940 -- node0x5f3e066ca890 + node0x5f3e066c9dc0 -- node0x5f3e066c3290 + node0x5f3e066c3290 -- node0x5f3e066c4280 + node0x5f3e066c4280 -- node0x5f3e066c4330 + node0x5f3e066c4330 -- node0x5f3e066c4cd0 + node0x5f3e066c4cd0 -- node0x5f3e066c4c20 + node0x5f3e066c4330 -- node0x5f3e066c58e0 + node0x5f3e066c58e0 -- node0x5f3e066c57f0 + node0x5f3e066c57f0 -- node0x5f3e066c5740 + node0x5f3e066c58e0 -- node0x5f3e066c41d0 + node0x5f3e066c4280 -- node0x5f3e066c31c0 + node0x5f3e066c31c0 -- node0x5f3e066ca280 + node0x5f3e066ca280 -- node0x5f3e066ca580 + node0x5f3e066ca280 -- node0x5f3e066ca1d0 + node0x5f3e066c31c0 -- node0x5f3e066bbfc0 + node0x5f3e066bbfc0 -- node0x5f3e066bbed0 + node0x5f3e066bbed0 -- node0x5f3e066bbe00 + node0x5f3e066bbe00 -- node0x5f3e066ca370 + node0x5f3e066bbfc0 -- node0x5f3e066c4b50 + node0x5f3e066a7ed0 -- node0x5f3e066c9ea0 + node0x5f3e066c9ea0 -- node0x5f3e066d7060 + node0x5f3e066c9ea0 -- node0x5f3e06789400 + node0x5f3e06789400 -- node0x5f3e066ee6c0 + node0x5f3e066ee6c0 -- node0x5f3e066ee770 + node0x5f3e066ee770 -- node0x5f3e067db410 + node0x5f3e067db410 -- node0x5f3e067db2b0 + node0x5f3e067db410 -- node0x5f3e067db360 + node0x5f3e066ee770 -- node0x5f3e066f0af0 + node0x5f3e066f0af0 -- node0x5f3e066f0a00 + node0x5f3e066f0a00 -- node0x5f3e066f0950 + node0x5f3e066f0950 -- node0x5f3e067db4e0 + node0x5f3e066f0af0 -- node0x5f3e066ee610 + node0x5f3e066a7ed0 -- node0x5f3e066c9f70 + node0x5f3e066c9f70 -- node0x5f3e066c5420 + node0x5f3e066c9f70 -- node0x5f3e066d6040 + node0x5f3e066a7ed0 -- node0x5f3e066b83f0 + node0x5f3e066b83f0 -- node0x5f3e066b84a0 + node0x5f3e066b83f0 -- node0x5f3e066b8320 + node0x5f3e066b8320 -- node0x5f3e066c25f0 + node0x5f3e066c25f0 -- node0x5f3e066c2380 + node0x5f3e066c2380 -- node0x5f3e066c5690 + node0x5f3e066c25f0 -- node0x5f3e066c2470 + node0x5f3e066c2470 -- node0x5f3e066c2520 + node0x5f3e066a7ed0 -- node0x5f3e066ca040 + node0x5f3e066ca040 -- node0x5f3e0665f660 + node0x5f3e066ca040 -- node0x5f3e066bf1d0 + node0x5f3e066bf1d0 -- node0x5f3e066bf120 + node0x5f3e066ca040 -- node0x5f3e066bf2c0 + node0x5f3e066a7ed0 -- node0x5f3e066ca120 + node0x5f3e066ca120 -- node0x5f3e066f1c00 + node0x5f3e066ca120 -- node0x5f3e066d2180 + node0x5f3e066d2180 -- node0x5f3e067e09b0 + node0x5f3e067e09b0 -- node0x5f3e067e0a60 + node0x5f3e067e0a60 -- node0x5f3e067b2070 + node0x5f3e067b2070 -- node0x5f3e067b1fc0 + node0x5f3e067e0a60 -- node0x5f3e067e0830 + node0x5f3e067e0830 -- node0x5f3e067b21f0 + node0x5f3e067b21f0 -- node0x5f3e067b2140 + node0x5f3e067e0830 -- node0x5f3e067e0900 + node0x5f3e067e09b0 -- node0x5f3e066d20b0 + node0x5f3e066d20b0 -- node0x5f3e067e10b0 + node0x5f3e067e10b0 -- node0x5f3e067e1000 + node0x5f3e066d20b0 -- node0x5f3e067e01b0 + node0x5f3e067e01b0 -- node0x5f3e067e00c0 + node0x5f3e067e00c0 -- node0x5f3e067dfff0 + node0x5f3e067dfff0 -- node0x5f3e067dff40 + node0x5f3e067e01b0 -- node0x5f3e067b1f20 + node0x5f3e066a7ed0 -- node0x5f3e066b0bb0 + node0x5f3e066b0bb0 -- node0x5f3e066b0c30 + node0x5f3e066b0bb0 -- node0x5f3e066a9070 + node0x5f3e066b0bb0 -- node0x5f3e066b0140 + node0x5f3e066b0140 -- node0x5f3e066b0070 + node0x5f3e066b0070 -- node0x5f3e066af320 + node0x5f3e066af320 -- node0x5f3e066aef00 + node0x5f3e066aef00 -- node0x5f3e066a92d0 + node0x5f3e066a92d0 -- node0x5f3e066a8220 + node0x5f3e066af320 -- node0x5f3e066af010 + node0x5f3e066af010 -- node0x5f3e066af090 + node0x5f3e066b0070 -- node0x5f3e066affa0 + node0x5f3e066affa0 -- node0x5f3e066af520 + node0x5f3e066af520 -- node0x5f3e066af5a0 + node0x5f3e066af520 -- node0x5f3e066af420 + node0x5f3e066af420 -- node0x5f3e066af4a0 + node0x5f3e066af420 -- node0x5f3e066af3a0 + node0x5f3e066affa0 -- node0x5f3e066afed0 + node0x5f3e066afed0 -- node0x5f3e066afe00 + node0x5f3e066afe00 -- node0x5f3e066afd30 + node0x5f3e066afd30 -- node0x5f3e066aef80 + node0x5f3e066afd30 -- node0x5f3e066afc60 + node0x5f3e066afc60 -- node0x5f3e066af7a0 + node0x5f3e066b0140 -- node0x5f3e066b07e0 + node0x5f3e066b07e0 -- node0x5f3e066b0620 + node0x5f3e066b0620 -- node0x5f3e066b03b0 + node0x5f3e066b03b0 -- node0x5f3e066b02e0 + node0x5f3e066b02e0 -- node0x5f3e066b0230 + node0x5f3e066b0620 -- node0x5f3e066b04a0 + node0x5f3e066b04a0 -- node0x5f3e066b0550 + node0x5f3e066b07e0 -- node0x5f3e066b0730 + node0x5f3e066b0140 -- node0x5f3e066b1c90 + node0x5f3e066b1c90 -- node0x5f3e066b1330 + node0x5f3e066b1330 -- node0x5f3e066b13e0 + node0x5f3e066b1330 -- node0x5f3e066b11b0 + node0x5f3e066b11b0 -- node0x5f3e066b1260 + node0x5f3e066b11b0 -- node0x5f3e066b08f0 + node0x5f3e066b1c90 -- node0x5f3e066b1ba0 + node0x5f3e066b1ba0 -- node0x5f3e066b1ad0 + node0x5f3e066b1ad0 -- node0x5f3e066b1a00 + node0x5f3e066b1a00 -- node0x5f3e066b17b0 + node0x5f3e066b1a00 -- node0x5f3e066b1930 + node0x5f3e066b1930 -- node0x5f3e066b1880 + node0x5f3e066b1ad0 -- node0x5f3e066b16e0 + node0x5f3e066b0140 -- node0x5f3e066b2730 + node0x5f3e066b2730 -- node0x5f3e066b1fe0 + node0x5f3e066b1fe0 -- node0x5f3e066b2090 + node0x5f3e066b1fe0 -- node0x5f3e066b1e60 + node0x5f3e066b1e60 -- node0x5f3e066b1f10 + node0x5f3e066b1e60 -- node0x5f3e066b1db0 + node0x5f3e066b2730 -- node0x5f3e066b2640 + node0x5f3e066b2640 -- node0x5f3e066b2570 + node0x5f3e066b2570 -- node0x5f3e066b24a0 + node0x5f3e066b24a0 -- node0x5f3e066b2250 + node0x5f3e066b24a0 -- node0x5f3e066b23d0 + node0x5f3e066b23d0 -- node0x5f3e066b2320 + node0x5f3e066b2570 -- node0x5f3e066b21a0 + node0x5f3e066b0140 -- node0x5f3e066b0a90 + node0x5f3e066b0a90 -- node0x5f3e066b2a70 + node0x5f3e066b2a70 -- node0x5f3e066b2b20 + node0x5f3e066b2a70 -- node0x5f3e066b28f0 + node0x5f3e066b28f0 -- node0x5f3e066b29a0 + node0x5f3e066b28f0 -- node0x5f3e066b2840 + node0x5f3e066b0a90 -- node0x5f3e066b09c0 + node0x5f3e066b09c0 -- node0x5f3e066b2cc0 + node0x5f3e066b2cc0 -- node0x5f3e066b2c10 +} diff --git a/tests/box/archive/prime.o b/tests/box/archive/prime.o new file mode 100644 index 0000000..a8a743d Binary files /dev/null and b/tests/box/archive/prime.o differ diff --git a/tests/box/archive/prime.s b/tests/box/archive/prime.s new file mode 100644 index 0000000..6097fd4 --- /dev/null +++ b/tests/box/archive/prime.s @@ -0,0 +1,42 @@ + .text + .file "main.gsc" + .globl main + .p2align 4, 0x90 + .type main,@function +main: + .cfi_startproc + pushq %rbx + .cfi_def_cfa_offset 16 + subq $16, %rsp + .cfi_def_cfa_offset 32 + .cfi_offset %rbx, -16 + movl $64, %edi + callq "std::mem::alloc"@PLT + movq %rax, (%rsp) + movq %rax, 8(%rsp) + movq %rsp, %rbx + movq %rbx, %rdi + movl $32, %esi + callq "std::mem::realloc"@PLT + movq 96e28277@GOTPCREL(%rip), %rdi + movl $13, %esi + callq "std::io::print"@PLT + movq %rbx, %rdi + callq "std::mem::free"@PLT + addq $16, %rsp + .cfi_def_cfa_offset 16 + popq %rbx + .cfi_def_cfa_offset 8 + retq +.Lfunc_end0: + .size main, .Lfunc_end0-main + .cfi_endproc + + .type 96e28277,@object + .section .rodata.str1.1,"aMS",@progbits,1 + .globl 96e28277 +96e28277: + .asciz "Hello, World\n" + .size 96e28277, 14 + + .section ".note.GNU-stack","",@progbits diff --git a/tests/box/main.gsc b/tests/box/main.gsc index 07f113a..f80e645 100644 --- a/tests/box/main.gsc +++ b/tests/box/main.gsc @@ -3,5 +3,13 @@ import "std" #[nomangle] fun main() { - i32: u = 0 as i32 + + ref u8: buf = std::mem::alloc(64 as u32) + ref u8: adr = buf + + std::mem::realloc(buf, 32 as u32) + + std::io::print("Hello, World\n", 13 as u32) + + std::mem::free(buf) }