https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78444
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ubizjak at gmail dot com --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- For some reason, the expansion of call in llvm::cl::parser<unsigned int>::~parser() doesn't update x_rtl->preferred_stack_boundary. Putting a breakpoint at expand_call, we get: Breakpoint 6, expand_call (exp=0x7ffff0ccaaf0, target=0x0, ignore=1) at /home/uros/gcc-svn/trunk/gcc/calls.c:3232 3232 rtx_insn *normal_call_insns = NULL; (gdb) p x_rtl->preferred_stack_boundary $7 = 64 (gdb) fin Run till exit from #0 expand_call (exp=0x7ffff0ccaaf0, target=0x0, ignore=1) at /home/uros/gcc-svn/trunk/gcc/calls.c:3232 expand_expr_real_1 (exp=0x7ffff0ccaaf0, target=0x0, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=false) at /home/uros/gcc-svn/trunk/gcc/expr.c:10947 10947 return expand_call (exp, target, ignore); Value returned is $8 = (rtx_def *) 0x7ffff0b29490 (gdb) p x_rtl->preferred_stack_boundary $9 = 64 The same for x86_64-linux: Breakpoint 5, expand_call (exp=0x7ffff0cca690, target=0x0, ignore=1) at /home/uros/gcc-svn/trunk/gcc/tree.h:3153 3153 if (TREE_CODE (__t) != __c) (gdb) p x_rtl->preferred_stack_boundary $12 = 64 (gdb) fin Run till exit from #0 expand_call (exp=0x7ffff0cca690, target=0x0, ignore=1) at /home/uros/gcc-svn/trunk/gcc/tree.h:3153 expand_expr_real_1 (exp=0x7ffff0cca690, target=0x0, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, inner_reference_p=false) at /home/uros/gcc-svn/trunk/gcc/expr.c:10947 10947 return expand_call (exp, target, ignore); Value returned is $13 = (rtx_def *) 0x7ffff0b29490 (gdb) p x_rtl->preferred_stack_boundary $14 = 128