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

Reply via email to