From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3938 invoked by alias); 27 Feb 2015 16:30:11 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 3874 invoked by uid 48); 27 Feb 2015 16:30:08 -0000 From: "doko at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/65240] New: [5 Regression] ICE (insn does not satisfy its constraints) on powerpc64le-linux-gnu Date: Fri, 27 Feb 2015 17:20:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: doko at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-02/txt/msg03099.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65240 Bug ID: 65240 Summary: [5 Regression] ICE (insn does not satisfy its constraints) on powerpc64le-linux-gnu Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: doko at gcc dot gnu.org trunk r221042 $ g++ -c -g -O3 -ffast-math modules_mod.ii modules_mod.ii: In member function 'uint32_t D::m_fn3()': modules_mod.ii:69:1: error: insn does not satisfy its constraints: } ^ (insn 279 463 432 2 (set (reg:DF 98 21 [360]) (mem/u/c:DF (lo_sum:DI (reg:DI 10 10) (unspec:DI [ (symbol_ref/u:DI ("*.LC7") [flags 0x82]) (reg:DI 2 2) ] UNSPEC_TOCREL)) [1 S8 A64])) modules_mod.ii:64 499 {*movdf_hardfloat64} (expr_list:REG_EQUIV (const_double:DF -5.0e-1 [-0x0.8p+0]) (nil))) modules_mod.ii:69:1: internal compiler error: in extract_constrain_insn, at recog.c:2246 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. $ cat modules_mod.ii typedef int uint32_t; extern "C" double atan(double); template T lerp(T p1, T p2, U p3) { return p1 + (p2 - p1) * p3; } template class audio_module { public: float *ins[]; }; struct A { double w1; double w2; double process___trans_tmp_7; double process___trans_tmp_6; void m_fn1(double p1) { double &a = w1; if (process___trans_tmp_6 < process___trans_tmp_7) a = 0.0; double b = p1 - w1 - w2; w1 = b; } }; class B { public: float &operator[](int) {} }; struct C { B data; int get_interp_1616_ppos; int get_interp_1616_pppos; float m_fn2(int p1) { float c(p1); return lerp(data[get_interp_1616_ppos], data[get_interp_1616_pppos], c); } }; struct rotary_speaker_metadata; class D : audio_module { uint32_t phase_l, phase_h, dphase_h; C delay; A crossover1r, crossover2l, damper1l, damper1r; uint32_t m_fn3(); }; double d, e, f, g, h; int j; float k; uint32_t D::m_fn3() { int l; for (int i;; i++) { double m = atan(ins[1][i]); int n = phase_l, o(phase_h), p = l; double v = n / 32768.0; j = 8 + phase_l / 32768.0; l = 8 + 8 * v - 0.3849; float q = delay.m_fn2(o) - g * k * delay.m_fn2(o), r = g * delay.m_fn2(o) + k * delay.m_fn2(p); damper1l.m_fn1(q); f = lerp(0.5, phase_h / 65536.0, h); float s = f; damper1r.m_fn1(r); e = lerp(0.5, j / 65536.0, h); d = m * e; float t = d; crossover2l.m_fn1(s); crossover1r.m_fn1(t); phase_l = phase_h = dphase_h; } }