This is from a -O1 of syntax.c - note how it stamps on r2 as a temp which is the 1st variadic argument before it gets to stack the original.
.global syntax_error <<<<< void syntax_error(struct info *info, const char *format, ...) { .thumb .thumb_func .type syntax_error, %function syntax_error: .fnstart .LFB100: .loc 1 116 0 .cfi_startproc @ args = 4, pretend = 12, frame = 8 @ frame_needed = 0, uses_anonymous_args = 1 .loc 1 120 0 ldr r3, [r0, #0] ldr r3, [r3, #0] subs r2, r3, #6 !!!!! it ne movne r2, #1 cmp r3, #0 ite eq moveq r3, #0 andne r3, r2, #1 cbnz r3, .L153 .loc 1 116 0 push {r1, r2, r3} .save {r1, r2, r3} -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/758082 Title: [armel] segfaults in make check pass when built with optimization -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs