Currently gpc with GCC 3.1.1 is getting almost useable. Remaining problems: -- DWARF2 routines in GCC can not handle FILES and abort the compiler (however a null program do compile with debugging on) -- not all data used by front end is properly marked, and compiler may crash after garbage collection. -- with garbage collection disabled it passes most tests, 7 are skipped and 14 fails. -- exponentiation is unimplemented (gcc-3.1.1 has no EXPON_EXPR). one should probably copy code from g77, but since none of the test needed exponentiation I just postponed it.
At least 3 of failing tests (ian5a.pas, ian5b.pas, fjf73.pas) look like bugs already present in the current version -- they fail in tree checks, I wonder if anybody run the tests with tree checks in compiler enabled?
Frank: how can I get your recent changes? I began to clean my changes and want to send a patch in few days.
Waldek Hebisch wrote:
Currently gpc with GCC 3.1.1 is getting almost useable. Remaining problems: -- DWARF2 routines in GCC can not handle FILES and abort the compiler (however a null program do compile with debugging on)
AFAIK, the same problem exists with the current GPC on IRIX. I think something there just hasn't been implemnted. Until now, I've just turned off debug info on IRIX, but sometime this must be dealt with. At least it's probably not a new bug.
-- not all data used by front end is properly marked, and compiler may crash after garbage collection.
Yes, this was expected to be one of the major issues with the gcc-3 change.
-- exponentiation is unimplemented (gcc-3.1.1 has no EXPON_EXPR). one should probably copy code from g77, but since none of the test needed exponentiation I just postponed it.
If I'm not missing something, we just might have to add this constant. AFAICS, EXPON_EXPR is generated in the parser and passen to build_pascal_binary_op() which makes an RTS call (gpc-common.c, line ~1316) before the backend should see it at all.
I'm not sure how easy it is to add this constant. Strictly, it should be a tree_code, but I'm already cheating in another place using LEX_POW in such a place (after all, in C it's all just integers, anyway ;-). So cheating once more shouldn't hurt for now (someday, we can do it right ...)
At least 3 of failing tests (ian5a.pas, ian5b.pas, fjf73.pas) look like bugs already present in the current version -- they fail in tree checks, I wonder if anybody run the tests with tree checks in compiler enabled?
I must admit I don't know about these tree checks. Do they exist already with gcc versions before 3? How do I enable them?
Frank: how can I get your recent changes? I began to clean my changes and want to send a patch in few days.
I'll probably upload it (in alpha) in the next few days.
Frank