[PR87054] fix unaligned access
authorAlexandre Oliva <aoliva@gcc.gnu.org>
Thu, 20 Sep 2018 19:34:44 +0000 (19:34 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Thu, 20 Sep 2018 19:34:44 +0000 (19:34 +0000)
commit468e1ef4be47810052687c8193d106e591c74bc4
tree420d98d2ccab135a9a94d7371b6f9f0f1ae6acd6
parent894f597f8fb8693a5d0f5834e98a8ccebbbb9106
[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
gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr87054.c [new file with mode: 0644]