From: Lucretia <laguest9000@googlemail.com>
Subject: Re: bug compiler ?
Date: Fri, 30 Jun 2017 04:09:29 -0700 (PDT)
Date: 2017-06-30T04:09:29-07:00 [thread overview]
Message-ID: <b347ed13-79e5-4df1-b687-e280ce3459f4@googlegroups.com> (raw)
In-Reply-To: <88752790-dedc-4185-aba9-b70361e59d19@googlegroups.com>
On Friday, 30 June 2017 09:49:59 UTC+1, bbab...@gmail.com wrote:
> Hello everyone,
>
> I tried to compile this
>
> procedure bug is
> type my_int is new integer;
> type access_function_my_int is access function (n : my_int) return my_int;
> function f (n : my_int) return my_int is (n);
> a : access_function_my_int :=f'access;
> begin
> null;
> end bug;
>
> with the command line : gcc -c -gnat2012 bug.adb
>
> and then I get this message from the compiler:
>
>
> raised STORAGE_ERROR : stack overflow or erroneous memory access
>
> If I modify the type "my_int" by writing subtype my_int is integer;
> then I dont get any error from the compiler.
>
> More interesting, if in the first program, the function f is no longer written inline, then I dont get any error.
>
> Does anyone know what's happeing ?
You can't create a local pointer to f or anything there, you have to define it in a package. You're essentially trying to create a pointer on the stack to something else on the stack. There is a way around it, I think unchecked_conversion, not sure now.
Luke.
next prev parent reply other threads:[~2017-06-30 11:09 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-30 8:49 bug compiler ? bbaborum
2017-06-30 11:09 ` Lucretia [this message]
2017-06-30 14:49 ` Anh Vo
2017-06-30 15:03 ` Anh Vo
2017-06-30 18:47 ` Simon Wright
2017-06-30 19:42 ` Anh Vo
2017-07-02 16:43 ` bbaborum
2017-07-02 16:42 ` bbaborum
2017-06-30 15:11 ` AdaMagica
2017-06-30 18:20 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox