Taking the address of local variables

Suspended in Gaffa cquenel at polyslo.CalPoly.EDU
Mon Nov 21 07:58:41 AEST 1988


In article <6472 at june.cs.washington.edu> pardo at cs.washington.edu (David Keppel) writes:

	[stuff about taking the address of a local variable]

I believe that the way this is COMMONLY dealt with is the following:

	When the compiler sees the address taken of a local variable,
	it is forced to treat this as basically "volatile" in a way.
	All modifications to that variable must be written out
	to memory AT THE EARLIER location.  This variable cannot
	be moved.

	Now, some optimizations are possible.
	-- If the address goes into a local variable only,
	the compiler can keep track of it's use, and verify
	correctness within this function.
	-- however, if the value gets stored into a global
	variable or passed to a function, then all bets
	are off.  Any following function call or global
	pointer reference (after a function call), could
	use that pointer value.

	So, the summary is :

		DON'T TAKE THE ADDRESSES OF VARIABLES
		IF YOU WANT YOUR COMPILER TO DO OPTIMIZATIONS!!!
	


--chris
The more things change, the more they stay insane.
-------------------------------------------------------------------------------
| Chris Quenelle            | Smart Mailers -> cquenel at polyslo.CalPoly.EDU    |
| Computer Systems Lab      | Dumb Mailers  -> !ucbvax!voder!polyslo!cquenel  |
| Cal Poly State Univ.      |-------------------------------------------------|
| San Luis Obispo, CA 93407 |  My computer can beat up your computer. - Karl  |
-------------------------------------------------------------------------------



More information about the Comp.std.c mailing list