In my business, it is important to be able to recreate a binary object image at will. We "proof" this by generating a "build" of the source code using a configured version of the compiler, copying the source code to another directory, and then compiling it again. After this process is complete, it is expected that the loadable object image is bit for bit identical.
Generally, using Code Composer 4, and the C6000 series compiler (which supports the C6748 DSP), that is true. The compiler generates identical instruction streams and the final output is identical. However, I've come across a case where the compiler seemingly randomly generates a "different" instruction stream. The source file is not changed, nor is the Windows XP computer changed, nor is the logon account changed, nor is the version of Code Composer changed.
The only change is to make a copy and recompile everything.
The assembler output produced by the compiler does not match in a very specific area of the generated assembly code, and appears to be related to the use of C++ template functions. There' s no logical or rational reason why this localized stream area should be different, so far as I can tell. No other source file produces different assembler instructions. I've come to the conclusion that this must be a characteristic (perhaps an error) in the compiler itself that should be fixed.
Has anyone else found a similar problem? For the TI support staff, I can forward to you this file so you can try this on your own system.