-fno-crossjumping not working + weird asm behavior

Zdenek Dvorak rakdver@atrey.karlin.mff.cuni.cz
Sat May 8 22:10:00 GMT 2004


Hello,

> Every goto **pc++ first jumps to .L49. This costs cycles but is likely
> the result of -fcrossjumping.

no.  The computed gotos are merged together to prevent problems with
control flow graph having quadratic size.  I am not quite sure why they
are not unfactored when we no longer need cfg.

> The jump is still there, but some of the code now is kept in the case
> code. Funny. Why is that happening? It's wasting cycles and still does
> crossjumping. I would expect the jmp .Lxx to go away when using
> -fno-crossjumping.
> 
> 
> Next thing I tried was "helping" gcc by generating jmp *%eax on the
> spot using inline assembly (see the JMP macro below). Now I am getting
> the following code which appears to be wrong because no code is
> actually generated for the cases except for the indirect jump.

Gcc does not actually understand semantics of the inline assembly code
(its contents is just copied verbatim to the output assembler file,
except for a straightforward replacement of register parameters).
Specially, it does not know that the JMP macro jumps.

Zdenek



More information about the Gcc-bugs mailing list