On Mon, Oct 6, 2014 at 11:40 AM, Eric Botcazou <ebotca...@adacore.com> wrote: > Hi, > > In Ada, we support all sorts of data structure layout, including on strict- > alignment targets, and the compiler must generate glue code if necessary. > The problem here is a function returning a structure by invisible reference > into a field which is not sufficient aligned because the enclosing object is > packed: in this case, the caller passes an address that is not correctly > aligned to the callee, which can result in an unaligned access in the callee. > > Tested on x86_64-suse-linux and SPARC/Solaris, OK for the mainline.
Ok. Thanks, Richard. > > 2014-10-06 Eric Botcazou <ebotca...@adacore.com> > > * calls.c (expand_call): Do not use the target as the return slot if > it is not sufficiently aligned. > > > 2014-10-06 Eric Botcazou <ebotca...@adacore.com> > > * gnat.dg/return4.adb: New test. > * gnat.dg/return4_pkg.ad[sb]: New helper. > > > -- > Eric Botcazou