Hi,
I've uploaded a new alpha (gpc-20021111) to http://gnu-pascal.de/alpha/
It contains large changes compared to the previous version, as can be seen from the size of the diff file (if you've always fetched the diffs and were going to sometime get a fresh tarball in order to have a "reference point", now might be a good time ;-).
The most important change is that GPC now works with gcc-3.1.1 (i.e., with the backend sources of gcc-3.1.1; the version of GCC used to compile GPC itself should not matter), thanks to Waldek Hebisch's patches. However, please note that this port is very new, and has not been tested as much as the gcc-2.x based GPC's.
Thw two code generation bugs I mentioned in a recent mail have been fixed. There's only one new known bug with gcc-3.1.1 (fjf341b.pas), but it is a compile-time problem and only occurs in a very special situation. I'll try to fix it soon, but I didn't want to furter delay this release because of it.
Debug info generation with gcc-3.1.1 is partially broken. The dwarf debug info format doesn't work yet. Since it's now the default under, e.g., Linux, you might want to try `-gstabs' (use the stabs format which was the default with gcc-2.x). Debug info for object methods also doesn't work yet, so if you use objects, you'll probably have to compile without debug info for now.
If you need GPC in a production environment, we recommend not to use GPC based on gcc-3.1.1 yet. But we'd welcome if you like to help testing with gcc-3.1.1. In this case, please don't report any bugs related to debug info (for now). In particular, if you run the test suite, add `EXTRA_TEST_PFLAGS=-g0' on the test make command line (because otherwise, debug info is turned on by default when testing).
I expect that most new bugs will be compiler crashes on wrong input programs (instead of in in addition to proper error messages). Please report them (as well as any other bugs, of course).
You might want to try configuring GPC with `--enable-checking' (both for gcc-2.95.x and gcc-3.1.1). This will enable additional internal checks which make the compiler (not the generated code) a little slower, but may detect possible problems earlier and better. The compiler will abort with internal errors (usually tree check errors) then. Please also report such cases.
The rest of the changes of this GPC release are mostly internal cleanups, in connection with the gcc-3 port and to generally make the compiler more robust -- though they might cause a few minor new problems in the short term, but that's what alphas are for. If you can, please test it with your code and report any new problems so we can fix them soon.
There are also some changes in the automake mechanism again (thanks to Marten Jan de Ruiter for analysis and code). They should make it substantially faster in situations with many units where most of them are already up to date. I hope the changes don't break anything, but those who use automake in complex projects might want to test it carefully.
As announced, I dropped the syntax `type foo = procedure (Integer, Real)' (i.e., without parameter names). If anyone had used it and gets errors now, just add the parameter names, and put a `;' in place of the `,'.
Also, many obsolete and C-ish features from the preprocessor have been dropped. I suppose most of them were unknown to almost all GPC users, anyway, and I hope the change won't affect anyone. Those interested can find the details in the ChangeLog (entry of 2002-09-29 under gpcpp.c).
Another possibly incompatible change is that GPC will now reject duplicate variable declarations (not yet for routines; I'll also do this, but it will be more complicated due to interfaces, `forward' declarations etc.). Of course, the new behaviour is according to (and even demanded by) the standard. It should only affect those who used "header files" in a C-ish way by which every "module" gets "external" declarations of its own variables. But since GPC has been supporting two real mechanisms for modularization (EP modules and BP units) for a long time, this should be no big issue, I hope.
For a long time, it was not possible to build GPC when the `p' directory is a symlink in the gcc directory. This is now possible. Furthermore, GPC no more modifies the Makefiles depending on the GCC version. So it is now possible to use the same GPC source tree for building with several GCC versions at the same time (provided you use a separate build directory which is strongly recommended, anyway).
Frank