Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

GNAT Error?

100 views
Skip to first unread message

Jeffrey R.Carter

unread,
Feb 16, 2024, 5:51:36 PMFeb 16
to
I have this code:

package Alloc_Err is
type RT is record
F1 : Integer;
F2 : Integer;
end record;

type Grid is array (Positive range <>, Positive range <>) of RT with
Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

procedure What;
end Alloc_Err;

package Alloc_Err is
type RT is record
F1 : Integer;
F2 : Integer;
end record;

type Grid is array (Positive range <>, Positive range <>) of RT with
Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

procedure What;
end Alloc_Err;

and GNAT 12.3.0 and 13.2.0 say

alloc_err.adb:5:26: error: invalid use of subtype mark in expression or call

This doesn't happen if the Dynamic_Predicate is removed. This looks like an
error to me, but I thought I'd better see if there's something I've missed.

--
Jeff Carter
"I like it when the support group complains that they have
insufficient data on mean time to repair bugs in Ada software."
Robert I. Eachus
91

Niklas Holsti

unread,
Feb 16, 2024, 6:26:39 PMFeb 16
to
You showed two copies of the declaration (spec) of package Alloc_Err,
but you did not show the body of the package. Based on the error message
pointing to alloc_err.adb (and not .ads), GNAT thinks the error is in
the body. Please show the body of the package.

Jeffrey R.Carter

unread,
Feb 16, 2024, 6:45:12 PMFeb 16
to
On 2024-02-17 00:26, Niklas Holsti wrote:
>
> You showed two copies of the declaration (spec) of package Alloc_Err, but you
> did not show the body of the package. Based on the error message pointing to
> alloc_err.adb (and not .ads), GNAT thinks the error is in the body. Please show
> the body of the package.
>

Oops. Well, I've managed to simplify the reproducer to

procedure Alloc2 is
type Grid is array (Positive range <>, Positive range <>) of Integer with
Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

type Grid_Ptr is access Grid;

Data : Grid_Ptr := new Grid (1 .. 10, 1 .. 20);
begin -- Alloc2
null;
end Alloc2;

which results in

alloc2.adb:7:23: error: invalid use of subtype mark in expression or call

Line 7 is the declaration of Data.

Randy Brukardt

unread,
Feb 17, 2024, 1:03:24 AMFeb 17
to
I don't see anything wrong with that off-hand. It's probably a compiler bug
of some sort. - Randy.


"Jeffrey R.Carter" <spam.jrc...@spam.acm.org.not> wrote in message
news:uqos24$3rue0$2...@dont-email.me...

Jeffrey R.Carter

unread,
Feb 17, 2024, 1:11:30 AMFeb 17
to
On 2024-02-17 07:04, Randy Brukardt wrote:
> I don't see anything wrong with that off-hand. It's probably a compiler bug
> of some sort. - Randy.

That's what I thought. I know some people have GNAT 14. I'll wait a bit to see
if any of them report on if this is still the case before reporting it.

--
Jeff Carter
"Drown in a vat of whiskey. Death, where is thy sting?"
Never Give a Sucker an Even Break
106

Simon Wright

unread,
Feb 18, 2024, 4:49:02 AMFeb 18
to
"Jeffrey R.Carter" <spam.jrc...@spam.acm.org.not> writes:

> On 2024-02-17 07:04, Randy Brukardt wrote:
>> I don't see anything wrong with that off-hand. It's probably a
>> compiler bug of some sort. - Randy.
>
> That's what I thought. I know some people have GNAT 14. I'll wait a
> bit to see if any of them report on if this is still the case before
> reporting it.

None of GCC 11.2.0, 12.2.0, 13.2.0, 14.0.1 report errors with
alloc2.adb.

These are all apple-darwin, but the error reported is going to be a
front-end error.

Simon Wright

unread,
Feb 18, 2024, 4:59:51 AMFeb 18
to
Oh, you didn't say that -gnata is needed to provoke the error, though
it's not really a surprise.

Now, only GCC 11.2.0 doesn't have the error; so it's a regression in GCC
12.

Jeffrey R.Carter

unread,
Feb 18, 2024, 6:48:56 AMFeb 18
to
On 2024-02-18 10:59, Simon Wright wrote:
>
> Oh, you didn't say that -gnata is needed to provoke the error, though
> it's not really a surprise.
>
> Now, only GCC 11.2.0 doesn't have the error; so it's a regression in GCC
> 12.

Sorry, I should have given my compilation options. You're right that I used
-gnata. But I did say it was related to the Dynamic_Predicate.

As you have GNAT 14 and I don't, perhaps it would be best for you to report this.

--
Jeff Carter
"We'll make Rock Ridge think it's a chicken
that got caught in a tractor's nuts!"
Blazing Saddles
87

Simon Wright

unread,
Feb 18, 2024, 9:33:56 AMFeb 18
to
"Jeffrey R.Carter" <spam.jrc...@spam.acm.org.not> writes:

> On 2024-02-18 10:59, Simon Wright wrote:
>> Oh, you didn't say that -gnata is needed to provoke the error,
>> though
>> it's not really a surprise.
>> Now, only GCC 11.2.0 doesn't have the error; so it's a regression in
>> GCC
>> 12.
>
> Sorry, I should have given my compilation options. You're right that I
> used -gnata. But I did say it was related to the Dynamic_Predicate.
>
> As you have GNAT 14 and I don't, perhaps it would be best for you to
> report this.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113979
0 new messages