https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45996
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to work| |4.3.5
Target Milestone|8.0 |9.0
Known to fail| |6.4.0, 7.3.0, 8.0
--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> ---
I guess the problematic code snipped is in varasm.c:
1794 /* Handle a user-specified function alignment.
1795 Note that we still need to align to DECL_ALIGN, as above,
1796 because ASM_OUTPUT_MAX_SKIP_ALIGN might not do any alignment at
all. */
1797 if (! DECL_USER_ALIGN (decl)
1798 && align_functions_log > align
1799 && optimize_function_for_speed_p (cfun)) <--- HERE
1800 {
1801 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
1802 int align_log = align_functions_log;
1803 #endif
1804 int max_skip = align_functions - 1;
1805 if (flag_limit_function_alignment && crtl->max_insn_address > 0
1806 && max_skip >= crtl->max_insn_address)
1807 max_skip = crtl->max_insn_address - 1;
1808
1809 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
1810 ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file, align_log, max_skip);
1811 #else
1812 ASM_OUTPUT_ALIGN (asm_out_file, align_functions_log);
1813 #endif
1814 }
Let me improve that in next stage1.