http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59757
--- Comment #5 from Joey Ye <joey.ye at arm dot com> --- Here are some debug and log that might help to investigate. Following one is suspecious to me, .MEM_18 is said to be defined a stmt that doesn't look like it should do (gdb) call debug_tree((*cfun->gimple_df->ssa_names).m_vecdata[18] ) <ssa_name 0x8fcacf8 type <void_type 0x89c08a0 void VOID align 8 symtab 0 alias set -1 canonical type 0x89c08a0 pointer_to_this <pointer_type 0x89c0900>> visited var <var_decl 0x8fcc720 .MEM>def_stmt _11 = _10 (258); version 18> dump.pre: SCC consists of: .MEM_18 SCC consists of: _12 Value numbering _12 stmt = _12 = d_2(D)->core.get_parameter; <then crash> Last good dump: univision_ug2828gfeff01_init (struct CTL_GFX_SEP_DRIVER_t * d, int depth) { struct CTL_GFX_DRIVER_t * _7; long int _9; long int (*<Td17>) (int) _10; long int _11; long int (*<Td17>) (int) _12; long int _13; <bb 2>: d_2(D)->core.get_parameter = univision_ug2828gfeff01_get_parameter; _7 = &d_2(D)->core; ctl_gfx_driver = _7; MEM[(struct CTL_GFX_DRIVER_t *)d_2(D)].draw_pixel = 0B; _9 = univision_ug2828gfeff01_get_parameter (258); if (_9 == 8) goto <bb 3>; else goto <bb 4>; <bb 3>: d_2(D)->set_bounding = sep_set_bounding_8b; goto <bb 9>; <bb 4>: _10 = d_2(D)->core.get_parameter; _11 = _10 (258); if (_11 == 16) goto <bb 5>; else goto <bb 6>; <bb 5>: d_2(D)->set_bounding = sep_set_bounding_16b; goto <bb 9>; <bb 6>: _12 = d_2(D)->core.get_parameter; _13 = _12 (512); if (_13 > 255) goto <bb 7>; else goto <bb 8>; <bb 7>: d_2(D)->set_bounding = sep_set_bounding_16b; goto <bb 9>; <bb 8>: d_2(D)->set_bounding = sep_set_bounding_8b; <bb 9>: return; } Any hint to continue investigating?