------- Comment #3 from laurent at guerby dot net  2005-12-04 21:11 -------
The problem is that you are using "Unbounded_String" in your record, and this
brings in lots of dope information for Finalization purposes. You can see it
with:

gcc -c -gnatR3 uninitialized_field.adb
...
for Unified_Encoding_Record'Object_Size use 384;
for Unified_Encoding_Record'Value_Size use  (if (#1 != 1) then (if (#2 == 2)
then 384 else 208 end) else 200 end) ;
for Unified_Encoding_Record'Alignment use 4;
for Unified_Encoding_Record use record
   _Controller at  4 range  0 .. 159;
   Known       at  0 range  0 ..  7;
   Os          at  1 range  0 ..  7;
   Which       at 24 range  0 ..  7;
   Name        at 24 range  0 .. 191;
   Number      at 24 range  0 .. 15;
end record;
...

If you replace Unbounded_String with Character (or any other non controlled
like a subtype String5 is string (1..5)) your program does work without problem
(4.2.0 20051202).

I assume you used 'address and stuff in your test case but not in your original
program. Could you provide a test case without 'address that has a suspicious
behaviour (even if not all the times)?

Laurent


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25245

Reply via email to