Dave Korn writes:
>Is it just me, or does anyone else get this?  I objdump'd and diff'd the
>stage2 and stage3 versions of cfg.o and it seems to have developed a habit of
>inserting 'shrd'/'shld' opcodes:

It looks to me like the stage3 version with the shrd/shld is correct
and it's that stage2 version that's missing opcodes.  In both versions
the source and destination of the shift are a 64-bit pair of registers,
but the stage2 version uses 32-bit shifts, while the stage3 version uses
64-bit shitfs.  The code in the first chunk looks like it's the result
of the expansion of the RDIV macro with the dividend being a "gcov_type"
value and the divisor being 65536.  It looks like "gcov_type" is 64-bits,
so it should be using 64-bit arithmetic.

> although disturbingly enough there's a missing 'lea' too:

It's a NOP.  Probably inserted by the assembler because of an alignment
directive.

                                        Ross Ridge

Reply via email to