Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
November 01, 2006 Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
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. |
November 01, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gregg | Gregg wrote: > Any suggestions as to where to look within the code would be helpful and appreciated. http://www.digitalmars.com/bugs.html |
November 02, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gregg | 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. |
November 02, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew Attachments: | 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
>>
|
November 02, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gregg | Gregg wrote:
> Attached is about as simple an example of the problem as I can get.
Thanks for doing this. It helps.
|
November 05, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gregg | 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: > > 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 > >> > > ---------------------------------------------------------------------------- ---- > #include <utility> > > class A { > int getSomething(); > }; > > inline > int A::getSomething() { > static std::pair<int, int> b(1, 1); > return 0; > } > > int main() { > return 0; > } > |
November 05, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew | 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
> namespace
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.
|
November 05, 2006 Re: Error Code Help Requested | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gregg | > 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!
|
Copyright © 1999-2021 by the D Language Foundation