Escher Technologies home

Compilers Tested with Perfect Developer 3

Last updated 2005-09-16

C++/Windows

Compiler Pass/fail Notes
Borland C++ compiler 5.5.1
(C++ Builder 5)
Fail Fails to compile certain template declarations. Problem notified to Borland 03/2000. Borland ref : 432005 and 449762.
Borland C++ compiler 5.6
(C++ Builder 6)
Fail

Compiler terminates with "Assertion failure" message when compiling certain constructs. Linker terminates with "Assertion failed" message on object files larger than approx. 4Mb. Borland Quality Central report numbers 393 and 793.

Intel C++ compiler 5.0.1 Pass Disable warning messages 468 and 1125
Microsoft Visual C++ 6.0
(compiler version 12.00.8804)
Pass (with reservations)

Apply Service Pack 3 or later. Disable language extensions (/Za). Enable exceptions and RTTI (/GX /GR). Add compiler option /Zm500.

Compiler may fail to compile code for large expressions and large if-statements; a compiler error message is generated in these cases.

Much of the ANSI C++ library (e.g. <locale>) fails to compile with Microsoft language extensions disabled. This may cause problems in the future.

No known optimisation problems with code generated by Perfect Developer.

See here for detailed configuration information.

Microsoft Visual C++ .NET 2003
(compiler version 13.10.3077)
Fail

The compiler generates spurious C2039 messages (" 'X': is not a member of 'Y' ") when encountering expressions of the form "e -> X :: f()" where 'X' is an ancestor class of the type of 'e' and 'f()' is a public member of 'X'. We have not found a workaround for this problem.

The compiler may also produce C1001 "INTERNAL COMPILER ERROR (compiler file 'f:\vs70builds\3077\vc\Compiler\Utc\source\P2\main.c', line 148)" messages, which can be cleared by disabling optimisation.

Microsoft Visual C++ 2005 beta 2
(compiler version 14.00.50215.44)
Pass (x86-32)

Pass (x86-64)

Use Perfect Developer version 3.0 or later. Disable language extensions (/Za). Enable RTTI (/GR). Warning level 4 may be used (/W4). No known problems using optimisation level 2 (/O2). You will need to recompile the Perfect Developer library, since the precompiled library supplied on the CD is built using Visual C++ 6.0 and is not compatible with VC++ 2005. If compiling for 64-bit (AMD64) platforms, use Perfect Developer 3.02 or later and recompile the library in 64-bit mode.

Watcom C++ 11.0b Fail

Incorrectly instantiates unused members of class templates. Compiler is now in the process of being released as an open source project.

 

C++/Linux

Compiler Pass/fail Notes
GCC 2.95.2 Fail

Incorrectly generates excess destructor calls.

GCC 2.97 2000 1024
(Experimental)
Pass (with reservations)

This is a not an official release; it is a snapshot of the development path leading to GCC 3.0.

Enabling any optimisations is liable to cause incorrect code to be generated.

GCC 3.01 Pass (with reservations)

Compiler incorrectly generates excess destructor calls within conditional expressions. Use Perfect Developer 1.10 or later and set compiler type to "gcc" to avoid generation of code that gcc is known to compile incorrectly.

Do not use gcc optimisation level 3.

GCC 3.3.1 Pass

It is not yet clear whether the problem with excess destructor calls generated by earlier versions of gcc within conditional expressions is completely fixed. For now we recommend configuring Perfect Developer code generation for compiler type "gcc" to avoid possible problems in this area.

Optimisation level 3 appears to be safe.

Other products and companies referred to above may be trademarks or registered trademarks of their respective companies or mark holders.

Home    TOPTOP
Copyright © 1997-2021 Escher Technologies Limited. All rights reserved. Information is subject to change without notice.      Link to  Privacy/Cookie Policy (new window)