https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957
--- Comment #17 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > The problem is here ^^^^^^^ I think, i.e. we have a volatile variant. The > problem may come from the Ada front-end, but it would be nice to have Jan's > viewpoint. It comes from libgnarl/s-tpobop.ads: type Communication_Block is record Self : Task_Id; Enqueued : Boolean := True; Cancelled : Boolean := False; end record; pragma Volatile (Communication_Block); i.e. the declared type is volatile (but of course the main variant is not).