c++ - Error Code Help Requested
- Gregg (8/8) Nov 01 2006 When compiling a code with DMC I get the following message:
- Walter Bright (2/4) Nov 01 2006 http://www.digitalmars.com/bugs.html
- Matthew (6/14) Nov 01 2006 I have a certain familiarity with DMC++ (and other compiler) ICE bugs. W...
- Gregg (18/31) Nov 02 2006 Attached is about as simple an example of the problem as I can get. As
- Walter Bright (2/3) Nov 02 2006 Thanks for doing this. It helps.
- Matthew (24/67) Nov 04 2006 Hi
When compiling a code with DMC I get the following message: Internal error: cod2 3692 --- errorlevel 1 I have looked on the Digital Mars website for clues as to the meaning of the code, but cannot find any. The code successfully compiles with GCC GNU 4.1.1 and MSVC++ 7.1. Any suggestions as to where to look within the code would be helpful and appreciated.
Nov 01 2006
Gregg wrote:Any suggestions as to where to look within the code would be helpful and appreciated.http://www.digitalmars.com/bugs.html
Nov 01 2006
I have a certain familiarity with DMC++ (and other compiler) ICE bugs. Why not post the code (or an effective snapshot of it) and I'll see if I recognise anything. Matthew "Gregg" <no spam.com> wrote in message news:eib632$1pd9$1 digitaldaemon.com...When compiling a code with DMC I get the following message: Internal error: cod2 3692 --- errorlevel 1 I have looked on the Digital Mars website for clues as to the meaning of the code, but cannot find any. The code successfully compiles with GCC GNU 4.1.1 and MSVC++ 7.1. Any suggestions as to where to look within the code would be helpful and appreciated.
Nov 01 2006
Attached is about as simple an example of the problem as I can get. As noted in my original post, it compiles (and links and runs) successfully with GCC GNU 4.1.1 and MSVC++ 7.1 and compiles successfully with Comeau 4.3.8 (using their online test tool). When I run the code in its attached form I get the following compile time error message: Internal error: cod1 1293 --- errorlevel 1 When class A is defined in separate source and header files, compiling the source file yields the error message I mentioned in my earlier post. The compile command I am using is: dmc -Ic:\dm\stlport\stlport TestInline.cpp The problem seems to involve combinations of the use of inline, static, and std::pair. I've seen this before and have work arounds, but that becomes cumbersome when dealing with existing library code (e.g., special versions of library code for use w/ DMC). Thanks again for any help. Matthew wrote:I have a certain familiarity with DMC++ (and other compiler) ICE bugs. Why not post the code (or an effective snapshot of it) and I'll see if I recognise anything. Matthew "Gregg" <no spam.com> wrote in message news:eib632$1pd9$1 digitaldaemon.com...When compiling a code with DMC I get the following message: Internal error: cod2 3692 --- errorlevel 1
Nov 02 2006
Gregg wrote:Attached is about as simple an example of the problem as I can get.Thanks for doing this. It helps.
Nov 02 2006
Hi I think you've done an excellent job of paring it down for Walter's purposes - i.e. to be able to replicate, identify and fix the bug - but probably a little too much for the kind of workarounds I'm familiar with. ;-) If Walter can get this fixed soonish, that's probably your best bet. If not, or if you can't wait for a new beta, I'd be happy to take a look at something a little more substantial. From what you've presented, several things come to mind, but they may not be appropriate in the real code. FWIW: - use a custom template pair instead of std::pair - use a non-template pair instead of std::pair - use a static reference and a static ptr+auto_ptr, e.g. typedef std::pair<int, int> pair_t; static std::auto_ptr<pair_t> b_(new pair_t(1, 1)); static pair_t &b = *b_.get(); (Note: this has thread-safety implications.) - move the static into another function / scope, e.g. into a local namespace That's all I can think of right now. HTH "Gregg" <no spam.com> wrote in message news:eidasr$p4v$1 digitaldaemon.com...Attached is about as simple an example of the problem as I can get. As noted in my original post, it compiles (and links and runs) successfully with GCC GNU 4.1.1 and MSVC++ 7.1 and compiles successfully with Comeau 4.3.8 (using their online test tool). When I run the code in its attached form I get the following compile time error message: Internal error: cod1 1293 --- errorlevel 1 When class A is defined in separate source and header files, compiling the source file yields the error message I mentioned in my earlier post. The compile command I am using is: dmc -Ic:\dm\stlport\stlport TestInline.cpp The problem seems to involve combinations of the use of inline, static, and std::pair. I've seen this before and have work arounds, but that becomes cumbersome when dealing with existing library code (e.g., special versions of library code for use w/ DMC). Thanks again for any help. Matthew wrote:WhyI have a certain familiarity with DMC++ (and other compiler) ICE bugs.---------------------------------------------------------------------------- ----not post the code (or an effective snapshot of it) and I'll see if I recognise anything. Matthew "Gregg" <no spam.com> wrote in message news:eib632$1pd9$1 digitaldaemon.com...When compiling a code with DMC I get the following message: Internal error: cod2 3692 --- errorlevel 1#include <utility> class A { int getSomething(); }; inline int A::getSomething() { static std::pair<int, int> b(1, 1); return 0; } int main() { return 0; }
Nov 04 2006
Matthew wrote:- use a custom template pair instead of std::pair - use a non-template pair instead of std::pair - use a static reference and a static ptr+auto_ptr, e.g. typedef std::pair<int, int> pair_t; static std::auto_ptr<pair_t> b_(new pair_t(1, 1)); static pair_t &b = *b_.get(); (Note: this has thread-safety implications.) - move the static into another function / scope, e.g. into a local namespaceAll good suggestions to be sure. I've opted for the simplest change to the existing code: comment out the inline statement. I'm hoping this change stands the least chance of breaking something else.
Nov 05 2006
All good suggestions to be sure. I've opted for the simplest change to the existing code: comment out the inline statement. I'm hoping this change stands the least chance of breaking something else.:-) Good luck!
Nov 05 2006