comp.lang.ada
 help / color / mirror / Atom feed
* 83/95 issue, bad code or compiler bug
@ 1998-11-19  0:00 Jeff Creem
  1998-11-19  0:00 ` Tom Moran
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Jeff Creem @ 1998-11-19  0:00 UTC (permalink / raw)




I am trying to port some code from an Ada 83 compiler to an Ada 95
compiler and I have hit a problem that I am trying to figure out.


This is similar to the 'size discussion that we going on a few weeks
back but slightly different.


I have some code that essentially looks like : <same code warning, type
warnings in effect>



type My_Integer_Type is range -2**31 .. 2**31-1;
for My_Integer_Type'size use 32;


subtype My_Subtype is My_Integer_Type range 0 .. 255;


type My_Record is
  record
    My_Field    : My_Subtype;
    Other_Field : My_Integer_Type;
  end record;

for My_Record use
  record
    My_Field    at 0 range 0 .. 31;
    Other_Field at 4 range 0 .. 31; 
  end record;

for My_Record'size use 2 * 32;



with the old compiler the My_Subtype was still using all 32 bits so
that if we had a record with My_Field := 1 and Other_Field := 2 and
we looked at the bytes in memory associated with this record we would see


00 00 00 01
00 00 00 02

But with this new compiler (happens to be ada 95) I get

01 00 00 00
00 00 00 02

I suspect that the compiler is seeing that the 'size of My_Subtype is 8 and
so then even though I have the record rep-spec it does not feel constrained to
put this 8 bit value in any particular place in the 32 bits I have given it
since the field is larger than the subtype requires. 


Yuck.

So the question is:

Is this due to the Ada 83 code being written in a poor totally unportable way,
or is this permitted and expected in Ada 95 or is this a compiler bug (GNAT
does not exhibit this "bad" behaviour on my code but it certainly could
be that the code as written will have implementation defined results).


Thanks,
Jeff




^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~1998-11-24  0:00 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-11-19  0:00 83/95 issue, bad code or compiler bug Jeff Creem
1998-11-19  0:00 ` Tom Moran
1998-11-19  0:00 ` Tucker Taft
1998-11-19  0:00   ` Corey Ashford
1998-11-19  0:00     ` Corey Ashford
1998-11-20  0:00 ` Matthew Heaney
1998-11-20  0:00   ` Tom Moran
1998-11-20  0:00 ` Tom Moran
1998-11-21  0:00   ` dewarr
1998-11-22  0:00     ` Tom Moran
1998-11-23  0:00       ` dewarr
1998-11-24  0:00         ` Tom Moran

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox