gcc/ChangeLog * cfgexpand.c (align_local_variable): Check DECL_USER_ALIGN. --- gcc/cfgexpand.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index a7ec77d5c85..19a020b4b97 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -369,13 +369,19 @@ align_local_variable (tree decl, bool really_expand) align = TYPE_ALIGN (TREE_TYPE (decl)); else { - align = LOCAL_DECL_ALIGNMENT (decl); - /* Don't change DECL_ALIGN when called from estimated_stack_frame_size. - That is done before IPA and could bump alignment based on host - backend even for offloaded code which wants different - LOCAL_DECL_ALIGNMENT. */ - if (really_expand) - SET_DECL_ALIGN (decl, align); + if (DECL_USER_ALIGN (decl)) + align = DECL_ALIGN (decl); + else + { + align = LOCAL_DECL_ALIGNMENT (decl); + /* Don't change DECL_ALIGN when called from + estimated_stack_frame_size. + That is done before IPA and could bump alignment based on host + backend even for offloaded code which wants different + LOCAL_DECL_ALIGNMENT. */ + if (really_expand) + SET_DECL_ALIGN (decl, align); + } } return align / BITS_PER_UNIT; } -- 2.25.2