From jay.krell at cornell.edu Tue Dec 1 20:41:33 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 12:41:33 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: I suggest one or two changes to the IR. 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). The gcc backend passes static link in a register dedicated to it. - Jay On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. From rodney_bates at lcwb.coop Tue Dec 1 21:17:00 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Tue, 01 Dec 2015 14:17:00 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565E003C.60104@lcwb.coop> Yeah, I would like some changes to the IR too. But it is fairly painful. Many places need to be changed, and I recall some kind of rebuild/bootstrap problem too. I am collecting a list of things I would like, with the idea of doing it all in one change. Some of my wishes predate my writing them down, and I hope I can remember them too. Some of them are motivated by debug information. On 12/01/2015 01:41 PM, Jay wrote: > I suggest one or two changes to the IR. > > > 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. > > > 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. > > > And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). > > > The gcc backend passes static link in a register dedicated to it. > > - Jay > > On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > >> Moreover, CM3's seemingly nice idea of making IR operators >> method calls makes it very awkward to do idiom recognition or >> state-dependent handling of general-purpose operators. > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > -- Rodney Bates rodney.m.bates at acm.org From jay.krell at cornell.edu Wed Dec 2 05:03:48 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 21:03:48 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565E003C.60104@lcwb.coop> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> <565E003C.60104@lcwb.coop> Message-ID: <33C83013-53BA-47D1-A878-A7B81A9D23AD@gmail.com> Feel free to checkin a wishlist/todo. I feel that I have been through a fair amount & that most of the obstacles to change are actually imaginary. & most of the "difficulties" are "equivalent". That is, the build order and scripts are what they should be, & accommodate all concievable changes. IF the compiler depends on new language/runtime features then they must be first implemented, build it all, then depend on it. But this probably doesn't apply here. - Jay On Dec 1, 2015, at 1:17 PM, "Rodney M. Bates" wrote: > Yeah, I would like some changes to the IR too. But it is fairly painful. > Many places need to be changed, and I recall some kind of rebuild/bootstrap > problem too. I am collecting a list of things I would like, with the idea > of doing it all in one change. Some of my wishes predate my writing them > down, and I hope I can remember them too. Some of them are motivated by > debug information. > > On 12/01/2015 01:41 PM, Jay wrote: >> I suggest one or two changes to the IR. >> >> >> 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. >> >> >> 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. >> >> >> And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). >> >> >> The gcc backend passes static link in a register dedicated to it. >> >> - Jay >> >> On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: >> >>> Moreover, CM3's seemingly nice idea of making IR operators >>> method calls makes it very awkward to do idiom recognition or >>> state-dependent handling of general-purpose operators. >> _______________________________________________ >> M3commit mailing list >> M3commit at elegosoft.com >> https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > > -- > Rodney Bates > rodney.m.bates at acm.org > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit From rodney_bates at lcwb.coop Wed Dec 2 22:04:26 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Wed, 02 Dec 2015 15:04:26 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565F5CDA.10401@lcwb.coop> On 11/30/2015 03:00 PM, Rodney Bates wrote: > Branch: refs/heads/master > Home: https://github.com/modula3/cm3 > Commit: b3c18e6125d3ade015400c8e1fe9febdebc597a2 > https://github.com/modula3/cm3/commit/b3c18e6125d3ade015400c8e1fe9febdebc597a2 > Author: Rodney Bates > Date: 2015-11-30 (Mon, 30 Nov 2015) > > Changed paths: > M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 > > Log Message: > ----------- > Rework indirect calls to possibly nested procedures. > > Fixes p045 and p048. p140 has regressed. p045 probably was failing before. This failure appears to be a result of incompatible machine-level parameter passing between the m3cc and the m3llvm back ends. Procedure CallProc, in RTExFrame.m3, in the runtime makes a callback to a compiler-generated FINALLY procedure, passing a static link that was originally given to PushEFrame. The runtime is compiled by m3cc and the test case by m3llvm. This won't be fixed until we are ready to compile the libraries, etc. using m3llvm. This low-level ABI discrepancy needs to be revisited. Merely making the static link be the last parameter instead of the first does not fix the problem. Also, CallProc passes the RT0.RaiseActivation, in addition to a SL, but the front end compiles the FINALLY procedure with no corresponding formal. This seems unnecessarily peculiar, despite being apparently harmless. > > This was very tricky. > > There is a big semantic mismatch between CM3 CG's IR and llvm's, > for indirect calls. In CM3, parameters are passed by separate > operators, and the call operator just transfers control. So it > is possible to have two different parameter-passing sequences, > one with and one without a static link, selected at runtime, > merging to a single call operator. The selection depends on > whether the procedure variable is a closure (implies call a > nested procedure) or not (implies call a top-level procedure). > > In llvm, the actual parameter list is part of the call operator, > which denotes the number and llvm types of all the parameters. > Thus, two different calls are needed, in two different basic > blocks. > > Moreover, the CM3 IR does not provide the needed information > where it is needed. Actual passing of the static link is denoted > by a pop_static_link operator, but evaluation of the SL value > is done by general-purpose operators such as load, etc., that > do not give any indication what they are computing. By the time > we see the pop_static_link, these have passed. But the code address > to call to, result type, and calling convention (not currently used, > but needs to be kept available for the future) are not there. The > result type could be saved from the start_call_indirect, but the > calling convention is not there either. > > When we see the call_indirect operator, the static link value > has been computed and we can, at compile-time, find its llvm > variable, but it is computed in a different basic block and > is not available at runtime. We can jump around among basic > blocks at compile time, but llvm's SSA and dominator rules > mean we can't use it. > > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. > > The solution used here involves waiting until we get the > call_indirect operator, then doing idiom recognition on the > llvm code already produced by the general-purpose operations > to compute the static link, backing up from there and finding > the procedure pointer to recompute the code address. We put > this back in the basic block where the pop_static_link is > located, then generate the nested indirect call there. The > other code, in the wrong place for this scheme, is isolated > into an unreachable basic block, which, presumably, llvm will > remove. > > Moreover, if this is a function being called, the two calls > produce their function results in two different basic blocks. > This is handled by manually constructing a phi node in the > block where the paths merge. Phi nodes are usually only > constructed internally by llvm. > > -- Rodney Bates rodney.m.bates at acm.org From rodney.m.bates at acm.org Fri Dec 11 01:54:36 2015 From: rodney.m.bates at acm.org (Rodney Bates) Date: Thu, 10 Dec 2015 16:54:36 -0800 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Message-ID: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. From jay.krell at cornell.edu Fri Dec 11 02:15:56 2015 From: jay.krell at cornell.edu (Jay K) Date: Fri, 11 Dec 2015 01:15:56 +0000 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... In-Reply-To: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> References: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Message-ID: I gave up e.g. on C/m3cc ABI compatibility.It would be nice. But it isn't trivial. We could do it, maybe, if we change m3cc.i.e. break all/most existing ABIs. Thoughts? Or maybe we should just remove taking the addressof nested functions from the language? Problem solved? Nested functions w/o address-taken I think are ok, as they'donly be called from code compiled with the same backend.It is only the escape by address-taken that presents the problem. As well, we'd like go quite far if we just didn't use this feature in m3core/libm3. Gosh -- if we remove the address-taken from nested functions, a bunch ofugliness goes away.. maybe implement them more like C++ lambdas -- requirecaller to know the difference.. - Jay Date: Thu, 10 Dec 2015 16:54:36 -0800 From: rodney.m.bates at acm.org To: m3commit at elegosoft.com Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. _______________________________________________ M3commit mailing list M3commit at elegosoft.com https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit -------------- next part -------------- An HTML attachment was scrubbed... URL: From noreply at github.com Mon Dec 21 15:43:40 2015 From: noreply at github.com (GitHub) Date: Mon, 21 Dec 2015 06:43:40 -0800 Subject: [M3commit] [modula3/cm3] 34c81a: Fix bug for quiet nan. If most sig bit of the sign... Message-ID: <5678101c1bb80_24923fecc0f372c016748@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 34c81a74a34bb5b96c236954d6ad34bc8ff70a2c https://github.com/modula3/cm3/commit/34c81a74a34bb5b96c236954d6ad34bc8ff70a2c Author: peter mckinna Date: 2015-12-15 (Tue, 15 Dec 2015) Changed paths: M m3-libs/m3core/src/float/IEEE/LongFloat.m3 M m3-libs/m3core/src/float/IEEE/RealFloat.m3 Log Message: ----------- Fix bug for quiet nan. If most sig bit of the significand is set then its a quiet nan. if zero its a signalling nan. From noreply at github.com Sun Dec 27 11:12:58 2015 From: noreply at github.com (GitHub) Date: Sun, 27 Dec 2015 02:12:58 -0800 Subject: [M3commit] [modula3/cm3] bb102e: Fix critical typo. Message-ID: <567fb9aa4c44f_5afb3feb6f1b129c14191f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: bb102e89ac697891ffd3b7dcd6ac817afb161c86 https://github.com/modula3/cm3/commit/bb102e89ac697891ffd3b7dcd6ac817afb161c86 Author: Jay Krell Date: 2015-12-27 (Sun, 27 Dec 2015) Changed paths: M m3-sys/cminstall/src/config-no-install/NT.common Log Message: ----------- Fix critical typo. From noreply at github.com Tue Dec 29 08:15:44 2015 From: noreply at github.com (GitHub) Date: Mon, 28 Dec 2015 23:15:44 -0800 Subject: [M3commit] [modula3/cm3] 978150: Don't ship cm3 even if INSTALL_CM3_IN_BIN is defin... Message-ID: <56823320ddf98_715d3fd5812e72a0135470@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 9781506f270a618b5bf7352b0ab40bfcdc0f1fda https://github.com/modula3/cm3/commit/9781506f270a618b5bf7352b0ab40bfcdc0f1fda Author: Jay Krell Date: 2015-12-28 (Mon, 28 Dec 2015) Changed paths: M m3-sys/cm3/src/m3makefile Log Message: ----------- Don't ship cm3 even if INSTALL_CM3_IN_BIN is defined. This is a temporary working for the regression in m3cc that adds the INSTALL_CM3_IN_BIN condition, and the scripts/python workaround around *that* by setting it. The right fix is to undo the m3cc change. From noreply at github.com Tue Dec 29 09:35:46 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 00:35:46 -0800 Subject: [M3commit] [modula3/cm3] 72feaf: Compatibility with some incomplete toolsets, e.g. Message-ID: <568245e29caf1_23153f890c2bb2c0111650@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 https://github.com/modula3/cm3/commit/72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Compatibility with some incomplete toolsets, e.g. C:\WINDDK\3790\inc\wnet that does not have mprapi.h, yet it is #included by headers we #include. Commit: 78fba0716acc8206db9c8b11ac54e08cb2ebeb3a https://github.com/modula3/cm3/commit/78fba0716acc8206db9c8b11ac54e08cb2ebeb3a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add const Commit: 1e14d4e5af06f808f4bc630b45234b9687a0806d https://github.com/modula3/cm3/commit/1e14d4e5af06f808f4bc630b45234b9687a0806d Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add more const Commit: 4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 https://github.com/modula3/cm3/commit/4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- quash warnings Commit: b241d4f5cc3087013e379ccdf9214161d7d1cf13 https://github.com/modula3/cm3/commit/b241d4f5cc3087013e379ccdf9214161d7d1cf13 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Add another pass, in which wireless controllers are considered, i.e. for machines where there is no wired ethernet. Compare: https://github.com/modula3/cm3/compare/9781506f270a...b241d4f5cc30 From noreply at github.com Tue Dec 29 11:52:52 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 02:52:52 -0800 Subject: [M3commit] [modula3/cm3] 3baace: mostly remove Cstdint dependency, for use with old... Message-ID: <568266045ffaa_7dd73fe007b852a01640d0@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 3baace361cda97348a008ca57c4c0f7f3c08a82f https://github.com/modula3/cm3/commit/3baace361cda97348a008ca57c4c0f7f3c08a82f Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3tests/src/Test.i3 Log Message: ----------- mostly remove Cstdint dependency, for use with older releases Commit: 86a8f8f36a40ebbd07f1435c50900c2622a5675e https://github.com/modula3/cm3/commit/86a8f8f36a40ebbd07f1435c50900c2622a5675e Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3front/src/misc/RunTyme.m3 Log Message: ----------- Add assert for certain compiler/library mismatches. Perhaps should be a different reporting mechanism, i.e. check and report even if asserts disabled. Commit: 08e50b3428d98083731e56d6c23845902079e5c8 https://github.com/modula3/cm3/commit/08e50b3428d98083731e56d6c23845902079e5c8 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3C.m3 M m3-sys/m3back/src/M3CC.c M m3-sys/m3back/src/M3CC.i3 Log Message: ----------- Remove LONGINT and Long dependency, so you can bootstrap e.g. from 5.2.6. Commit: f51684113e4df1811bdbe3d0ada3110987192812 https://github.com/modula3/cm3/commit/f51684113e4df1811bdbe3d0ada3110987192812 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3x86.m3 M m3-sys/m3back/src/M3x86Rep.i3 Log Message: ----------- Fill in support for alloca. The previous partial approach was wrong and inadequate. alloca is a special case in a number of ways that do not fit the general model/framework. - It's link name is __chkstk. - It takes its first and only parameter in eax. - It returns its return value in esp. This lets the system mostly return to working. You can bootstrap from 5.2.6, using so far an older Visual C++ and get as far as the caltech lex/yacc rewrites. Compare: https://github.com/modula3/cm3/compare/b241d4f5cc30...f51684113e4d From noreply at github.com Tue Dec 29 12:00:00 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:00:00 -0800 Subject: [M3commit] [modula3/cm3] ba09bb: Add m3overrides files to where they are needed to ... Message-ID: <568267b0dc418_6c6f3faa710672b85427c@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: ba09bb781fe9c59549cc601942d97e5588799394 https://github.com/modula3/cm3/commit/ba09bb781fe9c59549cc601942d97e5588799394 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A m3-sys/m3tests/src/p2/p200/m3overrides A m3-sys/m3tests/src/p2/p201/m3overrides A m3-sys/m3tests/src/p2/p202/m3overrides A m3-sys/m3tests/src/p2/p203/m3overrides A m3-sys/m3tests/src/p2/p204/m3overrides A m3-sys/m3tests/src/p2/p205/m3overrides A m3-sys/m3tests/src/p2/p206/m3overrides A m3-sys/m3tests/src/p2/p207/m3overrides A m3-sys/m3tests/src/p2/p208/m3overrides A m3-sys/m3tests/src/p2/p209/m3overrides A m3-sys/m3tests/src/p2/p210/m3overrides A m3-sys/m3tests/src/p2/p211/m3overrides A m3-sys/m3tests/src/p2/p213/m3overrides A m3-sys/m3tests/src/p2/p214/m3overrides A m3-sys/m3tests/src/p2/p215/m3overrides A m3-sys/m3tests/src/p2/p216/m3overrides A m3-sys/m3tests/src/p2/p217/m3overrides A m3-sys/m3tests/src/p2/p218/m3overrides A m3-sys/m3tests/src/p2/p219/m3overrides A m3-sys/m3tests/src/p2/p220/m3overrides A m3-sys/m3tests/src/p2/p221/m3overrides A m3-sys/m3tests/src/p2/p222/m3overrides A m3-sys/m3tests/src/p2/p223/m3overrides A m3-sys/m3tests/src/p2/p224/m3overrides A m3-sys/m3tests/src/p2/p225/m3overrides A m3-sys/m3tests/src/p2/p226/m3overrides A m3-sys/m3tests/src/p2/p227/m3overrides A m3-sys/m3tests/src/p2/p228/m3overrides A m3-sys/m3tests/src/p2/p229/m3overrides A m3-sys/m3tests/src/p2/p230/m3overrides A m3-sys/m3tests/src/p2/p231/m3overrides A m3-sys/m3tests/src/p2/p232/m3overrides A m3-sys/m3tests/src/p2/p233/m3overrides A m3-sys/m3tests/src/p2/p234/m3overrides A m3-sys/m3tests/src/p2/p235/m3overrides A m3-sys/m3tests/src/p2/p236/m3overrides A m3-sys/m3tests/src/p2/p238/m3overrides A m3-sys/m3tests/src/p2/p241/m3overrides A m3-sys/m3tests/src/p2/p242/m3overrides A m3-sys/m3tests/src/p2/p243/m3overrides A m3-sys/m3tests/src/p2/p244/m3overrides A m3-sys/m3tests/src/p2/p245/m3overrides A m3-sys/m3tests/src/p2/p246/m3overrides A m3-sys/m3tests/src/p2/p247/m3overrides A m3-sys/m3tests/src/p2/p248/m3overrides A m3-sys/m3tests/src/p2/p249/m3overrides A m3-sys/m3tests/src/p2/p250/m3overrides A m3-sys/m3tests/src/p2/p251/m3overrides A m3-sys/m3tests/src/p2/p253/m3overrides A m3-sys/m3tests/src/p2/p254/m3overrides A m3-sys/m3tests/src/p2/p255/m3overrides A m3-sys/m3tests/src/p2/p256/m3overrides A m3-sys/m3tests/src/p2/p257/m3overrides A m3-sys/m3tests/src/p2/p258/m3overrides A m3-sys/m3tests/src/p2/p259/m3overrides A m3-sys/m3tests/src/p2/p260/m3overrides A m3-sys/m3tests/src/p2/p261/m3overrides A m3-sys/m3tests/src/p2/p263/m3overrides Log Message: ----------- Add m3overrides files to where they are needed to work. From noreply at github.com Tue Dec 29 12:08:25 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:08:25 -0800 Subject: [M3commit] [modula3/cm3] f565e3: Notes on tonight's procedures for incremental comp... Message-ID: <568269a962cf9_79123f9bcb3fd29c17989d@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: f565e395347cd282c1450ed6de84a14ad165e79a https://github.com/modula3/cm3/commit/f565e395347cd282c1450ed6de84a14ad165e79a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A doc/notes/non-destructive-compiler-testing.txt Log Message: ----------- Notes on tonight's procedures for incremental compiler development/testing in the face of temporary catastrophic mistakes. From jay.krell at cornell.edu Tue Dec 1 20:41:33 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 12:41:33 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: I suggest one or two changes to the IR. 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). The gcc backend passes static link in a register dedicated to it. - Jay On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. From rodney_bates at lcwb.coop Tue Dec 1 21:17:00 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Tue, 01 Dec 2015 14:17:00 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565E003C.60104@lcwb.coop> Yeah, I would like some changes to the IR too. But it is fairly painful. Many places need to be changed, and I recall some kind of rebuild/bootstrap problem too. I am collecting a list of things I would like, with the idea of doing it all in one change. Some of my wishes predate my writing them down, and I hope I can remember them too. Some of them are motivated by debug information. On 12/01/2015 01:41 PM, Jay wrote: > I suggest one or two changes to the IR. > > > 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. > > > 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. > > > And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). > > > The gcc backend passes static link in a register dedicated to it. > > - Jay > > On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > >> Moreover, CM3's seemingly nice idea of making IR operators >> method calls makes it very awkward to do idiom recognition or >> state-dependent handling of general-purpose operators. > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > -- Rodney Bates rodney.m.bates at acm.org From jay.krell at cornell.edu Wed Dec 2 05:03:48 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 21:03:48 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565E003C.60104@lcwb.coop> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> <565E003C.60104@lcwb.coop> Message-ID: <33C83013-53BA-47D1-A878-A7B81A9D23AD@gmail.com> Feel free to checkin a wishlist/todo. I feel that I have been through a fair amount & that most of the obstacles to change are actually imaginary. & most of the "difficulties" are "equivalent". That is, the build order and scripts are what they should be, & accommodate all concievable changes. IF the compiler depends on new language/runtime features then they must be first implemented, build it all, then depend on it. But this probably doesn't apply here. - Jay On Dec 1, 2015, at 1:17 PM, "Rodney M. Bates" wrote: > Yeah, I would like some changes to the IR too. But it is fairly painful. > Many places need to be changed, and I recall some kind of rebuild/bootstrap > problem too. I am collecting a list of things I would like, with the idea > of doing it all in one change. Some of my wishes predate my writing them > down, and I hope I can remember them too. Some of them are motivated by > debug information. > > On 12/01/2015 01:41 PM, Jay wrote: >> I suggest one or two changes to the IR. >> >> >> 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. >> >> >> 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. >> >> >> And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). >> >> >> The gcc backend passes static link in a register dedicated to it. >> >> - Jay >> >> On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: >> >>> Moreover, CM3's seemingly nice idea of making IR operators >>> method calls makes it very awkward to do idiom recognition or >>> state-dependent handling of general-purpose operators. >> _______________________________________________ >> M3commit mailing list >> M3commit at elegosoft.com >> https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > > -- > Rodney Bates > rodney.m.bates at acm.org > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit From rodney_bates at lcwb.coop Wed Dec 2 22:04:26 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Wed, 02 Dec 2015 15:04:26 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565F5CDA.10401@lcwb.coop> On 11/30/2015 03:00 PM, Rodney Bates wrote: > Branch: refs/heads/master > Home: https://github.com/modula3/cm3 > Commit: b3c18e6125d3ade015400c8e1fe9febdebc597a2 > https://github.com/modula3/cm3/commit/b3c18e6125d3ade015400c8e1fe9febdebc597a2 > Author: Rodney Bates > Date: 2015-11-30 (Mon, 30 Nov 2015) > > Changed paths: > M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 > > Log Message: > ----------- > Rework indirect calls to possibly nested procedures. > > Fixes p045 and p048. p140 has regressed. p045 probably was failing before. This failure appears to be a result of incompatible machine-level parameter passing between the m3cc and the m3llvm back ends. Procedure CallProc, in RTExFrame.m3, in the runtime makes a callback to a compiler-generated FINALLY procedure, passing a static link that was originally given to PushEFrame. The runtime is compiled by m3cc and the test case by m3llvm. This won't be fixed until we are ready to compile the libraries, etc. using m3llvm. This low-level ABI discrepancy needs to be revisited. Merely making the static link be the last parameter instead of the first does not fix the problem. Also, CallProc passes the RT0.RaiseActivation, in addition to a SL, but the front end compiles the FINALLY procedure with no corresponding formal. This seems unnecessarily peculiar, despite being apparently harmless. > > This was very tricky. > > There is a big semantic mismatch between CM3 CG's IR and llvm's, > for indirect calls. In CM3, parameters are passed by separate > operators, and the call operator just transfers control. So it > is possible to have two different parameter-passing sequences, > one with and one without a static link, selected at runtime, > merging to a single call operator. The selection depends on > whether the procedure variable is a closure (implies call a > nested procedure) or not (implies call a top-level procedure). > > In llvm, the actual parameter list is part of the call operator, > which denotes the number and llvm types of all the parameters. > Thus, two different calls are needed, in two different basic > blocks. > > Moreover, the CM3 IR does not provide the needed information > where it is needed. Actual passing of the static link is denoted > by a pop_static_link operator, but evaluation of the SL value > is done by general-purpose operators such as load, etc., that > do not give any indication what they are computing. By the time > we see the pop_static_link, these have passed. But the code address > to call to, result type, and calling convention (not currently used, > but needs to be kept available for the future) are not there. The > result type could be saved from the start_call_indirect, but the > calling convention is not there either. > > When we see the call_indirect operator, the static link value > has been computed and we can, at compile-time, find its llvm > variable, but it is computed in a different basic block and > is not available at runtime. We can jump around among basic > blocks at compile time, but llvm's SSA and dominator rules > mean we can't use it. > > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. > > The solution used here involves waiting until we get the > call_indirect operator, then doing idiom recognition on the > llvm code already produced by the general-purpose operations > to compute the static link, backing up from there and finding > the procedure pointer to recompute the code address. We put > this back in the basic block where the pop_static_link is > located, then generate the nested indirect call there. The > other code, in the wrong place for this scheme, is isolated > into an unreachable basic block, which, presumably, llvm will > remove. > > Moreover, if this is a function being called, the two calls > produce their function results in two different basic blocks. > This is handled by manually constructing a phi node in the > block where the paths merge. Phi nodes are usually only > constructed internally by llvm. > > -- Rodney Bates rodney.m.bates at acm.org From rodney.m.bates at acm.org Fri Dec 11 01:54:36 2015 From: rodney.m.bates at acm.org (Rodney Bates) Date: Thu, 10 Dec 2015 16:54:36 -0800 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Message-ID: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. From jay.krell at cornell.edu Fri Dec 11 02:15:56 2015 From: jay.krell at cornell.edu (Jay K) Date: Fri, 11 Dec 2015 01:15:56 +0000 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... In-Reply-To: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> References: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Message-ID: I gave up e.g. on C/m3cc ABI compatibility.It would be nice. But it isn't trivial. We could do it, maybe, if we change m3cc.i.e. break all/most existing ABIs. Thoughts? Or maybe we should just remove taking the addressof nested functions from the language? Problem solved? Nested functions w/o address-taken I think are ok, as they'donly be called from code compiled with the same backend.It is only the escape by address-taken that presents the problem. As well, we'd like go quite far if we just didn't use this feature in m3core/libm3. Gosh -- if we remove the address-taken from nested functions, a bunch ofugliness goes away.. maybe implement them more like C++ lambdas -- requirecaller to know the difference.. - Jay Date: Thu, 10 Dec 2015 16:54:36 -0800 From: rodney.m.bates at acm.org To: m3commit at elegosoft.com Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. _______________________________________________ M3commit mailing list M3commit at elegosoft.com https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit -------------- next part -------------- An HTML attachment was scrubbed... URL: From noreply at github.com Mon Dec 21 15:43:40 2015 From: noreply at github.com (GitHub) Date: Mon, 21 Dec 2015 06:43:40 -0800 Subject: [M3commit] [modula3/cm3] 34c81a: Fix bug for quiet nan. If most sig bit of the sign... Message-ID: <5678101c1bb80_24923fecc0f372c016748@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 34c81a74a34bb5b96c236954d6ad34bc8ff70a2c https://github.com/modula3/cm3/commit/34c81a74a34bb5b96c236954d6ad34bc8ff70a2c Author: peter mckinna Date: 2015-12-15 (Tue, 15 Dec 2015) Changed paths: M m3-libs/m3core/src/float/IEEE/LongFloat.m3 M m3-libs/m3core/src/float/IEEE/RealFloat.m3 Log Message: ----------- Fix bug for quiet nan. If most sig bit of the significand is set then its a quiet nan. if zero its a signalling nan. From noreply at github.com Sun Dec 27 11:12:58 2015 From: noreply at github.com (GitHub) Date: Sun, 27 Dec 2015 02:12:58 -0800 Subject: [M3commit] [modula3/cm3] bb102e: Fix critical typo. Message-ID: <567fb9aa4c44f_5afb3feb6f1b129c14191f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: bb102e89ac697891ffd3b7dcd6ac817afb161c86 https://github.com/modula3/cm3/commit/bb102e89ac697891ffd3b7dcd6ac817afb161c86 Author: Jay Krell Date: 2015-12-27 (Sun, 27 Dec 2015) Changed paths: M m3-sys/cminstall/src/config-no-install/NT.common Log Message: ----------- Fix critical typo. From noreply at github.com Tue Dec 29 08:15:44 2015 From: noreply at github.com (GitHub) Date: Mon, 28 Dec 2015 23:15:44 -0800 Subject: [M3commit] [modula3/cm3] 978150: Don't ship cm3 even if INSTALL_CM3_IN_BIN is defin... Message-ID: <56823320ddf98_715d3fd5812e72a0135470@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 9781506f270a618b5bf7352b0ab40bfcdc0f1fda https://github.com/modula3/cm3/commit/9781506f270a618b5bf7352b0ab40bfcdc0f1fda Author: Jay Krell Date: 2015-12-28 (Mon, 28 Dec 2015) Changed paths: M m3-sys/cm3/src/m3makefile Log Message: ----------- Don't ship cm3 even if INSTALL_CM3_IN_BIN is defined. This is a temporary working for the regression in m3cc that adds the INSTALL_CM3_IN_BIN condition, and the scripts/python workaround around *that* by setting it. The right fix is to undo the m3cc change. From noreply at github.com Tue Dec 29 09:35:46 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 00:35:46 -0800 Subject: [M3commit] [modula3/cm3] 72feaf: Compatibility with some incomplete toolsets, e.g. Message-ID: <568245e29caf1_23153f890c2bb2c0111650@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 https://github.com/modula3/cm3/commit/72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Compatibility with some incomplete toolsets, e.g. C:\WINDDK\3790\inc\wnet that does not have mprapi.h, yet it is #included by headers we #include. Commit: 78fba0716acc8206db9c8b11ac54e08cb2ebeb3a https://github.com/modula3/cm3/commit/78fba0716acc8206db9c8b11ac54e08cb2ebeb3a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add const Commit: 1e14d4e5af06f808f4bc630b45234b9687a0806d https://github.com/modula3/cm3/commit/1e14d4e5af06f808f4bc630b45234b9687a0806d Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add more const Commit: 4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 https://github.com/modula3/cm3/commit/4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- quash warnings Commit: b241d4f5cc3087013e379ccdf9214161d7d1cf13 https://github.com/modula3/cm3/commit/b241d4f5cc3087013e379ccdf9214161d7d1cf13 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Add another pass, in which wireless controllers are considered, i.e. for machines where there is no wired ethernet. Compare: https://github.com/modula3/cm3/compare/9781506f270a...b241d4f5cc30 From noreply at github.com Tue Dec 29 11:52:52 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 02:52:52 -0800 Subject: [M3commit] [modula3/cm3] 3baace: mostly remove Cstdint dependency, for use with old... Message-ID: <568266045ffaa_7dd73fe007b852a01640d0@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 3baace361cda97348a008ca57c4c0f7f3c08a82f https://github.com/modula3/cm3/commit/3baace361cda97348a008ca57c4c0f7f3c08a82f Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3tests/src/Test.i3 Log Message: ----------- mostly remove Cstdint dependency, for use with older releases Commit: 86a8f8f36a40ebbd07f1435c50900c2622a5675e https://github.com/modula3/cm3/commit/86a8f8f36a40ebbd07f1435c50900c2622a5675e Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3front/src/misc/RunTyme.m3 Log Message: ----------- Add assert for certain compiler/library mismatches. Perhaps should be a different reporting mechanism, i.e. check and report even if asserts disabled. Commit: 08e50b3428d98083731e56d6c23845902079e5c8 https://github.com/modula3/cm3/commit/08e50b3428d98083731e56d6c23845902079e5c8 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3C.m3 M m3-sys/m3back/src/M3CC.c M m3-sys/m3back/src/M3CC.i3 Log Message: ----------- Remove LONGINT and Long dependency, so you can bootstrap e.g. from 5.2.6. Commit: f51684113e4df1811bdbe3d0ada3110987192812 https://github.com/modula3/cm3/commit/f51684113e4df1811bdbe3d0ada3110987192812 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3x86.m3 M m3-sys/m3back/src/M3x86Rep.i3 Log Message: ----------- Fill in support for alloca. The previous partial approach was wrong and inadequate. alloca is a special case in a number of ways that do not fit the general model/framework. - It's link name is __chkstk. - It takes its first and only parameter in eax. - It returns its return value in esp. This lets the system mostly return to working. You can bootstrap from 5.2.6, using so far an older Visual C++ and get as far as the caltech lex/yacc rewrites. Compare: https://github.com/modula3/cm3/compare/b241d4f5cc30...f51684113e4d From noreply at github.com Tue Dec 29 12:00:00 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:00:00 -0800 Subject: [M3commit] [modula3/cm3] ba09bb: Add m3overrides files to where they are needed to ... Message-ID: <568267b0dc418_6c6f3faa710672b85427c@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: ba09bb781fe9c59549cc601942d97e5588799394 https://github.com/modula3/cm3/commit/ba09bb781fe9c59549cc601942d97e5588799394 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A m3-sys/m3tests/src/p2/p200/m3overrides A m3-sys/m3tests/src/p2/p201/m3overrides A m3-sys/m3tests/src/p2/p202/m3overrides A m3-sys/m3tests/src/p2/p203/m3overrides A m3-sys/m3tests/src/p2/p204/m3overrides A m3-sys/m3tests/src/p2/p205/m3overrides A m3-sys/m3tests/src/p2/p206/m3overrides A m3-sys/m3tests/src/p2/p207/m3overrides A m3-sys/m3tests/src/p2/p208/m3overrides A m3-sys/m3tests/src/p2/p209/m3overrides A m3-sys/m3tests/src/p2/p210/m3overrides A m3-sys/m3tests/src/p2/p211/m3overrides A m3-sys/m3tests/src/p2/p213/m3overrides A m3-sys/m3tests/src/p2/p214/m3overrides A m3-sys/m3tests/src/p2/p215/m3overrides A m3-sys/m3tests/src/p2/p216/m3overrides A m3-sys/m3tests/src/p2/p217/m3overrides A m3-sys/m3tests/src/p2/p218/m3overrides A m3-sys/m3tests/src/p2/p219/m3overrides A m3-sys/m3tests/src/p2/p220/m3overrides A m3-sys/m3tests/src/p2/p221/m3overrides A m3-sys/m3tests/src/p2/p222/m3overrides A m3-sys/m3tests/src/p2/p223/m3overrides A m3-sys/m3tests/src/p2/p224/m3overrides A m3-sys/m3tests/src/p2/p225/m3overrides A m3-sys/m3tests/src/p2/p226/m3overrides A m3-sys/m3tests/src/p2/p227/m3overrides A m3-sys/m3tests/src/p2/p228/m3overrides A m3-sys/m3tests/src/p2/p229/m3overrides A m3-sys/m3tests/src/p2/p230/m3overrides A m3-sys/m3tests/src/p2/p231/m3overrides A m3-sys/m3tests/src/p2/p232/m3overrides A m3-sys/m3tests/src/p2/p233/m3overrides A m3-sys/m3tests/src/p2/p234/m3overrides A m3-sys/m3tests/src/p2/p235/m3overrides A m3-sys/m3tests/src/p2/p236/m3overrides A m3-sys/m3tests/src/p2/p238/m3overrides A m3-sys/m3tests/src/p2/p241/m3overrides A m3-sys/m3tests/src/p2/p242/m3overrides A m3-sys/m3tests/src/p2/p243/m3overrides A m3-sys/m3tests/src/p2/p244/m3overrides A m3-sys/m3tests/src/p2/p245/m3overrides A m3-sys/m3tests/src/p2/p246/m3overrides A m3-sys/m3tests/src/p2/p247/m3overrides A m3-sys/m3tests/src/p2/p248/m3overrides A m3-sys/m3tests/src/p2/p249/m3overrides A m3-sys/m3tests/src/p2/p250/m3overrides A m3-sys/m3tests/src/p2/p251/m3overrides A m3-sys/m3tests/src/p2/p253/m3overrides A m3-sys/m3tests/src/p2/p254/m3overrides A m3-sys/m3tests/src/p2/p255/m3overrides A m3-sys/m3tests/src/p2/p256/m3overrides A m3-sys/m3tests/src/p2/p257/m3overrides A m3-sys/m3tests/src/p2/p258/m3overrides A m3-sys/m3tests/src/p2/p259/m3overrides A m3-sys/m3tests/src/p2/p260/m3overrides A m3-sys/m3tests/src/p2/p261/m3overrides A m3-sys/m3tests/src/p2/p263/m3overrides Log Message: ----------- Add m3overrides files to where they are needed to work. From noreply at github.com Tue Dec 29 12:08:25 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:08:25 -0800 Subject: [M3commit] [modula3/cm3] f565e3: Notes on tonight's procedures for incremental comp... Message-ID: <568269a962cf9_79123f9bcb3fd29c17989d@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: f565e395347cd282c1450ed6de84a14ad165e79a https://github.com/modula3/cm3/commit/f565e395347cd282c1450ed6de84a14ad165e79a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A doc/notes/non-destructive-compiler-testing.txt Log Message: ----------- Notes on tonight's procedures for incremental compiler development/testing in the face of temporary catastrophic mistakes. From jay.krell at cornell.edu Tue Dec 1 20:41:33 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 12:41:33 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: I suggest one or two changes to the IR. 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). The gcc backend passes static link in a register dedicated to it. - Jay On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. From rodney_bates at lcwb.coop Tue Dec 1 21:17:00 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Tue, 01 Dec 2015 14:17:00 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565E003C.60104@lcwb.coop> Yeah, I would like some changes to the IR too. But it is fairly painful. Many places need to be changed, and I recall some kind of rebuild/bootstrap problem too. I am collecting a list of things I would like, with the idea of doing it all in one change. Some of my wishes predate my writing them down, and I hope I can remember them too. Some of them are motivated by debug information. On 12/01/2015 01:41 PM, Jay wrote: > I suggest one or two changes to the IR. > > > 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. > > > 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. > > > And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). > > > The gcc backend passes static link in a register dedicated to it. > > - Jay > > On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: > >> Moreover, CM3's seemingly nice idea of making IR operators >> method calls makes it very awkward to do idiom recognition or >> state-dependent handling of general-purpose operators. > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > -- Rodney Bates rodney.m.bates at acm.org From jay.krell at cornell.edu Wed Dec 2 05:03:48 2015 From: jay.krell at cornell.edu (Jay) Date: Tue, 1 Dec 2015 21:03:48 -0700 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565E003C.60104@lcwb.coop> References: <565cb8dc1ef05_532e3fd1219432c01066b@hookshot-fe5-cp1-prd.iad.github.net.mail> <565E003C.60104@lcwb.coop> Message-ID: <33C83013-53BA-47D1-A878-A7B81A9D23AD@gmail.com> Feel free to checkin a wishlist/todo. I feel that I have been through a fair amount & that most of the obstacles to change are actually imaginary. & most of the "difficulties" are "equivalent". That is, the build order and scripts are what they should be, & accommodate all concievable changes. IF the compiler depends on new language/runtime features then they must be first implemented, build it all, then depend on it. But this probably doesn't apply here. - Jay On Dec 1, 2015, at 1:17 PM, "Rodney M. Bates" wrote: > Yeah, I would like some changes to the IR too. But it is fairly painful. > Many places need to be changed, and I recall some kind of rebuild/bootstrap > problem too. I am collecting a list of things I would like, with the idea > of doing it all in one change. Some of my wishes predate my writing them > down, and I hope I can remember them too. Some of them are motivated by > debug information. > > On 12/01/2015 01:41 PM, Jay wrote: >> I suggest one or two changes to the IR. >> >> >> 1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it. >> >> >> 2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already. >> >> >> And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++). >> >> >> The gcc backend passes static link in a register dedicated to it. >> >> - Jay >> >> On Nov 30, 2015, at 2:00 PM, Rodney Bates wrote: >> >>> Moreover, CM3's seemingly nice idea of making IR operators >>> method calls makes it very awkward to do idiom recognition or >>> state-dependent handling of general-purpose operators. >> _______________________________________________ >> M3commit mailing list >> M3commit at elegosoft.com >> https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit > > -- > Rodney Bates > rodney.m.bates at acm.org > _______________________________________________ > M3commit mailing list > M3commit at elegosoft.com > https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit From rodney_bates at lcwb.coop Wed Dec 2 22:04:26 2015 From: rodney_bates at lcwb.coop (Rodney M. Bates) Date: Wed, 02 Dec 2015 15:04:26 -0600 Subject: [M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure... In-Reply-To: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> References: <565cb8dc541c_532e3fd1219432c0106422@hookshot-fe5-cp1-prd.iad.github.net.mail> Message-ID: <565F5CDA.10401@lcwb.coop> On 11/30/2015 03:00 PM, Rodney Bates wrote: > Branch: refs/heads/master > Home: https://github.com/modula3/cm3 > Commit: b3c18e6125d3ade015400c8e1fe9febdebc597a2 > https://github.com/modula3/cm3/commit/b3c18e6125d3ade015400c8e1fe9febdebc597a2 > Author: Rodney Bates > Date: 2015-11-30 (Mon, 30 Nov 2015) > > Changed paths: > M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 > > Log Message: > ----------- > Rework indirect calls to possibly nested procedures. > > Fixes p045 and p048. p140 has regressed. p045 probably was failing before. This failure appears to be a result of incompatible machine-level parameter passing between the m3cc and the m3llvm back ends. Procedure CallProc, in RTExFrame.m3, in the runtime makes a callback to a compiler-generated FINALLY procedure, passing a static link that was originally given to PushEFrame. The runtime is compiled by m3cc and the test case by m3llvm. This won't be fixed until we are ready to compile the libraries, etc. using m3llvm. This low-level ABI discrepancy needs to be revisited. Merely making the static link be the last parameter instead of the first does not fix the problem. Also, CallProc passes the RT0.RaiseActivation, in addition to a SL, but the front end compiles the FINALLY procedure with no corresponding formal. This seems unnecessarily peculiar, despite being apparently harmless. > > This was very tricky. > > There is a big semantic mismatch between CM3 CG's IR and llvm's, > for indirect calls. In CM3, parameters are passed by separate > operators, and the call operator just transfers control. So it > is possible to have two different parameter-passing sequences, > one with and one without a static link, selected at runtime, > merging to a single call operator. The selection depends on > whether the procedure variable is a closure (implies call a > nested procedure) or not (implies call a top-level procedure). > > In llvm, the actual parameter list is part of the call operator, > which denotes the number and llvm types of all the parameters. > Thus, two different calls are needed, in two different basic > blocks. > > Moreover, the CM3 IR does not provide the needed information > where it is needed. Actual passing of the static link is denoted > by a pop_static_link operator, but evaluation of the SL value > is done by general-purpose operators such as load, etc., that > do not give any indication what they are computing. By the time > we see the pop_static_link, these have passed. But the code address > to call to, result type, and calling convention (not currently used, > but needs to be kept available for the future) are not there. The > result type could be saved from the start_call_indirect, but the > calling convention is not there either. > > When we see the call_indirect operator, the static link value > has been computed and we can, at compile-time, find its llvm > variable, but it is computed in a different basic block and > is not available at runtime. We can jump around among basic > blocks at compile time, but llvm's SSA and dominator rules > mean we can't use it. > > Moreover, CM3's seemingly nice idea of making IR operators > method calls makes it very awkward to do idiom recognition or > state-dependent handling of general-purpose operators. > > The solution used here involves waiting until we get the > call_indirect operator, then doing idiom recognition on the > llvm code already produced by the general-purpose operations > to compute the static link, backing up from there and finding > the procedure pointer to recompute the code address. We put > this back in the basic block where the pop_static_link is > located, then generate the nested indirect call there. The > other code, in the wrong place for this scheme, is isolated > into an unreachable basic block, which, presumably, llvm will > remove. > > Moreover, if this is a function being called, the two calls > produce their function results in two different basic blocks. > This is handled by manually constructing a phi node in the > block where the paths merge. Phi nodes are usually only > constructed internally by llvm. > > -- Rodney Bates rodney.m.bates at acm.org From rodney.m.bates at acm.org Fri Dec 11 01:54:36 2015 From: rodney.m.bates at acm.org (Rodney Bates) Date: Thu, 10 Dec 2015 16:54:36 -0800 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Message-ID: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. From jay.krell at cornell.edu Fri Dec 11 02:15:56 2015 From: jay.krell at cornell.edu (Jay K) Date: Fri, 11 Dec 2015 01:15:56 +0000 Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... In-Reply-To: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> References: <566a1eccdb796_58093fdc9cdf529c830b5@hookshot-fe6-cp1-prd.iad.github.net.mail> Message-ID: I gave up e.g. on C/m3cc ABI compatibility.It would be nice. But it isn't trivial. We could do it, maybe, if we change m3cc.i.e. break all/most existing ABIs. Thoughts? Or maybe we should just remove taking the addressof nested functions from the language? Problem solved? Nested functions w/o address-taken I think are ok, as they'donly be called from code compiled with the same backend.It is only the escape by address-taken that presents the problem. As well, we'd like go quite far if we just didn't use this feature in m3core/libm3. Gosh -- if we remove the address-taken from nested functions, a bunch ofugliness goes away.. maybe implement them more like C++ lambdas -- requirecaller to know the difference.. - Jay Date: Thu, 10 Dec 2015 16:54:36 -0800 From: rodney.m.bates at acm.org To: m3commit at elegosoft.com Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (... Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692 https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692 Author: Rodney Bates Date: 2015-12-10 (Thu, 10 Dec 2015) Changed paths: M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3 Log Message: ----------- Infrastructure for passing static link rightmost (currently disabled.) This may be useful in the future, but it did not fix the ABI incompatability between m3llvm and m3cc backends. And putting it first will make life easier for a debugger, probably a lot. Leaving it in but disabled for now, i.e., static link is currently passed as leftmost parameter, as it has been. _______________________________________________ M3commit mailing list M3commit at elegosoft.com https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit -------------- next part -------------- An HTML attachment was scrubbed... URL: From noreply at github.com Mon Dec 21 15:43:40 2015 From: noreply at github.com (GitHub) Date: Mon, 21 Dec 2015 06:43:40 -0800 Subject: [M3commit] [modula3/cm3] 34c81a: Fix bug for quiet nan. If most sig bit of the sign... Message-ID: <5678101c1bb80_24923fecc0f372c016748@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 34c81a74a34bb5b96c236954d6ad34bc8ff70a2c https://github.com/modula3/cm3/commit/34c81a74a34bb5b96c236954d6ad34bc8ff70a2c Author: peter mckinna Date: 2015-12-15 (Tue, 15 Dec 2015) Changed paths: M m3-libs/m3core/src/float/IEEE/LongFloat.m3 M m3-libs/m3core/src/float/IEEE/RealFloat.m3 Log Message: ----------- Fix bug for quiet nan. If most sig bit of the significand is set then its a quiet nan. if zero its a signalling nan. From noreply at github.com Sun Dec 27 11:12:58 2015 From: noreply at github.com (GitHub) Date: Sun, 27 Dec 2015 02:12:58 -0800 Subject: [M3commit] [modula3/cm3] bb102e: Fix critical typo. Message-ID: <567fb9aa4c44f_5afb3feb6f1b129c14191f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: bb102e89ac697891ffd3b7dcd6ac817afb161c86 https://github.com/modula3/cm3/commit/bb102e89ac697891ffd3b7dcd6ac817afb161c86 Author: Jay Krell Date: 2015-12-27 (Sun, 27 Dec 2015) Changed paths: M m3-sys/cminstall/src/config-no-install/NT.common Log Message: ----------- Fix critical typo. From noreply at github.com Tue Dec 29 08:15:44 2015 From: noreply at github.com (GitHub) Date: Mon, 28 Dec 2015 23:15:44 -0800 Subject: [M3commit] [modula3/cm3] 978150: Don't ship cm3 even if INSTALL_CM3_IN_BIN is defin... Message-ID: <56823320ddf98_715d3fd5812e72a0135470@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 9781506f270a618b5bf7352b0ab40bfcdc0f1fda https://github.com/modula3/cm3/commit/9781506f270a618b5bf7352b0ab40bfcdc0f1fda Author: Jay Krell Date: 2015-12-28 (Mon, 28 Dec 2015) Changed paths: M m3-sys/cm3/src/m3makefile Log Message: ----------- Don't ship cm3 even if INSTALL_CM3_IN_BIN is defined. This is a temporary working for the regression in m3cc that adds the INSTALL_CM3_IN_BIN condition, and the scripts/python workaround around *that* by setting it. The right fix is to undo the m3cc change. From noreply at github.com Tue Dec 29 09:35:46 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 00:35:46 -0800 Subject: [M3commit] [modula3/cm3] 72feaf: Compatibility with some incomplete toolsets, e.g. Message-ID: <568245e29caf1_23153f890c2bb2c0111650@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 https://github.com/modula3/cm3/commit/72feafce3dbb8c9b732d88e3d85d78d43f8a4cd1 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Compatibility with some incomplete toolsets, e.g. C:\WINDDK\3790\inc\wnet that does not have mprapi.h, yet it is #included by headers we #include. Commit: 78fba0716acc8206db9c8b11ac54e08cb2ebeb3a https://github.com/modula3/cm3/commit/78fba0716acc8206db9c8b11ac54e08cb2ebeb3a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add const Commit: 1e14d4e5af06f808f4bc630b45234b9687a0806d https://github.com/modula3/cm3/commit/1e14d4e5af06f808f4bc630b45234b9687a0806d Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- add more const Commit: 4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 https://github.com/modula3/cm3/commit/4faedcb2f5151d4f3461b4bcdb5d7e4feca675b7 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- quash warnings Commit: b241d4f5cc3087013e379ccdf9214161d7d1cf13 https://github.com/modula3/cm3/commit/b241d4f5cc3087013e379ccdf9214161d7d1cf13 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-libs/libm3/src/uid/WIN32/MachineID.c Log Message: ----------- Add another pass, in which wireless controllers are considered, i.e. for machines where there is no wired ethernet. Compare: https://github.com/modula3/cm3/compare/9781506f270a...b241d4f5cc30 From noreply at github.com Tue Dec 29 11:52:52 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 02:52:52 -0800 Subject: [M3commit] [modula3/cm3] 3baace: mostly remove Cstdint dependency, for use with old... Message-ID: <568266045ffaa_7dd73fe007b852a01640d0@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: 3baace361cda97348a008ca57c4c0f7f3c08a82f https://github.com/modula3/cm3/commit/3baace361cda97348a008ca57c4c0f7f3c08a82f Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3tests/src/Test.i3 Log Message: ----------- mostly remove Cstdint dependency, for use with older releases Commit: 86a8f8f36a40ebbd07f1435c50900c2622a5675e https://github.com/modula3/cm3/commit/86a8f8f36a40ebbd07f1435c50900c2622a5675e Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3front/src/misc/RunTyme.m3 Log Message: ----------- Add assert for certain compiler/library mismatches. Perhaps should be a different reporting mechanism, i.e. check and report even if asserts disabled. Commit: 08e50b3428d98083731e56d6c23845902079e5c8 https://github.com/modula3/cm3/commit/08e50b3428d98083731e56d6c23845902079e5c8 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3C.m3 M m3-sys/m3back/src/M3CC.c M m3-sys/m3back/src/M3CC.i3 Log Message: ----------- Remove LONGINT and Long dependency, so you can bootstrap e.g. from 5.2.6. Commit: f51684113e4df1811bdbe3d0ada3110987192812 https://github.com/modula3/cm3/commit/f51684113e4df1811bdbe3d0ada3110987192812 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: M m3-sys/m3back/src/M3x86.m3 M m3-sys/m3back/src/M3x86Rep.i3 Log Message: ----------- Fill in support for alloca. The previous partial approach was wrong and inadequate. alloca is a special case in a number of ways that do not fit the general model/framework. - It's link name is __chkstk. - It takes its first and only parameter in eax. - It returns its return value in esp. This lets the system mostly return to working. You can bootstrap from 5.2.6, using so far an older Visual C++ and get as far as the caltech lex/yacc rewrites. Compare: https://github.com/modula3/cm3/compare/b241d4f5cc30...f51684113e4d From noreply at github.com Tue Dec 29 12:00:00 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:00:00 -0800 Subject: [M3commit] [modula3/cm3] ba09bb: Add m3overrides files to where they are needed to ... Message-ID: <568267b0dc418_6c6f3faa710672b85427c@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: ba09bb781fe9c59549cc601942d97e5588799394 https://github.com/modula3/cm3/commit/ba09bb781fe9c59549cc601942d97e5588799394 Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A m3-sys/m3tests/src/p2/p200/m3overrides A m3-sys/m3tests/src/p2/p201/m3overrides A m3-sys/m3tests/src/p2/p202/m3overrides A m3-sys/m3tests/src/p2/p203/m3overrides A m3-sys/m3tests/src/p2/p204/m3overrides A m3-sys/m3tests/src/p2/p205/m3overrides A m3-sys/m3tests/src/p2/p206/m3overrides A m3-sys/m3tests/src/p2/p207/m3overrides A m3-sys/m3tests/src/p2/p208/m3overrides A m3-sys/m3tests/src/p2/p209/m3overrides A m3-sys/m3tests/src/p2/p210/m3overrides A m3-sys/m3tests/src/p2/p211/m3overrides A m3-sys/m3tests/src/p2/p213/m3overrides A m3-sys/m3tests/src/p2/p214/m3overrides A m3-sys/m3tests/src/p2/p215/m3overrides A m3-sys/m3tests/src/p2/p216/m3overrides A m3-sys/m3tests/src/p2/p217/m3overrides A m3-sys/m3tests/src/p2/p218/m3overrides A m3-sys/m3tests/src/p2/p219/m3overrides A m3-sys/m3tests/src/p2/p220/m3overrides A m3-sys/m3tests/src/p2/p221/m3overrides A m3-sys/m3tests/src/p2/p222/m3overrides A m3-sys/m3tests/src/p2/p223/m3overrides A m3-sys/m3tests/src/p2/p224/m3overrides A m3-sys/m3tests/src/p2/p225/m3overrides A m3-sys/m3tests/src/p2/p226/m3overrides A m3-sys/m3tests/src/p2/p227/m3overrides A m3-sys/m3tests/src/p2/p228/m3overrides A m3-sys/m3tests/src/p2/p229/m3overrides A m3-sys/m3tests/src/p2/p230/m3overrides A m3-sys/m3tests/src/p2/p231/m3overrides A m3-sys/m3tests/src/p2/p232/m3overrides A m3-sys/m3tests/src/p2/p233/m3overrides A m3-sys/m3tests/src/p2/p234/m3overrides A m3-sys/m3tests/src/p2/p235/m3overrides A m3-sys/m3tests/src/p2/p236/m3overrides A m3-sys/m3tests/src/p2/p238/m3overrides A m3-sys/m3tests/src/p2/p241/m3overrides A m3-sys/m3tests/src/p2/p242/m3overrides A m3-sys/m3tests/src/p2/p243/m3overrides A m3-sys/m3tests/src/p2/p244/m3overrides A m3-sys/m3tests/src/p2/p245/m3overrides A m3-sys/m3tests/src/p2/p246/m3overrides A m3-sys/m3tests/src/p2/p247/m3overrides A m3-sys/m3tests/src/p2/p248/m3overrides A m3-sys/m3tests/src/p2/p249/m3overrides A m3-sys/m3tests/src/p2/p250/m3overrides A m3-sys/m3tests/src/p2/p251/m3overrides A m3-sys/m3tests/src/p2/p253/m3overrides A m3-sys/m3tests/src/p2/p254/m3overrides A m3-sys/m3tests/src/p2/p255/m3overrides A m3-sys/m3tests/src/p2/p256/m3overrides A m3-sys/m3tests/src/p2/p257/m3overrides A m3-sys/m3tests/src/p2/p258/m3overrides A m3-sys/m3tests/src/p2/p259/m3overrides A m3-sys/m3tests/src/p2/p260/m3overrides A m3-sys/m3tests/src/p2/p261/m3overrides A m3-sys/m3tests/src/p2/p263/m3overrides Log Message: ----------- Add m3overrides files to where they are needed to work. From noreply at github.com Tue Dec 29 12:08:25 2015 From: noreply at github.com (GitHub) Date: Tue, 29 Dec 2015 03:08:25 -0800 Subject: [M3commit] [modula3/cm3] f565e3: Notes on tonight's procedures for incremental comp... Message-ID: <568269a962cf9_79123f9bcb3fd29c17989d@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/modula3/cm3 Commit: f565e395347cd282c1450ed6de84a14ad165e79a https://github.com/modula3/cm3/commit/f565e395347cd282c1450ed6de84a14ad165e79a Author: Jay Krell Date: 2015-12-29 (Tue, 29 Dec 2015) Changed paths: A doc/notes/non-destructive-compiler-testing.txt Log Message: ----------- Notes on tonight's procedures for incremental compiler development/testing in the face of temporary catastrophic mistakes.