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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f71c159449d6e114 X-Google-Attributes: gid103376,public From: kst@aonix.com (Keith Thompson) Subject: Re: Ada 83 - avoiding unchecked conversions. Date: 1996/12/19 Message-ID: #1/1 X-Deja-AN: 205023015 sender: news@thomsoft.com (USENET News Admin @flash) x-nntp-posting-host: pulsar references: <32AED68A.48BE@aisf.com> <32b03008.564464@netnews.worldnet.att.net> <58np72$9qp@news.nyu.edu> <32B6905F.FC4@tiac.net> organization: Aonix, San Diego, CA, USA newsgroups: comp.lang.ada originator: kst@pulsar Date: 1996-12-19T00:00:00+00:00 List-Id: In dewar@merv.cs.nyu.edu (Robert Dewar) writes: [...] > Note that the unchecked in unchecked conversion is talking about omitting > normal compile time checks for type correctness. It is NOT talking about > runtime checking (whatever that might mean). In general you cannot assume > that unchecked conversion takes no code. Some of the time it may take > no code, but there is no reason to think, or even considerable desirable, > that a compiler would never generate code for an unchecked conversion. Certainly unchecked conversion can require some code in some cases, but one wouldn't normally expect that code to include constraint checks. > Sometimes you would get the wrong result in the absence of generating > code. For example, suppose that packed 5 bit arrays were stored left > justified in a register, and 5 bit integers were stored right justified. > Well the compiler had beetter emit a shift for the unchecked conversion > or it will get the wrong result (remembr that the semantics of > unchecked conversion is quite well defined, it is not some kind of > implementation dependent unknown op0eration). I agree that the compiler needs to emit a shift for this case, but it shouldn't generate a check that the result is within the declared range of its subtype. This makes it the programmer's responsibility to guarantee that the result will be a valid value of the target subtype (if possible, by using a target subtype that covers all possible bit patterns), or to deal with it properly if it isn't. On the other hand, if the result of a unchecked conversion is assigned to an object, there may well be a constraint check on the assignment. -- Keith Thompson (The_Other_Keith) kst@aonix.com <*> TeleSo^H^H^H^H^H^H Alsy^H^H^H^H Thomson Softw^H^H^H^H^H^H^H^H^H^H^H^H^H Aonix 10251 Vista Sorrento Parkway, Suite 300, San Diego, CA, USA, 92121-2706 "SPOON!" -- The Tick