From: Patrick / Albert Fong Newsgroups: comp.os.msdos.djgpp Subject: Error: Internal compiler error Date: Sat, 18 Jan 1997 09:38:44 -0600 Organization: Flashnet Communications Lines: 43 Message-ID: <32E0EE83.5FA3@flash.net> Reply-To: ptfong AT flash DOT net NNTP-Posting-Host: hsh7-171.flash.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp For some reason, I am constantly getting an "Internal compiler error" when I try to compile this test program. I have traced the error to the -funroll-loops flag; if I use that, then it bombs out on me. Basically, I'm testing some memory routines I wrote: manager.MemsetDWords(ptr,0,4096 >> 2); manager.MemcpyBytes(ptr2,ptr,4096); int ctr; for(ctr=0;ctr<4096;ctr++) // Bombs because of the loop... cout << ptr[ctr] << '\t' << ptr2[ctr] << endl; MemsetDWords() and MemcpyBytes() are inlined assembly routines similar to this: __asm__ __volatile__ ( " rep\n" " stosl\n" : /* No outputs */ : "D" (Dest), "c" (Size), "a" (Value) : "memory","%cc","%eax","%ecx","%edi" ); I figure that possible reasons for this error are 1) because my memory routines are leaking somewhere, causing the compiler to bomb out, 2) I am not preserving some registers somewhere, 3) this is just a freak accident, 4) there really is a bug in the compiler... When I toggle off the -funroll-loops or just get rid of the loop after the memset/memcpy, there is no bug. Also, the compiler bombs when I relocate the for loop anywhere in the main() procedure, so it is not necessarily the __asm__ procedures, but just the loop. For now, I guess I'll just not use -funroll-loops...(*sigh*) Help? Compiler options: gcc -g -O2 -funroll-loops -m486 -c tester.cc -o tester.o