The linker provides a section "FUNCTION REGISTER MASKS" in the map file. This lists 32-bit values that indicate the registers used by certain functions in the build. These values are in turn used by the compiler to optimise register useage. But, in my project, not all external functions get into this list. What are the rules for getting a function into the register use list and does not being there compromise efficiency?
Still no reply? I'll throw you a bone. I had a similar problem where the Register mask was incorrect when I would use the #pragma asm in my C coded file. (I was optimizing the original functions) I found that I needed to use the $reguse (asm) directive to specify the Register list after the function is declared (see the manual) one by one the functions started to appear in the list. If you're not using the assembler directive to break the compiler, it may be that you are pulling in code that has already been compiled some how or that the register optimization is somehow turned off for the files whose functions are missing. Hope this gives you something to work with.
Still no reply to my original question... Also LX51 suppresses leading zeros in the Function Register Masks list; its just kinda irritatating...
If a function uses all registers, it will be not in the list since it does not make sense to list them. If you think that there is somewhere a problem, send a small example to: support.intl@keil.com. Please remember to state serial number and version number of the product that you are using.