On Mon, Mar 31, 2014, at 0:37, Ralf Friedl wrote: > >>> What's even worse is that adding any output to push(), even a puts("hi") > >>> that does not print the argument or any of the stack vars, fixes it. So > >>> something magic is going on inside the GCC optimization, I'm afraid this > >>> is above my pay grade. > >> Could you send the file miscutils/dc.o that is created with and without > >> this puts("hi") in push()? > > Attached. > Are you using some special compiler options, especially regarding > parameter passing in registers and stack alignment?
None, I'm afraid. CFLAGS etc are all unset. See later on for the gcc defaults too. Thanks for the research. I only speak x86 asm on a "yep, that's asm" level. > The instruction at 12 loads the double from address %edi after %edi has > been set to point to the parameter area. The instruction at 0 in the > failed case is exactly the same, except that %edi has not been setup > before. So I would consider this a compiler bug. Would it be possible for you to submit a gcc bug? I can try to do so too, but it'll take a (long) while before I have time to build latest gcc to test. On bb side, I wonder if this gcc version should be blacklisted, or if some workaround can be found. Here's the -S -fverbose-asm output of an empty C file. I see nothing about alignment, regparms, or otherwise relevant default options. # GNU C (GCC) version 4.7.2 (i486-pc-linux-gnu) # compiled by GNU C version 4.7.2, GMP version 5.1.1, MPFR version 3.1.1, MPC version 1.0.1 # GGC heuristics: --param ggc-min-expand=38 --param ggc-min-heapsize=15472 # options passed: # -iprefix /tmp/tcloop/gcc/usr/local/bin/../lib/gcc/i486-pc-linux-gnu/4.7.2/ # test.c -mtune=i486 -march=i486 -fverbose-asm # options enabled: -fauto-inc-dec -fbranch-count-reg -fcommon # -fdebug-types-section -fdelete-null-pointer-checks -fdwarf2-cfi-asm # -fearly-inlining -feliminate-unused-debug-types -ffunction-cse -fgcse-lm # -fgnu-runtime -fident -finline-atomics -fira-share-save-slots # -fira-share-spill-slots -fivopts -fkeep-static-consts # -fleading-underscore -fmath-errno -fmerge-debug-strings # -fmove-loop-invariants -fpcc-struct-return -fpeephole # -fprefetch-loop-arrays -fsched-critical-path-heuristic # -fsched-dep-count-heuristic -fsched-group-heuristic -fsched-interblock # -fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec # -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fshow-column # -fsigned-zeros -fsplit-ivs-in-unroller -fstrict-volatile-bitfields # -ftrapping-math -ftree-cselim -ftree-forwprop -ftree-loop-if-convert # -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-optimize # -ftree-parallelize-loops= -ftree-phiprop -ftree-pta -ftree-reassoc # -ftree-scev-cprop -ftree-slp-vectorize -ftree-vect-loop-version # -funit-at-a-time -fvect-cost-model -fverbose-asm # -fzero-initialized-in-bss -m32 -m80387 -m96bit-long-double # -malign-stringops -mfancy-math-387 -mfp-ret-in-387 -mglibc -mieee-fp # -mno-red-zone -mno-sse4 -mpush-args -msahf -mtls-direct-seg-refs - Lauri -- http://www.fastmail.fm - Faster than the air-speed velocity of an unladen european swallow _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox