That was quite a rabbit hole I've been exploring, but the git repositories for uniarch have been updated with the changes listed below. Highlights include:
- Since early 2009, msp430-libc has been being compiled without any optimization. It now uses -Os -gdwarf2 like it used to. - All problems with compiler faults when generating dwarf2 debug output should be resolved. (Whether that debug output is correct is something I haven't had a chance to investigate.) - Many cleanups in the machine description affecting extendm2, zero_extendm2, movm2, and push/pop operations. Register constraints now follow the current gcc practice of being defined in the machine description file. Ongoing progress toward generating correct instruction lengths. - Resolve 3260589 for frame pointer semantics. Slight change from previous plans: __builtin_frame_address(0) now returns the value of the stack pointer at the moment the function is entered ([B] in my original taxonomy), which is where the return address is stored for non-interrupts, but is the saved status register for interrupts. I.e., it's something you might actually be able to use for something. There's a huge history of how this has been handled in gcc, especially for the ARM, and the commit notes include references that interested parties might find, well, interesting. Anybody who's been trying this, please pull from the current git repositories and let me know if you have problems, especially with anything related to debugging. New potential users please see: https://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Devel:UniarchGit Peter gcc: d5e6c6d Update for release 512271a Correct another frame/stack misunderstanding 7526887 Improve optimization of zero-extended byte values 4a492a8 Remove extranous space from movhi2 template 56556b7 Correct potential mis-assignment of registers b0cabfe Fix suboptimal register reloading 703a8d0 Make internal functions/data static c40ae95 Avoid abort() in ASM_OUTPUT macros 972c5d5 Use register as more evocative unspecv parameter 2d5b4cd SF 3260589 change frame pointer semantics 9924371 SF 3191622 register use cleanup: SMALL_REGISTER_CLASSES cc2a80e Become much more strict about register uses. cd59dd3 Revert SF 3188386 263c35c Fix wrong operator 2d28aa6c Get rid of unnecessary TFPR (alloca already handled) 3065f10 Rework implementation of critical to avoid RETI 6583166 Minor documentation cleanup 927f4d3 SF 3261372: critical attribute incompatible with -g flag 8cc29a6 SF 3191614: register use cleanup: old constraints c155abc Uniformly use pushm1 insns c04654b Fix problem with pseudo-register assignment 0bd318a Handle SFmode in msp430_mov_noclobber 764d7f5 Use utility function to create offset mem exprs 507ebad Inhibit peephole code when no peepholes defined 5f4f010 Storing into memory cannot clobber registers 2fd1283 Handle interior clobbers b452d9c Implement alternative no-clobber solution 632da2f Use mode iterators to reduce duplication in extend insns d8381a8 Use pushqi1 instead of relaxing constraint on push_operand 7be7f29 Avoid corrupting registers in moves f53a4cd Correct constraint documentation; clobber regs in builtins 2d8a38e Remove some magic numbers 6b77e9a Use a move iterator to handle SF using SI at no extra charge 07b1838 Remove unused code 3fc7864 Add movdi code 5a5e4bc Combine alternatives with same pattern and lengths cd5a82e Implement movsi 7cbd810 Support offset for stack-relative pushes 0071bac Add movhi* 0b2ce1e Disable ADJUST_INSN_LENGTH 1db0967 Incorporate pushqi into movqi handling. bca4d4e Validation of movqi e5ff982 Remove unreferenced sameoperand code (leftover pre extend rewrite) 6ed2af5 Move all peephole definitions to separate file. 77f1c6a Cleanup around extend insns df372c4 Implement zero_extendmn2 sharing extendmn2 code 29099e7 Re-implement sign extension insns (extendmn2) 8ce32c4 Avoid overwrite when r11:di is copied to r12:di binutils: fe611a8 SF 3237855: clean up -mmcu documentation msp430mcu: c623e51 Definition of alloca compatible with GCC builtin msp430-libc 49c25e0 Restore optimization flags lost in override commit of 20090127 ------------------------------------------------------------------------------ Forrester Wave Report - Recovery time is now measured in hours and minutes not days. Key insights are discussed in the 2010 Forrester Wave Report as part of an in-depth evaluation of disaster recovery service providers. Forrester found the best-in-class provider in terms of services and vision. Read this report now! http://p.sf.net/sfu/ibm-webcastpromo _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users