This is the mail archive of the egcs@egcs.cygnus.com mailing list for the EGCS project. See the EGCS home page for more information.


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

mis-compilation of linux network code



An FYI folks -- I've got a handle on our mis-compilation of the linux
networking code by the mainline sources.

In a nutshell we have something like

  a->b = 0;
  [ ... ]
  hairy volatile asm using "a" as an input which happens to look at a->b
  [ ... ]
  a->b = something_else;


The dead code elimination support did not wipe the list of recent stores
when it passed the asm in the backwards walk of the insn chain.

As a result, flow incorrectly decided that a->b = 0; was a dead assignment.


This is easy 'nuff to fix.  However, what I do not see in mark_used_regs and
mark_set_regs is any code to handle ASMs at all! (see mark_set_regs,
mark_used_regs).

Presumably I'm just hallucinating due to a lack of sleep.

I'll look at this more tomorrow, err, later today.



jeff