[PR87054] fix unaligned access
Building an ADDR_EXPR uses the canonical type to build the pointer
type, but then, as we dereference it, we lose track of lax alignment
known to apply to the dereferenced object. This might not be a
problem in general, but it is when the compiler implicitly introduces
address taking and dereferencing, as it does for asm statements, and
as it may do in some loop optimizations.
From: Richard Biener <rguenther@suse.de>
for gcc/ChangeLog
PR middle-end/87054
* gimplify.c (gimplify_expr): Retain alignment of
addressable lvalue in dereference.
From: Alexandre Oliva <oliva@adacore.com>
for gcc/testsuite/ChangeLog
PR middle-end/87054
* gcc.dg/pr87054.c: New.
From-SVN: r264450