This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -fno-crossjumping not working + weird asm behavior


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]