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.
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.
I don't see anything wrong with that off-hand. It's probably a compiler bug of some sort. - Randy.
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.
--
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
"Jeffrey R.Carter" <spam.jrcarter.not@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.
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.
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.
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.
Simon Wright <simon@pushface.org> writes:
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113979
And now fixed on all "active" branches! (that's 11, 12, 13 & master,
judging by the comments)
Of course, it takes a while for this to percolate through to a release.
"Jeffrey R.Carter" <spam.jrcarter.not@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
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 399 |
Nodes: | 16 (3 / 13) |
Uptime: | 64:58:16 |
Calls: | 8,355 |
Calls today: | 15 |
Files: | 13,159 |
Messages: | 5,893,946 |
Posted today: | 1 |