Bugzilla – Bug 291
[llvm-g++] Cleanups and gotos don't mix properly
Last modified: 2004-03-16 02:59:36
You need to log in before you can comment on or make changes to this bug.
Ironically, compiling the attached testcase, derived from tools/bugpoint/CrashDebugger.cpp results in a crash: % llvm-g++ crash3.i -c cc1plus: ../../gcc-3.4-cvs/gcc/llvm-expand.c:6647: llvm_expand_function_end: Assertion `Fn->ExpandInfo->GotoFixupList == 0 && "Goto fixups remain?"' failed. crash3.i: In function `void foo()': crash3.i:88: internal compiler error: Aborted Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://llvm.cs.uiuc.edu> for instructions. I've narrowed down the template code for std::vector as much as I can, if you see what else can be cut out, feel free to revise the attachment.
Created an attachment (id=100) [details] Preprocessed source
Here's a reduced testcase: struct X { ~X(); }; void foo() { X v; TryAgain: for (;;) ; goto TryAgain; } This actually looks like a Misha bug that is fixable for 1.2 maybe! :) :) -Chris
Here's the testcase, further reduced: struct X { ~X(); }; void foo() { X v; TryAgain: goto TryAgain; } -Chris
Fixed. Patch here: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040315/013173.html Testcase here: test/Regression/C++Frontend/2004-03-15-CleanupsAndGotos.cpp Long live ll-bugpoint -Chris