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,8f8cea8602e61aba X-Google-Attributes: gid103376,public From: "Dean F. Sutherland" Subject: Re: The Red Language Date: 1997/09/05 Message-ID: <34102DF5.36D589F1@ux4.sp.cs.cmu.edu>#1/1 X-Deja-AN: 269999097 References: <340ED5D8.2DEF6D3@ux4.sp.cs.cmu.edu> <199709051335.PAA25952@basement.replay.com> X-Priority: 3 (Normal) Organization: Carnegie-Mellon University Newsgroups: comp.lang.ada Date: 1997-09-05T00:00:00+00:00 List-Id: > How does this differ from a function with a pragma Inline, and a > compiler that does inlining? > The first significant difference that I recall is that Gnal required that the inlining must occur, even across compilation units. As you know, Ada's pragma Inline is advisory; compilers may ignore it if they so choose. The second difference is the name binding. Arguments were evaluated on each reference in the routine, rather than just once at the call site. Note that name binding was a choice you could make, it was not required. (Looking at my old Gnal manual, I find: nam This primary binding mode is permitted only for formals of inline functions and abbreviations. Each reference to the formal results in a reevaluation of the actual object expression. Extracted from section 6.3, binding rules) Other choices for binding were val, ref, any, and repval. Dean