> > Then there are other things I still have no handle on. For instance, > > it seems that sometimes a type declaration will have no effect --- I > > will declare an argument x to be (type (simple-array double-float x)), > > but will get compiler notes to the effect that x is a vector, not a > > simple-array double-float. However, if I blow away all the .x86f > > files in the directory and recompile them, these notes go away and the > > code becomes fast. Any ideas what to even look for that causes this > > problem? > > How exactly do you do these declarations? And in what order do you > load things?
I'm not sure how to answer this. The most recent example was that I have files a, b, and c, each of which depend on all previous files in the sequence. I rewrote a function foo in b, and the code generated for that function produced lots of notes and was slow no matter how many times I recompiled, and type declarations. If I blew away all the source code and recompiled in order a, b, c, it was fast. I couldn't recompile in any other order because of the dependencies. The function I modified was not declared inline. In general, what sorts of things would make a type declaration not "take" --- seem to have no effect. It must be some sort of other information kept by the system, but I'm not sure what it is. rif
