> I have just dug out an old version of PICC (version 7.85 with 7.86pl2 > patch). I would like > to know what had been fixed in version 7.87 and subsequent versions (maybe > up to > 8.0). I can not find any information in Hitech website. > > Does anyone have the release notes for PICC 7.87 and/or slightly later > version. I will > guess version 8.00 release notes will be good to have here as well. Here are the notes from 7.87: HI-TECH PIC C Compiler Bug fixes made since v7.86 DATE: 31 May 2001 Below is a list of some of the reported bugs that have been fixed since version 7.86. Not all code generation bugs are listed since they do not always directly correspond to a particular piece of code being compiled. Command Line Driver: - When passing options via a command file, lines now may exceed 256 characters. (7.86PL1) - Fixed problems with memory totals given at the end of compilation. (7.86PL1) - Fixed problem with -ROM option when upper range was 0xFFFF. (7.86PL3,7.87) - Fixed problem with linker options used for bit variables. This prevented bit variables from being cleared on startup. (7.86PL3) - Changed motorola output option to accept both -MOT and -MOTOROLA (7.87) HPDPIC: - Fixed the warning message which is given when two address ranges can be merged in the external ROM ranges window. (7.86PL2) Pre-processor: - Fixed a bug in evaluating a complex macro which resulted in giving a "Too much pushback" error. (7.86PL3) Code Generator: - Fixed and extended the handling of far pointers for highend processors. It now correctly handles far pointers in different banks. (7.86PL1) - Fixed problem with carry bit in addition of longs on midrange processors. (7.86PL1) - Prevented parameter passing unnecessarily going via temporary locations on highend processors. (7.86PL1) - Calls to the structcopy routine used in assigning structures now copies correctly when source and destination structures are in different banks. (7.86PL1) - For highend processors, assignments from memory to FSR where banks differ has been fixed. (7.86PL1) - Signed char types now correctly handle the sign bit when being shifted right. (7.86PL1) - Union assignments didn't record having used W. This affected functions which passed a parameter via W but did not use it until after the union assignment. (7.86PL1) - Fixed bank select problem when library functions llmul or fttol were called. (7.86PL3,4) - Fixed problem with code being generated for negate on signed chars. Eg: singnedchar = -signedchar; (7.86PL3) - Fixed bank selection problem involving assignment of bit variables in different banks. Eg: bank0bit = !bank1bit; (7.86PL3) - Fixed bottle-neck causing slow compilation of functions that had many parameters. (7.86PL3) - Fixed and optimized code generated when adding/subtracting many char array elements. Eg: intvar = char_array[0] + char_array[1] + char_array[2] + etc... (7.86PL3) - Fixed a problem with assignments on highend processors done via fsr when source and destination variables are in different banks. (7.86PL3) - Fixed interrupt context saving where some temporary locations were not being saved. This mainly occurs on highend processors where a math library call is made on a 32-bit data type. (v7.86PL4) - Fixed a problem with the '~' operator which occured when objects were in different banks. (7.86PL4) - Fixed a problem with non-const arrays of function pointers which were indexed by a variable. (7.86PL4) - Fixed a bank selection problem involving indirect assignment to an expression which swaps upper & lower nibbles of a byte. (7.86PL4) - Fixed a problem where an 8 bit banked pointer gets converted to a 16 bit pointer when calling functions which take a const pointer. (7.87) - Fixed a bank problem when calls were made to multiply or divide library routine. (7.87) - Fixed a problem with expressions which toggle a volatile bit type. (7.87) - Fixed a problem where not enough memory was being allocated for initialized structures. (7.87) - In certain combinations of code which involved static local enumerated types, a symbol was being used without memory being allocated for it. This has been fixed. (7.87) - For highend processors, when assigning to an array indirectly, the result of a library operation where all objects are in the same bank didn't end up in the correct location. This has been fixed. (7.87) - Initialization of const and far pointers to objects in other banks was incorrect. The has now been rectified. (7.87) - Bit variables that were qualified as persistent were being allocated a whole byte instead of a bit. Now only the necessary number of bits are allocated. (7.87) - Fixed a problem with complement operator for baseline processors. (7.87) - ANDing two bit variables which were in different banks to another bit variable could incorrectly select the wrong bank. This has been fixed. (7.87) - Fixed a comparison problem with signed char's and unsigned char's. (7.87) Assembler: - Fixed a bug in bit test operation where altering FSR could affect a target in indf. (7.86PL1) - Fixed an optimization bug which affected functions that ended with a function call inside an 'if' statement that have no 'else' part. (7.86PL1) - Fixed an optimization that was leaving two 'return' instructions at the end of functions. (7.86PL3) - Fixed a problem with the -v option which caused erroneous line number information in the symbol file. (7.86PL3) - Fixed an optimization bug which affected baseline processors where use of FSR changed the bank. (7.86PL4) - Fixed an optimization problem which affected highend processors using the addwfc and subwfb instructions. In some cases these were incorrectly being optimized out. (7.87) - Prevented optimization which turned a call/return into a jump when the return is a retfie instruction. (7.87) Linker: - Now issues "Function never called" warning even if it has no local data. (7.86PL1) Cromwell: - Can produce floating point symbol information that can be used in MPLAB via the fakelocal switch. (7.86PL1) - Fixed problem which caused cromwell to issue: "Unknown prefix PIC12" when compiling for a PIC12CE519 (7.86PL3) Libraries: - Library functions correctly select temp bank if required. This caused some problems with floating point variables in different banks. (7.86PL1) - Fixed special case of byte division by 1 or 2 which sometimes produced an incorrect answer. (7.86PL1) - The codecopy routine now correctly checks for a structure being in ROM or RAM. (7.86PL1) - Changed library makefile so that 16F87x processors can use the library versions of eeprom_read, eeprom_write. Changed macro version of EEPROM_READ, EEPROM_WRITE to set EEPGD to zero. (7.86PL1) - Updated the ICD ROM and RAM ranges (in picinfo.ini) for processors other than the 16F877 and 16F876. (7.86PL2) - Fixed a problem in copy.as which did not correctly copy initialized data on Highend devices using external memory. (7.86PL3) - Carry bit was not being cleared first in the conversion of float's to long's which sometimes caused erroneous results. (7.86PL3) - Fixed a problem where certain combinations of variables in different banks being cleared prevented other variables being initialized. (7.86PL4) - Fixed a bank problem affecting baseline pics using 24bit floats that call the storeback_3 library function. (7.87) - Certain calls to library functions did not change banks correctly. New libraries have now been created to cater for processors with or without common memory. (7.87) - Added interrupt strategy for newer 16F73,4 chips. (7.87PL1) - Fixed MPLAB-ICD ROM/RAM requirements for 16F870,871,872 (7.87PL1) - Changed ram clear routine to work faster. (7.87PL1) - Compiled libraries with full optimizations. (7.87PL2) Header files: - Removed references to 18Cxxx processors in PIC.H. Even though they were #ifdef'ed out, it prevented MPLAB from doing incremental compiles. (7.86PL2) - Fixed typo in pic1677x.h which affected some USB definitions for the 16c745 (7.86PL3) - For some midrange processors, the default setting for PWRTD/PWRTE is the reverse of other processors. The #define now has the appropriate setting. (7.86PL4) - Fixed ifdef/endif typo in header files: PIC1665.H, PIC166X.H and PIC1674.H (7.87) - Added missing header file: PIC1655X.H (7.87PL1) -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist