#pragma
    Chris Torek 
    chris at mimsy.umd.edu
       
    Sun Dec  2 00:20:26 AEST 1990
    
    
  
In article <12570056 at hprsue.HP.COM> sue at hprsue.HP.COM (Sue Meloy) writes:
>The only safe thing is for all implementation-specific directives 
>to be protected by ifdefs.
(sounds good to me)
>For example (no noalias diatribes, please!),
Why not? :-)
>do_something(int *vector1, int *vector2)
>#ifdef WHIZBANG_C
>#pragma noalias vector1,vector2
>#endif
I still think `noalias' is a horrible name.  For those who want to
build compilers without automatic alias detection (which is, I admit,
both impossible in general and very slow in the usual possible cases),
I suggest the syntax
	noninterfering(p1, p2, p3, ..., pn)
which means that stores through p1 do not `interfere' with indirection
through any of p2, p3, ..., pn; stores through p2 do not interfere with
indirection through p1, p3, ..., pn; ...; and stores through pn do not
intefere with indirection through p1, p2, ..., pn.
Note that this is a weaker restriction.  It should probably be augmented
to take functions as well:
	noninterfering(p1, munch)
would say that munch() never affects p1[i] for any legal i (and, equivalently,
that p1[i] never affects munch()).
With a special syntax (ick) this same declaration could declare a pointer
or function `pure':
	noninterfering(sin, *)	# sin(x) is a pure function
	noninterfering(ptr, *)	# ptr points to memory not affected by
				# any other pointer or function
It is not clear how to indicate that second-level pointers are pure.
Something along the lines of
	double **x;
	#pragma noninterfering(x, x[*], *)
might declare that not only is x[i] `pure', but also x[i][j].
This syntax could almost certainly be improved.
Oh well, enough of this.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 405 2750)
Domain:	chris at cs.umd.edu	Path:	uunet!mimsy!chris
    
    
More information about the Comp.std.c
mailing list