Tue Dec 8 15:15:24 EST 2009

Compiler activity slowing down

As most of you who have been tracking this have realized by now, not much is happening with GCC6809 at the moment. It's serving its original purpose for me quite well, and I don't have a strong desire to make many more changes to it going forward.

The core GCC 4.3.4 is a very stable compiler release; few relevant updates have occurred that warrant another GCC6809 release. GCC 4.4 continues to give me problems and I've basically abandoned it. I've spent enough time already debugging numerous code generator bugs, and there's no compelling reason for me to upgrade to GCC 4.4 anyway.

There are a few optimizations I've made since August which haven't been officially released yet; they are extremely minor. I will eventually roll them out, but existing users probably don't want to bother upgrading.

There is one experimental side project I've devoted some time to -- that of improving the support for 32-bit math. Current GCC6809 generates mostly correct but hideously inefficient code for this. I have an idea on how to fix it, but I can't make any promises. I will post an update as soon as I have more information.


Posted by Brian Dominy | Permanent link

Mon Aug 10 22:33:42 EDT 2009

What's new in GCC6809 4.3.4-1

It occurred me that I never posted a list of the changes in the new release.
  • Include all core GCC 4.3.4 bug fixes.
  • Updated to version 5.0.0 of the ASXXXX tools, which is now licensed under the GPL.
  • The GCC modifications are relicensed from GPLv2 to GPLv3.
  • The maximum line length accepted by the assembler tools has been increased from 80 characters to 256 characters.
  • The binutils wrapper scripts ar, as, and ld are now templates. They are converted into real, executable scripts when they are installed. This is done so that the scripts know which target type is being requested. Likewise, the as6809.conf file is obsolete.
  • The default linker address locations have changed. All code and data, except for the vector table, now defaults to address 0x10. Previously, different addresses were reserved for different types of objects. Now, they are all packed into a single section.
  • Updated the online manual and rewrote it in Texinfo.
  • Changed so that configure is not re-run everytime on Cygwin, since it is very slow.
  • Removed the Subversion-related scripts.
  • The default stack pointer under simulation is now 0xFE00.
  • Disable an optimization that was incorrect for interrupt handlers.
  • Improve tail-call optimization.
  • Updated many comments in the machine description.
  • Remove many of the inline comments in the generated assembly, that was only for debugging the compiler.
  • Add the bswaphi instruction for byte swapping a 16-bit entity (using the exg a,b instruction).
  • Fix code generation bug when optimizing two consecutive PSHS instructions.
  • Fix parallel computation.

Posted by Brian Dominy | Permanent link

Mon Aug 10 21:51:44 EDT 2009

GCC6809 4.3.4-1 released

The newest version of GCC6809 is now available online. This is a patch against the recently released GCC 4.3.4. If you have any problems, please let me know. This is a fairly stable upgrade and mostly fixes a lot of installation issues that people were having. It also upgrades the ASXXXX assembler tools from version 4.1 to version 5.0.

Posted by Brian Dominy | Permanent link

Wed Aug 5 16:45:31 EDT 2009

GCC 4.3.4 released, 6809 version coming soon

The GCC maintainers have officially released version 4.3.4. This is a minor update, but it has been the basis of many new 6809 changes. Soon I'll be releasing a new 6809 package -- stay tuned.


Posted by Brian Dominy | Permanent link

Wed Jul 22 10:51:07 EDT 2009

Compiler status

It's perhaps not very clear where things are with the compiler now, so let me give a brief update. In particular I want to explain how I've been operating.

A little more than a year ago, I switched over to Git for source control. GCC uses Subversion as their VCS, but there is a Git repo that can be used for read-only access. I watch the 4.3, 4.4, and trunk branches from upstream. I have my own branches off each of this, where I made 6809-related changes.

GCC 4.3 has been the most stable version of the compiler for me. Therefore, it is where I make all of my day-to-day feature changes. Initially, I was doing this in trunk and backporting everything, but this wasn't as easy. Granted, 4.3 is supposed to be a stable branch to the *upstream* developers, but for me it is a basis for ongoing development. I track 4.4 and 4.5 mainly out of curiosity to see that things still work. There have been problems with these (a topic for later) to where I don't really dwell on them too much, and I certainly don't encourage their use by others yet.

So my 4.3 branch sees a lot of activity by me, plus it sees the occasional backporting from upstream of extremely stable bug fixes. At some point, the GCC developers will tag this with a new version number: the next would be GCC 4.3.4. At that point, I will put out a release such as gcc6809-4.3.4-1, with the last digit incremented if I make subsequent releases for some reason.

I made end up changing this somewhat, because I realize there's a need for a stable and unstable version of the 6809 code itself, both based on GCC 4.3. Haven't figured out when or how to do this exactly, but it seems likely, especially once upstream locks down the GCC 4.3 branch forever.


Posted by Brian Dominy | Permanent link