Thread overview
Error Code Help Requested
Nov 01, 2006
Gregg
Nov 01, 2006
Walter Bright
Nov 02, 2006
Matthew
Nov 02, 2006
Gregg
Nov 02, 2006
Walter Bright
Nov 05, 2006
Matthew
Nov 05, 2006
Gregg
Nov 05, 2006
Matthew
November 01, 2006
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
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
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
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
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
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
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
> 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!