From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d6f7b92fd11ab291 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-07-17 18:31:07 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!news.airnews.net!cabal12.airnews.net!usenet From: "John R. Strohm" Newsgroups: comp.lang.ada Subject: Re: Crosspost: Help wanted from comp.compilers Date: Thu, 17 Jul 2003 20:22:51 -0500 Organization: Airnews.net! at Internet America Message-ID: References: <1058275843.720814@master.nyc.kbcfp.com> <3F158832.1040206@attbi.com> <1058378673.35463@master.nyc.kbcfp.com> <1058390613.119827@master.nyc.kbcfp.com> <2OERa.4718$0F4.3216@nwrdny02.gnilink.net> Abuse-Reports-To: abuse at airmail.net to report improper postings NNTP-Proxy-Relay: library1-aux.airnews.net NNTP-Posting-Time: Thu, 17 Jul 2003 20:30:02 -0500 (CDT) NNTP-Posting-Host: !]\+D1k-W=ppi(" (Encoded at Airnews!) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Xref: archiver1.google.com comp.lang.ada:40449 Date: 2003-07-17T20:22:51-05:00 List-Id: "Hyman Rosen" wrote in message news:2OERa.4718$0F4.3216@nwrdny02.gnilink.net... > Preben Randhol wrote: > > Actually you are not listening. He just showed you why it needed to be > > recompiled. > > How did he do that? He was talking about needing to recompile > after making a change. Where we seem to disagree is that you seem to be believe that only changes to source code can produce changes to semantics, and that those changes should only propagate through one level of inheritance ('with'). You have explicitly stated, repeatedly, that recompiling a unit whose source code has not changed, with ONLY a change in compiler options, should NOT trigger recompilation of dependent units. Consider a contrived example. First, postulate a compiler option, that suppresses generation of type'image information for enumerated types. This is a fairly obvious space optimization, that does no harm at all if the rest of the code does not use type'image. Consider a package spec that declares an enumerated type, that is used by a module that uses that type'image, say, to display symbology labels. Compile the spec with type'image generated. Compile the using module. Recompile the spec with type'image suppressed. Link. Oops. If you are REALLY lucky, the error will be detected at link time, because type'image data is hooked up through a special external symbol, and the symbol isn't there, because type'image was suppressed. If you are lucky, you will spot it when you take the build into the lab and wonder why the frap your symbology labels are missing. If your luck is run-of-the-mill, what you will be doing is wondering why the $#&^$#^ your build crashes and burns before it even brings up the symbology. Observe that forcing recompilation of the using module will bring the error to light. In this strawman scenario, it will also force you to recompile the spec, then recompile the using module. Alternatively, consider a compiler that has an option that will force it to generate some extra debugging entry points if a certain compiler switch is set. Consider a runtime design that uses a transfer table. Recompiling the spec after changing the switch setting may reorder the transfer table, and dependent modules that were compiled prior to the changing of the switch may not know about the change. Result: when you try to call the routine that emergency jettison's all external stores, you instead call the routine that fires the ejection seat squib. This kind of error is guaranteed to make you unpopular with the test pilot community. (Incidentally, this is not far from the example that Jean Ichbiah himself gave when asked why Ada required recompilation of all dependents if a spec that had not changed was recompiled.)