Re: VC2008 Bug: optimising static_cast to a virtual base gives C1001
internal compile error
On Feb 21, 9:12 pm, David Lowndes <Dav...@example.invalid> wrote:
I was able to reproduce this release build C1001 failure in VS2008 by creating
an empty C++ Win32 console application with default settings, and changing the
code to make a complete program:
OK, it repros for me too with that.
Advice to the OP...
Submit a bug report on the MS Connect site, supply a complete zipped
project that illustrates the problem so that it's trivial for someone
to reproduce, and then post a link to your bug report back here.
If this is a significant issue for you, phone MS support and report it
to them - you shouldn't be charged since it's clearly a bug, and they
ought to come up with a work-around and/or a patch.
Dave
Am I wrong in presuming the OP is me?
The reason we use the code is to provide a compile-time check that the
argument to a particular macro inherits from a given base class. When
the argument doesn't, we get a compile error.
Hmmm. I'm getting some strange behaviour. When I reported the bug, I
was reproducing it by right-clicking on the .cpp file and chosing
"compile" which just compiles the individual file... this is when I
was getting the c1001 error. The .cpp file happened to be part of a
large project, but I thought that was irrelevant because I was only
compiling the individual file.
I just created a new solution with a single file, test.cpp, whose
contents are:
struct B {};
struct A : public virtual B {};
int main()
{
B* b = reinterpret_cast<A*>(0);
return 0;
}
now when I right-click on the .cpp and chose "compile" the bloody
thing does compile successfully... note for Ulrich's sake I used
reinterpret_cast (which also fails in the original context). However,
building the solution (as opposed to the individual .cpp) crashes with
a different C1001 error at link time!!!
1>------ Build started: Project: test, Configuration: Release Win32
------
1>Linking...
1>Generating code
1>c:\documents and settings\admin\my documents\visual studio
2008\projects\test\test\test.cpp(6) : fatal error C1001: An internal
error has occurred in the compiler.
1>(compiler file 'f:\dd\vctools\compiler\utc\src
\p2\main.c[0x510BF283:0x00000014]', line 182)
1> To work around this problem, try simplifying or changing the
program near the locations listed above.
1>Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more
information
1>LINK : fatal error LNK1000: Internal error during IMAGE::BuildImage
1> Version 9.00.21022.08
1> ExceptionCode = C0000005
1> ExceptionFlags = 00000000
1> ExceptionAddress = 510BF283 (51030000) "C:\Program Files
\Microsoft Visual Studio 9.0\VC\bin\c2.dll"
1> NumberParameters = 00000002
1> ExceptionInformation[ 0] = 00000000
1> ExceptionInformation[ 1] = 00000014
1>CONTEXT:
1> Eax = 021EC910 Esp = 0012ED10
1> Ebx = 0012ED4C Ebp = 0012ED2C
1> Ecx = 00000000 Esi = 00000000
1> Edx = 021CEB7C Edi = 021EC910
1> Eip = 510BF283 EFlags = 00000202
1> SegCs = 0000001B SegDs = 00000023
1> SegSs = 00000023 SegEs = 00000023
1> SegFs = 0000003B SegGs = 00000000
1> Dr0 = 00000000 Dr3 = 00000000
1> Dr1 = 00000000 Dr6 = 00000000
1> Dr2 = 00000000 Dr7 = 00000000
1>Build log was saved at "file://c:\Documents and Settings\admin\My
Documents\Visual Studio 2008\Projects\test\test\Release\BuildLog.htm"
1>test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
==========
The plot thickens