This is the mail archive of the gcc@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]

Re: linux and EGCS PATCH


>>>>> "Horst" == Horst von Brand <vonbrand@inf.utfsm.cl> writes:

 Horst> Linus Torvalds <torvalds@transmeta.com> said:
 >>...
 >> I much prefer to just mark the "load_ldt()" asm as volatile, or as
 >> changing memory. Both of those should correctly tell egcs that it
 >> shouldn't move the ldt loading to before the ldt is set up
 >> completely.

 Horst> Anyway, there seem to be lots of gray areas here, and stuff
 Horst> you can get away with, but shouldn't.  The core problem is
 Horst> that the offending asm() has too much arguments, egcs tries to
 Horst> put each into different registers and goes down cause it
 Horst> can't.  Inhibiting certain optimizations make it realize that
 Horst> they can all be represented as varying bases for the same
 Horst> offset, and everything is peachy. But (if I understand the
 Horst> documentation on asm() for gcc correctly) this is definitely
 Horst> _not_ guarranteed in any way... you can get away with it
 Horst> because gcc synthetizes the different arguments using the same
 Horst> registers.

I don't think your diagnosis is correct.

I've run into this same problem (a month or so ago -- reported here at
some length) with a one-line asm statement that had just one input.

The problem is very simple: the documentation says that an (extended
GNU style) asm with NO outputs is automatically unmovable, and this
makes perfect sense.  But the compiler doesn't obey the documentation.

I've reported this twice; does anyone here know how this bug could be
fixed?  I don't have the skill to fix it myself (though it push comes
to shove I suppose I can learn) so I'm hoping someone is an expert in
this subject and can fix it easily.

	paul


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