Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83 SMI; site sun.uucp
Path: utzoo!linus!decvax!decwrl!sun!gnu
From: gnu@sun.uucp (John Gilmore)
Newsgroups: net.lang.c
Subject: Re: a (bad) use for &LABEL
Message-ID: <1725@sun.uucp>
Date: Thu, 4-Oct-84 03:05:30 EDT
Article-I.D.: sun.1725
Posted: Thu Oct  4 03:05:30 1984
Date-Received: Fri, 5-Oct-84 08:31:09 EDT
References: <525@nmtvax.UUCP>
Organization: Sun Microsystems, Inc.
Lines: 24

Here at Sun we used to write a fair bit of C code with intermixed
assembler code, interrupts jumping into the middle of compiler produced
code, etc.  We stopped doing that because we kept getting burned by
compiler changes -- and rightly so.  The compiler is entitled to make a
lot of assumptions about its environment that JUST AREN'T TRUE if you
are intermixing random non-compiler-generated code or threads-of-control.
The compiler can often generate better code by making MORE such assumptions
as it evolves.

If you really can't stomach writing your low level interrupt handler in
assembler, try inserting

		;	/* Null statement often useful here */
	#asm
	interruptlabel:
	#endasm

or 

		;
		asm("interruptlabel:");

whichever your compiler prefers.  Then, once it works, don't buy any
newer releases of the compiler.