https://bugzilla.gdcproject.org/show_bug.cgi?id=264
Bug ID: 264 Summary: [ICE] (update_equiv_regs) ira.c:3425: Assertion failed gcc_assert (REG_P (dest)); Product: GDC Version: development Hardware: ARM OS: All Status: NEW Severity: normal Priority: Normal Component: gdc Assignee: ibuc...@gdcproject.org Reporter: ibuc...@gdcproject.org Backtrace on aarch64-linux-gnu gdc cross compiler: --- during RTL pass: ira testv.d: In function 'test1': testv.d:13:1: internal compiler error: in update_equiv_regs, at ira.c:3425 0xa91413 update_equiv_regs /buildbot/aarch64-linux-gnu/build/gcc/ira.c:3425 0xa96de0 ira /buildbot/aarch64-linux-gnu/build/gcc/ira.c:5226 0xa96de0 execute /buildbot/aarch64-linux-gnu/build/gcc/ira.c:5581 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://bugzilla.gdcproject.org> for instructions. --- Few examples, all seem to ICE because of passing static arrays as a dynamic array parameter, or more specifically, when the original array is in data segment. --- bool bt10715(uint[] ary) { return !ary; // uses bt } void test10715() { static uint[2] a1; if (bt10715(a1)) assert(0); } --- struct Test9386 { static char[25] op; string sop() { return cast(string)op; } } --- void foo34(int[]) { static int[5] x; foo34(x); } --- void foo16(bool[]) { } void test16() { static bool[16] b1; foo16(b1); } --- struct Data15664A { int[][2] b; } Data15664A d15664a1 = {}; void test15664() { assert(d15664a1.b == []); } --- int sum(...) { int s; return s; } void test1() { static int[3] a; sum(a); } --- Dump of one of the tests: --- Original: foo34 (struct _param_0) { foo34 ({.length=5, .ptr=(int *) &x}); } Gimple: foo34 (struct _param_0) { struct D.2609; D.2609.length = 5; D.2609.ptr = &x; foo34 (D.2609); } --- This ICE only happens if compiling without optimizations. -- You are receiving this mail because: You are watching all bug changes.