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=0.4 required=5.0 tests=BAYES_00,FORGED_MUA_MOZILLA autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,a32653cf595422e6 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,UTF8 Received: by 10.68.227.230 with SMTP id sd6mr5963430pbc.8.1334936102332; Fri, 20 Apr 2012 08:35:02 -0700 (PDT) Path: r9ni78459pbh.0!nntp.google.com!news2.google.com!goblin2!goblin.stu.neva.ru!news.karotte.org!uucp.gnuu.de!newsfeed.arcor.de!newsspool3.arcor-online.net!news.arcor.de.POSTED!not-for-mail Date: Fri, 20 Apr 2012 17:34:48 +0200 From: Georg Bauhaus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: GNAT and register allocation References: <4f9138c2$0$6628$9b4e6d93@newsspool2.arcor-online.net> <4f9145b5$0$6557$9b4e6d93@newsspool4.arcor-online.net> In-Reply-To: Message-ID: <4f918218$0$6557$9b4e6d93@newsspool4.arcor-online.net> Organization: Arcor NNTP-Posting-Date: 20 Apr 2012 17:34:48 CEST NNTP-Posting-Host: ca0c1d32.newsspool4.arcor-online.net X-Trace: DXC=1YCFMe=Zg79i6K;>iZ]7634IUKnc\616M64>:Lh>_cHTX3j=2f\\nZ1WJM4 X-Complaints-To: usenet-abuse@arcor.de Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Date: 2012-04-20T17:34:48+02:00 List-Id: On 20.04.12 15:48, Markus Schöpflin wrote: > As long as the functions are not inlined, I'd expect them to obey the calling > convention of the ABI of the platform on which they are compiled. Therefore > you won't see A using xmm0/1 and B using xmm2/3. Ah, I see. When I add two more parameters, then xmm2 and xmm3 will appear. This would agree with my naive interpretation of "x64 fpt values are passed in registers xmm{0..3}, others on the stack." So I guess the ABI says that one may not select arbitrary subsets from xmm{0..3} for passing just two parameters? > As you can see, the xmmN registers up to xmm6 are used. Do you get different > results? Some results are very similar to yours. They depend on options, compiler, OS, and CPU, though. Some variance in addition results from both the depth and the amount of "recursive expansion". What I am after, then, is how to control inline expansion, insofar as it affects sets of registers in a single compilation unit. (Assuming I can do better than GCC's heuristic apparatus.) I must use one set of options for an entire program in this case. I wish there were a pragma that is the opposite of pragma Inline. After all, there is a pair Suppress/Unsuppress, too.