Hi Tristan,

On 16/07/12 15:17, Tristan Gingold wrote:

On Jul 16, 2012, at 3:16 PM, Duncan Sands wrote:

Hi Arnaud,

The natural way to import a builtin that returns void * is to use
System.Address in Ada, which is in fact an integral type.

how about doing this for formal arguments too and not just the return type?

Formal arguments were already handled.

indeed, for two years already.  Is there any reason not to do this for all
functions, rather than just limiting it to builtins?

Ciao, Duncan.


Tristan.

This would improve optimization by LLVM of calls to standard library functions
since the optimizers bail out when they see an "int" parameter where normally
there would be a void* (or other pointer type).

Ciao, Duncan.


Addressed by this patch, which makes it possible to e.g. compile:

with System;
procedure Btins1 is

    function Frame_Address (Level : Integer) return System.Address;
    pragma Import (Intrinsic, Frame_Address, "__builtin_frame_address");

    Ptr : System.Address;
    pragma Volatile (Ptr);
begin
    Ptr := Frame_Address (0);
end;

Tested on x86_64-pc-linux-gnu, committed on trunk

2012-07-16  Tristan Gingold  <ging...@adacore.com>

        * gcc-interface/decl.c (intrin_return_compatible_p): Map Address to
        void *.






Reply via email to